最新エントリ
2007/12/25
|
カテゴリ : PHPメモ
執筆者:
itoh (6:40 pm) |
http://php.net/serialize 引用:
とりあえず、手元のWindows用PHP4.3.11とFHEL4のPHP4では再現した。 つーか、100Kどころか60Kそこそこで発露。ありえねー。 でも単純に100Kほど文字列をシリアライズしてもならないんだよ。 CSVで60Kほどのをセッションに保とうとして失敗した。途中でブツっと切れるんです。あー ![]() ![]() ![]() ちがった。 セッションに保存できないのは、DB使っててセッション用のField定義がtextだからだ。だから60K=textの65000文字付近で切れるんだ・・・。すんません>PHP |
2007/09/06
|
カテゴリ : PHPメモ
執筆者:
itoh (12:19 pm) |
UTF-8のカタカナの正規表現 http://www.itt-web.net/xeblog/index/action_xeblog_details.1/blog_id.459.html がコメントをもらってたとおり、ひらがなを一部含んでたので、書き直し。 |
2007/08/29
|
カテゴリ : PHPメモ
執筆者:
itoh (10:26 pm) |
環境によるんだろうけど、初めて出たのでメモ。 [ethna-users:0588] Windows版PHPとqmailでEthna_MailSenderから送信できず あたりの議論とも組み合わせて。 上鍵さんの言うPHPのmail()のできの悪さって言うのも影響してる。 http://blog.poyo.jp/archives.php/id-1139994430 で、Ethna_MailSenderは、送信する直前で ってやってるんだけど、 引用:
な環境では、余計なお世話になってて、 $header_line = str_replace("\n", "\r\n", $header_line); をコメントアウトしないとExtraHeaderがダブル改行されてしまって、あふれる。 うーん。どうしたもんかな。原因がわからないからMLにもよく投げられん。 |
2007/06/19
|
カテゴリ : PHPメモ
執筆者:
itoh (10:09 am) |
$_SERVER['DOCUMENT_ROOT']使うときって、最後に"/"が付いているのが普通と思いますか? どうも、ApacheのDocumentRootを抜き出しているだけなので、/が付いてたり付いてなかったり。Confに拠るのね。 ということで、自分ルール「/は着いてないものとする」 |
2007/05/21
|
カテゴリ : PHPメモ
執筆者:
itoh (1:18 pm) |
他のPHPerがどういう反応するのかなーっていう気もするけど。 そろそろPHPに関して一言いっとくかに対して。 私は、数年前にPHPで初めてプログラムに触れ、その楽しさを知ったものだ。そして、ホームページ作成業者として、PHPでちいさな企業ホームページをちまちまと多々作り垂れている。そのほとんどは月額3000円未満のレンタルサーバだ。 とりあえずインストール。必要なものだけロード dankogai氏の言う「ライブラリ」がどのレベルのライブラリなのかは不明だが。 PHPコアを拡張する様々なライブラリが欲しければ、設定ファイルphp.iniでロードさせればいいし、なんならスクリプト中でロードさせることもできる。後者は実際にどこまで使われているかは別として。 Webアプリを作るためだけの言語 がPHPなのだからしょうがない。といいつつも、コマンドラインでも使えないことはない。ワンライナーが欲しければ、php -r でどうぞ。 Webアプリを作るためだけなのだから、「Webアプリで作ったクラスや関数がちょっとコマンドラインでも使えればうれしいよね。」くらいのおまけ的気持ちで。 呪文にはマニュアルで対抗 呪文を知らなければ、魔法の書を使えばいい。PHPはマニュアルが充実してると思う。ブラウザの「配列の逆順ソートってarsortだっけ?」と思ったらブラウザのロケーションバーから php.net/arsort と入力してみて欲しい。 PHPの配列に関する関数ってなんかいろいろあったよね。って思えば、同じく php.net/array とすると、配列に関する関数一覧に飛ぶ。呪文なんて覚える必要全くなし。私は未だにstr_replaceの引数の順番すらあやしいときがある。 この協力も含めてPHPを評価して欲しい。 バージョンの変化は意外と少ない 実際にホームページ製作をしていて、PHP4とPHP5の違いで悩まされたことはほとんど無い。「仕様が激しく違うじゃないか!!」と言われても実際にそんなバージョンごとで異なる仕様の部分なんて使わないんだからしょうがない。だからPHP5は未だに普及しない。私も基本的には使わない。だからPHP4は4.4.6なんて未だに出る。 言語で言語を拡張できない? すみません。そのとおりです。しかし、実用上で困ったことはありません。 MVCって何ですか? ここ2年ほど出ている様々なPHPフレームワークって言うのはMVCモデルじゃないのか? Ethna Maple Zend Framework 大規模Webアプリケーションにおいて、Viewしか任されて無いから、Vだけ・・・ということならそうなんでしょう。 総括 どこまでも実用的なのがPHP。そこにプログラム言語の美しさやあるべき姿を求められても困る。 PHPは「今そこにあるから」使うだけで、じゃあそこにPerlがあれば私はPerlを使っただろう。しかし、CPANのインストールはレンタルサーバではできないし、エラーが起こった際も「Internal Server Error」だけではにっちもさっちも。 PHPは良くも悪くも踏み台。 私はそこから入ってJavaScriptを覚えようという気になったし、SQLも勉強した。PHPがなければこんな楽しい仕事があるとは思えなかったし。 だから、新しいものが作りたいなと思ったDHHはRuby on Railsを作ったんだろう。 言語的にPHPに未来があるかと言われたら、おおきな?だが、PHPからプログラムに入って「おもしろい」と感じた人がどれだけ多いか。それはPerlよりも多いのではないかと。ことによると、JavaScriptよりも多いのではないかと思っている。 だから、 そろそろPHPに関して一言いっとくか 引用:
は大いに同意。 |
2007/04/27
|
カテゴリ : PHPメモ
執筆者:
itoh (5:09 pm) |
COOKIEは配列を収められないので、文字列にして保存するのだけど、COOKIEには4kbの壁がある。 そこで、再帰処理を使って4Kまで落とす。 ただ、再帰は100回を越えると 引用:
となるので注意。 |
2007/04/21
2007/04/11
|
カテゴリ : PHPメモ
執筆者:
itoh (9:27 pm) |
地域メッシュと言うのがあります。 Wikipediaによると 引用:
で、このデータは割と色々なところで統計情報とかに使われている。 メッシュに対して、人口とかあれやこれやの社会情報データが割り振られているわけです。 仕事で、地図とメッシュ(に与えられた)情報の相関をアレコレとすることになり、調査しました。ようするに、メッシュコード←→緯度・経度の変換がやりたい。 ちなみに、GoogleMapなどで与えられている緯度・経度は、世界測地系(新測地系)で、メッシュコードは日本測地系(旧測地系)で与えられている。これの変換は実は地域ごとに微妙なゆがみがあって一律ではないのだけど、近似的には、 日本測地系(旧測地系) + (緯度+12秒/経度-12秒) = 世界測地系(新測地系) となる(らしい)。 http://www.gsi.go.jp/LAW/G2000/img/g2000-r.gif ![]() メッシュの定義については、下記を参考 http://www.sinfonica.or.jp/catlog/annai/mesh/mimginfo.htm で、変換については http://www.green.pref.tokushima.jp/database/meshselect.htm のJavaScriptを見て計算式を色々と試してみた。上記のは3次メッシュまでしか対応していないので4次メッシュまでPHPで作った。 コード見れば分かるが、このままで公開すると危険なので使う場合は自分のローカルPCだけでやるように。 |
2007/04/04
|
カテゴリ : PHPメモ
執筆者:
itoh (4:43 pm) |
ようやく読んだ 自分なりのまとめ ファクトリー・パターン ⇒ オブジェクトを生成する時に使う。 単にクラスをnewするだけだと、能がないので。引数を変えてやることで、色々と色々な振る舞いを付け加えられる。 シングルトン・パターン ⇒ リソース管理。 ファイルポインタや、DBコネクションなどの使いまわしたいリソースは、オブジェクトでカプセル化してやるとよい。そのオブジェクトは二度と作りたくないのでこのパターンで一つを使いまわす。 オブザーバー・パターン ⇒ ロガー あるオブジェクトに何かをしたときに、「ついでに」何かをさせたい時にこのパターンを実装させておく。この場合、登録したオブザーバは呼び出し元に作用させない。 コマンド・チェーン・パターン ⇒ 仮想的にメソッドを追加する PHPにおいて、メソッドの追加は後入れできない。 このパターンを実装させておくと、(もちろん、メソッドの呼び出し方法は通常のPHPのそれとは違うけど)仮想的なメソッドのコールができる。 ストラテジー・パターン ⇒ あとでメソッドの処理を変更 プラグアンドプレイ。メソッドの処理内容をクラスに含ませない。なんか、DIっぽいなー。ってDI使ったことないし良く知らないけど。 あぁ、こりゃ面白いやデザインパターン。 |
2007/04/02
|
カテゴリ : PHPメモ
執筆者:
itoh (2:47 pm) |
Excelなどでよく使われる日付形式 引用: 2007/4/1 12:34:56 というのを、っていうUnixtimestampの値にするやつをPHPワンライナーで実現しようと思ったわけです。・・・が、いくつもの罠が待ち構えていました。@PHP4.4.4 ま、普通に考えてこんな感じかな?と。 sscanfで順序の並び替え付きの文字列解析をして、コールバックで引数にしてmktimeを呼び出すというごく単純なもの。 しかし、これが動かない。 なんでじゃー?と思い、 してみると、 引用:
とか出る。 sscanfは並べ替え付にすると最初の2つがなぜかNULLが詰まってしまうようだ・・・。 |


