2009-01-01から1年間の記事一覧

Goを使ってPlan 9とお話

9PプロトコルでPlan 9とMacOS Xとおしゃべりするのに、Goの9pパッケージ(go9p)を使ってみようという話。go9pは標準パッケージには含まれていないが、有志によって開発が進められている。copyというbuiltinを使っているので、新しいリリースを使う必要があ…

ktrans(SKK)の辞書

前回の続きで、ktransの辞書を強化してみよう。元となるSKKの辞書はSKK OpenLabのページから入手できる。基本辞書にはS、M、ML、Lという4種類があるが、1語/行として語数はこんな感じである。 $ wc SKK-JISYO.*|sort 3412 6973 55799 SKK-JISYO.S 8379 1691…

日本語入力環境

Plan 9には最初から日本語フォントも入っているので、日本語を読むには困らないのだが、入力する手段がない。例えば、tweetしたくても日本語が入力できなくて困ってしまう*1。数少ない日本のユーザはktransか9skkinを使っていることだろう。前者は第二版まで…

rioのスクロール

Plan 9を使い始めて誰しも戸惑うことの一つに、コマンドを実行しても自動的にスクロールしないことが挙げられる。スクロールしないので、実行結果を見るためにスクロールバーを使うか、カーソルキーで上下することになる。この挙動はlessが暗黙的に実行され…

acmeでGoプログラミング

@repeatedlyさんがGoってacmeで書くんじゃないかとつぶやいていたなぁ。ということで、Plan9portのacmeでGoプログラミングしてみようという話。Goのコーディング規約がどうなっているのか読んだことないけど、ハードタブっぽいし、acmeで困ることは特にない…

Mitaka.rb & 三鷹プログラマーズカフェ合同忘年会

Webアプリ系しかもRubyの集まりっぽいからあまり縁のない世界なのだと思っていたのだが、プログラマーズカフェって何?って気になっていたので、急遽参加を決めた。とはいえ世間は狭いので、思いがけない再会があったり、見知った顔も何人かいた。ともかく普…

goのアセンブリでHello, World!

情報科学苦手の会にちょっとだけ顔を出してきました。で、本エントリは@ucqさんの「goのアセンブリでHello World」にインスパイアされて書いた。goのアセンブラはKen Thompson作で、ベースはPlan 9のものを流用している。つまり、Plan 9のアセンブリコードは…

MacOS X上でLP49を動かしてみる

LP49をMacOS X(Snow Leopard)のQemuおよびVirtualbox上で動かしてみた。 Qemu まずは、Qemuのインストールから。0.10系と0.11系の違いはよくわからないが、とりあえず0.10.6を使うことにする。今回はソースからビルドした。ちなみにMacOS X用にはフロント…

久々のTIP9UG@NII

ひさびさのTIP9UGが、丸山先生のご好意でNIIにて開催された。参加者はだいたいおなじみの11名。私は「Plan 9再発見とSC09報告」ということで、最近のPlan 9周りの活況?と先月アメリカのオレゴン州ポートランドで開催されたSC09の簡単な報告を行った。FAST-O…

Plan9でTwitter

Plan9で使えるTwitterクライアントを紹介しよう。といっても単純なrcスクリプト。日本語も問題ない。スクリプトの実体はhgetのラッパで、パスワード認証にはfactotumを使っている。factotumはPlan 9の認証エージェントで、例えばssh-agentがSSH専用であるの…

Shibuya.pm テクニカルトーク#12 NoSQL特集

気になる話題だったので「NoSQL vs. NoKVS ライトニングディスカッション」を聞きに行ってきた。とりあえずPlan 9に近そうな話題をピックアップ。平林さんのTokyo Cabinet|Tyrantの話から。Tokyo CabinetはBerkeley DB (bdb)の祖先でもあるdbmのモダンな実装…

プロファイラの実装

We also found that less than 4% of a program generally accounts for more than half of its running time. ーー Donald Knuth, 1971 性能解析の定石としてプロファイラの使用が挙げられるが、その実装がどうなっているのか、追ってみたい。ソフトウェア…

Goでdial

現実逃避気味にGoで簡単なエコーサーバ/クライアントを書いてみた。さすがソケットをそのままユーザに見せるのではなく、Plan9のdialライクなAPIになっている*1。こまかい文法についてはGoのページを参照してもらうとして、ちょっとコードを見ていこう。Plan…

プログラミング言語Go

Plan 9開発者がぞくぞくとGoogleに吸い込まれていき、何が出てきたかというとGoというプログラミング言語だった。TwitterでもGoに関連してPlan 9への言及が増えている。これを機にPlan 9にも興味を持ってもらえれば、これ幸い。Goに対する私の第一印象は「Li…

Microsoft Academic Search

論文検索するときは古くはCiteSeer、最近はGoogle Scholarなどをよく使っているが、MicrosoftもMicrosoft Academic Searchなるサービスを始めたというのをtwitter経由で知った。ドメイン毎の論文ランキングなどが表示されるのが面白い。OSの分野だと90年代に…

第二回 カーネル/VM探検隊

11/5にライブドアにて開催された第二回 カーネル/VM探検隊でまたゆるい話をしてきました。発表スライド「あなたの知らないネットワークプログラミングの世界」はリンク先にあります。まぁ、言いたかったことは、「みんなでPlan 9でプログラミングしようよ!…

procfsの起源

プロセスをファイルシステムにマッピングするprocfsはPlan 9で有名になったけど、その起源はawkのPeter J. Weinberger (pjw)にあった!という話。今、LinuxやBSD*1で使われている形のprocfs、つまり/proc//filesという形式はPlan 9が始まりだけど、procfs自…

シンプリシティの法則

古本屋で何気なく見つけて、Plan9日記的に興味のあるテーマなので手に取ってみた。 世界でトップクラスのデザイナーはみな、何かを見るとき目を細める。木を見て森を知るためにーー正しいバランスを発見するためにーー目を細める。目を細めて世界を見ること…

Lions' commentary on UNIX 6th Edition

小ネタをもう一つ。この日記でも何度か取り上げているけど、Lions' commentary on UNIX 6th EditionのTexファイルが公開されていることを、twitter経由で知った。1994年5月にUSENETのalt.folklore.computersにポストされたものらしい。このドキュメントにはU…

インターネット最初のメッセージ

ITmediaに「インターネットが40周年 最初に送られたメッセージは「LO」」って記事が掲載されている。まさにこのとき使われたのが、「IMP: インターネットルータの祖先」で書いたIMPだね。IMP 1号機はUCLAのSigma-7に、2号機はSRIのXSD 940に接続された。そし…

建築とソフトウェア

Less is more. -- Ludwig Mies van der RoheLess is bore. -- Robert Venturi 今日たまたまWebサービスのチュートリアルに参加していたのだが、(そのチュートリアル自体は面白くもなかったが)design principleの話で引用されていた、冒頭の"Less is more."…

Xの起源に分散OS

UNIXのGUIがいまいちな元凶にX Window Systemがあるけど、twitterで昔話に花が咲いて、hutaiさんにいろいろ教えてもらったので忘れないうちにまとめておく。今時のLinuxなどのXサーバはX.Orgになっていると思うが、それ以前のXFree86を含め、これらはX11、つ…

u9fs vs NFS

v9fsに書いたように、Linuxはカーネル2.6.14あたりから、9P2000をしゃべるファイルシステムv9fsをサポートしている。v9fsを使えば、リモートのPlan9サーバをmountできる。さらにLinux側をサーバにしたい場合は、u9fsを使うことができる。元ネタはFreenix 200…

4th International Workshop on Plan 9

accepted papersが公開されていた。 Plan 9's Universial Serial Bus, Francisco J. Ballesteros Measuring kernel throughput on Blue Gene/P with the Plan 9 research operating system, Ronald G. Minnich, John Floren, Aki Nyrhinen Using Currying an…

netimpのコード

昨日の続きで、netimpのコードを眺めている。まずは上下層とのインタフェースからざっくり全体像をつかんでみる。netimp(以下、1822と呼ぶ)はネットワーク層プロトコルなので、下位層はデータリンク層であるネットワークインタフェース(NIC)になる。デー…

IMP: インターネットルータの祖先

先日の2.11BSDのエントリでも触れたが、IMP(Interface Message Processor)に対応するコード(/sys/netimp/)があって驚いた。ということでそこからIMPとは何者かを探っていきたい。特に今回調べたのは、IMPとホスト間のプロトコルである、1822ホストアクセ…

オーバレイカーネル

オーバーレイ機能にあてた労力を動的コア割り当てと動的相互参照(リンク)機能の高速化に費やしていたら、どれほど早い素晴らしいシステムになっていたことか。 ーーフレデリック・P・ブルックス,Jr 概要 昨日の続きでもう少し2.11BSDで遊んでみようと思う…

ミドルエンディアン、またはPDPエンディアン

概要 UNIX V1がらみでPDP-11を調べていたら、PDP-11のエンディアンは特殊でミドルエンディアン、またはPDPエンディアンと呼ばれていたことを知った。さっそくテストプログラムをPDP-11シミュレータ上で動かして、その事実を確認してみた。 ミドルエンディア…

Snow leopardでplan9port

Snow leopardでPlan9portがコンパイルできるようになっている。といっても強制的に32bitでコンパイルされるようになっただけだが。Plan9portはdrawterm同様Carbonを使っている。AppleがCarbonを64bit化することはないといっているから、この部分をCocoaに書…

sam

Snow leopardでp9pも動いたことだし、samを触ってみた。samはacme以前にRob PikeがPlan9用に書いたエディタだが、私が物心ついた頃(笑)にはすでにacmeが存在したので、samを使ったことはなかった。samはacmeの前身というイメージがあったので、漠然と似た…