脳みそスワップアウト

揮発性なもので。おもにPHPのこととか。

テストに使えるドメイン名

hostsに書けば何でも使えはするのだけど、 RFCで使ってもいいよと定義されているものがある。 特に理由がないのなら、これに従っておくべきである。 RFC2606 Reserved Top Level DNS Names ドメイン .test .example .invalid .localhost ホスト example.com …

PDO::MYSQL_ATTR_READ_DEFAULT_FILE

pdo_mysql を libmysqlclient を使うようビルドした場合に使えるようになるPDOのクラス定数。 mysqlnd を使うようビルドした場合は存在しない。 なのでこれを使うようなコードは、定数が存在するかどうかを確認してからにしないと環境によってFatalが起きる…

iptablesによる透過プロキシ

メールサーバの移行の際に、DNS浸透の有無によって新旧サーバにメールが届くのを回避するために透過プロキシを使った。

Putty → OpenSSH のRSA鍵変換

ちょいちょいPutty形式の鍵を渡されることがあるのでメモ。 Putty → OpenSSH のRSA鍵変換 Putty形式の鍵は、秘密鍵と公開鍵が一緒になっている。 puttygen を使って、OpenSSH形式の秘密鍵&公開鍵に変換できる $ puttygen.exe $(cygpath -m ~/.ssh/hoge.ppk)…

SQLでのnull比較

カラムに null が入っている場合の比較は面倒なもの。 このような長ったらしいクエリになる。 col1 = val1 OR (col1 IS NULL AND val1 IS NULL) 比較データが 非null か null かによって、プログラムで生成するクエリを変えるという方法もある。 発行されるS…

cygwinインストールメモ

Win7 Pro 64bit Cygwin 64bit 2.2.0 2015-08-20

画面を広く

Windows10を試しに入れてみたものの、ウィンドウの余白がやたら大きく、 1280x800 のノートPCでは画面が狭くて辛すぎる。 GUIから変更する機能はなくなってしまった模様。 HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics タイトルバーの高さ、幅 Ca…

可変vmdkを固定vmdkに変換

vmware-vdiskmanager -r source.vmdk -t 2 dest.vmdk VBoxManage internalcommands sethduuid dest.vmdk 変換したうえで、uuidも変更している。

DateTimeでマイクロ秒

php

DateTimeはマイクロ秒を扱うことができるが、 コンストラクタ経由だと秒精度までとなってしまう。 だからこう作る。 $timeZone = new \DateTimeZone(date_default_timezone_get()); $dt = \DateTime::createFromFormat('U.u', microtime(true)); $dt->setTim…

Windows7 で Nexus S のchromeをデバッグ

ドライバを入れるだけでいいとのことだけど、それだけではChromeから認識されなかった。 最新の adb.exe を使うと認識できたのでメモ。

Unable to connect to system D-Bus

Error: Unable to connect to system D-Bus (1/3): Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory VirtualBoxを 4.3.12 → 4.3.30 に上げたら発生した。 ホストはWin7、ゲストはCentOS 6.7。 GuestAddition を動…

NOT NULL で DEFAULT なしのカラムにデータが入れられる

ことがあって混乱した。バージョンや設定によるのかな? warningを吐きつつINSERTできる環境と、エラーで止まる環境がある。 int カラムに '' を入れようとした場合でも、0 が入ったりする。 MariaDB-5.5.33 は入る MySQL-5.6.25 は入らない これは一度調べ…

VirtualBoxのディレクトリ共有機能の代わりにSambaを使う

VirtualBoxのディレクトリ共有機能はとても遅い。 代わりにSambaを使うメモ。 メリット ゲスト側からのアクセスが早くなる ゲスト側でパーミッション設定ができるようになる ゲスト側でのUT、カバレッジ出力が劇的に早くなる デメリット ホスト側からのアク…

SimpleXMLのバグ #66084 の影響

とあるAPIから返されたXMLをparseしたところ、環境により結果が違っていた。 どうも、Bug #66084 の修正が影響しているらしい。 この修正は php-5.6.11, php-5.5.27, php-5.4.28 で取り込まれている。

composerで、ライブラリを新しく追加する

Symfony の http-foundation の 2.7.x を追加する例。 composer.phar require "symfony/http-foundation:~2.7" -vvv ライブラリがダウンロードされ、 composer.json, composer.lock が更新される。

Smarty3.1はまだ名前空間に対応してない

久しぶりにSmartyを使うプロジェクト。 初めて3系(3.1) を使ったのだけど、テンプレートで名前空間を use で省略することができない。 フルでクラス名を書くか、別名で対象オブジェクトをassignするという、 ちょっと残念なコードにならざるを得ない状態。 …

phpunitが遅い

PHPUnitが遅い カバレッジを出力しているわけでもないのに、phpunitの動作が遅い。 調べたのでメモ。 phpunit 4.7.5 phpunit/php-code-coverage 2.0 CentOS 6.5 ディスクが遅い環境

CakePHP3のDBマイグレーション

Phinx を使っている。 これは既存DBから差分を抽出する機能を持っていない。 つまり、マイグレーションの内容は手で書く必要がある。 この点はCake2時代の CakeDC Migration プラグインや、Symfony2に劣っている。 Phinx の記述方法自体はシンプルでわかりや…

Cake2 で一般ユーザと管理ユーザのテーブルが違う場合

CakePHP2 で、一般ユーザと管理ユーザのDBテーブルが違う場合

CakePHP2のi18n

CakePHP2 の国際化機能を初めて使ったのでメモ。 Cake2 の i18n は、gettext に倣っている。 gettext を知っていればとくに違和感なく使える gettext, php-gettext 拡張がなくても動作する __(), __d() 等のCake専用関数が設けられていて、php-gettext とほ…

mysqldump

export フルダンプ mysqldump -uuser -p dbname --databases --single-transaction --order-by-primary --quick --quote-names > dump.sql テーブルとレコード (CREATE DATABASEなし) mysqldump -uuser -p dbname --single-transaction --order-by-primary -…

PHP で GNU gettext

php

GNU gettext は、ソフトウェアの国際化のためのライブラリ・コマンド群。 大まかな流れとしては以下のようになる ソース中から多言語対応すべき文字列を抽出 (POT作成) gettext コマンド。 それをもとに各言語用に対訳ファイルを作成 (PO作成) msginit コマ…

Skypeメモ

Skypeメモ バージョンを7に上げたら、SkypeのウィンドウがノートPC(XGA)の画面の半分を占めるようになった。 いくらなんでも画面が狭すぎるので6系に戻した。 ついでに過去につかっていたバージョンをメモ。

php-gdが入らない

php

「php-gdが上手に入らない、なんとかして」の対応メモ。 CentOS-6.5 php-5.6(remi) 入れたいのは remi-php56 の方のphp-gd。そしてGD本体。 $ sudo yum --enablerepo=remi-php56 list | grep php-gd php-gd.x86_64 5.3.3-40.el6_6 updates $ sudo yum --disa…

リストを受け取る仮引数はType Hintingしない

php

リストはシンプルに配列な場合もあるけど、Traversable なオブジェクトかもしれない。 リストを受け取る関数/メソッドの仮引数が、Type Hinting されていると

cakephp2でテスト用DBにインデクスが作成されない

CakeTestFixture にこう書いておけば、 本番用DBからテスト用DBにスキーマを取り込んでくれる。 要はテーブルをコピーしてくれる。 public $import = ['model' => 'ModelName']; でも、なぜかpkey以外のindexは無視されてしまう。 コピーしてくれたテーブル…

シークのできないFLVを再変換

何らかの要因で壊れてしまい、シークのできないFLVがある。 これはffmpegを使って再変換をすれば解消できる。 ffmpeg -i input.flv -vcodec copy -acodec copy -sameq output.flv 自分のストリームを動画で残そうとして気づいた。

vsftpdでFTPS(FTP over SSL) の設定

鍵ファイルは rsa_private_key_file で指定できる。 rsa_private_key_file=/PATH/TO/server.key 証明書は、中間証明書を指定する機能がないため、 2つのファイルをくっつけたものを用意してそれを証明書として指定する。 順番は 証明書→中間証明書 の順。 ca…

WindowsのFTPクライアントはPASVモードに対応していない。

概要 Windows標準のFTPクライアントはPASVモードに対応していない。 ACTIVEモードでは標準(20,21)以外のポートに接続することは現実的じゃない(NAT問題)。 Windows標準のFTPクライアントをターゲットにする場合、 FTPサーバは標準ポートかつACTIVEモードのも…

php-gdが動作していない

php

概要 「php-gdが動作していないのでなんとかして」の対応メモ。 CentOS-6.4 x86-64 php-5.5.4 5.5.4-1.el6.remi gd-last 2.1.0-0.10.725ba9d.el6.remi