コンパイル、パース部分

MTemplate.xsのバイナリテンプレート読み込み部分を読んでいく前に、コンパイラの方を調べてみる。 MobaSiFでは、HTMLテンプレートをコンパイルしてバイナリ形式にする。このバイナリ形式のテンプレートを、プロセス間でmmapを用いてメモリを共有しながら参…

template_insert()

perlからは「template_insert()」が呼び出される。MTemplate.xsでは、 SV* template_insert(char* file, SV* rHash, SV* rHash2, SV* rHash3);と定義されている。第一引数はテンプレートファイルのパス。第二〜第四引数がテンプレートの引数。この関数では、…

MTemplateのこと

「$MOBA_HOME/src/xs/MTemplate」にあるMTemplate.xsを読んでみた。ソースの頭は、XSとmmapと標準ヘッダファイルのインクルード。 #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" #include <sys/mman.h> #include <stdlib.h> 次に定数を定義。 #def</stdlib.h></sys/mman.h>…

mmapのこと

MobaSiFでは、mmapを使ってテンプレートファイルをプロセス間で共用するようにしている、ということなのですが、mmapというのを初めて聞いたので調べました。 調べた結果、自分なりの理解の仕方は下記のような感じ。 linuxのシステムコール ファイルをメモリ…

Basic認証

定期的にBasic認証がかかったページにアクセスする必要があったので、それを行うスクリプトを書いた。 test.pl use strict; use warnings; use LWP::UserAgent; my $user = 'hato'; my $passwd = 'mune'; my $ua = LWP::UserAgent->new; my $req = HTTP::Req…

テキストフォーム増殖

友人の会社の研修で、javascriptを使ってフォームを増やしていく、という課題が出たそうだ。ということで、勝手にその課題をやってみた。 <html> <head> <title>test</title> <script type="text/Javascript"> 質問' + next_id + '</h2>'; var q_id = 'q' + next…

第14回オープンソーステクノロジー勉強会に行ってきた

会社の同僚に誘われて、グリー株式会社さんが主催する「第14回オープンソーステクノロジー勉強会」に行ってきました。今回のテーマは、2008年5月にオープンソース化されたフレームワーク「MobaSiF」について。「MobaSiF」の開発者である川崎修平さん(DeNA)…