はてなブックマークコメントを表示するjQueryプラグイン

任意のページに、はてなブックマークのコメントを表示するjQueryプラグインを作ったので公開。JavaScriptが動作する環境ならば、簡単に自分のサイトの好きな場所に、そのページについた"はてブコメント"を下のサンプルのように表示することができます。 → 実稼働サンプル

使い方は次の通りです。

1.ダウンロード

jquery.hatebshow.js をダウンロードして、サーバ上に配置します。

2.scriptタグ

1.で設置したjsファイルを読み込むscriptタグを表示したいページのソースに記述します。jQuery本体も忘れずに読み込むようにしてください。

<script type="text/javascript"
        src="http://code.jquery.com/jquery-1.2.3.min.js"></script>
<script type="text/javascript" src="jquery.hatebshow.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("#hatena_bookmark").hatebShow()
});
</script>

※hatebShow()の引数にtrueを指定すると、コメント本文があるブックマークだけを表示することもできます。 例:$("#hatena_bookmark").hatebShow(true)

3.表示場所を用意する

ブックマークのコメント一覧は、#hatena_bookmarkの要素内に表示されます。また、#hateb_countにはブックマーク数が表示されます。例えば、次のようにします。

<div id="hatena_bookmark">
  <h3><img src="http://d.hatena.ne.jp/images/b_entry.gif" />
  このエントリーのはてなブックマーク (<span id="hateb_count">-</span>)
  </h3>
  <!-- ここに表示されます -->
</div>

4.スタイルを指定する

次のようなスタイルを指定してあげると、オリジナルっぽい表示になります。

#hatena_bookmark ul {
  background-color:#EDF1FD;
  border-top:1px solid #5279E7;
  list-style-position:inside;
  margin:0;padding:8px 5px;
}
#hatena_bookmark ul li {
  list-style-type:circle;
}
#hatena_bookmark ul li a {
  color:#00E;
}
.hb_tag {
  color:#66C;
}

もともと自分のサイトで使うために作ったものですが、はてなダイアリー以外を使っている人には有用だと思うのでjQueryプラグインにしました。del.icio.usとlivedoorクリップ、POOKMARKあたりにも対応していきたいと思っています。それから、特に表示件数の制限は設けていませんが、はてなのAPI自体が115件までしか返してくれないので、1,000件超えとかしても問題ないと思います。多い日も安心。

Python Developers Campの締め切り迫る

Python Developers Camp 2008冬が3月7日(金)〜9日(日)の日程で開催されます。これからPythonを初めてみたいという初心者向けの講座や、gainerのようなハードウェアデバイスをPythonから操作したりするマニアックなものまで盛り沢山です。そして、今回は「みんなのPython」の著者である柴田さんのMonty Python教室もあります。
現地参加の締め切りは、2月28日まで。参加したいと思っている方はお早めに!

■ 開催概要
  • 名称 Python Developers Camp 2008 冬
  • 日時 2008年3月7日(金)〜9日(日)
    二泊三日(土曜泊のみの方の参加も歓迎します)
  • 場所 松本ホテル花月
  • 対象 Pythonに興味のある方
  • 費用 交通費,宿泊費を含んだ実費
    宿泊費は交渉中ですが、1泊あたり1万円+会議室代1000円程度を予定
  • 主催 Python Developers Camp 2008 冬実行委員会

■ 応募方法

合宿の参加者用のメーリングリストが設置されています。参加希望者はこちらに加入してください。グループへの参加にはgoogleのアカウントが必要になります。

http://groups.google.co.jp/group/pydevcamp2008w/

※グーグルのアカウントはgmail以外のメールアドレスを使っても作成可能です。今年はリモート参加者については事前の登録は行いません。

2/23追記:
とても恥ずかしいミスをしていたので修正しました。見せしめのために貼り付けておきます。
pyhon

東芝がHD DVDから撤退することになった本当の理由

発音したときに「えっちDVD」に聞こえるからだと思う。

そうに違いない!と思って、開発時から関わっていた友人(いわゆる中の人)に聞いてみた。こんな答えが返ってきました。

そのため仕事がなくなり本日休暇取得中。

Blue-rayが勝ったからといって、まだ一般消費者にはほとんど出回ってないわけで、このまま一気にオンラインレンタルも含めたネットワーク配信化が進んでいく可能性は大いにあると思う。DLNAも絡んでくると、昔のCDとは明らかに存在意義が異って、あくまでもバックアップ用メディアとしての価値しか無いんじゃないだろうか。

「第3回 jQuery.jsを読み解く」が掲載されました

技術評論社のWebサイト gihyo.jp にて、「jQuery.jsを読み解く」という記事を連載させていただいてますが、その第3回 jQueryライブラリ(470行目~769行目)が公開されました。

jquery.jsを読み解く:第3回 jQueryライブラリ(470行目~769行目)


毎週の〆切に追われる自転車操業で泣きそうです。これから1週間くらいどこか山奥にでもこもって、ストックを増やして来ようかなぁ。そういえば、デブサミでおおたにさんも連載はきついって言ってた…

Audi R8's light

R8を最初に東京モーターショーで見たときはそれほど印象深い感じはしなかった。ところが、昨年末に箱根の峠道ですれ違った際に「おっ」と思うことがあった。日が暮れかけ始めたくらいの時間帯、車2台がやっとすれ違えるくらいの道で何やら向こうから低くて存在感のある車がやってくる。何がこんなに僕を魅き付けるのだろうと思ったら、ライトだった。ヘッドライトの下にあるLEDのダイヤモンドを散りばめたような光輝く感じ。実際に光っているところを見ないとなかなか判らないかもしれないけど、実物は上の写真よりもセクシーだ。それがR8だった。

"A New Era in Lighting Technology Begins" という文章でR8のライトについて触れられているのだけれど、最初にLEDをうまく使ったのは日産のFUGAだったと思う。あのテールランプにも独特の魅力というか存在感があって、一目でFUGAと分かった。そういえば他にもこのライトを使ったアイデンティティーの表現手法は、どこかで見たことがあるな、と思ったらMacBookだった。りんごのマークが光る。別にそれを売りにしてるわけではないし、明るい部屋で使っていたら分からないし、そもそも使っている本人には見えない。でも、暗い場所で他の人が見たら一目でそれがMacだと分かる。

人々にそれが良い物かどうかを認識させる違いって、そんなちょっとしたことなんだと思う。そのちょっとした差があるかないかで、価格競争から一歩抜け出してブランドとして定着する。もちろん、中身の伴っていないブランドが長続きするとは思えないが、ちょっとした差別化がこれからのキーポイントなんだと思う。

ThinkPad X61を購入しました

CPUが SL7100 (1.2GHz)ということなので、X300は断念してX61を注文しました。
CPUアップグレード版が後から出るかもしれないけど、それまで待てません。それにX61は、期間限定セール中でCore2 Duo 2.2GHzモデルが119,910円とお買い得なので、無くなる前に買っておこうと。メモリを増設して、Vista HomeをUbuntuに入れ替えれば満足度の高いマシンになりそう。
一緒にnoteparts.comで、NMB製のUS英語キーボード(42T3467)も入手しました。

IBM ThinkPad X61 Tablet シリーズ 専用 US英語キーボード(NMB製)
IBM ThinkPad X60/X60s/X60 Tablet/X61/X61s シリーズ US英語キーボード(Chicony製)


人気のXシリーズが台数限定特価 期間限定 2/28まで 119,910円〜

やっぱり道具として捉えた場合に、ThinkPadのキーボードとトラックポイントは魅力的です。良くも悪くも道具なわけで、自分がいいと思う物を使うのが一番。僕はハンドリング重視のエリーゼが好みなんです。MacBookを1年半使ってたけど、別にモテなかったというのもある…

さて、X61とはまたしばらく長い付き合いになりそうです。

2/20追記:
キーボードだけ一足先に到着しました。今は上の2つのキーボードともに売り切れみたいです。早めに買っておいてよかった…

ThinkPad X300

2月26日発表らしい。これが本当なら、絶対買う!X61を購入しました


ThinkPad X300 (code-name:小太刀)
Display 13,3" LED Backlight WXGA+ 1440 x 900, 128 DPI
CPU / Chipset Intel Merom Dual Core hybrid LV
Santa Rosa Crestline SFF GMS 800 MHz
Communications GB Ehternet, Bluetooth, WLAN 802.11n, UWB, WWAN WiMax
Hard Drive Solide State 64 GB (1,8" x 8 mm)
Ports and Slot 2 x Mini PCIe, 3 x USB, PC Express Card, Audio, VGA
Battery 3 Cell Li Polymer Battery
   
Memory Up to 4 GB PC2-5300 / 667 MHz
Dimensions 318 x 231 x 18,6 - 23,4 mm
Weight 1.13 kg - 1.44 kg

そして、BusinessWeekの"Building the Perfect Laptop"という記事にいきなり分解写真が公開されている。まだ正式発表前なのにいいんだろうか、と心配になってしまう。でも、せっかくなのでじっくり見させてもらうと、DVDマルチドライブとS-ATA接続の1.8インチ 64GB SSD (Samsung製)、SANYO製のバッテリーが見える。DVDのドライブは使わないときに取り外せると便利なんだけど、それはできないようだ。DVDドライブは取り外し可能で替わりに拡張バッテリーを付けると10時間持つそう。気になる点といえば、タッチパッドが付いてたり、SDカードリーダがないことくらいかな。

追記:
Buy.comで予約を開始しているようで、価格は $2,911.99
CPUはCore2 Duo SL7100(1.2GHz)らしい。えー、CPU以外はステキなのに。。

資料1  資料2  資料3  資料4  資料5  資料6  資料7  資料8  資料9  資料10 
資料11  資料12  資料13  資料14  資料15  資料16  資料17  資料18  資料19 
資料20  資料21  資料22 


他にもX60シリーズの後継に当たる「X200」というモデルも出るらしい。こちらは、従来同様の12インチ液晶で、タッチパッドと光学ドライブなしとのこと。→ 情報元サイト

「第2回 jQuery.jsを読み解く」が掲載されました

技術評論社のWebサイトgihyo.jpにて、「jQuery.jsを読み解く」という記事を連載させていただいてます。

その 第2回 jQueryライブラリ(172行目~469行目) が公開されました。今回は、jQueryオブジェクトに定義されたメソッドの説明が中心となります。前回のようなjQueryの特徴的な部分と違ってアクロバティックな感じではないので,あまり面白くないかもしれません。でも、これからjQueryを使ってみようと思っている人にとっては、前回よりもメソッドの動作を知る上で役立つんじゃないかと思います。ぜひお時間のある時にでも読んでみてください。

jquery.jsを読み解く:第2回 jQueryライブラリ(172行目~469行目)|gihyo.jp … 技術評論社

# 今回は提出がギリギリになってしまって、本気で反省。。

英語を勉強したいなら魔女の宅急便

巷で話題になっているiKnowなんですが、単語を覚えるには良いのだけど実際の会話力という点では全然向上していないような気がして、最近は使っていませんでした。どうしたものかと悩んでいたら、タイムリーにこんなアドバイスが…

英語を勉強したいなら魔女の宅急便 - Android Zaurusはてな館
魔女宅なら何度でも見られるし、英文を逐一追わなくても内容は分かってるし。で、Kikiの大冒険を次のシーンの台詞が自然と口をついて出てくるまで見続ける。何度でも。繰り返し。Go, Kiki! Go, Kiki!
ハリポタでもいいけど、イギリス英語でよければ。間違ってもDie Hardとかはダメよ。頭悪い英語になるから。

という安藤恐竜さんの言葉を信じて、今日「魔女の宅急便」を注文しました。そういえば、僕の知っているTOEIC 950点な人も映画のフレーズを覚えたって言ってました。それを聞いて、最初は「スターウォーズ」の台詞を覚えようかと思ったのですが、ジェダイの英語は古典のような感じだったり、通商連合の英語はわざと訛っていたりして英語学習には向かないらしいです。というわけで、これからは魔女宅をiPodに入れて持ち歩こうと思います。

調べたところ、日本で普通に売ってるDVDにも英語音声/字幕が入っているそう。で、どうもジジのキャラが日本語と英語で違うらしい…


魔女の宅急便
魔女の宅急便
posted with amazlet on 08.02.10
ブエナ・ビスタ・ホーム・エンターテイメント (2001/06/08)
売り上げランキング: 351

モード学園 コクーンタワー

モード学園コクーンタワー
Photo by rc!

新宿でもひときわ目立つ建設中のこのビル、どこのバブリーな会社のだろうと思っていたら、モード学園の新校舎なんですね。どんだけお金持ちなんだ…

Wikipediaによると、

所在地は旧朝日生命本社跡地で、3つの専門学校などが入居する予定。「創造する若者を包み込み、触発させる」という意味を込めイメージしたという、コクーン(繭)のような外観が特徴で、数百億円にのぼる事業費は、専門学校の運営母体となる学校法人モード学園の自己資金によりすべて賄う。高さも学校法人が所有するビルとしては最も高いものになる見込み。

すべて自己資金らしいです。そして、地上50階、地下4階で1万人が学ぶ予定だとか。超高層マンション・超高層ビルにて建設されていく様子が写真とともに紹介されています。また、もっと詳しく知りたい人は、mixiのコミュでも建築現場の中の人が登場したりしてるみたいです。

『効率が10倍アップする新・知的生産術―自分をグーグル化する方法』 勝間和代

書店で手にとって面白そうだったので購入。スタバで、一気に読んでしまいました。
最初のカラー見開きページがいきなりガジェットだらけなので、キワモノ系の印象を受けてしまいますが、中身はいたってまともです。著者の勝間和代さんは、最年少で公認会計士試験に合格したり、ウォール・ストリート・ジャーナルで「世界の最も注目すべき女性50人」に選ばれたり、アーサー・アンダーセン、JPモルガン、マッキンゼーを渡り歩いたりといった凄い人です。
この本を読んで分かったことは、やはりスーパーウーマンでも常に試行錯誤をし続けて、常に最良の方法を追い求めているということ。そのための手段として、本を読むことは重要で他人の成功体験をうまく取り入れる必要があるということ。

  • 資本主義の本質は「賢くない人から賢い人へお金が移動する仕組み」
  • ほとんどの人は情報洪水と呼べるほど情報を浴びてない
  • Gmailをプライベートな補助脳として活用する(超整理法
  • 会話でもフレームワークが重要
  • 自分のやり方を絶えずベンチマーク
  • 得意なことに集中すること
  • 情報収集テーマを5つくらい決めておく
  • テレビは極力見るな。自分の五感から入ってくる情報を大切にする。
  • 情報は一定量を集めると質に転換する
  • 次の3段階を網羅すること(1)簡単なものほど伝わりやすい(2)必要な時にはいつでも深い情報に入れるように(3)全体像がいつでもわかるように
  • 集中力を高めるには、体力も大事。週2回の筋トレと毎日の有酸素運動が効率を上げる
  • 睡眠は自分への投資 ー 毎日6時間以上寝る。寝ている間に脳内で整理される。
  • 五感を使うこと。精神的な落ち着きと健康な体が必要
  • 良書は10冊に1冊あるかないかで、文庫やソフトカバーよりもハードカバーや専門書に多い。(ちなみに著者は書籍代が15万円/月)
  • フォトリーディングによる速読技術を習得する
  • 読み終わった本は、ブックオフか図書館に寄付
  • 成果は「知識×実行割合×定着率」で決まる
  • コミュニケーション中毒にならないようにする

あと、なるほどと思ったのが、本が現時点で一番効率の良い情報収集手段だということ。たいていの著者は儲けというより、自己実現のために書いている。何十年もかけて培った情報が数千円で手に入るのは安い。確かになと思います。これからは、気になった本はとりあえず買っておこう。

# 後で気づいたんですが、Amazonでもランキング1位になってるんですね。

2/11追記:
勝間和代さんが知代さんになってたので修正

Gimpで写真を映画のワンシーンのように加工する

携帯電話で撮った写真を加工してみました。あっという間にこんな感じの「男はつらいよ」風になりました。昭和っぽくてけっこう好きかも。

Kawasaki, Japan
Kawasaki, Japan

手順は、FFF.: GIMPで映画風写真に加工してみるにて紹介されているそのままなんですが、若干調整したので下記にも載せておきます。

1.彩度の調整

[道具]→[色ツール]→[色相-彩度]を選択。マスターの彩度を下げる。
僕は彩度を-40しました。

2.明るさ-コントラストの調整

[道具]→[色ツール]→[明るさ-コントラスト]を選択。失った色を取り戻させる事が重要なので…。同時に明るさも下げる。
僕はコントラスト+50、明るさ-30くらいにしました。

3.レイヤーの複製

現在のレイヤーを複製し選択。

4.ぼかし

紹介されているFocus Blurは、Windows用しかなかったので、ガウシアンぼかしを利用。[フィルタ]→[ぼかす]→[ガウシアンぼかし] を選択。半径9.00にしました。

5.レイヤマスクの生成

レイヤーダイアログ中の"背景 コピー"の上で右クリックしてレイヤーマスクの追加をクリック。ダイアログが出るので白(完全不透明)を選択してOK。すると"背景 コピー"レイヤーの横に白い長方形が出来ます。

6.ブラシを作る&見せたい範囲の指定

大きい範囲を描くブラシは標準では用意されてないので自分で作ります。[ダイアログ]→[ブラシ]でブラシダイアログを出す。新規ブラシをクリックしてブラシエディタを出し、半径1000pxにして、強度を0にする。この時の大きさは、当然元画の大きさに依存します。縦横比は1.2にしました。このブラシを選択した絵筆で、描画色になっているのを確認したら、画の中央をクリック。

7.レイヤーの統合

[レイヤー]→[下のレイヤーと結合] を二回行って一枚のレイヤーにする。

8.ノイズをのせる

RGBノイズをほんの少しかけることで、よりリアリティをあげる。[フィルタ]→[ノイズ]→[RGB散乱] で ほんとに少しだけ…0.06くらいのRGB散乱をかける。

9.レターボックス

矩形選択ツールで残したい領域を選択する。選択→反転して、透明な新規レイヤーを作って、そこで黒く塗りつぶす。その後レイヤー統合して完成!

関連リンク:
大元のPhotoshopを使った記事はこちらです。
How to turn your photo into movie-like effect using Photoshop?

jQueryについての連載がgihyo.jpで始まりました

jquery.jsを読み解く:第1回 jQueryライブラリ(1~171行目)|gihyo.jp / 技術評論社

技術評論社のウェブサイト gihyo.jpにて、jQueryに関する記事の連載を開始しました。最近非常に注目を集めているJavaScriptライブラリ「jQuery」のソースコードを順番に解説していきます。第1回は1〜171行目ですが、ローカルスコープに押し込める方法やメソッドチェーンを実現する仕組みなどが実装されていてとても興味深いです。
興味のある方は、ぜひご覧になってみてください。新しい記事は、毎週水曜日に掲載されます。


ちなみに、JavaScriptを勉強しようと思っている人にはこの本がオススメです。有名な「JavaScript:The World's Most Misunderstood Programming Language」(世界で最も誤解されたプログラミング言語) という文章の中でも、"世の中にはJavaScriptに関するひどい本が溢れている。お勧めできるのはこの本しかない。"と書かれています。ちょっと値が張って分厚くて持ち歩くのは厳しいのですが、僕も購入して参考にしています。


JavaScript 第5版
JavaScript 第5版
posted with amazlet on 08.02.06
David Flanagan 村上 列
オライリー・ジャパン (2007/08/14)
売り上げランキング: 2935
おすすめ度の平均: 5.0
5 これ一冊あれば全体像が把握できます

# もう常山日記に捕捉されてるみたいですね。さすが早いなぁ

OpenCVを使った顔認識を試してみる

インテルが開発・公開しているオープンソースのコンピュータビジョンのライブラリ OpenCV を試してみました。コンピュータビジョン(computer vision)とは、「ロボットの目」を作る研究分野だそうです。画像処理や構造解析、物体追跡などたくさんの機能が実装されていますが、その中でも多くの人が試している顔認識をやってみました。


Photo by weboo

Fedora 8だとパッケージが用意されているので、下記のコマンドでインストールできます。

# yum install opencv opencv-python

そして、使ったプログラムがこれ。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from opencv.cv import *
from opencv.highgui import *

def faceDetect(imgfile):
  # 画像を読み込む
  src_img = cvLoadImage(imgfile, CV_LOAD_IMAGE_COLOR)
  src_gray = cvCreateImage(cvSize(src_img.width, src_img.height),
                             IPL_DEPTH_8U, 1)

  # ブーストされた分類器のカスケードを読み込む
  cascade_name = "haarcascade_frontalface_default.xml"
  cascade = cvLoadHaarClassifierCascade(cascade_name, cvSize(1,1))
  
  # メモリを確保し,読み込んだ画像のグレースケール化,ヒストグラムの均一化を行う
  storage = cvCreateMemStorage(0)
  cvClearMemStorage(storage)
  cvCvtColor(src_img, src_gray, CV_BGR2GRAY)
  cvEqualizeHist(src_gray, src_gray)

  # 顔検出
  faces = cvHaarDetectObjects(src_gray, cascade, storage,
                              1.11, 4, 0, cvSize(40, 40))

  # 検出された全ての顔位置に枠を描画する
  for c, i in enumerate(faces):
    pt1 = cvPoint(int(i.x), int(i.y))
    pt2 = cvPoint(int(i.x + i.width), int(i.y + i.height))
    cvRectangle(src_img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0);

  return src_img

if __name__ == '__main__':
  if len(sys.argv) < 2:
    print "Usage: facedetect <filename>\n" ;
    sys.exit(-1)
  img = faceDetect(sys.argv[1])

  # 画像を出力
  cvSaveImage("output.jpg", img)

これはいろいろ応用ができそうで面白いですね。haarcascade_frontalface_default.xml のパターンデータが肝なんだけど、自分で学習させようとする場合は、背景画像が3,000通り、対象物の画像が7,000通りくらい必要だそう。ただし、トレーニング用の画像を自動生成することも可能なようなので頑張ればできなくもなさそうですね。

その後、erogeekな人のプロジェクトはどうなったんだろう…

OpenCV プログラミングブック
奈良先端科学技術大学院大学
毎日コミュニケーションズ (2007/09/22)
売り上げランキング: 4367

 

関連リンク:
Open Source Computer Vision Library
opencv.jp - OpenCV サンプルコード
OpenCV for Linux

Macでコマンドラインからサウンド再生

Macで音声ファイルを再生しようとすると、いちいちiTunesが立ち上がってうざいです。それにコマンドラインから再生したくても、標準ではそういうコマンドは入っていないんですね。
仕方がないので、play.pyというPythonスクリプトを書いて再生できるようにしました。

#!/usr/bin/env python
import sys
from AppKit import NSSound

class Sound:
    """ ref. http://nodebox.net/code/index.php/PyObjC """
    def __init__(self, file):
        self._sound = NSSound.alloc()
        self._sound.initWithContentsOfFile_byReference_(file, True)
    def play(self): self._sound.play()
    def stop(self): self._sound.stop()
    def is_playing(self): return self._sound.isPlaying()

if __name__ == '__main__':
    sound = Sound(sys.argv[1])
    sound.play()
    while True:
        if not sound.is_playing():
            break
$ python play.py test.wav

というわけで、無事にこのファイルをメール着信時に鳴らすことに成功したのでした。

http://lorien.sdsu.edu/~carroll/audio/ni.wav

Ni!