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

vx32 on MacBook

手元のLinuxだとどうもうまく動いてくれないので、続いてMacBook (OSはTiger)で試してみる。binutils/gccはこれまたソースからビルドしてます。 $ wget http://pdos.csail.mit.edu/~baford/vm/release/binutils-2.18-vx32.tar.bz2 $ tar jxvf binutils-2.18-…

vxlinux

linux のシステムコールをフックする (DSAS開発者の部屋 2008-07-25)というエントリがあったので、そんなときこそ、vxlinuxと思って試してみたけど、結論から言うとうまく動かすことができなった。 環境はCentOS 5/IA32。binutils/gcc共にソースからコンパイ…

Steven Levyが選ぶ、技術系夏休みの課題図書

HackersなどでおなじみのテクニカルライターSteven Levyさんが、IEEE Spectrumの今月号に「10 Great Tech Books」という記事を投稿していた。面白そうなので、(Plan9ネタではないが)ちょっと紹介してみる。わたしが読んだことがあるのは「超マシン誕生」と…

Sawzall

何か今さらながら、Sawzall。 Interpreting the Data: Parallel Analysis with Sawzall Sawzallは言うまでもなく、Rob PikeさんがGoogleで作ったMapReduce処理に特化したドメイン固有言語。RDBMSにおけるSQLみたいなものか。Mapに相当するのがFilterで、Redu…

Limboでどう書く?

プログラミングのお題をいろんな言語で解く「どう書く?org」にLimboで挑戦している人がいた。 Doukaku? Tag detail: Limbo

Plan 9初心者の手引き

Coraid社のMichael CovingtonさんによるNewbie's Guide。よく書けていると思う。 A Plan9 Newbie’s Guide 時間があったら訳してみるか。ニーズはあるか?

Glenda in space

Plan9のマスコットであるGlendaを書いたのは、ちょっと不気味で可愛い絵を書くイラストレータのRenée Frenchさん。FlickrにGlendaのアクリル絵があるよと、Rob Pikeさん。Glenda in spaceあ、下の本の表紙に見慣れたキャラクタが!Marbles in My Underpants…

9vx

新しいVMネタ。Russ CoxさんがホストOSを変更することなく、Plan9を実行できる9vxをアナウンスした。Linux、FreeBSD、MacOS X上で動とのこと。技術的にはRussさんらがMITで研究開発しているvx32という仮想化支援ライブラリを使っている。今年の(今週やって…

Equis -- Plan9でXサーバ

Federico G. BenaventoさんがポートしているXサーバ/Xlibの公開準備が進められているようだ。名前はEquis。Xlibのポートと、DDX (Device Dependent X)レイアの新規開発が含まれる。スクリーンショットがいくつか公開されている。まだ、キーボード周りがちゃ…

パケットキャプチャ

UNIXにはtcpdumpやsnoop*1コマンドが存在するが、Plan9には同等の機能を持つコマンドとしてsnoopyが用意されている。9P(ninep)のパケットは次のように見える。 000148 ms ether(s=xxxxxxxxxxxx d=xxxxxxxxxxxx pr=0800 ln=87) ip(s=xx.xx.xx.xx d=xx.xx.xx.x…

OSとアーキテクチャ

コンピュータアーキテクチャのエッセンス (IT Architects Archiveシリーズ)作者: ダグラス・E・カマー,Douglas E. Comer,鈴木貢,中條拓伯,仲谷栄伸,並木美太郎出版社/メーカー: 翔泳社発売日: 2007/06/01メディア: 単行本(ソフトカバー)購入: 2人 クリック…

IWP9 2008

今年は10/30、31にギリシアで開催されるようだ。Webページが公開されている。 3rd International Workshop on Plan 9

Google SoC 2008続報

今年の応募はrejectされてしまったようだ。あら残念。 9fansでは、GNU Hurdがacceptされているのに、、、という発言も。 http://code.google.com/soc/2008/hurd/about.html

Vim for Plan 9

Plan9にVimがポートされたようだ。tar ballの他、スクリーンショットも公開されている。 Vim for Plan9 テキストエディタの操作にマウスは不要だと思う派の人はどうぞ。

Emacsのmanページがひどい件について

となみさんのコメントで思い出したけど、Plan9にはなぜかEmacsのmanページがある。これがひどい:-) EMACS(1) EMACS(1) NAME emacs - editor macros SYNOPSIS emacs [ options ] DESCRIPTION This page intentionally left blank. SOURCE MIT SEE ALSO sam(1)…

troffと日本語

生粋のUNIX使いは、今でもやはりTeXではなくてtroffを使ってドキュメントを書くのだろうか? roffと聞くと、「あぁ、manページね」という反応が返ってくると思うが、troffはmanページの整形に使われるnroffの親戚で*1、Wikipediaによると、 troff は主に写植…

Time machine〜Lifestreams

最近、ホームユースのパソコン向けのデータバックアップアプライアンスが注目されている。MSRでMyLifeBitsプロジェクトを立ち上げたGordon Bell曰く「人間が一生かかって紡ぎ出すデータ量は約3Tバイト」とのこと。3Tバイトなんて見積りが低すぎるんじゃない…

acmeの使い方

Skip Tavakkolianさん@Rangboomによって、acmeセッションのビデオが公開されている。実際の動きを見ながらじゃないと、acmeはなかなか使いこなせないと思うので、こういうのは貴重だな。マウス操作をキャプチャするために、mspyスクリプトとtippiというツー…

GSoC2008

Wikiページがオープンされた。もうそんな季節?

9P、9P2000、Styx

Infernoで使われている通信プロトコルStyxって、9Pとどれくらい違うのだろうか?IPWLによると3rd editionでは、接続確立時にSessionなしにAttachメッセージから始まると書いてあった。4th editionでは、Styxも9P2000ベースに更新されていて、/module/styx.m…

pick ADT

styxlibの話に入る前にpickについて書いておく。メッセージパッシングのプログラムでは、メッセージをあるフォーマットのデータ構造にpack/unpackする必要があるが、pickはそんなときに便利な機能だ。Cでは、構造体の先頭にメッセージの種類(or タグ)を格…

Infernoでファイルサーバ

ファイルサーバとしてサービスを実装していくのはPlan9と一緒で、bind/mountやsrvデバイス(#s)等の仕組みも同じ。srvデバイスが変換する通信プロトコルが9PかStyxかの違いはあるが(といってもほとんど違いはないみたいだが)。ファイルサーバの実装という視…

alt

チャネルを使ってプログラムを組むと、一つのスレッドで複数のチャネルからの入出力を待ちたくなる。UNIXでいうところのselect/pollのように。そこで使うのが、alt文*1。ここではtkcmdというTKインタプリタ(?)からコードを引用している。見た目はcase文に…

タイマー関数

ある関数を周期的に呼び出すには、POSIXタイマーやSIGALRMのようにシグナルハンドラを使うことになるけど、Infernoだとチャネルの同期的な性質を利用して、次のように書ける。 implement Timer; include "sys.m"; include "draw.m"; sys : Sys; Timer : modu…

Limboでエラトステネスのふるい

IPWLから。スレッドとチャネルを使った並行版エラトステネスのふるい。initのwhileループが無限整数列を作るジェネレータになっていて、各スレッドがふるいになっている。 implement Eratosthenes; include "sys.m"; include "draw.m"; sys : Sys; Eratosthe…

case文と引数処理

Limboのcase文はCのswitch文よりもシェルのcaseのパターンマッチングに近い。breakを書く必要はない。以下はyacc.bから引数処理のコード。Argモジュールが使われている。先頭からマッチングしていき、'*'はワイルドカード。 arg := Arg.init(argv); while(c …

timeで見るspawn/channel

time(1)はUNIXでもおなじみだが、引数に与えられたコマンドの実行時間を測定するのに使われる。 ; time sh -c 'ps | grep Sh' 1 1 oraccha 0:00.0 release 74K Sh[$Sys] 81 1 oraccha 0:00.0 release 73K Sh[$Sys] 0l 0.011r 0.011t今回はtime(1)を例にスレ…

catから始めるLimboプログラミング

IPWL(Inferno Programming with Limbo)の7章(チャネル)の途中まで目を通した。なんとなくLimboがどんな言語かわかり始めてきたかな。後は実際のコードを読み書きして、実践あるのみか。IPWLはそこそこの規模の例題が示されている点がよい。ずっと前にLimbo版…

Inferno on MacBook (ソースからコンパイル)

"Inferno Programming with Limbo"がAmazonのマーケットプレイスで安く売られていたので思わずポチッとな。著者のPhilip Stanley-Marbellは執筆当時はCMUの博士課程の学生だったようで、講義資料が公開されている。また、同氏がDr.Dobb'sに書いた記事「Infer…

インラインアセンブリ

9fansにHello worldをアセンブリで書きたいという投稿が流れていた。最終的には以前「アセンブリでHello, world!」で書いたようなプログラムになったようだが、Oberonでインラインアセンブリはこう書くというコードがフォローされていた。バイナリアンな感じ…