memoryless sources

無記憶情報源。

1 リアクション &

Gauche で簡単なレイトレーサを作って、Heroku 上で並列実行できるようにしてみた。 http://gauche-raytracer.herokuapp.com/renderppm.html

サーバ上では PPM 形式の画像データを生成して、それをクライアント側で canvas 上にピクセルを描画しています。1 リクエストにつき横 640 ピクセル、縦 8 ピクセルの細長い領域をレンダリングして、それをクライアント側で張り合わせています。

Heroku の Dyno を増やすとそれだけたくさんのプロセスで処理が分散されているのが分かりますが、みた感じあんまりスピードアップしてるような感じがしないので、どこかにボトルネックがあるのかもしれない。

Docker を使うと Heroku の Cedar スタックの環境が簡単に作れるので動作確認に便利。

登録カテゴリ: LL2014 Gauche Docker raytracer Heroku

0リアクション &

  • jpeg-6b をビルドするときは libtool を使って --enable-shared でビルドする
  • このとき make の引数に LIBTOOL=libtool としてシステムにインストールされた libtool が起動するように指定する

登録カテゴリ: jpeg libtool gd

0リアクション &

LL Diver というイベントで発表させてもらうことになったので、いま準備中なんですが、Heroku で Gauche を動かすこと自体は割と簡単なんですが、そのあとがけっこう大変ぽい。

Heroku の Celadon Cedar スタックと似た環境を用意するために Docker で Ubuntu 10.04 のイメージをダウンロードしてきた。便利。

最初は Gauche-gd を動かそうと思ったけど、そのためには GD 本体の他にも JPEG とか PNG とか Zlib とか FreeType とかいろいろライブラリを用意しないとダメでちょっと間に合うか心配なので、ちょっと日和って、ピクセルの描画はクライアント側でやろうかなあと計画中。

いま、Gauche-gd で make check するとこんな感じ。

root@9fb6afbc4ffe:/root/Gauche-gd-0.3.1# make check
/root/work/app/local/bin/gosh -I. test.scm > test.log
Testing graphics.gd ...                                          GD Error: gd-jpeg: JPEG library reports unrecoverable error: Empty input filelibpng warning: Interlace handling should be turned on when using png_read_image
failed.
discrepancies found.  Errors are:
test bindings in module graphics.gd: expects () => got "procedures received wrong number of argument: gd-image-save-as-gd2((#f G76)) got 2"
test gd-image-get-clip: expects (10 20 319 300) => got (10 47347719471124 319 47347719471404)

JPEG ライブラリははじめ IJG の v9a を入れてみたんだけど、上のようなエラーが出たので定番の 6b を入れてみたけど同じエラーがでたのでとりあえず別の方法を考えることにした。

クライアントで描画するには canvas を使えばいいかな。あと、分散計算をまとめるために Redis か何かを使うかどうか考え中。

登録カテゴリ: gauche Heroku gd jpeg Docker ll2014