2007年05月09日
JsUnit
JavaScript用の単体テストフレームワーク、さっそく調べてみると、JsUnitが見つかりました。おなじみのJUnit.org系列です。
日本語のドキュメントとしては、NRIのオブジェクトワークス | オープンソースドキュメントの「[PDF]jsUnit利用ガイド」 が優れています。(PDFファイルへの直接リンクは避けておきます)
JsUnitなかなか良いです。
ひとつだけハマりました。私のミスなんですが、テストケース内でJsUnitのライブラリjsUnitCore.jsを読むときのURLを間違うと、テストがタイムアウトする動きになります。どうしてなのか理由がわからず、しばらく悩みました。
何もせずにタイムアウトする時は、テストケースを書くHTML(もしくはHTMLをレンダリングする、アプリケーションのソース)内のJavaScriptの読み込みパスをチェックしましょう。
JavaScripのUnitTest
仕事でJavaScriptのコードを書くことが増えてきたのだが、単体テストが大変な気がする。
Java生活が長かったので、全部をUnitTestしまくるUnitTestジャンキーほどではないにしても、ライブラリ的に何度も呼ばれるメソッドについては、厳重に境界テストを含めたUnitTestを書く癖が付いてる。
これが気軽に出来るのはEclipseとJUnitのおかげだったのだが、さて最近は仕事ではPHP、JavaScriptを書くことが多い。特にPHPは元々あるコードへの追加修正が主で、その上、元の作りがアレな事もあり、メソッドレベルの単体テストを殆どやっていない。というかメソッド(関数化)されてたらラッキー。グローバルな異存関係がありすぎてリファクタリングも大変といった有様。
JavaScriptに関しては、これからという感じなのが幸いして、まだ手の打ちようがありそうだ。そこでJavaScriptのJUnitみたいなのが欲しい。今日は、もう眠いので探すのは明日ですが(笑)
2007年05月08日
Subversion
Subversionを入れた。
連休中はRuby on Railsのお勉強だったので必要なかったが、実際にコードを書き始めると、一人でもバージョン管理システムがあれば非常に便利だ。
このサーバが Fedora だった時はビルドしてインストールしてあったのだが、CentOS を一から入れ直したので入っていなかった。
前に入れたときのビルドが非常に面倒だったので、今回はパッケージを使って入れる。
以下、やり方。
#とは言っても、とりたてて、載せるほどでもないのだが…
コレで入ってしまう。
Apacheを改めて入れている理由は、稼働しているのが Apache 1.3系で、パッケージのSubversionを使うのは面倒だから。というか出来ないかも。
なので、パッケージで入れたApache 2.0系を別ポートで起動することにした。
Subversionの設定をする。
/etc/httpd/conf.d/subversion.confを修正。
/etc/httpd/conf/httpd.confを編集し、Listenするポートを変更。(仮に9999とする)
そして、サービスが自動起動するように設定して、httpd起動。
これで全て準備OK。コマンドラインでテストしてみます。
2007年05月04日
Instant Rails 1.7のphpMyAdmin
もう日付が変わってしまったか。
昨日からやり始めたRailsでのコード書き。コードを書くところまで言ってません><
「まず最初の作業はMySQLのrootユーザにパスワードを設定して、開発用DBユーザを作成する事からか。」
っていう、まずのところでいきなりはまりました…
phpMyAdminでrootのパスワードを変えて、定義ファイルconfig.ini.phpのパスワードを合わせて変えても、接続できないのだ。
いろいろ試した結果、mysql/bin/mysql.exeを使ってコンソールで
とやって、変更後のパスワードを入れればちゃんと接続できる。
途中、飽きてWebをサーフィン(死語?)したりしながら数時間、悩んだあげく、見つけました。
パスワードハッシュメカニズムは MySQL 4.1 で更新され、セキュリティが向上し、パスワード盗難の危険性が少なくなっています。 ただし、この新しいメカニズムは 4.1 サーバと 4.1 クライアントしか理解できないため、互換性の問題があります。 4.1 クライアントはパスワードハッシュの新旧メカニズムの両方を理解できるので、4.1 より前のサーバにでも接続できます。しかし、4.1 より前のクライアントが 4.1 サーバに接続しようとすると、問題が発生する可能性があります。たとえば、4.0 mysql クライアントが 4.1 サーバに接続しようとすると、以下のエラーメッセージが表示される可能性があります。
by server; consider upgrading MySQL client
Instant RailsのMySQLのバージョンは5.0.27。PHPが参照しているMySQLクライアントのバージョンは3.23.49。もろに当てはまります。
サーバが覚えているパスワードを古い形式に再設定してみると、
FLUSH PRIVILEGES ;
見事接続できました。
しかし、クライアントのバージョンが古すぎないだろうか…なにかミスったのかしら?
2007年05月03日
日曜大工
いくつか考えているアイディアがあるので、この休み中に公開できる辺りまでこぎつけたい。
仕様がだいたい固まっている、簡単なサービスを作ろうと思うが、開発言語でやっぱり悩む。
Javaはわりと好きで一番習熟しているのだが、ちょっと億劫というか身軽さが足りないというか、面倒というか。どうせならTeedaを使ってサクサク作りたいとも思うし。
Teedaがあまり悩まずに、評判どおりサクサク行ければ、決まりなんだが、どうもやっぱりそんなには甘くない様子だ。もっと前から考えているほかのアイディアではTeedaでGoしているので、今回は速さを重視して別の言語で。
そこで赤丸急上昇なのがRuby on Rails。いや、もういまさらとも言えなくはないが。
実際はRoR自体まだ詳しくは知らないため、Java(というかTeeda)の場合と同様の懸案が存在するわけですが、こちらには本やWebに情報が多い。そこが違い。本質的に違うところは別なんでしょうが、開発者のやる気をどれだけ削がないかという面で重要だと思われる。
弱点としては運用サーバを作るのが難しいらしいという点か。あ、あと繰り返しですがRoR自体を詳しくは知らないということ。
Perl。素敵にクールなPerlで書くというのも最有力候補。フレームワークなし、CGIとTemplateモジュールだけでもそれなりにいける。どうせ今回作る奴は小さいアプリだし。でもなんか新しく作ろうとすると、ツール側にも新しいものを求めてまうのが開発者というものですから、フレームワーク探しとかを始めてしまい、なかなかコードを書き始めない。mod_perlにしないと負荷がとかも、負荷が高くなるほどアクセスが来て困りそうになったら考えればよい、のに考えてしまう。
まぁ、「まぁ」は使ってもいいと思います。(巷で話題になっているそうですな)
まぁ、「まぁ 結論」でググッた結果を見ればさもありなん、という気もしないでもないが。
まぁ、結論としてはRoRに傾いているわけです。(ウザ?)
2004年07月28日
clone
Javaについて知らないことはほとんどないと思っていたんだけど、cloneの仕組みを知らなかったことを思い出した。
そして知った。
間違ったことを書いているWebページが結構多くて惑わされたので、時間ができたら、まとめたページを作ってみようかな。
2003年12月23日
たまにはコーディングするか
仕事ではめっきり、まとまったコーディングをする機会がなくなってしまったので、
この年末休みになんか作ろうかなっと。
ちょいと考えているアプリがあるんですが、自分しか楽しめないネタですw
細かな仕様を考えないとなぁ。楽しみだなっと。