May 23, 2005
May 19, 2005
Memolite v.0.0.1α
PHP5+SQLiteベースの軽量メモソフト実験中
さて、夏も近づいてフィットネス関連熱が高まっている私ですが、久々にWebテク関連の話題を。
これまでP_BLOGのバグ、フィードバックのメモ管理にTasksというPHP+MySQLベースのソフトを使っていたのですが、PHP5サポートバージョンは有料になってしまったので、古いバージョンを使い続けていました。...で、私もPHPの環境をPHP5ベースに移そう、ということでこれを機に代替ソフトを探していたのですが、見つからず。
しょうがないので簡単にメモを記録出来て検索出来るWebベースのソフトを、ということで結局自分で作ることにしました。(Webベースのソフトに拘るのは、複数のマシンでLANで使えることと検索機能がつけられることが大きいです。)
...というわけで、ささーっと作ったのがこんな感じのもの。( ↓)
名前は「Memolite(メモライト)」。折角のPHP5ベースなので、完全OOPで、データベースエンジンはSQLiteを使用。P_BLOGでの経験と反省を生かしてCSSとXHTMLとデータ処理部分はP_BLOGよりさらに分離し、プラグイン機能も最初から実装。コア部分は「Memoliteクラス」を組んでパッケージ化、という感じです。
今はローカルで自分がメモをとるために使う機能の実装を優先しているソフトなのでセッション機能やユーザー管理機能など、WWWに公開して使うのに必須な機能は全くありませんが、とりあえず仕様を練るのが楽しかったのでサンプルを公開して晒しておきます。ご自由に書き込んでください。
書き方はP_BLOGのフォーラムと同じような感覚で書き込みます。ローカルの自分が使うバージョンではタグ打ちと自動マークアップモードを実装してますが、上のサンプルはタグを使えないようにしてあるバージョンです。
May 15, 2005
フィットネス関連:石垣島トライアスロン出場&完走!
初トライ、無事生還。

前回のフィットネス関連ネタ(JAM LOG : フィットネス関連:デュアスロン大会初出場)から1ヶ月と3週間、久々のフィットネス関連ネタです。今日、
石垣島トライアスロン大会に出場、無事完走してきました〜!
頑張ったよ>自分
あれから一ヶ月半、今日の大会のためにチマチマ時間を作って練習を重ねて来ましたが、2月ごろから右膝を痛めていて階段を登るのもツラい状態が続いていたので練習は専ら膝に負担をかけないスイムとバイクのみ。まぁ、ランはぶっつけ本番で膝をサポーター巻いて固めればなんとか根性で乗り切れるだろう、という感じで臨みました。
初挑戦の海でのスイム1.5kmはホント、バトルでした。1kmあたりで前の人のキックをもろに顔面に食らってゴーグルがずれ、直すことが出来ずそのまま泳ぎ切りました。途中他の人には思い切り上に乗っかられるわ足引っ張られるはリカバリーする腕で叩かれるわ...いやはや、人間極限になると他人は「敵」でしかないですね。
バイクはなかなか好調でした。一番練習した&一番好きな種目なので最後まで疲れることなく走れました。上り坂は死にましたが、下りは「ひゃっほー!」とフロントギアをアウターにしてギヤを一番重くして思いっきり漕ぎました。最高速度は59km/hを記録。...と、ここまでは良かった...
バイクを降りてランに移ると、右膝の状態とこれまでのランの練習不足が一気に吹き出してデュアルでやって来ました。肉体が精神に追いつかない、いや、精神が肉体に追いついてくじけそう....もう、気分はおじいちゃん走り状態。最後の2kmは目をつぶって走っていたので周りの景色を覚えてません。![]()
..と、まぁ、なんとか一度も歩かずに最後まで完泳・完走出来ました。今日は自分で自分を褒めてあげたい一日でした。次はもっとバイクを練習してバイクだけのレースに出てみたいなーなどと考えてます。
P.S.
ちょっとキザなこと言わせてもらうと、今回は先月癌で他界した親父への追悼の意を表するために、という気持ちで走りました。癌との闘病に比べたらスポーツでのどんな筋肉痛や苦しみも楽なもんです。生きてる人は頑張らないとね。
May 10, 2005
Mac OS X 10.4 Tigerに最新PHPとMySQLを入れる(4)
TigerでPHP5.0.xを自前コンパイルする(まとめ編)
ここ最近いろいろとテストして来てようやくPHP5.0.4 on Tigerの環境構築が落ち着いてきたのでまとめてみることにしました。
Q1 : なぜわざわざ自前コンパイルするのか?
Mac OS X TigerにはデフォルトでPHP4.3.10がインストールされています。しかしデフォルトで入っているPHPは最小限の追加オプションしか有効になっていない状態でコンパイルされています。そのままだと自分でクラスを追加して使用したり、XMLやXSLT、GDなど、ちょっと入り込んだことをやろうとすると「関数未定義エラー」の連発に遭遇して途方に暮れたりします。そこで自分で必要な機能を追加した自前コンパイルがやはり必要になってきます。
Q2 : インストーラパッケージが配布されてたりしますが..?
いくつかのサイトでMac OS X用にインストーラパッケージ化されて簡単導入出来るものもあったりします。自前コンパイルが面倒な場合はこれらのパッケージを使うのも良いと思います。これらのパッケージに対する自前コンパイルの利点は、
- バージョンアップなどを他人に依存しないで自分仕様の自分の環境が構築出来る。
- 細かい機能を追加したい場合にいちいちお願いしなくて済む。
- PHPのバージョンアップについていくのが楽。(最新版リリースされたときにすぐに導入できる)
...といったところでしょうか。
下準備〜必要なライブラリ
下準備の前に、MySQLは前回の記事の要領でインストールして稼働OKの状態にしてあることを前提とします。
以下に挙げたリンクのリストはPHPにオプションを追加するのに別途インストールが必要なライブラリ群です。折角の自前コンパイルですので色々と追加オプションを盛り沢山にしてコンパイルしたくなりますが、とりあえず最低限これだけは入れておくと良いと思います。それぞれ入手先から最新版をとってきてインストールします。入手先のサイトでダウンロードリンクを探すのがいつも面倒なので、サイトのトップページのリンク紹介を省いて最短距離で入手できるリンクにしているのをご了承ください。
XMLとXSLT用ライブラリ
GD用ライブラリ
これらを入れると何がうれしいのか?
これらをインストールすることで、PHPで以下の機能が使えるようになります。
- XML、XSLT関連の処理が出来るようになる。
- GDを使った画像の自動生成ができるようになる。(JpGraphなどのグラフィック処理用の追加ライブラリ等もGDオプションが必要です)
また、一番最後の「sazanami」というのは日本語フォントです。例えば「/usr/local/fonts」というディレクトリでも作っておいてコピーして入れておくと、JpGraphなどのconfファイルでフォントを指定するとGDで日本語テキスト画像の生成が出来るようになります。
これらのライブラリをダウンロードし、Terminal.appを使ってそれぞれのライブラリを以下の流れでコンパイルしてインストールします。
$ cd /path/to/<解凍したライブラリのディレクトリ>
$ ./configure
$ make
$ make test
$ sudo make install
$ sudo make install-lib (LibJPEG-6bのみ)
※ LibPNGのインストールのみ、少々注意!
LibPNGの場合は、「scripts」というフォルダに各プラットフォーム用のMakefileが入っていますので、それを第一階層にコピーして持ってきて、「Makefile」とリネームしてmakeします。Mac OS X用のMakefileは「makefile.macosx」というのが入っていますので、以下のようにします。
cp scripts/makefile.macosx ./Makefile
その「Makefile」の14、15、24、30行目を以下のように編集します。
14行目:
「ZLIBLIB=../zlib」 →「ZLIBLIB=/usr/lib」
15行目:
「ZLIBINC=../zlib」 → 「ZLIBINC=/usr/include」
24行目:
LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -current_version $(PNGVER)
↓
LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz
30行目:
「MANPATH=$(prefix)/man」→「MANPATH=/usr/share」
準備が出来たら「./configure」なしで以下のようにインストールします。
$ make $ sudo make install
最後に以下のおまじないコマンドを施して下準備完了です。
$ sudo ranlib /usr/local/lib/libjpeg.a $ sudo ranlib /usr/local/lib/libpng.a $ sudo ranlib /usr/local/lib/libtiff.a
PHP 5.0.xのコンパイルとインストール
下準備が出来たらPHP 5.0.xをコンパイルします。configオプションの例は以下の通り。
’--prefix=/usr/local’ \\
’--mandir=/usr/share/man’ \\
’--infodir=/usr/share/info’ \\
’--with-apxs’ \\
’--with-ldap=/usr’ \\
’--with-kerberos=/usr’ \\
’--enable-cli’ \\
’--with-zlib-dir=/usr’ \\
’--enable-trans-sid’ \\
’--with-xml’ \\
’--with-expat-dir=/usr/local’ \\
’--with-xsl=/usr/local’ \\
’--enable-exif’ \\
’--enable-ftp’ \\
’--enable-mbstring’ \\
’--enable-zend-multibyte’ \\
’--enable-sqlite-utf8’ \\
’--enable-mbregex’ \\
’--enable-dbx’ \\
’--enable-sockets’ \\
’--with-curl=/usr/local’ \\
’--with-config-file-path=/etc’ \\
’--with-mysql=/usr/local/mysql’ \\
’--enable-soap’ \\
’--with-gd’ \\
’--with-jpeg-dir=/usr/local \\
’--with-png-dir=/usr/local \\
’--with-tiff-dir=/usr/local \\
’--with-freetype-dir=/usr/local’
上手くconfigureが通ったら、最後に
$ make
でコンパイルを行い、無事エラーなくコンパイルが完了したら
$ sudo make install
でインストールし、最後に
$ sudo apachectl graceful
でApacheサーバーを再起動させて適用させれば作業は終了です。
May 08, 2005
P_BLOG関連:GOODテンプレートなサイト
ナイスなCSSデザインのP_BLOGサイト
![]()
P_BLOGベースで良い感じにCSSでカスタマイズしているサイトをいくつかクリップ&紹介。出来ればダウンロード可能なアーカイブにして配布して欲しいですね。マリオなんか、個人的にヒット!です。![]()
Mac OS X 10.4 Tigerに最新PHPとMySQLを入れる(3)
SOAP関数を追加
前回の記事でSOAP関連関数のオプションを追加するのを忘れていたので追加・コンパイル・インストール。以下、configオプションの改訂版です。
’--prefix=/usr/local’
’--mandir=/usr/share/man’
’--infodir=/usr/share/info’
’--with-apxs’
’--with-ldap=/usr’
’--with-kerberos=/usr’
’--enable-cli’
’--with-zlib-dir=/usr’
’--enable-trans-sid’
’--with-xml’
’--with-expat-dir=/usr/local’
’--with-xsl=/usr/local’
’--enable-exif’
’--enable-ftp’
’--enable-mbstring’
’--enable-zend-multibyte’
’--enable-sqlite-utf8’
’--enable-mbregex’
’--enable-dbx’
’--enable-sockets’
’--with-curl=/usr/local’
’--with-config-file-path=/etc’
’--with-mysql=/usr/local/mysql’
’--enable-soap’
ほかにライブラリをインストールすることなくこの一行を加えるだけで使えるようになるので入れておかない手はないですね。![]()
...というわけで、せっかくなのでPHP5の標準関数SOAPを使ったサンプルを作ってみました。よくサンプルで使われているAmazonの検索フォームです。P_BLOGのISBNプラグインのコードを大いに参考にさせていただきました。![]()
これだけでは面白くないので、P_BLOGのVARSプラグインにしてみたバージョンも。こちらのスタイルのほうが自サイトに組み込んだりする場合に楽で他のコーナーとの親和性も高いかもしれません。
May 05, 2005
Tigerに入れたCLIユーティリティメモ
Mac OS X Tigerに、あると便利なCLIユーティリティを入れる
Tigerに移行してからちょこちょことUnix系コマンドラインユーティリティをインストール中。以下、インストール備忘録。
各コマンド内の「/path/to/」とはターゲットフォルダまでのパス、という意味です。
Wget
Mac OS Xのダウンロードユーティリティはcurlがすっかり標準になりましたが、個人的にWgetは好きなので入れておきます。以下のURIからftpサイトへのリンクをクリックするとディレクトリがFinderにマウントされるのでそのままFinderでコピー。
GNU wget - GNU Project - Free Software Foundation (FSF)
あとは
$ ./configure$ make$ sudo make install
ですんなり上手くいきました。
LHa for UNIX
LHAアーカイブはTiger標準のままでは解凍できないので入れておくと必要なときに便利。
ダウンロードして解凍すると「lha-1.14i-ac20040929」というフォルダができるのでそこへ移動して
$ cd /path/to/lha-1.14i-ac20040929$ ./configure$ make$ sudo make installでインストールOK。
SQLite
PHP5標準バンドルデータベースソフトのコマンドラインユーティリティ。TerminalでSQLiteが操作出来るようになるので入れておきます。以下の
というページの一番下にある「sqlite-2.8.16.tar.gz」というソースアーカイブを落としてきてインストールしてみました。
$ cd /path/to/sqlite-2.8.16$ ./configure$ make$ sudo make installでインストール。
nkf
日本語周りでのテキストの文字コードを変換したりするのに便利。まずは以下のサイトから最新版の2.0.5をダウンロード。
解凍したら以下の要領でインストール。
$ cd /path/to/nkf205$ make$ sudo cp nkf /usr/local/bin$ sudo cp nkf.1 /usr/local/man/man1make時にwarningが少し出ましたが、試しにShift_JISのファイルをEUC-JPに変換してみたところ上手くいっているようですのでとりあえずは細かいことは気にせず入れておくことにしました。
Memolite、とりあえずサンプルアプリとして公開。
要望がありましたので、とりあえずPHP5+SQLiteを動かすプリミティブなPHPアプリということでサンプルとして公開しておきます。
JAM LOG : Files : Memolite-20050523
ささーっと作ったものなのでかなり実装が適当な部分も多いですし非常にバグだらけですが、一応ライセンスはGPLとしておきます。拡張、カスタマイズはライセンスに従ってご自由に。
サンプルとはいえ、PHP5に特化したという部分から来る仕様面や方向性では現行のP_BLOGの仕様よりも気に入っている部分は結構あります。そういう部分はPHPの普及具合や進化などを見ながらバランスを考えつつ今後のバージョンアップで取り入れて生かしていきたいですね。
あと、私自身のアイディアとしては、これをベースにしてP_BLOGのフォーラム機能のように各スレッドごとにRSSを取れるBBS/フォーラムシステムを作ってみても面白いかな〜とか考えています。まぁ、誰かが作ってくれても一向に構いませんが。