GMF2.2の情報がほとんどナイゾー

まずインストールでコケてるんで情報以前の問題ですが(苦笑)

なんかミラーが重いせいかアップデートマネージャが更新に失敗する。サンプル系はダウンロードに失敗するので、とりあえずSDKだけ入れようとしてるけど、依存関係の中のmylyn関連のダウンロードでタイムアウトが発生する。時間を置いてみるしかないかな?

GMF2.0の頃はゼロからモデリングツールの作成とEcoreからモデリングツールの自動生成まで一通りやったんですが、2.2になってだいぶ勝手が違うようで・・・とりあえずダッシュボードでどこまで生成できるのかやってみたいが、ダウンロードでふん詰まり中。

こういうのはやる気が出た時にやらないと勢いが無くなってしまうのにぃぃぃー。

これは8年くらい前からの個人的な目標なんですが、いつかモデリングツールを作りたい。以前はUMLエディタ作りたいでしたが、今はとある製品の設計部分のエディタにモデリングツールを入れようとしてます。ゼロから作ってもいいんですが、やっぱりEclipseと統合できるのがいいよねーってことでGMFを導入予定なのです。

はやくダウンロードできないカナー。そうこう言ってるうちにバックグラウンドでは転送例外(Read timed out)頻発中

Genericで迷宮へ迷い込む

何かを受け取って何かの処理をして何かを出力するってインターフェースとその実装を作っていたらTと?だらけになってわけがわからなくなった。実際に動くコードを見ても抽象的すぎて全く何やってるか分からない。疎結合とかそういうんじゃなくて隠蔽してるだけじゃないかと思えてきた。

たまにプログラミングやってみるとこうだ。登場するインターフェースをとりあえず作って、実装が必要な所はとりあえずFactoryにしてほっといてってやると何かを何かして何かするってプログラムができる。

実装クラスを作ってFactoryが実装を返すようになるとなぜか動くんだなこれが・・・まぁなんていうか・・・趣味プログラミングすごい楽しい(笑)

HDDカッコン病再び

はいっ、今年に入って3回目のHDD故障です(内1台は9年もの酷使したノートPCなのでさすがに寿命だろという感じですが)

延々リードエラーになってOSごとフリーズしてくれるんですが、5秒おきぐらいにOSに処理が戻ってくる。

なんとかチェックディスクまでこぎつけるも30時間かけて進捗3%。チェックディスクをあきらめて再起動させるとBIOSに無視される始末。あーもうこいつぁ無理だと判断してマシンから取外し、外付けにしてUSBで読み出しを試みる。ディスクの中身は見れるものの、みごとにファイルが壊れてる。触るファイル全てが壊れている。

各種ディスクチェックソフトでちまちまとエラーを検出させ修復するも、エラーありすぎて無理っ!とソフトもあきらめモード。もうローレベルフォーマットするか・・・と元のマシンに接続するとBIOSがディスクを認識!扇風機でHDDを冷やしつつ、おそるおそるファイルを吸い出してみると生きてる!地道にファイルを吸出し始めて、「カッコン」が出るファイルを見つけてはスルーし、見つけてはスルーし、CRCエラーにもめげず、OSごとフリーズしたら再起動して、BIOSに無視されたら認識するまでやりなおして・・・

そんなこんなで必要そうなファイルの吸出しが完了。フォーマットとチェックディスクを繰り返して不良クラスタを不良クラスタファイルへ追加させ、とりあえず使える状態へ。よく見てみるとHDDの天板に小さくマジックで書き込みが・・・「2007/06/xx カッコン発生」と。これ、過去にもファイルを消し去って駄目になったディスクだ!騙し騙し使ってたのを忘れてたぁーっ!もう、お前さすがに引退だ・・・おつかれさん!

今回の修復は根気がいりましたが難しい事はなんにもなくて、レスキューOSとかサルベージソフトの出動は無しでした。今年も夏がやってくる・・・パソコンの蓋を開け、扇風機がHDDの熱を冷まして"気分的に"故障率をさげる季節が。。。

Maven2のビルドごとにローカルリポジトリを変える方法

全てのビルドのローカルリポジトリを変更するならsettings.xml

<localRepository>/.m2/repository</localRepository>

のように指定すれば良いですが、ビルド単位に変更したい場合はビルドの実行時引数に

 -Dmaven.repo.local=/.m2-ut/repository

のように指定すればできました。

Hudsonはプロジェクト間の依存関係を自動認識する術は無い(?)のでpom.xmlには依存関係が書いてありますけど、それを見ながら自分でビルド順を指定してあげるのが面倒です。
そしてHudsonのジョブが90近くあり並列でビルドするとCPUとメモリをえらい食ってます…3GBのメモリでなんとかまわってます。

文字列中の数字を全部インクリメントする

"1,2,3,456"という文字列を与えると"2,3,4,457"と返って来るスクリプトの例です。

function inclement() {
    var result = "";
    var src = "1,2,3,456";

    while (/[0-9]+/g.exec(src)) {
        var num = RegExp.lastMatch - 0 + 1; //数値変換手抜き
        result += RegExp.leftContext + num;
        src = RegExp.rightContext;
    }
    result += RegExp.rightContext;

    alert(result);
}

具体的になんに使うか?というと連番がズレていた!とか間に数字を挿入して以降を全てズラしたいといった場合に使います(謎)

exec関数とか数値変換は手抜きなので仕事ではこう書かないように。。。

マイダーツ

hoso-kawa2008-12-29

箱とケースとフライトが青かったので購入!

その場でシャフトを2本もへし折り、シャフトも青いのを購入しました。欲しかった鮮やかな青はその場では売ってなかったので水色で我慢。合わせてティップも水色を購入して、バレル以外は青系で統一しました。

別に上手だから買ったんじゃないですが。。。

CFMLのオープンソース実装はあるか

あった。複数あった。Railo, BlueDragon, Smith等がそうらしい。サーバ機能も内包しているようだけれどCFMLを解釈してくれる部分のみ欲しい。

なぜにCFMLか。今、テンプレートエンジンとして馴染みがあるのがVelocity, FreeMaker。
式言語だとOGNL, MVEL。JSPとELも使っているし、PHPではSmartyを使っている。これらの組み合わせに加えてCFMLも捨てがたいと思った次第。

あの柔軟性と拡張性とcfoutputタグのなんでも出力できちゃう機能はほんと惚れました。

CFMLのエンジンだけ単体で使えるようなら、今作ってるやつにCFMLも対応させようと思ってます。これで*.vm(Velocity), *.ftl(FreeMaker), *.cfm(CFML)の3つが混合で扱えるようになると嬉しいなー。

今思うとプログラミングって時間食いますね。趣味でやってるとあっというまに時間が過ぎていきます。