2013/02/13

node.jsをソースからビルドしてインストール(簡単) on Fedora17

以前の記事ではnaveを使ってnode.js環境をセットアップしましたが、
今回はソースコードからビルドしてインストールする話です。
といっても特に何のことはなく、とっても簡単です。
コーヒー飲んでたら終わる手軽さです♪

尚、今回利用した環境は、Fedora 17 (64bit)です。

まずはnode.jsのソースコードのアーカイブを取得して...
(執筆時の最新版は、node-v0.8.19でした。尚、Githubからgit cloneしてもOKです。)
$ wget http://nodejs.org/dist/v0.8.19/node-v0.8.19.tar.gz
展開してビルドし、インストールします。 (尚、g++, openssl-devel、pythonなど必要なものは、前もってインストールしておいてください。)
$ tar zxf node-v0.8.19.tar.gz
$ cd node-v0.8.19/
$ ./configure
$ make
$ sudo make install
これで、nodeとnpmがインストールされました。
/usr/local/bin にインストールされたので、/usr/binからリンクを張ります。
$ sudo ln -s /usr/local/bin/node /usr/bin/node
$ sudo ln -s /usr/local/bin/npm /usr/bin/npm
終わりです ( ̄ー ̄)b

2013/02/10

Hello, Jenkins. GitLab+Jenkins+perl(Mojolicious)でCIをしてみた

こたつ最高(>ω<)♪ こたつで丸くなっております、Masanoriです(笑)

公開しているプロジェクトではTravis-CIを使わせていただいていたりするのですが
今回は、自前のGitLabで管理しているプロジェクトにもCIを...ということで...

Jenkinsをインストールして、GitLab上のGitリポジトリ、
および nginx(リバースプロキシとして...)と組み合わせる話(※自分用メモ)です。
また、
Jenkinsを用いて、perl(Mojolicious)のプロジェクトをテストします。
(加えて、CPANモジュールの一時的な自動インストールも行えるようにします。[追記: 2013/02/11])


※尚...Gitlabには、Gitlab CIというシンプルなソフトウェアが提供されており、通常はそちらを使うと良いと思います。今回は Jenkinsを使うこととしました。
Jenknsをちゃんと使ってみたかった!という動機がw
  • サーバはいつも通りのCentOSです。JDKなどもセットアップ済みです。
  • nginxをリバースプロキシとして、Jenkinsを /jenkins 下で動作させます。
    (毎度お断りしておきますが、以下にある設定内容は実際の運用サーバとは異なります。)
  • プロジェクトはすでにGitLabで作成済みで運用中、nginxも運用中です。
以下、
madroom project: Gitoliteに触れずにGitLabのhookからJenkins側でビルドする
を参考にさせていただきました。感謝! m(_ _)m♪
(Gitoliteを弄らない方法になっています。)


まずはJenkinsのウェブサイトからRPMをダウンロードしてインストール。
(LTS版もあるみたいですが、最新のJenkins-1.500を選択。)
$ wget http://pkg.jenkins-ci.org/redhat/jenkins-1.500-1.1.noarch.rpm
$ sudo rpm -ivh jenkins-1.500-1.1.noarch.rpm
これでJenkinsのインストールは完了です。とても楽ちんでありがたいですね。

次にJenkinsからGitリポジトリへアクセスできるよう鍵を作ります。
(今回はサーバ上でなくクライアント上で作って転送したほうが、GitLabでの登録がうまく行くそうです。)
$ ssh-keygen
Enter file in which to save the key (~~~): id_rsa_jenkins
Enter passphrase (empty for no passphrase): (空)
Enter same passphrase again: (空)
作成した鍵は、/var/lib/jenkins/.ssh/ 下に置いておきます。

さらに /var/lib/jenkins/.ssh/config を記述します。
$ sudo vi /var/lib/jenkins/.ssh/config
Host example.com
    User gitolite
    Port xx
    Hostname example.com
    IdentityFile /var/lib/jenkins/.ssh/id_rsa_jenkins
またknown_hostsも手動で記述しておきますw
$ sudo vi /var/lib/jenkins/.ssh/known_hosts
[example.com]:xx,[xxx.xx.xxx.xxx]:xx ssh-rsa ~~~~
次にJenkinsの設定ファイル(/etc/sysconfig/jenkins)を開いて
ポート設定およびディレクトリパスを変更します。

$ sudo vi /etc/sysconfig/jenkins
~~~~
# JENKINS_PORT="8080"
JENKINS_PORT="8888"
~~~~
#JENKINS_ARGS=""
JENKINS_ARGS="--prefix=/jenkins"
さらにnginxの設定ファイルにリバースプロキシのための設定を追加しておきます。
$ sudo vi /etc/nginx/nginx.conf
http {
    ~~~~
    upstream Jenkins.backend {
        server 127.0.0.1:8888;
    }
 ~~~~
    server {
        ~~~~
        location ~ ^/jenkins.* {
                proxy_pass      http://Jenkins.backend
                break;
        }
        ~~~~
    }
}
次に、Gitlabにブラウザからアクセスし、Jenkinsのユーザアカウントを作成します。
またCIを行うプロジェクトの"Reporter"権限をそのアカウントに対し設定します。

さらに、プロジェクトのWebHooks画面で JenkinsのURL (http://example.com/jenkins/git/notifyCommit?url=gitolite@example.com:xxx/yyy.git)
を登録しておきます。

また、作成したアカウントでGitlabにログインして、
さきほど作成した公開鍵を登録します。


次に...Jenkinsを起動します。
$ sudo service jenkins start
これでブラウザからアクセスできるようになっているはずです。 http://example.com/jenkins

早速、"新規ジョブ作成"へ進....
...といいたいところですが、その前に...Git Pluginのインストールです。
これがWebのUIで取得〜適用まで可能になってるんですね〜...素晴らしいです! (ちょっと違うところでは、TracとかRedmineもそうなってきてますが、手軽でありがたいことですw
 以下スクリーンショット付きですw)


まず、"Jenkinsの管理"をクリック。
"プラグインの管理"をクリック。
"利用可能"タブをクリックして...
"Git Plugin"にチェックを入れ、"再起動せずにインストール"をクリック。
(※"Git Server Plugin"などありますが、またこれとは別です。
 "Git Plugin"だけ、フィルタをかけてもうまくヒットしないときがありました。 "高度な設定タブで、設定をいじったり、何回か更新処理を実行した後に正しく表示されました。)

(それにしても...他にも色々おもしろそうなプラグインがwktk)

"インストール完了後、ジョブがなければ〜再起動"にチェックを入れて待ちます。
インストールが終われば、ダッシュボードから再度、"Jenkins"の管理をクリックし、 "システムの設定"をクリックします。

"Git plugin" セクションの"Global Config user.name Value"と、
 "Global Config user.email Value"を入力し、"保存"をクリック。


次に、再度ダッシュボードに戻り、
"新規ジョブ作成"をクリック。
ジョブ名を入力し"フリースタイル・プロジェクトのビルド"を選択。
"OK"をクリック。

"Git"にチェックを入れ "Repositories"の
"Repository URL"に ssh://~なURLを入力して・・・

さらに、"ビルド・トリガ"セクションの "SCMをポーリング"にチェックを入れ "保存"をクリックします。

また最後であれですが..Jenkinsで認証を設定しておきましょう(※最初にやるべきか(汗;
"Jenkinsの管理"→"グローバルセキュリティの設定"から、設定できます。
 [追記:2013/02/11]
"アクセス制御"セクションの "行列による権限設定"を選択して、表を編集することで、非ログインユーザーによる閲覧をブロックすることが可能です。
(※尚、"ログイン済みユーザーに許可"のほうを選択してしまうと、非ログインユーザでも閲覧はできますので注意。)
尚、このグローバルセキュリティの設定ですが、設定ミスによりアクセスできなくなった場合は、
一時的に無効化しましょう (→ Jenkins パスワードのリセット方法 - エンジニアきまぐれTips (感謝♪))


さらにもし必要ならば、別途、nginx側などで閲覧認証をつけてください。

これでプロジェクトを取り込む設定は、ひとまず完了です。

あとは、GitLab上でTest Hookを実行するか、リポジトリにプッシュすれば
Jenkins側で、ひとまずビルドが走ります.........



さて、これではまだ、テストケースを実行して評価することができません。

今回CIを実施したいプロジェクトは、
perlのMojoliciousというWAFで開発しているWebアプリケーションなのですが、
これをJenkinsでテストできるよう設定したいと思います。

Tatsuya Blog » PerlのテストコードをJenkinsで動かすのページを
参考にさせていただきました。感謝です m(_ _)m♪
  • 但し、今回の記事では、テスト実行の際、一時的にCPANモジュールを自動インストールできるようにしておきます
    インストールされるモジュールは、Makefile.PLに定義します。
  • テストスクリプト(t/*.t)とMakefile.PLについては、作成済みです。
    Makefile.PLは、以前の記事: Travis CIでPerl(Mojolicious)アプリケーションを自動テストを参照。
    また、Mojoliciousでのテストスクリプトの書き方は、Test::Mojoなどを参考に。
まず cpanmを Jenkins用に、
Jenkinsのホームディレクトリ(/var/lib/jenkins)下へインストールします。

$ sudo -u jenkins mkdir /var/lib/jenkins/bin
$ cd /var/lib/jenkins/bin
$ sudo -u jenkins curl -LOk https://raw.github.com/miyagawa/cpanminus/master/cpanm
$ sudo chmod +x ./cpanm

次に、cpanmで、TAP::Formatter::JUnit をインストールします。
$ sudo cpanm TAP::Formatter::JUnit

次に、Jenkins上のプロジェクトの設定画面を開きます。


ここでは、"ビルド"セクションで、"シェルの実行"を選び、
"シェルスクリプト"欄に次のコマンドを記述します。
/var/lib/jenkins/bin/cpanm -l dlibs --installdeps .
prove -Idlibs/lib/perl5 -b --formatter=TAP::Formatter::JUnit -lvr t > test_results.xml
(最初にcpanmを使って、dlibsフォルダ下にモジュールを自動ダウンロードしています。
尚、proveコマンドについては、詳細なログが不要であれば-v オプションを取り除くといいです。
オプションについて詳しくは...prove についてのおさらいを参照するとよいでしょう。(感謝♪))


さらに、"テスト後の処理"セクションで、"JUnitテスト結果の集計"を選び、
 "テスト結果XML"欄に次のファイル名を入力します。
test_results.xml
"保存"ボタンをクリックして設定完了です。

あとはプッシュすれば、ビルドが自動的に行われ、テスト結果が生成されます。
また手動でもビルド実行が可能です。

無事通過(PASS)したテスト。Jenkinsでは青色のマークが表示されます。
通知設定などはまた別途行ってください。
それにしても...Jenkinsおじさん、ステキですwww

[2013/02/18 追記]
今回の続きとして...Jenkinsへスレーブを追加してみました。
Masanoriのプログラミング日誌++: Jenkinsのスレーブノードを追加してみた

2013/02/05

WebAPIドキュメント作成サービス apiary.ioを使ってみた

apiary.ioを使ってみました。
WebAPI(REST API)のドキュメントをサクっと書けるサービスです。
http://apiary.io/

去年(2012)年にローンチされたサービスで、何かに使いたいな〜と思いつつ...。
今回、開発中のWebサービスにWebAPIを実装することとなったので使わせていただいております。 (そのドキュメントはまだ公開してないです。すみません(汗;))

以下のように、API Blueprintという簡単な文法で、
"リクエスト"と"レスポンス"の例を記述するだけで
便利なドキュメントができあがります。

HOST: http://api.example.com/
--- ほげほげ API v2 ---
---
Welcome to our API. Comments support [Markdown](http://daringfireball.net/projects/markdown/syntax) syntax.
---
-- Shopping Cart Resources --
GET /shopping-cart
> Accept: application/json
< 200
< Content-Type: application/json
{ "items": [
    { "url": "/shopping-cart/1", "product":"2ZY48XPZ", "quantity": 1, "name": "New socks", "price": 1.25 }
  ] }
(ちなみに、descriptionなどの項目は、Markdownベースの記法を利用できるようになっています。)
作成されたドキュメントページ: http://docs.test0mugifly.apiary.io/
(ドキュメント上に記載されたWebAPIは実在しません。あしからず。)
簡単に使い方を説明しておきますと・・・。
まず...何が便利なのかというと・・・

この記述をもとにして、
テストリクエストを受けるための"Mock Server"を自動で用意してくれます。
このように Mock Serverが自動的に使えるようになる。
このMock Serverはドキュメントに記述したままのレスポンスを返すことができる他、
Proxyとして動作させることもでき、テスト用アクセスを識別するためのHTTPヘッダを自動付加して、productionなWebAPIサーバへアクセスさせる事も可能です。
(つまり、ドキュメント(仕様書)のリクエスト/レスポンスと、実際のクライアントによるリクエスト / 実際のWebAPIによるレスポンスを比較することができるわけです。)

"Inspector"タブでは、全てのリクエストの履歴一覧と詳細確認が行える。
リクエストヘッダ、レスポンスヘッダ、レスポンスボディについて各々、
ドキュメント(仕様書)に記述されたものと、実際の結果との比較が可能。
apiary.ioのドキュメント設定画面。
Cross-Origin Requestのヘッダを付加したり、Mock ServerをProxyにすることが可能。
また、JavaScriptやpythonによるアクセスのためのサンプルコード表示ができたり...
ドキュメントページの"Example"タブでは、
各プログラミング言語によるサンプルコードの表示を行える。
(個人的には...perlによるサンプルコードは用意されていないのが少々不満(笑))
ブラウザ上でXMLHTTPRequestによるテストリクエストを行えたり...
おなじく、ドキュメントページの"Try it"タブでは、
XMLHTTPRequestによるテストリクエストをその場で行える。
また、コメントによるディスカッションもでき...結構至れり尽くせりな気がします。
おなじく、ドキュメントページの"Comment"タブでは、
各resourceごとにスレッドを立ててコメントが書ける。
この手軽さでありながら、大手サービスのWebAPIドキュメントにも引けをとらないレベルといっても良いかもしれませんね。

作成したドキュメントは、一部登録メンバーのみ閲覧可能なように、Privateにすることもできます。
また、GitHubのリポジトリでドキュメントを管理することもでき、プッシュするだけで更新が可能になっています。複数人編集も楽ですね。
(apiary.io上のエディタで編集したほうが、完全なライブプレビューが出来るので便利かもしれませんが。)

"WebAPIドキュメントを書こうと思っても...ふつうのWikiページなどに書くのは面倒くさいな〜"という場合も、使ってみるとかなり便利だと思います。
今のところベータバージョンですが、これで無料ですし、試してみてはいかがでしょうか。

2013/01/30

TeXLive 2012+Vim-LaTeXでてふてふする on Fedora 17

大学のレポート類は基本的にLaTeXなのですが、
これまで、UbuntuのほうにしかTeX環境を整備していなかったため...
今回はFedora17で、TeXLive 2012を用いたTeX環境構築をやってみることにしました。

一昔前とは違い、おかげ様で日本語対応のLaTeX環境がかなり整備されてきていて、
導入がめちゃくちゃ簡単になっています。ありがたい事です...ε-(´∀`*)ホッ
UTF-8もそのまま扱えます。

まずは、TeXLive 2012のインストール。
http://fedoraproject.org/wiki/Features/TeXLive の内容どおりなんですがw

リポジトリを追加するだけで、yumでインストールできるのでなんとも楽です。
(注意: リポジトリを追加しないまま行った場合、恐らく、古いTeXLiveがインストールされてしまいます。)
また、platexを扱うためにtexlive-collection-langcjkも一緒にインストールします。
$ sudo rpm -i http://jnovy.fedorapeople.org/texlive/2012/packages.fc17/texlive-release.noarch.rpm
$ sudo yum clean all
$ sudo yum install texlive texlive-collection-langcjk
これだけです。私の環境の場合、340MB程度のダウンロードとなりました。


次は、Vim-LaTeXのインストール。
一応、仮にも私はVimを使っていますので、ありがたいですw
※ところで...念の為。Fedoraのデフォルトですと、vim-enhancedが入っていなかったりするので、その場合は先に入れておきましょう。

こちらもとても簡単になっています。
以下の手順は、Vim-LaTeX - TeX Wikiの内容どおりにやってみたものです。(感謝♪)

まず、Vim-LaTeXのアーカイブをダウンロードします。
http://sourceforge.net/projects/vim-latex/files/
執筆時の最新版は、vim-latex-1.8.23-20130116.788-git2ef9956.tar.gz でした。

ダウンロードしたアーカイブを展開します。
$ tar vxf vim-latex-1.8.23-20130116.788-git2ef9956.tar.gz

展開されたディレクトリ内の全てのディレクトリを ~/.vim/ 下へコピーします。
$ cd vim-latex-1.8.23-20130116.788-git2ef9956/
$ ls
Makefile     compiler  ftplugin  latextags  plugin
Makefile.in  doc       indent    ltags

$ cp . ~/.vim/ -R

最後に、~/.vimrc に記述を追加します。
$ vi ~/.vimrc
""
"" Vim-LaTeX
""
filetype plugin on
filetype indent on
set shellslash
set grepprg=grep\ -nH\ $*
let g:tex_flavor='latex'
let g:Imap_UsePlaceHolders = 1
let g:Imap_DeleteEmptyPlaceHolders = 1
let g:Imap_StickyPlaceHolders = 0
let g:Tex_DefaultTargetFormat = 'pdf'
let g:Tex_FormatDependency_ps = 'dvi,ps'
let g:Tex_FormatDependency_pdf = 'dvi,pdf'
"let g:Tex_FormatDependency_pdf = 'dvi,ps,pdf'
"let g:Tex_FormatDependency_pdf = 'pdf'
let g:Tex_CompileRule_dvi = 'platex -synctex=1 -interaction=nonstopmode $*'
"let g:Tex_CompileRule_dvi = 'uplatex -synctex=1 -interaction=nonstopmode $*'
let g:Tex_CompileRule_ps = 'dvips -Ppdf -o $*.ps $*.dvi'
let g:Tex_CompileRule_pdf = 'dvipdfmx $*.dvi'
"let g:Tex_CompileRule_pdf = 'ps2pdf $*.ps'
"let g:Tex_CompileRule_pdf = 'pdflatex -synctex=1 -interaction=nonstopmode $*'
"let g:Tex_CompileRule_pdf = 'lualatex -synctex=1 -interaction=nonstopmode $*'
"let g:Tex_CompileRule_pdf = 'luajitlatex -synctex=1 -interaction=nonstopmode $*'
"let g:Tex_CompileRule_pdf = 'xelatex -synctex=1 -interaction=nonstopmode $*'
let g:Tex_BibtexFlavor = 'pbibtex'
"let g:Tex_BibtexFlavor = 'upbibtex'
let g:Tex_MakeIndexFlavor = 'mendex $*.idx'
let g:Tex_UseEditorSettingInDVIViewer = 1
let g:Tex_ViewRule_dvi = 'pxdvi -watchfile 1'
"let g:Tex_ViewRule_dvi = 'advi -watch-file 1'
"let g:Tex_ViewRule_dvi = 'evince'
"let g:Tex_ViewRule_dvi = 'okular --unique'
"let g:Tex_ViewRule_dvi = 'wine ~/.wine/drive_c/w32tex/dviout/dviout.exe -1'
let g:Tex_ViewRule_ps = 'gv --watch'
"let g:Tex_ViewRule_ps = 'evince'
"let g:Tex_ViewRule_ps = 'okular --unique'
"let g:Tex_ViewRule_ps = 'zathura'
"let g:Tex_ViewRule_pdf = 'texworks'
let g:Tex_ViewRule_pdf = 'evince'
"let g:Tex_ViewRule_pdf = 'okular --unique'
"let g:Tex_ViewRule_pdf = 'zathura -s -x "vim --servername synctex -n --remote-silent +\%{line} \%{input}"'
"let g:Tex_ViewRule_pdf = 'qpdfview --unique'
"let g:Tex_ViewRule_pdf = 'pdfviewer'
"let g:Tex_ViewRule_pdf = 'gv --watch'
"let g:Tex_ViewRule_pdf = 'acroread'
"let g:Tex_ViewRule_pdf = 'pdfopen -viewer ar9-tab'
(コードの引用元: http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?Vim-LaTeX#f59a6b76 感謝♪
このコードはコメントアウトされている部分が多いですが、設定を弄りやすいですね。)


以上です。

これで、vimを使って.texファイルを開くと・・・Vim-LaTeXが適用されます。
Vim-LaTeXを有効にしたVimで.texファイルを開いたところ。
また、Vimだけでなく、GVIM環境でもきちんと反映されます。
Vim-LaTeXを有効にしたGVIMで.texファイルを開いたところ。
次は...試しにVim上で.texファイルを作って、TeXLiveでtex→PDFにしてみます。
$ vi test.tex
\documentclass[a4j,12pt]{jarticle}
\title{てふてふ}
\author{masanori}
\date{\today}
\begin{document}
\maketitle

\section{\LaTeX なう!}
これはテストです。
\begin{math}
e^{i\theta} = \cos\theta + i \sin\theta
\end{math}

\end{document}
ここで...ESCでインプットモードを解除して、いつもどおりに
: w 
で保存します。

そして、
\ll
を素早く入力することで、LaTeXによるコンパイルが実行されます。

さらに、
\lv
を素早く入力すると、.texファイルと同じディレクトリにpdfファイルが生成され、
evinceなどのビューアでPDFファイルが開かれます。
(dviファイルでのプレビューをデフォルトとしたい場合等は、先ほどの.vimrcに記述したコードをいじるだけです。)


(尚、YaTeXなどと同じで、一度、\lvをしてプレビューを開いている間は、
編集しても、上書き&\ll(コンパイル)するだけで、自動的にプレビューへと反映されます。)

詳しい使い方は、http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?Vim-LaTeX#v4639f7b を参照させていただきましょう(>ω<)

以上です♪


余談ですが、GUIなエディタ好みの方は...
TeXMakerが使いやすいみたいですので、そちらも。

http://hgeekooohay.blogspot.jp/2013/01/ubuntu1210tex.html

2013/01/26

Kyoto Tycoonの導入とperlからのアクセス (on Fedora 17 and Ubuntu)

Kyoto CabinetとKyoto Tycoonを試してみました。

以前から気になりつつも、ちょっと今更になってしまったのですが・・・
開発中のWebアプリケーションで使いたい!という動機です(笑)
Fedora 17 および Ubuntu 12.04で以下の手順による動作を確認できました。

まず、必要なパッケージをインストールします。
$ sudo yum install libcurl gcc make zlib-devel
尚...Ubuntuなど(Debian系)では次のような感じです:
$ sudo apt-get install curl gcc make zlib1g-dev libbz2-dev build-essential

次に、Kyoto Cabinetをインストールします。
$ wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.76.tar.gz
$ tar zxf kyotocabinet-1.2.76.tar.gz
$ cd kyotocabinet-1.2.76/
$ ./configure
$ make 
$ sudo make install
$ ../
その次に、Kyoto Tycoonをインストールします。
(Kyoto Tycoonは、Kyoto Cabinetをネットワークで扱うためのインターフェイスです。)
$ wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.56.tar.gz
$ tar zxf kyototycoon-0.9.56.tar.gz
$ cd kyototycoon-0.9.56/
$ ./configure
$ make 
$ sudo make install
さらに、管理用のコマンドを使えるようにスクリプトをコピーしておきます。
$ sudo cp lab/ktservctl /usr/local/sbin/
$ sudo cp lab/ktservctl /etc/rc.d/init.d/ktserver
(【Ubuntuの場合】 /etc/rc.d/init.d/ → /etc/init.d/ ですので、注意。以下も同様に読み替えてください。)

またこのスクリプトを一部編集しておきます。
$ sudo vi /etc/rc.d/init.d/ktserver
#! /bin/sh

#----------------------------------------------------------------
# Startup script for the server of Kyoto Tycoon
# chkconfig: - 80 20
#----------------------------------------------------------------

〜〜〜
PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin"
〜〜〜
(2行目付近に、このように、chkcondigのための行を追加。 また31行目付近のPATHに、/usr/local/bin を追加しておきます。) [2013/02/10:追記]

共有ライブラリパスに/usr/local/libを含めていなければ、追加しておきます。
$ vi /etc/ld.so.conf
〜〜〜
/usr/local/lib
$ sudo ldconfig
これで完了です。

では...早速、Kyoto Tycoonを起動してみます。
$ sudo service ktserver start
または
$ sudo ktserver 

これで...コンソール上にログが表示されたら、稼働中です。

とりあえず試しに、perlでスクリプトを書いて読み書きしてみることに。
ありがたいことに、Cache::KyotoTycoonというモジュールがあるので、とても簡単に扱うことができます。

まずは、cpan/cpanmで、Cache::KyotoTycoonをインストールします。
$ cpanm Cache::KyotoTycoon
あとは、スクリプトを書いて...実行。
use Cache::KyotoTycoon;

# KyotoTycoonに接続
my $kt = Cache::KyotoTycoon->new(
    host => '127.0.0.1',
    port => 1978,
);

# キー'foo'で 文字列'bar'を保存
$kt->set('foo', 'bar');
# 読み出してみる
print $kt->get('foo') ."\n";

# 時限削除機能もあるので試してみる
$kt->set('foo2', 'bar', 2); # 2sec
# 読みだしてみる
print $kt->get('foo2') . "\n"; # OK
# 2秒〜ほど待つ
sleep(2500);
# もう一度、読みだしてみる
print $kt->get('foo2') . "\n"; # 時限削除されているので空になる。

うーん!とってもシンプルですし、時限削除は便利ですね。
まさに...キャッシュのためにももってこいなKVSだといえます。
ベンチマークの類はまだしてないですが。メモリにも優しいそうです。

また、memcached互換なので既存のモジュールも応用できるそうです。

[2013/03/19 追記]
Cache::KyotoTycoon v0.14で行われた修正にともない、
コンストラクタ(Cache::KyotoTycoon->new)内でdbパラメータを与えると
リクエストがエラーとなってしまうようです。

[2013/05/29 追記]
パッケージ類のインストール手順を追加しました。
また、Ubuntu 12.04でもこの手順で動作を確認しているため、追記 および タイトルを変更しました。


参考にさせていただいたページ (感謝 m(_ _)m♪):

2013/01/09

Raspberry Pi+ModMyPi Caseが届いた

Raspberry Pi (Model B 512MB)+ ModMyPi Caseのセットを
ModMyPiで新年早々に注文しておいたのですが、今日届きました。

ケース色はブラック&オレンジのツートーンにしてみました(笑)

Raspberry Pi (Model B 512MB RAM)+ ModMyPi Case (Black / Orange)
 ModMyPi CaseにRaspberry Piをセットしてみたところ。
ぴったりです。基本的に端子類は外に出ます。(スキマも結構あります。)
天面のGPIO端子部分はカバーされていますが、取り除いてしまうことができます。
ちなみに実は、Raspberry Piが発売される前からRSコンポーネンツで仮予約だけしてあったのですが、
いざ発売が開始されたとき、ちょうどその時の懐具合でポチることができずw
みるみる納期が増えていき...気づけば数ヶ月待ちとかになっていましたねw

そんななかでMobileHackersさんのブログ記事で紹介されていたのがきっかけで知ったのが、RSコンポーネンツ以外の製造元からはもっと早く手に入れることが出来るということ。

それもあって...やっと今回入手に至ることができました(笑)
たしかにModMyPiでケースセットとして注文すると、日本でも納期ちょうど1週間で届きましたよ。

使い道は色々思いついているのですが、またぼちぼち弄って行きたいと思います。

2013/01/01

【10周年】Masanori's WebSiteをリニューアルしました。

2013年、あけましておめでとうございます。

2003年より公開してきましたMasanori 's WebSiteですが、
この2013を持ちまして、
おかげさまで\10周年を迎えました。

「昌紀のHP」として公開して依頼、幾度もデザイン変更、
コンテンツも変わって参りました・・・
そして今回。10周年記念...というと大げさなのですが、
リニューアルを行いました。 http://ohgita.info/

2013年1月1日 - Masanori's WebSite 10周年記念
(ちなみに以前から何やら作成していたProject.MIとは別のものでして...
2日間ほどで急遽作成したのですが...体調を崩しましてww
間に合っていない機能やコンテンツもあります・・・。今後髄時アップデートしていきます(笑) )


今年は大学も3年となり...研究もありますし、
プロジェクトの開発のほうにもこれまで以上に取り組んでまいります。

本年も、そして今後とも何卒宜しくお願い申し上げます。

2013年 元旦 Masanori.