2009年 2月 の投稿一覧

はてなダイアリーAtomPubをPHPで使う

はてなダイアリーAtomPubを使ってみた。PEARの中にもServices_Hatenaや、Do You PHP はてなの"mixiのあしあとAPI"の使い方を参照にしつつ。
Service_Hatenaはダイアリーの対応はまだの様だったので勉強がてら、PHP5専用で一から書いてみた。

<?php
require_once('HTTP/Request.php');
class HatenaDiaryStore{
private $hatenaid;
private $hatenapw;
public function __construct(){
}
public function __set($name, $value){
switch($name){
case "hatenaid": $this->hatenaid = $value; break;
case "hatenapw": $this->hatenapw = $value; break;
}
}
public function postNewEntry($title, $body){
$reqxml = sprintf('<?xml version="1.0" encoding="utf-8"?><entry xmlns="http://purl.org/atom/ns#"><title>%s</title><content type="text/plain">%s</content></entry>',
$title,
$body
);
$this->postNewEntryWithXml($reqxml);
}
public function postNewEntryWithXml($xml){
$url = sprintf("http://d.hatena.ne.jp/%s/atom/blog", $this->hatenaid);	// Hatena diary collection URL
$wsseval = $this->getWsseHeaderValue();
// HTTP Request start.
$httpreq = new HTTP_Request($url);
$httpreq->setMethod(HTTP_REQUEST_METHOD_POST);
$httpreq->addHeader('X-WSSE', $wsseval);
$httpreq->addRawPostData($xml);
if (PEAR::isError($httpreq->sendRequest())) {
throw new Exception("http request error");
}
if($httpreq->getResponseCode() != 201){
throw new Exception("bad request published");
}
}
private function getWsseHeaderValue(){
$created = gmdate('Y-m-d\TH:i:s\Z');
$nonce   = base64_encode(sha1(mt_rand()));
$pwdigest  = base64_encode(pack('H*', sha1($nonce.$created.$this->hatenapw)));
$xwsseval = sprintf(
'UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"',
$this->hatenaid,
$pwdigest,
$nonce,
$created
);
return $xwsseval;
}
}
$title = "てすと";
$body  = <<<EOF
気分転換でごにょごにょ中。あは。
-テスト...テスト...ただいまテスト...
-RSSリーダ購読されている方、ご了承ください。
EOF;
$hatena = new HatenaDiaryStore();
$hatena->hatenaid = "hideack";
$hatena->hatenapw = "*******";
$hatena->postNewEntry($title, $body);
?>

意外とあっさり書けてびっくり。
先日から投稿してる「今日のひとことたち」は、はてなハイクのフィードを一日の終わり近くに読み取って、
このスクリプトで自動的に投稿させていたり...。ま、他の方法でごにょごにょしてもできそうですが。

マンション

ポストにお手紙が入っていた。
f:id:hideack:20090213004627j:image
私が住んでいるアパートのどの辺りがマンションなのか小一時間NTTに問いつめたい。

いや、まぁ、気にするな。ってことだろうけど。

てすと

気分転換でごにょごにょ中。あは。

  • テスト...テスト...ただいまテスト...
  • RSSリーダ購読されている方、ご了承ください。

チキンカツ定食

会社帰り、食わなきゃやってらんないぞということで、どーだオラオラ的にトンカツ屋に行って、突発的にチキンカツを頼んでしまった。
トンカツでないところがポイントですね。

ものすごく現在胸焼け。

f:id:hideack:20090211003401j:image
麦とホップを初めて飲んだ。
味が濃い。ビールとは明らかに違うんだけど、これはこれで味が楽しめるところがいい。と、個人的には思います。
お酒に弱くなったと言いつつ、デフォルトが500ml缶を2つ開ける様になったのは病気でしょうか?

美味しかった。仕事で生じた嫌なこともすっかり流そう。*1
なお、後ろに見えるオリゼーは気にしない様に。

*1:流れたと思いたい

fcounter

script.aculo.usを使ってみた事が数度あったのだけど、簡単に何か具体的に作ってみようと言う事でこないだからゴニョゴニョ作った。
単純なカウンタ。このブログにアクセスした記録を自分が利用しているサーバでも取っているので時系列でアクセス量を可視化するという極シンプルなものです。
アクセス解析を作るのが目的ではなくて、ライブラリを触ってみる方が本題なので細かい事は気にされぬ様。
今朝から見ていたDVDの影響で'f'でアクセス数を表現してみました。24時間前から1時間毎のアクセスが画面に表示される'f'の数です。
このブログのアクセス数はたかが知れているので問題ないかと。

fcounter
f:id:hideack:20090208164319p:image

ただ、目下Internet Explorerだと何故か'Effect.Opacity'がうまくいかない。
prototype.jsのPeriodicalExecuterで毎秒画面の表示を更新しているのだけど、'f'の表示が消えてしまう。
なので、IEだと表示される字がスッと消えるエフェクトが効いていません。あしからず。
Firefox, Webkit系であれば大丈夫なんだけど。
うーむ、修行が足りない。

PLAYING THE ORCHESTRA 1997“f”

今朝からプログラム書いたり本読んだりしながら坂本龍一のコンサートのDVDをループ再生。
オーケストラの指揮は佐渡裕

PLAYING THE ORCHESTRA 1997“f” [DVD]

当時のニュースも一部残ってた。

音楽はもちろん興味はあるのだけど、技術的にも興味深くてMIDI信号をインターネットで送信して遠隔地のMIDIピアノで再生させるという方法を試みてたり、インターネット経由で中継を見た人は拍手をする代わりにキーボードの'f'ボタンを押す事でサーバーに情報が送られて、会場のスクリーンに'f'の文字が表示されるという試みが行われたりしたコンサート。

当時、月刊ASCIIの冒頭に企業広告がぎっしり入っていたのだけど、三菱電機が広告を結構入稿していて、その中にこのコンサートの記事が数ページあったのを覚えている。
広告していたパソコンはapricotとノートパソコンだったと思うのだけど。
このコンサートの紹介記事以外にも三菱電機のパソコンを利用しているユーザの記事が数本あって、高校生で三菱電機のノートパソコンを持ち込んで云々という記事もあったんじゃなかったかな。同年代なのにこういう人もいるんだ。と思った記憶がある。

元々パソコンが好きだった人が更にインターネットにも興味をもったきっかけの記事の一つ。
あと、同じ頃だったと思うけど久米宏がテレビ朝日でやった特番にも影響されたな。番組名忘れたけど。
確かアップルコンピュータがフルスポンサー。