2011年7月24日日曜日
2011年7月17日日曜日
rubykaigi 2011 初日 に行ってきた
最後のrubykaigiにして初参加
今年で最後の開催となるrubykaigi 2011に、初参加してきた。普段、rubyはテキスト処理にone linerで使ったり、ちょっとしたツールを作るのに使ってきた。仕事ではFortranを使うという(かなり)珍しいマイノリティな部類なわけだが、こういう違うコミュニティというか文化みたいなに触れたくて参加を決めた。
初日の感想
- 基調講演が最高だった
- ruby自体の話よりも、rubyを使った仕事の話が多い(想像と違った)
- matzのサインをもらえて嬉しい
- crubyコミッタのみなさんの顔を拝めた
- 異分野の話を聞くのは刺激になる
あとでまた書く。
2011年7月9日土曜日
rubykaigi2011に参加することにした。
ちょっとrubyistの雰囲気を味わってこようと思う。
2011年6月19日日曜日
RedmineをCentOS 5.6 on serversman VPSにいれるのに苦労した
インストールメモ
versionなど。
- ruby 1.8.7
- もともと自分のhomeに1.9を入れていて、/usr/lcal/binに。
- gem 1.3.7
- sourceから/usr/local/bin/へ。
- gem でrails 2.3.5
- gem でrack 1.0.1
- gem でmysql
- gem でpassenger
- redmine 1.0.5(ソースから)
passenger
a.k.a mod_rails とか。apacheでrails アプリを動かせるらしい。railsはまったく知らないので、apacheでできると言われてもピンとこなかったけど、redmine公式サイトの記述通りにいれた。redmine公式サイトの説明通りにapacheのconfを書いた(同じものがpassenger-isntall-apache2-moduleするとterminalに出てくる。依存関係の不足を指摘して、yumでコレいれなよ、と言ってくれる。親切。)。1点、redmine公式ページの案内と変えたのは、sub uriで公開する点。apache-passengerのtech_noteを参考にして設定。
感想
まだredmineをあまり使ってない。ただ、インストールが面倒すぎる。versionとかapacheとか気にするとこがたくさん。これじゃあ、多くの人は使ってみようと思わないよなあ。(職場で詳しい人がインストールしてくれたら使おうかな、という程度じゃあるまいか。)
references
blogを中心に情報を探したけど、結局のところ、公式サイトが一番役にたった。2011年6月4日土曜日
うまくいかないときにやるといいこと
なんだか最近うまくいかない、空回りだなあ、というときにするといいこと。
- 部屋の掃除をする
- 音楽を聴く
- 風呂にゆっくり入る
- 机の周りを整える
- 自炊する
- 運動する
- たまっていたメールを片づける
- たまっていたRSSを片づける
- たまっていたメールを既読にする
- たまっていたRSSを既読にする
- 本棚の配置替えをする
- 買い物をする
ようするに気分転換をするといい。あとは、一定の手順が決まっていることに取りかかるのもよい。いろいろ細かいことを片づけているうちにいいリズムになってきたりする(なんだか、日々のルーチンをきっかけにいいフローに入る、みたいなのが、"プログラマが知るべき97のこと"の中の記事にあったような気がする)。最後の買い物をするというのは度がすぎると危険。
2011年4月25日月曜日
中島聡さん「エンジニアとしての生き方」出版記念講演会に行ってきた
世界で働く
4/24(日)に中島聡さんの著書「エンジニアとしての生き方」出版記念講演会を聴いてきた。ふとしたきっかけからブログの"Life is beautiful"に出会い、そこからほとんど欠かさず読んでいるのだが、ご本人に生でお目にかかることができて感激した。帰りがけにサインもいただき、"がんばってください。"と声をかけていただいたことは、忘れない。講演終了直後はかなり興奮していたのだが、一日置いて冷静になったところで感想を記しておこうと思う。
この本は"エンジニア"のためだけではない
中島さんは本を"ガラパゴス脱出論"みたいな題名にしたかったようだが、正式な書名は"エンジニアとしての生き方"となっている。"ガラパゴス~"に比べて若干固くなってしまったが、"流行物"っぽさが消えたこちらの方が長く読まれやすいのではないだろうか。ただ、"エンジニア"とあるが、ここをたとえば"科学者"と読みかえても十分通じる。"若者"でもいいかもしれない。伝えたいことは"人生は1度だからおもいきり楽しもう。活躍できる場に飛びこもう。明日の自分は自分でつくる!"というポジティブなメッセージである。
印象に残ったこと
中島さんはとても楽しそうに話をしていた。50歳とおっしゃっていたが、周囲にあれほど生き生きしている50歳の人はいない。自分がやりたいことをどんどんとやってやるぜ!という若者的エネルギーをびしばし感じた。当日はUSTREAMでも配信していたようだけど、その場にいなくても場を共有できるような時代にあって、実際にその場にいることの大切さを感じた。空気を感じられたと思う。経験に裏打ちされた"自信"を見ることができた。
ブログをはじめてから生活(人生?)が変わった、とおっしゃっていたような気がするが、そこで"いろんな分野でいい仕事をしてきている人がたくさんいると思う。でも、なかなか見えてこなくて、地上の星のようになっている。ブログを書くことは最高のパーソナルマーケティングだし、そういう人にも是非ブログを書いてほしい"という趣旨のことも言っていた。同感である。ブログを書くのはIT業界の人が多いと思うが、そこだけが世界なのではなく、現実世界の多様性がもっとブログ界に出てくれば、もっと楽しくなりそうである。
(なんだかうまく書けないが、)充実した時間を過ごすことができた :)
2011年4月17日日曜日
「プロセッサを支える技術」を読んだ。
今までよりもCPUが身近になった。
「プロセッサを支える技術」を読み終わった。"本書について"のところにも書いてある通り、本書は、自身でプログラムを書きコンピュータシステムをより効率的に動かしたい、という方を対象にしたプロセッサの解説書です。と、いう本である。プログラマのためのハードの本、と言えばいいのだろうか。
あらゆる科学技術がそうであるように、コンピュータシステムも技術の発展に伴いブラックボックス化され、抽象化されてきた。CPUが命令を実行する仕組みを知らなくても、また、メモリとキャッシュラインの関係を意識しなくても、コンパイラ技術の進歩によりそこそこなプログラムが書けてしまう。そもそもマシンパワーの拡大により、マシンの性能をぎりぎりまで引き出さなければいけない場面もあまりないし、LL系言語で片がつくことも多くなってきた。でも、そうやってプログラミングをする中で、もっと効率的なプログラムを書きたい、プログラムが実行される仕組みが知りたい、言語処理系やコンパイラの実装ってどうなっているの、と感じる人だって少なくないと思う。この本は、そんな人(←自分)の疑問にこたえる。1回読んだだけで消化しきれないが、必要に応じて何度も読もうと思う。
目次は以下。技術評論社のサイトより。
WEB+DB PRESS plusシリーズ プロセッサを支える技術 ― 果てしなくスピードを追求する世界 第1章 プロセッサとコンピュータシステムの基礎 1.1コンピュータの構造 コンピュータの構成要素 ― プロセッサ,メモリ,入出力装置 Column プロセッサパッケージの物理的な構造 コンピュータは2進法で計算を行う プロセッサ ― プログラムを解釈するコンピュータの頭脳 Column 2値と多値 ― 必ず2進法,ではない!? プロセッサの命令の実行 ― ベルトコンベア式の流れ作業 Column プロセッサ,マイクロプロセッサの定義 ― コンピュータの最重要部品としてのプロセッサ サイクルタイム,クロック周波数 Column パイプラインの段数 CPUという呼称 プロセッサ現在 ― 用途の広がり Column 倍率を表す接頭語 命令アーキテクチャとマイクロアーキテクチャ ― ソフトウェア的な構造とハードウェア的な構造 メモリ ― コンピュータの「命令」と「データ」を記憶する メモリ容量 ― どれだけの情報を記憶できるか その「K」は210か,103か バイト(B) ― 8ビット単位で情報を扱う アドレス メモリレイテンシ DIMM ― コンピュータの部品としてのメモリ バス ― プロセッサ,メモリ,入出力装置をつなぐ データ転送速度とメモリ 入出力装置 ― コンピュータの目,耳,口 入出力装置は種類が多い ― 基本/高速/各種用途向けの入出力装置 I/Oバス ― PCI Express規格 プロセッサと入出力装置の関係 ノースブリッジとサウスブリッジ ― 薄れつつある呼称 1.2 コンピュータの高速化を支える半導体技術 ムーアの法則 ― より多くのトランジスタ。並列度を高める方向へ デナードスケーリング ― トランジスタの性能を向上 膨大な開発投資が支える半導体の微細化 ― 微細化のペースは今後しばらくは継続 性能向上の三本柱 ― クロック向上,並列処理と,機能拡張 1.3 コンピュータとデータの表現 バイト,ハーフワード,ワード... ― ビットのグループと用途 文字コード 符号無し整数と符号付き整数,1の補数表現と2の補数表現 Column 日本語と文字コード 浮動小数点数 ― IEEE 754規格 ビッグエンディアンとリトルエンディアン ビッグエンディアンか? リトルエンディアンか? 1.4 プロセッサと命令 命令アーキテクチャ入門 Intel x86アーキテクチャの命令形式 x86という呼称について 機械命令 ― プロセッサへの命令 アドレス空間 32ビットアドレス空間 64ビットアドレス空間 ― AMD86-64,Intel 64 1.5 機械命令プログラムの作り方 アセンブラによるプログラミング Column AMDとIntelの64ビット拡張アーキテクチャ コンパイラを使う高級言語によるプログラミング 最適化 インタプリタによるプログラミング JITコンパイル 1.6 まとめ Column 半導体の微細化 第2章 プロセッサの変遷 2.1 コンピュータ以前の計算装置 そろばん ― 計算をするための最初の道具 ネイピアの骨 ― 掛け算の補助具 機械式計算機 ― Schikardの計算機,Pascaline BabbageのDifference Engine ― 歯車を使うスパコン 2.2 初期の電子式コンピュータ 最初の電子式コンピュータ ― ABCとENIAC FUJIC ― 日本初の電子式コンピュータ 2.3 プロセッサを構成する素子の変遷 主要な部品に基づくコンピュータの世代分類 第1世代:真空管 第2世代:トランジスタ TRANSARC S-2000 第3世代:集積回路(IC,LSI) 第4世代:大規模集積回路(VLSI) Intel 4004 MOSFETと性能向上,CMOS Intel 4004(1971年) vs. 2010年現在のマイクロプロセッサ VLSIプロセッサの素子数,クロック周波数のトレンド 2.4 命令アーキテクチャの変遷 命令アーキテクチャ発展の道 プログラム内蔵式コンピュータ ― プログラムもメモリから読み込む 仮想記憶 ― もっと潤沢に。メモリをたっぷり使いたい 仮想記憶のしくみ マルチプロセス ― プログラムの配置替えが必要 TSSと,メモリ管理機構の登場 メモリ管理機構,特権状態 ― マルチユーザではセキュリティ問題を解決する必要がある ページ方式とセグメント方式 特権状態とユーザ状態 Column MULTICS,その後 ISA拡張 ― 命令アーキテクチャの確立と,命令互換性の実現 2.5 マイクロアーキテクチャの発展 マイクロアーキテクチャ発展の道 パイプライン処理 ― パイプラインレジスタを用いて,ハードウェアを有効利用する パイプライン処理実現の難所 ― 素子数の増加に伴いパイプライン処理が普及してきた 演算器の高速化 ― 整数演算器,浮動小数点演算器 整数演算器 ― 加減算はとくに重要である 浮動小数点演算器 キャッシュ ― 「メモリアクセス」問題に対処する秘密の小箱 キャッシュの魔法 RISCの出現 ― RISCとCISC RISCの特徴,CISCの特徴 RISC方式のプロセッサとCISC方式のプロセッサ スーパースカラ実行 ― 複数の命令を1サイクルに実行する Out-of-Order実行 ― 命令の順序を変更して性能を上げる 20~30%程度の性能向上が見込めるOut-of-Order実行 分岐予測と投機実行 ― 「条件分岐命令」対策 Column 「Out of Order」にご注意(!?) マルチコア ― 消費電力の制約がマルチコア化をプッシュ ハードウェア量と性能の関係 ― グロシュの法則の今 消費電力の増加とマルチコア化 2.6 用途が広がるプロセッサ さまざまな舞台で活躍するプロセッサ 省電力,高信頼技術,リアルタイム性 ― さまざまな要件 2.7 まとめ 第3章 [詳説]プログラマのためのプロセッサアーキテクチャ 3.1 マイクロアーキテクチャを支える技術 パイプライン実行のしくみ ― 「並列」に命令を処理する 命令の実行とハードウェア構造 パイプラインの動き 構造的ハザード ― 「プロセッサの資源を取り合う」問題 データハザード ― 「前の仕事が終わらないと次に進めない」問題 制御ハザード ― 「条件分岐命令」問題 キャッシュのしくみ ― メモリアクセスを加速する キャッシュラインとタグ ― データの塊と,中身を示す小さなデータ メモリとキャッシュ間のデータ転送はキャッシュライン単位 フルアソシアティブ方式のキャッシュ ― 自由度が高い ダイレクトマップ方式のキャッシュ ― 構造が簡単 セットアソシアティブ方式 ― 良いとこ取りの中間的な方式 キャッシュによる性能改善効果 プロセッサの記憶階層 キャッシュをうまく使うプログラミング RISCとCISC ― 固定長命令と可変長命令 命令のデコードが難しい ― CISC命令と問題[1] パイプライン実行が難しい ― CISC命令と問題[2] 互換性を維持して内部をRISC化 ― x86のCISC命令を,RISC風の内部命令に変換してから実行する ロード,ユースの引き離し ― RISCの特徴[1] RISCはCISCより多くの命令メモリが必要 ― RISCの特徴[2] 演算器の高速化 ― プロセッサ中で処理が複雑で時間のかかる部分の一つ 整数加算器の高速化 整数乗算器の高速化 除算の高速化 ― SRT除算アルゴリズム 浮動小数点演算器とその使い方 スーパースカラ実行のしくみ ― 1サイクルに複数の命令を並列実行する 1サイクルに複数命令を実行するために Out-of-Order実行のしくみ ― データハザードの影響を軽減する リザベーションステーション 逆依存性の問題 リネーム ― 逆依存性を解消 正確な割り込みを保証 メモリバリア命令/FENCE命令 ― メモリアクセスの順序が変わると問題になる場合がある 分岐予測のしくみ ― 制御ハザードによる損失を低減する ループの振る舞い(おさらい) 分岐予測 ― 分岐方向の予測と予測実行 飽和カウンタを使う予測 ― Taken,Not Takenの履歴を使う 履歴を用いる分岐予測 ― ローカル履歴 その他の分岐予測機構 ― グローバル履歴,Gshare,ハイブリッド分岐予測 現代のプロセッサは各種ハザードを解消,軽減して性能を上げている メモリ,I/Oと入出力インタフェース コモンバス ― 伝統的なインタフェース 入出力の制御 パフォーマンスカウンタ ― プロファイラ,プロセッサ内部の実行状況の情報 パフォーマンスカウンタの構造 3.2 プロセッサの利用範囲を広げるアーキテクチャ拡張 マルチプログラミングとメモリ管理機構 メモリのフラグメンテーション ― セグメント方式が抱える問題 ページ方式 ― 現在主流のメモリ管理 多階層のアドレス変換 メモリを効率的に利用したい ― TLBミスの軽減,ページサイズ,ラージページ 割り込み処理機構 ポーリング Column 例外,割り込み,トラップ ― 用語の整理 割り込みのしくみ トラップ ― プロセッサ内部の異常を知らせる ベクタ割り込みと割り込みレベル 仮想化のサポート ― メモリアクセスとメモリ管理機構 VMM,仮想化 VMM,OS,メモリ管理機構 マルチメディア,暗号などのサポート ― 大量データを扱う計算処理 SIMD演算器 ― マルチメディア処理,並列演算 暗号化処理 3.3 x86 Nehalemアーキテクチャのプロセッサ x86の命令体系,Intel 64アーキテクチャについて IA-32e モード ― Compatibility,64ビット x86のレジスタセット x86で扱えるデータタイプ x86プロセッサの命令形式 Core i7プロセッサの構成 命令を取り出して解釈する「フロントエンド」 各種処理を行う「実行エンジン」 Nehalemの「キャッシュ階層」 メモリ管理は4階層のテーブルを使用 4階層ページテーブル ページの使い方を決めるページ属性 新しいプロセッサインタフェースQPI 3.4 まとめ 第4章 仮想化サポート 4.1仮想化の目的,メリット/デメリット 仮想化の基礎知識(おさらい) 仮想化の目的 強固なユーザ間分離を実現する ― 仮想化のメリット[1] 複数サーバをまとめて稼働率を改善する ― 仮想化のメリット[2] VMMの実行オーバヘッド ― 仮想化のデメリット,注意点 大量のメモリが必要 資源の割り当て管理が必要 ― Webホスティングサービスの例 4.2 仮想化を実現するために OSに独立の(仮想)ハードウェアを提供するVMM メモリの仮想化 ゲストOSのハードウェアアクセスをインターセプトする 4.3 仮想化をサポートするハードウェア機構 ハードウェア操作命令の検出 特権違反例外処理 ハードウェア状態の退避,復元 ― 仮想マシンの切り換え 仮想マシン制御情報 二重のアドレス変換,TLB シャドウページテーブル ― x86のハードウェアテーブルウォーク機構 仮想TLB方式 ― もう少し上手なシャドウテーブルの作り方 EPT,NPT ― 二重のアドレス変換を自動化するハードウェア機構 I/Oの仮想化 正統的なI/O仮想化 ― VMMがI/Oをエミュレーション パススルー方式 ― 入出力装置を1つの仮想マシンに割り当てる Para Virtualization(準仮想化)方式 ― ハイレベルI/O要求を使う ライブマイグレーション 4.4 まとめ Column 仮想化の始まり 第5章 マルチプロセッサの出現と普及 5.1 マルチスレッドプロセッサ スレッド,マルチスレッドの氾濫(!?) ― まずは用語のおさらいから マルチスレッドの二つの方式 VMT(垂直マルチスレッド) ― 複数のスレッドを切り替えて実行する SMT(同時マルチスレッド) ― 複数のスレッドの命令を混ぜて実行する VMTのしくみ ― 短時間でスレッドを切り替える VMTに必要なメカニズム SMTのしくみ ― 複数のスレッドの命令を混ぜる Column 実は長い歴史のあるSMT SMTに必要なメカニズム マルチスレッドの効果はいかに? ― Windowsタスクマネージャに見る例 スレッド間の資源競合 ― 性能向上への影響 マルチスレッド化による性能向上効果 ― スループット性能は10~30%程度向上 チップ面積とスループット性能向上のバランス 5.2 マルチプロセッサシステム マルチプロセッサ,マルチコアとは何か? マルチコアプロセッサの構造 Column メニーコアプロセッサの構造 キャッシュコヒーレンシ制御 ― マルチプロセッサのキャッシュ間の整合性 MSIプロトコル MESIプロトコル MOSIプロトコルとMOESIプロトコル マルチソケットシステム インクルージョンキャッシュ ノンインクルージョンキャッシュ キャッシュコヒーレンシとスケーラビリティ Column ソケット? チップ? プロセッサチップ間接続インタコネクトとメモリ ― HyperTransport,QPI Column マルチコア時代の,プロセッサ,CPUの意味するところ マルチプロセッサシステムの性能向上 ― 問題と対策 資源競合 ― 3次キャッシュ,メモリインタフェース キャッシュラインのフォールスシェアリング アムダールの法則とロードインバランス 発熱がクロックを制限 共有メモリシステムと分散メモリシステム メモリ空間とキャッシュ間のコヒーレンシ 分散メモリシステムの使い勝手 共有メモリ,分散メモリのハードウェアコスト クラスタシステム 5.3 まとめ 第6章 プロセッサ周辺技術 6.1 メインメモリ技術 メインメモリの歴史のおさらい ダイナミックメモリ SRAM,DRAM メモリの性能向上 ― 70年で140万倍の容量アップ,5000万倍のスピードアップ DRAMメモリの動作原理 ― 電荷で情報を記憶する DRAM記憶セルへの書き出し DRAM記憶セルからの読み出し リフレッシュ ― DRAM,SRAMの由来 DRAMチップとメモリDIMM DIMMのさまざまな種別 DRAMチップの内部構造 ― セルアレイ,行/列デコーダ,センスアップ,バンク ページ,バースト長 プロセッサとDIMMの接続 メモリとのデータ転送,メモリアクセス メモリシステムのエラー対策 パリティチェック ― メモリのエラーを見つける ECC ― メモリのエラーを訂正する 6.2 入出力装置の接続 プロセッサのI/O接続 PCIバス PCIバスとPCI Express Column PCIバス登場までの道のり PCIバスの制御構造 PCIの階層構造とバス番号,バスブリッジ IntelのCore iシリーズプロセッサのI/O構造 Intel PCHのI/O制御構造 6.3 まとめ Column DRAMのリフレッシュ 第7章 GPGPUと超並列処理 7.1 GPGPUのしくみ 3DグラフィックスとGPU ― 大量の計算が必要 GPU GPUシステム GPUからGPGPUへ 「超並列SIMDプロセッサ」としてのGPGPU AMD HD 5870 GPU NVIDIA Fermi GPU 「超マルチスレッドプロセッサ」としてのGPGPU GPGPUのメモリ階層 (1次)キャッシュ部分 ― GPGPUとキャッシュコヒーレンシ Column ワープ! GPUは高速のGDDR DRAMを使う AMD HD 5870 GPUのメモリ階層 GPGPUプログラミングではデータをどのメモリに置くか明示する GPGPUのマルチスレッドは汎用レジスタを分割使用する CPUとGPGPUの大きな違い 超並列SIMD処理による強力な演算能力 巨大マルチスレッドプロセッサ,同じ命令列の実行 メモリ空間の使い分け 7.2 GPGPUプログラミング GPGPUプログラミングの今 CUDAの実行モデル ― スレッドブロック,グリッド CUDAでの関数の宣言,変数の宣言 OpenCLのプログラミング GPGPUの性能を引き出すには データ転送やプログラム起動のオーバヘッドを減らす ワープ内の全スレッドを有効に動かすことが重要 ― 並列化アルゴリズムを作る 演算あたりのメモリアクセスを減らすタイリング ダブルバッファリング ― データ転送と演算をオーバラップさせる メモリアクセスのバンクコンフリクトを減らす 同期回数を減らす 7.3 まとめ Column Top500とGPUコンピューティング 第8章 今後のプロセッサはどうなっていくのか? 8.1 消費電力がすべてを支配する なぜプロセッサは電力を消費するのか 漏れ電流の増加 デナードスケーリングの頭打ちと,続くムーアの法則による性能向上 省電力技術の発展 DVFS ターボブースト,ターボコア 省電力マイクロアーキテクチャの採用 ― クロックゲート,キャッシュ機構... 現代のさまざまなプロセッサと消費電力対策 8.2 より高性能へ,より多くの機能を 半導体の微細化技術 増加するトランジスタをうまく使うには? 二つのアプローチ ― マルチコア化,周辺機能の取り込み 一部のトランジスタをコストダウンに使う 良品率,不良品率 一部のブロックが不良のチップを有効利用する Intel Xeon 5600シリーズ PS3のCELLプロセッサ,Fermi GPU 8.3 より高信頼で安全なプロセッサ設計 なぜプロセッサは誤動作するのか ― 故障,ノイズ 中性子,アルファ線によるノイズ トランジスタの傷みが引き起こす誤動作 誤動作を防いで安全に動かす 8.4 今後のプロセッサの方向性とは? さまざまなシステムで使われるプロセッサ 家電用プロセッサ 自動車用プロセッサ PC用プロセッサ スマートフォン用プロセッサ サーバ用プロセッサ 8.5 まとめ
2011年4月9日土曜日
gitwebでsyntax highlight
gitwebでsyntax highlightを試みる
gitをソースからinstallすると、repositoryをブラウザから見るためのgitweb.cgiがついてくる。ちょっとブラウザから見たいときにはwebrickでhttpサーバを立ちあげれば、localでも見ることができるし、git repository が置いてあるサーバに置いておくと、ブラウザさえあればどこからでもソースや履歴が閲覧できて、とても便利。ただ、ちょっと不満なのが syntax highlight されていない点。検索してみても、 "gitでsyntax highlightできないの?"と聞く mailing list とかばかりヒットして、どうすればいいのか分からなかった。また、日本語の情報も見つけられなかった。ただ、 mailing list の log を見ていくと、どうやら本家には merge された様子。調べた結果、すでに syntax highlight の機能は gitweb.cgi に取り込まれているようだった。今回は serversman@vps 上に置いた gitweb に syntax highlight を有効化させてみたのでそのメモを書いておく。
gitweb.cgiそのものについては、 Pro git や gitweb/README や gitweb/INSTALL を参考。
gitwebとhighlight
git-dir $ grep highlight gitweb/READMEしてみると、何やら
* HIGHLIGHT_BIN Path to the highlight executable to use (must be the one from http://www.andre-simon.de due to assumptions about parameters and output). Useful if highlight is not installed on your webserver's PATH. [Default: highlight]と引っかかる。
から syntax highlight してくれる highlight が手に入るようだ。ちなみに、ほとんどの distro にはパッケージがあるようなので、 local(ubuntu) にも入れておいた。xhtml, terminal, latex などいろいろな出力形式に対応していて便利そう。
install highlight
serversman 上で作業する。
$ tar xvzf highlight-3.4.tar.gz $ cd highlight-3.4 $ less INSTALL $ less READMEとしたあと、
$ makeすると、エラーがたくさん出る。結論から言うと、c++、boost(c++ libraries)、luaがない。
c++とboostは
$ sudo yum install gcc-c++ $ sudo yum install boost-develでinstall。
次にluaをinstall。lua 5.1をダウンロードして、
$ tar xvzf lua-5.1.4.tar.gz $ cd lua-5.1.4 $ makeここで、-lnucursesで、エラー。
$ sudo yum install ncurses-devel $ make $ sudo make installこれでhighlightをbuildする準備が整った。
$ cd highlight-3.4 $ make cli $ sudo make installこれで、OK。あとは gitweb の設定のみ。
gitwebの設定
gitweb.cgiをhighlightで検索すると、defaultでは有効されていないと、と分かる。highlight へのPATH が通っていることを確認し、gitweb_config の projectroot の指定よりも前に、
$feature{'highlight'}{'default'} =[1];と書く。 default で highlight を適用させる suffix が gitweb.cgi で指定されているので、そこにいくつかルールを追加する。ここまで来れば、
色を変更したければ、 static/gitweb.css の一番最後にある hightlight の色指定を変更する。あるいは、コマンドラインから
$ highlight -s emacs hoge.rb > hoge.htlmなどとしたときに、一緒に出てくる highlight.css を参考に設定すればよい。スタイル一覧は作者の web site から見ることができる。
ちなみに
他の環境にhighlightの2.X系を入れてみたところ、 lua がないけど install できた。2.X系の方が楽だったかもしれない。
2011年4月3日日曜日
WEBで学べるということ
Webで学べるということ、
Salman Khan: Let's use video to reinvent education(ビデオによる教育の再発明)は、Khan Academyの教師(というのがふさわしいのか、創設者というのがいいのか、それとも校長?)によるTED Talk。Khan AcademyはWeb上の学校で、学校で教えるような算数、理科、社会などの講義をおさめたビデオや復習用の宿題などがある。Khan Academyのことは、「ウェブで学ぶ」(後述)にも紹介されていたので前から知っていたし、ビデオもちょっとだけ見たことはあった。授業はきちんとストーリー仕立てになっていて、種類もたくさんあり(ただし英語)、すごいと思った。内容もさることながら、その情熱と行動力に驚く。
Khan Academyを覗いてみると、内容は多岐に渡っていることが分かる。代数、算数、銀行とお金、生物、、、。子供だけのためというよりも、大人でも楽しめる。なんだか楽しそう。後で探検してみよう。
以下がTED Talk。
青木靖さんの日本語の日本語訳(TED公式)がここにある。
ウェブで学べる時代と英語
さて、「ウェブで学ぶ」(梅田 望夫/飯吉 透(著)、ちくま新書)という本に先ほどふれた。こちらは題名の通りウェブで学ぶことができる場所の紹介と、それがどういう意味を持つのかについて書かれた1冊。WEBで学ぶと言えば、iTunes Uや、MIT Open Coursewareが有名だが、Kharn Academyについてはこの本で知った。
onlineにコンテンツをほぼ無尽蔵に蓄積できる状況にあって、教育というのはその可能性をもっとも活用できる分野の一つなのかもしれない。こうなると、こういう素晴らしいコンテンツを利用できるための手段が英語だという点が、どんどんネックになってくる。「ウェブで学ぶ」にもあるが、学ぶために英語を身につける時代になりつつあるのかな。このこと自体は英語を学ぶ目的がはっきりしていいと思う。ただ、日本は大学、大学院などの高等教育も(少なくとも講義は)日本語で受けることができるし、まだまだ日本語だけで事足りるため、英語を身につける必要にせまられないのも事実。しかし、ちょっと世界とコミュニケーションしようとすると英語が必要なのも事実。
英語が入口だ、と言いつつも、その英語は完璧なものである必要はなくて、どうせほとんど非ネイティブなんだと思うと気が楽になる。それに、英語圏のコンテンツが楽しめるようになると、どんどん楽しくなってくる。最初の入口だけ我慢して英語を勉強すると、webのおかげで英語で英語を身につけることもできるようになってくる(TED Talkだってそうだ。)。その意味で学習コストは下がっていると感じる今日このごろである。
何が大切なのか
とりとめもなくなってしまったが、こうやって知識に簡単にアクセスできるような状況になったときに、何が一番大事なのか考えると、それは「知っていること」ではなくて、学ぼうと思わせる目的や動機、モチベーションを持っていることなのかもしれない。情報がそこにあったときに、手を伸ばそうとするかどうか、が決定的な違いになるのではないだろうか(アクセス手段 -この場合ネットにアクセスする手段- があることを前提にして。)。また、onlineで知識を獲得できるようになるにつれて、反対に、現実の教室で講義を受け、質問し、議論できる環境の価値が相対的に高まるだろう。実際に現場に行く、現場にいる、ってこと。おもしろい。
「メタプログラミングRuby」のメモ1
「メタプログラミング Ruby」の月曜日
「メタプログラミングRuby」を読みはじめた。月曜日のメモ。
- モンキーパッチとは:既存のクラスを(安易に)再オープンして拡張すること。外部ライブラリを導入している場合、名前空間のすべてを把握することは困難。そのため、知らず知らずのうちにモンキーパッチをしてしまう危険性がある。だからこそ、unit testが必要。
- Kernelはモジュール。Rubyではモジュールをincludeすると無名クラスでwrapされて、継承ツリーの一つ上に置かれる。このクラスは'include class'とか'proxy class'とか呼ばれる。無名クラスはsuperclass()メソッドには存在したものとして扱われる。Rubyのコードでも普通はアクセスできない。
- Rubyでは常にobjectの内側にいることで、ObjectクラスにインクルードされているKernelモジュール のプライベートインスタンスメソッドであるprint()などにアクセスできる。こうすると、メソッドであるprint()が言語のキーワード(予約語)であるように見える!!これはかっこいいな。これはつまり、kernel mothodにすると、すべてのオブジェクトで使えるようになる!!すごい。こういうことをしている例が、ruby gem。
- メソッドを呼び出すときselfがレシーバになり、レシーバを明示的に指定せずにメソッドを呼び出すとselfのメソッドだとみなされる。
火曜日も楽しみ。
TED Talks: The birth of a word
TED Talks: The birth of a word
久しぶりにTED talksを見た。2011年のTED。talkerはMITで子供のコミュニケーションの研究者のようだ。以下にvideoを貼っておく。
途中で子供が言葉を獲得過程に実例が出てくるが、とってもほほえましい。と、同時に、興味深い。"water"と言いたいのか、"gaga"からだんだんと"water"(っぽく)聴こえてくる。部屋の天井に埋めこんだカメラとマイクから作られた映像も見応えある。
2011年3月21日月曜日
「旅人」と「『大発見』の思考法」と「科学者とあたま」
「旅人」と「『大発見』の思考法」
湯川秀樹博士の回想である「旅人」と、iPS細胞の山中教授とCP対象性の破れの益川教授の対談「『大発見』の思考法」を読んだ。時期的に連続して、科学者の回想と科学者同士の対談を読んだことになるのだが、こういう本はまとめて読むと科学者の人となりや思考法が比較できておもしろい。科学者というと、真理の求道者というイメージはあるわけだが、ノーベル賞でも取らない限りその人となりが世間に対して明らかになることは少ない。湯川博士の回想録は、博士が中間子の存在を予言してノーベル賞を受賞しなければ出版されることはなかっただろうし、山中博士と益川博士の対談の方は、おそらく益川博士が小林博士と共にノーベル賞を受賞しなければ、実現しなかっただろう。かと言って、業界では非常に有名だが世間にはあまり知られていない科学者の回想録を出したところで、広く読まれることは少ないだろう。個人的には、日頃から雑誌のそういう記事も熟読してしまうし、そういう本が出たらすごく興味があるのだが。。(ファインマンシリーズも読んだ。ファインマン博士もノーベル賞を受賞しているわけですが。。)
「旅人」で印象に残ったのは、「ノーベル賞を受賞してしまったために雑用が増えて困った」というところ。文中に描かかれる博士の性格から推察して、公の場ではっきりとそのように言ったことはないのでは、と思うのだが、回想となると、そこは明言してある。近頃は科学者もアウトリーチ活動をするべき、という雰囲気になりつつあるように思うが、科学者が研究して成果を出すのが本文であるという意見もある(と思う)。どちらかと言えば自分は研究者には研究に専念してもらうほうがいいような気がする。しかし、まったくアウトリーチがなくなると、今回のように私のような一般人が博士の回想を読む機会もたぶんなかったわけで、それはそれで困る。難しい。
一方、対談の方だが、研究の中身にはそれほど突っ込んでおらず、どういうアプローチで研究をしたか、とか、科学者として大成するタイプについて、など、学生だけど研究者を目指している、あるいは、駆け出しの研究者というような人が読むと小一時間(あるいはもっと)考えてしまいそうな内容が満載である。大胆に言ってしまうと、研究者として独り立ちしてやっていける人は、「情熱があって、アイデアを温めておける人」ということになるのだろうか。なんだか研究者じゃなくても成功しそうな気もする。小賢しい人は要領良くそれなりの成果を出してホイホイ出世するのだが、助教くらいから伸び悩む、というようなこともあったのだが、気をつけたい。ここまで書いてきて、ふと思い出したのが、寺田寅彦の以下のエッセイ。
苦しいとき、なかなか思うように成果が出ないときは、これを思い出したい。
2011年3月19日土曜日
「The Social Network」と「フェイスブック 若き天才の野望」
the Social Networkとフェイスブック
もうかなり前のことになるが、今年の1月にthe Social Networkを見た。監督David Fincher、主演
Jesse Eisenberg。公開前からとても楽しみにしていた映画だった。見終わったあとしばらくは興奮冷めやらず、2か月くらいたった今でその余韻が残っているくらい。いつも映画は1度見ればいいやと思うのだけど、もうこれは、何回でも見たい。音楽もいい。
ハーバード大学在学中に大学SNSを開発し、起業、シリコンバレーへ、というストーリー。その過程での友情、出会い、裏切りなどなど。派手なアクションはまったくない。しかし、会話を軸に展開するストーリーには引きこまれる。特にプログラマにはapache, perl, emacsなど耳に覚えがある単語が満載のため、かなり感情移入してしまうのではないか。the facebook(のようなもののアイデア)を言い出したのは自分たちだ!と知的財産権みたいなものを振りかざすウィンクルボス兄弟たちに向かって、「the facebookは僕が作った」と戦うザッカーバーグのことを、多少なりともプログラミングをしたことがある人間なら、全力で応援したくなってくるのではあるまいか。と同時に、俺抜きでなんでこんなに楽しいことを!とも思ったのではないだろうか(自分は思ったし、もどかしく感じた。ちなみに全然そちらの業界ではない)。
さて、この映画は完成度が高く、とっても魅力的な登場人物のおかげで、とくにザッカーバーグをはじめとするFacebook関係者を誤解してしまう可能性がある。Facebookの歴史や関係者の人となりを知るためには、映画よりも「フェイスブック 若き天才の野望」という本を読んだほうがいい。誕生から現在にいたるまで、また、ザッカーバーグが何を考えているか、Facebookはどこに行くのか、といった内容がかなり綿密に書かれている。Facebookに興味がない場合でも、起業本として読んで十分おもしろいレベルだと思う。自分は映画を見た後で本を購入したのだが、一方だけだどちょっと偏りがちになると思うので、どちらも味わえて良かった。
Facebookのサイトにしても、最近半年くらいで日本でも使用している人が一気に増えた気がする。個人的にはmixiを越えたんじゃないかという印象がある。匿名がかなり支配的な日本でも十分流行ってきているし、実名登録が当然という雰囲気である。使う人が多いほど便利になる、ネットワーク効果を体感する。
しかし、なんだろうか、トレイラーを見てると涙が出そうになる。
2011年3月6日日曜日
MacBook Air 11 購入&設定
MacBook Air 11を購入した
随時更新
MacBook Air 11インチを購入した。SSDだけ128GB。かなり悩んだが、今となっては後悔していない。SSDでキビキビ動作するし、多くのレビューの通り、起動もビックリするくらい速い。設定段階で何回か再起動する機会があったが、コーヒーでも飲もうと思って、ちょっと離れようと思ったら、もう起動してた。え?もうたちあがったの?という感じ。
メイン環境から移行するとおもしろくないので、まっさらな状態から設定していくことにする。2台目として使うつもりなので、設定やappなどは引き継がず、Dropboxやevernoteを利用し、独自設定は少なくする。用途としては、メモ(evrenote or emacs)、web、rssなど。
環境設定
app
自分でbuild
xcodeからgccをいれたので、あとはできるだけsourceからbuildするようにする。rubyとかはsystemにもともと入っているが、1.9系を使いたいし、自分の手元で管理したいので。
$ git clone git://git.savannah.gnu.org/emacs.gitとする
package mangerにはhomebrewを使ってみる。メインはportsとfinkを使っていたけど、なにかとhomebrewを最近目にしたので。
shareware
ほかいろいろ
App Store
app storeはapple IDでログインするので、購入記録がある。一度購入したものなら他のマシンにもインストールできるので、
雑感
chromeの同期機能, evrenote, dropbox, appstoreのおかげでかなり楽だった。emacsの設定ファイルやlisp libraryはrepository管理しているので、こちらも楽だった。 ruby、git、emacsをソースからbuildしてても、全然ファンがまわらないし(ついてないんだっけ?というレベル)、もちろんHDDの音もしないし、静かだった。すごい。
2011/03/09追記
TeXLive2010
texを入れる。http://macwiki.sourceforge.jp/wiki/index.php/TeX_Live
を参考に、
http://tug.org/texlive/acquire-iso.html
からtar.gzを取得。展開して、install-tlを実行するだけ。簡単!
2011年2月27日日曜日
図解雑学プログラミング言語、を読んだ
図解雑学プログラミング言語、がとがった本という話を耳にしたので、amazonで購入して読んでみた。なかなか濃かった、、
とくに、AIラボのあたりに、emacsが実はエディタの姿をしたlispマシンなんだ!とか書いているのだが、絶版になった理由が分かる気がする。図解雑学シリーズの対象読者が読んで、理解が深まるかと言うと、そんなことはないだろうなあ。むしろこの分野を知ってる人が読んだ方がおもしろいのではないか。
2011年2月19日土曜日
「ゆるく考えよう」と「逃げる中高年、欲望のない若者たち」を読んだ
最近一部界隈で人気?のブロガーちきりんのブログ本「ゆるく考えよう」と、作家の村上龍のエッセイ「逃げる中高年、欲望のない若者たち」を読んだ。この2冊はけっこう読中読後感が似たような印象だった。
ちきりんの本は、人気ブログを加筆修正する形でまとめたもので、タイトルにあるように、人生そんなに気ばらずゆるく考えたらいんじゃないの?というスタンスの本であった。表面上は一事が万事おちゃらけだ調子を装おっているものの、中身に関しては社会派であった。おちゃらけ社会派ブロガーというのが通り名のようではある。内容に関しては、普段からちきりんブログを読んでいるため、あまり目新しくはないものの、とてもおもしろかった。ただ、まとめて読むと、1エントリ1エントリ1の社会派な内容が、やわらかい日本語の書きぶりや「そんじゃーね!」の決めぜりふ、タイトルや装丁により植えつけられたおちゃらけた印象を次第に駆逐していき、読んだあとは、まったくおちゃらけた印象は残らなかった。この本は、ほんとうの意味でおちゃらけた人は手に取らなくて、むしろ中身の通り社会派?の人に手に取られるのではないだろうか。
労働力として見たときに雇用側、また、総体として高齢化していく社会にとっては高齢者の方が若者より従業員にはふさわしいかも、という主張には納得したし、それ以外にも、現代の若者が社会状況的にいかに"アウト"なのかを教えてくれる。このあたり、若者を煽っているんだろうか、と思わずにはいられなかった。ただ、"おちゃらけてまーす"と前置きをしつつ、中身であざむくこのバランス間隔が心地良さ半分いらだち半分である。(おちゃらけないと真面目すぎて読む気がしないかもしれないけど。)
しかし、ブログの過去エントリをいちいちさかのぼるが億劫だったり、オフラインでも読めるという書籍の形は、やはり便利。
一方、村上龍のエッセイの方は、直球で若者を煽っていた。直球なだけにヘラヘラ笑いながら読むことが出来ず、眉をしかめつつ、耳を痛みにたえながら、苦しみつつながら読んだ。ここしばらく、肉食系・草食系のくくりが流行っているが、流行語は目を背けたくなる事実をオブラートに包むためのものという指摘はなるほどである。また、村上龍が犬の散歩に出掛けて群れる飼い主たちを指して、個々の人達はいい人だけど、集団になっているとおあんまり近づきたくない、というようなことを
書いているが、ちょっと分かる。他にも、品格がもてはやされているが、そもそも品格とは何なのだろうかと言いつつ、いったい誰が品格を持ち合わせているのか、という"感覚"はとても共感した。
この本は、はじめは買うつもりのリストに入ってなかったのだけど、そもそもどうして買ったのかと言うと、書店をふらついているときにたまたま帯の「村上龍の挑発エッセイ!」のコピーにつられ、中身をめくり、かっとなって買ったわけだ。つまり、挑発にのせられてしまったという訳である。
包み隠さずはっきり言いたいことを書いていたが、もう少しおちゃらけ成分を付加すると、ちきりん本のようになるんだろうか、、と思った今日この頃である。
2011年2月8日火曜日
「おもてなしの経営学」を読んだ
「おもてなしの経営学(アスキー新書) 中島聡」を読んだ。
第1章がプログの寄り抜き、第2、第3章が「月刊アスキー」の記事の再録となっ
ていて、そのうち第3章は対談となっている。
プログラマの思考法を学ぶことができる。技術者のありかた、技術者としての
思考法、技術者としてのプライドに満ち満ちた本。プログラミングが楽しくて
楽しくて仕方ないんだ、というのが伝わってくる。読むとやる気が出てくる1
冊。ブログもおもしろくて、毎回欠かさず読んでいる。
また、中島さんは、技術面の加えて、技術をどうやったら世の中に広めること
ができるか、という経営側の視点を持っている人でもある。技術屋って、とも
すればビジネス寄りの人とは水と油になりがちだからな気がするば、こういう
立ち位置の人ってなかなかいない。
印象に残ったのは
上を見て仕事をする人、と天を見て仕事をする人、という違い。
というところ。
2011年2月6日日曜日
これはすごい。gitでカレントブランチをプロンプトに表示する。
bash のプロンプトに git の branch を表示する
を参考にして、設定した。
terminalのプロンプトにgitのブランチが表示される!すごい!
やり方は、gitのソースなどがあるdirectoryの
contrib/completion/git-completion.bash
の冒頭に書いてあるが、上記スクリプトを
~/.git-completion.sh
とかにコピーして、
bashrcで
source ~/.git-completion.sh PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
とする。すごい、git.
2011年2月5日土曜日
terminalのtips.
ASCII.jp:~師範、ターミナル怖いです!~|行っとけ! Ubuntu道場!
意外と知らなかった。便利そうなのでメモ。
C-x C-e
ターミナルでエディタを開き、スクリプトを書く。閉じたら実行する。
ESC - .
最後のコマンドの最後の引数を挿入
hisotoryコマンドに時間をつけて便利にする。
HISTTIMEFORMAT='%Y/%m/%d %T '
薄々そうではないかと感じていたが、
C-[ は ESC になる。
2011年1月29日土曜日
Masahiro Kaminaga's Weblog: 才能とは何か を読んで
「食える数学」という本を読んでから、著者の神永さんのブログも読むようになったのだが、「才能とは何か」という今回のエントリに 関して思うとことを書いておく(と言っても反論するわけではない)。記事は、『東大までの人、東大からの人』という記事を読んでの神永さんの感想。
「才能(あるいは能力)」は、個人的に好きなテーマで、才能とかについて書かれた本やブログを良く読んでいる。この間読んだ「35歳までに読むキャリアの教科書」はインタビューを元にして、才能(資質)を元に現実的、堅実的なキャリアを積むための方法について書かれた本(ただし動機も才能と同様に重要としている。)だし、今月のクーリエは「、才能がある人」はここが違う、という少々釣り気味のタイトルだったから買ってしまった(これから読む)。マーカス・バッキンガムの「さあ、才能に目覚めよう」も買ってテストをやってみたし(とてもおもしろかった)、「天才と分裂病の進化論」という本(欠落もまた才能、という内容だったような、、)も読んでみたりもした。
今回の神永さんのエントリは、あんまり無理すんな、というメッセージが全てだと思う。同時に、難しい仕事をこなすには、なんらかのギフトがいる、ということも書いている。ギフト、と一言で片づけられるとそれまでという感じがするが、記事後半には賛成。続けることが大事。続けられることが大事と言ったほうがいいかも。
でも、
他人から見たギフト=自分の動機 * 自分の能力
だとしたら、自分の動機や自分の能力に対する自覚を深めるために、少なくとも大学とか20代とかで挫折したり少々背伸びしてみても、いいんじゃないかなあとも思う。
まとまりがないがとりあえず書いておく。
2011年1月23日日曜日
「Twitter Streaming APIの使い方」を見て、そのままやってみた。
#!/usr/bin/env ruby require 'json' puts JSON.load($_)['text'] while gets簡単だなー
2011年1月22日土曜日
オバマ大統領のスピーチ
Obama’s Speech in Tucson
President Obama offered the nation’s condolences on Wednesday to the victims of the Tucson shooting rampage, urging Americans to usher in a new era of civility in memory of the fallen.
headline : calling for new era of civility in politcs
video and transcripts
http://www.nytimes.com/interactive/2011/01/13/us/politics/201100113_OBAMA_ARIZONA.html
from New York Times web site.
印象に残ったフレーズ
“All of us – We should do everything we can to make sure this country lives upto our children’s expectations.”
大統領の頭が白くなってきたなあ。
2011年にこころがけたいこと
2011年にこころがけたいこと
2011年にこころがけたいこと、それは、 アウトプットする 、ということ。イ ンプットしたことは、アウトプットする。アウトプットすることを意識すれば、 自然にインプットの質も高まる。書いて残す力、文章力も鍛えることができる(はずである。) 漫然としたインプットはしない!!
2011年1月12日水曜日
emacs org-mode blog
emacs org-mode でblog投稿
org-rubyを使ってみる
- ここは#BEGIN_EXAMPLE ~ #END_EXAMPLEで囲むのはだめ
- :はOK
- 表もだめ
- 強調 したり、
code
をかいてみたり、 下線 を引いてみたり。
2011年1月6日木曜日
emacsの矩形処理TIPS
- copy-rectangle-to-register
- C-x r r
- C-x r r
- to insert this register in the buffer
- C-x r g
- C-x r g
便利。