2009年04月07日

prototype/mootools/jquery/etc -> JSHelper

1.3ブランチには、mark_storyによる下記のコードがあります。
楽しみですね!

jquery_engine.php
mootools_engine.php
prototype_engine.php

js.php

あらゆるjavascriptライブラリを統一的に使える JSHelperの構想がこちらに。
http://thechaw.com/cakephp/wiki/RFCs/Ajax_Helper_rebuild
ラベル:cakephp
posted by SDozono at 14:32| 東京 ☀| Comment(0) | TrackBack(1) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2009年04月04日

PHPで作ること、作らないほうが良いこと

ひさびさの更新です。

CakePHPに関しては、なんかこう、自分の中では“普通の”ツール扱いになってしまい、MySQLやphpMyAdminを使うのと同じ感覚になってきたため、それほどここに書き込む内容もなくなってきたような…。

CakePHP.orgができたばかりの頃は、できないことやバグも多いということで、わいわいがやがやとした雰囲気がありましたが、その頃の人たちの声が今ではWeb上には出なくなり、Ticketもそれほど面白くなくなってきた?ような気もします。

1.2の成熟期かも。1.3や2.0になった時にはまた活発になるかもしれません。とはいえ、日本では安藤さん主導でハンズオンセミナーが開かれ、まだまだ驚くようなプロジェクトや仕掛けが出てきそうな気配です。gwooも日本に期待しているのではないでしょうか。

gwoo says:
so yandod tells me that next week our cakephp friends in Japan plan to work for 24 hours straight. I wonder what they will come up with....


今回、“htmlをPDF化するオンラインツール”を作る必要が出てきました。具体的には、見積もりをWeb上で作るオープンソースのソフトがあって、それにはすでにそういうコードが入っていたんですが、日本語出力に対応していなかったんです。PHPで定番と言えば、

FPDF
や、
TCPDF
などがあり、どちらも日本語を出力する方法があります。

しかし、今回のプロジェクトでは、html2psを使っていました。
html2ps and html2pdf

FPDFや、TCPDFにはできない芸当をhtml2psはやってしまいます。
PHPだけで、かなりの数のサイトのWeb画面を生成してしまうのです。
まるで、"PHPでブラウザを作る"みたいなプロジェクトです。
HTMLを独自にパースして合成してゆくので。

最初、これをちょっといじれば日本語化対応できるかな、と思い、コードを読み始めましたが、これはちょっと手に負えないな、と思い、やめてしまいました。同時に、「ここまでやるか〜」というような気分になったのも確かです。

TCPDFはアルファチャンネルにも対応している、と書いてあるのですが、実際に使ってみると、計算に時間がかかりすぎました。

PHPは便利なので、やろうと思えば、「画像認識OCRをPHPコードで」とか、「Webページの画像を合成」とか、もっといけば「音声合成・認識をPHPで」とか、「もしかしたらできるんじゃないの」と思ってしまうかもしれません。実際に画像認識もがんばっている人が入るみたいだし…。

ただ、道具は使いようというか、「本当にそれはメリットがあるのか」ということを考えないと、ただの自己満足に終わる危険があります。
数日、html2psを日本語化できないかコードを追い続けてさじをなげた後、「これだったらC#で書いたほうが速いかも」と思い、Visual Studioを立ち上げました。

その結果、動作コードは半日もかからずに出来上がってしまいました。C#でPDFを出力するオープンソースのライブラリがこんなにたくさんあるとは。ライブラリに付属のサンプルをちょっといじるだけでできてしまいました。URLから画像を生成するツールと組み合わせたら、あっという間に完成です。日本語ももちろん対応しているし、何より速度が大違い。

Windows上で動作すれば今回は良いので、これでおしまい、ということにしました。それと、「それ、本当にPHPでするべき仕事?」というのは考えないといけないと思います。

[追記]
今頃気がつきましたが、

Takeshi Kannoさんの、
http://libharu.org/
と、これをPHP上で使えるようにした
PECLのext/haru extension
http://jp.php.net/manual/ja/book.haru.php
でも良かったかも。

Dynamically Generating PDF Files with PHP and Haru
http://devzone.zend.com/article/4044-Dynamically-Generating-PDF-Files-with-PHP-and-Haru-

http://php.net/manual/ja/function.imagegrabwindow.php
でIEのキャプチャも取れる〜。
posted by SDozono at 15:14| 東京 ☁| Comment(3) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2009年03月20日

Release: 1.2.2.8120

1.2.2が公開されています。

Release: 1.2.2.8120
http://bakery.cakephp.org/articles/view/release-1-2-2-8120

今回のリリースは、cakephperさんの下記の報告が大きなひとつの理由となっていると思います。お疲れ様でした。

Paginator helperにXSSの問題
http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=1779&forum=9
ラベル:cakephp リリース
posted by SDozono at 14:12| 東京 ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2009年03月12日

「CakePHPによる実践Webアプリケーション開発」

毎日コミュニケーションズから新刊!

Shin 1x1
「CakePHPによる実践Webアプリケーション開発」が出ますhttp://www.1x1.jp/blog/2009/03/book_cakephp_application.html
ラベル:cakephp
posted by SDozono at 06:31| 東京 ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2009年03月10日

SQL EXPLAIN Component

A baker in Japan wrote a "SQL EXPLAIN" component.
If you really like CakePHP's SQL Debug feature, I'm sure you love it.

You can download from here:
Page:
http://d.hatena.ne.jp/cakephper/20090310/1236684519

Download:
SQL EXPLAIN component
http://cake.eizoku.com/source/explain_sql.zip
for MySQL & PostgreSQL
ラベル:cakephp SQL
posted by SDozono at 22:00| 東京 ☀| Comment(1) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

CakePHP初心者向けハンズオン

yandodさんによるCakePHPハンズオンがグリー株式会社 3Fセミナールームにおいて開催され、無事に終了したそうです。

雑文発散
CakePHPハンズオン@Tokyo #2 へ参加してきた
http://suzuki.tdiary.net/20090307.html#p01

yandodの日記
3/7(土)CakePHP初心者向けハンズオンを開催します
http://d.hatena.ne.jp/yandod/20090223/1235344997

企業の製品に関するハンズオンだったら非常に高額な授業料になると思うのですが、オープンソースならではの企画・講習会となったのではないでしょうか。

企業でまとめて講習を受けたい、という場合にも講師として招待できるかもしれません。その場合には費用が発生すると思います。(笑)

(おまけ)
※CBAでは、異文化研修コミュニケーションを引き続き承っています。
TESOL式によるトレーニングや、実際に海外と丁々発止の交渉をしながら業務を行う講師による、リアルな授業を展開していますのでお気軽にご相談ください。
http://www.cba-japan.com/2006/08/post.html#more
posted by SDozono at 09:28| 東京 🌁| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2009年03月06日

フレームワーク同士の大人の付き合い方

なんかよく分からないタイトルになってしまいました。(笑)
最近は耳にしませんが、
「XXフレームワークはだめだ。○○フレームワークのほうが良い」
というような言い方をPHPの世界ではよく耳にしました。

Cakeが槍玉に挙げられることが多かったのも事実です。
そういう「槍玉にあげる」人もいたからです。

今日のはてなブックマークでホットエントリに入っていたリンクに面白い一節がありましたので、せっかくなので引用しておきます。

CakePHPも、Symfonyも、CodeIgniterも、Akelosも、Rachoも、その他のフレームワークも、みんなこれは大事だと思います。

Original:
http://producingoss.com/en/marketing.html#competing-products
Don't Bash Competing Open Source Products
Refrain from giving negative opinions about competing open source software. It's perfectly okay to give negative facts—that is, easily confirmable assertions of the sort often seen in good comparison charts. But negative characterizations of a less rigorous nature are best avoided, for two reasons. First, they are liable to start flame wars that detract from productive discussion. Second, and more importantly, some of the volunteer developers in your project may turn out to work on the competing project as well. This is more likely than it at first might seem: the projects are already in the same domain (that's why they're in competition), and developers with expertise in that domain may make contributions wherever their expertise is applicable. Even when there is no direct developer overlap, it is likely that developers on your project are at least acquainted with developers on related projects. Their ability to maintain constructive personal ties could be hampered by overly negative marketing messages.”

日本語:
http://producingoss.com/ja/marketing.html#competing-products
「競合するオープンソースプロジェクトを攻撃しない
競合するオープンソースプロジェクトについて、否定的な意見を述べるのはやめましょう。 否定的な 事実 については一向に構いません。 — 容易に裏が取れる主張は、比較する要素としてよく見られるものだからです。 しかし、あいまいな事柄に対して否定的な評価を行うことは避けた方が良いでしょう。 理由はふたつあります。 まず、それがきっかけで建設的でないフレームウォーが起こりがちだからです。 ふたつめは、もっと重要なことですが、 あなたの プロジェクトにいるボランティアの開発者の中からも、 競合プロジェクトで働く人が出る可能性があるからです。 前者より、後者の方が多く発生する可能性が高いです。 なぜなら、それぞれのプロジェクトは既に同じ専門領域に属していて(それゆえに競合関係にあります)、 その領域で専門知識を持っている開発者は、 それを生かせる場所であればどのプロジェクトでも貢献してよいからです。 直接的には開発者が重複していない状況でも、あなたのプロジェクトにいる開発者が、 関連するプロジェクトの開発者を知っている可能性があります。 彼らの建設的な人間関係を維持する能力が、 否定的なマーケティングのメッセージによって全て壊れてしまう可能性だってあるのです。 」
posted by SDozono at 13:24| 東京 ☔| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2009年03月05日

AuthComponentの最初の一歩

知っている人は知っている?知識かもしれませんが、一応。

Authコンポーネントを使うと簡単にパスワード画面が作れるが、最初にその画面を通してもらうために入れるDBの値はどうやって指定するの?
そこを通してもらわないと、最初のデータの追加・編集もできないじゃないか、という話です。

Cakeの 1.2.1.8004から、Authコンポーネントを使ってログイン画面を作っている場合、それ以前のバージョンでは表示されていた、“パスワードをハッシュ化した値”が、SQLのデバッグ画面に表示されなくなりました。

私は、以前のバージョンで作り出す時にはローカル環境でデバッグ表示をONにし、SQLデバッグの画面に表示された、“ハッシュされたパスワード”を phpmyadmin でDBに入れていました。

要は、“卵が先か、ニワトリが先か”というやつですね。
まぁ、万が一のことも考えると、セキュリティのことを考え、画面には一切表示しない、というほうが安全なのかもしれません。

で、8004以降はどうやって、「DBに入れる最初の値を知るか」という点ですが、これはどこかで

echo $this->Auth->password("知りたいパスワード");

とすれば、ハッシュ化された値がすぐとれます。その値をDBに入れておきましょう。ちなみに、セキュリティ・Saltの値によってこの値は変わります。パスワードの値は同じでも、ハッシュ化された値はまちまちになりますので注意。
ラベル:cakephp AUTH
posted by SDozono at 16:08| 東京 ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2009年02月26日

Komodo IDEでCakePHP開発

Komodo IDEでの開発の様子を Mattが公開していました。

PseudoCoder.com
Programming CakePHP Apps with Komodo IDE
http://www.pseudocoder.com/archives/2009/02/25/programming-cakephp-app-with-komodo-ide/

下記にあるCakePHPエクステンションを使っているらしいです。
http://community.activestate.com/node/2794

たまには、ほかの人の開発環境を見てみるのも参考になります。
posted by SDozono at 12:22| 東京 ☁| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2009年02月10日

CakePHP AjaxHelper Sample

CakePHP AjaxHelper Samples (beta)
http://www.cakephp.jp/ajaxdemo.zip

AjaxHelperをどう使うか、というサンプルであって、「どこまでできるか」という応用サンプルではありません。念のため。
考え方だけ一応見ていただいて、jQueryにするなり、Dojoにするなり、script.aculo.usを使い続けるなり、いろいろ試せば、様々なエフェクトが見つかると思います・・・。

(autocomplete, InplaceEditor, sortable などは、時間ができたらそのうち追加します。)
ラベル:cakephp AJAX Sample
posted by SDozono at 11:13| 東京 ☀| Comment(0) | TrackBack(0) | CakePHP Helper | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。