"Monadic Design Patterns for the Web", Artima Press
by Greg Meredith (Lucius Gregory Meredith)
http://www.biosimilarity.com/main.html
http://www.biosimilarity.com/publications.html
"Functional Programming in Scala", Manning Publications
by Paul Chiusano, Runar Bjarnason and Tony Morris
http://www.scala-lang.org/node/10448
?Big Data?
?Principels and best practice of scalable realtime data systems?
Manning Publications
by Nathan Marz
http://www.slideshare.net/nathanmarz/the-secrets-of-building-realtime-big-data-systems
https://thestrangeloop.com/sessions/cascalog
2011年9月25日日曜日
2010年11月13日土曜日
Quercas on Google App Engine
Quercus on Google App Engine利用時に、Slim3のServletで使われているように「load-on-startup」を「1」にしてやると、Spin-up時のcpu_msが3000前後でほぼ変わらないのに対し、Servletのレスポンスタイム(ms)が14000前後から3000前後と大幅に縮小されるのが確認できた。(まあ偏っただけかもしれないが・・)
「com.caucho.quercus.servlet.GoogleQuercusServlet」だけでは、効果が確認できなかった。そこで、GAEでは使わない「com.caucho.quercus.servlet.QuercusServlet」の設定を追加して、「load-on-startup」を「1」にしてやると、レスポンスタイムが短縮する変化が起きた。
WEB-INF/web.xml:
<servlet>
<servlet-name>quercus</servlet-name>
<servlet-class>com.caucho.quercus.servlet.GoogleQuercusServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>QuercusHot</servlet-name>
<servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<exclude path="/**.php" />
</static-files>
<resource-files>
<include path="/**.php" />
</resource-files>
resin.jarが、大きいいので分割するのに、appengineのdeployには「--enable_jar_splitting」が必要でした。 # appengine-java-sdk-1.3.8/bin/appcfg.sh --enable_jar_splitting update WEB-INF/..
「com.caucho.quercus.servlet.GoogleQuercusServlet」だけでは、効果が確認できなかった。そこで、GAEでは使わない「com.caucho.quercus.servlet.QuercusServlet」の設定を追加して、「load-on-startup」を「1」にしてやると、レスポンスタイムが短縮する変化が起きた。
WEB-INF/web.xml:
<servlet>
<servlet-name>quercus</servlet-name>
<servlet-class>com.caucho.quercus.servlet.GoogleQuercusServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>QuercusHot</servlet-name>
<servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
![]() |
| spin-up時間 |
残りの、quercusを動かすための設定は、
WEB-INF/appengine-web.xml:
<static-files><exclude path="/**.php" />
</static-files>
<resource-files>
<include path="/**.php" />
</resource-files>
WEB-INF/lib:
に、resin.jarを追加。
設定については、下記のページを参照してください。
・http://blog.caucho.com/?p=187
・http://www.atmarkit.co.jp/fcoding/articles/gaephp/02/gaephp02b.html (日本語環境の設定あり)
2010年7月22日木曜日
Clojre 3rd-party ライブラリ メモ
Ring
API http://mmcgrana.github.com/ring/
Aleph
API http://ztellman.github.com/aleph/
Ring-Netty-Adapter
Clojure製FlightCasterのGitHubやClojars
GitHub http://github.com/jstrate
Clojars http://clojars.org/users/jstrate
GitHub http://github.com/bradford
Clojars http://clojars.org/users/bradford
OpenGL,OpenCL,OpenCVのインターフェイスを作っている方
GitHub http://github.com/ztellman
Clojars http://clojars.org/users/ztellman
API http://mmcgrana.github.com/ring/
Aleph
API http://ztellman.github.com/aleph/
Ring-Netty-Adapter
Clojure製FlightCasterのGitHubやClojars
GitHub http://github.com/jstrate
Clojars http://clojars.org/users/jstrate
GitHub http://github.com/bradford
Clojars http://clojars.org/users/bradford
OpenGL,OpenCL,OpenCVのインターフェイスを作っている方
GitHub http://github.com/ztellman
Clojars http://clojars.org/users/ztellman
ラベル:
Clojure
2010年7月18日日曜日
Clojure 1.1, 1.2 API 一覧
master branch
clojure API
http://clojure.github.com/clojure/api-index.html
clojure-contrib API
http://clojure.github.com/clojure-contrib/index.html
1.1.x branch
clojure API
http://clojure.github.com/clojure/branch-1.1.x/index.html
clojure-contrib API
http://clojure.github.com/clojure-contrib/branch-1.1.x/index.html
clojure (1.2 <- 1.1)
追加
clojure API
http://clojure.github.com/clojure/api-index.html
clojure-contrib API
http://clojure.github.com/clojure-contrib/index.html
1.1.x branch
clojure API
http://clojure.github.com/clojure/branch-1.1.x/index.html
clojure-contrib API
http://clojure.github.com/clojure-contrib/branch-1.1.x/index.html
clojure (1.2 <- 1.1)
追加
clojure-contrib (1.2 <- 1.1)
変更
追加
ラベル:
Clojure
2010年6月28日月曜日
旧compojure.orgのサイトミラー
旧compojure.org? (compojure-0.2.0程度)の ミラーサイト を試験的に用意しました。
(ソース)
gh-pagesについても(6/28現在)エラーが出ているので、用意してみました。
(ソース)(7月上旬には復帰)
(ソース)
2010年6月22日火曜日
php pecl探索
APCやmemcachedなど従来から使われている物以外のPHPに新しい使い勝手を追加するpecl拡張を紹介したいと思います。
ssh2
指定したファイルからの暗号鍵認証も、パスワード認証も可能。
SFTP接続からアップロード・ダウンロード、切断まで。
タイムアウトがある場合は、ポーリングについては不明ですので、バッチ処理を挟む場合、ファイル操作ごとに接続するなどしましょう。
http://www.php.net/ssh2
tokyo_tyrant
Webクラスター環境で、共有セッションの管理などに使えます。
http://www.php.net/manual/ja/tokyo-tyrant.installation.php
ttserver -port 2000 -ext /path/to/expire.lua -extpc expire 30.0 '/tmp/sessions.tct#idx=ts:dec'
TokyoTyrantサーバーをluaで拡張することができます。
セッション管理は、pecl側で制御することも出来ます。
ssh2
指定したファイルからの暗号鍵認証も、パスワード認証も可能。
SFTP接続からアップロード・ダウンロード、切断まで。
タイムアウトがある場合は、ポーリングについては不明ですので、バッチ処理を挟む場合、ファイル操作ごとに接続するなどしましょう。
http://www.php.net/ssh2
tokyo_tyrant
Webクラスター環境で、共有セッションの管理などに使えます。
http://www.php.net/manual/ja/tokyo-tyrant.installation.php
ttserver -port 2000 -ext /path/to/expire.lua -extpc expire 30.0 '/tmp/sessions.tct#idx=ts:dec'
TokyoTyrantサーバーをluaで拡張することができます。
セッション管理は、pecl側で制御することも出来ます。
Tokyo Cabinet と Tokyo Tyrantが入っていれば、(rpmかlocalインストールなどで、自分は、specからインストールしました)。luaも入れておきましょう。
pecl install tokyo_tyrantで、いけますよ。(現在は、1.0前なので、 pecl install tokyo_tyrant-0.5.0 とか必要)
http://www.php.net/tokyo-tyrant
http://github.com/mkoppanen/php-tokyo_tyrant/
http://www.php.net/tokyo-tyrant
http://github.com/mkoppanen/php-tokyo_tyrant/
oauth
OAuthのC実装2010年6月2日にめでたく1.0.0がリリース
http://php.net/oauth
lzf
ストリーム圧縮向けの高速な圧縮伸張をサポート。
ただし、肝心のストリーム圧縮やフィルターでの利用は出来ない模様。
http://www.php.net/lzf
libevent
待望のモジュール、PHPでスレッドベースのイベントサーバが用意できます。いままでも、プロセスベースや、HTTP処理ベースの並列化は可能でしたが、例のような軽量な処理 が可能になります。
OAuthのC実装2010年6月2日にめでたく1.0.0がリリース
http://php.net/oauth
lzf
ストリーム圧縮向けの高速な圧縮伸張をサポート。
ただし、肝心のストリーム圧縮やフィルターでの利用は出来ない模様。
http://www.php.net/lzf
libevent
待望のモジュール、PHPでスレッドベースのイベントサーバが用意できます。いままでも、プロセスベースや、HTTP処理ベースの並列化は可能でしたが、例のような軽量な処理 が可能になります。
http://www.php.net/libevent
mongo
MongoDB接続用モジュール
http://www.php.net/mongo
amqp
RabbitMQな どAMQP実装へのクライアント用の接続モジュールです。
http://www.php.net/amqp
stomp
こちらも、メッセージキュー(ActiveMQなど、stompプロトコルに対応した)クライアント用の接続モジュールです。
http://www.php.net/stomp
mongo
MongoDB接続用モジュール
http://www.php.net/mongo
amqp
RabbitMQな どAMQP実装へのクライアント用の接続モジュールです。
http://www.php.net/amqp
stomp
こちらも、メッセージキュー(ActiveMQなど、stompプロトコルに対応した)クライアント用の接続モジュールです。
http://www.php.net/stomp
2010年6月21日月曜日
Kyoto Cabinetとluaとluajit
lua-5.14用にコンパイルした(/usr/local/lib/lua/5.1/)kyotocabinet.soを
luajitから使ってみました。luaとの違いは、おそらくループまわりの高速化になります。
vmplayer上の1core 2GHzで比較
$ lua kctest.lua order "casket.kch" 1000000
$ luajit kctest.lua order "casket.kch" 1000000
time: 3.576
getting records:
time: 3.483
removing records:
time: 3.417
closing the database:
time: 0.009
12%前後高速化したようです。
ちなみに、/usr/local/lib/kyotocabinet.soをldconfigしてないと、
luajitでは、require "kyotocabinet"で、セグメントフォルトしました。
luaでは、kyotocabinet.soが、見つからないというメッセージになりました。
ここら辺の面倒見は、luajitよりluaのが、いいようです。
仕組みを分かってないが、luajit-2.00-beta4.soと、リンクする必要はないのか。
必要なのは、Tokyo Tyrantみたいに、luaをKyoto Cabinet側に組み込むときかな?
そして、今後のlua-5.2.0登場で、luajitがどうなるのか戦々恐々としてます。
luajitから使ってみました。luaとの違いは、おそらくループまわりの高速化になります。
vmplayer上の1core 2GHzで比較
$ lua kctest.lua order "casket.kch" 1000000
opening the database:
time: 0.001
setting records:
time: 4.013
getting records:
time: 3.867
removing records:
time: 4.019
closing the database:
time: 0.008
$ luajit kctest.lua order "casket.kch" 1000000
opening the database:
time: 0.001
setting records:
getting records:
time: 3.483
removing records:
time: 3.417
closing the database:
time: 0.009
12%前後高速化したようです。
ちなみに、/usr/local/lib/kyotocabinet.soをldconfigしてないと、
luajitでは、require "kyotocabinet"で、セグメントフォルトしました。
luaでは、kyotocabinet.soが、見つからないというメッセージになりました。
ここら辺の面倒見は、luajitよりluaのが、いいようです。
仕組みを分かってないが、luajit-2.00-beta4.soと、リンクする必要はないのか。
必要なのは、Tokyo Tyrantみたいに、luaをKyoto Cabinet側に組み込むときかな?
そして、今後のlua-5.2.0登場で、luajitがどうなるのか戦々恐々としてます。
ラベル:
kyotocabinet
,
lua
,
luajit
登録:
コメント
(
Atom
)
