がるの健忘録

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

PHP

思案中……

身内に流そうかとも思ったのですが、いっそ「広く意見を募集しようかなぁ」などと思い、こちらに。 # いやまぁ身内にも流すんだがwww 幾分「ある程度、おいちゃんの手の内性格経歴その他を把握している前提」な文面があるので。 不明点は、コメント等で質…

CAS実装……の前提のお話

ふと、色々と紆余曲折があった末として「MagicWeaponのdata_clumpで、cas形式の楽観的ロック、実装してみようかしらん?」というような発想がありまして。 その前提として「cas tokenど〜やって実装しよう?」から、比較的現実的な可能性があるあたりを妄想…

グローバルスコープ変数? filter_input関数? (それともNULL え・ん・ざ・ん・し?(はぁと))

PHP

ふいっと、filter_input関数を思い出しまして(って程度には使ってないw)。 機能的にはさほど大きな違いはないと思われるので、まずは性能をチェック。 基本は以下のコードで、コメントアウトを適宜はずしつつ測定。

str_replace()の第一&第二引数は、文字列? 配列?

PHP

結論から書くと、マニュアルに書いてある通り search と replace が配列の場合、str_replace() は各配列から値をひとつ取り出し、 subject 上で検索と置換を行うために使用します。 なのですが……ちょっと驚いたので。 端的には、以下のコード。

大きなIDをどうやってPHPからMySQLに渡す?:詳細:PHPからcall編

とりあえず、ざっくりと接続してデータをfetchAllでゲトって、「ゲトれる事」をほんのりと確認してみましょう。 基本になるコードは以下の通り。 移行、SQL以降部分だけ適宜すりかえながらやっていきます。 false, ); // 「複文禁止」が可能なら付け足して…

大きなIDをどうやってPHPからMySQLに渡す?:詳細:MySQL編

とりあえず「思考の流れと調査の流れ」をそのまま書くので、読みにくいのはごめんなさいまし。 まずはいくつか検証テーブルを用意…する前に、MySQL自体の動きの確認を。 直近、参考にさせていただいたのは、hnwさんのこちらのサイト。 http://d.hatena.ne.jp…

大きなIDをどうやってPHPからMySQLに渡す?:発端とまとめ

あるタイミングで、プリペアドステートメント回りのお話と、IDのカラム(によって決まる最大値)のお話と、intサイズのお話が別々に来た時に……頭ん中で混ざって、「あれ?」と思った事があったので調べてみた、って感じになります。 まず話に出ていたのが「AUT…

date関数か、DateTimeクラスか、DateTimeImmutableクラスか

PHP

元ネタは、直近でもないのですが、date関数で書いていたものがDateTimeクラスに書き換えられていた、ってのがありまして。 ふと「そういえば、色々とこの辺は今、どうなんだろう?」という疑問が出てきたのが初手のお話です。 で、先に。 「PHP5.5.0以降前提…

講義資料用のgit commitコマンド自動作成プログラム

PHP

超絶雑なブツなのですが。 んと……おいちゃん、元々「頭からケツに向かってコードを書く」ってことはあんまりしなくて。 「最低限これだけ」「これも必要になったから追記して」「あれが必要になったから共通化して」って感じで、切ったり張ったりしながらコ…

PHPUnitの、小数点同士の比較

PHP

PHPUnitの本体記事は今度書く予定ですが、今日はちょろっと、横道を。 おいちゃん、2a問題( http://d.hatena.ne.jp/gallu/20061108/p1 )があったりあったりするので。 PHPUnitでは、まずもってassertEqualsを使うためしはなく、必ずと言っていいほど(ってい…

PHPエンジニアがPythonに触れてみる:まずはインストール

さておいちゃんが果たして「PHPエンジニアなのか?」というのは、微妙に疑問もあるのですが(PHPばっかりではないし、さりとて最近はPHPが圧倒的に多いのも事実だし)。 いわゆる「初めての**」的な感じのPython版は、書籍なりWebなり色々あるかと思うので。…

ini_set()どうすっかねぇ…

PHP

色々とテストを作っていてふと「ini_set()のテストも組まないとなぁ」が、面倒の始まりでした。 当初の思惑としては「多分、noticeなりwarningが出るだろうから、その辺のエラーうまいこと拾えばよいかねぇ」とか思ってたのですが。 「戻り値にfalse返してく…

やっぱり「型に厳格なのは大事だなぁ」という雑感

PHP

大本のネタは https://twitter.com/ndxbn/status/808159644874993664 「in_array の第3引数にtrue必須」っていうコーディング規約をCIで回したい人生だった。 https://twitter.com/gallu/status/808161595578662912 @ndxbn in_array()、色々と気になるから使…

before_filter的なほにゃらら、の想定

元ネタは、友人の 会員登録に住所が必要な場合の「数字は全角で」「数字は半角で」もそろそろどうにかならんのか ってあたりの発言。 まぁ実際「住所入力全角のみ」で、番地数半角ではねられていらついたとかいうケースは割と後を絶たないわけでして。 その…

括弧は欲しいものである…

PHP

まぁ結論からいうと「演算子の優先順位」の問題なんだけど。 できれば、可読性の観点からも「括弧付けようよ」とか思う。加えて「スペースの位置がおかしい」。 幾分もわっと、例題。 前提として $bool = booleanな値 $s = stringな値('0'または'1'のみ) っ…

超ピンポイントノウハウ

PHP

AWSのS3にファイルをアップする、ってのを含む処理を書いていたのですが。 php-timecop(の、timecop_freeze())を使った状態でアップをしようとすると The difference between the request time and the current time is too large. って怒られました(笑 いや…

メールアドレスの確認(余談? 本題? ググったコードの実検証)

PHP

実コードです。 後で修正いれる可能性があるんで、気づいた事とかあったら突っ込んでくださいませ。

メールアドレスの確認(少し本題:あちこちググってのメアド正規表現の是非)

PHP

あちこちググって、正規表現を色々と無造作にひっかけてきてみました。 で、大まかな検証結果と、前提になる「mailの規約関連」。 http://saboten009.blogspot.jp/2008/02/php_25.html 1. メールアドレスは local part と domain が @ で区切られて構成され…

メールアドレスの確認(本当の本題:拡張アドレスの除去方法)

PHP

とりあえず「拡張アドレスの拡張部分を除去」が命題になるのですが…もうちょっと正しく書くとおそらくは違って、さらっとぶっちゃけると「DBでprimary keyだったりUNIQUE制約かかってたりするのにちゃんと引っかかる」状況を作り出したい、ってのが、おそら…

メールアドレスの確認(前置き)

PHP

発端は「拡張メールアドレス」周りのお話し。 直接的には…まず「拡張メールアドレス弾くところあるよねぇやだよねぇ」から始まって、それに対して ・新規流入することがお金に直結するようなサイトではNG ・具体的には「新規ユーザー紹介キャンペーン」とか…

phpのsession関数を使ってのギミック

PHPのセッションは、便利な反面色々と気になる事もあるのですが。 そのうち ・「セッション有効時間」をきっちりしたい(有効時間が切れたら問答無用で切断したい) ・アカウントロックの実装をかけて、ロックしたら「ログイン出来ない」だけじゃなくて「現在…

「配列から一部の要素を削る」のはどっちが早い?

PHP

いやまぁ直接的には、うちのフレームワーク(MagicWeapon)で使う系のコードのお話なのですがw 「値が重複しない前提の配列」から、「特定の値を引き算する」方法とその計測です。 とりあえず手っ取り早いところで、PHPにはarray_diffって関数があるのですが(…

data_clumpの使い方(ざっくり版)

ほぼ私信のようなもんですがw 細かくはまたマニュアル( https://github.com/gallu/MagicWeaponManual/blob/master/table_of_contents.md )のほうに書きますが、一端、メモ程度に。 本質的なところ data_clumpは「データの塊」です。 例えば「1つのmail for…

色々な見解

PHP

元ネタ マジックメソッド(特に__construct())は、Traitに「メソッドの引き上げ」をしてはいけない http://qiita.com/ndxbn/items/0e3160b20f64cff0323b 半分、私信のようなblogになりますご容赦のほどを(笑 とりあえず、つれづれに「おいちゃんの見解」を…

PHP小ネタ

PHP

filter_inputいる? こーゆーのがある。 $s = filter_input(INPUT_POST, 'value'); var_dump($s);興味深くはあるんだけど…デフォルトのフィルターは「FILTER_DEFAULT」で事実上のノーフィルタ。 警告が出ないのはそれはそれで便利なんだけど、それくらいなら…

実験:issetとarray_key_existsはどっちが早い?

PHP

ちと別件で書く必要があったので、ついでに実験。 具体的には「(第一種)ホワイトリスト」でのチェックを使った、パストラバーサル防御のコードなんだけど。 ちなみに先に一つ。 「検索対象を配列の値に入れてin_array」は下策もいい所なので、いっちょまえの…

配列のぶん回しとメモリ

PHP

ちょうど、一部環境でPHP7を入れた事もあって色々よっしゃな感じなので実験。

おおざっぱに「がちゃ用の選択プログラム」を組んでみた

以前にも estab_table というクラスを組むには組んでいたのですが。 ほんのりと思うところがありまして、新規に組んでみました。 https://github.com/gallu/MagicWeapon/blob/master/probability.inc https://github.com/gallu/MagicWeapon/blob/master/prob…

セッション関連、作ろうかなぁ?

もっそ雑に調べたのですが。 int(999) } array(0) { } となって、なにかってぇとつまり「$_SESSIONは別にsession_start()しなくても普通にスー…

session_destroy()について改めて調べてみた

PHP

ちと故あって、session_destroy()の挙動を再調査してみました。 ついでに「調査手順について」備忘録的に残せると楽だったり便利だったりするかなぁ、と思ったので、少し細かく。 結論から書くと「session_destroy()は"セッションデータの破棄(≠セッションの…