本を読む

読書やコンピュータなどに関するメモ

「仮面ライダーSPIRITS 超絶黙示録」

 マンガ「仮面ライダーSPIRITS」の解説本。なのだけど、これが、昭和ライダーの全エピソード・全シーンを覚えてないと書けないような、超こだわりの本なのだ。ライスピのここのシーンはあのエピソードのあのシーンへのオマージュ、とか、これは企画段階のときのあの設定にもとづいている、とか、マニアックな検証が続いている。おかげで、マンガ単行本のサイズなのに、1冊読むのに何日も。

 という一方で、データ偏重ではなくて、元番組への愛に満ちあふれてもいる。本書の100問インタビューでも、村枝アニキがこんな泣かせることを言っている。

(一番大切だと思うことは)やはり映像に対する最大限のリスペクトをもって描くことでしょうね。「時間と予算も限られていたんだろうけど、たぶん当時のスタッフは、こういうビジュアルを目指していたんだろうな」と、ポジティブに捉えることが第一だと思います。(略)とにかく僕は、斜に構えて、映像を否定するようなアレンジは嫌いなんです。

 それに応えて、解説でも、マスクの空気穴のような部分までいかにライスピでデザインとして昇華しているかなどを検証してくれている。

 というわけで、ライスピファン必見。

 そのほか、マンガ家さんやクリエーターさんからのメッセージや、ライスピの元になったライダーの「落書き」なども見所。ちなみに、用語辞典で「三浦市」の項にくろば亭の名前が突然出てくるけど、解説者さんのお気に入りなのかな。

「Software Design」2010年2月号

 今号に掲載されたインタビューでは、米国と比較してこのような発言がある。

  • オープンソースの利点を、商用製品と比較した支払いの面から捉える
  • ソフトウェア自体にあまり価値が認められず、SIのほうが重視されがち
  • 細分化がお家芸で、コミュニティを設立するのが得意

 ちなみにこれは、Apache Software Foundation等のGianugo Rabellino氏(イタリア)がヨーロッパの事情について語ったもの。もちろん、オープンソースへの包容力が米国より強く、すべてがベンダーにコントロールされる商業ソフトに不満を持つ人が多い、ということも言っているので誤解なきよう。あと、カプチーノは午前11時以降に飲むイタリア人はいない、とか。

 そのほか、Tokyo Cabinet・kumofs・ROMA・Flareの作者がそれぞれソフトの特徴を解説する特集「Key Value Store講座」、松信さんがMySQLの特性や性能を引き出すポイントをわかりやすく解説する短期連載「MySQL完全理解への道」、TOPPERS/JSPの概念や移植について解説する「リアルタイムOSと普通のOSは何が違う?」などいろいろ。

JavaScriptでAmazon PAAPI

 といっても、「Product Advertising API にJavaScriptで対応する」の改造版です。話題としてはいまさら感がありますが。

 呼び出し方。

url = make_signed_url(URLのhost, URLのpath, URLのquery, シークレットキー)

 元バージョンと同じく、jssha256が必要。IE対応。とりあえず実用的な速度で動いてます。

 最大の問題は、Amazonの規約によりシークレットキーを隠す必要があるので、インターネット上のWebでは使えないこと。

秀丸8で文字数を数えるマクロ

 秀丸8(執筆時点でβ)では、文字の内部表現が変わったかわりに、マクロにcharcount()関数が追加された。こんな感じで呼び出せる。

 上2/3の定数とコメントは、ヘルプからのコピペ。あとは、それをcharcount()に渡してるだけ。

String#[]のサブクラスでの挙動

 Rubyで。

$ irb
irb(main):001:0> class Foo < String; end
=> nil
irb(main):002:0> s = Foo.new('abc')
=> "abc"
irb(main):003:0> s.class
=> Foo
irb(main):004:0> s[0..1].class
=> Foo

 へー。

1つの条件で複数の変数を束縛する方法を考える

 Schemeコードバトンでいじった箇所のうち、気になっていた部分について、ひげぽんさんからチェックをいただきました。

swap! って何だと思ったらマクロだった。こういう使い方は自分はしないから面白いなー。

 はい、苦しまぎれの使いかたです(笑)。バトンを渡したあともちょこっと考えていたので、問題(と私が思っている)点を、素人なりにまとめてみます。もっとうまいやりかたがありそうなので、ハッカーさんアドバイスpls。

書いたコードと考えたこと

 もともとのプログラムは、英単語を出題して日本語の意味を考えさせるものです。私のところに来たときには、リスト構造のデータから問題と回答をとりだすアクセッサ手続きが、それぞれ整備されていました。

(word-spec-word spec)
(word-spec-meaning spec)

 で、私は、逆に日本語を出題して英単語を考えさせるオプションを追加してみました。まず考えたのが、アクセスするときに条件判断する方法です。

(if ($$ reverse) (word-spec-meaning spec) (word-spec-word spec))
(if ($$ reverse) (word-spec-word spec) (word-spec-meaning spec))

 あるいは。

((if ($$ reverse) word-spec-meaning word-spec-word) spec)
((if ($$ reverse) word-spec-word word-spec-meaning) spec)

 これで駄目なわけじゃないのですが、同じ条件判断を2箇所でやっていて、しかも両者が排他的な関係にあるのが、自分には気持ち悪く感じました。…手続き脳ですいません。

 となると1つの条件でset!するかな、と考えたわけです。

(let (question answer)
  (if ($$ reverse)
      (begin
        (set! question word-spec-meaning)
        (set! answer word-spec-word) )
      (begin
        (set! question word-spec-word)
        (set! answer word-spec-meaning) ))
   … )

 さすがにこれは逆に、Scheme的に気持ち悪い。というわけで、swap!マクロを定義して、気持ち悪さを軽減してみました。

(let ((question word-spec-word)
      (answer word-spec-meaning) )
  (when ($$ reverse)
      (swap! question answer) )
  … )

 let直下にswap!を起くことで状態臭を減らしたつもりではありますが、いずれにしてもSchemeっぽくないなあと。これがバトンを回したバージョンです。

多値で?

 提出した後でもちょっと考えてました。で、問題をこのエントリーのタイトルのように「1つの条件で複数の変数を束縛する」と自然言語で考えてみたところ、「多値」という方法を思いつきました。

(import (srfi :8))
(receive (question answer)
         (if ($$ reverse)
             (values word-spec-meaning word-spec-word)
             (values word-spec-word word-spec-meaning) )
         … )

 これがキレイな方法かどうかはともかく、問題に行き詰まったら異なる抽象形式に変えて考えてみる(プログラミング言語→自然言語とか)のも一つの手かな、と。

「会社人生で必要な知恵はすべてマグロ船で学んだ」

会社人生で必要な知恵はすべてマグロ船で学んだ (マイコミ新書)
齊藤 正明
毎日コミュニケーションズ
売り上げランキング: 4399

 理系研究者がある日突然、会社の命令でマグロ船に乗せられた、という変わった体験を綴った本。ヘンテコな書名に釣られて読んだら、中身も面白かった。日本タイトルだけ大賞の審査員賞も獲得してるし。

 オビには「蟹工船」の名前出てるけど、どちらかというと「どくとるマンボウ航海記」とかのユーモア路線。本書の意図は、マグロ船での体験を元に人生訓を語る自己啓発書のはずだけど、そのへんにあまり興味のない自分とにも、豪快な体験談として楽しめた。30分ぐらいで軽く読めるし。

 たとえばこんな感じ。

私……「ところで、病気やケガをしたらどうするんですか?」
船長…「バファリン飲んじょけ」
私……「……」

私……「誰か、治療できる人はいるんですか?」

船長…「おるどー」

「治療できる漁師がいる」と聞いて、一瞬ホッとしましたが、船長の視線の先にいたのは、浅黒い日焼けした顔に、ボサボサ頭のコック長でした。

 いちおう、本書で出てくるマグロ船トリビアをメモってみる。ホラも混じってるかもしれないけど。

  • マグロ船には船長と親方とがいる
  • 風呂は船尾の甲板にあり、安全のため扉が閉まらないようになっている
  • マグロを水揚げしたあと暴れさせると、体温が50度にもなって身が焼ける
  • 1日17時間労働
  • 寝室は、長さ180cm、幅60cmで、高さも80cmしかない。しかもエンジン室の隣
  • メバチマグロで1匹約5万円
  • マグロの心臓を生で食べる
  • 今のマグロ船員は月給30万円ぐらい
  • 適水:漁場を変えること
  • マグロなどのサバ類は、小離鰭という小さなヒレが尾ビレのあたりに並んでいる
  • エイが釣れると、危険なので船の外壁にぶつけて取る
  • すれちがう船と物資交換

 ちなみに、本書では詳しく書かれてないけど、著者のインタビューによるとマグロ船に乗ったのは「ブラック会社」な状況だったそうな。

Schemeコードバトンに参加しました

 Scheme素人の私が、Schemeコードバトンに参加しました。lequeさんから渡されたバトンです。

 参加表明してからmoshをビルドして勉強しました。最初、プログラムを動かして、"heap:"という出題が出たときには、すわmoshのエラーかと勘違いしたぐらいですww

 変更点は簡単なものですが、アプリケーションプログラムを書いてみてわかることとかあって、とても楽しませていだだきました。

 そうそう、バトンはkazu634さんに受け取っていただきました。Enjoy!

やったこと

  • 逆引き問題の-rオプションを追加しました
    • 問題が日本語、答えが英語になります
  • 出題にタイムアウトを付けました
    • デフォルトで10秒、-tオプションで変更できます
  • ほか細かい変更
    • open-shared-libraryするライブラリを正規表現から検索
    • with-cursesを関数からマクロに
    • usageに出るURLをトップレベルの変数に

 …やっぱりシェルスクリプトの人っぽいですね、ネタどりが。

「仕事するのにオフィスはいらない」

仕事するのにオフィスはいらない (光文社新書)
佐々木 俊尚
光文社
売り上げランキング: 565

 モバイルデバイスやインターネット上のツールを紹介している本かと誤解していて読んでなかったのけど、実はフリーランス論の本で、参考になった。

 特に、フリーランスとして仕事を続けるためのアテンションコントロール(集中力を維持する方法)あたり。まとめちゃうとあまり面白くないけど、とりあえずメモ。

  • 集中力のあるときに「掘り下げ」「連携」を、集中してないときに「取得」「整理」を、と分ける
    • フローとストック
    • プルとプッシュ
  • 白雲自去来:気ばらしをとりいれつつ、それに没頭しない
    • リズム
  • ペンシャープナー

「日経Linux」2010年2月号

 Chrome OS特集のPart 2で、中身の解説をしていて面白かった。カーネルのパッチやブートプロセス、ログイン処理など。

 あと、Go言語をMatzさんが解説していて、すごくノリノリ。

「WEB+DB PRESS vol.54」

WEB+DB PRESS Vol.54
WEB+DB PRESS Vol.54
posted with amazlet at 10.01.11
WEB+DB PRESS編集部
技術評論社
売り上げランキング: 825

 参考になったり面白かったりする記事が目白押しな中でも、「Google Wave解剖」が特によかった。Waveを、サービスではなくプロトコルに焦点を当ててわかりやすく解説している。

PerlのYAML 0.71のLoadFile()はUTF-8フラグ付きの文字列を返す

 メモ。

version: 0.71
date:    Sun Jan 3 12:25:00 AEST 2010
changes:
- Set file encoding to UTF-8 in LoadFile/DumpFile (RT#25434) by Olivier Mengué

 というわけで、YAML::LoadFile()したデータをEncode::decode()しているスクリプトはエラーになったりする。

Cannot decode string with wide characters at /usr/lib/perl/5.10/Encode.pm line 174.

Chromium OSのファイル構成を見るには

 いまさらだけど、メモ。

 Chromium OSは、ざっくり以下の工程でビルドされる。

  • debootstrapでchroot環境を作って、Chromium OSにインストールするための.debを作りまくる
  • そして、別のchroot環境を作って.debをインストールしまくり、そのディレクトリを元にイメージを作る

 そのため、後から後者のディレクトリを覗くと、Chromium OSのディレクトリやファイルの構成がほぼそのまま見られる。

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad