あれもPython,これもPython

Pythonで世界を包みたい

今週のPython(2016年5月14日週)

f:id:esu-ko:20160522231728p:plain

Djangoのauto_nowなのにアップデートされないことがある

PythonフルスタックなWebフレームワークといえば、Django
ただ、機能多すぎるのでなかなか覚えられませんね・・・。
Pythonのwebフレームワークの中では数少ない強力なORMを持ってるので、
そこをマスターしていきたいな。
こんなのも参考にどうぞ
モデルフィールドリファレンス

PythonVimスクリプト

英語⇔日本語を変換できるPythonスクリプト
vimから簡単に英語⇔日本語の単語を調べるvimスクリプトを作った

古来から伝わる強力なテキストエディタVim、最近はこんな本もでてます。
プログラミングをやるとこういった拡張ができるのが、ありがたいですねー。

その辺りの拡張は下記記事とか。

Pythonでvim pluginを書く

ちなみにSublimeTextも拡張できますよー。
SublimeTextのプラグイン作成方法

今週のPython(2016年4月23日週)

f:id:esu-ko:20160501180432p:plain GWが始まりました。
みなさんはもちろん、GWにどんなPythonをやるかもう決まっていると思います。
ちなみに私はDeepLearningのお勉強の予定です。
Chainer可愛いよ、Chainer

Python(twython)でPCからツイッターに30秒動画(mp4)を投稿してみる。

定期的に出てくる、Twitter + Pythonネタ。
ソーシャルマイニング系をやるときは、
とりあえずこの組み合わせで始めて今のところは問題無いですからね。

そろそろ、そういった専門的な記事も書いていきたいですね。
やはりnetworkX + Twitterでしょうか。
それとも自然言語処理系?
もしくはビジネスリサーチや地理情報・・・

夢が広がりんぐですね。
(なお現実は時間との戦いの模様)

ディープラーニング系

Deep Learning勉強会に参加しました
Windowsでchainerを使った畳み込みニューラルネットワークを用いたハリネズミの種類識別をやってみる
最近はちょっと一段落した感もありますが、
ディープラーニングに関する記事はやっぱり多いですね。
むしろその他のデータサイエンス系はあんまり見なくなったというか・・・。

ディープラーニングの入門記事は前書きましたが、
もっと「なんかやったぜ!」な記事も書きたいです。

esu-ko.hatenablog.com

その前にそういう実装がしたい所です。

関係ないけどハリネズミ可愛い(先週から言ってる)

追伸

GWってなんでGWなんですかね。
PW(PythonWeek)とかでも良いのではないでしょうか(よくはない)

Pythonモジュール調査環境について(2016/04現在)

Pythonを使う上で、実際に開発するのに使用している環境と、
調査するための環境は切り分けています。

特に自分の場合、ブログのための調査などもあり、
これは開発の合間に必要になってするリサーチとは結構違うと思います。

その辺の環境に関して今回は書きました。

何を使っているか

  • IPython
  • Vim
  • virutalenv

1.初期調査

webで今回使うモジュールについて簡単な初期調査をします。
依存モジュールは何か、どんな機能を持っているのかの簡単な調査です。
検索エンジンでちょっと検索するくらい。

2.検証用の環境をつくる

基本的にはデスクトップに検証用のディレクトリを作ります。
バージョン依存を破壊したり、挙動の怪しいモジュールを追加すると困るため、
専用の環境を作ります。

自分の場合はvirtualenvで仮想環境を作っています。

mkdir module_test
cd module_test

virutalenv env

source env/bin/activate

virtualenvを使っているのはディレクトリ単位の切り分けができるためです。
pyenvとかanacondaよりもそこは視覚的でよい。

3.いろいろ試してみる

先ほど作った環境に試したいモジュールなんかを入れて、いろいろ試します。
たいていは、1で調べた手順を一通り試す感じですね。

基本的にはIPythonを使用します。
IPythonを使う理由は

  • %pdbでデバッガーが使える
  • %timeなどで速度計測ができる
  • %runスクリプトが使える
  • !でシェルが使える

という感じで、作業の大半をターミナルで完結できるためです。

記録を残すのであれば、IPythonNotebookのほうが良いかもしれませんが、
なんだかんだ言って対話型で使い捨てでもいい場合が多いのでIPythonで満足しています。

特に、メモを作ったりスクリプトを書くなら、!vimvimを起動できるので、
今のところはこのままでいいかなあ、という感じです。
(vimpython,markdownチューンしてありますし)

またinspectモジュールを使うことで、
モジュールの中身なども見つつ、
いろいろ検証している感じです。

esu-ko.hatenablog.com

おまけ

ちなみにモジュールの整理をするときなんかは、
以下の質問にこたえるようにしています。

  1. そのモジュールのメイン機能は何か?
  2. 同様の機能を持つモジュールはあるか?
  3. 同種のモジュールと比べて、特徴は何か?
  4. メイン機能を補助するサブ機能は何か?
  5. サブ機能と同様の機能を持つモジュールはあるか?
  6. それと比べて特徴は何か?

これで大枠を押さえて、
プロセスの中で関数などを確認していく感じです。
特徴は比較軸になるので、後々生きてきますね。