PHPで日本語ドメインの扱う(punycodeに変換)するメモ!

PHPを使って日本語ドメインを変換する方法をメモ!

日本語ドメインはpunycode(ピュニコード)という、通常のドメインと同じような半角英数etcをもっている。
例)xn--~~~.com

日本語ドメイン:日本語テストテスト.com

↓↓↓ Punycodeに変換

Punycode:xn--zcka1bbjc7826g0ecl32k.com

こちらのサイトより、実際に変換・逆変換(エンコード・デコード)ができます。
http://punycode.jp/

これをphpで簡単に変換ができるPearのライブラリが既に用意されておりました!
ありがたや~!
Net_IDNA2』 
http://pear.php.net/search.php?q=IDNA&in=packages&x=0&y=0

今回このライブラリを使って実際にPHP変換する例をメモします。
上記Pearのサイトより、Net_IDNA2をダウンロード。

IDNA2

※Net_IDNAはサポート終了らしいので、Net_IDNA2を選択(現時点で)

次にダウンロードをクリックして、ファイルを落とします。

Net_IDNA2 で、落としたファイルをphpのファイルからrequire等できる場所において、
下記サンプルプログラムを実行すると、変換されたドメインが表示されるようになります。

PHPサンプル 

require_once('Net/IDNA2.php'); //ダウンロードしたPEARのファイルを指定
$idna = Net_IDNA2::getInstance();

$enc = $idna->encode('日本語ドメイン');
$dec = $idna->decode('Punycode');

echo $enc; //エンコードされたドメイン名
echo $dec; //デコードされたドメイン名

eclipseとsvn(Subversion)の連携設定メモ

せっかくeclipseを使うなら便利な開発環境ということで、
重くて苦手意識があった、eclipseを総合開発環境として使うためサブバージョンの設定をメモします。

ここではすでにeclipseをインストール済みでSVNサーバーが用意されている状態が前提になります。

1.eclipseにSubversionプラグイン(subversive)を入れる

eclipseの ヘルプ > 新規ソフトウェアのインストール をクリック

エクリプス

作業対象に「http://download.eclipse.org/releases/helios」を入力し、

フィルタで、「subvesive」を入力し対象を絞る。

下記のように

・Subversive SVN JDT Ignore Extensions~
・Subversive SVN Team Provider~

を選択し、次へ次へと進み、同意できれば完了でインストールが始まります。

subversive

再起動をもとめられるので、再起動後にようこそ画面が表示されるかとおもうので、こちらを閉じます。

2.SVN Kitインストール

下記メニューより、 その他 > SVN Repository を選ぶ。

SVN

下記SVN Kit選択し、インストールすれば、完了。

svnkit

後はSVNとの連携設定をします。
ここでは、SVNサーバーの構築は割愛させていただきます。

3.SVNサーバーと(接続)連携

JAVAやPHP(PDTなど)の開発環境のプロジェクト・エクスプローラーの上で右クリックし > 新規 > その他 > SVN > Repository Location

svn接続を選択し、SVNへの接続情報を、SVNサーバー情報を確認しながら入力してください。

・SVNサーバーのURL
・ユーザー名
・パスワード
・認証を保持するか(任意)

svn接続2

次にSVNのエクスプローラに切り替えて、

接続したSVNサーバーのアイコンを右クリックして「Check Out」とするといつものエクスプローラにSVNのソースがのります。

これで設定完了です。

ほとんどの作業は右クリックのチームというメニューから、SVNの操作ができます。
ソースを触る際、自動でロックをもとめたりなど、なれると使いやすくなるはず!

また差分機能なども全部エクリプス上で確認できます、またもともとローカルヒストリーという機能があり、1時間前に作業した内容と比較などもできて大分便利です。

上記設定ですが、今回はwindows7で設定しましたが、macなど設定も問題なくいけ、
またPHPなどの開発環境であればPDTも問題なく設定できました。

 

wordpressでカテゴリをまたいで新着順に表示したところ一部データがうまくソートされない

wordpressで挙動がよくわからない点にぶちあたった。。
下記のようにquery_postsで新着の5件の投稿をcat=-1でカテゴリをまたいで表示しようとしたところ一部の投稿が、
古いにも関わらず新着として表示されてしまいました。

<?php query_posts($query_string .’cat=-1&showposts=5&orderby=date&order=DESC’); ?>

実際にその対象の投稿をDBで確認してもおかしな部分も見つけられず、、
原因がわかりませんでした。

ただちょっと怪しいのは、古い投稿はもともとデフォルトのカテゴリで、それを最近カテゴリ変更したことでこの現象が発生。。
原因がわからなかったのでそのまま、その古い投稿を新しく作りなおして公開日を古い日に変更し回避しました。

実際にcoreな部分のソースを見ていないので何とも言えないですが、
cat=-1の使いかたが正しくないのか、
それともデフォルトのカテゴリが何か悪さしているのか、、気になります。。

今度調べてみよう・・・たぶん

zendframework のsetIntegrityCheck無効メモ

※2回も先輩に聞いてしまったので、メモします。

zendframeworkで、SQLを書く際、
なぜか、->joinや->joinLeftが
setIntegrityCheckの制約でエラーになってしまうのでメモ。

        //$select_search=$dao->select()->setIntegrityCheck(false);
        $select_search = $dao->select();
        $select_search->from(array("T"=>"TEST_TABLE"));
	$select_search->joinLeft(array("H"=>"HOGE"),"T.TEST_ID=H.TEST_ID");
        $this->whereTrack($select_search);
        $this->initPaginator($select_search);

        $select_search=$dao->select()->setIntegrityCheck(false);
        //$select_search = $dao->select();
        $select_search->from(array("T"=>"TEST_TABLE"));
	$select_search->joinLeft(array("H"=>"HOGE"),"T.TEST_ID=H.TEST_ID");
        $this->whereTrack($select_search);
        $this->initPaginator($select_search);

fetchRowでlimitが使えなかった。

zendframework でfetchRowにlimitを使おうとおもい、下記のようなコードを流したのですが、
fetchRowだけあって使えなかった。。のでメモ。
1件だけ取得するだけでなく、limitの開始を制御したいだけなのに動きませんでした。しょうがなくfetchAll使いました。

$ins->select()->where("ID=?",$this->getRequest()->getParam("id"))->order("FILE_ID ASC")->limit(1,$this->getRequest()->getParam("2"));