Plan 9
 Web

                        oraccha
  Plan9           http://d.hatena.ne.jp/oraccha/

2009   12   10   Mitaka.rb
Plan 9
• UNIX                                          OS

• Google Go
                    Phil Winterbottom




                    Dave Presotto
       Dennis Ritchie               Rob Pike




                                         1995
Plan 9
• UNIX                                            OS

• Google Go
                     Phil Winterbottom                 Plan 10

                                     Plan 9
                                                      Plan 11?
Google OS            Dave Presotto
        Dennis Ritchie               Rob Pike



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

• Robert Griesemer    Ken Thompson
    Rob Pike   Russ Cox



•

• CSP→NewSqueak→Alef→Limbo
Gopher
Glen and Glenda




           Illustrated by Renée French
Plan 9

•
• 9P
•
UNIX
•   9P

•   proc

•
•   rfork clone

•
•   UTF-8
Pegasus Web
•                         Plan 9
             Web

•
             CGI

    •

    •   cf. chroot jail
Rit
     •   PHP JSP eRuby       ebash

     •                  Rc

My name is $user.   ${
                    if (~ $REQUEST_METHOD POST) {
                       ifs=’&’ for (kv in `{cat}) {
                         ifs=’=’ kv=`{echo -n $kv}
Date: ${date}            ‘QS_’^$kv(1)=$kv(2)
                     }
                    }$
#!/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>
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/

Plan 9でWebプログラミング

  • 1.
    Plan 9 Web oraccha Plan9 http://d.hatena.ne.jp/oraccha/ 2009 12 10 Mitaka.rb
  • 2.
    Plan 9 • UNIX OS • Google Go Phil Winterbottom Dave Presotto Dennis Ritchie Rob Pike 1995
  • 3.
    Plan 9 • UNIX OS • Google Go Phil Winterbottom Plan 10 Plan 9 Plan 11? Google OS Dave Presotto Dennis Ritchie Rob Pike http://undergoogle.com/tools/GoogleMasterPlanEN.html 1995
  • 4.
    Go • Robert Griesemer Ken Thompson Rob Pike Russ Cox • • CSP→NewSqueak→Alef→Limbo
  • 5.
    Gopher Glen and Glenda Illustrated by Renée French
  • 6.
  • 7.
    UNIX • 9P • proc • • rfork clone • • UTF-8
  • 8.
    Pegasus Web • Plan 9 Web • CGI • • cf. chroot jail
  • 9.
    Rit • PHP JSP eRuby ebash • Rc My name is $user. ${ if (~ $REQUEST_METHOD POST) { ifs=’&’ for (kv in `{cat}) { ifs=’=’ kv=`{echo -n $kv} Date: ${date} ‘QS_’^$kv(1)=$kv(2) } }$
  • 10.
    #!/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>
  • 11.
    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/