TIM Labs

Masayuki Mutoによるエントリー一覧

Visual Studio は組み込みのユニットテストの仕組みを持っており、.NET開発を行う際にはテストプロジェクトを追加するだけで簡単にユニットテストを書いたり実行したりすることができます。

F# でもその恩恵に与りたいわけですが、残念ながら VisualStudio で F# のテストプロジェクトを作ることはできません。

これを回避する方法を紹介しているブログがあったので紹介します。

F# Unit Testing with Visual Studio 2010

F#テストプロジェクトを作る

  1. テスト用のF#プロジェクトを作成する。F#のテストプロジェクトは無いので、クラスライブラリを選択して作成する。
  2. Microsoft.VisualStudio.QualityTools.UnitTestFrameworkへの参照を追加する。
  3. プロパティ→ビルド→出力パスをbin\ にする。リリース構成もデバッグ構成もbin\にする。(bin\Debugやbin\Releaseではなく)

C#テストプロジェクトを作る

  1. C#テストプロジェクトを作成する。
  2. コードファイルを削除する。
  3. 「追加」→「既存の項目」から3で作成したディレクトリを開き、dllを選び「リンクとして追加」する プロジェクトを右クリックし、「プロジェクト依存関係の追加」からF#テストプロジェクトを追加する。

これでいつも通りのテストがF#で書けます。Enjoy!

gistはweb上でソースコード(の一部)を共有したり、再利用するためのwebサービスです。

設定ファイルの書き方やプログラムのわからないところを聞くときなど、コードの一部を共有したいという欲求はコンピュータエンジニアであれば誰もが遭遇することと思います。これまではIRCやブログのコメント欄にソースコードをコピペするなどしていたわけですが

  1. シンタックスハイライトされない (色ついてないと読み辛いです......!!)
  2. 行番号が表示されない (どの部分を見ればいいのかわかんないです......!!)
  3. 貼り付けられているものをファイルとして取得するのが面倒 (これそのまま自分の設定ファイルにしたいのに、変なスペースが入ってきちゃった......!!)
  4. 再編集したものを共有できない (バグ直したけどどうやって教えてあげたらいいの......!!)

etc... といった問題がありました。

gistを使えば全ての問題が簡単に解決します。 リンクを開いて画面上のテキストエリアにコード片をペーストし、[create public gist]ボタンをクリックするだけです。

このように、ブログに埋め込むこともできます。

シンタックスハイライトはC、Perl、Python、Ruby、PHP......といった主要な言語に対応しています。

view raw リンクから生のファイルとしてダウンロードすることもできます。

gitを使っている人なら更に便利に使うことができます。一個一個のgistはgitリポジトリになっているので、自分のマシン上にcloneすればweb画面からではなく自分の好きなエディタで編集してそのままpushすることができます。


実はgistはこれ単体で一つのwebサービスではなく、githubの一機能となっています。githubはgitリポジトリのホスティングサービスで、JavaScriptやRubyのライブラリや数々のオープンソースのプロダクトがこのサービスを利用してソースコード管理を行っています。

gistにはソースコード管理機能だけではなく開発者同士が繋がるSNS機能が盛り込まれており、開発者同士の連携をとりやすくなっています。gitやgistが便利だと感じたらgithubの利用も考えてみてください。

cronはUNIX系システムでタスクの定時実行を行うためのツールです。どのUNIX系システムでもまず間違いなく入っているので、システム開発の際でもよく使いますが、古いUNIX由来のツールにありがちなバッドノウハウに嵌ったのでご紹介します。

crontabのコマンドを指定するところで%(パーセント記号)を使うときは\でエスケープする

日付つきのファイル名でログを保存しておきたくなることや、コマンドライン引数中に%を使いたくなることがたまにあります。dateコマンドを使う場合には、次のように書きたくなるわけですが、これはうまく解釈されません。

0 0 * * * wonderful_command > log_of_`date +%Y%m%d`.txt

(そうです、あのウザいメッセージがプロンプトの上に延々と表示されることになります! You have new mail. You have new mail. You have new mail. You have new mail. You have new mail. You have new mail. …)

crontabのコマンドを指定するフィールドで%を使うと、最初の%以降は標準入力に対する入力して解釈されます。%そのものを使いたい場合には(バックスラッシュ記号)でエスケープする必要があります。

上の例はこんな風に直せば、期待通りに日付つきファイル名でログが保存されることになります。

0 0 * * * wonderful_command > log_of_`date +\%Y\%m\%d`.txt

これがどこかの仕様として決まっている動作なのかは調べることができませんでした。現在一般的なcronの実装であるvixie cron のmanには次のように書かれています。

The “sixth” field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input. There is no way to split a single command line onto multiple lines, like the shell’s trailing “\”.

(フォントの都合で円マークとバックスラッシュが混じって表示されているかもしれませんが、同じ文字を意味しています)

このアーカイブについて

このページには、Masayuki Mutoが最近書いたブログ記事が含まれています。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。