DataSpiderにおけるコンポーネント間のインタラクションの設計と実装、のクラス図とシーケンス図

この記事はDataSpiderにおけるコンポーネント間のインタラクションの設計と実装 : 小野和俊のブログの勝手に補足記事です。
コードが良くわからなかったので図を書いてみた。
詳細な説明は元記事へどうぞ。

続きを読む

S2Junit4、before()内でコンポーネントのルックアップに失敗する

ConfigFileIncluderで定義された設定ファイルがincludeされるのはbefore()の後です!!!
詳細はS2TestMethodRunner#runMethod()あたりを参照(initContainer内でinclude処理が行われている)。


前に別件で調査してんだけどすっかり忘れてた。
S2Junit、テスト対象コンポーネントの依存コンポーネントを後から設定した場合に正しくDIしてくれない事象の解決策 - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥

git、複数のリポジトリをまとめる

みたいなケース。

続きを読む

git、コミット漏れのファイルがあった時の対処

ストーリーとしては、

$ vi main.rb
  ...
$ vi newclass.rb
  ...
$ git commit -a -m '一部機能をNewClassに分離'

$ vi main.rb
$ git commit

$ vi sub.rb
$ git commit

  ...
$ git status
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       newclass.rb
$ うっ
bash: うっ: command not found

みたいなケースですね。

続きを読む

align.vimで全角文字を正しくハンドリングする

あけましておめでとうございます。しかしそんなことは関係ない。正月から平常運行だしVimいじってたら休みが終わった。

さて本題。これはヘルプに書いてあるけど、

let g:Align_xstrlen=3

をすることで正しくハンドリングされます。
ただ、このオプションを設定すると異常に重い+カーソルがファイル末尾に飛ぶという謎な挙動を示すので、修正したやつを用意しました。

https://github.com/todesking/vim-align/tree/xstrlen-fix

どうぞご利用ください。

モナドという言葉を使うことなく、純粋関数型言語の入出力を解説する。Rubyで。

これはRuby Advent Calendarの21日目の記事です*120日目は@sasata299さんのHerokuって便利だし利用までたった3ステップですお!!でした。

はじめに

本当は「Pure Rubyで動くかっこいい形態素解析エンジンができた!!!」みたいな記事を書く予定でしたが、目標のクオリティに達しなかったのでリリースは延期されました。
クリスマスごろにリリースされるといいですね。

さて、この記事では、Haskellのような純粋関数型言語がどのように副作用を伴う処理を実現しているかについて、Rubyによる実装を使って解説します。モナドという言葉が全く出てこないのでアレルギーのかたも安心ですね。

*1:もう日付変わったけど

続きを読む

GuavaのFiles#deleteRecursively/deleteDirectoryContentsは使わないほうが良い(と言うか10.0.1ではdeprecated)

シンボリックリンクは追わない」という処理を実現するために、

    if (!directory.getCanonicalPath().equals(directory.getAbsolutePath())) {
      return;
    }

という処理をしてるんだけど、directoryが相対パスの場合 "/currentDir".equals("/currentDir/./") みたいな具合になって正しく判定されず大変ですね。

では、代替案として何を使えばいいかというと

This functionality can be supported suitably only by shelling out to an operating system command such as rm -rf or del /s.

http://docs.guava-libraries.googlecode.com/git-history/v10.0.1/javadoc/com/google/common/io/Files.html#deleteRecursively(java.io.File)

うっ……
(おわり)