2010年04月01日

文字コード問題でダウンロードできない・・・

(CakePHPネタじゃありませんが)

Vtigerですが、
http://vtiger.com/
何回目かのサーバの引越しをしたところ、添付ファイルがうまくダウンロードできなくなったとのお知らせが・・・。

ファイル名を見ると、Shift-JISがあったり、UTF8らしいのにUTF8で扱えなかったりとなんじゃこりゃの状態に。サーバの設定がまちまちだんたんだなぁ・・・。

最初は、

convmv
http://www.j3e.de/linux/convmv/
とか、はたまたWindows上で
uniconv
http://www.vector.co.jp/soft/winnt/util/se368807.html
とかを試してみたのですが、どうにもうまくいきません。無駄な時間だけがながれてゆく・・・・。

数百ファイルをどうしようと思いましたが、ふと、「色々文字化けとか面倒なのであれば、ダウンロードする時点で、PHP側でファイルを見つければいいんじゃないか」と思い、

/home/trixbox/www/vtigercrm/modules/uploads/downloadfile.php
の中に、

・UTF-8でファイルがなければ、Shift-JISにファイル名をエンコードして検索してみる
・(略)
・それでもなければ、先頭のINDEXの数字を頼りに検索

して、見つけてくる数行を書きました。
とりあえず、これでOK。

「データがおかしい場合には、無理にデータを直そうとせずに、取り出す時点で柔軟になんとかできないか考える」というのも大事ですね。
posted by SDozono at 16:38| 東京 ☀| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2010年03月18日

PHP6はどこへ行く・・

こちらで早速まとめられていますので、これが分かりやすい。

PHP6開発 UTF-16化を断念、5.3へロールバック
http://journal.mycom.co.jp/news/2010/03/17/053/index.html
「PHPの次期メジャーバージョンはPHP6になるとみられてきたが、問題を打破するために開発ブランチを5.3ベースへ巻き戻すという対処が実施された。Rasmus Lerdorf氏がphp.internals: PHP 6においてPHP6 Unicodeの実装が失敗したことを伝えている。PHP6ではエンジン内部の処理がUTF-16に統一される計画になっていたものの、関係者からはこの方針は間違っているのではないかという指摘もあった。今回実装が行き詰まったことで、PHPはUnicodeに対して新しいアプローチをとることになる。」

元ネタ記事はこちら:
Future of PHP 6
http://schlueters.de/blog/archives/128-Future-of-PHP-6.html
posted by SDozono at 09:40| 東京 ☀| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年08月04日

MITライセンスのグラフ描画ライブラリ

数値を設定するだけで円グラフや棒グラフなどを描画してくれるPHPライブラリって、なかなか良いライセンスのものが見つからないなぁと思っていたのですが、MITライセンスでなかなかセンスの良いライブラリが公開されていました。

Protochart
What is ProtoChart?
ProtoChart is a new opensource library using Prototype and Canvas to create good looking charts. This library is highly motivated by Flot, Flotr and PlotKit libraries.

デモはこちらから。
http://www.deensoft.com/lab/protochart/index.php

下記にMITライセンスであることが書かれています。
http://code.google.com/p/protochart/
ラベル:protochart
posted by SDozono at 10:43| 東京 🌁| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年06月10日

何かと話題の“array”。

これはPHPの構文自体の話題

Better array syntax for PHP: Here's your chance to weigh in
http://www.debuggable.com/posts/better-array-syntax-for-php:484d6517-a700-4af3-a62f-64544834cda3

$fields = array('id', 'name', 'created');

$fields = ['id', 'name', 'created'];

と書けたらいいんじゃない?という提案に対する、PHP自体の開発者たちの反応とPHPを使う側の反応の違いについて説明されています。

開発者側は3分の2が反対、ユーザ側は20人中17人が賛成、という結果だそうです。

ちなみにこの記事は、CakePHPのリードデベロッパーによるもの。
ラベル:PHP
posted by SDozono at 10:22| 東京 🌁| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年06月06日

mysql_free_result()

suzukiさんの書かれた Authcomponentに関するTicket
https://trac.cakephp.org/ticket/4744
がEnhancementになったそうなので、Enhancementってどれくらいのものが登録されているのだろう、と疑問を持ち、ページを開いてみました。

https://trac.cakephp.org/report/2
ありゃーいろいろありますね。これは、「とりあえずすべての開発者に影響を与えるわけではないが、ある場合には影響がある」というものがとりあえずこちらに並べてあるように思います。すべてを扱うにはまだ人手が足りていない、ということかもしれません。

下の列には、“optimizaion”という欄があって、「こうすると速くなった〜」という情報がいろいろ書いてあります。そこで、こんなのに目がとまりました。

Ticket #4801 (new Optimization)
MySQL Highly Effective Optimization
https://trac.cakephp.org/ticket/4801

「非常に効果的なMySQLの最適化」って何をするんだろう、と思ったのですが、要は dbo_mysql.php の中で、mysql_free_result() をすると、メモリの使用が最適化されるので、スピードがかなり速くなったよ、という報告でした。そうなのかぁー。扱うデータ量が多い場合には効果があるかもしれません。関心のある方、ベンチ−マーク、お願いします。

でも、PHPマニュアルのコメント欄を見ると、
http://jp.php.net/mysql_free_result
「使ったほうがいい」「使わないほうがいい」と賛否両論です。
環境によるのかもしれませんね。

とりあえず、
https://trac.cakephp.org/report/2
はたまに見るとよさそうなページです。
ラベル:cakephp ノウハウ
posted by SDozono at 11:44| 東京 ☔| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年04月19日

EUC-JPではなく、EUCJP-win!!!

MySQLの文字コードの設定は、ujis、utf8なんかでいいんですが、HTMLのほうの文字コードとなると、業務で使用している人には常識で、そうでないと知らない、みたいなものがあると思うので、参考まで。

お客さんがWindowsを使うと分かっていて、日本語の名前に関するデータ処理をするようなプログラムを書く場合、

$str = mb_convert_encoding($str, "EUC-JP", "UTF-8");
なんてやっちゃだめです。
$str = mb_convert_encoding($str, "EUCJP-win", "UTF-8");
としないと、あとできっと、顧客からクレームが来ます。

$str = mb_convert_encoding($str, "Shift-JIS", "UTF-8");
ではなくて、
$str = mb_convert_encoding($str, "SJIS-win", "UTF-8");
です。

Cakeとは関係ありませんが、これは知っておかないとイカンのではないでしょうか。なんでだろう、と思う人は、

「山崎」さんと「山ア」さんなどで実験してみてください。
ラベル:文字コード
posted by SDozono at 15:13| 東京 ☁| Comment(0) | TrackBack(2) | PHP | このブログの読者になる | 更新情報をチェックする

2008年04月18日

"immediacy"- 即時、直接、迅速

Loud Thinking
By David Heinemeier Hansson
april 03, 2008
http://www.loudthinking.com/posts/23-the-immediacy-of-php

The immediacy of PHP

“(PHPという)プラットフォームはアンフェアに評価されている。小規模の開発に使い続けているが、パーフェクトそのものだ。(it's ablolutely perfect.)その中ですべてが準備されている、というのが好きだ。言語自体の中に非常に多くの便利な関数が含まれている。”
posted by SDozono at 09:40| 東京 ☔| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年02月03日

PHP/Erlang

PHP、Erlangと出会う。

PHP/Erlang 0.0.2
http://www.math-hat.com/~zukerman/projects/php-erlang/README

INTRODUCTION

PHP/Erlang aims to be a PHP extension with a simple set of functions
for turning a PHP thread into an Erlang C-node. With this extension,
you can shift backend tasks to Erlang, where they belong: caching,
chat, database proxying, everything.

posted by SDozono at 15:46| 東京 ☔| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年01月30日

どの言語が良いか、という議論

最近、PHP言語がどうのこうの、と話題になっている件について。

自然言語での話に写してみると、「日本語は英語よりすばらしい」とか、「○○語は文法がルーズだし、その言語話者はみんな適当だからだめだ」なんて議論をブロガーがはじめたら、それは確実に炎上しますよね。
(自然)言語学の世界でそんな記事を投稿しだしたら、失笑ものです。

世の中には、ピジン言語あり、クレオール言語あり、国が定めた共通語ということで、母語以外に使っている言語あり、で、言語はいろいろな使われ方をしています。

どれが正しいとか間違いとかではなくて、それぞれに「ニーズ」があるので、生き残っているのではないでしょうか。
また、プログラミング言語についても同じことが言えると思います。プログラムを組む人であれば、本当に大切なのは「何で書くか」よりも、「何をどう書くか」だということを知っているはずです。

・PHPで書かれたブログアプリWordpressがよく使われているのはなぜか。
・販売サイトを作れるOsCommerceやZen CartがPHPで書かれているからといって、すぐに危ないということになるのだろうか
・Firefoxのアドオンを管理するaddons.mozilla.orgがCakePHPフレームワークを使ったPHPで作られたサイトだからといって、すぐに“初心者向けの”お手軽ソリューションを使ったと結論できるか
・データベース管理アプリケーションの中には、PHPファイルを一枚使ったHTTPトンネリングを実現しているものが幾つかあるが、なぜ他の言語ではなく、PHP言語で書いているのか
・SNSのGreeはPHPを使っているのでセキュリティが心配で夜も眠れなくなるのだろうか
・PHPで書かれたCMSのXoopsはどうして堅牢なのだろうか
・なぜPHPで書かれたpukiwikiがこれほど多くのサイトで使用されているのか
・MySQLといっしょにかなりの割合で使用されているphpMyAdmin は、どうして perlMyAdminではなく、rubyMyAdminでもなかったのか
・PHPでサイトを構築したYahooは“初心者”のエンジニアの集団なのだろうか

など、いくらでも作れます。

ちなみに私は、Basicでプログラミングに入り、Z80でマシン語に手をそめ、Cで構造化に目覚め、VC++でWindowsプログラミングに立ち向かい、翻訳のため、VBAでワードのマクロを書きまくりました。そしてDelphiでコンポーネントの便利さに目覚めました。現在は縁あってCakePHPを使ったPHPプログラミングを応援していますが、これはこれで便利だなぁと日々実感しています。
ラベル:言語
posted by SDozono at 13:22| 東京 ☀| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2007年09月19日

mumu.php instead of Smarty

これはCakePHPと親和性が高い!と思ったら、「MuMuは、DjangoというすばらしいWebフレームワークに強く影響を受けています」とありました。

PHP向けテンプレートエンジン MuMu
http://qwik.jp/mumu/

1枚ファイルの中にクラスがある格好なので、Vendorディレクトリに入れればすぐ使えそうです。Smartyよりもずっとシンプルで、Cakeとうまくやっていけるかも。

Rails に影響された CakePHPというPHPフレームワーク
+
Django に影響された mumu.php というPHPテンプレートエンジン

この組み合わせ、なかなか面白そうです。
ラベル:mumu.php
posted by SDozono at 14:11| 東京 🌁| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2007年08月24日

SET NAMESは禁止?

PHPのセキュリティに詳しい大垣さんのブログ

SET NAMESは禁止

(引用)
============
脆弱性の説明は面倒ですが注意事項は簡単です。「DBMSをアプリケーションから利用する場合、文字エンコーディング設定は必ずAPIを利用する」つまり「SET NAMES(SET CLIENT_ENCODING等も)は禁止」です。
============

日本語以外の記事では、「SET NAMESを使ってはいけない」とまで書いている記事が見つからなかったので、いまだすんなりと納得できていないのですが、今後、MySQL 4.1以上を入れた共有サーバなんかではどうすればいいんでしょうか…。

“SET NAMES sjs”に問題がある、という記事は下記にありました。

t_komuraの日記
addslashes() による SQL 文字列のエスケープ回避問題

hoshikuzu | star_dust の書斎
■PHP 利用時に Shift_JIS で addslashes() によるエスケープ処理に SQL インジェクション可能な穴

“mysql_real_escape_string()でもSET NAMES sjis;等を実行した後に使うと2バイト目の0x5C文字がエスケープされないようです。”とあったので、

"0x5C SQL injection"
などで調べると、下記のページが。

http://www.postgresql.org/docs/techdocs.50
でも、このページには、

"this includes at least SJIS, BIG5, GBK, GB18030, and UHC."

とあります。大垣さんは、

SET NAMES ujis
SET NAMES utf8
SET NAMES binary

もみんな使うな、と言われているのでしょうか…。
このあたりに詳しい方、どなたか教えてください。
posted by SDozono at 15:45| 東京 🌁| Comment(10) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2007年08月15日

php sweets

嗜好品系PHP?のまとめ。
あまりまじめに考えず。

CakePHP(ケーキ)
http://cakephp.org/

Cheesecake(チーズケーキ)
http://cheesecake-photoblog.org/

hotcake(ホットケーキ)
http://cakeforge.org/projects/hotcakes/

Pocky(ポッキー)
http://cakeforge.org/projects/pocky/

Biscuit(ビスケット)
http://bennolan.com/biscuit/

phpPeanuts(ピーナツ)
http://www.phppeanuts.org/

Chocolate(チョコレート)
http://www.phpchocolate.com/

Double Choco Latte(ダブルチョコラテ)
http://dcl.sourceforge.net/

チョコレートの大研究
http://www.php.co.jp/bookstore/detail.php?isbn=978-4-569-68661-5
PHP研究所はやはりサイトに.phpを使用している。
(There is a famous "PHP" company in Japan from 1946.)
ラベル:PHP projects
posted by SDozono at 10:34| 東京 ☀| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2007年06月11日

PHP_ROUND_FUZZについて

CakePHPと直接関係はありませんが、調べついでに書いときます。

「定数PHP_ROUND_FUZZは0.50000000001なんていう不思議な数に定義されているみたいですよ!こんな見事なマジックナンバーは久々に見ました!」と、下記のブログにありました。

PHPの奇妙なround関数
http://d.hatena.ne.jp/hnw/20070515

が、ためしにGoogleで“0.50000000001”と検索すると、結構出てきます。この数。

あと、この方、
http://bugs.php.net/bug.php?id=24142
に気がついておられますが、rasmusあっとphp.netさん(PHPの前身を世に送り出した人)の"round to even"、"banker's rounding"に関するコメントをすっ飛ばしているように思いますが、いいのかなぁ。

"This is expected behaviour. When rounding on exact halves we round down on evens and up on odds. If you want to always force it in one direction on a .5 (or .05 in your case) add or substract a tiny fuzz factor. The reason behind rounding half the values down and the other half up is to avoid the classical banking problem where if you always rounded down you would be stealing money from your customers, or if you always rounded up you would end up over time losing money. By averaging it out through evens and odds you statistically break even. If you want to learn more, search the web for terms such as "round to even" or "banker's rounding" and you will find that most languages actually do it this way."

日本語で「四捨五入する関数」といったら挙動は間違いになりますが、英語では「丸める関数」(round)です。

下記を見ると、「丸め」方は一通りでないことが書いてあります。PHPにも触れていますね。
http://en.wikipedia.org/wiki/Rounding

What Every Computer Scientist Should Know About Floating-Point Arithmetic
http://docs.sun.com/source/806-3568/ncg_goldberg.html

ちょっとInterrop関連の準備で忙しいのであまり勉強できていないんですが、もう少し突っ込んで調べると面白そうです。カナダブースにいらしても、この話は、なしにしましょう!(笑)

追記:
hnwさんも触れておられますが、
下記のコメント欄には時系列で記録が残っていますね。
http://jp.php.net/manual/ja/function.round.php
ラベル:PHP_ROUND_FUZZ
posted by SDozono at 19:05| 東京 ☀| Comment(6) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2007年02月17日

"PHPはRuby on Railsから何を学べるか"- Chris Hartjes インタビュー

昨日の Zend Developer Zone に面白い記事があったので紹介。

30 Minutes with Chris Hartjes
by Cal Evans (editor)
ChrisHartjes_s.PNG

Zend Developer Zone の Editor をしている Cal Evans が Chris Hartjes にインタビューをした、という記事です。この記事の中では語られていませんが、CakePHP MLを読んでいる人はピンときたかもしれません。二人ともCakePHPで(も)つながっています。(ほかの所でもつながっているかもしれませんけど。)

Cal EvansはもともとZendに移る前、規模の大きいプロジェクトでCakePHPを使おうとしていた、という経緯があり、ML初期に投稿があります。

Chris Hartjes は現在、verticalscope でPHP開発者として働いています。verticalscopeの顧客を見ると日本企業もかなりお世話になっているようですね。
http://www.verticalscope.com/aboutus/ourclient.html

Chris Hartjes のトロントでの php|works で話したテーマは“What Can PHP Learn From Ruby on Rails”というもので、好評だったためか、バンクーバー PHP カンファレンスでも同じ話をしたようです。

「PHPはRuby on Railsから何を学べるか」というこの講演の内容は、ブログで公開されているので見ることができます。実はこれ、Railsの何が特徴なのか、という点を詳しく述べつつ、「実はCakePHP(そしてZend Framework)でも、フレームワークを使えば同じような利点を持って仕事ができるぜ!」という話です。

Back from Vancouver PHP Conference 2007
http://www.littlehart.net/atthekeyboard/2007/02/14/back-from-vancouver-php-conference-2007/

(使われたスライド)

で、このインタビュー記事で面白かったのは、Chris Hartjes の現在している仕事がちょっと書いてあったことです。

"Yes, we use vBulletin a lot at VerticalScope . ... I’ve spent a lot of time writing “glue code”. For example, I wrote a stats reporting system that does some cool ajax stuff with sortable grids of data that resort without reloading. "

だそうです。ふ〜ん、そうなんだ(^_-)-☆。直接は書いてありませんが、何を使って開発しているかは明白でしょう。(どうかなぁ〜。聞いてみたいなぁ。)

CakePHPを使っていて思いますが、こういうツールは、「既存アプリのデータベースをそのまま利用したアプリを書く場合」でも力をはっきします。というより、データベーステーブルがきっちり設計されているものに対しては、かなり即席にアプリケーションを作成できると思います。

企業内で使うようなアプリのことを、“infrastructure” programming in PHP と呼んでいますね。うちの会社(株)コミュニケーション・ビジネス・アヴェニュー(http://www.cba-japan.com)も、そんな企業内で使うためのPHPアプリばかり書いています。
posted by SDozono at 18:04| 東京 ☀| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2007年01月01日

rails2cake

うーん。風呂場で浮かんできた。

Ruby2php はまだない。
でも、Ruby2C はもう始まっている。
http://rubyforge.org/projects/ruby2c/
c2php というプロジェクトもある。
http://sourceforge.net/projects/c2php/

だから、
ruby2php も時間の問題でだれかが作るだろう。

すると次は、

rails2cake があればいい。
そうすれば、開発はRailsで、運用する時にはレンタルサーバで、なんていうことも現実になる。

こんな記事を読んだからかもしれません。

CakePHPで作りなおした
http://prototype-game.blogspot.com/2006/12/cakephp.html
ジャンケンのパフォーマンスが悪い……今のレンタルサーバーじゃRailsのパフォーマンスを引き出せない
試しにPHPで作り直した

ジャンケンCakePHP版

フレームワークにCakePHPというものを使った
Ruby on Railsに触発されて作ったものらしくかなり似ている
細かいところが違うけど、なんとか移植できた
3ヶ月近くかかったものが3日でできた
それだけ似てるってことだ
まあ、Rubyならではの機能を使いこなせてなかったし、
データベースの設計はできてたし、HTMLとJavascriptはそのまま使えたし楽だった

少し遊んでみたら、パフォーマンスが良かった



ラベル:cakephp
posted by SDozono at 11:04| 東京 ☀| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2006年12月28日

Zend Framework が間もなく Symfony をトレンドで追い抜く模様。

恒例のGoogleトレンド。

Googleトレンドリンク

1.0 に向けて、Zend Frameworkに対する関心が集まっていることは明らかだと思います。ちなみに、公開されているスケジュール情報はこちら。

Project Management Team
Zend Framework Components


まもなく、SymfonyとZend Frameworkの両者は2位争いによって順位が入れ替わりそうです。しかし、やはりCakePHPが1位です。CakePHPもいったんは追い越されるのではないでしょうか。その後、再び、“CakePHPが使いやすい”と順位が上がってくるのではないかと予想していますが。(希望的観測かも。)Ethnaも健闘していますね。

php_framework_trends.PNG

Zend Framework の使われ方を見ていると、“部品として使ってください”というプロモーションが成功しているように見受けられます。自分の使用しているフレームワークにポンとはめこんで使っているやり方もよく見受けられます。

Piece Frameworkなども、まさにピースとして使ってください、とうたっていますね。「あなたの目的に合ったプロダクトをお選びください」と大書きされていますので。

ただ、私個人としては、PHPフレームワークに関しては、もう1段階くらい、ブレークスルーがあるような気がしてなりません。

1)デザイナーが気軽に使えるフレームワーク
2)XOOPS のモジュールの追加くらいのレベルで「機能別部品の組み込み」ができるフレームワーク
3)ビューファイルが独立(Smarty構文が使用可能?)
4)ゲーム機のカセットを入れ替える感覚で新機能(モジュール)を追加(出し入れ)可能
5)FireFoxのように、アップデートされたら自動更新
6)セキュリティを追求。Pieceのようなアプリケーションフローの制御。

なんていうフレームワークがあったら、世界を席巻するのではないでしょうか。じゃあ、CMSとこれのどこが違うの?というと、「部品化のレベル」が違います。

CMS -> "フォーラム"モジュール、“ニュース”モジュール、“リンク集”モジュール

近未来のフレームワーク -> "フォーラム"モジュール,"Ajax入力"モジュール、"CRUD"モジュール、"商品管理"モジュール、"カレンダー"モジュール、"バーコード入力"モジュール、“認証管理”モジュール、“CTI”モジュール、“地図表示”モジュール、などをCMSのモジュールの感覚で、「1枚のページに自由に組み合わせることができる」ようなフレームワークです。

「コードを書かなくてよいフレームワーク」とか、「ディテールを細かく調整できるCMS」とか、現在のフレームワークとCMSの中間的存在のものが現れてもよいように思います。

どうでしょうか。
posted by SDozono at 10:39| 東京 ☀| Comment(0) | TrackBack(2) | PHP | このブログの読者になる | 更新情報をチェックする

2006年12月09日

本物PHPより速い?.NET版PHP-Phalanger

ベンチマーク記事のコメントになぜかこのプロジェクトが……。

http://www.codeplex.com/Phalanger

ベンチマークを取ると、本物のPHPより速いらしい。

http://php-compiler.net/Benchmarks.htm

Windowsでサーバを運用しているのであれば、これでPHPスクリプトを動かすのも手かもしれません。
posted by SDozono at 12:20| 東京 🌁| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする
×

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