【レポート】いま知るべきRubyCocoa – Mac OS X Leopard最新情報 (1) RubyCocoaの概略 | パソコン | マイコミジャーナル

時期 Mac OS X である Leopard には Ruby から Cocoa フレームワークを利用できる [RubyCocoa](http://rubycocoa.sourceforge.net/HomePage) がインストールされるというお話。Cocoa といえば、Objective-C を標準言語に採用する敷居の高いフレームワークという印象を持っていたし、そもそも OS X 用ソフトウェアを開発したことのない自分には馴染みのないものですが、Ruby から利用できるとなると、俄然興味をそそられます。

とりあえず Cocoa の本を読んでみようと思い、一冊注文してみました。Cocoa も、Xcode も、Interface Builder も、何も知らないので。

以上、興味を持っただけで終わらないように、ここに意思表明してみましたよ、と。

広告

今さらの感はありますが、話題の[はてなスター](http://s.hatena.ne.jp/)設置しました。WordPress への設置にあたって少々調整した部分もありますので、一応エントリ。

まず、一般的に、はてなスターを設置するには、ブログが出力する HTML の`head`要素内に以下のような JavaScript を含めます。

すると、リンクを含む`h3`要素を、記事のパーマリンクとタイトルだと検出して自動的にはてなスター機能を付与します。`h3`要素以外をタイトルとしたい場合には以下のような記述を加えます。

Hatena.Star.headerTagAndClassName = [‘h2′,’entry-title’];

これで、リンクを含む、クラス名が`entry-title`の`h2`要素がタイトルとして検出されます。

ここで、このブログに設置するにあたって調整した部分を紹介します。

#### 1. WordPress のテーマファイルを編集せずに設置したい
`head` 要素に JavaScript を含めるには、WordPress のテーマファイルのヘッダ部分に直接 JavaScript の記述を追加してしまうのが手っ取り早いのですが、僕は結構頻繁にテーマファイルを変更するので、できればテーマファイルを編集したくありません。

テーマによらずヘッダを出力するには、そんなプラグインを作ってしまえばよいということで、プラグイン化しました。テーマファイルいじればいいじゃん、と思いもしますが、まあこれも勉強ということで。使いたい人は[こちら](/works/wp-simple-hatenastar)からどうぞ。

追記:さっき気付いたのですが、普通にヘッダを出力すると、WordPress のプレビュー機能が動かなくなってしまいました。おそらく、未公開の記事に対してはてなスターの処理が走ると、どこかで処理が停止してしまうのではないかと。対策として、プレビュー画面の場合( `is_preview()` が `true` の場合)はヘッダを出力しないようにしました。

### 2. 記事のタイトルの抽出方法を変更したい
上述したように、リンクを含む`h3`要素が記事タイトルとして検出されますが、このブログでは記事のタイトルは`h2`要素に含まれる上、パーマリンク先の記事単独ページではタイトルがリンクになっていません。対策としては、

1. ブログのテーマファイルを変更してタイトルをリンクにする
1. はてなスターの記事検出メソッドを上書きする

の二つが考えられます。ここは「自分のブログを変更してたまるか」という意地で、二つ目の対策を取ります。

記事検出メソッドは の `Hatena.Star.EntryLoader.loadEntries` なので、オリジナルを参考にして、以下のような記述をヘッダに含めました。

[source:js]
Hatena.Star.EntryLoader.headerTagAndClassName = [‘h2′,’entry-title’];
Hatena.Star.EntryLoader.loadEntries = function() {
var entries = [];
var c = Hatena.Star.EntryLoader;
var headers = c.getHeaders();
for (var i = 0; i < headers.length; i++) {
var header = headers[i];
var a = header.getElementsByTagName(‘a’)[0];
if (!a) var uri = document.location.href;
else var uri = a.href;
var title = ”;
var cns = header.childNodes;
title = c.scrapeTitle(header);
var cc = c.createCommentContainer();
header.appendChild(cc);
var sc = c.createStarContainer();
header.appendChild(sc);
entries.push({
uri: uri,
title: title,
star_container: sc,
comment_container: cc
});
}
return entries;
}
[/source]

オリジナルから変更したのは以下の二点です。

1. `Hatena.Star.EntryLoader.headerTagAndClassName = [‘h2′,’entry-title’];`を追加し、`entry-title`クラスの`h2`要素をタイトルとして検出するように指定しました。

2. for ループ中で`if (!a) var uri = document.location.href;`とし、`h2.entry-title` 要素の中にリンクが含まれていない場合、ドキュメントの URL をパーマリンクとするようにしました。

これでテーマファイルを変更することなく、記事検出できるようになりました。でもこれ、テーマを変更すると書き直しだな。。。

以上で見事設置できましたが、結構手間がかかりました。

### 参考にさせていただいた情報
[nice_link]
[はてなスター日記 – はてなスターをブログに設置するには](http://d.hatena.ne.jp/hatenastar/20070707)
[massat.jp – WordPressに「はてなスター」を設置してみた](http://massat.jp/2007/07/12/243)
[Fenrir’s BLog – はてなスターのカスタマイズ設置](http://fenrir.naruoka.org/archives/000578.html)
[/nice_link]

会社でも WordPress を使った社内ブログを管理しているのですが、「記事からリンクが張れないんだけど」という意見を貰いました。聞いてみると、`` タグで `http://~` などではなく、独自プロトコルの URL にリンクを張りたいんだけど、記事を入力して保存したら URL が消えてしまうとのこと。

調べてみたところ、’/wp-include/kses.php’ の中で、記事を保存する際に、妙なプロトコルへのリンクの場合は URL を消しちゃうというフィルタが設定されていました。利用可能な URL スキーム(プロトコル)は kses.php の中にハードコーディングされていたので、そのときには kses.php にスキームを追加して対処しました。変更点は こんな感じです。

ここで終わらせてもよかったのですが、解決策が汚くて好みじゃないのと、勉強のために、[URL スキームを管理するプラグイン](/works/wp-urlschemes)を作ってみました。動きとしては、管理画面からスキームを登録しておき、kses.php が設定するフィルタを無効にして独自のフィルタを設定しています。

管理画面とデータベースにタッチしたので、そのあたりの動きが何となくわかった気がします。日本語の情報が少なかったので、今度ざっくりまとめてみようと思います。

というわけで、需要があるかどうかは不明ですが、とりあえず作ったので配布してみました。ちなみに社内ブログでリンクしたかったプロトコルは[この Firefox プラグイン](http://firefox.geckodev.org/index.php?Custom%20Buttons) のためらしいです。

先日、社内の勉強会で JavaScript と Ajax をとりあげました。僕は勉強会用のプレゼンテーションスライドを HTML + JavaScript で自作してみたのですが、後で調べると、W3C 謹製の [HTML Slidy](http://www.w3.org/Talks/Tools/#slidy) や [S5](http://meyerweb.com/eric/tools/s5/) といった、XHTML + CSS + JavaScript でスライドを作れるものがあることを知りました。

そこで、HTML Slidy 形式のスライドを作成するウェブアプリケーションを作ってみようと、Ruby on Rails で作り始めたのですが、よく考えると CMS としては WordPress があるんだから、ブログの記事からスライドを出力すればいいじゃん、と思い直して、WordPress プラグインとして仕立て、[WP-Slidy](/works/wp-slidy/) と名付けてみました。

サンプルは[wps]こんな感じ[/wps]です


#WP-Slidy
##2007 hara

#WP-Slidy とは
* WordPress プラグイン
* WordPress の記事からスライドを作成
* スライドは W3C の HTML Slidy 形式

#ねらい

* ブログの記事でプレゼンする
* むしろプレゼン内容を記事にする
* プラグインの勉強

#でも初めてのプラグインなので

* 作り方がよくわかっていない
* バグがあるかもしれない
* そもそも、HTMLファイルを手で書いた方が早いかもしれぬ

#改善点

* URL をリライトして /slide とかでアクセスしたい
* もっと記法を簡単にしたい
* その他色々

実はひと月ほど前に財布をなくしました。2 週間ほど前に新しい財布を買ったんですが、名入れ加工してもらったので、今日やっと手元に届きました。ひと月経って、やっと原状復帰できたので、ここで僕が財布をなくしたときにとった行動をまとめてみます。財布をなくしてしまった人の役に立つかもしれない。
続きを読む »

でんぞう

2007/07/10

でんぞう:自分のオモイとあの人のオモイがマッチするかもしれないサービス

起業した先輩が、最近新しい携帯サイトを公開した模様。宣伝に協力してみます。CNETにも[紹介されていました](http://japan.cnet.com/mobile/story/0,3800078151,20351844,00.htm)。

> でんぞうは、「好き!」「元気してる?」「ありがとう!」「Good!」など、さまざまな思い(オモイ)を自分の代わりに伝えてくれるサービス。3キャリアに対応し、会員登録は必要だが利用料は無料。

Twitter 以後、ごく小さな情報をボソっとつぶやいたり送りつけたりするサービスが増えていますが、一応そっち系に分類されるコミュニティサービスなのかな。雰囲気はかなり独特です。

一人じゃ遊べないので、興味を持った人は友達と試してみてください。

Mac の色々なアプリケーションでショートカットキーを使おうと思うのだけれど、ショートカットキーの説明に出てくる特殊キーのシンボルが何を表しているのか、どうも覚えられないのです。CommandとかShiftとかね。

困っていたら、Apple のサイトにシンボルを説明しているページがありました。自分のためにメモ。

[nice_link][Mac OS X 10.4 Help: 特殊キーのシンボル](http://docs.info.apple.com/jarticle.html?path=Mac/10.4/jp/cdb_symbs.html)%5B/nice_link%5D