興味の対象は、各種プログラミング言語(Ruby,LISP,Objective-Cなど)、WebObjects, rails, Linux、Mac、数学、音楽、写真(特に VR)、猫などです。ツッコミは短く鋭く愛を込めて(出典:たださんの日記)。リンクはどうぞご自由に。
アンテナでの更新チェックには、antenna.lirs か、index.rdf をご利用ください。
OSC2008-do に参加してきたので、感想。*1
今回は日本Rubyの会の高橋会長もかけつけてくれた。
.NET DLR の話。
プレゼンマシンが MacBookPro だったので 「お!」と思ったが、OS は Windows Vista だった。 そりゃそーだよね、、、
DLR は言語を作るための基盤。現在、 IronPython と IronRuby と JavaScript のプロジェクトが進行中。
IronRuby はつい先日 Rails が動くようになったらしい。
あと、JavaScript で定義した関数を、Python から呼び出す なんてこともできるらしい。 まぁ、この辺は Java で定義したメソッドを JRuby から呼ぶ ってのと似てるな。
まぁ、内輪ネタなので割愛w
とにかく RubyKaigi と jpmobile は素晴らしいの一言に尽きる。
個人的には本日のメインイベントその1。 前々からずーっと生で見てみたかった Seaside をやっと 見られた。
一応、WebObjects の経験があるので、継続渡しとかは 全く驚かなかったけど、 Web ブラウザ上で コンポーネント名を表示して、Webブラウザ上で CSS の設定をしたり、Web ブラウザ上でクラスブラウザを 表示したり、ソースコードを表示したり、ソースコードは 表示するだけじゃなくWebブラウザ上で編集して それがすぐにアプリに 反映されたり(デプロイのし直しとかアプリの再起動とか 一切不要)、エラーが起きたら Web ブラウザ内にスタック トレースが表示され(ここまではフツー)、そこから Squeak のデバッガを起動してすぐにデバッグできたりとかは あまりにすごすぎてかなりポカーンとしてしまった。 (でも、これに似たようなのを昔 WebObjects + Groovy で 鈴木さんがやっていたというのを風の噂に聞いたけど、 どの程度 Seaside に近いものができていたのだろう)(追記:鈴木さんから光速でコメント頂いた。ありがとうございます、鈴木さん。EOInspectorか )
いやー、これはすごいね。本当に見られて良かった。 梅澤さんに大感謝。
あと、オブジェクトの広場で7月から Seaside の連載が 始まるってことで、めちゃめちゃ楽しみ。長期連載にして欲しい。
インターネット界隈での著作権とか言論の自由とか 言論が自由とはいえ、不必要な誹謗中傷や有害な情報から ユーザーを守る仕組みとか についての事件や法律の歴史、そして、今後どんな活動を していくべきか。
優れた技術がおかしな理論やおかしな法律によって つぶされてしまうことがあるので、 技術者はこういった法律や世論などにも関心を持つべき。
個人的メインイベントその2。
GCC のフロントエンドのソースってのは、 Ruby のソースコードとちょっと似ていて非常に面白かった。 例えば、C で思いっきりオブジェクト指向しているところとか、 「関数を定義するための関数」なんてものがあったりとか。
後、中身の思想は思いっきり LISP なのも面白い。
普段なかなか触れる機会がない(触れようと思えない)GCCを こんなに解説してくれて本当に感謝!すごく面白かった。
かなりマニアックな内容なのに、ものすごいいっぱいの 聴講者が来ててしかもみなさんずっと熱心に聞いているように 見えたのだけど、この人達はいったいどういう層なんだろう(^^; ってのが若干疑問だった。
肉うまかった。
梅澤さんとお話できて嬉しかった。
sumim さんや高橋会長からいつものように面白い話を いっぱい聞かせてもらって超楽しかった。
*1 本当は RubyKaigi について先に 書くべきなのだろうけど、 RubyKaigi は裏方でてんてこまってたので、あま り「参加」できてないのよねぇ(^^; まぁ、後で何か書くとは思います
Amazon ECS3 が3月いっぱいでサービス廃止になり、 ECS4しか使えなくなったので、 amazonplot.rb (mingplot) を ECS4 に 対応させてみた。
っていうか、ググっても「使えなくなったー」という声を 全然見つけられないのだけど、もしかして使ってるの俺だけ?(^_^;)
Amazonの「トークン」はECS4では廃止になり、代わりに 「Access Key Id」というものが必要になりました。
なので、 --token には TOKEN ではなく、 AccessKeyID を指定してください。
% amazonplot --token=AMAZONTOKEN -o /home/yourname/survey 12345678 ↓ % amazonplot --token=AccessKeyId -o /home/yourname/survey 12345678
REXMLでXpathというのを真剣に使ったのは初めてかもしれん。
"Offers/Offer[Merchant/Name/text()='Amazon.co.jp']/OfferListing/Price/Amount"
で、Merchant/Nameの中身が'Amazon.co.jp'に一致する Offer の /OfferListing/Price/Amount を取得、とか。
Xpathって結構複雑なことできるのね〜。
この本は素晴らしい。マークピーターセンさんが、 長年日本で暮らし日本人が書いた英語の添削などをするなかで、 日本人の英語にありがちな間違いを指摘してくれる本。 (一部、「ほんとかな〜?」と信じられない記述もあるんだが)
こんなことが書いてある。
英語は数に対してものすごく厳密に述べたがる言語。 冠詞(aとかtheとか)重要。日本人は冠詞を「名詞のオマケ」ぐらいにしか 考えていないようだが、ネイティブにとっては むしろ名詞の方がオマケぐらいの勢い。
I introduced the coach of my tennis club to an ex-wife of my brother.
何気なく訳すと「私は私のテニスクラブのコーチを 私の弟の離婚した妻に紹介した」だが、 この文から読み取れることは他にもある。
まず、the coach と書いていることから my tennis club にはコーチが 1 人しかいないことがわかる。 もし、my tennis club にコーチが複数いるのなら、 a coach(たくさんいる中の1人) と書く。
次に、an ex-wife と書いていることから、弟は少なくとも二回離婚している ことがわかる。もし、一回しか離婚していないのなら、 the ex-wife と書く。
何の前触れもなく指し示すものが明らかになってない状態で the を 使うのは「あの件だけどさ〜」と突然話しかけられるのと同じで、 どの件の話なのか全くわからずネイティブはものすごくイライラする。
Get in the car!(車に乗れ!) Get on the train!(電車に乗れ!)
のような in と on 使い分けがなぜ起きるか。
in は中に入り込んで対象物と比較的密に関わる イメージで、on は対象物との接触が平面的で あまり深く関わらないイメージ。
つまり、car の方は、車に乗ってその車の運転に 何か影響を及ぼす可能性がある(密な関わり)から in。
train の方は、ただ自分は荷物として運ばれるだけで 「乗る」という行為に関してはその電車と 深いつながりが起きないから on。
out と off は in と on それぞれの逆。
Clean out your desk!(机の中を綺麗にしなさい) Clean off your desk!(机の上を綺麗にしなさい)
回転軸が垂直なのか水平なのかの違い。
She turned around.(彼女は振り向いた) She turned over.(彼女は寝返りした)
日本語は時制の表現が曖昧だが、英語は時制の面も 非常にきっちりと表現したがる言語。
Before I went to Beijing, I studied Chinese. (北京へ行く前に、中国語を勉強しておいた。) Before I go to Beijing, I am going to study Chinese. (北京へ行く前に、中国語を勉強する予定である。)
の前者(went)において、日本語では「北京へ行った前に」とは 決して言わない。
My sister studied English. (私の妹は英語を勉強した。(そして今は勉強していない)) My sister has studied English. (私の妹は英語を勉強した。(そして今その効果が持続している))
この辺り、
を数直線を使ってそれぞれの違いを非常にわかりやすく説明してくれる。
未来形(未来完了形)なども同様。
関係詞を上手に使った文章は非常に洗練された印象を受ける。
制限用法と非制限用法の区別をしっかりしましょう(アメリカでも 乱れている)。
制限的用法(コンマなし): The Nobel Prize which I received last year was a great honor. (他にもノーベル賞を受賞したことがあって) 前に受賞したやつはともかく、今回のものはとても光栄でした。 非制限的用法(コンマあり): The Nobel Prize, which I received last year, was a great honor. 私が去年受賞したノーベル賞はとても光栄でした。
制限的用法の方は、他の物の存在も暗示され、 たくさんあるなかで「○○な物」という限定をする意味になる。
非制限的用法の方は、単純に先行詞にもうひとつの説明を 付け加えるのみ(たくさんある中のコレという暗示を行わない)。
発音するときは「コンマあり」の方はコンマのところで 一息置く。
His solutions to a number of problems that he found were very creative.
だと、「彼が見つけた」のが「solutions」なのか「problems」 なのかがハッキリしない。
solutions を彼が見つけたのであれば
The solutions that he found to a number of problems were very creative.
problems を彼が見つけたのであれば
His solutions, to a number of problems that he found, were very creative.
とするとハッキリする。
日本人は論文などに受動態を使い過ぎだが、 受動態は著者が自分の書いたことに対しての 責任を回避しているような印象を与えるので、 能動態で自信を持って力強く書くべき。
ダメな例: The following results of this experiment were obtained:... 良い例: We obtained the following results in this experiment:...
また、受動態にすると主語と述語の距離が離れてしまって 意味がとりにくくなるという観点からも受動態は控えるべき。
同じく日本人の論文には "Especially, ..." という 表現が多いが、Especially にはコンマで後に続く文 に仕切られた、自立した「句」として働く使い方は存在しない。
日本人は「したがって」の意味で "Accordingly, ..." とか "Consequently, ..." と 書く人が多いが、半分以上は不自然。
Accordingly の語源の accord は "to be in harmony with"(調和する) という意味なので、「〜に応じて」「〜に相当して」などの 「ある状態に合わせる」という意味に使うことが多い。
Consequently は「ある状態の当然の結果として、何かの状態になる」 の意味。 as a result と同義。
"Therefore, ..."は論文に向いているとはいうものの 少し堅すぎる(重苦しすぎる)。
so は、かなりくだけている。「だからさ」に近い。ので、論文などの 堅い文章には不向き。
Since、Because は論文向き。
as は意味が曖昧になる(〜しながらの意味の場合もある)ので、 使わない方が良い。
thereby は論文にはふさわしい。「この特定の行為によって」の意味。
thus も論文で良く見かけるが「このようにして、こうして」の意味。
hence は論文にとてもふさわしい。「ある状態によって」の意味。
といった具合に、「ネイティブの感覚」というのをしっかり 日本語で説明してくれる素晴らしい本。
大学の初期の段階で読んでおきたかったと非常に後悔している。 英文を読み書きするする際、これらの知識を知った状態と 知らない状態では、英語の上達度/理解度に 大きな差が生まれる気がする。
この春、大学に合格した新入生はぜひ読んでおくと良いと思う。
もう一つ、特に「理系」の大学一年生におすすめしたいのがコレ。
哲学の入り口として非常に良い。
数学と芸術(遠近法)の関わりとか、 文化人類学とか言語学などとの関わりが見えてくる本。
私は社会人になって、ITの仕事をするようになって オブジェクト指向の抽象化とかモデリングというものを 勉強しているうちに構造主義にたどり着いた(といっても オブジェクト指向とは関係ありそうな無さそうな、、、) のですが、構造主義のことを大学の早い段階に知っていたら、 大学での勉強がもっともっと奥深く面白いものに なっただろうに、と非常に後悔している。
ので、ぜひ大学生に読んで欲しい。
Rails2.0 が REST を前面に打ち出して来て、 勉強の必要性を感じたので、 RESTful Web サービスをこじんまりした読書会で読んだ。
ほぼ4章ずつにわけて4回の読書会。
えー、、、悪い意味でかなり笑わせてもらった。
まず訳文が日本語になってない箇所が非常に多いし、 言ってることもちぐはぐだ。
監訳者まえがきの最後に
原書ではAPPという表記だったものを、本書ではAtomPubという用語で 統一しています。
とか
監訳にあたっては、特に訳語については非常に気を使いました。
という前フリがあり、p.51の一番下の監訳注にも
原著出版時点では「APP」が一般的だったが、その後「AtomPub」 が公式なものとなったため、本書では「AtomPub」で統一している
と更に念を押しているのであるが、ペラッと1枚めくって、 次のp.52のいきなり2行目に
APPは、実際のサービスというよりはサービスを構築するための 命令セットなので...
とあれほど何度もAtomPubで統一すると書いて来たものをAPPと 書いてあって大爆笑させてもらった。
また、原文も結構笑える状態のようだ。Amazon.com のレビューを見ると 「編集者はVacationに行ってたんだろう」とか 「この1/3ぐらいにまとめられたよね」みたいな感想があり、 実際に読んでみて全く同様の感想を抱いた。
というわけで、この本を読むのはかなり難易度が高いので、 どうしても REST について深く勉強する必要がある人にしかおすすめできない。
サラッとポイントだけ押さえたい人は、 監訳者の山本陽平さんのPDF資料 とか Web+DB Press Vol.42の特集がおすすめ。
で、勉強して学んだこと、感じたこと。
会社で commons ftpclient を使っているシステムがありまして、 こいつが今日動かなくなってたんです。
で、調べたら、commons ftpclient のバグらしく、 こんなパッチを見つけました。
<URL:http://svn.apache.org/viewvc?view=rev&revision=631284>
FTP でファイルのリストを取得したときに、
Feb 29
みたいなタイムスタンプ文字列が返ってくる訳ですが、 こいつをうまくパースできずにエラーしていたらしい。
Feb 28
はパースできるのに
Feb 29
がパースできないってどういうことだ?と不思議になり、 ちょっと追試してみましたが、結局のところこれは SimpleDateFormat のバグ(仕様?)ってことに なるのかなぁ?
SimpleDateFormat sdf = new SimpleDateFormat("M d");
sdf.setLenient(false);
Date date = sdf.parse("2 28");
System.out.println(date.toString());
このコードだと、
// => Sat Feb 28 00:00:00 JST 1970
という文字列が返って来て(1970年ってのはどうなんだ?という のはさておき)問題ありません。
しかし、うるう日である 2/29 をパースしようと 以下のようなコードに変えた途端に、
SimpleDateFormat sdf = new SimpleDateFormat("M d");
sdf.setLenient(false);
Date date = sdf.parse("2 29");
System.out.println(date.toString());
ParseException ですよ。
ちなみに、Format を "y M d" などにして、
parse("2008 2 29")
だと、例外は上がってこないみたいです。
1970年2月29日って日付を作ろうとして、1970年は 閏年じゃないから、この日付は間違いだねー、ってことで 例外をあげてるんじゃないかと思いますが、、、
これを使って、日付を作ろうとすると、いちいち自分で 「今日の日付を求めてー、年の部分だけ取り出してー、 パースしたい文字列に年をくっつけてー」というお膳立てを してあげないと、意図通りの日付を作ってくれないわけです。
非常に使いにくすぎですね。
Java をお使いの方は気をつけてください。
ちなみに、Ruby だと、「今年の」2/29 としてオブジェクトを 作ってくれるので、こんな問題は起きません。 しかも、フォーマットの指定とかしなくても空気を読んで、 なんとなくパースしてくれますし。
Rubyのtime.rbは、ものすごく空気の読める子。
$ irb
>> require 'time'
=> true
>> Time.parse("Feb 29")
=> Fri Feb 29 00:00:00 +0900 2008
と、いうわけで(?)。
| 前 | 2008年 7月 |
次 | ||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | 31 | ||
_ tmaeda [ツッコミのテスト]
_ ogijun [WebブラウザでデバッグだったらやっぱDirectToWebですかね。 Javaのコード書いてその場でコンパイルし..]
_ tmaeda [おぉ。ogijunさんコメントありがとうございまーす。D2Wでそこまでできちゃうんですねぇ。]