blogPHPでWEB+DBシステムの開発をやっています。0分41秒テキスト中にURLが含まれている場合にそれをaタグで囲むSmartyプラグインです。ありそうなのですが見つけられなかったので作りました。}?>plugins/ディレクトリに設置すれば↓のように使えます。{$text|escape|url_link}aタグにtarget属性を付加する場合は設定する値を渡します。{$text|escape|url_link:"_blank"}Smartyはビューテンプレートでちょっとした加工ができるので便利です。SmartyテンプレートがPHP以外の言語でも使えたら良いのに。logをXMLで出力できるんですね。試しにCakePHP1.1.xリポジトリのログを出力してみました。#2295</msg></logentry></log>SimpleXmlElementなんかでパースすればすぐに使えそうです。0分32秒SmartyテンプレートをSJISで書いていた時に「本」等の文字でSmartyパースエラーが発生していました。「本」はSJISで[0x967B]なので、[0x7B]がSmartyのデリミタ[{]として評価されパースエラーになります。これは{literal}{/literal}で該当文字を囲めば回避することができます。{literal}本文{/literal}またSmaryのデリミタを変える事もできるので、この方法で回避することもできそうです。1分8秒PostgreSQLに大量のデータを登録する際はINSERTを使って一件づつ処理するより、COPYを使って一気に登録した方が実行速度が(かなり)速いです。そこでPHPでもCOPY文を使ってみましょう。pg_copy_fromを使う登録するデータが配列に入っているならpg_copy_fromだけで一気に処理できます。配列の1要素が1レコードに対応しています。1要素内では各カラムをデリミタ(デフォルトは”\t”)で連結します。$values);?>単純なCSVならデリミタを[,]に変えればokです。',');?>pg_put_lineを使う登録するデータを一件ずつ処理したいならpg_put_lineで1レコードずつ出力する方法します。はじめにCOPY文を発行しているので、デリミタの指定などSQL内で変更できます。登録データ出力後に[\.]を発行してから、最後にpg_end_copyを呼ぶ必要がありますのでご注意を。"\.\n");pg_end_copy($db);?>ちなみにPostgreSQLではCOPY文もトランザクション内に含める事ができます。ROLLBACKも可能です。数万件レベルのデータでも体感できる程パフォーマンスが違うので、もし知らない方は一度お試しあれ。Testがあるようです。いちおうベンダ資格ホルダー(wなのでチャレンジしてみました。結果は「6/8」という微妙な得点。思ったよりは良かったのでチャレンジしてみようかな。(こういう作戦か?)ベンダ資格は「資格なんか何の役に立たない」とバカにされる向きもありますが、あると割と便利です。初対面の相手には対して簡潔にスキルが証明できるという点ではそれなりに効果があると思います。(こう言うと「資格なんかあてにならない。資格は持っているが使えないヤツを知っている。」と反論してくる人がいるのですが、これは資格があろうと無かろうと同じ事で、相手が資格を持っていても盲信しなければ良い事だと思います。)もちろんスキルを身につける事が大事なのは間違いないですが、スキルを身につける取っかかりとして資格を取るというのもありなのでは。試験やセミナー等でお金がかかるというのは確かに何とかして欲しいところではありますが。Coallierでどうぞ。以前依頼を受けた案件でこんなのがありました。実装方法はお任せ(既存のライブラリ等は使用しなくて良い)但し、Smartyは必須あとSmartyテンプレート、PHPの内部エンコーディングはSJIS仕様自体はそれほど複雑で無いのでDBライブラリ(PEAR::DBとか)+Smaryでゴリゴリ書いても良いのですが、せっかくの機会なのでCakePHPを使ってみる事にしました。DocumentRoot以下には既に稼働中のページがあるので、イメージとしてはそこにPageControllerを置き、そこからCakePHPを呼び出すといった感じです。(CakePHP自体を追加ディレクトリに入れるという力業もあるのですが、ファイル構成が複雑になって、メンテナンスされる方が困りそうなのと個人的にもDocumentRoot以下にライブラリがあるのは抵抗があるのでそれはやめました。)構成としてはこんな感じです。delete.phpDocumentRoot以下では単純にCakeのappを呼びます。cake/をinclude_pathに入れないなら//include('../../cake/app/webroot/index.php');?>$_GET['url']に渡すパスを変えれば任意のコントローラ・アクションが呼べます。この方法ならブラウザから見るパスとCake用のパスを異なるものにできるので小さな案件ならわりと使えるシーンはあるのではないかと思います。(突然「URLを変えてくれ」とかありません?)Smarty関係も小ネタがあるので、それはまた書きたいと思います。昨今のWebフレームワークはFrontControllerが主流ですが、PageControllerももうちょっと見直されても良いかなと思ったり。