パーフェクト Ruby のサンプルコードにバグを見っけた。

パーフェクト Ruby の初版、p.486 にバグを見っけた。 公式の正誤表は見当たらなかったので記事にしておく。capistrano の capture 関数のサンプルとしてリスト 14.14 にこんな記述がある。 task :log_size_watcher do log_file = "#{deploy_to}/shared/log/…

detox が依存性の解決に失敗してたまにコケる話

書こう、書こうとおもってさぼってた話を書きます。複数の Python バージョンをサポートするライブラリを作っていると、tox があるとテストがとても楽になります。 ただし、Python のバージョンによって依存するライブラリが変化する場合は、 setup.py と to…

PHP_CodeSniffer-1.5.x と phing-2.6.1 が喧嘩するので phing の開発版を使った話

一度テスト環境を作ったまま、そのままテストを回し続けていた PHP プロジェクトがあるのですが、 composer が Warning: This development build of composer is over 30 days old. It is recommended to update it by running "composer.phar self-update" …

2013年を振り返る / 2014年の抱負

新年早々富士山見てきましたが、超寒かったです。でも、逆さ富士と赤(っぽい)富士を見ることができました :-) さて、2013年もようやく終わったのでちょっとだけ振り返りしてみることにしましょう。2013年の抱負 として挙げたのは ドキュメント系のツール/コ…

2013.12 版 python2.4-3.3 までのテストツール対応状況

ここしばらく python 2.5 に対応した python コードを書いていなかったので気にもとめませんでしたが、 diff-highlight を書くときに python 2.4, 2.5 対応でハマったことについてまとめます。 ちなみに diff-highlight を python 2.4, 2.5 に対応させたのは…

git と mercurial の diff を美しく表示するために必要なたった 1つの設定 (原題: diff-highlight 1.0.0 をリリースしました)

Git の diff を美しく表示するために必要なたった 1 つの設定 #git にインスパイアされて作り始めた diff-highlight にあれこれ手を入れ、1.0.0 として正式リリースしました。 diff-highlight と git-contrib/diff-highlight の違い 差分の中で +/- の行数が…

Python のコードを取り込むときの注意点 (Python のライセンスについて)

hg-diff-highlight を実装するにあたって、difflib.Differ クラスの実装を一部コピーしました。Python のライブラリをコピーして自分のプロダクトに取り込むので、 どのように扱えばいいのかライセンス上問題ないか聞いて & 調べてみました。Python の標準ラ…

difflib の使い方 〜hg-diff-highlight を例にして〜

hg-diff-highlight という Mercurial 拡張を作った話を書いたのですが、 このエントリではその実装について、特に内部で使っている difflib の使い方についてご紹介します。 hg との連携部分 hg-diff-highlight では mercurial の diff 計算部分には手を入れ…

続・Mercurial の diff を美しく表示するために必要なたった 1つの設定

つい一昨日、Mercurial の diff を美しく表示するために必要なたった 1つの設定 という記事を書いたばかりですが、 diff-highlight の動作を見ているといくつか気になるところを見つけてしまいました。 diff-highlight のイケてないところ 差分の中で +/- の…

シェルスクリプトで出力先がターミナルかどうかを判定する

先ほどの記事 でエスケープシーケンスまわりについて調べている時に、 「出力先がターミナル(tty)の場合」と「出力先がファイル、その他の場合」でエスケープシーケンスを出し分けする方法が気になりました。たとえば、ls コマンドでは $ ls --color=auto と…

Mercurial の diff を美しく表示するために必要なたった 1つの設定

このエントリは Mercurial Advent Calendar 2013 の17日目です。 タイトルは Git の diff を美しく表示するために必要なたった 1 つの設定 #git のパクリです。すみません。↑の記事を読んで、単語単位で diff 表示のできる git + diff-highlight が羨ましく…

screen の上で 256色の vim を使う

tmux 使えよって罵倒されそうですが、未だに screen を使っています。 ようやく vim のシンタックスハイライトを有効にして生活し始めたのですが、 開発に使っているさくら VPS に設定を反映したところ 16色モードで動いていると判断されているため jellybea…

vim のシンタックスハイライトと自分なりに付き合う

僕は長らく vim を使っている(おそらく 14,5年)のですが、常にシンタックスハイライトをオフにして使っていました。 オフにしている理由は、特にメリットを感じなかったことと、もうひとつは編集時のハイライトの挙動です。 vim のハイライトは編集モードで…

vim で python を書いてる時に flake8 をいい感じに実行する

vim 素人の @tk0miya です。 いままで .vimrc が 1バイト(改行文字)しかないってバカにされていたんですが、ようやくその呪縛を解く時が来ました。python のリントツールとしてよく使われている flake8 を編集時に実行しようと思っていろいろ調べました。 適…

schema2rst 0.9.0 をリリースしました。

一ヶ月ほど前から schema2rst をちょこちょことメンテナンスしています。 はじめは flake8 でコーディング規約のチェックをかけてみただけだったはずなのですが、 その流れであれこれいじっているうちに一ヶ月経ってしまいました。まだドキュメントや実装が…

FakeSphinx は Sphinx 1.2系では動かない

昨日見かけた FakeSphinx を自分のテストコードの参考にしようといじっていたのですが、 その際に FakeSphinx は Sphinx 1.2系では動かないことが判明しました。 File "/Users/tkomiya/work/sphinx-contrib/sadisplay/tests/test_directive.py", line 29, in…

Sphinx 拡張のテストを書く

今日の Sphinx+翻訳 Hack-a-thon のテーマとして、Sphinx 拡張のテーマを書くというのをこつこつやってました。 いままで sphinxcontrib.blockdiag に始まり、sphinxjp.shibukawa に至るまでいくつも Sphinx 拡張を書いてきたのですが、 よく考えるとまとも…

testing.redis を作りました。

testing.* シリーズも、mysqld, cassandra, postgresql と自分が使うであろうものは一段落していたのですが、 隣の同僚がついでに redis やっちゃえよ的なことを言ってきたので、勢いそのまま testing.redis を作りました。このモジュールを作る際にはじめて…

drone.io で Java7 を使う

ここ数日、testing.mysqld や testing.postgresql のコード整理をしていた関係で、 ついでに testing.cassandra もこつこつ直していました。 バグを潰したり、インターフェースを統一したり、python 2.6 に対応してたりしているので、 Python と Cassandra …

python 2.6: 僕と unittest と時々 unittest2

testing.mysqld に @skipIfNotInstalled というデコレータを追加しました。 名前の通り、MySQL がインストールされていない場合にテストをスキップするというものです。 もちろん testing.postgresql にも入っています。(testing.cassandra はこのあと手がけ…

blockdiag の parser を書き直してて気づいた、graphviz の妙な表現集

秋口から blockdiag の parser を書き換えていました。 blockdiag の parser は funcparserlib の graphviz parser (dot parser) のサンプルがベースになっており、 当初の実装はとてもシンプルだったのですが、blockdiag のために文法を足していく中で見通…

testing.postgresql をリリースしてました。

PyPI に testing.postgresql をリリースしました。 以前作った testing.mysqld と testing.cassandra の PostgreSQL 版ですね。 なにをするもの? テストを実行する際に PostgreSQL を起動し、終わった後に終了をしてくれるライブラリです。README の例を持っ…

buildout2.x で appfy.recipe.gae を動かす方法

昨日、@yuitowest に Interactive Shell for blockdiag のデザイン調整を依頼したときに気づいたのですが、 buildout で Google AppEngine の開発環境を整えるためのレシピである appfy.recipe.gae が buildout 2.x系では動作しなくなっていました。具体的に…

#pyfes 2013.11 で教えてもらった pathlib が python2.6 で使えなくて愕然とした話。

タイトルで言い切ってしまった。昨日は Python Developers Festa 2013.11 に参加してきました。 時間までに発表資料を作るタイムトライアル系のイベントだとずっと勘違いしていたのですが、 今回は話すネタがなかったのでまったり過ごすことができました。午…

capistrano-paratrooper-chef 0.4.1 をリリースしました

こんな変更したよ、って書いておきたくなったので。 environments に対応した chef-solo でも environments が使えるようになって随分経ったので、paratrooper-chef でも扱えるようにしました。 config/environments/ 以下に定義を書いておいて、capistrano …

drone.io で apt-get install したら 404 Not Found になったのでメモ

drone.io の blockdiag プロジェクトでは python2.6 でのテストのために テスト開始時に python2.6 パッケージを入れるようにしているのだが、 先日からその部分でテストがコケるようになっていた。ネットワークとかそういった問題で一時的なものかな、と放…

librarian-chef から berkshelf に引っ越した

長らく librarian-chef を使っていたのだけど、id:shimizukawa の vagrant-berkshelf プラグインがWindowsでエラーになる を読んで もう berkshelf に乗り換えるべきか…と思って重い腰を上げて引越し作業をしてました。librarian-chef は僕が chef に触り始…

PHP 用の CI 設定のまとめ。

PHP コードのコーディング規約をチェックすることにした って記事を書いたので、ついでに現在の PHP 用 CI 環境を晒してみる。と言っても、ほとんどが yamashiro 先生のPHPでTDD&CIワークショップ、Jenkins + PHP の各種プラグインパート資料がベースなので…

PHP コードのコーディング規約をチェックすることにした (composer/phing/PHP_CodeSniffer)

Web をぶらぶらしていたら PHP のコーディング規約として PSR(Proposing a Standards Recommendation) という規約があることに気づきました。今開発しているプロジェクトに PSR のチェックを書けるためにあれこれしたのものをメモします。 まずは composer …

Sphinx とぼく

Sphinx 本書いたよ、って記事のついでに。 2010年頃: @shimizukawa から Sphinx を紹介される。インデントが不可解すぎて拒絶する 2010/7/24: @shimizukawa から飲み会行かない? と誘われ、使ってもいない Sphinx の 1.0 リリースパーティに参加する 2010年…