2月 23, 2006 9

php マニュアル(chm版) 文字化け解消方法

By in PHP

皆様は、phpオフィシャルサイトから、Windowsヘルプ形式のchm版のマニュアルをダウンロードしたことはありますでしょうか?
多分一度でも使ったことのある方は、非常に便利だ!って思っている方が多いと思います。

ただ、それでも実は 1 点大きな欠点があります。もちろん使用されたことのある方は知っているかと思いますが、ダウンロードしたままだと、マニュアル内のキーワード(マニュアルに含まれるキーワードをインクリメンタルサーチが出来る部分)が、文字化けしているんです。

実は結構悩んでいて、ただそのために随分古い文字化けの無いバージョンを使用していたのですが、解消する方法がわかったのでメモ残しておきます。

【方法】
ダウンロードした chm ファイルを、自分の PC 上で再コンパイルする。
【必要なツール】
【手順】
  1. KeyTool を起動
  2. メニューバー [Tools] → [Decompile] から、chm ファイルを自分の好きなフォルダに decompile (元のファイルに解凍?ってイメージに近い) する。
  3. そうすると、php_manual_ja.hhc、php_manual_ja.hhk、php_manual_ja.hhp、ja というフォルダ(中に数千の、.html) が作成されます。
  4. 今度は、HTML Help Workshop を起動。
  5. メニューバー [File] → [Compile] → [さきほどの php_manual_ja.hhp] を選択。
  6. Compile(数千の html ファイルをまとめ、chm ファイルを生成) が始まるので、しばらく待つ。
  7. 完了! キーワードの文字化けが解消した chm マニュアルが完成します。

オフィシャルの方は、何故うまくいってないかは想像でしか判断出来ませんが、自分で再コンパイルしてでも、キーワード検索は利用出来たほうが良いです(キッパリ)。

(おまけ)
でも、chm ファイルも便利ですが、つい先日のはてな勉強会で知った、
http://api.rails2u.com/
のインターフェイスのほうがさらに今風でかっこいいよなーと思います。

2月 20, 2006 0

php で YAML

By in PHP

いまさらながら、YAML。簡単かつわかりやすくて良いですねぇ。
日本 ruby の会によるるびまでも YAML についての記事がありましたが、php でも spyc というライブラリで簡単に扱うことができます。

spyc
http://spyc.sourceforge.net/

もし、schema.yml というファイルを読み込む場合、

$dat = Spyc::YAMLLoad(‘schema.yml’);

とやるだけで、$dat に 配列として、schema.yml を読み込むことが出来てしまいます。
これはもう簡単というかなんというか、便利すぎです。

実は最近、symfony という PHP5 のフレームワークをいじっているのですが、このフレームワークも、YAML を最大限利用して作られているんですよね。

その中で出てきた propel という O/R マッパー(?)なんかも含めもうちょっと理解できたらまとめたいと思います。

普段自分は情報を追っかけているつもりでしたが、全然追えていないし、自分が知らないだけで便利な技術っていっぱいあるんだなーと改めて思いました。

2月 16, 2006 1

pear コマンド alpha、beta バージョンのインストール方法

By in PHP

なんだかたまに詰まる pear コマンドの使用方法。
まれに、依存性の関係やらなにやらで、beta が必要になる時があります。

以下コマンドで普通にインストールすると、stable 版がインストールされてしまいます。
(例として、パッケージを phpdocumentor とします)

> pear install phpdocumentor

それを回避したい場合は、以下の様にコマンドを打つことで回避できます。

beta バージョン

> pear install phpdocumentor-beta

alpha バージョン

> pear install phpdocumentor-alpha

わかっちゃえば簡単なんですが、ついつい引っかかったりしちゃうんですよねぇ…

<<追記>>
ホント無知であれなのですが、予め以下のコマンドを打っておくと、-beta 無しで行けるようです。
(stable ではなく、開発途上バージョン[beta等] を優先する)

>pear config-set preferred_state beta

2月 6, 2006 0

東プレの問い合わせフォーム

By in Diary

ちょっと前、一部のキーボードマニアの間で有名な東プレのホームページの問い合わせフォームより一つの質問をした。

3 週間近く経ったいま、未だ返事を頂くことが出来ない。

内容は、あるキーを傷つけてしまったので、1つのキーだけで購入することは出来るのか?またその場合の金額は?
ってたったそれだけの内容である。なのに、未だに返事はない。

ネット上に問い合わせフォームはおいたものの全く内容は確認されてないのであろうか。
web 制作会社に進められるまま作ってしまったもののメンドクセーから放置なのであろうか。
自分でも問い合わせしたことを忘れてしまいそうだ。

別に電話して聞けばいいじゃんと思うが、それもなんだか今更感がある。
ただの愚痴なのだが、好きなメーカーだけにちょっと悲しい。

自分もクライアント様の意向で web サイト構築の際に、よく問い合わせフォームを作成する。
客の立場にたって考えると、返事がこないこと程悲しいことはない。

web サイト作って納品してしまえばそれでいいではなく、運営方法までうまく指導しつつ上手なサイト運営を推進して行かなければと改めて思った出来事だった。

1月 31, 2006 0

PSP Firmware 2.5 over でも、自作ソフト動作? [GTA Exploit]

By in Game

なんだかんだ言っても非常におもしろそうな PSP Hacks 。

当初はファームウェア 1.5、2.0(1.5にダウングレード) でないと動かせなかったはずの自作ソフトが、2.5 以上でも動作させる事が出来るようになったそうです。

必要になるのは、

ソフトは海外版なので購入するのは難しいのでは…と、ちょっと躊躇してましたが、楽天で購入出来る店舗を発見したので、売り切れないうちに即購入致しました。

また、PSP は海外版のソフトも動作するらしく普通に遊ぶことも出来るので、普通に GTA シリーズが好きな人なら、二度お得かもしれません(w

PSP をひたすら追いかけている Hacker Fangita に敬意を表しつつ、久々にプログラマとしての血が騒ぎます。

Grand Theft Auto : Liberty City Stories

1月 25, 2006 0

Amazon ECS 日本語チュートリアル

By in Diary

を、いまさらながら見つけた(2005年8月バージョン)。

Amazon.com XML Developers

この下の発言の中に、pdf へのリンクが張ってある。

ちなみに、英語のオフィシャルドキュメントは以下 URL。

http://www.amazon.com/gp/browse.html/?node=3487571

1月 25, 2006 13

PHP5 の fgetcsv() で読み込み内容が腐る現象

By in PHP

こんどは、PHP5.1.2 の fgetcsv() ではまった…

fgetcsv() で読み込もうとする csv ファイルの文字コードと、PHP の内部文字エンコーディングが違う場合、fgetcsv() で読み込むと、どうしても文字が腐る …
(PHP4 時代[少なくとも 4.3 系統は]は、問題なかった)

【以下みたいな場合】

  • CSV: Shift_JIS (Windows の Excel で作成されることを想定するとこれ)
  • PHP内部コード: UTF-8 (最近は自分プロジェクトはこれで統一している)

で、試しに、CSV のエンコードを UTF-8 にして試すと、うまくいんだよなぁ。

色々調べると、PHP5 からどうやらロケール? に左右されるらしい… (参照URL: PHP-devML)

ただ、上記 ML のスレッドでも解決方法(いや解決してないようだが)を試しても、やっぱりダメ。
なら、PHP を ShiftJIS にすればいいじゃん!と思ったが、さすがにそれはプログラマとしてするわけにはいかない。

なので、そもそもバグなのかはわからないけど、いずれ修正されることを期待しつつ、今回も力業で取り急ぎの対処。以下、ソースコードと手順。

$buf = mb_convert_encoding(file_get_contents(“$CSV FilePath”), “utf-8”, “sjis”);
$fp = tmpfile();
fwrite($fp, $buf);
rewind($fp);

手順としては、

  1. CSV ファイルを一度読み込む
  2. 文字コードをコンバート
  3. テンポラリファイルを作成
  4. コンバートした内容を書き込む
  5. 書き込んだファイルの、ファイルポインタを先頭に戻す
  6. で、fgetcsv で読み込みを行う

これでうまくいった。
コード+4行で動作するのならば、まーいいかな…とは思うけど、相変わらず泥臭い対処方法だと思う。

1月 23, 2006 3

設定間違いでアクセス不能時の対処方法…

By in WordPress

WordPress。いろいろいじっていたら、早くもはまる。

管理画面の中の WordPress URL 設定を、間違ってアクセス出来ない URL に設定…
(そしたらホントにアクセス出来なくなった!)

そこで焦ってしまい考えついた方法は、DB の直接書き換え。

WoredPress を設定した、MySQL の中を show tables コマンドで確認すると以下のテーブルがある。

  1. wp_categories
  2. wp_comments
  3. wp_linkcategories
  4. wp_links
  5. wp_options
  6. wp_post2cat
  7. wp_postmeta
  8. wp_posts
  9. wp_usermeta
  10. wp_users

まあ、この辺りは見るからに、wp_options がクサイので、そこから調べたらビンゴ。

色々調べていくと、wp_options は汎用的な作りになっていることがわかり、どうやら

option_id = 1 → WordPress URL
option_id = 40 → WordPress Blog URL

に URL が保存されていることが判明。

なので以下 SQL を直打ち。
(WordPress の URL と、Blog の URL が同じ場合)

UPDATE wp_options SET option_value = ‘<<正しいURL>>’ WHERE option_id IN (1, 40);

んで、書き換えられていることを確認。

SELECT option_id, option_value FROM wp_options WHERE option_id IN (1, 40);

その後、ブラウザから確認。
でも、なんと、それだけではアクセスが出来ない…

数分間悩み仕方ないので、ソース読み始めたところ、そしたらまあなんのことはない、WordPress の仕組みとして、DB の内容をファイルにキャッシュしていることがわかったのでその内容を手動削除。
(デフォルトのままだと、[InstallDir]/wp-content/cache/ 以下)

ふー、それでやっとアクセス出来るようになった。

それにしても、我ながら泥臭い方法すぎる。もっとスマートな方法が無いと復旧できない人いそう。
でも、そもそもこんなしょーもないミスする人なんていないような…

1月 19, 2006 1

PHP fgetcsv() 改行コード

By in PHP

PHPでファイルを読み込む際、改行コードが、[CR]の場合、どうしてもうまくいかん…前はうまくいっていたのに。と悩むこと少々。

ちょっと検索かけたところ、マニュアルに記述発見。
どうやら、PHP自体の設定で、区分けしているようだ。

PHPマニュアル::ファイルシステム関数

最近(それとも昔から?)は、わざわざ別設定として、読み込む際に、明確に区別していたんですね。

パフォーマンスの問題でしょうか?
ヘンなコード書いちゃう前に設定探せて良かった。

やはり、PHP はマニュアルがいい。

※ ちょっとテストも兼ねて以前別 blog に投稿していたのを再掲。

1月 19, 2006 0

テスト投稿。

By in Diary

日本語表示は問題ないかな?