/ 最近 .rdf 追記 設定 本棚

脳log[2010-04-27~]



2010年04月27日 (火)

最終更新: 2010-05-08T15:45+0900

[無題]

 RubyからScalaに乗り換えた15くらいの理由

「良いプログラマへとこっそり導く仕様」というのは確かに素晴らしい。Rubyの変数名規則や Pythonのインデントにもそういう効用があると思ってるし、Rubyのブロックは考え方を一変させる力を持っていたけれど、Scalaにもそれがあるという。関数型言語の良さや並列処理支援が使いやすく組み込まれているなら、プログラムの組み立てを一変させる力も持ってるだろう。コップ本の帯の文句「Java、Rubyにつづく次世代言語」が単なる惹句ではない中身のある言葉として迫ってくるよ。

リストの前半は、それ○○でできるよ、というのがすぐ頭に浮かぶけど一つの言語でできるというのはないだろうなあ。リストの 13番目以降になじみがないのでそこの説明をこそ希望する、と思っていたら追記されていた。でも 15まで。dqm2はいいから続きを!

 1. メソッドの引数に型指定ができる

Rubyの引数チェックコードが比較にあがっているが、型指定があっても引数の正当性チェックは避けられないと思う。C++でもガード節や assertから逃れられないし、これはスタイルや信頼するコードの範囲の問題。

 2.「ダックタイプな型」を定義でき、引数で指定できる

それはインターフェイスなんでは?、と思ったけど、型を定義するときではなく型を利用する側で付ける制約なのなら新しいかも。(Interfaceを継承してなくても、Interfaceの要求を満たしているならアヒルさんだと認めてもらえる、みたいな)

コンセプトに対応したテンプレートみたいなものをイメージしてる。(ダックタイピングはメソッド名による、テンプレートはソース上の表記(シンタックス)による制限・汎化だけど、自由すぎるし要求が不明確)

 5.一度しか代入できない変数
 6.型推論機能がある

varと valでこれができるって。たったの一字違い。C++は constを書かせすぎるから valが本当にうらやましい。

メソッドの仮引数は自動で valだって。すばらしい。

 11.XMLリテラル

well-formedな HTMLや XHTMLを書くのに重宝しそう。ヒアドキュメントより進んでる。

 12.for文のパターンガード

そのガードを、例のように for文と別のところに用意しないといけないなら魅力はないけど、どうなんだろう。

Scalaの魅力は十分伝わったから、とりあえずコップ本買ってきた。自分で確かめる。

Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala) Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)
Martin Odersky/Lex Spoon、Bill Venners/羽生田 栄一/長尾 高弘
インプレスジャパン
¥ 4,830

 ついにボーイズラブ雑誌が「有害図書」指定、18禁未満への販売や閲覧を禁止へ - GIGAZINE

朝日でも少年同士の恋愛漫画が「有害」みたいな見出しを付けてて、これはもめるなあと思ったんだけど、中身を読めば結局のところ、性描写のあるページ数や割合が一定以上のエロ雑誌を有害指定しているが、BLは必ずしも性衝動を喚起するものではないという理由で例外扱いしていた。その例外扱いをやめる、ということらしい。BLと関係ないところで有害図書指定の是非を問うのは構わないけど、「『トーマの心臓』が 、BLだから、有害」みたいな書き方は朝日以上の悪意を感じるよ>>>GIGAZINE


成人向けと有害を混同してたみたい。エロだけでは有害とならないなら、性行為の描写を含むページ数やページの割合というのは必要条件の一つってだけなのか。大阪の図書館の蔵書に BLが含まれていることの関連がささやかれてたりもする。お決まりの問題。ジャッジする人間の正当性をだれが判断するのか。有害図書指定がありきたりのルーティーンではないらしいことが想像できるようになった。してみると松文館が事件になってたのも有害図書関連なのかと検索すればそちらはわいせつ物。野放しはなんとなくダメな気がするけど、多数決はセンシティブな問題だけにありえない。明確な判断基準を作ってのフィルタリングもそこで思考が停止してしまってしょうもない運用がなされる未来が見える。結論なし。


2010年04月25日 (日)

最終更新: 2010-04-27T04:54+0900

[無題]

 歩道

歩道にはいろんな障害物がある。街灯、バス停、標識、工事の看板、車止め。車。目の悪い祖父いわく車の出入りのために(背の高い歩道に)設けられた傾斜が困るらしい(つんのめったりバランスを崩したりするだろう。少し関連して、バリアフリー - Wikipediaの観点からはあからさまな段差だけでなく、あるかなきかの段差が問題になったりもする)。

最近、自転車を推進するということで歩道にペイントがなされた。自転車や歩行者に区分を強制する自転車道ではなく、自転車が歩道を走るときは車道側を走ることをわかりやすく示したものだと思っていて、それ自体は望ましいのだけどそれで終わりではなかったらしく、ある日予兆もなく 30cmか 50cmの長さで弾力性のあるオレンジの突起が、3メートルおきに、林立する光景を目にすることになって呆れた。自動車のための障害物だけでなく自転車のための障害物までが歩道に溢れることになったんだから。手間暇かけていらんことするよね。この歩道はまた、車の出入り口の両脇に緑が植わっていたりもして、人(と自転車)と車が交差する部分の見通しが悪い。


2010年04月23日 (金) ハーバード白熱教室(Lecture1,2)。死にかけた一人を手にかけて食べるのは許さない。自分の意志でくじに参加してその結果殺す(殺される)のはあり。誰でも生きる権利はあるしそれは社会によって守られるべきだが、自分の生命に対する自由(自殺・安楽死)も持ってると考えるから。


2010年04月21日 (水)

最終更新: 2010-04-22T02:07+0900

[Ruby] 「まつもと ゆきひろのRuby検定 - ITpro EXPO検定---ITpro EXPO 2008:ITpro

やってみた。Time.parseの問題がわからなかったのと、ブロック変数が外のローカル変数を変更してしまうかどうかという問題(Rubyのバージョンは?回答形式が)以外はたぶん問題なし。で、回答を送信すると一分かそれ以上待たされた後、「一度しか回答できません」だって。ええええ。たしかにそう書いてあるのは読んだけど、以前回答したことも忘れてるんですよ。そんなこと言われても。

そういう要求をするのも、それを額面通りに実施してしまうのも、ある意味感心するけど首を傾げてしまう。回答は適当に受け付けて、後でフィルタリングしてから利用すればいいじゃない。とここで「すでに受験した方は,前回の回答結果を参照できます。」とも書かれてるのに気付いた。ログインを要求されたから見られなかったけど、回答を(回答者の要求に応じて参照できるようにしながら)抱え続けるのって誰得? Ruby検定の予想問題からのピックアップに過ぎないんですよ、この問題って。

回答形式が 一つ選べという問題だったのにチェックボックスが使われていた。他は問題形式によってラジオボタンとチェックボックスが適切に使い分けられていたから、出題形式を間違えたかフォームを間違えたか後でフォームだけ変更されたか。はてさて。


2010年04月18日 (日) 表紙の蟹がスベスベマンジュウガニだったら大ウケだったのに。

最終更新: 2010-04-19T06:03+0900

[無題]

 [Ruby][大型本] Gregory Brown【Rubyベストプラクティス -プロフェッショナルによるコードとテクニック】 オライリージャパン

Rails以前の化石級の知識をアップデートすべく手に入れた。10ページ目でみかけた、モジュール定義での extend self (module Foo; extend self; ~ end というような)。テストの章だから説明がなかったけど、これは当たり前には出てこない。一括 module_functionか?先頭に置いても平気なのか?検討が必要。できるだけ実際のコードを使用するという方針のメリットが早くも得られたかたちで、先が楽しみだ。

 [Firefox]「Firefox 3.6でファイルをドラッグ&ドロップする方法 | エンタープライズ | マイコミジャーナル

昨年末の記事だけど Gmailが対応したことで知った。非同期ファイルアップロード(20100415p01)はまだ便利なように拡張できるってわけだ。

機能するブラウザが限定される&スクリプトがないと機能しないのであれば、ドロップエリアもスクリプトで用意しないといけないだろうな。


2010年04月17日 (土) [790FX-GD70] BIOS v1.A でた。2.0でも 1.10でもない意表をつくバージョンナンバー。

最終更新: 2010-04-17T11:07+0900

[] 最近の読書 Relay(って書くと電子部品っぽい)

縁のなかった分野、著者の本を読む機会が続いたので記録。

  1. アマゾンで autoconf, configure, makeなどの本を検索して
  2. Make: Technology on Your Time Volume 01
  3. 最近(20100316p01)、アマゾンなどでロボットを目にして
  4. Make: Technology on Your Time Volume 09』の野尻 抱介さんの文章から
  5. 考えなしの行動?』末尾の文章から
  6. 誰のためのデザイン? 認知科学者のデザイン原論』巻末の関連する書物から
  7. 時間の中の都市』『Normal Accidents』(この二冊はまだ Wishlistの中)
  1. 4月13日のセキュリティホール memo(www.st.ryukoku.ac.jp)から
  2. ジュンク堂書店トップページの理工書担当者のおすすめから
  3. 時間の中の都市』(これはまだ Wishlistの中)
  1. 先月の新聞の瀬名さんの書評を読んで
  2. 数学は最善世界の夢を見るか? 最小作用の原理から最適化理論へ
  3. ちなみにその次に紹介されたのは『創るセンス 工作の思考』こちらは既読
  1. Walkekra CB100を買った(20100316p01)
  2. ヘリコプター>コアンダ効果(20100317p01.01)>最近興味を持ったことなど(www2.plala.or.jp)
  3. 流れのふしぎ 遊んでわかる流体力学のABC
  1. レジデント初期研修用資料(旧)
  2. serial experiments lain
  3. レジデント初期研修用資料 内科診療ヒントブック
  1. みりおんぐらむ
  2. 星をさがして』『384,403km あなたを月にさらったら
  1. トラックボールに興味津々(20081231)
  2. 猫のトラックボールルーム ~インデックス~(mineko.fc2web.com)
  3. みねこあ
  4. 384,403km あなたを月にさらったら』『BG、あるいは死せるカイニス
  1. 店頭で、買うつもりはなかったのについ
  2. もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら
  1. 浅田真央が年齢制限で出られなかったときに国外であった反応に納得してしまってから
  2. ずるい!? なぜ欧米人は平気でルールを変えるのか

2010年04月16日 (金) ここまで読んだ。「【コラム】3Dグラフィックス・マニアックス (53) 水面の表現(2)~動的なさざ波 | パソコン | マイコミジャーナル」今や隔世の感があるバーチャファイターや FF7からの道のりを辿れる。

最終更新: 2010-05-01T17:13+0900

[tDiary] Hatenaスタイル

リストをネストしたときだけ生のテキストに<p>タグが付くのがオリジナルのはてなと違うんだそう。ついでに空の<p>タグが生成されるのも気になるけどそれは別。

最初に。<li>はブロック要素もインライン要素も包含可能らしいけど両方を並べて含んでいいのかはわからなかった。読めない(block or inlineの 0以上の繰り返し、だという気はする)。Another HTML-lintが文句を言わなかったのでいいものとしよう。

次に、CodeReposの hatena_style.rbの中を見てみる。Hatena::Blockがなにやら特別な位置を占めてるけど、一応 Hatena::Inlineと同じように振る舞うみたい。ところで、Hatena::Blockはブロック要素の連なり、Hatena::Inlineはインライン要素の連なりを表してるけど、その両方の連なり(<li>の中身とか)を表すクラスがない。

てっとりばやく済ませるために、Hatena::BlockAndorInlineというクラスを用意して Hatena::Blockが行っていた仕事をごっそり移動するそれだけでなく。Hatena::BlockAndorInlineにはインライン要素を含んでいいのかを示すフラグを initializeを通して与え、それにより何が何でも<p>タグで囲むのかそのままにするのかという動作を変えることにした。現状、求められてるのがその違いだけだから。

Hatenaスタイルは使ってないからあからさまなバグがあっても気付かない可能性が大きいです。

suppress_ptag_in_nested_list.patch (7.1KiB, 2010-04-16, r37217との差分)古くなりました。


順序付きリストや定義リストの対応を忘れてる。

<dt>の中はインライン要素の 0以上の繰り返し、<dd>の中はインライン要素とブロック要素の 0以上の繰り返しっぽい。Hatenaスタイルでは定義リストにはインライン要素しか認めていないので対応は必要なし。順序付きリストだけ。

suppress_ptag_in_nested_list.rev2.patch (8.2KiB, 2010-04-16)

svn diffで -x -p (-x <ARG>: diffに渡すオプション, -p: Cの関数名を表示)を初めて付けてみたけど、Rubyスクリプトであってもクラス名は拾ってくれるみたい。


 @2010-04-18 MLに書いた件

次々空いてくる穴をふさぐのはどちらかといえば好きだけど……。

suppress_ptag_in_nested_list.rev3.patch (8.4KiB, 2010-04-18)
r37218に対して。rev2パッチ + (無限ループになっていた例での)段落の分割を防ぐ。
suppress_ptag_in_nested_list.rev3-2.patch (2.9KiB, 2010-04-18)
r37218に対して。(無限ループになっていた例での)段落の分割を防ぐ、だけのパッチ。

 @2010-04-20 「stack level too deep (SystemStackError)」になるらしい。

それはそれとして、

  • Hatena::Block#title_is_dummy?のロジックが反対。(誤:==/正:!=)
  • r37240はリストが必要以上に深くなる。
  • Hatena::Section#bodyは期待通りうごかないかも。(目的がデバッグ出力だったなら OKだけど)

      def body
        @tree.body.to_s
      end

    @treeは以前は Hatena::Blockか Hatena::Inlineだった、俺の変更で Hatena::BlockAndorInlineか Hatena::Inlineになった。カスタマイズされた to_sメソッドを持っているのは Hatena::Blockだけ。

  • 空のサブタイトルでエラー。Hatena::Block#initializeでの配慮が足りなかった。

肝心の深すぎる再帰は再現できない。自分自身を子要素に持ってるなんてことはないはずだから convertメソッドが自分自身を呼び出すしかない。その可能性があったのは Hatena::Block#convertのみ。そのときは if @body == selfでチェックして @body(Hatena::Block).convertを回避していたし、今は @bodyに Hatena::Inlineか Hatena::BlockAndorInlineしか入っていないから自分自身を呼ぶことは考えられない。わからん。キャッシュのせいだったら拍子抜けだなあ。<<<以前は @bodyに Hatena::Blockが入っていたんだから、古いデータと新しいコードの組み合わせで無限再帰は十分ありうる話。.parserキャッシュにはクラス名やインスタンス変数も入ってるし。

 とりあえず
  • fix_c37239.patch (623B, c37239の修正)

    サブタイトルの有無の判断が間違って反対になっていた。

    サブタイトルのみのときにエラーになっていた。

  • fix_c37240.patch (955B, c37240の修正)

    順序付き、順序なしリストの階層が勝手に深くなっていた。

    セクションの分割に失敗していた。


 「<p>はなくなったが空行が……」

たぶん HTMLソースレベルの空行なんだと思う。Hatena::BlockAndorInline#convertでインライン要素の後だけは改行を付加しないようにすればなくせるが、<p>の有無と違って(white-space:preとかしない限り)見た目に関与しないのでこだわらない。(<p>の後ろと</p>の前にも改行が挿入される、だとか考え始めるときりがない)

スレ主は hatena_style.rbを使うことにこだわってはいないという。こちらは楽しんでやってるんだけど、いつまでもデバッグに付き合ってもらうわけにもいかないだろう。はてなはウクレレ記法ができてこそのはてなだと思ってるので、それができない hatena_style.rbから乗り換えるのも悪くないと思う。

「ウクレレ記法」で検索したら主犯が見つかった。最初は Hikiに実装したって書いてるよ。(始めて一か月ほどだったとも書かれていて)つくづくプログラミングは何に使うかが大事だと思う。(英語なんかと一緒でツール)


 @2010-04-25

http://coderepos.org/share/ に書かれている通りにメールを送ってみたが音沙汰がない。スパム判定されたか。comitterってそのページに書かれてるので全てだよね。行動力のある人間なら(というか人並みの人でも) Twitterなり IRCなり blogなりでアクションを起こすんだろうが……。(だから手続きが自動化されてなさそうなのが嫌だったんだ。漏れるし遅れるし。それにサービス自体個人の奉仕に依存してる)

気になる。自分のバグも他人のバグも気になる。


 @2010-05-01: c37240のバグは c37332で本人の手によって修正されたみたい。

Hatena::Section#initializeの部分の修正は、既に行頭の *で分割された文字列が与えられるから問題ないとして先のファイル(fix_c37240.patch)に含めてなかったけど、まあ subが gsubになったって減るもんじゃなし。

それだけでなく 実は一行だけ buffer = '' を buffer = lines.shiftに書き換えた。これがないと無限ループに陥るケース(「>>>」という本文。3文字目は他の文字でもいい)があるみたいなので。


2010年04月15日 (木) 「新快速 ○○行き HH:MM △分遅延」結局何時に着くのだろう? 5分後の HH:MMなのか 5+△分後なのか。電光掲示で知りたい(またそれだけのスペースしかない)のは次の電車がいつ来るかなので遅延も織りこみ済みだろうと思いかけたが、すぐに、正確さが売りの日本の電車のこと、あれはいつ着くはずであったのかを示す時刻だろうと考え直した。(その通りだった。それに発着時刻は電車のIDでもあるし(あっち行き/こっち行きだけで済む駅ばかりではないだろう))

最終更新: 2010-05-07T12:01+0900

[tDiary] 非同期ファイルアップロード

設定画面に jQueryが仕込まれたのと、JavaScriptの置き場所が用意されたので、ファイルのアップロードを非同期に行う準備が整ったのではないか。独自のサブミットボタンを編集画面に貼り付けるプラグインが全部非同期になれば、プレビュー画面にアップロードフォームを表示しても(編集中の本文が消えたと)怒られないだろう。

ジャンクだけど Firefox3.6と Internet Explorer8と Google Chrome4.1で動くものをこの日記(最新じゃないので jQuery対応ではない)に仕込んでみた。

  1. アップロードフォームの targetをこっそり作成した iframeにすることで編集画面が遷移するのを防ぐ。
  2. iframe.{onload|onreadystatechange}をつかまえて、レスポンス(新しい編集画面)から目当ての要素(アップロード済みのファイル一覧とか)を取り出す。(iframe.{contentDocument|contentWindow.document}.getElementById("image_file_list"))
  3. replaceChildは問題が起きるかも?と思ったので .innerHTML = .innerHTMLでざっくりページの一部を更新。
  4. ファイル一覧の数が 0個と 1個を行き来するときは画面が痙攣したようになるのでアニメーションにできると良さげ。

これで本文を書きながらプレビューもできるしファイルのアップロードもできる。


クリップボードアクセスのために Flashを使うよりはましだけど、<iframe>に頼らなければいけないというのもわりと屈辱的。<frameset><frame>以上に、これまで存在を認めてこなかったのに。


何となくできないものと思っていたけど <iframe>の中から外のドキュメントにアクセスすることができるみたい。それができたら編集画面が無制限に入れ子になる(編集画面の<iframe>の中の編集画面の<iframe>の中の……)ことを今より簡単に防止できて、スクリプトももうちょっと使いやすく書き換えられる。


 Firefoxが(3.6になっても)テキストエリアのスクロール位置をリセットしてしまう件。

Karetta|[JavaScript] Firefoxでtextareaのカーソル位置に文字列を挿入した後にスクロールが先頭に戻ってしまう問題(karetta.jp)」で紹介されている通りで直った。といってもできるだけ余計なことをしないように条件を付けたが。

var scrollTop = textarea.scrollTop;
/*
  ここで、テキストエリアに文字列を挿入する。
*/
if(0 == textarea.scrollTop && 0 < scrollTop) {
  // スクロール位置がリセットされていたので復元する。
  textarea.scrollTop = scrollTop;
}

ところで、Internet Explorer 8だけはテキストエリアのキャレット位置を保存しようなんてことを考えなかったみたいで、いったんテキストエリアがフォーカスを失うとキャレットが必ず末尾に移動する。スクロール位置がどうこうどころではないわな。


 @2010-05-07

「何となくできないものと思っていたけど <iframe>の中から外のドキュメントにアクセスすること」 < HTML5 sanbbox属性


2010年04月14日 (水) はてブのトップが二週間ぶりに更新された。


2010年04月13日 (火) TouchSmart tx2の後継がでないから X201 Tabletが最有力。でも¥200kもするなら Office with PPTぐらい付いていて欲しい。### ノートパソコンによく付いてる指紋認証機能がうらやましい。なんでも、ログインとかパスワード入力の手間を省けるとか。デスクトップPCだとキーボードに付いてると使いやすいと思うんだけど。### あった。Microsoftや IBM、Lenovoから、早くは 5年以上前に発売されてた。ただ、「Majestouchには付いていない」と言わなければいけないのがキーボードとセットにしたことに伴う難しさ。


2010年04月11日 (日)

最終更新: 2010-04-13T09:43+0900

[Vista] 続・やっぱりありました。Vistaで Aero Snap

二つ目は AquaSnap。 Aero Snapや Aero Shakeを模倣するだけでなく拡張もし、カスタマイズもできる。スキン機能やフェードインしてくるアバウトダイアログに象徴されるように見た目にもこだわってる。でも Windowsキーと矢印キーを組み合わせたグローバルホットキーには対応してなさそう。下フレームのダブルクリックによる高さの最大化とグローバルホットキーの二つが加わるとありがたさが三倍に増すんだけど。


2010年04月10日 (土) 短縮URLを使うIMスパムでワームに感染 - ITmedia News」この間抜けな URL短縮サービスはなんというドメインを使っていたんでしょ。スパム指定するのに必要なんだけど。


2010年04月08日 (木) [リーンベル] サリヴァンとょぅι゙ょも倒して一周目(NORMAL)クリア。(ミニスカサンタ衣装がどうしても手に入らないのが納得いかない。トナカイばっかりの三人組て……)