2008/06/16

はてな
はてなダイアリーモバイルでも、はてなスターが付けられる様になった様です。
モバイル版はてなダイアリーではてなスターに対応しました - はてなダイアリー日記

本日、モバイル版はてなダイアリーではてなスターを見たり付けたりできるようになりました。

これまでモバイル版ではてなスターに対応していたサービスははてなハイクだけでしたが、はてなダイアリーでも同様に☆を閲覧したり追加したりできるようになりました。

http://d.hatena.ne.jp/hatenadiary/20080613/1213342619
モバイル端末で試した所、確かにスターが付けられます。「もしや...」と思って自分のサイトでもやってみたら...
できちゃいました。
スターを付けるURLは
http://s.hatena.ne.jp/star.add?sid={SID}&rks={RKS}&uri={記事URL}&location={元の場所}
の様なのですがモバイル端末ではログインし直す事もある為、リンク先には「ログイン」や「かんたんログイン」へのリンクが張られています。
これがあれば外部ドメインでもスターが付けられるって事ですね。
先日、blosxomでモバイル様にはてなスターを表示する為のプラグインを書いたのですが、その際に修正したフレーバに以下のリンクも付け足しました。
<a href="http://s.hatena.ne.jp/star.add?sid=&rks=&uri=$url$path/$fn.htm&location=$url$path/$fn.htm"><img src="http://s.hatena.com/images/add_bl.gif" border="0"/></a>$hatenastar_mobile::stars<br />
おそらく一度かんたんログイン等でログインすれば、はてなドメイン上のクッキーは少しの間は使える筈なので、二三個付ける場合でも再度ログインする事は無いと思います。

2008/05/30

はてな
全然難しくない話
filtered feed for coderepos
CodeReposフィードにはcategoryにshare配下のパスが埋め込まれている様なので、これをマッチングに使ってるだけです。
"Search Text"には"lang/javascript"とか"lang/python"とか入力します。
これで"lang/javascript"以下だけ欲しい人とか、"lang/perl"以下だけ欲しい人とか、"poem"だけ欲しい人とかがウォッチしやすくなるのかな? ちなみに正規表現でやるまでもなかいかな...と思って単純マッチングにしてあります。正規表現がお好み人はcloneして変更して下さい。
Pipes: Filtered Feed for CodeRepos

2008/05/27

はてな
about: rel-bookmark戦争
『オレ、rel-bookmarkも嫌いなんだわー』とブツクサ言うsnj14 - otsune tumblr まとめサイト 画像保管庫Q
『オレ、rel-bookmarkも嫌いなんだわー』とブツクサ言うsnj14 - otsune tumblr まとめサイト 画像保管庫Q(追記)
3:14 - 『オレ、rel-bookmarkも嫌いなんだわー』とブツクサ言うsnj14
さて、私も少し考えてみた。
Basic HTML data types

Refers to a bookmark. A bookmark is a link to a key entry point within an extended document. The title attribute may be used, for example, to label the bookmark. Note that several bookmarks may be defined in each document.

http://www.w3.org/TR/REC-html40/types.html#h-6.12
mattn的に訳すと

Bookmarkについて。 bookmarkは広範囲に渡るドキュメント内の唯一のキーとなるエントリポイントへのリンクとなります。ブックマークをラベリングする際にはタイトル属性が使用され、ドキュメント内には幾らかのブックマークが定義され得る事に気をつけるべきでしょう。

そしてkuさんが言及している部分
Basic HTML data types

Authors may wish to define additional link types not described in this specification. If they do so, they should use a profile to cite the conventions used to define the link types. Please see the profile attribute of the HEAD element for more details.

http://www.w3.org/TR/REC-html40/types.html#h-6.12
訳すと
作者は本仕様では記述し得ないリンク型を別途定義したいと思うかもしれません。 であれば、リンク型を定義するのに一般的に用いられるprofileを使用すべきでしょう。 その他の詳細に関してはHEAD要素のprofile属性を参照して下さい。
そしてrel-bookmarkについて、microformats wikiでは
rel-design-pattern - Microformats

By convention (citation needed), this entry point also captures the notion of a "permalink".

http://microformats.org/wiki/rel-bookmark
訳すと

一般的には(言及が必要)、このエントリポイントとはpermalinkの概念で表現される物。

意訳過ぎたらごめんなさい
と言う事で
rel-bookmarkとは、それが含まれるドキュメントの内1点を指すべき物であり、rel-bookmarkがドキュメント内で実際のリンク先を指すべき、とまでは決めてない。あくまでpermalink扱い。
が私の考え。が上から読み取った私の解釈。
例えば末っ子の小学生が「姉ちゃん」と言えば「姉」を指し、60代サラリーマンが「姉ちゃん」と言えば「キャバクラの姉ちゃん」になる訳で...
つまりはそのテリトリ内で一意に現すことが出来る何か...がrel-bookmarkなのではないかと思った。

2008/05/23

はてな
追記
検索順位が変ってしまったようです。

おそらくこれ、Technoratiがやりたかった事のはず。

- Yahoo! Search Results
http://www.yr-bcn.es/demos/microsearch/

microsearch [Wiki]

Using microformats

We support two kinds of microformats: hCard and hCalendar. hCard is used to add personal information to your webpage, hCalendar is used to add events. You can use the hCard creator and the hCalendar creator to create the code that you will need to insert into your webpage.

http://www.yr-bcn.es/dokuwiki/doku.php?id=microsearch#using_microformats
1段目の引用部にあるリンクで、「mattn」と検索してみて下さい。おそらく10秒から20秒程かかりますが検索結果が現れるかと思います。他の検索サービスと違う事に気付いた方、すばらしい。
そう、microformatsを使ってるのです。このサイト「Big Sky」に埋め込まれたmicroformatsの内、「hCard」と呼ばれる物(ここでは「Osaka, Japan」)を使用して地図上の大阪付近に「mattn」とプロットしているのです。
microsearch
2段目の引用部

Using microformats

hCardとhCalendarという、2種類のmicroformatsをサポートしています: hCardとは、貴方のウェブページに個人情報を加えるのに用いられ、hCalendarはイベントを加えるのに使用されます。 これらをウェブページに追加するには挿入するにはhCard CreatorFOAF-a-matic -- Describe yourself in RDFを使う事でコードを生成出来ます。

から、Yahooもmicroformatsに何かしらの期待を持っている事が伺えます。いずれ検索メタデータとして扱っていこうという事でしょうか。
リンク先には、今後GRDDLへの対応も予定されているので、ちょっとYahooが面白い事をやってくれそうな気がしてきました。

2008/03/25

はてな
最近私もFirefox3を使い始めたのですが、Operator 0.9.1と組み合わせると、microformatsが「hCard」と「adr」だけになってしまい、少し困ってました。 何かのバグにしてはエラーコンソールに何も出ないし悩んでいたのですが、今日ソースを見て納得。
Firefox3からは、ブラウザ自身でmicroformatsを解析出来る仕組みが入ったのですが、その対応がOperatorに中途半端に入っている様です。
chromeからmicroformatsを扱う為には
Components.utils.import("resource://gre/modules/Microformats.js");
というコードが必要なのですが、この処理がコメントアウトされていました。
実際には
$(FIREFOX_PROFILE)/extensions/{95C9A302-8557-4052-91B7-2BB6BA33C885}/chrome/operator.jar
に含まれる
content/operator.js
が原因で、パッチで表すならば以下の様な感じ。
--- chrome/content/operator.js.orig Wed Mar 19 11:44:26 2008
+++ chrome/content/operator.js  Tue Mar 25 19:11:01 2008
@@ -77,7 +77,7 @@
     /* Attempt to use the Microformats module if available (Firefox 3) */
     if (Components.utils.import) {
       try {
-//        Components.utils.import("resource:///modules/Microformats.js");
+        Components.utils.import("resource:///modules/Microformats.js");
       } catch (ex) {
         /* Unable to load system Microformats - use builtin */
       }
おしいなぁ...作者。もしくは開発時はバギーだったかな?
実際の作業としては「operator.jar」を解凍し上記パッチを当てた(もしくは手編集)後に再度zip(拡張子jar)化すればOK。見事以前までのmicroformat Operatorが帰ってきました。
相変わらずウチのサイトはmicroformatsだらけですが...
bigsky-microformats-20080325

ところでFirefox3で扱えるmicroformats、「Describing microformats in JavaScript - MDC」を見るとどうやら自前でmicroformatの定義が出来る様です。今後draftとして拡張されていくであろうmicroformatsへの配慮ですかね。せっかくmicrosummaryのOperatorプラグイン作ってたのに、こっちの方向で作り直しか?

で、さらにドキュメントの例を見ていると
var adr_definition = {
  mfVersion: 0.8,
  mfObject: adr,
  className: "adr",
  properties: {
    "type" : {
      plural: true,
      types: ["work", "home", "pref", "postal", "dom", "intl", "parcel"]
    },
    "post-office-box" : {
    },
    "street-address" : {
      plural: true
    },
    "extended-address" : {
    },
    "locality" : {
    },
    "region" : {
    },
    "postal-code" : {
    },
    "country-name" : {
    }
  }
};
という記述が...。これOperatorのソースコードのままだね。ってことはOperatorのソースをFirefox3に持ってったのかな?
とにかく簡単に拡張出来そうな仕組みなので、しばらく追ってみる。

2008/03/11

はてな
twitterには結構色んなbotが居て、結構有用だったりします。
有名な所では

plagger

http://twitter.com/plagger
perl/plaggerに詳しい某氏のブックマークが流れているらしい。私も購読している。

hatebu

http://twitter.com/hatebu
はてなブックマークのホットエントリが流れています。私も購読しています。

nicovNEW

http://twitter.com/nicovNEW
ニコニコ動画情報が流れています。

perlnews

http://twitter.com/perlnews
charsberさんのエントリで知った。perlに関するニュース一覧。さっき購読しました。
※詳しくは便利なBOT - TwitterまとめWikiを参照。

で、これらのRSSフィードをフィードリーダで購読する時に思うのが
botのステータスって、本文に対象のリンクが含まれているからRSSのlink要素はtwitter-botのステータスページになってしまって、行きたいリンクには一度ステータスページを踏まなきゃならない。
本文にtinyurlのリンクは書いてあるけど、アンカーになってないからリンク先に行くのが面倒臭い。
って事。しかもtwitterのアンカーって全部ターゲットが「_blank」。フィードリーダからすれば、ステータスページ、対象のリンク、と1つ余計なタブが開いてしまう事になります。
twitterbotautofollowlink.user.jsこんなグリモンで新しいタブを開かずに自動にページ遷移する事も出来るけど followする度に@include足して行くのはかっこ悪い。(ネタですから...)
で、良く考えたら
RSSはアンカーになってないけど、twitterのステータスページってアンカーになってるんだから、フィードリーダがそれをアンカー扱い出来ればいいのでは?
しかも先日作ったGoogle Reader Full Feedがあるじゃないか...
で、先ほどSITEINFOにtwitter.comの情報を追加しておきました。
twitter-bot-feed-link
※リンクがアンカーになってます。
まぁ、本当ならばRSSのlink要素が対象のリンクになってるのがフィードリーダを使う側としては便利なんですけどね。

2008/03/07

はてな
昨日のcurlの場合と対してやってる事は変わらない。
perlならばcpanの「Net::Google::GData」とか使った方がいいかもしれない。
ただ、まだ「Net::Google::GData」は使ったこと無い。
でも↓くらいのほうが見通し良い。

昨日のcurlの場合と同様に、GoogleLoginに使用する「auth」を取得してサービスコード「cp」に一覧を要求している。
#!/usr/bin/perl

use strict;
use LWP::UserAgent;
use HTTP::Request::Common qw(GET POST);
use URI::Escape qw(uri_escape);
use XML::LibXML;
use Data::Dumper;

my $gdata_user='your-account@gmail.com';
my $gdata_pass='your-password';

my $url = 'https://www.google.com/accounts/ClientLogin';
my %postdata = (
    Email => $gdata_user,
    Passwd => $gdata_pass,
    accountType => 'GOOGLE',
    source => 'Google-Contact-Lister',
    service => 'cp',
);
my $req = POST($url, [%postdata]);
my $ua = LWP::UserAgent->new;
my $res = $ua->request($req);

my $google_auth = (split(/\n/, $res->content))[2];
$google_auth =~ s!^Auth=!!;

$url = 'http://www.google.com/m8/feeds/contacts/' .
    uri_escape($gdata_user) . '/base';

$req = GET($url, [%postdata]);
$req->header(
    Authorization => "GoogleLogin auth=$google_auth",
);
$res = $ua->request($req);
my $x = XML::LibXML->new;
my $doc = $x->parse_string($res->content)->documentElement;
my @nodes = $doc->getElementsByTagName('entry');
for my $node (@nodes) {
    my @title = $node->getElementsByTagName('title')->[0]->getChildNodes();
    my $gd = $node->getElementsByTagName('gd:email')->[0];
    print $title[0]->toString() . "," . $gd->getAttribute('address') . "\n"
        if @title && $gd;
}
実行結果は、めちゃめちゃ非公開なものなので、出せません><
CSV形式で名前とメアドが一覧されます。

新版Perl言語プログラミングレッスン入門編 新版Perl言語プログラミングレッスン入門編
結城浩
ソフトバンククリエイティブ / ¥ 2,835 (2006-10-21)
 
発送可能時間:通常24時間以内に発送


新規投稿