スキップしてメイン コンテンツに移動

投稿

Google Maps JavaScript API バージョン 2(V2) 復活!?

2013/11/20 にV2のまま放置したサイトを見てみたら、地図が出ていなかった。 そりゃね、延期された Google Maps JavaScript API バージョン 2(V2)のサポートも、2013/11/18 に終わっちゃったしね。 と思って、11/21 にV2のまま放置した同じサイトを見てみたら、 でてるやん! ということで、復活したのかなぁ

find xargs grep で、PHP のソースを検索

拡張子が .html のファイルから、PHP のソースが記述されているファイルを抽出する必要があったので、find と xargs と grep の合わせ技で検索してみた。 こんな感じ。 cd /var/www/html find . -name "*.html" -type f -print0 | xargs -0 grep -P '<\?[\s\S]*?\?>' grep の -P オプションで複数行を対象とし、 正規表現の [\s\S]*? で改行が含まれている範囲も検索している。 なぜ、拡張子が.html のファイルを対象にしているかって? それはね、.htaccess に AddType application/x-httpd-php .php .html って定義してあったサイトをバックアップから戻したときに 「サーバでPGが動くファイルは、戻さないで」 っていうオーダーがあったから。 じゃあ、なぜそんなオーダーが来たかというと...云わずもがなです。 ちなみに、 <??> で囲まれている箇所を抽出しているので、 <?xml version="1.0" encoding="UTF-8"?> みたいな XML宣言 も抽出されてしまう。

OpenIDについてぼやく

FacebookもYahooもmixiもOpenIDに対応してるって言ってるけど、肝心のOpenIDを使ってログインできるページがどこにも見当たらない。 googleアカウント持ってるから、googleのOpenID使ってログインしたいんだけど、する場所がない。 googleにもない。 俺の理解が不足しているのか、探し方が下手なのか。 そもそも、OpenIDって、サイト間でログイン情報(ID、パスワード)を共有しましょうっていうあれでしょ? Facebookアカウント持ってないし、Yahoo!のアカウントも持ってないし、mixiなんかもってのほか。 よくわからんのだが、googleのOpenIDでFacebookやYahoo!にログインして、FacebookやYahooのアカウントが無かったら、新しく作るページかなんかが開くと思ってるんだが、違うか? 教えて。

MySQLiクラスをラップする

<?php /** * MySQLiクラスの拡張 */ class MySQLiDB extends mysqli { private $_host; private $_user; private $_pass; private $_db; private $_char; private $_timeout; public function __construct($host, $user, $pass, $db, $char, $timeout) { parent::init(); // AUTOCOMMIT オフ if (!parent::options(MYSQLI_INIT_COMMAND, "SET AUTOCOMMIT = 0")) { die("Setting MYSQLI_INIT_COMMAND failed"); } // 接続のタイムアウト 設定 if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, $timeout)) { die("Setting MYSQLI_OPT_CONNECT_TIMEOUT failed"); } // 接続 if (!parent::real_connect($host, $user, $pass, $db)) { die("Connect Error (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); } // デフォルトのクライアント文字エンコーディング 設定 if (!parent::set_charset($char)) { die("Error loading character set {$char}: %...

ファイル名やディレクトリ名にスペースを含むときに使える!chmodで再帰的にアクセス権を設定する

現在のディレクトリ以下のファイルとディレクトリに対して、再帰的にアクセス権を設定するには find . -type f -print0 | xargs -0 chmod 644 find . -type d -print0 | xargs -0 chmod 755 とする。 -print0 | xargs -0 とすることで、名前にスペースを含むファイルやディレクトリが存在しても、処理してくれる。

mb_send_mail() するなら mb_convert_encoding() は不要

おれも勘違いしていたが、mb_send_mail()を使ってメールを送るとき、mb_convert_encoding()使って、ISO-2022-JPへ変換しなくていい。 具体的には、たったこれだけ。 <?php // 日本語だよって宣言して mb_language('ja'); // UTF-8で組んでるなら、文字エンコードをUTF-8に合わせて mb_internal_encoding("UTF-8"); // mb_send_mail()するだけ mb_send_mail("dare@doko.koko", "メールの送信テスト", "これは、メールの送信テストです。"); これだけで、 件名は、mb_encode_mimeheader(mb_convert_encoding("件名", "ISO-2022-JP", "UTF-8"), "ISO-2022-JP") してくれるし 本文は、mb_convert_encoding("本文", "ISO-2022-JP", "UTF-8") してくれる。 ただ、Fromに日本語使いたいときだけは、自前で $from = mb_encode_mimeheader(mb_convert_encoding("おれから", "ISO-2022-JP", "UTF-8"), "ISO-2022-JP")."<ore@doko.soko>"; ってやってから mb_send_mail("dare@doko.koko", "メールの送信テスト", "これは、メールの送信テストです。", "From:".$from); って送ってあげる。