2011/2/1 (火) a.m.02:28
Clojureでやりたいと思った理由はもちろんいくつもありますが、断念してしまった理由もいくつかあります。致命的と言えなくもないものはあまりなくって、かなり判断に迷ってというかClojure路線を続けたかったのが本音のところでした。 ちょっと時間も経ってしまって、もはやうろ覚えの顛末を軽くねつ造を交えながら書いていこうと思いますよ。
今回のプロジェクトは既存のJava製Frameworkのクローンものです。構想としては、Clojureを使って別名で各クラスを実装。そこにFrameworkと同名の薄いラッパークラスを拵えて互換性を確保するというものでした。最初から二段構成を考えていて、これは面倒だけどもある程度仕方がないと割り切っていました。 そもそもClojureはJavaを置き換えるものではなくって、共存して補完しあうものなんですよね。どこかで開発者の方もそうおっしゃっていたと思います、ソースとかはパッと出せないけど。だから今回みたいにJavaの何かクローンするみたいな事には向いてなかったのかも知れません。新しい何かをJavaを活用しつつ実装するみたいな事に向いているのでしょう。
まずひっかかったのは、メソッドの引数に自分のクラスを渡そうとすると普通にはコンパイルできない事。どうやら事前に存在確認をするみたいでクラスパス内に.classが存在しないとその時点でエラーになる。自分自身なんだからよしなにしてくれたっていいじゃないと思ったものの納得できなくもないので、ダミーのほぼ空っぽのクラス定義を書いて事前にそちらをコンパイルしてから本クラスをコンパイルする事に。そのダミークラスには処理を実装する必要はありませんでしたが、対応するコンストラクタの定義程度は必要になりました。この時点でかなり揺れました、気持ちが。だって三段やないですか、面倒にも程があるやないですか。いっそPure Javaで……、この言葉が浮かびます。 しかし、そこはClojureへの気持ちで乗り切ります。互換レイヤーのラッパークラスだってそのまま素通りさせるくらいで、大した手間のかかるものでもないし、少し気をつけてビルド処理を行えばいいじゃないかと。
次に発覚したのはClojureで実装するクラスには静的変数が定義できないという事。そらまぁ、必要ないんでしょう。ないですよね。関数型言語だもの。でも、一応クローンなので互換性の為にもちゃんと定義しておきたいのです。定義しないといけないのです。 これもいろいろ対策を考えて、いっそコンパイラの方もソースが公開されているので手を入れてしまおうと、あ、私じゃなくてお相手さまがおっしゃったりしたのですけど、簡単な方法としては互換レイヤーの方へ実装する事ですから、とりあえずその方向で進めておりました。が、矢張りこう釈然としない、Clojureだけでも完結できるような形を目指してたのに、基本的に実装するのはClojureでだけのつもりだったのに。いっそPure Javaで、この言葉が沸き上がります。
そうしてまたあれこれ考えまして、Javaの方が実装しやすい部分もあるので、もうJavaをメインクラスに据えてClojureはサポートクラス的な位置づけで実装してみてはどうかという話が持ち上がりました。これだと最終的なおさまりが良さそうで、かつClojureでのプログラミングを楽しむ的な部分も確保できそうです。しかし、結果的にはこの決定がトリガーになりました、いっそPure Javaの。 Javaの方に実装が入り込んでくると、これはJavaでやった方がいいのか、Clojureへ持って行った方がいいのかの判断が必要になります。基本的にClojureでとやっていきましたけど、両方に違う言語で平行して実装をしていかなければならない事にうんざりしてきます。面倒だし、まとまりは悪いし、なんか変なノウハウばかりたまってきている気がするし。あぁ、もうPure Javaで、Javaだけでいいじゃん、好きになろうぜJava、ついにこの言葉へ辿り着きました。
そんなこんなで無駄に足掻いてグダグダしたあげくに落ち着くべきところへ落ち着きました感じです。けれども、一番大きかったのは某汎用ビルドツールを使っていて依存性とか解決するの辛いよねーって事だったかも。人生いろいろ。違うか。
2011/2/1 (火) a.m.02:45
VIDEO
ザ・洋食屋 キチ・キチ
この方が公開してらっしゃる動画が大好きで観まくっているうちにまたオムレツ修行に励みたくなって最近お昼はオムレツ三昧な感じです、こんにちは、しもだです。お元気ですか。
いかにもな私ですから憧れは抱いているのですけど流石に鉄のフライパンを買うのは憚られましたので、新しく小さめのテフロンのフライパンを導入いたしまして日に日に上達、今ではすっかりそれなりにふわとろなオムレツを焼けるようになりましたよ。わーいわーい
とかいう自画自賛系エントリーでありました。キチ・キチ、食べに行きたすぎる!
2011/2/2 (水) p.m.12:17
jQuery: » jQuery 1.5 Released
大した事をやれない当ページみたいなところでも絶賛大活躍中のjQueryさんの新版がついにリリースされております。新しいバージョンは1.5でございます!
Beta 1の頃から試していて信じておりましたけど、正式版を組み込んでも問題がないみたいなのでさくっと置き換えました。 GoogleさんのCDNへはまだ浸透していないので当面はMicrosoftさんのCDNで行きますが、恐らくユーザ数的にはGoogleさんCDNの方が多いと思われるのでそのうちGoogleさんのへ変更するつもりであります。
個人的に今回残念だったのは組み込まれると言われていたTemplatesが組み込まれなかった事ですが、Ajax周りが書き直されていたり、Deferred Objects、jQuery.sub()などの新要素もありますね。何のこっちゃわかりませんけど。わかれ。
益々繁栄していくjQueryさん界隈、これからも注目していきたい。そして有り難く大活用させて頂きたい。
2011/2/2 (水) p.m.03:18
自己嫌悪に陥り方が半端無いのでいっそ行かない方がいいのかもと思ったりする病を発症する今度こそ本当に社会復帰へ向けて動き出したいのだけどもどうしたらいいのかすらもわからない飛べないダメ人間。
職場の人気者ほど実は重症? フツーの人に蔓延する“仮面引きこもり”の正体|「引きこもり」するオトナたち|ダイヤモンド・オンライン
ほとんど私じゃないかと思ったけど、今は別に潜在的じゃなくて普通に引きこもりだから違う。うん、違う、きっとそうだ、そうに決まってる。
本日もいつも通り穏やかな午後の模様であります。
2011/2/2 (水) p.m.03:43
VIDEO
6時間で丸ごと剥ける、脱皮するタカアシガニの微速度撮影映像 経由
まさか最後にこんな風に出てくるとは。想像以上に凄過ぎたわー。
2011/2/2 (水) p.m.05:47
2011新年・オフ会のお知らせ 《 長崎ガイド 》
なんか某人が「もちろん行くぜ!」というのでこりずにまた参加させて頂いてみた。小雪舞い散る寒い日だったけど、熱い会合だったよ! とか例によって適当に調子良く。
今回の会場は魚山亭さんというところ。入ってから「あ」と思ったけど面倒だったので中から撮った。
長崎だとお店の入り口が急階段なんて事もよくある事だよねー。あはははは 地下なだけだけど。
なんか始まるのを待っていたら隣の人がスマートフォンを自慢してきた。
始まる前のー静けさでー。
宴たけなわー。頑張って目線入れて気合いでぼかしたよ。
今回も総勢30人近い大所帯での宴会で大盛り上がりでありました。3時間以上だったと思いますけど、一気に過ぎちゃいましたよ。 皆様、おつかれさまでした、ありがとうございました!
ちなみに、乾杯前からビール二杯確保したりする傍若無人っぷり。酒好きでごめんなさい。無駄にはしゃぎ過ぎでごめんなさい。面倒くさい酔っぱらいでごめんなさい。おっさんでごめんなさい。とにかくごめんなさい。 あと、左下辺りに映っているのは「名刺替わりに」と頂いたお菓子。手作りとの事で凄く凄く美味しかったよ!
その後、二次会、三次会と進んでいくわけですけど、出せる写真がないのでした。例によって全然撮影してないし。 というか、一次会ですっかりできあがり、二次会は酔ったまま、三次会はさらに酔っていてほとんど寝ていたりしたので、皆様を不快にする言動に及んでいないか非常に心配です……。
あ、前回と違って(例のあれ(仮題)・某オフ会的なものにも潜入してみた。 )ちゃんと歩いて20分のところを20分で帰ったよ。おまわりさんも見逃してくれてた。
2011/2/7 (月) p.m.03:21
ランタンフェスティバルが開催される数日前ですけども、中島川周辺をうろうろしたので写真を撮ってきましたよ。
橋の上とかがこう。
沿道とかがこう。
川の上とかがこう。
くっきりはっきり眼鏡橋だったのになんか邪魔されてた。ち
で、某ご友人様と約束していたので焼酎呑んで帰った。 場所はさかな市場 銅座店さん。この日も写真を撮るみたいな事がすっぽりと抜け落ちていて本当に数がない……。ちなみに、平日焼酎ボトル半額キャンペーンとかやっていましたよ。もちろん私らはそういうの関係なしに芋焼酎ボトルでこーいでありますけども。
2011/2/8 (火) p.m.11:41
Clojureで遊んでいる時、プログラミングClojure を参考していましたが、その中に「ClojureはJavaであるからJavaオブジェクトのすべてのメンバを列挙する事ができる、そう、showを使えばね」と有ったのでやってみてましたけど、こちとら書籍サンプルコード付属のバージョンではなくてMac Portsでインストールしたバージョン1.2.0なので上手く行きません。 書籍ではclojure.contrib.repl-utilsをuseして使おうぜと有りますが、
risa:~ tac$ clj
Clojure 1.2.0
user=> (use 'clojure.contrib.repl-utils)
java.lang.IllegalStateException: source already refers to: #'clojure.repl/source in namespace: user (NO_SOURCE_FILE:0)
とか言って叱られてしまいます。名前がカブっているからダメだと。幸いにもshow自体はカブっていなかったのでそれだけuseすれば大丈夫でありました。
user=> (use '[clojure.contrib.repl-utils :only [show]])
nil
user=> (show Object)
=== public java.lang.Object ===
[ 0] ()
[ 1] equals : boolean (Object)
[ 2] getClass : Class ()
[ 3] hashCode : int ()
[ 4] notify : void ()
[ 5] notifyAll : void ()
[ 6] toString : String ()
[ 7] wait : void ()
[ 8] wait : void (long)
[ 9] wait : void (long,int)
nil
これでいろんなものが覗き放題ですよ、覗け覗け、覗きまくれ。おー
2011/2/10 (木) p.m.10:52
VIDEO
Vintage Computer 経由
ちょいと特殊形状なトルクスドライバーが二種類必要ですけど、それさえ用意できれば凄く簡単お手軽ですね。それなりに頻繁に行ってもいいくらい。 そもそもMacBook系、それもPro系は結構前からHDD交換は簡単にできるようになっていました。それはもちろんユーザの事を考えてというわけじゃなくてCTO作業の簡略化という面も大きかったのでしょうけど、結果としてユーザもメリットを享受していました。しかしそこはApple、デザインを優先する会社ですから、モデルによっては酷く面倒なものもありました。
私が最初に所有したノート型のMacは初代iBookでしたが、HDDの交換は骨が折れました。既に当時からそこかしらで行われていたWeb上に解体手順を参考に自分で行ったのですけど、最初のドライブを外すまでに一苦労。外すまでに苦労するのですから、交換してから元のように組み直すのも一苦労でありました。 次に購入したのはPowerBook G4の初期モデル、ボディにチタンが使われていたあれでした。こちらのHDD交換は逆に凄く簡単でものの10分程度で完了したのを憶えていますし、この頃はHDDの容量がガンガン増えて、価格もガンガン下がっていた時期だったので数回交換したのを憶えています。もしかしたらこの辺りのモデルはユーザが交換するのも前提にされていたのかも知れませんね。
今回のAirがユーザが交換するのを前提にしているのかは知りませんし、それによって保証がどうなるのかわからないのですけど(取り説に交換方法が書いてあれば保証対象のはず。トルクスネジ使っているくらいだから多分アウトなんだろうなぁ)、凄くシンプルでいいと思います! 前モデルの交換作業はちょっとキツかったと思うし。 それにSSDはこれからどんどん大容量化と低価格化が進むと思われるので、もうユーザさん的にはトルクスドライバーを手に入れて構えておいてもいいと思う、どんどん交換しちゃえばいいと思うよ! あ、一応保証が切れてからね。
2011/2/11 (金) p.m.07:15
【レビュー】サーバ上のファイルをVim経由でローカルホストから直接編集する方法 | エンタープライズ | マイコミジャーナル
私はVimをちょっとした編集くらいにしか使いませんので実際には試していませんけども、私がEmacsさんの方に好意を抱きますのはこういうリモート上のファイルをローカル上のEmacsでいじるのがやりやすいのも理由の一つでありますから(例のあれ(仮題)・リモート先やsudo経由のファイルはTRAMPで開く。 )、非常にグっときたりしたものであります。 まぁ、他にもEmacsさんの方に愛情を抱く理由はいくつもありますので(Mac OS Xを使っている限りキーバインドの親和性の意味で離れる気にはなりにくい)、乗り換える可能性は低いのですけども。VimはVimでそれなりに使ってるしね、カスタマイズなしで。