RONの技術ブログ

駆け出しエンジニアの備忘録

【Udemy】アルゴリズム・データ構造入門 #2

前回の記事ron-tech.hatenablog.com

の続きでSec2. アルゴリズムと計算量を受講しました。

Sec2. アルゴリズムと計算量

  • アルゴリズム・・・問題を解決するための手順や計算方法。
    Googleの検索や、Teslaの自動運転など、高速な計算が求められる場合に最も早く解くためのアルゴリズムを実装できることが求められる。
    GAFAを筆頭とした企業の面接ではかならずアルゴリズム面接が行われる。

  • データ構造とは・・・データの集まりをコンピュータの中で効果的に扱うため、一定の形式に系統立てて格納するときの形式。

  • Big O Nation (Big O 記法)

https://miro.medium.com/max/4800/1*iQkFjNn02oogc2Yv27-pyQ.png

引用: Understanding Big-O Notation With JavaScript | by Bonvic bundi | Better Programming | Medium

データが増えれていくにつれて、どれだけ計算に時間がかかるかを表す。

  • 安定ソート・・・ソート判定において同一であると判断された入力データの順序がソート後も変わらない。

次回は各種ソートについて学んでいきます。
では!

【Udemy】アルゴリズム・データ構造入門 #1

前回の記事ron-tech.hatenablog.comAtCoderの環境構築を行いました。

実践あるのみですが、理論的な勉強も並行して進めていきたいと思います。
まずはUdemyにて公開されている。現役シリコンバレーエンジニアが教えるアルゴリズム・データ構造・コーディングテスト入門

www.udemy.com

を受講しようと思います。 備忘録も兼ねて、セクション毎に簡単にまとめたいと思います。 では!

【AtCoder】VScodeで環境構築 in Mac

概要

プログラミングの練習でAtCoderを始めました。
デバッグは公式で提供されているコードテストを使用していましたが、テストケースのコピペなどだんだん煩わしくなってきたので、VScodeで環境構築しました。

動作環境

使用するツール

  • online-judge-tools (ojt)
    テストケースの判定を自動化するツール
    コンテストサイトからサンプルケースをスクレイピングし、自動テストしてくれる。

  • atcoder cli (acc)
    コンテストサイトからテストケースのダウンロード、やコード提出も行える。

インストール

pip install online-judge-tools
npm install -g atcoder-cli

もう少し詳しく知りたい方はatcoder-cliの開発者様のブログを参考にしてください。

使ってみる

1. ログイン

oj login -u ユーザー名 -p パスワード "https://atcoder.jp/"

以下のコマンドでチェックできる。

oj login --check "https://atcoder.jp/"

[*] You have already signed in.と出力されればOK。

2. コンテストディレクトリ作成

  • コンテストIDを取得 (画像はabc188)

    f:id:ron-tech:20210123182656p:plain
    コンテストID

  • ディレクトリ作成

acc new コンテストID (abc188)

上記コマンドを叩き、usernameとpasswordを入力すると、どの問題を解くか聞かれるので希望の問題を選択する。

f:id:ron-tech:20210123184047p:plain
問題選択

選択した問題のサンプルケースがダウンロードされる。

f:id:ron-tech:20210123184628p:plain
ディレクトリ構成

3.問題を解く

問題のディレクトリ直下にコードファイルを作成して、コードを書く。ファイルの置き場所、言語等は各自ご自由に。
pythonで書く場合、最初に実行環境を指定する必要があるらしいです。以下サンプル

#!/usr/bin/env python3
~~
oj t -c "python3 a.py" -d tests 

上記a.py、testsはそれぞれコードファイルとテストケースのディレクトリへのパスを指定する。

f:id:ron-tech:20210123185702p:plain
デバッグ結果

それぞれのテストケースについての計算時間、結果が表示される。

4.提出

acc submit a.py

現在のディレクトリからどのコンテストのどの問題を説いているか識別してくれるので、単にファイルを指定してあげればOKです。
※a.pyの指定の際にdir/a.pyのようなパスを指定すると、何故かエラーになりました。提出するファイルと同じ階層で実行するのがよさそうです。
提出すると、自動でブラウザが立ち上がり通常通り結果が表示されます。
いや〜便利ですね☆

5.その他

  • 問題の追加
acc add

問題を選択する画面が出てくるので、次に解く問題を選ぶ。
1問ずつ問題を選択するのが面倒な方は

acc config default-task-choice all

を実行することで、デフォルトでコンテストの全問題の環境をまとめて作るようにすることができます。

まとめ

VScodeAtCoderの環境構築をしました。
自分で書いたコードの管理もしやすいので、おすすめです。
もうすでに達成感がありますが、これからちゃんと勉強していきたいと思います。
では!

InfluxDBとGrafanaをDockerでサクッと立ち上げる。

業務でよく使用するInfluxDBとGrafanaをDockerでサクッと立ち上げるスクリプトを作成しました。 InfluxDBは時系列データベースとして有名で、DB-Enginesの時系列データベースランキングで堂々の首位に輝いています。

www.influxdata.com

f:id:ron-tech:20210118210745p:plain
DB-Engines Ranking of Time Series DBMS.

DB-Engines Ranking - popularity ranking of time Series DBMS

GrafanaはGrafana Labs が公開しているログ・データ可視化のためのツールです。 InfluxDbは1.3からGUIツールが廃止されたため、データ確認・可視化ツールとして使用しています。
簡単なクエリでかっこいいダッシュボードとか作れるのでおすすめです。

grafana.com

さて、本題ですがInfluxDBとGrafanaをDockerでサクッと立ち上げるスクリプトを作成しました。

github.com

Dockerはとても便利ですね。よければ使ってください。
では!