がるの健忘録

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

PHP

なんだかなぁ…

PHP

以前に書いた( http://d.hatena.ne.jp/gallu/20140429/p2 ) http://blog.sumyapp.com/2014/04/rubyist-is-better-than-phper/ なのですが。 記事を全面的に改訂致しました との事で拝見したのですが…相変わらず駄目過ぎるので、まぁこれも何かの縁かなぁと思…

「知らないものはもらわない」っていう安全のために

PHP

ん…うん知ってはいたのですが、以下のコードは、大変に憂慮すべき動作をします。PHP君は。 aaa = 10; var_dump($obj); $ php t.php object(hoge)#1 (1) { ["aaa"]=> int(10) } なんだろうねぇ普通に考えたら「エラー」とか、せめても「警告」とか出てくれり…

演算子の優先順位

PHP

そういやすっかり忘れてたよねぇ的小ネタ。

ごく軽い実験callback変

PHP

そういえば…とふと思った事があったので実験。 また後で確実に「同じようなこと」を試すような気がしたので、備忘録。

空配列のjsonの配列と連想配列周りの覚書

PHP

へ〜、な感じなので。 元ネタ http://d.hatena.ne.jp/ajiyoshi/20120912/1347434440 [ 'test' => 5 ]]; var_dump(json_encode($awk)); $awk = []; $awk['key'] = array(); var_dump(json_encode($awk)); $awk = []; $awk['key'] = new arrayObject(); var_d…

composerでエラーったmemo

PHP

コマンドを発行 php composer.phar update 以下のエラー PHP Fatal error: Cannot redeclare class Symfony\Component\Console\Formatter\OutputFormatterStyle in phar:///home/vagrant/acty_server/composer.phar/vendor/symfony/console/Symfony/Componen…

プリペアドステートメントとエスケープの線引き おいちゃん変

微妙にあちこち賑わっている気がしたので、なんか必要になる前に、おいちゃんの見解を。 まず前提として「適切にもちいられていない」ケースは排除。 具体的には「**をやる、というルールを作っても、守られない/中途半端なら意味がない」ってのはどこにい…

認証、どうしようかねぇ?

自作しているBtoCのゲームサイトのauthentication、のお話し。 前提としては「スマフォ&ガラケー用のゲームサイト」。現在絶賛作成中*1。 タブレットとPCはどうすっかねぇ、と。 排除はしない。デザイン的に想定するかしないか。 ガラケー以外は「レスポン…

じゃんけんロジックで考えてみる「壁」の厚さ

PHP

ん…たいしたことやってる訳でもないんだけどねぇ。 「そこに思考が及ぶかどうか」ってのには以外と壁があるみたいで。それを「ど〜やって乗り越えさせるのか」を含めて考えてみたくて、ちょっと種まき。 いつものことではありますが、いつも以上になんか「ふ…

コンストラクタ系の実験

PHP

ちと興味があるので。 …おねちゅ気味なので、本当に備忘録程度。

ビット演算の説明と実例

PHP

某所でこんな質問をもらいまして。 うん確かに「ビット演算がわからない」と、それ以上に「なにに使うのかがわからない」って話はよく耳に目にするところなので。 せっかくなんで、Blogで返答をいたしますw 質問は、これ。 ビット演算子のこの部分が $a = 0…

文字列で変数名が展開されるパターン

PHP

きっかけは本日の講義でもらった質問。 PHPで、ダブルクォート内の変数が展開される、ってのはあって。 {}を入れないと「$に続く、有効な変数名を形成することが可能な最長のトークンを取得する」ってのが基本ざんす。 なので、以下は…

シンタックスエラーさえ出ないとき用のmemo

PHP

特に共有サーバで*1、エラー表示を抑止されちゃってるケース用のmemo。 .htaccessに書く場合 php_value display_errors 1 php_value error_reporting 32767 別ファイル経由で試す場合(確認したいファイル名は hoge.php とする)

「文字列としてのCSVとかTCVとか」をパースする方法

PHP

んとぶっちゃけると「str_getcsv使うな」って感じ。 サンプルとか見てるといかにも「いけそ〜」な感じなのですが。実は「改行」を全く意識してくれないので、二次元配列を期待しているのに、ふつ〜に一次元配列でreturnしてくれやがります。 $s = "1,2,3\n4,…

これなぁ…

PHP

ふと現場で質問されて、検証用に書いてみたコード。

ユニークなID

PHP

まぁそもそもとして「一意(ユニーク)である」と「推測困難である」の間には深くて暗い漆黒の溝が広がっているのですが、って突っ込みを前提に。 PHPで、uniqidってのがありやして。 これは「一意な ID を生成する」関数です。 基本「マイクロ秒」基準で文字…

うわ怖い

PHP

元ネタは、某所の書籍でみた、こんなコード。 foreach($data as $key => $val) { $$key = $val; } 見た瞬間から色々気になってはいたんだけど。 ふと思って試した実験コードの内容が、思ったよりもちょっとアレゲだったので共有。 まずは、初手の実験コード…

include系の速度について

PHP

ちぃと興味があったので。 まずは以下のファイルを用意。includeされるクラスファイル、のイメージ。 val_ = ''; $this->val2_ = ''; $this->val3_ = ''; $this->val4_ = ''; } private $val_; private $val2_; private $val3_; private $val4_; } 基本的なr…

SplHeapクラス実験覚書

PHP

覚書なんで本当にmemo程度。 isEmpty()); var_dump(count($obj)); // 普通にforeach test for($i = 0; $i < 20; $i ++) { $obj->insert(rand(0, 100)); } var_dump($obj->isEmpty()); var_dump(count($obj)); foreach($obj as $key => $val) { print "{$key}…

php.ini調査の続き

PHP

あちこちのフレームワークでは「何してるんだろう?」って思ったので。 以下のフレームワークを調査してみますた。 CodeIgniter_2.1.2 cakephp-cakephp-e0b6f86 symfony-1.4.18 Symfony2 FuelPHP 調査は、サーバに入れてからgrepでini_setを探すという高難易…

ところで、http_output_conv_mimetype?http_output_conv_mimetypes?どっち?

PHP

5.3.10のソース基準で。UPGRADING - Added mbstring.http_output_conv_mimetype. This directive specifies the regex pattern of content types for which mb_output_handler() is activated. php.ini-development ; Default: mbstring.http_output_conv_mi…

マルチバイト周り基準のphp.ini 設定草案

PHP

php.ini側 ; magic_quotesとかあり得ないでしょ magic_quotes_gpc = Off ; 自動ってキライ mbstring.encoding_translation = Off mbstring.func_overload = "0" やむを得ず.htaccess ; magic_quotesとかあり得ないでしょ php_flag magic_quotes_gpc off ; 自…

マルチバイト周り基準のphp.ini調査

PHP

一度整理したかったんだけど…思った以上に魔窟でした orz 大分とメモ書きなところもあるので、適当に脳内補完しつつ読んでみてください。 「理屈はえぇから設定みせろや」な場合(…まぁエンジニアとして妥当な姿勢かどうかには果てしなく疑問が残るところでは…

CSRF実装の一案

注意 結構「状況限定」なので、本当に「一案」程度。 前提 セッションIDが定期的に変わる。だから「セッションIDをtokenに」しにくい。 一案 「消すのが面倒くさければmemcachedにすればいいぢゃない」作戦 CSRFで引っ掛けたい画面を「画面A → 画面B」の遷移…

雑なメモ:PHPでお手軽なトークン作成

PHP

おおむねこんな感じを想定。 ベースになるのは /dev/urandom なので。「環境ノイズが以下略」的な話は、きっとなんとかなるだろうしてくれるだろうだからある程度暗号的に安全な擬似乱数であろう、ことを、期待(笑 shaが1ぢゃなくて512なのは、おおむね、お…

PHP技術者認定試験上級、の、範囲についての覚書

PHP

ちょろりと受験する流れになってみたので、まずはメモ。 http://www.phpexam.jp/summary/expert/ …ん…微妙に範囲がわかるようなわからんような。 Standard PHP Library (SPL) http://jp.php.net/manual/ja/book.spl.php 日付・時刻 http://jp.php.net/manual…

Phake使ってみる:準備変

PHP

躊躇も脈絡も無く、start。 まずはinstall。 gitで引っ張ってこれるので大変においちゃん好み。 適当なディレクトリにおいておきましょう。 clone git://github.com/mlively/Phake.git phake今回は「phake」ってディレクトリにしておいた。素直というよりは…

第58回PHP勉強会@東京に参加してきました

PHP

いやまぁ何気にあちこちふらふらしているのですが、たまにはちゃんとBlogを書いておこうかなぁ、と。 以下、雑感連打です。 PHP と MySQL でカジュアルに MapReduce する (@yuya_takeyama/15 分/対象: GROUP BY で解決できない問題を持っている方) http://ww…

おまけ:もしMagicWeaponでメッセージキューを実装するとしたら

すげぇアバウトなインタフェース草案。 送信 // オブジェクトを作成 $msq = new mw_message_queue(); // key設定のやり方への可能性 $msq->set_key($key) $msq->set_key($config) // クラス継承してコンストラクタで設定 // メッセージを設定。stringでもオ…

「バッチの二重処理の防ぎ方」PHP上級変

PHP

ほんのりと、上で書くと面倒そうなネタがあったので。 msgtype(msg_sendの第二引数&msg_receiveの第三引数) & desiredmsgtype(msg_receiveの第二引数)にまつわる話題。 上述は、メッセージキューを「とにかく積んで、とにかく取り出す」なので、雑に値を決…