がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

じどうかってべんりだなぁ

軽くはまったPHPの機能。

auto_prepend_file  string
    メインファイルの前に自動的に付加されるファイルの名前を指定します。 このファイルは、require() 関数のコール時と同様に読み込まれます。 このため、include_path が使用されます。
    特別な値 none を指 定すると、ファイルを前に追加する機能は無効となります。 


auto_append_file string
    メインファイルの後に自動的に追加されるファイルの名前を指定します。 このファイルは、require() 関数のコール時と同様に読み込まれます。 このため、include_path が使用されます。
    none を値として 指定するとこの自動付加機能はオフとなります。

        注意: スクリプトが exit() で終了する場合、 この自動付加機能は使用されません 。 

php.iniでご設定いただけます。
自動でファイルのincludeなどができてとても便利です。


……………勘弁してくれ orz

fgetcsvがマジシャンな件について

マジシャン(手品師/手妻師/奇術師)は右手を高々とあげてふっと手を振ると、手の中の○○が鮮やかに消えます。
PHPはfgetcsvでCSVファイルを読み込ませると、ファイルの中の日本語が鮮やかに消えます。


………………勘弁してくれ orz


より正確には「”(ダブルクォーテーション)で囲まれていない文字」が消えるです。
ちなみに「部分的に”(ダブルクォーテーション)で囲んだ日本語」も、全滅しました。…まぁRFC違反ではあるのですがねこの書式は(ちなみにCSVRFC周りは以前 ( http://d.hatena.ne.jp/gallu/20060718/p1 )書いたので、よかったらご参照くださいませ)。
日本語の前に半角があると普通に受け取れます。
日本語の途中に半角があると「半角以降」うけとれます。
つまり
-日本語 => -日本語
日-本語 => -本語
となるわけです。
…とりあえずだめぽなのが確定したのでこれ以上は調べません。


あちこち調べてみたのですが。
まず setlocateを使う類のものは、いろいろ実験をしてみた限りでは「有効ではない」と感じられました。
具体的には。たとえば、ファイルをEUCにしたうえで

setlocale(LC_ALL, 'ja_JP.EUC');

と設定しても無駄でした orz
10分程度後の追記

setlocale(LC_ALL, 'ja_JP');

としておくと大分まし。ただ「OKだったりNGだったりな文字列があるらしい(伝聞)」ので、もうひとつ信用は仕切れません。


いくつかのサイトで「splitを使う」という方向性が示唆されてますが、CSVのフォーマット上これは当然ながらNGです。


したがって、残る手段は

  • 日本語はとにかく全部”(ダブルクォーテーション)で囲む

となるわけです。


……………ありえねぇよ orz


とりあえず俺的には「CSVパーサ@MagicWeapon」でカッティングしてからごりょごりょ処理できるですが。
…ほかの人どうするんだべさ?
んと…希望がありましたらcsvパーサまわり貼り付けるので(ちぃとでかいですが)、コメントにでも一言くださいませ。


っつか。マジな話、ほかでfgetcsvとかつかってるところってその辺どうしてるんでしょ?
割と真剣なぞです。

ちょっとしたメモ

http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html
…の、意訳@スラド( http://slashdot.jp/articles/07/09/23/2357202.shtml )

1. Ruby on Railsでなければできないことは実は無い
“IS THERE ANYTHING RAILS/RUBY CAN DO THAT PHP CAN’T DO? … (thinking)… NO.”


2. 社内にPHPの利用者が多く、Railsに移行するには再教育が必要
OUR ENTIRE COMPANY’S STUFF WAS IN PHP: DON’T UNDERESTIMATE INTEGRATION


3. Railsは冗長:「余計な機能が多すぎる。9割の機能は使うことがなかった。」
DON’T WANT WHAT I DON’T NEED


4. phpは小さくて早い
IT’S SMALL AND FAST


5. phpは自分好みにいじれる
IT’S BUILT TO MY TASTES


6. phpだと自分でSQLを書ける
I LOVE SQL


7. Ruby on Railsを学んだことでphpでもっといいコードが書けるようになった
 「新しい言語のほうが良いと思えるのは、貴方が成長したから。」
PROGRAMMING LANGUAGES ARE LIKE GIRLFRIENDS: THE NEW ONE IS BETTER BECAUSE *YOU* ARE BETTER

まぁあちこち異論もあろうかって内容ではあるのですが*1
職人たるもの、道具にこだわるのと同じくらい、いざとなったら「どんな道具でもどうにかできるくらいの腕と知恵(== スキル)」が欲しいもんです。


ちょっと面白い内容だったので、めも。

*1:個人的には4番とか6番とかが特に

場当たり的バックグラウンド処理 PHP編

forkがないわけではいのですが、コンパイルオプションありぃのそもプロセスちゃんと理解してるか怪しいのその他もろもろありますので。
たとえば「ちょっと重たい処理をしたくて裏側で処理してくれるとうれしいんだけど」なときに、まぁ場当たりな処理が必要なこともあるです。


もちろん「場当たるな!!」ってのが正論なのですが「いやまぁどうせワンライナーの仲間だし」っていうこっきりさん(一回だけしか使わない)のときには、こんな手もありです。

system("処理かいたコマンドをフルパスで > /dev/null &");

注意。いろんな意味で場当たりなので、システムで使うのは可能な限り避けましょう。
あくまでも「一回こっきりちょっと力仕事をサーバにやらせたい」時用です。

プレーンなpost情報が欲しい;;

ど〜にも探しても見あたらず。でまぁ、きっとここに書くと誰か知ってる人が教えてくれるのではないかとの相変わらずの他力本願な内容なのですが。


POSTのstring、生が欲しい。


GETは、取れるですよ。
$_SERVER["QUERY_STRING"];
で。ただ…ちょいと訳ありでっていうかぶっちゃけ、わかりやすいXML-RPCな鯖側を作りたくて。
そのためには、POSTのstring(ぶっちゃけstdinに入ってきた情報)の生をそのまま、ぐぐぐぃっとゲトれると嬉しいのですが。
………調べてるかぎりだと見あたらない;;


こーゆー時に、PHPの便利さがしみじみ足かせだと思う。
いいぢゃんせめてスイッチくらいあってもさ、って思うのはおいらだけなんでしょうか?

えっと?

先日の
http://d.hatena.ne.jp/gallu/20070626/p2
にTBいただきました。
http://d.hatena.ne.jp/elf/20070628/1183004732


で…………

$value = htmlspecialchars($value);
$sql = 'INSERT ... '.$value.'...';
とかよくみかけます.

…………………………すみませんびっくりしましたひっくり返りましたキモが冷えましたごめんなさい許してください逃がしてください。


ああこの話がもうちょっと早く伺えてたら某所で執筆させていただいたセキュリティ講座のネタにさせてもらったのに(ナニカガチガウ


っつかまじめな話…くらくらするですねこのコード。
まだまだ自分には未踏なジャングルが広がってることがわかりました。
ここはやはり「ネットは広大だわ」とか言わなきゃいかんシチュエーションなんでしょうか?

だからglobalやめようよ

http://tdiary.ishinao.net/20070606.html
より。

Zend Frameworkでは、起動ファイルにいろいろ初期化コードを書いていくけど、そこで使った変数はグローバル変数になってしまうことになる。

………まてやどんな実装やねん。


眠いのでとりあえず軽めに突っ込み。