2011年6月2日木曜日

今更ながら Zend_Gdata を試しました。その1「サンプルコードが動かない」編

こんにちは。
シナプスソフトのかわせ@おばグラマです。

私以外誰も更新しなくなった当ブログですが、気にせず好き勝手に投稿しますよ! ほぼ半年ぶりですがががが。

さて、タイトルの件。
今更ながら Zend_GData 試してみました。
検索してみても最近触ってる人少ないカンジです……。バージョン1.0が出てから5年くらい経つので当然かもしれません。

気を取り直して、ダウンロード&インストール!
特に何をしなくても、解凍して /library にパスを通せば動きます。

さっそくデモを試しましょう。
/demos にデモが入っています。WEBブラウザ越しでも、コマンドラインでも使えます、気が利いてるぅ!
今回はGoogleドキュメントの文書を扱いたかったのですが、こんな私にぴったりのAPIがあります。Google Documents List Data API です。Zend のリファレンスガイド内の Google Documents List Data API を見ると“Google Documents List Data API は、 クライアントアプリケーションから Google Documents にドキュメントをアップロードしたり、 ドキュメントの一覧を Google Data API ("GData") 形式のフィードで取得したりするためのものです。 クライアントアプリケーションからユーザのドキュメントの一覧をリクエストしたり、 ドキュメントの中身を問い合わせたりできます”とあります。
サンプルは下記を試します。今回CLI版を利用。
/demos/Zend/Gdata/Docs.php

$ php Docs.php retrieveAllDocuments ユーザネーム パスワード

さあ全ドキュメントの名前が表示されるはず……!

こんなの絶対おかしいよ

サンプルコードが期待どおり動かないと本当に萎えますorz
該当箇所のソールを見ると以下のようになっています。


function retrieveAllDocuments($client, $html)
{
if ($html) {echo "

Your documents

\n";}

$feed = $client->getDocumentListFeed();

printDocumentsFeed($feed, $html);
}

function printDocumentsFeed($feed, $html)
{
if ($html) {echo "
    \n";}

    // Iterate over the document entries in the feed and display each document's
    // title.
    foreach ($feed->entries as $entry) {

    if ($html) {
    // Find the URL of the HTML view of the document.
    $alternateLink = '';
    foreach ($entry->link as $link) {
    if ($link->getRel() === 'alternate') {
    $alternateLink = $link->getHref();
    }
    }
    // Make the title link to the document on docs.google.com.
    echo "
  • \n";
    }

    echo "$entry->title\n";

    if ($html) {echo "
  • \n";}
    }

    if ($html) {echo "
\n";}
}


Zend のリファレンスガイドを見る限りでは、上記であってそうなんすけどね……。
が、導入の「フィードやエントリ内のデータの操作」を見ると“各データモデルクラスのアクセス用メソッドを使用するか、 あるいはマジックメソッドを使用します”とあり、サンプルコードが掲載されています。こっちに直してみましょう。

function printDocumentsFeed($feed, $html)
{
// (省略)
// echo "$entry->title\n";
echo $entry->getTitle()->getText()."\n";
//または
echo $entry->title->text."\n";
// (省略)
}


無事表示されました。

2011年1月20日木曜日

ブラウザでは見えてるのに、wget で「unable to resolve host address 」

こんにちは。
シナプスソフトのかわせ@おばグラマです。

さてタイトルの件。目下困っている状態です。どなたかご教示ください^^;

PHP の file_get_contents() 関数や wget コマンドで、サブドメインの最後がハイフンで終わってるURLはエラーが発生してしまいます。

ちなみに file_get_contents() はWindowsでは成功します。うーん。


(追記)
教えてもらったところによると、ハイフン終わりはRFC的にNGみたいです。
http://ja.wikipedia.org/wiki/ホスト名


有効なホスト名の制限
ラベルの最初と最後の文字にハイフンを使うことは出来ない。