sukechan.net
Safari 3.1 の Web インスペクタがすごい
- 2008-03-20 (木)
- Safari
先日リリースされた Safari 3.1 の新機能の 1 つに、「開発」メニューがあります。その中の Web インスペクタがとても便利なので紹介します。
環境設定の「詳細」にある「メニューバーに”開発”メニューを表示」にチェックを入れると、開発メニューが表示されます。以前のバージョンでは隠し機能であった「Debug」メニューになります。

開発メニューから「Web インスペクタを表示」を選択します。HTML や JavaScript のソースを閲覧できます。
要素を選択すると、その要素がページ上でハイライト表示され、非常に分かりやすいです。
この Web インスペクタ以外にも Safari 3.1 にはさまざまな機能が追加されています。みなさんもぜひ使ってみてください。
- Comments: 0
- Trackbacks (Close): 0
Twitter に Google Maps へのリンクを追加するグリモン
- 2008-03-17 (月)

これは何?
Twitter の発言で、L:住所 と表示されているロケーション情報に、Google Maps へのリンクを追加する Greasemonkey です。
使い方
下記リンクからインストールしてください。例によって Greasemonkey が必要です。(Safari の場合は GreaseKit)
インストール後、Twitter の L:住所 という部分が Google Maps へのリンクになります。
twittergooglemapslink.user.js (version 1.0)
Userscripts.org で管理することにしました。
Twitter Google Maps Link – Userscripts.org
その他、技術的なこと
既に同じグリモンがあるかもしれませんが、見つからなかったので作りました。
今回、初めて XPath を使いました。最初 DOM でやろうと思ったんですが、処理が煩雑になるし XPath の方が早いらしいので。以下のリンクを参考にしました。
- Introduction to using XPath in JavaScript - MDC
- JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き) - IT戦記
// ==UserScript==
// @name Twitter Google Maps Link
// @namespace http://www.sukechan.net/
// @description Location is convert into the link to Google Maps.
// @include http://twitter.com/*
// @version 1.0
// ==/UserScript==
(function() {
var x = document.evaluate('//*[@class="entry-title entry-content"] | //div[@class="desc"]/descendant::p[1]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < x.snapshotLength; i++) {
var idx = x.snapshotItem(i).textContent.indexOf("L:")
if (idx >= 0) {
loc = x.snapshotItem(i).textContent.substr(idx + 2).split(/\s+/)[0].replace(/[\n\r\s]/g, "");
x.snapshotItem(i).innerHTML = x.snapshotItem(i).innerHTML.replace(loc, "" + loc + "");
}
}
})();
- Comments: 0
- Trackbacks (Close): 0
WordPress 2.2.3 ME から 2.3.3 日本語版に移行
- 2008-03-16 (日)
- WordPress
WordPress を 2.2.3 ME から 2.3.3 日本語版にアップデートしました。
アップデート自体初めてですが、意外にあっさり終わりました。
今後のために移行メモを残しておきます。
- 事前準備
- データベースのバックアップ
- ブログを設置しているディレクトリのバックアップ
- プラグインの無効化(Deactivate All Plugin ボタン)
- アップグレード
- Wordpress 日本語版サイトから最新バージョンをダウンロードして解凍
- .htaccess, wp-config.php, wp-content フォルダを残して、それ以外のファイルをサーバから削除
- 解凍した最新バージョンをアップロード
- ブラウザで、/wp-admin/upgrade.php にアクセスすると「データベースのアップグレードが必要です」と出てくるので、指示に従う
- 以上で、アップデート完了。
- 事後作業
今回はいくつかのプラグインでバージョンアップをしてくださいというメッセージが表示されたのでそのままバージョンアップしました。
また、2.3.x にはマルチバイト文字に関する不具合があるらしいので、その不具合を解消するパッチも入れました。( WP Multibyte Patch | EastCoder;)
これで Leopress が使えますね。
- Comments: 0
- Trackbacks (Close): 0
History Flow がヤバい件
- 2008-03-16 (日)
- Safari

SafariStand の新機能、History Flow がヤバい。
iTunes の CoverFlow のように Safari の履歴を見ることができます。
これは便利すぎます。
「履歴」→「History Flow」で表示されます。
今までは履歴がタイトルしかないので探すのに苦労しましたが、これがあればページのサムネイルが表示されるのですごく探しやすくなりました。
- Comments: 0
- Trackbacks (Close): 0
相手に Follow されてるかどうかを表示するグリモン
- 2008-03-15 (土)

これは何?
Twitter で、指定したユーザに Follow されてるかどうかを表示する Greasemonkey スクリプトです。
以前作ったこれを Greasemonkey にしました。
使い方
下記リンクからインストールしてください。要 Greasemonkey。
インストール後、Twitter のユーザページにアクセスすると、「Does follow do you?」というボタンが追加されます。そのボタンをクリックすると、あなたがそのユーザから follow されてるかどうかを表示します。
twitterfollowercheck.user.js (version 1.0)
その他
グリモンは初めて作りました。
Firefox, Safari(GreaseKit) で動くと思います。
コードも晒しておきます。つっこみ大歓迎。
// ==UserScript==
// @name Twitter Follower Check
// @namespace http://www.sukechan.net/
// @include http://twitter.com/*
// @version 1.0
// ==/UserScript==
(function(){
var num = 1;
var screenName = location.href.substr(19);
// Followers Request
function getFollowers() {
addElm.disabled = true;
addElm.value = "Loading...";
var httpObj = createRequest();
if (httpObj) {
httpObj.open("GET", "http://twitter.com/statuses/followers.json?page=" + num, true);
httpObj.send(null);
httpObj.onreadystatechange = function() {
if (httpObj.readyState == 4) {
if (httpObj.status == 200) {
var jsonData = eval(httpObj.responseText);
if (jsonData.length > 0) {
for (var i = 0; i < jsonData.length; i++) {
if (screenName == jsonData[i].screen_name) {
addElm.value = "You are followed.";
return;
}
}
getFollowers(num++);
} else {
addElm.value = "You are not followed.";
}
} else {
addElm.value = "error. status: " + httpObj.status;
}
}
}
}
}
// XMLHttpRequest
function createRequest() {
var xmlHttp = null;
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
} catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
// add element
var elm = document.getElementById("follow-control");
if (elm) {
var addElm = document.createElement("input");
addElm.setAttribute("class", "follow-button");
addElm.setAttribute("type", "button");
addElm.setAttribute("value", "Does follow do you?");
addElm.addEventListener("click", function() {getFollowers()}, false);
addElm.style.width = "150px";
addElm.style.marginTop = "3px";
elm.appendChild(addElm);
}
})();
- Comments: 0
- Trackbacks (Close): 0
- Search
- Feeds
- Meta
- あわせて読みたい
- Others...

