当たり前のこと。

面白いソフトを見つけた。女医ハックというは楽曲に合わせて歌詞を動的に表示し、かつ、別のパソコンから実行したい楽曲を予約・実行することができるシステムだそうな。・・・というか、それはもうカラオケシステムそのもの。

持ち込みカラオケシステム「女医ハック」

こんなものを個人で作ってしまうんだなあ。身の回りの当たり前すぎるものごとの、その仕組みを考え理解することはとても面白いことだし、誰もがしていることだと思う(これをしていると日々退屈しない)。けれど、それを自分で再現してしまうのはまた別の次元のお話。その「理解」をもって実際に動くものを作ることは並大抵の努力ではない。

車輪の再発明は云々とよく言われるけれど、僕はそんなことはないと思う。(個々人の考え方にもよるけれど)そうした「理解」する力と「理解を具体化」する力を一連の流れとして身につけていくことは、自分の全てにおいて、それをレベルアップさせるための最も効果的な方法だと思う。そうしていつか「当たり前でないもの」を創造することができるようになるのだと思う。

W3CDTFをUNIXTIMEに変換する。

Arielworks様より転載させていただきました。リソースの利用に関して

// -------------------------------------------------------------------------
// array parse_w3cdtf(string datetime)
// W3C-DTF形式の日時を項目ごとに分解し、UNIXタイムスタンプと共に返します。
// W3C-DTFについてはhttp://www.w3.org/TR/NOTE-datetimeを参照してください。
// -------------------------------------------------------------------------
function parse_w3cdtf($datetime)
{
// Year
if(preg_match("/^(\d{4})$/", $datetime, $val)) {
$year = $val[1];
// Year and month
} elseif(preg_match("/^([0-9]{4})-(0[1-9]|1[0-2])$/", $datetime, $val)) {
$year = $val[1];
$month = $val[2];
// Complete date
} elseif(preg_match("/^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $datetime, $val)) {
$year = $val[1];
$month = $val[2];
$day = $val[3];
// Complete date plus hours and minutes
} elseif(preg_match("/^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T([0-5][0-9]):([0-5][0-9])(Z|(\+|-)[0-5][0-9]:[0-5][0-9])$/", $datetime, $val)) {
$year = $val[1];
$month = $val[2];
$day = $val[3];
$hour = $val[4];
$minute = $val[5];
$timezone = $val[6];
// Complete date plus hours, minutes and seconds
} elseif(preg_match("/^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T([0-5][0-9]):([0-5][0-9]):([0-5][0-9])(Z|(\+|-)[0-5][0-9]:[0-5][0-9])$/", $datetime, $val)) {
$year = $val[1];
$month = $val[2];
$day = $val[3];
$hour = $val[4];
$minute = $val[5];
$second = $val[6];
$timezone = $val[7];
// Complete date plus hours, minutes, seconds and a decimal fraction of a second
} elseif(preg_match("/^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T([0-5][0-9]):([0-5][0-9]):([0-5][0-9]).([0-9]+)(Z|(\+|-)[0-5][0-9]:[0-5][0-9])$/", $datetime, $val)) {
$year = $val[1];
$month = $val[2];
$day = $val[3];
$hour = $val[4];
$minute = $val[5];
$second = $val[6];
$fraction = $val[7];
$timezone = $val[8];
// Not W3C-DTF
} else {
return false;
}
// Offset of Timezone for gmmktime()
if($timezone != "Z") {
$offset_sign = substr($timezone, 0, 1);
$offset_hour = substr($timezone, 1, 2);
$offset_minute = substr($timezone, 4, 2);
}
$timestamp = gmmktime($hour - ($offset_sign . $offset_hour), $minute - ($offset_sign . $offset_minute), $second, $month, $day, $year);
$result = array("year" => $year, "month" => $month, "day" => $day,
"hour" => $hour, "minute" => $minute, "second" => $second,
"fraction" => $fraction, "timezone" => $timezone, "timestamp" => $timestamp);
return $result;
}

OpenPNE3.0beta1をインストールする。

OpenPNE3.0beta1をインストールしてみる。

こちらからアーカイブをダウロードして、ここを参照しながらインストールを開始する。

公開ディレクトリに解凍する(symfonyの設定は済んでいるものとする)。

$ unzip OpenPNE-3.0beta1

username:openpne3、password:openpne3、dbname:openpne3としてDBのセットアップを完了しておき、symfonyコマンドからインストールする。

$ ./symfony openpne:install mysql://openpne3:openpne3@localhost/openpne3

が、このままだとオプションが多い!と怒られる(書いてあるとおりに打ったのに。。。)。

The execution of task "openpne:install" failed.
- Too many arguments ("openpne:install mysql://openpne3:openpne3@localhost/openpne3" given).

そこで、trunk扱いとしてopenpne:installのみで実行すると、username、password、dbname、等を逐次入力しながら進めるようになる。

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 16 bytes) in /var/www/html/openpne3/lib/symfony/plugins/sfPropelPlugin/lib/vendor/phing/IntrospectionHelper.php on line 387

私の場合、さらに上記のエラーで怒られた。メモリが足らんということらしい。仕方がないので、php.iniのmemory_limitの値を大きくしてあげてインストールを再実行したら今度は正常に終了した。

そう言えばbeta2が昨日(4日)にリリース予定とあったけれどまだの模様。いつになるのかなあ。楽しみ。

symfonyでテストプロジェクトを作成する。

動作確認もかねてテストプロジェクトを作成する。公開ディレクトリ以下で次のコマンドを実行する。

$ mkdir symfonytest
$ cd symfonytest
$ symfony init-project symfonytest

これだけで必要な環境がほぼ揃う。すごい。
ここで、ブラウザからアクセスしてみる。

http://xxx.yyy.zzz/symfonytest/web/

画面にSymfony Project Createdと表示されれば無事にプロジェクトが作成されたことになる。ただ、私の場合、おまけで次のメッセージがついてきた^^;

This project uses the symfony libraries. If you see no image in this page, you may need to configure your web server so that it gains access to the symfony_data/web/sf/ directory.

なるほど。ページは確かに表示されるけれど、関連した画像が表示されない(どうもシンプルすぎると思った。。。)ので、画像パスへのシンボリックリンクを作成する。

ln -s /usr/share/pear/data/symfony/web/sf /path/to/www/symfonytest/web/sf

symfony.gif

こんな感じの画面が出力されれば大丈夫。これでプロジェクト作成は一応おしまい。

symfonyをインストールする。

CentOS5.2にsymfonyをインストールする。まずsymfonyのPEARチャネルを登録。

# pear channel-discover pear.symfony-project.com
Adding Channel "pear.symfony-project.com" succeeded
Discovery of channel "pear.symfony-project.com" succeeded

続いてインストール。が、さっそくつまずく。

# pear install symfony/symfony
symfony/symfony requires PHP (version >= 5.2.4), installed version is 5.1.6
symfony/symfony requires PHP extension "dom"
No valid packages found
install failed

PHPのバージョンが不一致であることと、domが入っていないようなので、まずはこちらから片付ける。

domについては下記をインストールする。

# yum install php-xml

あらためてインストール。

# pear install symfony/symfony

ようやくインストール完了。

# symfony -T

上記コマンドにてsymfonyのコマンド一覧が表示されればOKかな。

CentOS5.2のPHPをアップデートする。

symphonyをインストールしようとするとPHP5.2.4以上を要求してくる。が、現行のCentOS 5.2に入っているのは5.1.xなので、アップデートの必要がある。

こちらを参考にさせていただいて作業をする。以下、手順のみ

まずRPMを取得する先のGPG-KEYを取得

# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

etc以下に次のファイルを作成する

# vi /etc/yum.repos.d/utterramblings.repo
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

最後にアップデートを行う

# yum update php

COUNT DOWN JAPAN 0809

Count Down Japan 0809に参加した。
本当は4日間行きたかったけれど、仕事の都合により断念。都内在住の友人はフルで参加した模様。いいなあ。。。

そうは言っても、初日(3日目)はストレイテナーに始まり、PUFFY、175R、スパルタローカルズ、ART-SCHOOL、ちょっと休憩してエレファントカシマシと存分に楽しんできた。特にエレファントカシマシは良かったなあ。ライブで聴いたのは初めてだったけれど、なんと言ってもその声量に圧倒された。伴奏と一体となって僕らにぶつかってくるような感じで、こちらも全身で受け止めないと飛ばされてしまいそうになる。ぜひまたライブで聴きたいアーティスト。

二日目はちょっと遅めに会場に行き、まずは9mm Parabellum Bulletの会場へ。一緒に行った友人は汗だくになりながら踊ってました。僕にはちょっと激し過ぎるかな。夕方からRYUKYUDISKO、少年ナイフ、SHAKALABBITS、HALCALI、ASPARAGUS、そして年越しカウントダウンは怒髪天までほぼ休憩なしで聴いてきました。どれもこれも素晴らしいの一言。中でも怒髪天は良かった。あの分かりやすい歌詞と乗りやすいメロディーは、本当に単純に楽しい。ただ聴くだけで気分が高揚して元気になれる音楽はそうはないと思うからね。勢いでCDも買っちゃいましたよ。。。(途中、中田ヤスタカがDJブースにてきているようだったので、覗きにいこうと思ったけれど、さっそくの入場制限にかかり、あえなく諦めました。うーん、みんな考えることは一緒だ。

それともう一つ、とても印象に残ったのが会場の運営について。飲食エリアのゴミ収集所にトイレットペーパーがおいてあったり、至る所に案内用の張り紙やスタッフが立っていたり、しかもプログラムの開始前や終了後の混雑時にはどこからともなくスタッフが現れて通路の確保をしたり、夜中に建物を出るときにも会場の外までの道に沿ってスタッフが案内をして、しかも笑顔で声をかけてくれたり、もう挙げればきりがないけれど、どれもよく考えられていてその場所にいることがとても快適だった。

ライブ自体が楽しかったというのは至極もっともな感想だけれど、上記のような様々なシチュエーションにおいて、その裏側を垣間みれる、もっと言えば設営者側の計画通りに私たちが知らず知らずのうちにコントロールされていた(当然、良い意味で)ということが、より凄いことだなと感じた。ライブ会場に限らず、人間が大勢集まる場所というのは多かれ少なかれ不満は残るものだと思っていたけれど、こうまで至れり尽くせりだとは本当に感心です。一緒だった友人は「CDJに来る人は他のイベントに比べて恵まれているよね。」とも言っていて、なるほどなと納得。

振り返ってみれば短い2日間だけど、とても楽しい時間を過ごすことができた。それもこれもお誘いいただいたJさん、Sさんのおかげです。どうもありがとうございました!!