Coda Tips – コメントアウトのショートカット

文字列を選択した状態で ⌘ + /
ファイルタイプは気にする必要がなく、必要に応じた形式のコメントアウトが自動的に入ります。

PHPは複数行選択してコメントアウトするとCSSと同じ形式のコメントアウトになるのですが、個人的に1行コメントがいいなと思ったりしてます。変更出来ないのかな?
RubyとかPythonは複数行選択しても1行タイプのコメントアウトになります。

あと、Codaにはidやclassなどなどを拾ってくれるナビゲータという機能があって普通はコメント内は拾わないようですが、
<!ーー !コメントアウト ーー>
って書くと拾ってくれます。便利?かな?

メールを自動・半自動で配信するシステム

知人に頼まれてメールを送信するプログラムを検討中。
どこかのサービスを利用した方が簡単かなと思うけど、なんやかんや理由があって専用の物をって感じです。送信先が大手企業ばっかりなので色々心配。

・送信先や配信日等のデータベース準備。
アカウント登録するのであれば、ユーザー管理や登録内容の変更などの処理をゴニョゴニョする必要があるかも。
・上のデータを使って実際に送信する部分作成(自動/半自動)。控えが必要になるので、管理側に処理完了内容のメールを送信したりログ保存・表示も。
・ユーザー管理や履歴なども含め運用していくための管理画面作成。

大雑把にこんな感じかな。こういうのってシステム屋さんに頼むと幾らするんだろ。

fgetcsvで処理したCSVデータが文字化けする時の対処

以下、備忘録。

CSVファイルを開き、fgetcsvで取得したデータを表示してみると見たことのない文字化けが・・・。何か規則があるか眺めてみたけど、よう分からん。大まかには文字列の先頭から数文字が化けてるみたいだけど、中には全く表示されてない物もある状態。

「あいうえお」→「Oうえお」とか「かきくけこ」→「_けこ」とか意味不明(化け方は適当です)

fgetcsvはロケール設定を考慮すると言うことなので、

setlocale(LC_ALL, 'ja_JP');

としてみると、直った!!と思ったら、完全に直ってない・・・。
一部だけ化けるとか、完全に直らないとか、どういうことだよ・・・。

色々調べてみるとPHP5のバグらしい。

CSVの文字コードをUTF-8にするのも手みたいだけど、エクセルで再編集することを考えると面倒なのでボツ。シンプルなCSVなので、explodeで切り分け直しても良さそうなんですけど、yossyさん作の関数でバッチリ解決しました。以下の関数の設定を書けば、fgetcsvの代わりにfgetcsv_regを使うだけですべて解決。う~んすばらし。


function fgetcsv_reg (&$handle, $length = null, $d = ‘,’, $e = ‘”‘) {
$d = preg_quote($d);
$e = preg_quote($e);
$_line = “”;
while ($eof != true) {
$_line .= (empty($length) ? fgets($handle) : fgets($handle, $length));
$itemcnt = preg_match_all(‘/’.$e.’/’, $_line, $dummy);
if ($itemcnt % 2 == 0) $eof = true;
}
$_csv_line = preg_replace(‘/(?:\r\n|[\r\n])?$/’, $d, trim($_line));
$_csv_pattern = ‘/(‘.$e.'[^’.$e.’]*(?:’.$e.$e.'[^’.$e.’]*)*’.$e.’|[^’.$d.’]*)’.$d.’/’;
preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
$_csv_data = $_csv_matches[1];
for($_csv_i=0;$_csv_iPHP5でfgetcsvが正常に動作しない

2010年7月20日追記
上記のソースで表示上は問題ないのですが、サーバーの方でエラーを吐くので若干修正しました。5行目に変数の定義を追加しただけです。
6行目もwhile (($eof != true) and !feof($handle)) {に変えるといいかも。


function fgetcsv_reg (&$handle, $length = null, $d = ‘,’, $e = ‘”‘) {
$d = preg_quote($d);
$e = preg_quote($e);
$_line = “”;
$eof = false; //ココを追加
while ($eof != true) {
$_line .= (empty($length) ? fgets($handle) : fgets($handle, $length));
$itemcnt = preg_match_all(‘/’.$e.’/’, $_line, $dummy);
if ($itemcnt % 2 == 0) $eof = true;
}
$_csv_line = preg_replace(‘/(?:\r\n|[\r\n])?$/’, $d, trim($_line));
$_csv_pattern = ‘/(‘.$e.'[^’.$e.’]*(?:’.$e.$e.'[^’.$e.’]*)*’.$e.’|[^’.$d.’]*)’.$d.’/’;
preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
$_csv_data = $_csv_matches[1];
for($_csv_i=0;$_csv_i

WordPressのコアとプラグインの自動アップグレード(コアサーバー)

コアサーバーはPHPがセーフモードで動いていてディレクトリを自動生成出来ないので、自動アップグレードや年月ベースのフォルダに画像を整理したりする事が出来ません。画像のアップだけであれば、手動でディレクトリを作っておいてパーミッションを変更する事くらいは手間じゃないんですが、せっかくあちこち自動アップグレード出来るようになったので、コアサーバーでも使いたいですよね。.htaccessでPHPがCGIとして動作するようにカスタマイズできるようです。

以下を.htaccessに記述してwp-admin/ディレクトリに置けばOKです。

<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>
<files plugin-install.php>
AddHandler application/x-httpd-phpcgi .php
</files>
<files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</files>
<files update.php>
AddHandler application/x-httpd-phpcgi .php
</files>

上から

  • ファイルアップロード用
  • プラグイン新規インストール用
  • コアアップグレード用
  • プラグイン自動アップグレード用

です。
それぞれ該当のPHPを指定しているので、すべてと言う事であれば以下だけでOK。

AddHandler application/x-httpd-phpcgi .php

注意点はファイルを保存する時にUTF-8BOM無しで保存する事。
ボクはCrescent Eveというフリーのエディタを愛用しているので、保存する時にUTF-8,改行=CR+LFで保存して適当な名前を付けて保存しアップロードして.htaccessにリネームで完了です。

若干動作が遅くなるようなので(感じませんが)すべてを指定したくなかったのですが、NextGENのギャラリーを作るのを自動化するために指定するPHPファイルが分からなかったので個別に指定出来ない;;どのファイルか誰か教えて!