2008年03月06日 15:30 [Edit]

紹介 - codepadで遊んでみた

というわけで遊んでみた。

秋元@サイボウズラボ・プログラマー・ブログ: codepad - ブラウザ上で言語を編集・実行
codepad.orgは、ブラウザ上のフォームから各種プログラミング言語のソースコードを打ち込んで、綺麗に色づけして表示したり、なんと実行して結果を表示させることができるというウェブサイト。

といっても現在時間貧乏につきperlのみ。


とりあえずFizzBuzz

http://codepad.org/cgV42TL9
$\="\n";print $_%15?$_%5?$_%3?$_:Fizz:Buzz:FizzBuzz for(1..100)

無限ループもしっかり検出する。Timeoutは30秒ほどか?

http://codepad.org/X0f9WMME
1 while 1;
Timeout

Perlのバージョンがちょっと古い。5.10.0とは言わないまでも、5.8.8にして欲しいところ。

http://codepad.org/QPE1eJqz
print $]
5.008

それでも、Encodeも動く。

http://codepad.org/WO6dP9Td
use Encode;
binmode STDOUT, ':utf8';
print decode('eucjp', "\xbe\xae\xbb\xf4\xc3\xc6");
小飼弾

サイトの仕組みは、こう解説されている。まあ常識的。PythonとHaskellで実装というのが今風。

about - codepad

How it works

Code execution is handled by a supervisor based on geordi. The strategy is to run everything under ptrace, with many system calls disallowed or ignored. Compilers and final executables are both executed in a chroot jail, with strict resource limits. The supervisor is written in Haskell.

具体的なディレクトリー構成はこんな風にして見る事が出来る。

http://codepad.org/n3gvmdhE
sub tree {
    my ( $dir, $depth ) = @_;
    opendir my $dh => $dir or return;
    for my $f ( sort grep !/^\.\.?/, readdir($dh) ) {
        my $path = "$dir/$f";
        my $d = -d $path ? '/' : '';
        print "  " x $depth, $f, $d, "\n";
        tree( $path, $depth + 1 ) if $d;
    }
}

tree(".");
lib/
  ld-linux.so.2
  libc.so.6
  libcrypt.so.1
  libdl.so.2
  libm.so.6
  libnsl.so.1
  libutil.so.1
lock
t.pl
usr/
  bin/
    perl
....

モジュールの実演が出来ないところが残念だが、以下のようにiframe経由でもアクセスできるので、今後コードサンプルを見せる場として結構使えそうだ。

どう書く?orgにこの仕組みを導入できないのかなあ....

Dan the Sandboxed


この記事へのトラックバックURL

この記事へのトラックバック
コードを貼り付けてボタンを押すと実行結果を表示してくれるcodepad。(動く様...
codepadの遊び方【Inquisitor】at 2008年03月08日 04:53
アドエスからでも使えるので最近重宝しているのがcodepad。 ブラウザ上で各種プログラミング言語を色分け表示、なおかつ実行してくれるというもの。 三十路もそろそろ半ばの初学者で本...
code??【karari blog】at 2008年03月21日 09:55
こんばんは。赤坂に吉野家はあったのですが、ロッテリアが見つからず絶妙バーガーがちょっと気になるジャンカーコバヤシです。 今週からエンジニア志望者向けインターンシップの受け入れが始まりました。 3週間くらいのプログラムで0から1つ、何か動くWebサービスを....
エンジニア志望者向けサマーインターン開始【港区赤坂ベンチャー企業「イトクロ」人事採用・インターンシップブログ(blog)】at 2009年08月12日 23:29
この記事へのコメント
どう書く?.orgもですが、codeなにがし にも導入して欲しいなと。
http://code.nanigac.com/
Posted by YOSIZO at 2008年03月06日 18:53