2008-07-01から1ヶ月間の記事一覧

ソフトバンクの絵文字変換

utf8_to_sjisは、内部でSoftBankEncode::unicodeToEscaped()を呼び出している。 SoftBankEncode::unicodeToEscaped()は、utf-8の絵文字コードをwebコードに変換する関数である。この部分を見ていった。 unicodeToEscaped() ソフトバンクの絵文字コード(utf-8…

絵文字変換

MobaSiFの絵文字処理関係を見てみる。今回はフォームで絵文字が入力されて送信されるケースを考える。 各キャリアで絵文字を送信すると、絵文字は下記のような文字コードになる。 docomo Shift-JIS (d-sjis) au Shift-JIS (a-sjis) SoftBank UTF-8 (v-utf8) …

バイナリテンプレート読み込み

バイナリテンプレートを読み込むプログラムを書いてみた。 できるのはプレーンテキストの読み込みと変数の置き換えのみ。 perlから読み出せるようにもなっていないし、 ハッシュでテンプレートの変数を渡すようにもなっていない。 #include <stdio.h> #include <stdlib.h> #incl</stdlib.h></stdio.h>…

整理し直し

概要 MapReduceは、複数のマシンを使って分散的にデータ処理を行う仕組みである。MapReduceには、大きく分けて2つのフェーズがあり、それぞれ「Map」「Reduce」と呼ばれる。MapReduceは、この2つの処理を複数のマシンに同時に行わせる形で、分散処理を行な…

MapReduce

いきなりMapReduceの概念的なことを言われても理解できない(できなかった)ので、具体例から入っていく。 MapReduceの使用例として、検索のインデックス作成がある。 インデックス作成の流れ。 レポジトリにあるwebページを取ってくる docIDというIDをキーと…

バイナリ化

パースされたものは次にバイナリ化するのだが、その前にも少し操作がある。 オフセットの計算 パースされたものは各々下記のようにオフセット計算される。 # $raPartsにパースされた結果の配列の参照が格納されている my $ofs = 0; for my $raPart (@{$raPar…

簡易BBS

MobaSiFを使って、書き込みと閲覧をできるBBSのできそこないを作ってみた。公開されているサンプルコードを参考にした。作成手順をメモ。 BBSのためのデータベースとテーブルを作成 create database hato_bbs; use hato_bbs create table bbs (id int(11) au…

コンパイル、パース部分3

if文のところをもう少し詳しく見るために、下記のテンプレートをパースさせてみる。 $ if (message1 && message2) { $ uhouho1 $} elsif (message1 || message2) { $ uhouho2 $} else { $ uhouho3 $ } $ パース結果がこんな感じ。 $VAR1 = { 'cond' => 'mess…

Hadoop

YLUG(Yokohama Linux Users Group)さんの勉強会の動画を見て、Hadoopが気になった。http://www.ylug.jp/modules/pukiwiki/index.php?reading 動画を見たものの初めて聞く単語が満載で、ほとんど理解できず。ただHadoopがGoogleで用いられているシステムのク…

コンパイル、パース部分

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)…