22歳になりました

Posted at 2010-02-28T11:35:34+09:00 in Miscellaneous

年齢イヤッッホォォォオオォオウ!!! (ガタン

本日2月28日付けで22歳になりました。

いやー21歳の誕生日がついこないだだったような、 遠い昔のような、どっちなんだよって感じですが、 今日無事に22歳の誕生日を迎えました。

まあ波はあるものの最近は昔の同時期と比べると元気になってきてるし、 意欲も回復していろいろ作りたいもののアイディアも浮かんできてるんで、 なかなか精神状態としてもよくなってきてると思います。

まあたまに失敗とか勘違いとか読み間違いとか思い込みとかするんですが、 昔と比べるとだいぶ大人になってきたかなぁと言う感じです。

あと好みも変わってきたのか、前までは漫画やライトノベルとか良く読んでたんですが、 最近は新書とかdankogaiの著書とかホリエモンの著書とかが面白く感じるようになりました。

まあなんというかライトノベルとか漫画に関しては飽きてきたのかなぁと思います。 それに昔はいろいろと新しい本でよさそうなの見繕って買ってきたりしてたんですが、 今はもう昔買ったシリーズものとか、昔買って面白かった著者の本しか買わなくなってきてます。

まあ本の話は置いといて。

まあ無事に誕生日を迎えたわけなんだけれども、 このまま年取ってくと30歳、ニートとかなりそうでちょっと微妙です><

まあこのあたり高校生の時から病気療養中なんで仕方ない面があるんですが、 それでも25歳ぐらい、あと三年後ぐらいには社会復帰したいところです。

まあ節目となる年というわけでもないんですが、 このまま健康的にも上向きに年を重ねられたらなーと思います。

以上、誕生日を迎えたという話でした。

TumblrのページのソースにはアスキーアートでTumblrって書いてある

Posted at 2010-02-21T12:08:35+09:00 in Internet

Tumblrのソースを見てみたら……

Tumblrのソースを表示してみると……

Tumblrのページからリンクが貼られたという通知がtrackfeedから来てて、 ぱっとみそれっぽいリンクがないなぁ->ソース表示して検索って時に気づきました。

たぶんですが、Tumblrのサービス側の提供ページにはこのアスキーアートが貼られてるんじゃないかと思います。

まあ多分他にも気づいた人はいるんじゃないかと思いますが、 今日はじめて見つけたんで思わず記事にしてみた次第。

こういう遊び心があるサービスって良いですね。自分はもう使ってないけど。

統一言語メーカーなるものを作りました

Posted at 2010-02-19T17:11:09+09:00 in Project

【統一言語」「メーカー」「なる」「ものを」「作りました】

空の境界の第六章に出てくるらっきょのさっちんこと玄霧皐月が使う、 統一言語っぽい文章を生成する統一言語メーカーなるものを作りました。

これは何?

さっきも書きましたが、統一言語メーカーは、 空の境界という奈須きのこ氏の作品の第六章に出てくる、 全寮制の女子高でなぜか教師をやってる魔術師、 玄霧皐月の扱う統一言語らしき文章を生成するジェネレーターです。

統一言語って何?玄霧皐月って誰?そもそも空の境界って何よ?

まず空の境界っていうのは1998年ぐらいにWeb上で公開され、 2004年に講談社によって出版された、奈須きのこ氏の長編伝奇小説です。 で、現在劇場映画化もされていて、講談社から新書版上下巻と文庫版三巻が発売されてます。

で、玄霧皐月ってのは、この空の境界の第六章に出てくる敵キャラで、 全寮制の女子高の礼園女学院でなぜか教師をやってる魔術師です。

んで、統一言語ってのはその玄霧皐月が扱う言語で、 バベルの塔以前の言葉を乱される前の言語、ということになってます。

で、統一言語メーカーって何?

で、玄霧皐月が扱う統一言語は、作中で、

【あなた」「には」「見えない】

という感じで表現されているのですが、 統一言語メーカーはこれっぽい文章を生成するジェネレーターなのです!!!

使い方

  1. まず統一言語メーカーにアクセス
  2. テキスト入力欄に文章を入力。
  3. 統一言語る!をクリックして送信

という感じで、統一言語っぽいフレーズを生成して楽しめます。

技術的な話

このBlogを読んでいる読者の方は当然技術的なことが気になると思うと書いておくと、 統一言語メーカーは、普通のPerl CGIによって作られています。

動作の流れとしては、

  1. トップページから入力を受け取る
  2. 受け取った単語を統一言語っぽく分割
  3. 出力ページを生成
  4. 出力ページへリダイレクト

という感じです。

肝となるのは受け取った単語を統一言語っぽく分割ってところですが、 これはText::TinySegmenterをつかって実現しています。

Text::TinySegmentertinysegmenterというJavascriptで書かれた 分かち書きライブラリのPerl移植版で、現在CPANから0.01がインストールできます。

で、このText::TinySegmenterで分かち書きしたフレーズは、 完全にバラバラで、統一言語っぽくないので、これを今度は部分的に結合します。

このあたりを書くとネタバレになるのであんまり書きたくない、と言いつつ書きますが、 助詞同士を結合して、助動詞を前の単語とくっつけるという作業をしています。

このあたりの処理を作るのに、ちょっと苦労しましたが、まあそんなにややこしいわけでもなく、 助詞と助動詞の正規表現作ってトークンがマッチしたら処理するって感じになってます。

ちなみに、この統一言語っぽく分割するルーチンの精度ですが、まあ6~8割って感じです。 【あなた」「には」「見えない】は完璧なんですが、【ここ」「では」「見えない】【ここで」「は」「見えない】になってしまってます。あと他の文章もちょっと変だし。

特にText::TinySegmenterの元となったtinysegmenterがひらがなだけで構成される文章が弱いらしいので、 統一言語メーカーもそのあたりの特徴を引き継いじゃってます。

まあこれでMeCab使うとさすがにオーバースペックだし、他の形態素解析器使うのアレなので、 多分これはこのままです。

説明終了。感想とか

まあ当然のことながら、TYPE-MOONとか奈須きのこ氏本人とか講談社から怒られた場合は公開を中止すると思います。 まあ多分そんなことにはならないだろうと思いますが、仮になった場合にはgithubあたりでソースを公開しようかと考えてます。

まあはっきり言って、空の境界知らない人は何コレって感じな代物ですが、空の境界を知ってる人はニヤニヤできると思います。 あとまあなんか要望等あればメールなりTwitterのダイレクトメッセージなりでお知らせください。 ちなみにTwitterのアカウントは@nyarlaです。

あとまあCGIで動いてるのは出力ページ生成器(mayday.cgi)だけなんで、アクセスが集中してもそうは重くならないと思いますが、 統一言語メーカーはこのBlogと同じサーバで動いてるので、このBlogとか無貌断片の方に支障が出てくるような場合には、 もしかすると公開を一時中止するかもしれません。まあこのあたり鳴かず飛ばずになるのか、 それとも大ヒットとなるのかはわからないんですが。

まあとりあえずものは形になったんでよかったら遊んで見てください。

それでは。enjoy !

おまけ。現在発売されている空の境界の商品一覧

新書版

空の境界 上  (講談社ノベルス)

タイトル 空の境界 上 (講談社ノベルス)
ASIN 4061823612
価格 ¥1155 (2010-02-27T08:28:38Z現在の価格)
発売元 講談社
発売日 2004-06-08

空の境界 下 (講談社ノベルス)

タイトル 空の境界 下 (講談社ノベルス)
ASIN 4061823620
価格 ¥1260 (2010-02-27T08:28:39Z現在の価格)
発売元 講談社
発売日 2004-06-08

文庫版

空の境界(上) (講談社文庫)

タイトル 空の境界(上) (講談社文庫)
ASIN 406275892X
価格 ¥620 (2010-02-27T08:28:40Z現在の価格)
発売元 講談社
発売日 2007-11-15

空の境界(中) (講談社文庫)

タイトル 空の境界(中) (講談社文庫)
ASIN 4062759209
価格 ¥800 (2010-02-27T08:28:43Z現在の価格)
発売元 講談社
発売日 2007-12-14

空の境界(下) (講談社文庫)

タイトル 空の境界(下) (講談社文庫)
ASIN 4062759462
価格 ¥800 (2010-02-27T08:28:44Z現在の価格)
発売元 講談社
発売日 2008-01-16

劇場版

劇場版「空の境界」 俯瞰風景 【通常版】 [DVD]

タイトル 劇場版「空の境界」 俯瞰風景 【通常版】 [DVD]
ASIN B0015ONF2U
価格 ¥5040 (2010-02-27T08:28:47Z現在の価格)
発売元 アニプレックス
発売日 2008-05-21

劇場版「空の境界」 殺人考察(前) 【通常版】 [DVD]

タイトル 劇場版「空の境界」 殺人考察(前) 【通常版】 [DVD]
ASIN B0015ONF3E
価格 ¥5040 (2010-02-27T08:28:48Z現在の価格)
発売元 アニプレックス
発売日 2008-06-25

劇場版「空の境界」 痛覚残留 【通常版】 [DVD]

タイトル 劇場版「空の境界」 痛覚残留 【通常版】 [DVD]
ASIN B0015ONF3O
価格 ¥5040 (2010-02-27T08:28:51Z現在の価格)
発売元 アニプレックス
発売日 2008-07-23

劇場版 「空の境界」 伽藍の洞 【通常版】 [DVD]

タイトル 劇場版 「空の境界」 伽藍の洞 【通常版】 [DVD]
ASIN B001HUN1OE
価格 ¥5040 (2010-02-27T08:28:53Z現在の価格)
発売元 アニプレックス
発売日 2008-12-17

劇場版 「空の境界」 矛盾螺旋【通常版】 [DVD]

タイトル 劇場版 「空の境界」 矛盾螺旋【通常版】 [DVD]
ASIN B001HUN1OO
価格 ¥6090 (2010-02-27T08:28:55Z現在の価格)
発売元 アニプレックス
発売日 2009-01-28

劇場版「空の境界」 忘却録音 【通常版】 [DVD]

タイトル 劇場版「空の境界」 忘却録音 【通常版】 [DVD]
ASIN B0028UMC3S
価格 ¥5040 (2010-02-27T08:28:56Z現在の価格)
発売元 アニプレックス
発売日 2009-07-29

劇場版「空の境界」殺人考察(後) 【通常版】 [DVD]

タイトル 劇場版「空の境界」殺人考察(後) 【通常版】 [DVD]
ASIN B002QBAACE
価格 ¥6090 (2010-02-27T08:28:59Z現在の価格)
発売元 Aniplex Inc.(SME)(D)
発売日 2009-12-09

さくらインターネットでlocal::libを使ってCPAN環境を整える

Posted at 2010-02-08T16:38:56+09:00 in Software

さくらインターネットでlocal::libを使う

だいぶ前の話になりますが、local::libを使ってCPAN moduleをインストールする環境を さくらインターネットに整えたので、そのときのことを思い出しながらまとめてみるよ!

0. 参考

1. local::libを落としてくる

local::libCPANにあるので、 CPANのlocal::libのページDownloadリンクをコピーして、 端末上で、

$ cd ~/local/src
$ wget http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.004009.tar.gz

local::libを取ってくる

2. local::libを解凍する

$ tar zxvf local-lib-1.004009.tar.gz

3. BSDPANの設定をする

僕のところではこんな感じの設定をしました。

setenv  PKG_DBDIR       ~/db/pkg
setenv  PORT_DBDIR      ~/db/pkg
setenv  INSTALL_AS_USER

4. CPANの設定をする

hidekさんのところの記事によると、どうも先にCPANの設定をしないとlocal::libのインストールがうまくいかないそうなので、 とりあえずshellで

$ cpan
...
cpan> o conf commit
cpan> exit

という感じでCPANの設定を済ませます。

このときにはCPANモジュールのインストールパスなんかは設定しません。 あとUNINST=1とか--uninst=1を設定すると、どうもシステムに入ってるモジュールを消そうとして失敗する、 という動作をしだすので、これらのオプションは設定しないほうが良いと思います。

5. local::libをインストールする

ようやくlocal::libをインストールします。

僕の環境の場合、~/local/perl5がCPAN moduleをインストールするルートディレクトリなので、

$ cd ~/local/src/local-lib-local-lib-1.004009
$ perl Makefile.PL --bootstrap=/home/nyarla/local/perl5

という感じでMakefile.PLを実行。あとは

$ make
$ make test
$ make install

します。

6. 環境変数を設定

で、次に環境変数を設定します。

hidekさんの所ではechoとか使って自動的にシェルの設定ファイルに書き出しとかしてますが、 僕の環境ではどうもうまくいかなかったので、手動で、

$ perl -I$HOME/local/perl5 -Mlocal::lib=$HOME/local/perl5

を実行して、出力された環境変数の設定部分をシェルの設定ファイル(僕の環境の場合cshなので~/.cshrc) にコピペしました。

7. CPANをupdate

これでようやくCPAN moduleをインストールできる環境が整ったので、

$ cpan
...
cpan> install Bundle::CPAN

してCPANをアップデートします。

まあこれは大抵のモジュールはインストールされるはずなので、細かいところは省略。

8. CPAN moduleをインストール

んで、あとは自由にCPAN moduleをインストールできます。

僕の場合、このBlogや無貌断片で使用している plasxomが使用するモジュールなんかを入れました。

9. Perl scriptで使用するには

で、肝心のPerl scriptから各モジュールを呼び出すには、

#!/usr/bin/perl

use strict;
use warnings;

use lib '/home/nyarla/local/lib/perl5/lib';
use local::lib '~/local/perl5';

という感じで呼び出します。

ちなみにさくらインターネットではCGIはsuEXEC環境で動いてるので、 .htaccessとかの設定ファイルで設定した環境変数がCGIスクリプト内で有効になりませんが、 suEXEC環境でない場合は、.htaccess内でPERL5LIBとか設定してやれば良いと思います。

10. 以上作業は終了。感想とか

まあ作業自体をしたのがだいぶ前(いつだったか覚えてない)ので細かいところはうろ覚えですが、 大体こんな感じで作業したと思います。

本当は作業してから作業ログを書こうと思ってたんですが、 疲れたしまた後にしようと思って延び延びになって今日になった次第。

ちなみに作業してたとき、環境変数を設定するところでちょっとつまづいてました。

あと使用感ですが、CPANをダイレクトに設定して使ってたときよりも使いやすい感じです。 特にインストールされるディレクトリがバラけないのでそこら辺がスクリプトから扱いやすい感じ。 まあこれからレンタルサーバでCPAN使う人は、local::libを使うと良いんじゃないでしょうか。

以上local::libを使ってCPAN環境を整える話でした。

Plack::Loader::GatewayCGIなるものを試作してみた

Posted at 2010-01-29T17:53:17+09:00 in Project

Ruby on Railsのgateway.cgi相当のモジュールをPlack::Loaderのサブクラスとして実装してみた

前にPlack::Server::GatewayCGIなるものを試作してみたんですが、 その後Plackの開発を追っていたら、miyagawaさんがコミットメッセージで、 railsのgateway.cgiのようなものはPlack::Loaderのカテゴリがフィットするよ という趣旨のことを言ってたので、 前に書いたPlack::Server::GatewayCGIPlack::Loader::GatewayCGIとして実装しなおしてみました。

http://gist.github.com/289556

例によってコードはgithubへ見に行ってください。

今回の特徴としては、前はPlack::Server::AnyEventにベースのバックエンドサーバに依存してたのが、 今回はその依存がなくなり、Plack::Server::CoroとかPlack::Server::Standaloneとかが使えるようになりました。

今のところ、

  • Plack::Server::AnyEvent
  • Plack::Server::Coro
  • Plack::Server::POE
  • Plack::Server::ServerSimple
  • Plack::Server::Standalone

のサーバに対応しています。

一応Plack::Server::CGIでも動きますが、駐在プロセスとかできないので、 高速化は一切できません。

あとPlack::Server::FastCGIに関しては、サーバのホストとポートの取得の仕方がわからなかったので、 今のところ対応していません。誰かそのあたりのコードをプリーズ。

あ、それとPlack::Serverのネームスペースが非推奨になって、Plack::Handlerに変わったはずなので、 ここら辺これからPlackの開発がすすんでくると読み替える必要があるんで注意してください。

あとまた例によって今回書いたPlack::Loader::GatewayCGIはプロトタイプなので、 実際に実用しようと思うと、もうちょっとコードをリファクタリングする必要があると思います。

まあ実用するにはまだまだって感じなので、あんまり使い道はない感じですが、 ちょっと実験するぐらいなら使えるので、いろいろいじって見るのもいいかと思います。

以上Plack::Loader::GatewayCGIを試作してみたという話でした。

About Me

name
Naoki Okamura
nick
nyarla
contact
nyarla[ at ]thotep.net
Category
Log
Banners
Powered by
plasxom