merさんのブログ

JRuby って SDBM が使えない?

tag: 

標準ライブラリだということでどこでも使えると思ったので使ったんですが、SDBM。JRuby だと使えないような感じです。

$ ruby -rsdbm -e 'puts "foo"'
foo

普通はこんな感じです。

でも、JRuby だと

$ jruby -rsdbm -e 'puts "foo"'
Exception in thread "main" :1: no such file to load -- sdbm (LoadError)
        ...internal jruby stack elided...
        from (unknown).(unknown)(:1)

こんな感じ。いろいろ調べたんですけど、理由はよくわかりませんでした。JRuby と Ruby に関する互換性のレポートくらいあってもよさそうなんですが、発見できませんでした。

というわけで、PStore に変更です。

ブログをホストしているサーバーを移行しました

最近忙しいです。あまりいろいろする暇がありません。

それはそれとして、借りている ServersMan@VPS も無償期間を過ぎたのに全くいろいろな検証もすんでなくて、放置気味だったのですが。さすがにもったいないということで利用を開始することに。

まずは、自宅サーバーで運用していたブログの移動から。

なんやかんやで苦労しましたが、まあまあ順調に稼働しています。

移すついでに、mod_php をやめ、suEXEC/FastCGI 化しました。

今のところ問題なく動いていますし、VIA Esther 1.5GHz に比べたら無茶苦茶速いです。一番安いプランなので、メモリは 256MB ほどしかありませんが、意外と動くもんです。

多分、重い時間とかあった気がするんですが、それがなくなりそうです。

うーん、今日は全然中身がない日記でした。

IIS Express

tag: 

なにやら IIS Express というものが出るようです。

Introducing IIS Express とその翻訳記事、IIS Expressの紹介

IIS のほとんどの機能を持つ Web Server が、ASP.NET 開発サーバーと同様に動くってことです。これは大変ありがたいのです。

ASP.NET 開発サーバーはいろいろとプアですし、(IIS のモジュールが動作しませんし、CGI も確か動きません) でもユーザーアカウントで動作できるので大変便利です。

IIS Express は ASP.NET 開発サーバーと同様にユーザーアカウントで動作します。しかも CGI やらもいろいろ動くみたい。IIS と違って管理者権限がないと設定できなかったりとかもない。

[LINQ レシピ] Cast() メソッド

LINQLINQ to SQL ばかりが取り上げられ、微妙に敬遠されている感じがありますが、個人的には LINQ to Object は使わない手はないと思っています。

わりとしょっちゅう使うので、練習がてら一つ一つレシピみたいな感じで紹介していこうかと思います。

というわけで、本日は Enumerable.Cast() メソッドです。

名前の通り、キャストを行うだけです。

moq は Visual Basic 9.0 では使い物にならない

先日 moq で紹介したモックオブジェクトフレームワーク moq ですが、どうも Visual Basic 9.0 では使い物にならないようです。

たとえば、C# では以下のように書けますが、

moq

moq とは、.NET Framework 3.5 以降用のモックオブジェクトフレームワークです。

NerdDinnerステップ12:単体テスト等で、あの Scott Gu 氏が使っているので興味がわきました。

この手のモックオブジェクトフレームワークでは NMock が有名だと思うのですが、moq は、これらのものと違い、.NET Framework 3.5 で追加された機能をうまく使うことで、より使いやすいものとなっています。

Visual Basic は C# に比べると見づらいと思う

tag: 

個人的な見解だし、慣れの問題もあると思うんですが。

Visual Basic で書かれたコードと、C# で書かれたそれを比べると、前者の方が見づらい感じがします。

[Effective C#] 項目34 粒度の荒い Web API を作成する

日があいた…。

本日の Effective C# は「項目34 粒度の荒い Web API を作成する」です。

ずーっと「つぶど」って読んでましたが…。

それはおいておいて、ASP.NET Dynamic Data とかを見てると疑問に思うことがあります。一つの画面を表示するのに必要なエンティティの数は結構多いです。Web Service 経由で直接 DB とやり取りしてしまうと、複数のトランザクションで処理がなされてしまうわけで、いろいろと不整合が起きたり、ロールバックとかが面倒だったりしないかな? ってこと。

この項目では、こういった粒度の細かい API じゃなくて、荒い API を用意せよと言っているわけです。私の考えは間違ってなかったのかもしれないです。

その理由としては、粒度が細かいとパフォーマンスの低下を招く恐れがあるとされています。電話での注文と、FAX での注文にたとえられ、Web API は FAX のようなもの、とされています。

ここからは個人的な見解になります。

単体テストって素晴らしい

最近は自分が三年前に書いたプログラムの改造を行っているのですが、単体テストはかなり役に立ちます。このころは単体テストコードを書き始めて間もないころで、あまりよいテストコードとは言えないのですけど、ね。

とりあえずテストコードを書いて、それがグリーンになるまで改造を繰り返す。ここはまあいいんですけどね。

グリーンになった後に、単体テストコードをすべて実行します。そうすると別のテストがレッドになりました。

単純に、もとからデータが見つからない場合は null を返すようになっていまして、改造部分でいわゆる "ぬるぽ" が発生するようになったわけです。これを「データが見つからなかった場合の単体テスト」がレッドとして検出してくれたわけです。

データが見つからないということは、ユーザーの操作上あまりあることではありません。このため、UI からテストを行ったらこのバグは見つからなかった恐れがあります。

今回の場合は、あまりクリティカルな問題ではないのですが、それでも過去に決めた仕様に反するコードを書いたのをあっさり検出して、「だったよ!」とか思い出せたのは単体テストのおかげです。

ServersMan@VPS の定期メンテナンス

ServersMan@VPS ですが、先日定期メンテナンスで停止していたみたいです。

FAQ の定期メンテナンスはありますか?にもある通り、先日水曜日は定期メンテナンスの日でした。

ServersMan@VPSサービス 定期メンテナンスのお知らせと、二日前に告知されていたわけなんですが、実際にログから算出すると 3 時間ほど停止していました。

商用サービスで使う場合はさすがにこの停止時間は苦しいですかもね。

DNS や監視系で使おうかと思ったんですが、それもちょっと難しいかな?

ServersMan@VPSサービス 障害発生/復旧のお知らせによると、本日一部のサーバーでは 5 時間半くらい使えなかったみたいです。

ページ

RSS - merさんのブログ を購読