Thursday, October 25, 2007

Firefox の LiveBookmark(フィード)を取得する方法

Firefox の LiveBookmarkを取得する XUL スクリプト.
Feed Sidebar という拡張機能からの紛うこと無き転載です.


ヘッダ内で,
<script type="application/x-javascript" src="chrome://browser/content/bookmarks/bookmarks.js"></script>
をインクルードして,以下のコードを書いて下さい.
// Live Bookmark Class
function CLiveBookmark () {
return this;
}
CLiveBookmark.prototype = {
folders : [],
livemarks : [],
is_init : false,
init : function () {
if (!RDF) { initServices (); }
if (!BMSVC) { initBMService (); }
this.livemarks = [];
this.is_init = true;
},
collect : function () {
if (!this.is_init) { this.init (); }

var root = RDF.GetResource ("NC:BookmarksRoot");
var feedURLArc = RDF.GetResource ("http://home.netscape.com/NC-rdf#FeedURL");
var urlArc = RDF.GetResource ("http://home.netscape.com/NC-rdf#URL");
var nameArc = RDF.GetResource ("http://home.netscape.com/NC-rdf#Name");

var folders = [ root ];

while (folders.length > 0) {
RDFC.Init(BMDS, folders.shift ());

var elements = RDFC.GetElements ();

while(elements.hasMoreElements ()) {
var element = elements.getNext ();
element.QueryInterface (Components.interfaces.nsIRDFResource);

var type = BookmarksUtils.resolveType (element);

if ((type == "Folder") || (type == "PersonalToolbarFolder")){
folders.push (element);
} else if (type == 'Livemark') {
var res = RDF.GetResource (element.Value);
var target = BMDS.GetTarget (res, feedURLArc, true);

if (target) {
var feedURL = target.QueryInterface (kRDFLITIID).Value;

var target = BMDS.GetTarget (res, urlArc, true);

if (target) {
var siteURL = target.QueryInterface (kRDFLITIID).Value;
} else {
var siteURL = 'about:blank';
}
var target = BMDS.GetTarget (res, nameArc, true);
if (target) {
var feedName = target.QueryInterface (kRDFLITIID).Value;
} else {
var feedName = feedURL;
}
this.livemarks.push ({ "label" : feedName, "url" : feedURL, "link" : siteURL });
}
}
}
}
},
getAll : function () {
// 初期化して再取得
this.init ();
this.collect ();
return this.livemarks;
}
};

好きなところで new して get する.
var live = new CLiveBookmark ();
var list = live.getAll ();
for (var i in list) {
alert (list[i].label + " + " + list[i].url + " + " + list[i].link);
}

http://uswpig.bay.livefilestore.com/y1pt79743Fzf-GT0UHH47HCDbOAJHW0rGD_FXf5L5Uz5wNgrrRFjRHNpPvAlGKpk2bkhyh0sDktjyVrEtBi2wsWqg/20071024livealert.png
ほぼ転載ですので,間違った情報や冗長な部分がある場合は指摘してください.
# というか教えて下さい!

一年前はこの手の情報は検索かければ直ぐ出てきたのですが,今は『ブックマーク』という単語が入ると,『ソーシャルブックマーク』や『はてブ』だらけ.
近年の SEO 対策の弊害を感じました. 通常の検索において誰かのブックマークページなんて,はっきり言ってインデックスされなくていいと思わない?



どうも,お久しぶりです.
更新再開していこうと思います.

自分の場合,ブログを更新するのにはパワーも時間も使うので,なるべく時間を掛けず記事をPost できるように訓練せねば. 従って,ある程度はこうした散発的な Post が続くと思います.
いや,ちゃんと気合入れて更新しますよ.

Friday, June 22, 2007

最近の色々残念な事; about Google APIs & ニコニコブックマーク

最近(ちょっと前),Google Spreadsheets を Web アプリのデータベースとして利用できないかと考えてまして,API について調べているのですけど.

残念な事 for Google SpreadSheets API


 Spreadsheets (に限らず Google API で)はフィードの形式が JSON でも配信しているので,セルやリストの値の取得は本当に2,3行で書けるのですけど,セルへの値の書き込みが PUT リクエストで直接フィードの実体を渡さないとできないもよう.
 つまり,PHP, Java などサーバサイドプログラムを駆使しないと Spreadsheets の編集は自由にできない,ということ.
 XMLHttpRequest のクロスドメインの問題から Javascript だけでシートを制御するのは結構無理そう.
 まあ,セキュリティのことを考えれば当然?
 ちょっと残念.

残念な事 for ニコニコブックマーク


 多くのことは開発者ブログのコメントや設置された掲示板で匿名多数の方々が言ってますので,別の切り口から.

 ニコニコブックマーク(略称ニコブ)とは,指定した URL の Web ページの好きなところに皆(現時点ではニコ動アカウント保持者)でコメントを残せるというニワンゴの新たに始めたサービス.
 コメントの閲覧のみ全開放.

 技術的には,Web ページのキャプチャ画像を撮ってきて,画像(ページ)上の絶対座標へコメントを貼り付けるというもの,ということですが・・・
 キャプチャ画像という逃げに出たことが非常にがっかりでした.

 Web ページというものはクライアントのディスプレイ領域がそれぞれ異なるため,ある程度フレキシブルにできている. フレキシブルに作られているページが多数存在する.
 そのため,あらゆる Web ページ上のいたるところにコメントを・・・と思うと,当たり前のことですが,コンテンツの折り返しなどで絶対座標にオブジェクトを置いておくことができない(クライアントの環境によっては見えなく隠れてしまったり,意図しない位置へ表示されたりしてしまう).
 その問題に対して,今まで多くのツールでは明快な回答というものが示されてこなかった.

 ニワンゴでさえもそれに対して,キャプチャ画像という逃げに出たことが,非常にがっかりでした.


 またコンテンツに対するコメントとコンテンツ自身が切り離されてしまっていることが同系統のアプリに当てはまる問題にあるように思う.
# まあ,ソーシャルブックマークとはそういうものとも言えなくもないが.
# でもニコブってブックマークか?



蛇足
  • Firefox Developor's Conf. 2007 Summer

へ参加しました. 興味があったので.

日本では Firefox にいまいちメジャー感がないのがどうしてか分かったような気がした. 以上.

Wednesday, February 28, 2007

|blog|Utils| 被リンク元を表示する方法,と自己リンクを除外する手法の提案

Blogger の機能のバックリンク(Backlinks)はトラックバック機能のないブログにおいて投稿した記事へのリンク元を参照できる結構機構的にも面白い方法です. スパムにも強い!
しかしながら,新着バックリンクの通知機能というものがありません.

そこで,新着リンクだけでもチェックできるようにする Tips を紹介したいと思います.
必要なのは3つのサービス.

 上記のサービスは全て無料です.(一部ユーザ登録必要)

 基本的な考え方は,
  1. Blog Search で"link:"検索演算子を用いて自分のブログへリンクしているブログ記事を検索する
  2. 検索結果のフィードを取得する
  3. フィードを利用する >>
    • RSS リーダなどに登録する
    • ブログに貼り付ける(Blogger のフィードウィジェットを利用する or Feed2JSを利用する)
  4. リンク元をチェックしてほくそ笑む
です.


具体的な設置方法


ブログの被リンク元を参照するフィードは,以下のように Blog Search 経由で取得します.

http://search.blogger.com/blogsearch_feeds?q=link:your.blog.domain/&hl=ja&scoring=d&ui=blg&ie=utf-8&num=20&output=atom

赤字の部分を自分のブログURL に変えてください.
取り敢えず,RSS リーダ用のために表示件数を20件にしておきます.
緑字はアウトプットするフィードのタイプです. Feed2JS のサービスを利用してブログなどに貼り付ける場合は rss と書き換えてもらうことで文字化けを回避できます.

 Blogger ユーザならば,上記のフィードURL を自分のブログのフィードウィジェットとして貼り付けることができます.
 旧 Blogger ユーザやユーザ以外の方でも,上記の URL を自分が利用している RSS リーダに登録するとか,Feed2JSというサービスを利用する方法でチェック or 貼り付けることができます.


注意: これは,Weblogs.com へ更新Ping を送信しているブログだけが,その更新情報をキャッチされて参照可能になります. 従って,Weblogs.com へ更新 Ping を送信していないブログはチェックされません.
注意2: このリンクリストは JavaScript による動的表示なので,ブログのアクセスアップなどには繋がりません.


発展 ~ 自己リンクを除外


 自己リンクを多用しているブログなどでは,自分が自分のブログの記事を参照する結果ばかり出てきて,他人からのリンクのチェックができない.

 そこで,この被リンクリストから自己リンクを除外する方法を紹介.

 最も簡単な方法として,Feed Rinse を利用してフィードをフィルタリングしたいと思います.

※ Feed Rinse とは..
 登録したフィードに特定のキーワードでフィルタリングを掛ける Web サービス.
このサイトではRSSを特定のタグやキーワード、サイト名でフィルタリングしてくれて、その結果のRSSを返してくれる。
via. メールからRSSへ (Feed Rinse.com) | 100SHIKI.COM

残念ながら,Feed Rinse には記事urlやドメインでのフィルタリングは(現在)できないため,著者名(Author)で分類することとします.


1) まず,アカウントを作ります.
ユーザ登録(E-mailアドレス)が必要ですが,無料で直ぐ作成できるので,スッパリ作ってしまいましょう.

2) アカウントを作って,次の画面に移行できたら,フィードを登録しましょう.
フィードは上記のコードです.

3) 登録したフィードにフィルタ(filter)を作ります.
[Modify filter] ボタン(若しくは [Set up rules])を押して,Author で自分のユーザ名を除くようにフィルタを掛けます.
もし,似たユーザ名のヒトがいる場合は,フィルタを追加してもっと絞り込みましょう.
※ 日本語には対応していないようです. フィード内容が日本語でも構わないけれど,フィルタの条件に日本語は使えないようです.

Channel とかありますが,今は関係ないです.

4) フィルタを作ったら,フィードアイコン(Rinse feed Icon)をクリック. リンク先のアドレスを,RSS リーダや上記にある方法でブログに貼り付け,更新チェックをしましょう.


最後に


 長くなりましたが,以上は『自分でコードを書かない』『お金を掛けない』方法で,Backlinks をチェックする方法がないかなを思いまして,試しながら実現させました.
少し工数が多いですので,フツーにやりたいヒトは,クリボウさんの力を借りましょう

Template Design. 2008 Jyun.