Nov 30, 2004
Nov 26, 2004
P_BLOG関連:nl2p()関数
P_BLOGのコメントシステムのテキスト自動変換
![]()
P_BLOGではβ20あたりからこちらの記事で書いたように、ユーザーがコメントを書き込んだ際にテキストを自動的にXHTMLに変換するためにPHP標準関数の「nl2br()関数」の代わりに独自に作った「nl2p()関数」というのを使っていますが、これをもう少しブラッシュアップしたいと思い、ここのところちょくちょくいじってみました。そんな事をやっていた所、このような興味深い記事を発見。
agenda - Personnel - クリップボードHTML
全てに関して私の頭にあることと一致する訳ではありませんが、やりたいコンセプトとしては近いものがあるので参考にしてみることにしました。
というわけで、まず「この関数で何がやりたいのか」を明確にしたいと思い、つらつらと書いてみる事に。
したい事リスト
- http://〜から始まるURIを自動的にアンカーリンクに変換したい。 (実装済み)
- 改行コードをただ単に
<br />に変換するのではなく、パラグラフ(<p>)として生成、強制改行と明確に区別したい(実装済み) - スマイリーアスキーテキストをiChatライクな画像を用いたアイコンに自動変換したい。(実装済み)
- 生成されるXHTMLは奇麗にしたい。(対応済み)
- ある程度一般的なBBコードにも対応したい。(「引用」など、一部サポート済み)
- フルパスURIで指定した画像ファイルのURIからimgタグを自動生成し、画像を表示出来るようにしたい。
- どうせならimgタグのwidth、height、alt要素も自動的に入るようにしたい。
- *〜*で示したテキストを
<strong>〜</strong>に変換したい。
だいたいこういう感じでしょうか。で、ちょっと考えてみると難しそうだなぁと思われるのは、
難しそうリスト
- リストの自動生成
- ブロック・インライン要素の属性
のような気がします。あと迷うのはこのような部分。
どうしようか/要らないかなリスト
- >で示した複数行を「引用」ブロックに変換
- 区切り罫線(<hr />)の生成
- 「-- 」でアドレス表示
- "〜" を<q>〜</q>に自動変換
...ということで、考えたのが以下のような全体像。
function nl2p($str){ // インライン要素をそれぞれ求めているフォーマットに変換 // まず、改行ごとにテキストを分割 $lines = split("\\n", $str); for ($i = 0, $j = count($lines); $i < $j; $i++) { 〜 各行に対しての置換処理 〜 } // テキストを連結 $str = join("\\n", $lines); // ブロック要素をブロック単位で収まるようにする処理 $str = str_replace("foo", "baa", $str); // <p>〜</p>に納めてコメント全体を生成 $str = ’<p>’ . $str . ’</p>’; // 妥当でない文字列、分割タグ群の除去 $str = str_replace("foo", "baa", $str); // 整形した文字列を返す return $str;}- 続く -
Rumble in Brixton (DVD)
今月(最後?)の音楽関連散財(2)
以前にも書いたのですが、わたくし、このバンドに関してでしたら永遠に語れます。語りだしたら「誰か止めてくれ」状態になりますので今日はなるべく押さえて書きます。
Rumble In Brixton / Stray Cats

待望のStray Catsのライブ映像、初のDVD化(祝!)。しかも今年2004年夏のロンドンツアーということで、最も最近のライブパフォーマンスがDVDで観れるとは。公式のライブ映像は10年前の来日時とパリのライブがビデオで出ていますが残念ながらまだDVD化されていないのでこれが始めてのDVD化ライブとなり、これはファンならマスト・ハヴ・アイテムです。当然、アマゾンで先行予約してGET。
タイトルが示すとおり、ロンドンのブリクストンでのライブ。「ブリクストン」と聞いてすぐにピクッと「Guns of brixton」が浮かぶあなた。たぶん「The Clash」聞き過ぎです。そのThe Clashがこけら落としを努めた伝説的な「ブリクストンアカデミー」という会場だそうです。
さて肝心の内容ですが、約10年ぶりの再結成ということで少しは枯れているかと思いきや、ドライブしまくりの悶絶サウンド。私は現存するStray Catsのライブ映像はデビュー当時からのブートレグのビデオをも含め片っ端から殆ど観ましたし、実際の生のライブも3回観ましたが、これまで観たライブの中でサウンド的には最も完成されて一番良いのでは?と思いました。
バンド自体の演奏の安定度、スピード感、リー・ロッカーとスリムジムのベースとドラムのリズム体の音圧と緩急を極めたバック、ブライアン・セッツァーのBSO(ブライアンセッツァーオーケストラ)での活動を通してさらに円熟の域に達したかと思われるJAZZコードワークとヒルビリー・ロカビリーフレーズの見事なまでの融合がStray Catsに持ち帰ってフィードバックされ、超余裕の演奏を生み出しています。
注目に値するのは、(言うまでもないですが、あえて言いたい)これだけの演奏をたった3人で、しかもドラムはスネアドラム、ベースはコントラバス、ギターはセミアコという超プリミティブな楽器編成で生み出している、ということです。これはヘッドフォンで大音量で聞くとさらに圧巻。とにかく圧倒されます。
今回のライブでは、デビューしたロンドンでのライブということもあってか、どこか初期をイメージした曲構成になっています。89年の再結成頃には殆どやっていなかった「Ubangi Stomp」とか「18 miles to menphis」とかもやってるのは嬉しい。あと、リー・ロッカーがヴォーカルをとるロカビリークラシック「My Baby Left Me」や「That’s all right」「Twenty Flight Rock」も最高。個人的に好きなアルバム「Choo Choo Hot Fish」からは「Please Don’t Touch」しかやっていないのが残念ですが、このツアーではロカビリー色がより強い曲を意図的に選んでいるような(でも実は何も考えず適当に選んでるかもしれませんが) 感がします。
また、気合い十分、ステージに向かって熱い眼差しとうなり声を上げる男だらけの観客席にも注目したい。この、20年以上前にデビューし、一時はアイドル的に女の子にキャーキャー言われたりした時期もとうに過ぎて45歳のいい年になってちょっと顔も体型も変わった3人の男のバンドになぜ未だにこれだけ沢山の男達が熱い拳を突き上げるのかを客観的に考えると、私の好きになったこのバンドのこの音楽は間違っていなかった、本物だったんだと改めて嬉しくなってしまいます。
DVDの時代になって嬉しいのは内容の充実と情報量。このDVDでは特典映像が入っていますが、これがライブ映像よりも嬉しかったり。
ツアー前のリハーサルと、新曲を持ち寄ったブライアンセッツァーが部屋でリーとジムに披露、そのままリハーサルスタジオに入って曲を練っていく、という映像も入っています。ツアー前のリハなどではリー・ロッカーがウォーミングアップがてら生でブンブンウッドベースを弾いている映像がたっぷり入っているのでリーファンには感涙ものです。
うーん、やはりこの人のベースは良い。ほんとに。
スリムジムファントムは相変わらずスリムで一番イメージがデビュー当時から変わっていませんが、ドラミングはデビュー当時から比べると凄まじく進化しています。彼は90年代に入ってからスティービーサラスのコンピレーションアルバムにリードギターにリッチーコッツェンを迎えた「Can’t Judge a book」という曲でドラムをたたいていましたが、彼がやっているのを知らずにこのアルバムを買ってこの曲を聞いた私はすぐに「あれっ?これ、スリムジムの音じゃない?」と一発で分かったということがあったくらい、彼しか出せないトーンとキレの良いシャッフルを持っていて、それにさらに磨きがかかっています。
ブライアンセッツァーはBSOのツアーでも3ピース編成でストレイキャッツの曲を演奏したりしていました。BSOのバックバンドのドラムとベースの彼らも腕が良くて素晴らしい演奏だったのですが、不思議とストレイキャッツサウンドにはならないのです。今回のライブと聞き比べるとやはり迫力は雲泥の差。いかにリーとスリムジムがこのバンドの基盤を作っていたかが分かります。いやほんとに凄い。
やはり卓越したミュージシャンが生でぶつかり合って生み出す「熱い」音楽はいつ聞いても良い。というより、音楽はやっぱり熱くないとつまらないのです。
....やっぱり長くなってしまいました。
Nov 24, 2004
MAMP
手軽にMac OS X + Apache + MySQL + PHP

あっという間にApache2、MySQL + PHPの環境がセッティング出来るアプリでMAMPなるものがリリースされているのを発見。
webEdition Software Ltd. - Content Management System (CMS) : MAMP
こういうのがあったとは全く知りませんでした。...というわけで早速試してみたところ、インストーラパッケージをダウンロードしてインストールする「だけ」。ほんとにそれだけであっという間に環境が出来てしまいます。これは驚きです。しかも別ポートで動くのでMac OS X標準のApahceサーバーやPHP、MySQLには全く影響を与えないのもGOOD。 お手軽に異なる環境を共存出来る訳です。さらにphpMyAdminも一緒にインストールされるので管理もらくちん、と至れり尽くせりです。いやはやこれは素晴らしい。欲を言えばPHPのバージョンはせっかくなのでバージョン5系列もあると嬉しいですけど、まぁ、これは贅沢ですね。
ちなみに同梱されているPHPはマルチバイトモジュールが有効になっていないのですが、これを有効にしたアンオフィシャルバージョン もこちらで配布されています。これまた素晴らしい。
masuidrive blog : OSXでApache+MySQL+PHP環境を簡単に作ろう - MAMP
関連URI
Nov 23, 2004
Firefox lzyc build
Another Firefox

当サイトで一番ダウンロードされているアーカイブである「Firefox Set2」ですが、こちらのアンオフィシャルビルド版のFirefoxに組み込まれているのを知りました。
私の配布したものにさらに修正が加えられているようです。こうやってどんどん改良されて広がっていくと嬉しいですね。またこちらの
では、「platform-forms.css」ファイルの font-family 指定の直前に「font-size: 12px !important;」を足すことでよりいい感じになる、というコメントもありました。なるほど。
ADULT ROCK
今月の音楽関連散財
久々にCDを購入。どちらも「当たり」でした。
U2/How to dismantle an atomic bomb

「How to dismantle an atomic bomb (原爆を解体する方法)」という挑戦的なタイトルのついたU2の4年ぶりの意欲作。なんといってもiPodのCMにも使われている1曲目の「Vertigo」がめちゃくちゃカッコイイ。 iPodのCMのQuickTimeムービーで最初に聞いたときから「良いねぇー」と思っていましたが、改めてアルバムで聞いてみてこの出だしで一発で惚れました。
ボノの大地を感じさせるスペイシーなシャウトも最高ですが、エッジのギターがこれまた良い。 この人のカッティングは昔から定評がありましたが、そこいらの単なるファンク系カッティングギターとは一線を画する、「ロックを感じさせる」ファンキーなカッティングを聞かせています。 アルバム的には個人的にはどこか「ヨシュア・トゥリー」を彷彿させる雰囲気を感じ、久々に聞き込みたいアルバムに出会ったなぁという感じです。
(個人的評価: ★★★★★ )
ブライアンアダムス/ルームサービス

昔の彼の曲は大好きだったのですが、最近のものは聞き込んでもイマイチ好きになれなかったので暫く離れていました。今回のものは「昔の雰囲気に戻る」とか「無理して今風の音を取り入れる」というわけではなく、「未だに新しいものを模索している」というテイストが感じられ、その点で気に入りました。
はっきり言って、昔の大ヒットアルバムだけが好きで、そういう曲を求めている人にはお勧め出来ません。 「ブライアンアダムスがジョンクーガーメレンキャンプになったらこうなる」 というか、「新しい音」というよりむしろ土着な感じ。「ライブで聞いて感動する楽曲群」というより、どちらかと言うと考え事しながら車を流すときに聞くとぴったりくるような感じです。驚かされるのは、これだけのスケール感の曲をホテルに閉じこもって完成させた(なので「ルームサービス」というタイトルなのだそうです)彼の感性とイマジネーションです。 「肩の力を抜いて気楽に聞ける」という意味で星4つ。
(個人的評価: ★★★★☆ )
この全然カラーの違う二枚のアルバム、共通点を上げるとしたら「大人のロック」というところでしょうか。といっても昔のアダルトオリエンテッドロックのような「ちょっと落ち着き過ぎ」なアダルトロックではなく、「適度な重さと抑制されたスピードを持ちつつもベクトルは前を向いている」というような感じです。
媚びて若ぶったり(LOAD@メタリカ)、単なる普通のアメリカのおっさん化していったり(サミーヘイガー@VAN HALEN)、バンド抜けてソロになったらカリスマ性すっかりなくなったり(エリックマーチン@MR.BIG)、 どんどん巨大化して貴公子から大王になったり(イングヴェイ@でも指は今でも速いよ)、開き直って醜態さらけ出したり(SEX PISTOLS)、アーチストも経年変化で多様化しますが、こういうU2やブライアンアダムスみたいに良い年輪の重ね方をするアーチストって、良いですね。 それを考えると「ミック&キース@ローリングストーンズ」とか、「スティーブン&ジョー@エアロスミス」、スティング、エリッククラプトンなども年をとりつつも基本のイメージがほとんど変わらないので凄いなぁと思います。(最初からフケ顔の人も...というのは抜きにして)
Nov 22, 2004
Jeffery Zeldman Video Keynote
著書「Designing With Web Standards」や自身のサイト「Jeffrey Zeldman Presents The Daily Report」でも有名なWebデザイナー、Jeffery Zeldman氏のインタビューがQuickTimeムービーで公開されていました。
Happy Cog Studios: Zeldman Video Keynote
こちらのバージョンは英語スクリプト付きでおすすめ。
内容はWebスタンダードに関する話ですが、とぼけた彼の性格からか冒頭で「私はZeldman.comやWeb Standard Project、A List Apart、Googleなどの仕事で知られるJeffです。... あ、いや、Googleは違うか。」とか、「これまで自分のサイトでも、仕事の同僚にも誰にも語っていない、あなたのWebデザインを永遠に変えるぶっ飛びCSSテクニックを紹介...」とか冗談とも本気ともとれないことを良いながら、彼が著書でも書いているWebスタンダードの3本柱である「XHTML」「CSS」「DOM」を彼流のジョークを交えながら紹介、あとはCSS zen garden や他のWebデザイナーの紹介と功績を語っている、という内容です。
彼が誰であるかを知っている人はみんな知っているような内容なので特に目新しい「へぇ〜」というものはないですが、生の声が聞けるのは貴重ですね。
P_BLOGのコメントシステムのテキスト自動変換(その2)
前回の続き。コメントを頂いて、やはりアスタリスクを使った強調はOFFにすることに。このあたりのテキスト書きの文化は日本と外国でも違うので難しいところ。例えば日本語では強調するときに「」を使う場合もありますが日本以外では殆ど使われませんし、またこれを単に
<strong>に変換するのが良いかというと、引用のつもりで書くひともいるのでまたそれも微妙なところです。P_BLOGはユニバーサルなシステムを目指しているのであまり日本独自、外国独自のどちらのテキスト文化にも偏りすぎないようにする、というのが基本コンセプトですが、なかなか難しい部分でもあります。取りあえずその部分は置いておいて、他の部分の処理を整理。意図する処理の流れを再確認すると、
です。以上のプランに則り、前回のものを更新。
function nl2p($str){ // インライン要素をそれぞれ求めているフォーマットに変換 // まず、改行ごとにテキストを分割 $lines = split("\\n", $str); for ($i = 0, $j = count($lines); $i < $j; $i++) { 〜 各行のインライン要素に対しての置換処理 〜 } // テキストを連結 $str = join("\\n", $lines); // ブロック要素をブロック単位で収まるようにする処理 // まず、改行コードを「\\n」に統一。 // 次に、連続する「\\n\\n」はパラグラフ分割と見なす。 // 最後に、単発の「\\n」は強制改行とみなす。 $str = str_replace("\\r\\n", "\\n", $str); $str = str_replace("\\n\\n", "</p><p>", $str); $str = str_replace("\\n", "<br />", $str); // ブロック要素の禁則処理 $str = str_replace(’<p><br />’, ’<p>’, $str); $str = str_replace(’<br /></p>’, ’</p>’, $str); $str = str_replace(’<pre><br />’, ’<pre>’, $str); $str = str_replace(’<br /></pre>’, ’</pre>’, $str); // <p>〜</p>に納めてコメント全体を生成 $str = ’<p>’ . $str . ’</p>’; // 妥当でない文字列、分割タグ群の連続を除去 $str = str_replace(’<p></p>’, ’’, $str); $str = str_replace(’<pre></pre>’, ’’, $str); $str = str_replace(’<br /><br />’, ’’, $str); // タグの後に改行を入れて見やすく調整。 $str = str_replace("><", ">\\n<", $str); // 整形した文字列を返す return $str;}という感じにまとまってきました。http://で始まるURIを自動変換する、などの処理は「各行のインライン要素に対しての置換処理」の部分で行いますが、長くなるので割合。
- 続く(かも?) -