メモ

PHP7.0世代のハッシュ、暗号化、暗号論的乱数生成およびCSRF対策周りのメモ

独自フレームワークのPHP7対応に絡んで、認証 および CSRF対策周りを再設計したいので予備調査の結果を軽くまとめる ハッシュ関係 password_hash関数 パスワード認証用のハッシュ生成に使う password_verify関数 タイミング攻撃を回避するための文字列比較関…

phpDocumentor version 2.8.5 の PHP7対応

phpDocumentor version 2.8.5 の PHP7対応時に嵌った&修正した項目を荒くメモしておく とりあえず、動くようにしただけなので、全ての環境で動くわけではないインストールは下記で実施 pear channel-discover pear.phpdoc.org pear install phpdoc/phpDocum…

PHP 5.3.10 における参照時の謎挙動

久々におかしな仕様?バグ?にであったのでメモしておく。問1: 下記のコードについて実行結果を予測し解答せよ ?php function drct($input) {} $hoge = array(); drct($hoge['aaa']); echo var_export($hoge, true)."\n";問2: 下記のコードについて実行結果…

「通信の最適化」問題の論点まとめ

注意: 途中で力尽きました、ぜんぜんまとめきれてません・・・orz ○通信の最適化とは いわゆる3大キャリアを中心に、MVNOなども含む非wifi通信時(いわゆるLTEなど)におこなわれる、画像、動画等に対する非可逆圧縮のこと ○問題点 問題点としては複数あり、主に…

HTTP 1.1 で 404応答などをした際、PHP の file_get_contents() の返りが遅い問題

詳しい調査はしていないが、HTTP 1.1 でサーバ側から自前でレスポンスを返した場合(200応答以外の404などのレスポンスのときに起きた)に、クライアント側の file_get_contents() の返りが遅いという問題が起こるようだ。 原因は HTTP 1.1 では KeepAliveがデ…

MySQL 5.5.19 にて ON DUPLICATE KEY UPDATE 使用時に LAST_INSERT_ID を呼ぶとプライマリキーの値によって不可思議な現象が起こる話

例によって同僚に、ON DUPLICATEを使ってる時の、LAST_INSERT_IDの挙動がなんかおかしいという話を受け調査を開始した。 複数の同僚に手伝ってもらいながら検証した結果次のような現象が起こることが分かったため、メモしておく。 ON DUPLICATE でプライマリ…

PHPのAPCの apc.include_once_override 設定時にいくつかの条件を満たした場合に include_once 等が失敗する現象

↓の続き 誤報 APC の apc.include_once_override で動的な include_once 等が失敗する問題 http://d.hatena.ne.jp/narusase/20121030 どうも同僚の調査によると、動的なinclude_onceが原因ではないようだ ・・・というわけで、極限まで単純化したサンプルコード…

誤報APC の apc.include_once_override で動的な include_once 等が失敗する問題

とあるよくわからないエラーを調査したときPEARのMail.php の@ 指定を解除したところ下記のようなエラーが発生したのでちょいと調べて見た。 結果としては先に設定したAPCの apc.include_once_override = 1 の設定が悪さをしていた事が分かったので一応メモ…

PHPのAPCの利用によるメモリ使用量の削減について

きたーーーメモリ使用量減った!! 以前から悩んでいたPHPのメモリ使用量が高い問題だがようやく対処方法が分かった php.iniに下記の設定を追加することで、とあるプログラムでは14MB食ってたのが4MBまで減少した(1プロセス当り) apc.include_once_override …

PHPの /** から始まるコメントが、require_once実行時に無駄にメモリを食う問題

知り合いから教えてもらったのだが、PHPでは /** から始まるコメントが、require_once実行時に無駄にメモリを食う問題があるらしい・・・ということで調査してみた まずは、確認用のコードとして test.php を書く

htmlspecialcharsに関するorzなお知らせ(続報)

これはだいぶ前にネタにした↓の超遅い続編です http://d.hatena.ne.jp/narusase/20091204 職場で(当人はまったく中の人が私だということに無自覚に)上記エントリがさらされたので、ちょっと、気になって調べてみた。 そしたらなんだか、1年半ほど前に下記で…

UDIDの使用に関して荒らしと業者の排除に関する側面と電話番号認証の話

いろいろと、問題になっているUIDやUDIDの使用に関する話をちょっと書いてみる。 ガラケーではキャリアからひとつしか発行されないはずのメールアドレスによりある程度仮の個人の識別ができていたけど、メールアドレスは変更が出来たので、必要十分な個人の…

PDO使ってMySQLに絵文字を突っ込んだら書いたはずのデータが失われた問題(未解決)

とりあえず、書き込んだ後で書いてるmemcacheには残っていたので、PDOかMySQLがあやしい。 あ[絵文字] の場合は書かれるが、[絵文字]あ とした場合は書かれないみたい。 ・・・文字コード周りの処理があやしい ALTER TABLE hoge CHARACTER SET utf8mb4; ・・・とし…

PUTリクエスト時のPHPのfile_get_contents('php://input') のバグ?仕様?

簡単に言うとPUTされたコンテンツが読みだすと消滅する問題 POSTや、PUTでHTTPのリクエストを送った際、ペイロードとして$_POSTでは扱えないひとつながりの文字列を送る場合がある。 その際、$_POSTでは取得できないため、file_get_contents('php://input') …

正規表現をリアルタイムでテストする

PREG ONLINE | PHPの種 http://www.php-seed.net/preg/ 正規表現の記述をリアルタイムで考えられるサイト・・・超便利

UDID関連の護身用メモ

開発関連で企画方面と見解の相違があったので護身用にメモを残しておく。「偽装が可能なudidを信用するのは事故の元だからヤメレ」 と言う意図の発言をしたが受け入れられなかった。 とりあえず、そこら辺の周辺情報を調査をして再度声を上げるかのぉ・・・ ■iP…

写真の共有

それはさておき、年始に同窓会があったんで、そこでカメラマンやってたわけですよ ・・・で、驚いたのが未だにパソコン持ってないとか、携帯持ってないとか言う人がいたこと・・・はて、こまったぞ? どうやって、共有すれば良いんだ・・・? パターン分けして考える…

オブジェクト指向については全然詳しくない私の考えるオブジェクト指向の理解・・・という名の愚痴

ええ、きちんとオブジェクト指向を理解してる人には文句を言われそうですが・・・○しっかりしたドキュメントのないオブジェクト指向は糞である。 なお、しっかりしたドキュメントとは、関数が提供する機能の概要と詳細、出来そうで提供出来ない機能の説明、引数…

PHPのfile_get_contentsのバグにより想定外の文字列が取得される問題&header関数により指定していないHTTPヘッダーが書き換わる問題

PHPのfile_get_contents関数は、通常のファイルだけでなくWeb上のファイルも取得できる便利な関数ですが、特定の条件でおかしな動作をすることが判りました。具体的には、リクエストに対する返答でHTTP1.1の機能であるTransfer-Encoding: chunked を用いた場…

HTTPクエリを配列に展開する関数

ありそうでない(みつからなかった)ので、ついカッとなって作った。 kye=value&foo=hoge&bar=123 の様なGETの引数として渡されるクエリ文字列を配列に展開する関数 まあ、普通は$_GETとか$_REQUESTとかで自動で展開させるので使わないが・・・・ この逆は、http_…

NHKと受信契約(その2)

これまでのあらすじ NHKが受信契約を盾に支払いを要求 以前は同居していた親族が契約主だった 親族は現在、帰郷しそちらの方で既にある契約の傘下となっている 契約の名義変更が私の認知していないところで行われた 私はいかなる契約も結んでいないため認知…

NHKと受信契約

現在私は一人暮らし(ちょっと前まで親族と同居)だがNHKが、私の認知しないところで契約変更があり、現在の契約者は私なので金払えという電話をしてきたのでちょっと調べてメモしておく 少なくとも確実に私はNHKと受信契約を結んだ記憶は無い。したがって、い…

二つの配列をマージして重複するデータを取り除く

・・・例によって嵌ったのでメモしておく 単純な配列の場合、array_mergeして、array_uniqueで問題ないが、対象が配列の配列だった場合は、期待通りの動作をしないため嵌った どうやら、配列の配列の場合、arrayは文字として解釈され、その中身は解釈されないこ…

PHP5.3で非推奨になった機能や関数をざっくりあぶり出すワンライナー

PHP5.3で非推奨になった機能や関数をざっくりあぶり出すワンライナー http://d.hatena.ne.jp/shimooka/20100727/1280198801これは大変嬉しい! バージョンアップを考えてるけどなかなか場所の特定とかがめんどくさいので本当に助かる。

Yahooの携帯サイト用のクローラが変なユーザーエージェントを吐いて困った件

Yahooの携帯サイト用のクローラは下記のようなユーザーエージェントを吐く DoCoMo/2.0 SH904i(c100;TB;W24H16)(Y!J-AGENT)(robot) で、PEREの携帯のキャリア情報などを判定するためのNet_UserAgent_Mobile(手元のバージョンは0.30なので古いが・・・)をつかって…

携帯のCookie関連の情報メモ

■作ろうiモード:iモードブラウザ2.0新機能一覧 | サービス・機能 | NTTドコモ http://www.nttdocomo.co.jp/service/imode/make/content/browser/browser2/new_function/#p06■KDDI au: そのほかの技術情報 > Cookie http://www.au.kddi.com/ezfactory/tec/sp…

ソフトバンク携帯で直接HTTPS通信をしている場合に絵文字が文字化けする問題

・・・が、だいぶ以前からあるようです。 例によって嵌ったのでメモしておきます例えばメールから直にHTTPSのサイトにアクセスさせるような場合に問題になります。 対処方法としては、そもそもHTTPSにアクセスさせるような場合は、事前にHTTPの踏み台ページを用…

PHPの変数の意味不明な動作

まず、下記のようなコードを実行してみてほしい。 まあ、普通のコードである。 普通に考えれば、最終行まで実行されてvar_dumpの結果が表示されて終了するはずである。 しかし、実際にはなぜか何も出力をせずに終了してしまう。 true, 'mesg' => error); } …

MySQLの日時指定の罠

MySQLでSELECT分などを実行する際にISO 8601のTつきのISO形式(2010-04-26T21:56:47+09:00 など)を指定した場合、この日時は正しく解釈されず、日時ではなく年月日のみが評価されるようだ。このような場合、PHP的には下記のようにいったん変換すると問題なく…

mb_strlenと改行コードの罠

PHPのmb_strlenはCR+LFを2文字(バイトではなく文字な所に注意)として認識するため、CR+LFとLFが混在するような使い方をされた場合に、思った通りにコードが動かないことがある。下記コードを参考にして貰うと解るがCR+LFは2文字と解釈される。 これに対する…