Top Banner
Plan 9Webプログラミング oraccha Plan9日記(http://d.hatena.ne.jp/oraccha/20091210日 Mitaka.rb&三鷹プログラマーズカフェ合同忘年会
11

Plan 9でWebプログラミング

Jul 03, 2015

Download

Technology

Ryousei Takano

Mitka.rb & pgcafe合同忘年会。2008-12-10
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Plan 9でWebプログラミング

Plan 9でWebプログラミング

oracchaPlan9日記(http://d.hatena.ne.jp/oraccha/)

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

Page 2: Plan 9でWebプログラミング

Plan 9とは• UNIXを開発者らが作った分散OS

• Google Goの発表でにわかに再注目?

1995

Dennis Ritchie

Dave Presotto

Rob Pike

Phil Winterbottom

Page 3: Plan 9でWebプログラミング

Plan 9とは• UNIXを開発者らが作った分散OS

• Google Goの発表でにわかに再注目?

1995

Dennis Ritchie

Dave Presotto

Rob Pike

Phil Winterbottom

http://undergoogle.com/tools/GoogleMasterPlanEN.html

Google OSPlan 9

Plan 10

Plan 11?

Page 4: Plan 9でWebプログラミング

Go

• Robert Griesemer、Ken Thompson、Rob Pike、Russ Cox氏らが開発しているプログラミング言語

• 動的言語並にプログラミングしやすい、 静的型付きコンパイル言語

• CSP→NewSqueak→Alef→Limboの血統

Page 5: Plan 9でWebプログラミング

GopherGlen and Glenda

Illustrated by Renée French

Page 6: Plan 9でWebプログラミング

Plan 9の基本設計

• すべてがファイル• 9Pプロトコル

• プロセスごとの名前空間

Page 7: Plan 9でWebプログラミング

UNIXに与えた影響• 9Pファイルシステムプロトコル

• procファイルシステム

• ダンプファイルシステム• rfork、cloneシステムコール

• ユニオンディレクトリ• UTF-8         などなど

Page 8: Plan 9でWebプログラミング

Pegasus:Webサーバ• 有澤先生@愛知大が開発した、Plan 9

らしいWebサーバ

• ファイル名前空間の仮想化を活用した安全なCGI実行環境を提供

• ユーザごとにサンドボックス化(アクセス可能ファイルの制限)

• cf. chroot jail

Page 9: Plan 9でWebプログラミング

Rit:テキスト埋込み言語• PHP、JSP、eRuby、ebashなどの同類

• 埋め込む言語はRcシェルスクリプト

Date: ${date}

${if (~ $REQUEST_METHOD POST) { ifs=’&’ for (kv in `{cat}) { ifs=’=’ kv=`{echo -n $kv} ‘QS_’^$kv(1)=$kv(2) }}$

My name is $user.

Page 10: Plan 9でWebプログラミング

#!/bin/rit -s${ . ./cgilib.rc# for urldecode logfile=test.log if (~ $REQUEST_METHOD POST) { ifs='&' for (kv in `{cat}) { ifs='=' kv=`{echo -n $kv} 'QS_'^$kv(1)=$kv(2) } echo `{date}: $QS_input | urldecode >> $logfile echo >> $logfile }}$<html><body><form method="POST" action="/index.cgi"><input type="text" size="60" name="input" value=""><input type="submit" value="post">${ tail -10 -r $logfile | awk '{ print $0 "</br>" }'}$<hr><a href="http://plan9.bell-labs.com/plan9/"><img src="image/power36.gif"></a></body></html>

Page 11: Plan 9でWebプログラミング

Reference

• Plan 9: http://plan9.bell-labs.com/plan9/

• Pegasus: http://plan9.aichi-u.ac.jp/pegasus/

• Rit: http://plan9.aichi-u.ac.jp/rit/

• Plan 9日記: http://d.hatena.ne.jp/oraccha/