本を読む

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

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

仮想化技術フォーラムに参加した

 1月30日に、日本仮想化技術株式会社が主催する仮想化技術フォーラムに参加してきた。有料セミナーだったけど、仮想化の実地の話が聞けて、行ってよかった。

 日本仮想化技術の宮原さんや、HPの赤井さん、MSの高添さんが異口同音で言っていたのが「仮想化はゴールではなくて、リソースプールを実現するための手段」ということ。それをベースに、宮原さんはキャパシティプランニングの新しい考えかたを、赤井さんや高添さんは管理ツールとその先にあるクラウドコンピューティングを、それぞれ詳しく解説していた。

 あと、非技術者の自分にとってへぇだったのが、ライブマイグレーションは万能じゃないし、失敗することもあるという話。重要なのは、ライブマイグレーションできるぐらいのサーバー構成にしておくことであって、その構成でコールドマイグレーション(再起動)で十分ならそれでいい、と。

 ちなみに、バックアップツールAmandaの話もハマりどころも含めて具体的で面白かったのだけど、聞きながら頭の中でBOSTONの「Amanda」がリピートしていた…
スポンサーサイト

「キリン」36巻



 WONDER NET WANDER編スタート。今回は、ハチャメチャな親子3代を中心にしたドタバタコメディっぽい。主人公のキリンことリンが乗るバイクはMACH 750(H2)。

Tech DaysでWindows Azureの話を聞いてきた

 マイクロソフトの技術者向けイベント「Microsoft Tech Days」に参加し、Windows Azureの話を聞いてきました。

 Windows Azureというのは、ざっくりいうと、Google App EngineとかAmazon EC2/S3のようなPaaSサービスです。Windows Liveの認証とかの機能をSaaSで使えるようです。現在、テクニカルプレビューで公開中。

 以下、キーノートと関連セッション1本の聴講メモ。

キーノート「マイクロソフトのクラウドコンピューティング戦略」

  • 大場氏
  • 今回のTech Daysは昨年末のPDCをベースに日本でアップデート
    • MSのクラウドへの動き
    • VB1.0でWindowsアプリを使ったときの衝撃の100倍
  • ITはクラウドに向かって流れていく
    • 1日にしてクラウドに変わるわけではない
    • 既存のテクノロジーとの共存
    • 過去からの継続性
  • クラウドは魅力的な選択肢だが万能ではない
    • 基幹系
    • SIの業務形態、スキル
    • 携帯などさまざまなデバイスへの対応
  • ソフトウェア+サービス
    • 既存のIT資産やスキル、ツールなどを活用
    • 両方でビジネス展開
    • .NETが主役
  • クラウドで作るだけではお客にリーチできない
    • 使いやすいソリューション
    • ブラウザだけでは差別化にならない
  • バックエンドのクラウドプラットフォーム
  • さまざまなデバイスでのユーザーエクスペリエンス
  • 次世代の統合開発環境
  • 従来のホスティング+アプリケーション
    • 制限がある
    • 拡張、俊敏性
  • クラウドへ
    • インフラとアプリの間に、開発者向けのビルディングブロックサービスをいろいろ提供していく
    • Windows Azure(OS)+ Azure Services Platform(ビルディングブロックサービス)
  • マイクロソフトは大規模データセンターのプロフェッショナル
    • 毎月数十億トランザクション
  • 大規模データセンター向けクラウドOS
    • フロントエンドとバックエンドを分離
      • Webロールとワーカーロール
    • キューを介した疎結合
  • 中原氏
    • Hello Worldアプリの開発のデモ
  • Visual Studio
    • Webロール
    • 従来のASP.NETとほぼ同じ
    • DBアクセスは若干ちがう
  • テスト環境
    • Development Storageが常駐
    • Development Fabric(ローカルのWebサーバー)
      • インスタンス数も可変
  • VSからAzureのポータルサービスを表示
    • デプロイ
      • Staging(開発環境)とProduction(公開環境)
      • VSで作った「パッケージ」をアップロード
      • サーバーのインスタンス数などを記述したファイル
  • http://アカウント名.cloudapp.net/
  • JTB北上氏
    • eコマース専門のi.JTB社を設立
    • JTB情報システム
      • 基幹システム
      • ホストコンピュータからの決別(~2009.3)
  • toripotoazure.cloudapp.net
    • 旅のアルバムをユーザーが作れる
    • Silverlight
    • 写真の編集や加工
    • データはAzureのSQL Data Servicesに
    • Live ID認証
    • 9月まで公開
  • 比較的簡単にAzureに展開できた
  • 大容量のデータをしっかり管理してほしい
  • 大場氏
    • 基幹系で使われるサービス
      • .NET Services
      • SQL Services
  • ユージニオ氏
    • ビルディングブロックサービスを紹介
      • ライブラリのようなもの
  • 相互運用性
    • Java、Ruby…
    • SDK
  • いままで持っている知識やスキルを活用
    • C#やVB、VSなどをそのまま使える
  • SQL Data Services(SDS)
    • データサービス層
    • SQL Server基盤
  • データモデルとAPI
    • Authority
      • 容器のようなもの
    • Container
      • Authotiryの中に複数
    • Enteity
      • データの実体
      • 固定のスキーマではない(emasaka感想:key-value?)
  • インターネットのプロトコルに準拠
  • .NET Services
    • SDSの兄弟
  • Access Control sevice
    • ホスティングされたSDS
    • セキュアトークンなどの認証アーキテクチャ
  • Service Bus
    • 汎用のアプリケーションバス
    • インターネット上のサビスバス
    • 異なったネットワーク、異なったプロトコル
  • Workflow Services
    • Workflow Foundationのホスティング
  • issue trackerを作る例
    • セキュリティポリシー
    • アクセスコントロール
    • トラスト関係のトランスレーター
      • 既存のADなど
    • フェデレーション
    • Access Control Service
  • デモ
    • Access Controlを構成
    • トランスレーションのルール
    • ADでユーザーをグループに追加してissue trackerにアクセスできるようになる例
  • Access Controlは複数のシナリオをサポート
    • アクティブ、パッシブ、フェデレーションなど
  • プロセスインテグレーション
    • issue trackerへの変更が会社のメインフレームに反映される例
    • Service Bus
    • 複雑なコミュニケーションのパターンをサポート
    • バーチャルなエンドポイント
    • issueが作成されたというイベントからメッセージ
    • ServiceBusからメインフレームに
  • 大場氏
    • LiveServices
      • Windows LiveのサービスをAzureのフレームワークの中で提供
      • B2B2Cなど
  • リチャーズ氏
    • LiveServicesとは
      • コンシューマアプリケーション
      • さまざまなデバイスに対応
  • 課題
    • さまざまなデバイスを接続
    • さまざまなデバイスで使えるアプリケーション
    • データの同期
    • データやサービスを共有し、ほしいときに使えるようにする
  • BBC
    • PC、携帯、Webをまたがったリッチなアプリケーション
  • サードパーティーにLiveインフラを開示
  • LiveMesh
    • データ同期のソリューション
  • パフォーマンス、可用性
  • ユーザーのプライバシー、データのセキュリティ
  • ローガン氏
    • BBのアプリ
    • PDC用デモ
    • BBC iPlayerをLive Serviceでより使いやすく
  • LiveMeshの機能も
    • 会社PC、携帯、自分のPC
    • コンタクトリスト上の友人と共有
  • BBCはコンテンツに集中
  • 動画コンテンツのシーンにレイティング
    • 友人にpushで送信
    • 自分の視聴履歴
    • 一時停止した続きをPDAで見る、なども
  • リチャーズ氏
    • マルチなデバイス
    • ソーシャルグラフ(コンタクトリスト)
    • アプリケーション可搬性
    • ユーザーが必要なときに、必要なデバイスで、必要なものを
  • LiveServiceが提供するもの
    • コミュニケーション
    • 地理サービス
    • デバイス情報
    • アプリケーション
  • Live Framework
    • 開発者がLiveにアクセスできるしくみ
    • さまざまなプログラム、さまざまな言語
  • クラウド、ローカルなどの柔軟性
  • いますぐできること
    • dev.live.comへアクセス
    • Measenger / Alerts / Virtual Earthなどは正式利用可能
  • 大場氏
    • 実績のあるテクノロジーがベース
  • 東証コンピュータシステムの事例
    • 莫大な取引ログ
    • クラウド上の大規模オンラインストレージ
    • 技術評価中
  • GrapeCityの事例
    • ASPで学校向け業務管理ソフト
    • 技術評価中
  • ロードマップ
    • 2008.11 CTP
    • 2009年中旬 CTPアップデート
    • 1~1年半後 商用展開したい
  • azure.com
    • 開発アカウント作成
    • SDKダウンロード

Windows Azureプログラミング(開田文雄)

  • クラウドOS
  • 管理の自動化
    • 動作がおかしければすぐリセット、というわけにはいかない
  • スケーラブル
  • 開発環境
  • Windows Azure
  • 自動管理
    • ファブリックコントローラ
    • ハードウェアのリソースを管理
    • ソフト側からは抽象化されている
      • 「インスタンスを増やす」といったリクエスト
  • コンピュータとストレージ
  • 仮想化 Hyper-V
    • デプロイは手動
    • インスタンスを追加
      • Hyper-Vのイメージベースで複製
    • Azure内部でやるので、利用側はHyper-Vを意識しない
  • ストレージ
    • サービスベースでストレージ機能を提供
  • VS2008、.NET Framework 3.0
  • .NET以外の環境からも呼べる
  • Azure Services Platform
    • .NET Services、SQL Services、LiveServices
    • 特にSQL Sevices重要
  • デモ
    • Hello Azure
    • VS
    • プロジェクト作成
      • Cloud Serviceのプロジェクト
    • HTMLでもできる
    • ここではSilverlight追加
    • Expression BlendでSliverlightアニメーション作成
  • いままでのアプリと違うところ:デプロイ
    • 発行ボタン
      • Azureサイトが表示
    • パッケージはZIPファイル
    • Deployボタンでデプロイ
  • CTP
    • Vista(IIS7が必要なためXP不可)
    • Azure.com登録
      • いますごいリクエストがあり時間がかかっている
    • クラウドが必要なければデバッグ環境で実行
  • シンプルなプログラミングで拡張性
  • スケーラビリティはAzureで担保
  • 開発者はサービスに注力
  • Webロール
    • インターネットからのリクエストを受けて処理
  • Workerロール
    • Startメソッド内で無限ループ
    • インターネットからのリクエストを受けない(エンドポイントを持たない)
    • キューでのリクエスト
    • インターネット経由でキューを投げることもできる
  • 両者のバックエンドにストレージサービス
  • インスタンス1つにVM1つ
  • ストレージ
    • データ領域ではなくサービスを提供
    • フォルトトレランスや不可分散はストレージ側で考える
  • ブロブ
    • 単純な構造
    • ファイルシステムのファイルのようなもの
    • 最大50GB
  • テーブル
    • リレーショナルのない構造化ストレージ
  • キュー
    • 最大8KB
    • 送信受信
  • 従来のWebとなにが違うか
  • ストレージアクセスがいちばん違う
    • RESTのインターフェイス
    • 多くのアプリケーションが修正が必要
  • Cloud Serviceプロジェクト
    • XML
      • Service Definition
        • ロールの種類
        • エンドポイント
      • Service Configuration
        • あとで変えられるような情報
        • インスタンス数
  • デバッグ
    • シミュレーター環境
      • デベロップメントファブリック
      • 各インスタンスのコンソールが見える
    • デベロップメントストレージ
      • ブロブは最大2GB
  • デバッグ環境から本番環境にデプロイするときに、ストレージの参照情報を変更する必要がある
  • デプロイされると、Allocated状態
  • Runボタンで実行される
  • 既存のWebアプリケーションのプロジェクトを使えるか
    • マッピングができない
    • Role Typeなど
    • プロジェクトファイルを手動で追加という裏技
  • 本番環境のログ
    • Configureボタンから参照
    • 出力先はストレージサービス上
    • 中身を見るツールはないので、ふつうにブロブとして
  • ローカルストレージ
    • インスタンスごとのストレージ
    • キャッシュ目的
  • セキュリティ
    • 認証はアクセスコントロールサービスで
      • Live IDやOpen IDなど
  • コードアクセスセキュリティ
    • ASP.netのMedium相当
      • 一部異なる
        • アンマネージコード呼び出し不可
        • 外部Web接続可
  • ストレージプログラミング  
    • サービスなので認証が必要
      • アカウント名
        • Azure登録時に取得
      • 256bitシークレットキー
        • RESTのヘッダーに入れる
        • すべてのリクエスト
    • パブリックアクセスに設定するとヘッダー情報不要
  • ブロブの構造
    • アカウント
    • の中に複数のコンテナ
    • の中に複数のブロブ
    • の中に複数のブロック
  • ブロブアクセスのデモ
    • 認証のヘルパークラスがSDKに入っている
    • テーブルでADO.NET Data Servicesを利用
  • ストレージのプロジェクトを参照
    • データバインド
    • StorageAccountInfo
    • ストレージを取得
    • ストレージからコンテナを取得
    • ストレージのアカウント情報をService Definitionに記述
      • デバッグ環境では共通
    • テストデータの登録
      • PowerShell用のライブラリがSDKで用意されている
      • copy-cd
    • データにメタデータを設定できる
      • 8KBまで
      • プロパティ内
    • CreateBlob
  • キュー
    • queue.CreateQueu()
    • queue.PutMessage()
    • queue.GetMessage()
    • queue.DeleteMessage()
    • GetMessageするとメッセージはinvisibleの状態になる
    • GetMessage()の引き数でinvisibleのタイムアウト時間を指定できる
  • ログ
    • ブロブ
    • PowerShellでアクセスできる
      • ローカルにコピーなど
  • セッション、メンバーシップ
    • インプロセス、SQL Serverは使用不可
      • インスタンスが分かれるので
  • AspProviders
    • Azureストレージを使用
  • 今後
    • ネイティブコード対応、動的スケーリング(今年予定)
    • Windows Server VMのサポート(それ以降の計画)

「Q.E.D.-証明終了-ザ・トリック・ファイル」

Q.E.D.-証明終了-ザ・トリック・ファイル (KCデラックス)
加藤 元浩 月刊少年マガジン編集部
講談社

 人気推理マンガ「Q.E.D.」のく副読本が、「Q.E.D.トリックノート」に続いて発売された。ちょうどドラマ化もされたし(いや、TVをあまり見ないので、見てないのだけど)。

 メインは20~32巻の紹介。作者によるひとこと解説もついてるのがうれしい。これを読んだら、たまらず20巻以降を読み返してしまった。ただし、ネタバレもあるので、本編を先に読むべし。

 そのほか、関連書籍紹介や数学ネタ解説、数学者インタビュー、1巻からの全話のデータファイル、登場人物の紹介、ドラマの関係者のインタビューなども掲載されて充実。さらに、「もっともおバカな事件!?」と銘打たれた新作「ドラマ殺人事件」も収録されていて、なんというか(笑)

 そうそう、カバーの絵のタッチがいつもとちょっと違うのは、ドラマを意識したものなんだろうか。

 作者の発言で、へぇと思った言葉は、ねたばれの可能性も考えて「続きを読む」で。

続きを読む »

「さすが! と言わせる Plagger徹底攻略術」

さすが!と言わせる Plagger徹底攻略術
蒲生 睦男
シーアンドアール研究所
売り上げランキング: 13107


 フィード加工ツールPlaggerをタイトルにした初の書籍。

 切り口は、ひたすらハウツー本。難しい解説は抜きにして、目的ごとにいろいろなレシピを紹介する形式になっている。ActivePerlのインストール方法から始まっているように、おそらくPerlプログラミング未経験者を想定読者としているのだろうと思う。いわば、「できるPlagger」とでもいうような感じのつくり(←あくまでたとえです)。

 基本的にPerlプログラミングの説明はなしで、「料理のレシピをメール送信」とか「YouTubeの動画をまとめてダウンロード」など、おそらく著者が自分でやりたかったのだろうレシピをいろいろ紹介している。実際にやってハマったらしい部分のフォローがあったりして、けっこうていねいに作ってると思う。最後のほうではオリジナルプラグインも掲載。

 私はPlaggerユーザーなので逆に本書の想定読者がわからないところがあるのだけど、ともあれこのような本を出した試みには拍手したい。

 ちなみに、本書のメインの想定環境はWindowsで、Plaggerのインストールはppm.tcool.orgリポジトリ+TortoiseSVN。巻末付録では、Ubuntuでのインストール方法として、debian.hansode.orgリポジトリも紹介されている。

「ほんわか!」



 「本屋のほんね」で紹介されていたのを見て読んで、わりと面白かった。

 本にまつわる些細な疑問に北尾トロが突撃するレポート。「ダヴィンチ」誌の長寿連載の傑作選だそうな(すみません、読んでません)。紹介にもある官能小説のタイトルづけのほか、フリーマーケットで古本を売ってみるとか、地方で古本屋に古本を売ってみるとか、チリ紙交換になってみるとかのエピソードが並んでいる。チリ紙交換→古本屋のルートの話は、ちょっとしたへぇだった。

Python Code Reading 07に参加

 時間があったので、Python Code Reading 07というPythonの勉強会に初めて参加してきました。

 お題はPython 3.0。新しいio.pyや変更されたdecimal.pyのソースを読みながら、Python 3.0っぽい書き方を学びました。事前にソースをダウンロードしておいたので、該当部分を手元で見れてよかった。

 あと、懇親会のときに雑談していたのが、2.5→2.6のほうが2.6→3.0より変更が大きいように見えるということ。3.0では非互換な変更があるのが大きいはずなんだけど、まだよくわからないな、と。

 以下、たぶん自分にしかわからないメモ。


bytearray
Mutable
バッファ型

ADIF
format()
{}の中に指定子
{}自身は{{}}
format()は__format__を呼ぶ

with
Lisp系のwith-ほげほげ関数とか、Rubyのopenのブロック引数みたいな感じ?
オブジェクトのクラスで__enter__と__exit__をメソッド定義

アノテーション
->
メソッドの返す型を示す
実はパースされるだけで使われていない
単なるコメント(doctestみたいなもの)

Pythonでは__で始まる変数はmangleされる
そのままの名前で参照できない

__slots__
クラスのスロットを指定
ほかに作れなくなる
メモリを節約

正規表現
(?P<name>)
名前つきキャプチャ

オルタナティブブログで左端が切れるのをユーザースタイルシートでしのぐ

の別解。

 Firefoxのスタイルシートでは、ドメインの指定とかできるようですね。というわけで、ユーザースタイルシートで。

@-moz-document domain(blogs.itmedia.co.jp) {
  #comment-text { width: 200px; height: 60px; }
}

 こちらのほうが速そうだし、なによりコピペが楽(←重要)。

「赤めだか」

赤めだか
赤めだか
posted with amazlet at 09.01.22
立川 談春
扶桑社
売り上げランキング: 182


 面白いという評判をあちこちで目にして、ようやく読んでみたら、想像をはるかに超えて面白かった。

 ただ、どこがどう面白かったかは、自分には説明できそうにない。1つあげると、説明や描写をけっこうはしょって本題に入るのに、すっとその場面に引きずりこまれるのが、さすが噺家さんだと思った。いや、落語はよく知らないけど。

「C.M.B.」10巻



 博物学+ミステリーのマンガの最新作。いずれの短編もよかったけど、中でもやっぱり「その差6千万年」がよかった。

 「その差6千万年」は、ありえざる化石の成立事情を推理する話。余詰めなしとはいえないけど、推理と、登場人物それぞれのストーリーが絡み合いつつ発展しているのがよかった。ビジュアル的には、森羅君がスコップで崖を滑降するシーンもいい感じ。

 「釘」は、ミステリー的な状況を、博物学的に解いてみせる作品。

 「地球最後の夏休み」は、「C.M.B.」や「Q.E.D.」にときどきある青春ミステリー。青春要素がそのままミステリーになっているというのがよかった。

 「ヒドラリウス」は、あのレギュラーキャラを相手にしたお宝ネタ。ビジュアル伏線とかが効いている。

「Q.E.D.」32巻

 ハイアベレージを維持している推理マンガのシリーズとはいえ、今回もすごくよかった。

 「マジック&マジック」は、手品師 vs. 塔馬君の頭脳対決。ぎりぎり読めそうで読めない結末と、ネタバレは避けるとして「私がどうしてもやりたかった…タネを明かしても喜ばれるマジックです」って締めが効いている。

 「レッド・ファイル」は、一転して金融業界ネタ。金融工学のネタを中心にやさしく解説しつつ、ストーリーは行動経済学的な非合理な人間の心を扱っている。

はぁ~伝わらないな~~
数式で市場の未来がわかるわけじゃないんだけど

USB起動Fedora 10でfbterm

 Linuxのコンソール画面で日本語を表示するには、コンソールをフレームバッファコンソールにしたうえで、それ用のソフトが必要です。そのソフトとして、ここ数ヶ月はfbtermというのが流行ってるようなので、USBブート環境作りとあわせて試してみました。

 このネタを、小江戸らぐというグループの活動報告会で発表してきたので、資料を載せておきます。基本的にはネタですが、ミニPCあたりでは実用になることもあるんじゃないかと思います。

 まあ、ようするに「動かしてみましたエントリー」ってやつです。

  • USB起動のデスクトップ環境を作ってみよう
    • HDDからデュアルブートするより簡単
    • 最近、USBメモリは安いし
  • USB起動OSならLinux
    • *BSDとかでもいいけど…
    • すくなくともWindowsはUSB起動できない
  • USB起動なので軽い環境がいい
    • そこでXなしのコンソールですよ(え?
  • もちろんデスクトップ環境なので日本語表示・入力対応fbtermでgrep
  • 画像入りのWebもこのとおりfbtermでw3m
  • 日本語コンソール今昔
    • 20世紀:kon
    • 近年:jfbterm
    • 最近:fbterm
  • fbtermの特徴
    • 速い
    • fontconfig連動
    • gpmでマウス対応(らしい)
    • 独自に仮想画面を切り換えられる(らしい。うまくいってない)
  • 去年の秋ごろから話題に
    • 採用ディストロ
    • Debian sid
    • Ubuntu 9.04 alpha
    • Vine Seed Plus
    • Fedora
    • など
  • Webでの情報
  • DebianとUbuntuの情報が多いので、Fedoraでやってみました
  • 製作編
  • Fedora 10をインストール
    • Fedora 10のnetinst CD
    • 普通にインストーラからインストール
    • OSとGRUBのインストール先をUSBに
    • すべてext3で/パーティションに。swapはナシ
    • パッケージは最小インストール
  • 起動関係を設定
    • GRUBのカーネルオプション
      • vga=791を追加
      • rhgbとquietをトル
    • SELinuxを無効に
      • vi /etc/selinux/config
      • disabledに
  • 一般ユーザーを作る
    • ユーザー作成
    • /etc/groupでwheelに追加
    • visudoでwheelをsudo ALLに
  • relatimeでマウント
    • ディスクの書き込み回数を減らす
    • vi /etc/fstab
    • /のオプションにrelatimeを追加
  • NetworkManagerをヤメる
    • コンソールではいまいち使いづらい
    • service NetworkManager stop
    • service network start
    • chkconfig network on
    • yum remove NetworkManager
  • コンソールで日本語ロケールにならない問題(RedHat系)
    • /etc/sysconfig/i18nでja_JP.UTF8になっていても、コンソールだとen_US.UTF8になってしまう
    • /etc/profile.d/lang.shが再設定しているせい
    • とりあえず個人プロファイルで再再設定
      • vi .bash_profile
      • 最後に「. /etc/sysconfig/i18n」(読み込みなおす)
  • reboot
  • サービス止めまくり、パッケージ削りまくり
    • 手当たりしだい削ったので、詳細は割愛
  • 「2つで十分ですよ~」
    • コンソールは6つもいらない(Alt-F1とかで切り変わるアレ)
    • 最近のgettyはupstartで管理(FedoraやUbuntuの場合)
    • 止める
      • initctl stop tty3
      • ~tty6
    • 消す
      • cd /etc/event.d
      • rm tty[3-6]
  • fbtermとuim-fep(コマンドライン用日本語入力)を入れる
    • yum install fbterm uim uim-anthy
  • 半角/全角キーをuimのオンオフに使えるようにする
    • 半角/全角キーをF12として割り当て
      • cd /lib/kbd/keymaps/i386/qwerty
      • mv jp106.map.gz jp106-orig.map.gz
      • zcat jp106-orig.map.gz > jp106.map
      • vi jp106.map
      • keycode 41 = F12
    • ついでにkeycode 29 (Control) と keycode 58 (Caps)を入れ替え
    • gzip jp106.map
    • loadkeys jp106
  • uimの設定
    • - vi ~/.uim
      • (define-key generic-on-key? '("<Control>\\" "F12"))
      • (define-key generic-off-key? '("<Control>\\" "F12"))
  • w3mでインライン画像を表示してみる
    • - yum install w3m w3m-img
      • w3mを起動して文字色と背景色を変更
        • 見た目重視で、コンソールっぽくないよう白バックに黒文字に
  • 画像ビューアーを入れちゃおう
    • フレームバッファコンソール用の画像ビューアー「fbi」
    • yum install fbida
  • 弱点
    • fbtermで日本語フォントの幅の扱いがヘン
      • 特にスペース
    • uim-fepがuimパッケージの中にある
      • X関係のパッケージにいろいろ依存l
      • パッケージを削れない
    • fbiがfbtermから起動できない
      • いちどfbtermを終了してから起動しなくてはならない

オルタナティブブログで左端が切れるのを ぐりもんでしのぐ

 私のFirefox 3環境では、ITmediaのオルタナティブブログを表示すると左端が切れる現象が起きていました。複数環境(いずれもLinuxですが)・複数ブログで再現します。

 #contentsのleft-marginを変更したりしても直らなくて、ぐぐってみたところ、MozillaZineにまさにオルタナティブブログ著者の一人のかたからの質問が載っていました。半年前ですが。

 コメント欄のtextareaのせいだったんですね。とりあえず、Greasemonkeyでtextareaを削ってしのぎます。

// ==UserScript==
// @name           blogs-itmedia
// @namespace      http://emasaka.blog65.fc2.com/
// @description    ITmedia alternative blog
// @include        http://blogs.itmedia.co.jp/*
// ==/UserScript==

(function(){
    var node = document.getElementById("comment-text");
    node.parentNode.removeChild(node);
})();

ジュンク堂トークセッション「新春座談会 このコンピュータ書がすごい2009」

 書店のジュンク堂池袋店で「新春座談会 このコンピュータ書がすごい2009」というトークイベントをやっていました。私は自重しない大人なので、喜んで聴きに行ってきました。いや、自重する必要はないんですが。

 「座談会」とか「売りあげランキング」とかいうのをそっちのけで、司会の高橋征義さんが早口で2時間、好きなコンピュータ書について熱く語りまくっていたのが印象的でした。本がすごく好きなんだなー。

 とりあえず、以下、会場でとったメモ。
 ほか、「高橋会長の『このコンピュータ書がすごい!2009年版』@ジュンク堂書店池袋店を生中継するよ!(→したよ!) - OneRingToFind by 榊祐介」が、内容もビジュアルも充実していて、とてもいいです(2009.1.11追記)。


高橋さん:
私はただのコンピュータ書読み
出版社の方々に声をかけました

技評:稲尾さん
WEB+DB PRESS
雑誌の編集なので書籍は不慣れ

SBCR:杉山さん

BNN:村田さん
「Build in Processing」など

オーム社:もりたさん
「UNIXという考え方」「ハッカーと画家」など

オライリー:矢野さん
営業・マーケティング

高橋さん:
年間1000冊ぐらい出ては消えていく
知られざる本も
好きな本の話をえんえんしたい
(会場に「コンピュータ書を年間10冊以上呼んでる人」と質問。それなりにいる)

ジュンク堂の年間総合ランキング
冊数の順位
月ごとのランキング
出た年とはかぎらない
今日は2008年に出た本
1冊をのぞいて、この店で買えます

1-3月
1月は特になし
2月
「できる初音ミク」はパスw
5位「ふわふわ素材集」BNN
村田さん:
(元MdN)
「きらきら素材集」が最初
イラレのデータなので拡大できる
商用利用もOK(制限はある)

13位「best software writing」
ジョエル・スポルスキー編
高橋さん:
Rubyの紹介記事が海外でのRubyブレイクのきっかけになった
読みものつながりで
順位外だけど「モダン・コンピューティングの歴史」
コンピュータの歴史
社会的なこともふくめて
「Core Memory」
古いコンピュータを美しく撮った写真集
2冊を合わせてよむといいと思う
「キーボード配列QWERTYの謎」
「QWERTY=わざと遅く」神話が嘘であることを解説する本
100以上の歴史的価値のある図版

このあたりから早くも巻きが入る

「プログラミングGauche」
「プログラミングErlang」
「実践Common Lisp」
もりたさん
今年は関数型をサポートした言語の当たり年。
知られざる存在だったErlangがブレイク
2代わたってCommon Lisp

「Googleを支える技術」
この本はみなさんご存じなので

「はじめての初音ミク オフィシャルガイドブック」
「ユリイカ」初音ミク特集
初音ミクというお祭りが2008年にありました
特集は詩でびっくり

「DTM for Super Beginners」
DTMの入門として最適

「CMSとして使うMovable Typeガイドブック」
応用寄り
MTのひとつの到達点
最近はWPに移行する傾向があり、今後どうなるか

4月
「ハイパフォーマンスWebサイト」
Yahoo!の人がパフォーマンスのためのチェックポイントを紹介

「ビューティフルコード」
エッセイ集
技術的な話からそうでもない話まで、著名な人たちが集合
まつもとさんも登場

「受託開発の極意」
「アルファギークに会ってきた」
(「Google」「Seesar 2」も)
WEB+DB PRESSシリーズ
現在6冊
判型など統一性のないシリーズw

「Build in Processing」
文系でプログラミングをしたことがないような人に向けて作った
2008年はJSのProsessingライブラリが出て(2008年おわり)ちょっと話題に

ビジュアルプロセッシングの流れがあった
2種類
・モニタ上でビジュアル
・外の世界で

「シンプリシティの法則」ジョン・マエダ
Prosessingの前のバージョンの開発者
東洋経済新報社
ビジネスマン向けに作られたと思うが、技術者が読んでもいい本

「インタラクションデザインの教科書」
矢野さん
「製品やサービスをリリースする人は、それがハックされることを想定して作るべき」という部分がおもしろかった
もりたさん
顧客の体験の一部として製品を作るという考え

「未来のモノのデザイン」ドナルド・ノーマン
人とシステムを分けるのではなく、まとめて1つのものとして考える
人がシステムにふれるUI、システムが人にふれるUI
訳者あとがき
上野さん、自宅と病院を往復する生活、本書の翻訳中に亡くなる
「UIは命にかかわる」という

「+GAINER」
出版社を変えて再登場
最新の状況にあわせて改訂
日本発
「Making Things Talk」
ArduinoがJigbeeで勝手に通信しあうモデル
両方のラッパーとなるFunnel

「ITの専門知識を素人に教える技」
コーチングではなくティーチング
17の原則
前著「ネーミングの掟と極意」も
はじめての設計をやりぬくための本
いきなり「プログラミングは楽しい仕事です」
CPUも知らなくてはということで、参考文献に「はじめて読む486」w
プログラマーも共感しやすい

「たった3秒のパソコン術」
ひたすらショートカット。技術者はみな知っているような内容
自己啓発っぽい見せ方。一般の人に受け入れやすい
コンピュータ書より何倍も売れているw

6月
「はじめてのRuby」
2008年6月はRubyの月w
 Ruby会議にあわせて

「Railsレシピブック」
もろはしさん:
どんどんバージョンアップするので読むなら今w

「Rails of Ruby on Rails」
表紙の写真とRailsはなにも関係ありませんw
Amazon「黒くて指紋がつきやすい」とかw
見た感じの美しさは圧倒的
技術的にも踏み込んでいる。ヌルいデザイナーには理解できないw

「実践Rails」
深い部分

「Rubyで作る奇妙なプログラミング言語」
Rubyとは直接関係ない
非実用的な言語について次々と語る
作り方は実用的

「絵で見てわかるOS/ストレージ/ネットワーク」
「DBマガジン」連載
めちゃめちゃ売れた
OSには詳しくないDBエンジニアに向けてOSなどを解説する本
「表とインデックスとでストレージを分ける」という定石に対し、今はストレージが進化しているので任せたほうがいいと書いているのが、進歩を感じておもしろかった

「Photoshopデザインラボ -プロに学ぶ、一生枯れない永久不滅テクニック」「Flashデザインラボ -プロに学ぶ、一生枯れない永久不滅テクニック」
こういうのやりたいだろうというねたについて、突っ込んで解説
AS3も正面から

「詳解 Objective-C 2.0」
iPhoneブームに合わせた
当時、NDAのため、iPhoneeのSDKについて触れられない
唯一オビにのみ「iPhone」の言葉

「インターフェイス指向設計」
本がないのでとばします

「花花素材集」
破壊的な勢いで売れた
電車の中で読んでいる女の子や、マクドナルドで読んでいる女の子を見た

「エンジニアのためのWord再入門講座」
いわく「エンジニアはWordをわかっていない」
文書のメンテナンス性をあげるにはWordを使いこなそう、という本

「jQueryで作るAjaxアプリケーション」
いまおぼえるならjQuery

「伝える 伝わる わたしだけのホームページを作る本」
BINDというホームページ作成ソフト(DNSではない)
決まったものを作ることに特化したソフトで人気
矢野りんインタビュー

「SAIですぐできるスーパーテクニック」

Flash・ASの本がいろいろ出た

7月
「集合知プログラミング」
データマイニンンのアルゴリズムを実際のプログラミングで学ぶ本
理論は省いてライブラリを紹介、とか
「パターン認識と機械学習」
いっぽうこちらは単なる数学書w

「エージェントアプローチ人工知能 第2版」
翻訳が出るのに10年ぐらいかかった
ぶあつい
これ1冊で人工知能がわかる

「数学ガール フェルマーの定理」
というより今年はマンガ版「数学ガール」w
マンガ家さんも「わけがわかりません」w

「マンガでわかる線形代数」
正当派のマンガによる数学解説はこちら
線形代数の最初のほうだけだけど

「アルゴリズムデザイン」
厚い

8月
「サーバーインフラを支える技術」
年間ランキング2位
東京・京都・福岡に分かれて執筆
著者校正は技術評論社にカンヅメw

「KORG DS-10公式ガイド」
Amazon限定販売の製品
ソシム
ほかの版元でも企画があったが、上司に却下されたとの噂

「ローポリ スーパーテクニック」
3Dゲーム向け(速度優先)のソフト
本が売れた

「神々のWeb 3.0」
ネタw

「3分間ルーティング基礎講座」
AS間のルーティングを誰にでもわかりやすく
ジャンボジェットの飛ばしかたみたいな本w

「セカンドライフマガジン」
ネタw
2008年といえばセカンドライフw
「極楽に行くには功徳を」的なやたらポジティブな本w

「Future X」
ビジネスマン向けムック
特集「最強のガラパゴス日本」w

「ウェブは菩薩である」
実はメタデータの入門書
「MICROFORMATS」

「アーキテクチャの生態系」
Webの思想と技術のバランスがとれている

「Webプロジェクトマネジメント標準」
PMBOK
Webでは唯一

9月
「たのしいCocoaプログラミング」
iPhone

「コーディングの掟」
人の欠点をあげつらうのはもうやめようと思う
Javaは難しいなぁ

「Eric Sink on the Business of Software」
ジョエルと違って皮肉が少ないので、ジョエルが苦手な人でもOK
ISVをやっている人に参考になる本
個人でプロダクトを出していく人にも

「Trac入門」
突然マンガw
Tracを使ってみたい人は1章を読めばわかる

「ひなた先生が教えるデバッグが256倍速くなるテクニック」
IDEを使ったデバッグテクニック
bisectのアプローチなど
担当者いわく:ブログで「カバーがはずかしい」という声があるが、カバーをはずすともっとはずかしいw

「Unix/Linuxプログラミング理論と実践」
ふつプロとかぶっているが、より無難な感じ

「ジェネレーティブプログラミング」
高橋:
扱いがむずかしい
いろいろな考え方をまとめるためにジェネレーティブプログラミングという言葉を持ち出した?
arton:
プログラミングは受託開発に向かっていく。特に受託開発。そこで今なにが起こっているかを集めた
ふつうのプログラマより、将来のソフトのありかた(創発的じゃなくてエンタープライズ)

「オブジェクト指向入門 2版 下」
言語の名前がぜんぜん出てこない
全36章のあとのエピローグで登場
600pぐらい

10月
「PHP携帯サイトデベロッパーズバイブル」
絵文字がすごい
1/3ぐらい

「Quartz Composer Book」
世界でこれだけ
本文の前に、ポエムのようなリード
 内容が開発するプロダクトに合っている

「ゲームプログラマになる前に覚えておきたい技術」
セガの人
ぶあつい本
2Dと3Dそれぞれ

「VMware徹底入門」
仮想化がフォーカス
VMware株式会社著
「仮想化技術Xen」
内部動作についてもつっこんで書いてある

「パスワード解析基礎と実践」
この本がランキングに入るとはすごいw
さまざまなパスワード認証とその弱点を解説

「Effective Java 2版」

12月

「Windowsダンプの極意」
プログラマではなく障害解析の人向けの本
いわく「相性なんて存在しない」「ダンプをみればわかる」というのがかっこいい

「ビジュアライジング・データ」
Processing

「JavaScript The Good Parts」
薄い分量に、著者の考える「いい部分」だけを

「pixiv 人気絵師が教える旬のテクニック」
Amazonで総合1位
晋遊社のフットワークの軽さ

「実装パターン」ケントベック

「The Root of .NET Framework」
荒井さんの本
.NETの中身を理解したい人むけ

「Cとアセンブラ言語で学ぶ計算機プログラミングの基礎概念」

「Thoughtworksアンソロジー」

「リーン開発の本質」

まとめ

稲尾さん:
「WEB+DB」8周年記念号よろしく
以後
artonさんの巻頭インタビュー
はまのさんによるgit特集も予定
など

杉山さん:
Ruby会議にあわせて「ふつうの」新作

村田さん:
デザイナー向けのプログラミングの本を出していきたい

矢野さん:
今年の予定3冊
「プログラミング言語Ruby」近日発売。まつもとさん&(サイ本の)フラナガン著
「opencv」の本、夏ごろ
「Real World Haskell」、秋ごろ。nobsunさん訳

mixiの足あとフィードをAPIから取る

 mixiが足あと機能をいろいろ変更したのをきっかけに、そういえば足あとってAPIからAtomで取れるんだよなと思い出しました。

 例として、Perlから足あとフィードを取得してみます。認証まわりは面倒なのでw3mのクッキーで。

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Cookies::w3m;

my $myid = '000000';
my $cookie_file = "$ENV{'HOME'}/.w3m/cookie";
my $url = "http://mixi.jp/atom/tracks/r=2/member_id=$myid";

my $ua = LWP::UserAgent->new;
my $cookie = HTTP::Cookies::w3m->new(file => $cookie_file);
$ua->cookie_jar($cookie);
my $res = $ua->get($url);
print $res->content if $res->is_success;

 実行。

$ perl mixi-ashiato.pl
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:tracks="http://mixi.jp/atom/ns#tracks">
  <title>mixi tracks</title>
  <link rel="self" href="http://mixi.jp/atom/tracks/r=2/member_id=000000" type="application/atom+xml"/>
  <link rel="alternate" href="http://mixi.jp/show_log.pl" type="text/html"/>
  <updated>2009-01-08T13:28:32Z</updated>
  <author>
    <name>おれ</name>
    <uri>http://mixi.jp/show_friend.pl?id=000000</uri>
  </author>
  <id>tag:mixi.jp,2007:tracks-000000</id>
  <entry>
    <id>tag:mixi.jp,2007:notify-tracks-000000-000000</id>
    <link rel="alternate" href="http://mixi.jp/show_friend.pl?id=000000" type="text/html"/>
    <title>トモダチさん</title>
    <content/>
    <author>
      <name>トモダチ</name>
      <tracks:image>http://profile.img.mixi.jp/photo/member/00/00/000000_000000s.jpg</tracks:image>
      <tracks:relation>friend</tracks:relation>
    </author>
    <updated>2009-01-08T13:26:42Z</updated>
  </entry>
(以下略)

bashでハフマン符号化

データを圧縮するcompress、展開するdecompressという関数やメソッドなどを書いてください。データはバイト列でもストリームでもそれ以外の形式でもOKです。

圧縮形式は問いませんが、できるだけ一般的なフォーマット(zip,lzhなど)でお願いします。

 お題を満たしてはいませんが、bashでハフマン符号化の表を作るところまでスクリプトを作ってみます。

#!/bin/bash

function get_bytestat() {
    od -tx1 -An | tr ' ' '\n' | grep -v '^$'| sort | uniq -c | sort -n
}

function mkhuftable() {
    local file1=$1
    local file2=$2
    local n1 n2 cs1 cs2
    while [ "$(wc -l < $file1)" -gt 1 ]; do
        {
            read -r n1 cs1
            list2fhash 1 $cs1
            read -r n2 cs2
            list2fhash 0 $cs2

            printf '%7d ' $((n1 + n2))
            echo $cs1 $cs2
            cat
        } < $file1 > $file2
        sort -n $file2 > $file1
    done
}

function list2fhash() {
    local pre=$1
    shift
    local e
    for e; do
        eval _huf_$e=$pre\$_huf_$e
    done
}

function dmupfhash() {
    local v
    for v in ${!_huf_*}; do
        echo "${v#_huf_}: ${!v}"
    done
}

tmpfile1=$(mktemp '/tmp/tmp.huf1.XXXXXXXX')
tmpfile2=$(mktemp '/tmp/tmp.huf2.XXXXXXXX')
trap 'rm -f $tmpfile1 $tmpfile2' EXIT

get_bytestat > $tmpfile1
mkhuftable $tmpfile1 $tmpfile2
dmupfhash

 外部コマンドはod、tr、grep、sort、uniq、catを使用。効率はよくありませんが、再帰にならないように、かつパイプを使って処理してみました。

 標準入力から与えられたデータから1バイト単位でハフマン符号化の表を作り、元のデータ(16進)と符号化データ(2進)を出力します。

$ echo abrakadabra | bash ./huf.bash
0a: 0101
61: 1
62: 001
64: 0100
6b: 011
72: 000

「Rubyで作る奇妙なプログラミング言語」

Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
原 悠
毎日コミュニケーションズ
売り上げランキング: 1488

 Brainf*ckとかWhitespaceとかGrassとかの「奇怪語」(Esoteric Language)を紹介するとともに実装方法を解説する本。LL系カンファレンスの発表のように軽妙な感じで語られていくので、「Brainf*ck」「Yコンビネータ」といった言葉になじみがあれば、するすると読めて楽しい。

 キモは「表現」「計算モデル」「実装」の3つに分けられそうだな、と思いながら読んでいたら、著者も2-1節で次のように書いていた。

まず、プログラミング言語というものは構文(syntax、シンタックス)と意味論(semantics、セマンティクス)からできている。
まあ、仕様が比較的簡単なEsoteric Languageに限ってしまえば、「『見た目』と『中身』を決めることが必要だ」と言い換えてしまってもいい。

 というわけで、本書で解説された言語について、本書に書かれた範囲で「見た目」「中身」「実装」をまとめてみる。

言語 見た目 中身 実装
HQ9+ 4つの命令だけからなる 「Hello, World」「Quine」「99 bottles of beer」「カウントのインクリメント」の各1命令のみ それぞれの命令をメソッドとして実装
Brainf*ck 8つの命令だけからなる チューリングマシンのようにデータをテープとして表現
  • 1文字が1トークン
  • 「[」「]」は対応する位置をあらかじめハッシュで持っておく
  • Rubyへのトランスレータもあり
Ook! Brainf*ckを「Ook」の文字で表現。オランウータンのための言語 Brainf*ckに同じ バナナは美味しいです
Whitespace スペース、タブ、改行だけで表現 スタック(+ヒープ)ベースで機械語相当の処理
  • 中間言語に変換して実行
  • StringScanner
Starry(著者作) 星空のように、空白の中に「+」「*」「.」などをちりばめる。各文字が命令の分類、その前の空白の数が命令の種類を示す スタックベースで機械語相当の処理 中間言語に変換して実行
Bolic(著者作) Unicodeの記号文字からなる 記号文字がAlgol系の構文語に対応する 再帰下降型パーサ
Befunge ソースを読む方向が上下左右に変化 スタックベース
Wierd 「*」を2次元に並べて、線の角度で命令を表現 簡単な5命令のみ
Shakespeare シェークスピア劇の戯曲として表現
Chef 料理のレシピとして表現
Unlambda 1文字に関数が対応 すべてs/k/iコンビネータで表現
Grass 「W」「w」「v」のみで表現 スタックベースのλ計算
False 1キロバイトでコンパイラが書ける スタックベース。無名関数やインラインアセンブラもあり
NULL 1つの整数で1つのプログラム。素数に対応する命令を掛けた値 キューベース 実装は困難
AAAAAAAAAAAAAA!!!! 「A」「AA」「AAA」「AAAA」で表現 前置記法
INTERCAL 一見普通、驚き最大の原則
Malbolge 悪魔のような読みづらさ 数値は3進数、命令はメモリ上の値にアドレス値を足して94で割った余り Hello, Worldが書かれるのに2年かかった
KEMURI 「|」と、上につく記号(「^」「'」など)のみで表現 スタックベース。スタックに積める値は「Hello, World!」のみ
Taxi タクシーの行動を説明する英文 データドリブン。データがタクシーのように土地(命令)に立ち寄る。給油も必要

どう書く?org「麻雀ゲーム1」をSQLで考えるメモ

 ゲームとしてのアルゴリズムはよくわかりませんが、データ構造はいろいろ考えられそうです。

 とりあえず、SQLの勉強として、SQLでモデル化した場合について途中まで考えたメモを残してみます。文法はとりあえずどのRDBMSともつかないものです。勉強中なので、おかしな箇所あったらご指摘ください。なお、この場合、SQLでモデル化することに実用的な意味はないと思います。

データの表現

 全体を牌のテーブルとして考えてみます。

CREATE TABLE pais (
    id INTEGER NOT NULL,

    paitype_id INTEGER NOT NULL,        -- → paitypes
    paitype_num INTEGER,

    location_id INTEGER NOT NULL,       -- → locations
    location_num INTEGER
);

 paitypesはこんな感じで。

CREATE TABLE paitypes (
    id INTEGER NOT NULL,
    name VARCHAR(5)
);

-- 萬子、索子、筒子
INSERT INTO paitypes (id, name) VALUES (0, 'MAN');
INSERT INTO paitypes (id, name) VALUES (1, 'SOU');
INSERT INTO paitypes (id, name) VALUES (2, 'PIN');
-- 風牌
INSERT INTO paitypes (id, name) VALUES (3, 'TON');
INSERT INTO paitypes (id, name) VALUES (4, 'NAN');
INSERT INTO paitypes (id, name) VALUES (5, 'SHA');
INSERT INTO paitypes (id, name) VALUES (6, 'PEI');
-- 三元牌
INSERT INTO paitypes (id, name) VALUES (7, 'HAKU');
INSERT INTO paitypes (id, name) VALUES (8, 'HATSU');
INSERT INTO paitypes (id, name) VALUES (9, 'CHUN');

 locationsはこんな感じで。

CREATE TABLE locations (
    id INTEGER NOT NULL,
    name VARCHAR(7)
);

-- 山
INSERT INTO locations (id, name) VALUES (0, 'YAMA');
-- 手牌
INSERT INTO locations (id, name) VALUES (1, 'TON');
INSERT INTO locations (id, name) VALUES (2, 'NAN');
INSERT INTO locations (id, name) VALUES (3, 'SHA');
INSERT INTO locations (id, name) VALUES (4, 'PEI');
-- 河
INSERT INTO locations (id, name) VALUES (5, 'TON_HOU');
INSERT INTO locations (id, name) VALUES (6, 'NAN_HOU');
INSERT INTO locations (id, name) VALUES (7, 'SHA_HOU');
INSERT INTO locations (id, name) VALUES (8, 'PEI_HOU');

 あとは136牌をINSERT。

 なお、リーチもドラも鳴きも、問題文にないので対応していません。

洗牌、山積

2. 牌をかき混ぜてから山を作成する機能.

 開門とかは問題文にないので、単なる連番を振ります。

 これはpaisからORDER BY rand()とかのランダム順でSELECTした結果に対し、location_idを0にして、location_numに連番を振ることで実現できます。連番を振るのが面倒なRDBMSの場合には、location_numを設定せず、以降の配牌や自摸のときにORDER BY rand()とかのランダム順を使うことになるでしょう。

配牌

 これは、paisとlocationsをjoinして、location_idが'YAMA'なものをORDER BY location_numのLIMIT 13(親は14)を取り出し、UPDATEでlocation_idとlocation_numを手牌のものに変えてやれば実現できます。

3. 手牌を理牌する機能

 この要件は、location_numで表現できています。手牌を表示する場合は、paisにpaitypesとlocationsをjoinしてWHEREでプレイヤーの手配に絞ってSELECTするだけで実現できます。

自摸、打牌

4. 山から牌を取る操作.
5. 手配を切る操作 (ツモ切りで構いません).
6. 河を保存する機能.

 配牌と同じ方法で山から1つを取り出します。ツモ切りということなので、そのままlocation_idをプレイヤーの河に書き変えます。location_numで順番を付けておくとよいでしょう。河の表示は、paisにpaitypesとlocationsをjoinしてWHEREでプレイヤーの河に絞ってSELECTするだけで実現できます。

まとめ

  • 136牌のテーブルとして表現する
  • 牌ごとに場所の情報を持つ
  • 牌の移動はUPDATEで実現する

 …書いてみると、なんかすごいあたりまえですね。

「新クロサギ」1巻

 「ビッグコミックスピリッツ」誌に移籍しての第1巻。ネタどりをリセットして、基本的な手口から扱いなおしている感じ。

 今回の手口は、ネタバレなので「続きを読む」で。

続きを読む »

「ローバー、火星を駆ける」

ローバー、火星を駆ける―僕らがスピリットとオポチュニティに託した夢
スティーヴ スクワイヤーズ
早川書房
売り上げランキング: 172066

 火星に無人探査車「スピリッツ」と「オポチュニティ」を送り込み、水の痕跡を発見するまでのドラマを、プロジェクトリーダーの科学者自らが記したドキュメント。

 いやー、天が二物を与えたというのか。プロジェクトの内容や現場に詳しいのは当然として、次々と襲いかかる試練や挫折と、それを乗り越えていく様子を、ドラマチックかつ軽やかに描写していて、わくわくする。内容も、ディテールまで具体的に描いているだけど、一般読者でもわかる範囲で説明するというバランスでまとめていて、読み込まされるし、知識も得られる。登場人物も、ちゃんと個性ある人間として描かれているし。

 第1部は、NASAの公募にプロジェクトを応募しては落選することの繰り返し。ライバル科学者との競争や仲間入り、科学者と技術者との対立や連帯。宇宙探査をめぐる世の中の変化。そうして十数年かけてようやく採択に至る。

 第2部は、NASAのプロジェクトとして無人探査車を作り目的にあうように完成させ、打ち上げるまでの話。重量と予算の制約から泣く泣く装置する装置を絞ったり。大規模プロジェクト特有の、1箇所ではかすかな間違い可能性が積み重なることにより、しじゅう意図しない動作や故障、組立ミスに悩まされたり。そして、各組織の文化の違いや、なにより偉い人の説得と調整に苦労した様子が描かれる。

 第3部は、無人探査車を火星上で走らせ、水の痕跡を探す話。ここでも、機材の不調や故障に悩まされつつ、でもラッキーもありつつ、探査が進められる。地上でも火星時間に合わせたシフトを組み、ほぼリアルタイムでモニターしながら操作を進める。そして、発見に至る。

 苦労続きなんだけど、一人称が「僕」なせいもあって、どこか口笛を吹きながら挑んでいるように見えるのが「プロジェクトX」とは違うところ。しかし、スピリッツが着地した地点にある岩の名前が「サシミ」と「ワサビ」ってのは、どういうセンスなんだろう(笑)

 ちなみに、本書で知った本筋とは関係ない小ネタ。アメリカでは一部地域以外では花火が法律で禁止されているそうな。

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

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

Monthly


FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。