CodeIQでSQL高速化の問題出しました
とある筋から打診いただき,今をときめくCodeIQに10倍速くなる!? SQLの高速化という問題を出しました.
題目通り,遅いSQLを速くする問題です.
締切は12/18までなので,よろしければ解いてみてくだされば喜びます :)
git addしてるファイルだけをwatsonでチェック
githubのissue管理などに便利なwatsonですが,通常だと*~
などを含む全ファイルから[todo] -
, [fix] -
といったタグを探しに行ってしまいます.
これは嬉しくない動作だったので,git add
してあるファイルだけを追跡するようにしました.
以下の1行を$HOME/.bashrc
の最後の行にでも書けばOKです.
gitリポジトリでのみ使う場合
alias watson='f=$(git ls-files) && watson -f $f'
gitリポジトリ以外では全ファイルを追跡する場合
alias watson='watson -f $(git ls-files)'
結果
「gitリポジトリでのみ使う場合」の設定での結果です.
before
[~/git/foo] $ watson ... [ o ] ./.travis.yml [ o ] ./.travis.yml~ ## バックアップファイルも含め全ファイルが追跡されている [ o ] ./CHANGES.txt ...
after
[~/git/foo] $ watson # gitリポジトリなディレクトリ ... [ o ] .travis.yml ## git addされていない .travis.yml~ が除かれた [ o ] CHANGES.txt ... [~/tmp] $ watson # gitリポジトリでないディレクトリではエラーを吐いて停止 fatal: Not a git repository (or any parent up to mount point /home) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Version::NextっぽいPythonパッケージnextversion作りました
バージョン番号の管理に使えそうなPythonパッケージ, nextversion を作りました.
今のバージョン番号を文字列で与えると,次のバージョン番号(の最有力候補)が帰ってきます.
from nextversion import nextversion nextversion('1.0a2') # => '1.0a3' nextversion('v1.0a2') # => '1.0a3' (normalized to compatible version with PEP 386) nextversion('foo.0.3') # => None (impossible to normalize)
インストール
PyPI から拾ってこれます.
$ pip install nextversion
生成されるバージョン番号の規則
PEP 386 で提唱されているバージョン番号のフォーマットに従い, 次のバージョン番号が生成されます.
自分のつけているバージョン番号が PEP 386 に従ってるか調べるのにも便利かも.
使い所
Perlには同様の動作をするモジュール Version::Next があります. これがどう使われているかというと,例えば Minilla が使ってます.
Minillaは, minil release
というPerlのモジュールをアップロードするコマンドを提供していて,このコマンドは自動的に次のバージョン番号をサジェストしてくれます.
minnil release
の役割はそれだけではなく,色んなファイルの中にある古いバージョン番号を新しいバージョン番号に変えてくれたり,ChangeLogを忘れずに編集するようにエディタを開いてくれたりします.
PythonにもPyPIへのリリース時に minil release
みたいにできると便利だなと思い,その足がかりとして nextversion を作りました.
バグ報告など
https://github.com/laysakura/nextversion でお待ちしてます.
Perlで日本語全文検索できるCPANモジュール作りました
この記事は↓に移転しました。
laysakura.github.io