修行の場

知人が言っていました。これは修行だと。

面接想定のコーディング問題は最低でも月一くらいで解いたほうがいいのでは?

コーディング問題、面接、実務の違いと関係 最近、毎日コーディング問題を解くようにしておりますが、 実務にも良い影響があると思ったため、 考えを整理しておきます。 ここでいうコーディング問題は TopCoderとかleetcodeのコーディング問題です。 コーデ…

Webページの種類の分類

Webページの種類 Webページを文章の内容ではなく、WebページのWebサイト中の役割で分類する分類器を構築しました。 WebページをWebサイト中の役割で分類する機能があることで、 特定の種類のページを収集できるクローラを開発しやすくしたり、 RSSに依存しな…

ファッション分野のアプリ

ファッション分野のこと 消費者側としては、自分の服装、髪型、メイクの仕方を変えたりして、 自分を満足させたり、あるコミュニティでのキャラづくりをしたり、異性に気に入られたり、人によって、多様な目的があると思います。 販売者側としては、売れるデ…

旅行を助けるアプリのまとめ

所感 ホテルやフライトの予約を支援するアプリはかなり多い印象です。 旅行に関する様々な予約をしてくれるチャットボットから、 価格予測機能付きの予約ツール。 予約サイト横断の価格比較ツールなど、 お得で自分にあったものを探すサービスが充実してきて…

hyper sklearnについて調査した

ライブラリの機能 sklearnのモデル選択、ハイパーパラメータチューニングにhyperoptを使うためのライブラリです。 いちおうぺーぱーらしきものは出ています。 my take このライブラリのコントリビューションは、 scikit-learn用のパラメータ探索空間を定義し…

Hyperoptを使ってみた

使い方 中身がわからない関数の最適化をするためのライブラリです。 使い方は簡単で、最適化対象の関数、探索空間、最適点の探索アルゴリズムを指定するだけで使えます。 サポートされている探索アルゴリズムは、ランダムサーチとTPEというアルゴリズムで、 …

AutoSklearnを使ってみた

背景 AutoSklearnを使ってみました。 ただ、実行してみた結果、GridSearch, Hyperoptよりも得られた分類器の性能が低かったです。 autosklearnのバージョンは0.5.0です。 ちなみに、AmazonのDeep learning AMIで構築したUbutu1804のEC2インスタンスではエラ…

単純な分類器を使いデータ収集を加速させる

背景 ラベル付きのデータセットを作る際に発生頻度が低いクラスを集めるのが難しいという問題があります。 結果、そのクラスの学習検証データ数が少なくなり、そのクラスやそのクラスに近いクラスの分類精度が下がるという問題が予想されます。 こういった場…

執筆を楽にしそうなVSCodeの機能

背景 文章執筆速度を上げたく、 文章を書くプロセスとしては、 普段はひたすら書き溜める ある程度ネタが溜まったら、まとめて一つの記事にする 少し手直し という流れです。割とボトムアップに記事を書いています。 編集速度を上げそうな機能 この場合、文…

scrapyのテスト方法を真面目に考える

背景 クローラが複雑になるのと、対応するWebサイトを増やしていくに連れて、 手動のテストでは厳しくなってきた。 Scrapyのテスト方法を考えました。 次のようなルールで行けば効率よくテストできそうです。 Scrapyはコンポーネント間の協調の仕方や協調の…

ソフトウェアテスト

ソフトウェアテストは重要 ソフトウェアテストはソフトウェアエンジニアにとってもとても重要です。 なぜなら、ソフトウェア開発はテストと表裏一体だからです。 Cracking the coding interviewによると、 エンジニアの採用面接では次のような点を評価するよ…

ソフトウェアの開発スタイルの一例と各プロセスで役立つツール

背景 ソフトウェア開発において、 ツールを知り、 ツールを理解して、 適所適材に使うこと は生産性に効いてきます。 ソフトウェア開発の場面で幅広く使うツールを目的別に解説します。 また、世の中の進歩に対応するため、 上記3つのサイクルを効率よく回…

グラフの基本的なアルゴリズム

## 背景 グラフを扱う場面は多いです。 例えば、道路のネットワークはグラフであるともいえますし、 Webのネットワークは巨大なグラフと言えますし、人と人のつながりもグラフです。 マス目の上でキャラを動かすゲームもグラフ用のアルゴリズムを使ってAIを…

Visual Studio Codeをpytestでインクリメンタルに快適開発できるように設定

設定の共通化 user seettings, snippets, keyboards shortcutsの共有。 単純にシンボリックリンクで。 extensionsの共有 リストを共有する。code --install-extension PyTest用のVSCの設定 pdbやpytestとの連携が割と良いです。 エラーを見やすく表示してく…

PyTestで使いやすそうなモックテストライブラリ

monkey patch fixture pytestの標準モックライブラリです。 The monkeypatch fixture helps you to safely set/delete an attribute, dictionary item or environment variable or to modify sys.path for importing. 関数のみでなく、メソッドの置き換えに…

weekly react

背景 Reactを使い始めました。 バックエンドエンジニアにとってはなれないところはありますが、 再利用できるコンポーネントの数、ツールの充実、React Nativeなどを見ると、 無視できないため、毎日1ポモドーロはreactを触ってみて様子を見ることにしました…

ゆるふわにMongoDBを使う

ゆるふわにMongoDBを使う 背景 プロダクトではなく、分析やプロト開発のためにMongoDBを使う場合、 楽に導入し、できるだけ設定せず使いたいです。(分析コードやプロトを他人と共有する場合は特に) MongoDBの導入 環境:Ubuntu18.04 condaでインストールで…

学習パイプラインのスケールのさせ方 on AWS

背景 機械学習をするに当たって学習データを用意するパイプライン作成は重要です。 データ量が増えたり、収集・加工処理が重くなるに従いうまくスケールさせる必要があります。 今回は、選択肢が多いAWSのストレージのスケールの選択肢に関して調査しました…

Reactを使ってPythonで書いたスクリプトのGUIを作る

背景 次のピースを探す。 グラフを作る作業とかの最低限のUI: Jupyter Widget 作業できる最低限の機能があるUI: PyQT 機能を楽に使えるUI: <- ここがPythonにない 見栄えも良い製品レベルのUI Reactを採用しました。実際に何かを作ります。 パーツの探し方 r…

ReactでPython処理のGUIを作れることの検証

ReactでPython処理のGUIを作れることの検証 背景 MLエンジニアとして開発をしていて、PyQTやJupyter Widgetを使ってGUIを書いていました。 ただ、どちらのFWも凝ったUIを作るのに手間がかかるという欠点があり、また、PyQTはsshなどでネットワーク越しに使う…

Scrapyの設計のPipeline周りの設計について

背景 ItemPipelineのドキュメントとクラス構造をさらっと見たのでまとめます。 ItemPipeline ItemPipelineの基本 ItemPipelineのDocによると、ImagePipelineはitemに対して、map, filter, 永続化のような処理をするのにscrapy中でよく使われるクラスです。 …

設計の本質とあるべき姿

設計の本質 Code Complete ch.5に設計の本質についてまとまっていました。 せっけいは本質的に困難で、その理由があげられています。 設計は完全にはならない。正しいか終わったかの確信も得られない。ただ、後々の大きなミスを防ぐ可能性を秘めている。 設…

Code Complete ch.6: クラス設計時に意識するべきこと

背景 クラスを設計する上で最も重要なのは クラスがうまく何かを抽象化していること クラスが何かをカプセル化していること です。6章では、抽象化とカプセル化をうまく実行するためのこまごまとしたテクニックがたくさん紹介されています。 テクニックは本…

TodoistとPomodoneがいい感じ

今までRemember The Mlikを使っていましたが、久々にタスクツールを変えてみました。 タスク管理:Todoist ポモドーロタイマ-: Pomodone pomodoneはtodoistのタスクから撮ってきてポモドーロタイマーを開始できますし、 しかも、1日の統計情報も出してくれ…

Scrapyを使ったクローラ開発

アーキテクチャ 実際のコードの書き方は公式DocやQiitaにたくさん書かれているので省きます。 ここでは主にアーキテクチャや提供されている機能をさらっと見ます。 クローラ作成フレームワークScrapyのアーキテクチャを見ていきます。 Scrapyは下の図のよう…

Jupyterを使ってリモート上に手軽にインタラクティブなUIを作る

背景 EC2などリモート上でJupyterがすでに動いている前提です。 Reactなどのフレームワークを使ってGUIを作っても良いのですが、 Jupyterではそれよりも手軽でPythonのみでかけるため手軽にGUIを作るのにおすすめです。 初期設定 初期設定をします。 Jupyter…

リモート上でコーディングしやすい環境を整える(Python)

リモート上でコーディングしやすい環境を整える(Python) 背景 MLの分析環境など、リモート環境に大量のデータがあり、すべてをローカルに持ってこれないなど、リモート環境で作業をせざるを得ない状況であるため、楽に開発するための環境を構築します。 (プ…

基本的なデータ構造のちょっとした整理

データ構造、一般的な用途、MLとの関係を表にまとめました。 データ構造 一般的な用途 MLとの関係 配列 末尾追加によるデータ追加が主。ランダムアクセスしたい場合 大規模データ(単体PC) 連結リスト 末尾先頭追加によるデータ追加が主。 大規模データ(単…

B TreeとML

背景 MongoDBやMySQLではインデックスとしてBツリーが使われています。 インデックスが表形式のデータの高速アクセスの要なので、 大量データを扱う上でMongoDBやMySQLの制約を知る上で理解しておく必要があります。 B treeの基本とアプリケーション Bツリー…

連想配列とヒープを少し真面目に見る

背景 ヒープや連想配列は汎用性が高いデータ構造です。 少し真面目に見る価値はあると思うので中身を見ていきます。 C++はGCC、PythonはCPythonを見ていきます。 順序付き連想配列 アルゴリズム C++のstd::map, std::setはred-black treeで実装されています…