1月
29
2010
2

Chrome 正式版 Greasemonkey でクロスドメイン POST をする方法

最近公開された、Google Chrome の Ver 4 では、正式に Greasemonkey がサポートされ、以前のように特別なオプションを指定することなく、ワンクリックでユーザスクリプトがインストール出来るようになりました。
それ自体は非常に嬉しい事だったんですが、バージョンアップに伴い、はてブ with Twitter が動かなくなってしまっていました。(現在は修正済み)

以前、JavaScript だけでクロスドメインで POST メソッドを送る方法で紹介したやり方が、Chrome のバージョンアップによって無効になってしまったためです。
無効になったとはいえ、通常の JavaScript として使用する分には問題なく、Greasemonkey だけに問題が発生していました。
動的に生成した iframe の contentWidow オブジェクトが取得出来なくなっており、セキュリティの制限が強化されたものと思われます。

最終的にはその制限を回避する方法を見つけたので、以下に解説します。

通常 JavaScript の記述

まず、Greasemonkey ではなく普通の JavaScript としてJavaScript だけでクロスドメインで POST メソッドを送る方法等を参考に、本来やりたい処理を記述します。
この時は普通に script タグでスクリプトを読み込んで、正常動作を確認しておきます。

そして、正常に動作するスクリプトが作成出来たら、それを任意のサーバにアップします。

Greasemonkey の記述

以下のようなスクリプトを書きます。

(function() {
    var d = document;
    var s = d.createElement('script');
    s.src = 'http://www ...'; // スクリプトファイルをアップした場所
    d.body.appendChild(s);
})();

これだけで、本来の window オブジェクトから実行したかった処理が実行され、Greasemonkey の制限に掛かることなく、iframe を使用したクロスドメイン POST が実現します。

でもちょっと待って

Greasemonkey が実行されるたびに、自分のサーバから js ファイルがダウンロードされるなんて嫌ですよね?私は嫌です。レスポンスを考えたって好ましくないですし。

そこで、data スキームを使って外部スクリプト自体を Greasemonkey スクリプトの中に埋め込んでしまう事にします。(data スキームについてはこの辺を参照して下さい。)

data スキームへの変換には、[JavaScript] dataスキームURI生成(画像データのBase64変換)を使用させていただきました。
このサイトで、先ほどアップした js ファイルの URL を指定し、data スキームに変換した文字列を取得します。

その上で、Greasemonkey を以下のように書き換えます。

(function() {
    var data = 'data:application/x-javascript;base64,'+
        'KGZ1bmN0aW9uKCkgewoJdmFyIGQgPSBkb2N1bWVudDsKCWZ1bmN0aW9uIGdldEVsZW1lbnQoeHBh'+
        // 中略
        'fSkoKTs=';
        var d = document;
    var s = d.createElement('script');
    s.src = data;
    d.body.appendChild(s);
})();

これで、単体の Greasemonkey スクリプトでありながら、外部スクリプトを読み込んだのと同等の状況を作り出す事が出来ます。

これでスッキリしましたね!

Written by Otchy in: Development | タグ: , , ,
1月
29
2010
2

自前で短縮 URL。Simple Shorten URL 公開。

自前のサーバに短縮 URL を設置したい場合の超シンプルな実装、Simple Shorten URL を作りました。DB を使わずに実装したので、レンタルサーバとかでも気軽に動かせるかと思います。
限定された URL 以下の URL のみ短縮可能で、特定用途にしぼった使い方を想定しています。もちろん短縮対象の URL と生成される短縮 URL のドメインは異なっていても構いません。

詳細については、Simple Shorten URL を見て下さい。
OTCHY.NET 専用短縮 URL は http://otchy.net で動作しています。

簡易実装と侮る事なかれ。
ひたすらシンプルな実装にしたのでかなり高速に動作する上、自分専用という事で、ハッシュの長さを 3 にしているので、otchy.net で使うと、http://otchy.net/XXX となり、実は bit.ly の http://bit.ly/XXXXXX と同じ長さだったりします。

興味があればお試しを!

Written by Otchy in: Development | タグ:
1月
27
2010
2

TwitMgr Ver 1.5.1 リリース

TwitterAPI.js のバージョンアップにあわせて、TwitMgr の Ver 1.5.1 をリリースしました。

TwitterAPI.js のバージョンアップによって、Firefox 3.6 に対応したり、地味なところでは API の多重アクセスがあってもエラーにならなくなったりしています。
TwitterAPI.js に Ver 0.9.3 で実装した再ログイン機能についても、TwitMgr に取り込んだので、複数アカウントを管理したい人は便利になったんじゃないかと思います。

フレンズとフォロワを取得する API の仕様が変わったために上手く動作していなかった部分についても修正しました。
従来の API はページを指定する事で、100 件を超えるユーザを取得していたのが、カーソルを指定する事で取得するように API が変わっていたのですね。

フォロワがせいぜい 1,000 くらいまでのうちは別にページ式でもいいですが、100,000 件とか言うユーザも英語圏ではザラにいるので、そういうケースに対応しやすくするためでしょう。
従って、何件中の何番目、という遷移はできなくなり、「次へ」「前へ」式の遷移になりました。

また、フレンズとフォロワの管理についてはカーソル式に対応したのですが、そこで力尽きたので「分析」機能についてはいったんオミットしています。
この辺はまたいずれ復活させたいところですね。

Written by Otchy in: Information |
1月
26
2010
2

TwitterAPI.js Ver 0.9.4 リリース。Firefox 3.6 に対応。

TwitterAPI.js の Ver 0.9.4 をリリースしました。

一部、不具合の修正もありますが、メインは Firefox 3.6 に対する対応です。
元々 Firefox のブラウザ判定にワンライナー (/a/[-1]==’a') を使っていたのですが、それが 3.6 から無効になり、Fx 3.6 で正常動作していませんでした。
こういうイレギュラーなのはあんまり使うもんじゃ無いですね…。

一方、UTF-8 以外の文字コードで使用した場合に、Chrome で文字化けする問題の解決も試みましたがダメでした。
document.createElement(‘iframe’) した iframe は、元のページのエンコードにかかわらず UTF-8 で生成されるのが Chrome 以外のブラウザの実装なのですが、Chrome だけは律儀に元のページのエンコードを引き継ぐため、文字化けが発生してしまっています。

meta タグで Content-Type を指定してみたり、document.open で、Content-Type を指定してみたりしたのですが上手くいかず挫折です。
誰か Chrome 上で元のページのエンコードにかかわらず、UTF-8 の iframe を生成するいい方法を知っていたら教えて下さい。

Written by Otchy in: Development | タグ: ,
1月
03
2010
2

2009年ブログ記事アクセス数ランキング

OTCHY.NET を開設して、このブログに最初の記事を投稿したのは、2008 年 12 月 23 日の事で、それから約 1 年経ちました。
今回は、2010 年までブログが続いたら是非やりたいと思っていた企画、自ブログのアクセス数ランキングを発表したいと思います!

おかげさまで昨年の1年間で、ブログのアクセス数自体は順調に伸び続けました。(年末の落ち込みは、Web 全体のアクティブ率が落ち込んでいるせい…と信じています。)

chart

途中、目立った山が 2 カ所ありますがその部分については、ランキングの解説の中に書いていきます。

果たして、最もアクセス数を稼いだブログ記事は何だったのでしょうか?
はてブを付けて頂いた数のランキングについては、メニューの中にブログパーツを貼り付けてあって常に表示された状態なので、ここではアクセス数を元にしたランキングを発表します。

トップ 3

[1]Twitter ボットの作り方 Perl 編 (1)

2009 年の栄えある第 1 位は 「Twitter ボットの作り方 Perl 編 (1)」でした!

期間を空けて連載した記事の第 1 回になります。連載が完結する前から結構アクセスが多く、興味を持ってもらった方が多かったのだと思います。
連載完結後に目次を追加してからは、目次のアクセスもかなり伸びたのですが、その時点ではすでに Google 的にも第 1 回の評価が高く、注目度では常に第 1 回の記事がトップでした。

記事を書く立場としては、まとめとしての目次を最初に読んでもらえた方が全体の見通しが良くてお勧めなので、今度また連載記事を書く事があれば、その辺を気にしたいと思います。
最初に目次を公開して、目次の内容については順次更新するなどでしょうか。

「Twitter+ボット+作り方」検索 では、ずっと上位にいるので Google からの流入が多いですね。
今もってアクセス数の稼ぎ頭といえます。

[2]とほほさん騒動まとめ(結論はとほほ(杜甫々)さん≠平志朗氏)
そして、とほほさんの騒動のまとめが次点でランクインしました。

詳細は記事内容を読んでもらうとして、Twitter 世界の情報伝達の早さに驚いた事件です。
まとめ記事としてもスピードが重要と考え、情報の裏が取れた直後からすぐに書き始め、1時間足らずでまとめ上げましたが、まだ混乱が収まらない時期に公開してしまったので、一時期はアクセス集中によりサーバダウンの憂き目を見ました。

サーバが落ちている間、OTCHY.COM に同内容のプレーンテキストをおいて、アクセスをそちらに誘導するなどしたので、そこのアクセスまでカウントに入れれば 1 位はこちらの記事だったかもしれません。

それほど Twitter 爆発の破壊力はすさまじかったです。はてブのホッテントリに "かする" 程度はそれまでも何度かあったり、いわゆるアルファブロガーの方に紹介されたりした事もあったのですが、それらからのアクセスを軽く凌駕するアクセスがほんの数時間のうちに集中しました。
最初に出したグラフの右側の山は、この記事に対するアクセスが殆どになります。

[3]ちんゃと よゃちめう?ジェネレータ。
冒頭のグラフの左側の山が、この記事へのアクセスになります。
読めることが間違い? : ひろゆき@オープンSNSという記事に触発されて、ジェネレータを作って公開したところ、瞬く間にアクセスが伸びました。
仕組み自体は簡単な物なので、その後もいろんなジェネレータが公開されましたが、それらの中でもかなり早い段階で公開した事でより多くのアクセスを集められたようです。
当時、おもしろがっていろんなブログなどから紹介してもらいました。

確か、最初の記事を読んでから 1 時間かそこらで書き上げて公開したような気がします。
こういうスピードで開発をしたり、ウェブページを公開できたりするのは、ecoder とか WordPress とかウェブベースで動作するツールの力に寄るところが大きいですね。

トップ 4~10

[4]Twitter ボットの作り方 Perl 編 (2)
[5]Twitter ボットの作り方 Perl 編 (目次)
[6]Twitter ボットの作り方 Perl 編 (3)
[7]Twitter ボットの作り方 Perl 編 (4)
4~7 位は 1 位となった、Twitter ボットの作り方シリーズの記事がランクインしています。内容的にはシリーズ物なので、特筆すべき事は無いですが、アクセス数を計測すると、第 1 回から順に読み始めて、少しずつ脱落 (?) していく様子が分かります。
連載記事はどれもそうですが、全ての人に最後まで読んでもらえるというのは残念ながらありえないので、最後まで脱落しない割合がどの程度か、というのが一つの指標だと思います。

[8]css による疑似フレーム IE6 標準準拠モード完全対応版 (CSS ハック / JavaScript未使用)
当ブログは、プログラミングに関するネタが多いのですが、ここで Web デザイン寄りの記事がランクインです。Web デザインと言ってもまあ css のテクニックなのでかなり技術寄りの話ですね。
ここで紹介しているテクニックには、同じような目的を達するための手法が色々とあるのですが、IE6 標準準拠モードに対応、CSS ハック / JavaScript 未使用のものは、他に無いのではないかと思います。

[9]「解読がとても難しい英語テストの解答用紙」を Excel で解読
タイトルまんまですが、GIGAZINE で紹介された暗号っぽいものの解読です。
GIGAZINE にトラックバックした直後から、多くのアクセスを集めてトップ 10 入りしました。

[10]Twitter ボットの作り方 Perl 編 (5)
ここで再び、Twitter ボットの作り方がランクイン。ランキング的にはもはやノイズですね…。

トップ 11~20

以下 20 位まではざっくりと紹介します。

[11]Twitter のスパムフォローを簡単にブロック – TwitMgr 公開
OTCHY.NET の一番人気コンテンツ TwitMgr 公開時の紹介記事です。

[12]JavaScript だけでクロスドメインで POST メソッドを送る方法
意外と苦労するトピックらしく、検索からの流入が多い記事です。

[13]JavaScript から Twitter API を簡単操作―TwitterAPI.js 公開
おかげさまで、「JavaScript Twitter API」検索では不動の1位となっています。そもそも TwitterAPI.js は、TwitMgr を作成する際の副産物なんですよ。

[14]別の PC のサービスをリモートで再起動する方法
ちょっとした Windows の小技。当ブログの記事で、初めてまとまったはてブがついた記事でもありました。

[15]Google App Engine for Java 開発環境を USB メモリで持ち歩く (2)
GAE/j をいじり始めた時に、最初は開発環境を USB メモリ上に作ったので、そのときの記録です。なぜか連載第 2 回が一番のアクセスを集めています。

[16]「ファイル名を指定して実行」超活用法
これは個人的にはイチオシのテクニック。試した事が無ければぜひお試しください。

[17]PHP で日本語のひらがなとカタカナと漢字を判別する方法 [UTF-8編]
このブログではめずらしい、PHP の記事。検索からの流入でじみ~にアクセスを稼いでいます。

[18]Google App Engine for Java 開発環境を USB メモリで持ち歩く (1)
15 位の記事とセットです。

[19]右下または左下においた画像に文字列を回り込ませるHTML/CSS
css がらみの記事は、ニッチなニーズに応える記事が多いですね。

[20]MySQL のダンプを Gmail でお手軽に定期バックアップ
MySQL に限らず、他にも色々と応用可能なのでオススメです。

トップ 21~50

これ以下は、ひたすらタイトルを羅列してみます。この辺にきて、ようやく読み物系の記事がランクインし始めますね。

[21]JavaScript だけで Shift_JIS/EUC-JP のページから UTF-8 に変換して POST する方法
[22]PC ディスプレイの解像度とウェブサイトの横幅
[23]ちんゃと よゃちめう?系ジェネレータまとめ
[24]西友のセルフレジを取り巻く2つのエコ
[25]外部リンクに自動でアイコンを付与
[26]Google App Engine for Java 開発環境を USB メモリで持ち歩く (3)
[27]Windows が Mac OS X よりも Linux よりも優れているたった 1 つのこと
[28]Web漫画は未開拓のフロンティアだ
[29]Greasemonkey スクリプトの冒頭に書く 5 行
[30]閲覧中のページについてそこから遷移せずTwitterでつぶやくためのブックマークレット
[31]パッとしない桜の写真を鮮やかにする Photoshop チュートリアル
[32]Google Chart API を使って自サイトの合計はてブ数をグラフ化する
[33]ログインしないでニコ動を見るためのブックマークレット
[34]巨大なバイナリを扱えるバージョン管理システムを夢想してみる
[35]サーバサイド高機能エディタ ecoder インストール方法
[36]HTML のみで携帯から Twitter する
[37]Synergy のクリップボード共有で Excel のデータを貼り付ける
[38]Google Chrome × AjaXplorer / ecoder が快適すぎる件について
[39]テキストファイルを URL エンコードして保存する perl のワンライナー
[40]Twitter ダイレクトメッセージ誤配送の原因を推測してみた
[41]「Greasemoneky(JavaScript)入門」への回答
[42]IE を標準準拠っぽく動作させる JavaScript ライブラリまとめ
[43]Twitter 上のどせいさんの素敵なお言葉をいつものフォントで表示するグリモン
[44]Greasemonkey で 超お手軽に jQuery を使うスニペット
[45]Google は現代の MS か?独禁法で訴えられる日は来るのか?
[46]お釣りの小銭を減らすように支払う裏ワザ(暗算不要)
[47]TwitterAPI.js Ver 0.9.3 リリース。大幅刷新。
[48]Web 開発者向けお勧め Firefox エクステンション
[49]簡易タイマーとして利用できるブックマークレット
[50]ディオはザ・ワールドを発動した瞬間に自滅する[前編]

まとめ

2008 年 12 月 23 日のブログ開設から約 1 年間で合計 71 本の記事をアップしました。その中で、アクセス数の多かった記事には 2 つのパターンがあります。

まず 1 つは、年間 1 位だった「Twitter ボットの作り方」のように純粋な技術系の記事です。こういう系の記事は検索エンジンからの流入が主で、瞬発力はないものの長期間に渡って一定のアクセスがあります。
もともとこのブログはそういったロングテール的なアプローチを主として書いているので、そういう記事が 1 位になった事は嬉しかったですね。

もう 1 つは、瞬なネタを扱った記事です。2 位、3 位あたりがまさにそうで、検索からの流入はもとより、はてブやトラックバック、Twitter から記事に飛んでくる人が多いです。
ヒットすると爆発的なアクセスになる一方、飽きられるのも早いのでロングテールにはなり得ません。
例えば、先行していた 3 位の「ちんゃと よゃちめう?ジェネレータ。」と 1 位の「Twitter ボットの作り方」の総アクセス数を時系列でグラフに並べたら、ジェネレータは最初に急進した後、ほぼ横ばいの微増のグラフとなる一方、じわじわと Twitter ボットがアクセス数で追い抜いていく様子が見れると思います。

一方、アクセスが少なかったのは、技術系でもない、瞬なネタでもない、読み物系の記事です。
個人的には結構な自信作も混ざっているのですが、閑古鳥が鳴くケースが多いです。
これは、RSS リーダ等へ登録してもらっている数がまだまだ少ないからなのか、単に独りよがりで面白くない記事だからなのか、後者…ですかね?精進します。

そんなわけで、2010年も当ブログをよろしくお願いします。

Written by Otchy in: Information |

Powered by WordPress | Aeros Theme | TheBuckmaker.com