PDOを使った時のROLLBACKやVACUUMのエラー 
2013/02/22 Fri.
ロールバックやバキュームで原因不明の実行不可エラーが発生した場合、そのコマンドの前に
$sql->execute()
が実行されていないか確認する。もし、それがあれば、
unset($sql)
を間に挟んで実行してみる。
$sql->execute()
が実行されていないか確認する。もし、それがあれば、
unset($sql)
を間に挟んで実行してみる。
category: PHP
MySQLって大文字小文字認識しないの? 
2013/01/30 Wed.
仕事の都合で初めてMySQLを触った。
PostgreSQLを普段使いにしている自分は、いつものようにプログラムを書いてテストをしてみると何かおかしい。
んん?
大文字と小文字を認識してねー。
(´・ω・`)って気分でネットをさまよってみると、MySQLがそういう仕様になってたんですね。
で、認識させるためには「binary属性」というものをつけてあげないとダメなんだそうな。
なんでやねん。
このブログで知りました。ありがたやありがたや。
http://nayuzak.blog50.fc2.com/blog-entry-17.html
PostgreSQLを普段使いにしている自分は、いつものようにプログラムを書いてテストをしてみると何かおかしい。
んん?
大文字と小文字を認識してねー。
(´・ω・`)って気分でネットをさまよってみると、MySQLがそういう仕様になってたんですね。
で、認識させるためには「binary属性」というものをつけてあげないとダメなんだそうな。
なんでやねん。
このブログで知りました。ありがたやありがたや。
http://nayuzak.blog50.fc2.com/blog-entry-17.html
category: データベース
メール受信でPHPを起動したときのエラーの書き出し場所 
2013/01/24 Thu.
結構はまったのでメモ。
PHPのエラーはphp.iniの「error_log」で指定したファイルに書き出すことができる。
コマンドラインでPHPを起動した場合も、php.iniファイルを読みこんでくれるので問題なく動いていた。
しかし、メール受信をトリガーにしたPHP実行の時だけ、エラーが「/var/log/maillog」に書き出されていた。
なんで?なぜ?
かなり悩んだが、答えは単純。
php.iniで指定したエラーログファイルに、メールサービスユーザーの権限がなかったから。
やけくそでエラーログファイルとそのディレクトリに「chmod 777」を指定したら、ちゃんと書き出されていた。
う~ん。
maillogに権限がありませんとかのエラーが出てたら、もっと早く気が付いたんだろうけどなあ。
PHPのエラーはphp.iniの「error_log」で指定したファイルに書き出すことができる。
コマンドラインでPHPを起動した場合も、php.iniファイルを読みこんでくれるので問題なく動いていた。
しかし、メール受信をトリガーにしたPHP実行の時だけ、エラーが「/var/log/maillog」に書き出されていた。
なんで?なぜ?
かなり悩んだが、答えは単純。
php.iniで指定したエラーログファイルに、メールサービスユーザーの権限がなかったから。
やけくそでエラーログファイルとそのディレクトリに「chmod 777」を指定したら、ちゃんと書き出されていた。
う~ん。
maillogに権限がありませんとかのエラーが出てたら、もっと早く気が付いたんだろうけどなあ。
category: PHP
RewriteRuleが引数を処理できない問題 
2012/12/11 Tue.
基本動作ではREWRITERULEは引数を処理できない。
(例)
http://test.domain.com/rewritename.php?a=100
このURLをリライトさせた場合、
以下のパラメータの場合は
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^rewritename.php changename.php
http://test.domain.com/changename.php
となって、引数部分が欠落してしまう。
そこで[QSA]オプションを利用すると、
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^rewritename.php changename.php [QSA]
http://test.domain.com/changename.php?a=100
となって引数が引き継がれる。
(例)
http://test.domain.com/rewritename.php?a=100
このURLをリライトさせた場合、
以下のパラメータの場合は
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^rewritename.php changename.php
http://test.domain.com/changename.php
となって、引数部分が欠落してしまう。
そこで[QSA]オプションを利用すると、
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^rewritename.php changename.php [QSA]
http://test.domain.com/changename.php?a=100
となって引数が引き継がれる。
category: サーバー
ソフトバンクのネットワーク名が面白い 
2012/12/03 Mon.
自分が運営するサイトログに、ふと目に止まったドメイン名があった。
「jp-t.ne.jp」というもの。
なんだろ?と思いWHOISで調べてみたら、「メールサービス8」というネットワーク名だった。
なんだこれ?どこのネットワーク?
と思い調べてみたら、「ソフトバンク」だった。
で、さらに調べてみたら
JP-C.NE.JP
メールサービス1
JP-D.NE.JP
メールサービス2
JP-H.NE.JP
メールサービス9
JP-K.NE.JP
メールサービス3
JP-N.NE.JP
メールサービス4
JP-Q.NE.JP
メールサービス5
JP-R.NE.JP
メールサービス6
JP-S.NE.JP
メールサービス7
JP-T.NE.JP
メールサービス8
とあるそうな。
これらのドメインの登録日付が1999年9月28日となっているので、ソフトバンクの前身「J-PHONE」の時に取られたようです。
J-PHONE。適当すぎです。
「jp-t.ne.jp」というもの。
なんだろ?と思いWHOISで調べてみたら、「メールサービス8」というネットワーク名だった。
なんだこれ?どこのネットワーク?
と思い調べてみたら、「ソフトバンク」だった。
で、さらに調べてみたら
JP-C.NE.JP
メールサービス1
JP-D.NE.JP
メールサービス2
JP-H.NE.JP
メールサービス9
JP-K.NE.JP
メールサービス3
JP-N.NE.JP
メールサービス4
JP-Q.NE.JP
メールサービス5
JP-R.NE.JP
メールサービス6
JP-S.NE.JP
メールサービス7
JP-T.NE.JP
メールサービス8
とあるそうな。
これらのドメインの登録日付が1999年9月28日となっているので、ソフトバンクの前身「J-PHONE」の時に取られたようです。
J-PHONE。適当すぎです。
category: サーバー
黒電話買ったったった 
2012/10/09 Tue.
なんか魔が差したというか、ふと、昔懐かしい
黒電話が欲しくなって
ヤフーオークションで落札した。
当然、ちょっとした物欲に高い金額を出すわけにはいかないので、「500円」を上限で入札したら 100 円で落札できた。送料の方がだいぶ高かった。
さて、黒電話。平成生まれにはわかるまい。
なんでも、どうやってダイヤルするのかわからない子もいるらしい。とてもアナログな電話です。
ところで、実は電話回線には2つの種類があります。
ダイヤル回線とプッシュ回線です。
見た目でわかると思いますが、黒電話はダイヤル回線でしか使えません。
プッシュ回線でも着信はできるようですが、発信ができないのです。
しかし、今一般的に使われている押しボタン式の電話機は、プッシュ回線でもダイヤル回線でも使えますので、自分の家の回線がどっちか知らない方も多いのではないでしょうか?
プッシュ回線では黒電話の発信ができませんのでご注意ください。
さて、肝心の私の家の回線ですが、実はダイヤル回線ではなく、プッシュ回線でもなく、「光回線」なのです。そう、フレッツ光
の「ひかり電話
」です。
なんと、ひかり電話はダイヤル式電話機の出すバルスパルス信号も、プッシュ式電話機の出すトーン信号もどちらも認識できるのでした。
ひかり電話なら525円から申込!加入権不要!最大3ヵ月無料。最短で工事可《ヒカリ電話.com》
いやはや、アナログの塊の黒電話が、デジタルの申し子的な光回線で利用できるとは、ちょっと不思議な気分です。
何年振りだろう。久々にダイヤルを回してみた。
シャコッ!ジリジリジリ・・・ シャコッ!ジリジリジリ・・・
「あ、もしもし・・・」
ノスタルジックな秋の夜。

※本来の黒電話では現在一般的に普及している、家の壁の電話差込口(モジュラージャック)に接続することができません(もちろん、光モデムのひかり電話口もモジュラージャックです)。購入する場合はすでにモジュラージャック式に加工されている物を購入してくださいね。
当然、ちょっとした物欲に高い金額を出すわけにはいかないので、「500円」を上限で入札したら 100 円で落札できた。送料の方がだいぶ高かった。
さて、黒電話。平成生まれにはわかるまい。
なんでも、どうやってダイヤルするのかわからない子もいるらしい。とてもアナログな電話です。
ところで、実は電話回線には2つの種類があります。
ダイヤル回線とプッシュ回線です。
見た目でわかると思いますが、黒電話はダイヤル回線でしか使えません。
プッシュ回線でも着信はできるようですが、発信ができないのです。
しかし、今一般的に使われている押しボタン式の電話機は、プッシュ回線でもダイヤル回線でも使えますので、自分の家の回線がどっちか知らない方も多いのではないでしょうか?
プッシュ回線では黒電話の発信ができませんのでご注意ください。
さて、肝心の私の家の回線ですが、実はダイヤル回線ではなく、プッシュ回線でもなく、「光回線」なのです。そう、フレッツ光


なんと、ひかり電話はダイヤル式電話機の出す
ひかり電話なら525円から申込!加入権不要!最大3ヵ月無料。最短で工事可《ヒカリ電話.com》

いやはや、アナログの塊の黒電話が、デジタルの申し子的な光回線で利用できるとは、ちょっと不思議な気分です。
何年振りだろう。久々にダイヤルを回してみた。
シャコッ!ジリジリジリ・・・ シャコッ!ジリジリジリ・・・
「あ、もしもし・・・」
ノスタルジックな秋の夜。

※本来の黒電話では現在一般的に普及している、家の壁の電話差込口(モジュラージャック)に接続することができません(もちろん、光モデムのひかり電話口もモジュラージャックです)。購入する場合はすでにモジュラージャック式に加工されている物を購入してくださいね。
category: 買ってみた
Firefoxのブックマークが重すぎ 助けて 
2012/10/04 Thu.
久しぶりにFIREFOXのブックマークを整理しようとしたんですが、不要なものを削除しようとマウスの右クリックをしたら動かない。
うんともすんとも。
なんぞこれ?
地味に困ったので調べてみたらなんか解決策っぽいのが見つかったのでメモメモ。
あ、私XPですので、7とかは場所が違うかもしれません。
・ブックマークを念のためバックアップ。
・Firefoxを終了。
・以下のファイルを削除。
C:\Documents and Settings\[ユーザー名]\Application Data\Mozilla\Firefox\Profiles\[適当な文字列].default\places.sqlite
・Firefoxを再起動。
これでサクサク動くようになりました。
うんともすんとも。
なんぞこれ?
地味に困ったので調べてみたらなんか解決策っぽいのが見つかったのでメモメモ。
あ、私XPですので、7とかは場所が違うかもしれません。
・ブックマークを念のためバックアップ。
・Firefoxを終了。
・以下のファイルを削除。
C:\Documents and Settings\[ユーザー名]\Application Data\Mozilla\Firefox\Profiles\[適当な文字列].default\places.sqlite
・Firefoxを再起動。
これでサクサク動くようになりました。
category: ブラウザ・メール
[PHP] preg_replace 後方参照でちょっと悩んだ 
2012/09/20 Thu.
強力な正規表現が使えるPHPの関数「preg_replace」で、後方参照を使おうとしたらちょっと悩んだのでメモ。
後方参照とは正規表現の機能の一つで、括弧「()」で括った内容が一時的にバッファに記憶され、その内容を後で使えるというもの。
置換処理でよく使います。
たとえば、
何らかの文字列-500 を 何らかの文字列-800 に変換したい場合、
preg_replace("/(何らかの文字列にマッチする正規表現)-500/", "$1-800", 文字列);
このように、「何らかの文字列にマッチする正規表現」を「()」で括り、replacement部に「$1」としてやると、$1の部分に()で括った内容が入るわけです。
「()」の数を増やせば、$1,$2,$3・・・と使えます。
で、今回悩んだのは、「$1」の直後に数字が来る場合です。
何らかの文字列500 を 何らかの文字列800 の場合、先ほどは間に「-」がありましたが今回は直後に数字が来ます。つまり、
preg_replace("/(何らかの文字列にマッチする正規表現)500/", "$1800", 文字列);
こうなる。
でも、これでは「$1」なのか「$18」なのかわかりません。
で、PHPマニュアルを見ると「\${1}」としなさいと書いている。
なるほど。
PHPなので、「{$1}」とやりがちだけどそれは間違い。
それと、ちょっと注意なのは、replacement部の括りがダブルクォーテーションなのかシングルクォーテーションなのかで「\」の有無が変わってくる。
おさらい。
preg_replace("/(何らかの文字列にマッチする正規表現)500/", "\${1}800", 文字列);
preg_replace("/(何らかの文字列にマッチする正規表現)500/", '${1}800', 文字列);
です。
違いは良く見てね。
なお、直後が数字でない場合はダブルクォーテーションの場合でも「\」はいらない。
preg_replace("/(何らかの文字列にマッチする正規表現)500/", "$1EightHundred", 文字列);
後方参照とは正規表現の機能の一つで、括弧「()」で括った内容が一時的にバッファに記憶され、その内容を後で使えるというもの。
置換処理でよく使います。
たとえば、
何らかの文字列-500 を 何らかの文字列-800 に変換したい場合、
preg_replace("/(何らかの文字列にマッチする正規表現)-500/", "$1-800", 文字列);
このように、「何らかの文字列にマッチする正規表現」を「()」で括り、replacement部に「$1」としてやると、$1の部分に()で括った内容が入るわけです。
「()」の数を増やせば、$1,$2,$3・・・と使えます。
で、今回悩んだのは、「$1」の直後に数字が来る場合です。
何らかの文字列500 を 何らかの文字列800 の場合、先ほどは間に「-」がありましたが今回は直後に数字が来ます。つまり、
preg_replace("/(何らかの文字列にマッチする正規表現)500/", "$1800", 文字列);
こうなる。
でも、これでは「$1」なのか「$18」なのかわかりません。
で、PHPマニュアルを見ると「\${1}」としなさいと書いている。
なるほど。
PHPなので、「{$1}」とやりがちだけどそれは間違い。
それと、ちょっと注意なのは、replacement部の括りがダブルクォーテーションなのかシングルクォーテーションなのかで「\」の有無が変わってくる。
おさらい。
preg_replace("/(何らかの文字列にマッチする正規表現)500/", "\${1}800", 文字列);
preg_replace("/(何らかの文字列にマッチする正規表現)500/", '${1}800', 文字列);
です。
違いは良く見てね。
なお、直後が数字でない場合はダブルクォーテーションの場合でも「\」はいらない。
preg_replace("/(何らかの文字列にマッチする正規表現)500/", "$1EightHundred", 文字列);
category: PHP
PHPはリクエスト変数名のドットがアンダーバーに変わる 
2012/09/18 Tue.
$_POSTや$_GETで値を渡すときの変数名。
普段は変数名にドット「.」を使うことがないので今まで気が付かなかったが、今回ひょんなことで気が付いた。
リクエスト変数名に「.」を使うと、自動的にアンダーバー「_」に変わるんですね。
あらためて変数名の基本をPHPマニュアルで見てみると、「.」は使えないんですね。おほほ。今まで知らなかった。
ということは、$_COOKIEにも影響するんでしょうね。
普段は変数名にドット「.」を使うことがないので今まで気が付かなかったが、今回ひょんなことで気が付いた。
リクエスト変数名に「.」を使うと、自動的にアンダーバー「_」に変わるんですね。
あらためて変数名の基本をPHPマニュアルで見てみると、「.」は使えないんですね。おほほ。今まで知らなかった。
ということは、$_COOKIEにも影響するんでしょうね。
category: PHP
VAIOでWakeup On Lan機能を利用する 
2012/09/05 Wed.
ひょんなことでVAIO「PCV-HS13BL5」という古い機種が手に入った。
何に使おうか?
手元にアナログTVチューナーボードがある。
ふと思いついた。
実家はケーブルテレビに加入している。
そのケーブルテレビにはアナログ信号のテレビが流れている。
それの録画機にしてしまおう。
というのも、実家に帰った時に、「時々(というかまれに)録画したいテレビがあるんだよなあ」と両親につぶやかれるときがある。
しかし、両親はびっくりするほどの機械音痴。
当然録画機など買わない。買ってあげない。使えないんだもん。
なので、このPCを録画機にして、こちらから遠隔操作で録画、再生してあげるというアイデアです。
しかし、まれな録画のためにこのPCを起動しっぱなしというのは電気代この節電が叫ばれるときに電気の無駄になる。
両親を電話で起動し、PCの電源を入れさせるという方法もあるのだが、これはちょっとナンセンス。というのも、往々にしてこちらの都合通りに動かない可能性が高い。
うーん・・・。
ずいぶん昔からその言葉だけは知っていた「Wakeup On LAN」とやら言うものを、今更ながら試してみようか。
というわけで、ようやく本題に入るのです。
が、続きは後日!
何に使おうか?
手元にアナログTVチューナーボードがある。
ふと思いついた。
実家はケーブルテレビに加入している。
そのケーブルテレビにはアナログ信号のテレビが流れている。
それの録画機にしてしまおう。
というのも、実家に帰った時に、「時々(というかまれに)録画したいテレビがあるんだよなあ」と両親につぶやかれるときがある。
しかし、両親はびっくりするほどの機械音痴。
当然録画機など買わない。買ってあげない。使えないんだもん。
なので、このPCを録画機にして、こちらから遠隔操作で録画、再生してあげるというアイデアです。
しかし、まれな録画のためにこのPCを起動しっぱなしというのは
両親を電話で起動し、PCの電源を入れさせるという方法もあるのだが、これはちょっとナンセンス。というのも、往々にしてこちらの都合通りに動かない可能性が高い。
うーん・・・。
ずいぶん昔からその言葉だけは知っていた「Wakeup On LAN」とやら言うものを、今更ながら試してみようか。
というわけで、ようやく本題に入るのです。
が、続きは後日!
category: パソコン