Paradigm Shift Design

ISHITOYA Kentaro's blog.

PHP

Unicodeの16進表現からUTF-8のバイト列を得るスクリプト

PHP

駐:すでにオチが付いております。悲しいかなPHPには、他の言語で使えるMODULE.JP - 日本語に絡むUnicodeブロックとスクリプト(正規表現)にあるような \p{InHiragana}という表現がない*1ので、正規表現で入力されてきたUTF-8文字列がひらがなかどうかを判定す…

IE8でセッションがブツブツ切れる現象について

PHP

えー。 CollabTechも無事終わり、オーストラリアから帰国して気がつけば、1週間ちょい。 人間、喉元過ぎれば熱さ忘れるなので、気をつけます。 で、タイトルの通り、IE8でセッションがぶちぶちきれる現象に遭遇し原因を探るのに時間がかかってしまいました。…

PHPでの文字列の文字数・バイト数・文字幅(見た目の長さ)の数え方

PHP

PHPで、見た目の長さで文字列を切って「…」を後につけるなんてことはよくやることなんだけれども、strlenでは意味がない場合があることに、恥ずかしながら最近気がついたのでメモ。 例えば、 123あい45うえおという文字列があったときに、半角10文字分を超え…

C#とPHPでファイルアップロード

C#でのファイルアップロードには、いくつかの方法がある。 WebClientを用いた方法 WebClientクラスでWebページを取得するには?:.NET TIPS - @IT WebRequestを用いた方法 WebRequest/WebResponseクラスでWebページを取得するには?:.NET TIPS - @IT POS…

クラスタリングアルゴリズムk-means++のコードをPHPにポートした

PHP

動作を理解するために本当にポートしただけ。 PHPっぽくない。 例によって、CodeReposにコミットしておいた。 元のコードにもどこにもライセンスが見当たらなかったけれど、論文のリファレンス実装だし、プレゼン資料の最後のページに 「Friends dont' let fr…

PHPでjson_encodeした文字列をC#でデコードするときの注意事項

ちょっとはまったのでメモします。 PHP側で例えば とする*1。 で、これをC#側で、 String postdata = "tokuninashi"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"http://example.com/api/"); request.Method = "POST"; request.Headers…

空白の違いだけを検出する関数

仕事で、二つの文字列の空白の違いだけを検出する必要があって、xdiffを使おうと思ったんだけれどExtensionをビルドするのも面倒なので関数を書いてみた。

はてなダイアリーの形態素解析をするクローラーの続き

PHP

はてなダイアリーの形態素数を数えるクローラー - Paradigm Shift Designの続きこの間の処理結果はこんな感じでしたが、 id エントリ数 原型形態素の出現数 原型形態素の異なり数 kent013 343 57,356 10,271 mirakui 43 15,702 4,112 atomoharu 106 7,248 2,…

PHP5.2.9をWindowsでコンパイル

PHP

わけあって、WindowsでPHPをビルドしなければならなかったのでそのメモ musicwordsさんが分かりやすく全工程をまとめてくださっていますのでご覧ください。 PHPをソースコードからビルド - Collect note ビルド環境はWindowsXP/VC8(VS2005) コマンドプロンプ…

Zend_CacheのPDOバックエンド

PHP

はてなダイアリーの形態素数を数えるクローラー - Paradigm Shift Designではてなのエントリをクロールして、形態素解析する話を書いたけれども、あれからエントリの形態素から特徴語を抽出するために少し機能拡張した。 TFIDFのDFを求めるためにYahooを、は…

はてなキーワードの情報を取得するクラス

PHP

ありそうなんだけど、Services_Hatenaを見てもなくて、探すのも面倒なので書いてみた。SimpleXMLが全くシンプルじゃないのを忘れていて時間がかかってしまった・・・orz 今作ってる奴用に、データがあるかないかだけを取得しているので、キーワードの複数の意味…

アンダーラインを含む変数名をキャメルネームにする

PHP

lower_camel_nameをlowerCamelNameに変換する関数。 preg_replace_callbackとcreate_functionはこういうときに使うらしい。

終端文字\0の除去

小一時間悩んだ。 携帯電話でどうしてもセッションが継続されず、セッションIDをダンプしたら、終端にヌル文字?がついていた。で、除去しようと、 とかすると、「\0」だけでなく「0」まで削除されてしまう。なぜ。 $ php -f null.php string(7) "hoge0\0" str…

PHPの文字列に対するisset

php

んー.PHPを6-7年近く使ってきたけど,初めて知った. の結果は,trueです. PHP :: Bug #44587 :: Problems whene asking if a key of an array isset, and the variable is not arrayにもあったけど,PHP5.2.0で試しても同じだったから,ずっと昔からの仕…

S2Dao.php5ではまる.

php

いやー2時間ぐらいはまった. エラーメッセージとスタックは exception 'S2Container_IllegalArgumentException' with message 'Illegal argument args[0] must be <ReflectionMethod>' in C:\cygwin\home\kent\www\modellista\lib\s2container.php5\build\s2container.php5\s2</reflectionmethod>…

FC2ブログに記事を投稿するスクリプト

PHP

なんとなく http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q141.. - 人力検索はてな に答えたらいるか賞をもらってしまったので,ちょっと書きなおしてみた. 元のスクリプトは,アタマノオト PHPからFC2ブログに投稿[XML-RPC,PHP]. 先頭の一行…

C#でUnixエポックタイムを取得する.

C#の DateTime.Now.Tickの値は,0000年1月1日からの秒数.UNIX Epoch Timeは1970年1月1日で,互換性がない. つか,Windowsでしか使わないとか,サーバーに接続しないとかならいいけど. で,いまC#とFlexをクライアント,Java(Teeda+S2Dao+Jsonic)をサーバ…

スタティックメソッドのオーバーライド

PHP

スタティックメソッドのオーバーライドはできないので,がんばる時の方法.単純に、 として、スタティックメソッドで多態性を使おうとしてもエラーで動かない。なぜなら、Bで継承されているスタティックメソッド、rea…

staticなプロパティの存在確認

PHP

メモ.

Apacheのログに情報を追加する方法

PHP

Apacheのログに情報を追加する方法。 PHP: apache_note - Manualを使う。apacheのログに好きな情報を出す方法(PHP編)より。 として、apacheのhttpd.confのログフォーマット設定で LogFormat "%h %l %u %t \"%r\" %>s %b %{originallog}n" common のように…

User Documentation for Flash Streaming via PHP, FlvStreamProvider

FSP*1 is a PHP script that enables to stream FLV file via PHP. originally inspired by Streaming Flv Video via PHP take two, Stefan Richter. FSP is not an substitution of FlashMediaServer. But it able to seek the video position on demand, m…

require_onceの速度

PHP

ファイル読み込みにかかる時間がどれくらいなのか,なんとなく気になったので,計測してみた. IBM ThinkPad x60,Core2Duo1.66GHz,メモリ2G で,1000クラスをrequire_onceするのと,全部同じファイルに落とし込んだファイルを読み込むのとどれくらい違うの…

PHPでストリーミング,その4

PHPでFLVストリーミング,その3 - Paradigm Shift Designの続き. キャッシュ機能を搭載した. 長いFLVでもさくっと開始するようになった. ただ,コードは微妙.PHPでFLVをストリーミングするためのスクリプトv0.4(get.php) というわけで,スクリプト冒頭の…

PHPでFLVストリーミング,その3

PHPでFLVストリーミング,その2,成功したよパパン!の巻き - Paradigm Shift Designの続き. ちょっと改良. positionをmilisecondで指定できるようにした. あとソースコードのリファクタリング. PHPでFLVをストリーミングするためのスクリプト(get.php) …

PHPでFLVストリーミング,その2,成功したよパパン!の巻き

FLVのファイルフォーマット - Paradigm Shift Design及び PHPでFLVストリーミング,その1 - Paradigm Shift Designの続き. 結局,FLVのファイルフォーマット仕様書を読んで,ちゃんとメタデータを出力するようにしたところ,ちゃんと再生された. PHPでFLV…

PHPでFLVストリーミング,その1

PHP

音声の再生とlighttpd - Paradigm Shift Designの続き. どうしても鳴らん! もうあきらめようかな. Streaming FLV Video via PHP Take Twoのソースが汚かったので書き直した. BandWidthのあたりは適当なので動くかどうか分からない. get_0.1.php(PHPでFL…

Spreadsheet_Excel_WriterでBIFF8を取り扱う

PHP

Spreadsheet_Excel_WriterではBIFF8を取り扱えるけれども色々問題があるらしく,調べてみるとでパッチを作ってくださっている人がいた. ただ,patchファイルがエントリにべた張りだったので,patchとパッチ後のファイルをアップして置きました.元々iconvと…

PHPでExcel

PHP

結論から言うと,やっぱりOLEで触らないと駄目みたい. Readerのマルチバイトの扱いが駄目駄目で,読めたり読めなかったり. これから,JakartaPOIで同じことをやってみるけど,駄目かもしれない. 調べたこと PHPExcel Excel2007(xslx)かCSVしか読めない PH…

Web for beginner 作成支援のPHP入門はクズ

PHP

初心者のためのホームページ作り/Web for beginner ホームページ作成支援はきっと誰かの役にはたっているのだろう. でも,PHP入門の関数リファレンスは,最低のクズだ.ネット上のゴミでしかない. 関数リファレンスは,PHP: 関数リファレンス - Manualを読…

Smartyテンプレートを動的に作成する方法

php

マニュアルにはきっちり載っているんだけどあまり使われていない見たいなので,検索するのが難しい話. テンプレートファイルを読み込んで,テンプレートの内容を書き換えてからfetch/displayしたいということ. とりあえずメモ [PHP-users 20789]smartyテン…