Posts Tagged ‘google’
GoogleのJavaScriptコーディングスタイルチェッカー「Closure Linter」
GoogleではJavaScriptは特定のコーディングスタイルで統一されるようにClosure Linterという専用のスクリプトを使用しているそうです。
Google JavaScript Style Guide(Google JavaScript Style Guide 和訳)という規則に従ってjsのコードは書かれていて、その規則に沿っているかを確認するgjslintとその規則に合うように修正するfixjsstyleからなるスクリプトです。
インストール方法
How to Use Closure Linter – Closure Linter – Google Code
pythonで書かれているのでeasy_installを使ってインストールします。
まずはPythonをインストールしてなかったらインストールして、次にeasy_installコマンドを使うためにsetuptoolsを自分のPythonにあったものをインストールします。
WindowsならC:\Python26\Scriptsに環境パスを通せば、コマンドプロンプトからeasy_installが使えるようになるので、
> easy_install http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
と打ってたらインストールできます。(パス通してないならC:\Python26\Scriptseasy_install でも大丈夫)
*注意
現在配布されるやつはfixjsstyleがTypeError: ‘NoneType’ object is unsubscriptableのようになって動かないので、
> easy_install -Z http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
という感じでファイルを展開するオプションをつけてインストールしてから、/python2.6/site-packages/closure_linter-2.2.1-py2.6.egg/
closure_linter/fixjsstyle.py の36行目にargfとなってるtypoiがあるのでそれをargvにすれば動きます。
使い方
使い方は単純でHow to Use Closure Linter – Closure Linter – Google Codeを見ると分かりますが、
gjslint path/to/my/file.js fixjsstyle path/to/file1.js path/to/file2.js
のようにファイルやディレクトリを指定して実行するだけです。
–strictオプションやディレクトリに対してまとめてやる再帰オプションもあります。またGoogleのコーディングスタイルではJsDocを使う事になってるので、それを無視するオプションもあります。
fixjsstyleはE4Xとか特殊なものは認識してないっぽいので無理に書けると構文エラーを出すようになったりしますが、
Googleのコーディングスタイルはそこまで特殊ではないので、ちょっとした確認に使えたりして便利です。
JavaScriptの整形にはOnline javascript beautifier(これ自体がJavaScriptで書かれているのでEmeditorやNILScriptで動かせるgist: 453042 – クリップボードのJavaScriptコードを整形してクリップボードに返すNILScript – GitHub)とかと併用すると面白いかも。
- Introducing Closure Linter – Closure Tools Blog
- http://closuretools.blogspot.com/2010/08/introducing-closure-linter.html
Google Web Historyに見たページを自動記録するアドオン(Jetpack SDK)
GoogleにはGoogle – ウェブ履歴というものがあり、検索してどのページを訪ねたかなどが記録されています。
またその記録は検索ページで既読リンクの色にするなどの判定にも使われています。
Google検索から訪ねたサイト以外のURLもウェブ履歴に登録するFirefox拡張機能を作成してみました。
既に
などGreasemonkeyやTomblooパッチなど代わりになる手段は山ほどある気がしますが、Jetpack SDKを使いたかったのと、意外にもFirefoxアドオンとして同じ役割するものが見つからなかったので作ってみました。
他のスクリプトとの違いは大して無いと思いますが、できるだけ無駄な送信を控えるようにしています。
- 最近訪れたサイトは重複送信しない(100件ぐらいでクリアされます)
- https://はホストのみを送信
- ローカルやIPアドレスベースのURLの場合は送らない
ダウンロードはAMOからできるようにしてあります。
Firefoxアドオンのxpiを簡単における場所が無かったので、AMOに登録しておいてあります。
Jetpack SDKでコンパイル?前のソースコードはこちらに
Jetpack SDKで何か作るには
Jetpack SDKで既に3つほどアドオンを作成していますが、0.5だとJetpack prototypeとできることはそこまで変わってないです。(prototypeのギャラリー無くなったみたいですね。8個ぐらい作った気がする)
Jetpack SDKで作る上で参考にしたのは
- SCRAPBLOG : Jetpack 基礎的なAPIの使い方
- Jetpack SDK – あすかぜ・ねっと とても参考になる
- Jetpack SDK Docs
最後のJetpack SDK Docsはcfx docsで開いて、jetpack-coreあたりに現在使えるAPIが載っているのでそれを見て使い方を調べるとAPIの使い方は分かる感じ。(Jetpack prototypeの頃よりはドキュメントにサンプルもあってマシになりました)
一番ハマるところはcfxとかコマンドでエラーがでるとかその辺だった気がする。
環境はWindows Vistaです。
cfx testallすら通らない場合は-aとか-bオプションを指定してみるといい。 Jetpack SDK 0.4でcfx testallを成功させる方法 (windows) – Cherenkovの暗中模索にっき
毎回オプションを付けるのが面倒になったらlocal.jsonを作りデフォルト値を決めてみましょう。
自分はjetpack用のプロファイルを作りそれを指定してます
{
"configs": {
"default": [
"-a", "firefox",
"-b", "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
"-P", "%appdata%\\Mozilla\\Firefox\\Profiles\\h545wqkn.jetpack"
],
"ff37": [
"-a", "firefox",
"-b", "C:\\Program Files\\Mozilla Firefox 3.7\\firefox.exe",
"-P", "C:\\Users\\admin\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\testuser"
]
}
}
package.jsonを作り、libフォルダを作りmain.jsを書いて → さあcfx runで起動しようとしたら、まずはpackage.json内にidが自動生成されます。そしてもう一度cfx runすると下のようなエラーが出てくることがあります。
Traceback (most recent call last):
File "D:\jetpack\bin\cfx", line 6, in
cuddlefish.run()
File "D:\jetpack\python-lib\cuddlefish\__init__.py", line 475, in run
include_dep_tests=options.dep_tests
File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 267, in generate_bu
ild_for_target
add_dep_to_build(dep)
File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 254, in add_dep_to_
build
add_section_to_build(dep_cfg, "lib", is_code=True)
File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 232, in add_section
_to_build
validate_resource_hostname(name)
File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 65, in validate_res
ource_hostname
raise ValueError('invalid resource hostname: %s' % name)
ValueError: invalid resource hostname: jid0-英数字-フォルダ名-lib
これはpackage.jsonのnameに大文字やマルチバイト文字やスペースなどが含まれていると出てきます。(んなの分かるか)
なので小文字英数とハイホンあたりでnameを決めておきましょう。
console.logはコマンドプロンプトの方にでてくるので、それを使って(他に何かあるのかなー)デバッグしながらmain.jsなどを完成させて、xpiをcfx xpiコマンドではき出せば完成です。
まだ設定画面やパネルなどのGUIが簡単に使えなかったりしますが、用途が合えば簡単にアドオンを作成できるのでなかなか面白いです。
- Google WebHistory Updater :: Add-ons for Firefox
- https://addons.mozilla.org/ja/firefox/addon/213956/
Googleのマルチアカウント機能を有効化する方法
GmailやGoogle CalendarなどGoogleのサービスを、複数のアカウントで同時に使えるようになるMultiple Sign-In機能がリリースされたようなので使って見ました。
現在は以下のサービスでマルチアカウントがつかえるようです。
- Calendar
- Code
- Gmail
- Reader
- Sites
有効化する方法はEnabling multiple sign-in : Getting started – Accounts Helpに書いてあります。
簡単に有効化する手順を書くと
- アカウント情報を英語のインターフェースにする。
英語にしないと有効化できてないような気がします。
自分はiGoogle の設定から言語をEnglishにすることで変更できました。
- multiple sign-in settings page へprimary(主)となるアカウントでアクセスする
- 有効化を選んでチェックボックスに全部✓をいれてSaveする(この状態だと英語の説明文がでますが)
既に日本語訳もあったりしました。
- Saveしたら一度Googleからログアウトします。
- Google Readerなどのマルチアカウントが使えるサービスにログインし直すと、右上のアドレス部分に▼がついてので、そこから”別のアカウントでログイン”をクリックすると別のアカウントでもログインでき、一度ログインすれば切り替えも同じ所からできます。

Multiple Sign-Inは複数のアカウントの切り替えが簡単というだけじゃなくて、同時に複数のアカウントでログインできるので2つのタブで2つのアカウントを同時に使うなどが行えます。
人によってはまだ使えないかも知れません。Gmailが上手くできなかった…
でもGoogle Account Multi-Login for Greasemonkey みたいなGreasemonkey使わなくてもいいのでとても便利。
WordPressのパーマネントリンクを記事タイトルを英単語に翻訳したものにするプラグイン
ややこしいタイトルですが、Wordpressのパーマネントリンクには記事タイトルを元にした投稿スラッグを入れることができるので、日本語の記事タイトルだと日本語がそのままURLになるためあまり見栄えが良くありません。
そこで、記事タイトルを自動翻訳して英単語に直してからそれを投稿スラッグにするというプラグインを作ってみました。
これをダウンロードしてpluginフォルダにいれて有効にすると投稿スラッグが自動的に翻訳された単語を-でつなげたものになります。
具体例)
WordPressインストール後にまずやること という記事タイトルだった場合は
first-things-to-do-after-installing-wordpress という感じへ変換されます。(Google翻訳)
- wordpressで投稿の際のslugを英語だけに自動でする方法 – sugarbabe335
- http://d.hatena.ne.jp/sugarbabe335/20081218/1229609082
Googleの検索結果画面にTwitter検索の結果も表示するGreasemonkey(焼き直し)
Googleの検索結果画面にTwitter検索の結果も表示するGreasemonkeyスクリプトです。
以前、Twitter Search Results on Google for Greasemonkey [ http://userscripts.org/scripts/show/43451 ]を元に書いたものの焼き直しです。
- Googleの検索結果にtwitter検索の結果を同時に表示するGreasemonkey | Web scratch
- http://efcl.info/2009/0826/res1266/
少し似た目が変わったのと、その場でTwitter検索の結果を継ぎ足せるようにしたぐらいです。
インストールはこちらから
- Twitter search(ja) result on Google for Greasemonkey
- http://userscripts.org/scripts/show/65540
Twitter APIの回数制限をGAE上のプロキシで回避する方法
Twitter API proxyをGoogle App Engine上で動かす方法
プロキシの必要性
プロキシを経由してAPIにアクセスすると何がいいのか
- TwitterのAPIはアカウント&IPアドレスでカウントされているので、APIの使用回数を増やせる。
グローバルIPアドレスをPCごとに変えられない環境で2台のPCから見るときに便利 - Twitterへのアクセスが制限されている環境でも使用できる。
元々GFW(グレート・ファイアー・ウォール)を超えるために作られたっぽい - ちゃんと確認してないけど、GAEはホワイトリストに入ってる気がするので、API回数が20000になったりする事もある。
要はAPI使用回数を増やせるよって話。
必要なもの
- Google App Engineのアカウント
- Google App Engine SDK とPython実行環境
- birdnest 一式のファイル(Python)
まずはGoogle App Engineのアカウントを作成します。(すでに持ってる人は、新しいアプリケーションを作成するだけ)
Google App Engineのアカウント登録とアプリ作成 – 130単位 を参考にアカウントとアプリケーションを作成します。
このときのアプリケーションのIDは後で必要になるので控えといて下さい(Google App Engineのページにアクセスすればいつでも見られるけど)
次に開発環境 – Google App Engine – Google Codeを参考にPythonの実行環境とSDKをダウンロード&インストールします。(ここも既にやってる人はスルー)
Pythonは2.5が推奨されているのでできればそちらをダウンロードした方がいいです。(一応2.6でも動きました)
次に今回、Google App Engine上で動かすプロキシのスクリプトである、birdnestをダウンロードします。
http://birdnest.googlecode.com/svn/branches/gae/ 以下のファイルを全部ダウンロードするのですが、そのままだと面倒なので、
【第17回】EclipseでSubversion – Tech [Friday] プロモバイルエンジニアブログ などを参考にEclipseを使ってSVNをチェックアウトしてまとめてダウンロードしました。
これらのファイルを先ほど作成したアプリケーションID名のフォルダを作りその中に入れておきます。(これは説明を統一するためなので絶対必要な操作ではないかも)
アプリケーションのIDがtwitproxyならtwitproxyというフォルダを作りその中に入れる。
ファイルの編集
ダウンロードしたapp.yamlを編集する必要があります。
一行目のアプリケーション名を先ほど控えてた自分が作成したGoogle App EngineのアプリケーションIDに変更します。
application: アプリケーションのID
テスト&アップロード
Pythonが入っていれば、コマンドプロンプトでPythonと打ち込むとバージョンが表示されます。(エラーになる場合はPython周りがおかしい)
まずは動くかどうかをテストします。
GAEではローカルでテストするためにSDKにサーバがあるのでそのスクリプトを起動して確認します。
同じくコマンドプロンプト上で、
Python "C:\Program Files\Google\google_appengine\dev_appserver.py" 先ほど作成したフォルダへのパス
と打ち込んだ状態(コマンドプロンプトは閉じない)でhttp://localhost:8080/にアクセスとページが表示されると思います。
この上でTwitterクライアントのAPIURLをhttp://localhost:8080/api/ にして使えるか確認できるといいです。
Google App Engineを使ったTwitterBotの作り方 – 星屑日記 を詳しく読むといいかも。
アップロード
次に編集したファイルをGAEにアップロードします。
先ほど同様にコマンドプロンプト上から
Python "C:\Program Files\Google\google_appengine\appcfg.py update 先ほど作成したフォルダへのパス
と打ち込むとアップロードが始まります。
そしてhttp://アプリケーション名.appspot.com/にアクセスしてテストの時と同じページが表示されればアップロードは成功です。
実際にプロキシとして使用する
Echofonをインストールしてextensionフォルダに行きます
vista
C:\Users\ユーザー名\AppData\Roaming\Mozilla\Firefox\Profiles\eプロファイル名\extensions\twitternotifier@naan.net\components
XP
C:\Documents and Settings\ユーザー名\Application Data\Mozilla\Firefox\Profiles\プロファイル名\extensions\twitternotifier@naan.net\components
ここにあるnsTwitterFox.jsを編集します。
var TWITTER_API_URL = “http://アプリケーション名.appspot.com/api/”;
と変更すると、GAE上で動いているプロキシを通してAPIにアクセスすることができます。
基本的にAPIのURL指定を変更できるソフトなら同じ方法でプロキシを通してアクセスできる。
海外のクライアントだとAPIを指定できるソフトも多いです。
Spazの場合だと設定画面にBase API URLを指定できるので、同じようにhttp://アプリケーション名.appspot.com/api/を入れればプロキシ経由で使用できます。

設置が凄い面倒でセキュリティを気にしない人は
birdnest – a twitter api proxyを同じように使えるかもね。
以下参考
- birdnest – Project Hosting on Google Code
- http://code.google.com/p/birdnest/
- How to set up Twitter API Proxy with Google App Engine | Bruce Yo’s Blog
- http://www.bruceyo.info/archives/402
- Google App Engineを使ったTwitterBotの作り方 – 星屑日記
- http://d.hatena.ne.jp/intheflight/20090611/p1
2chをGoolgeから検索する検索プラグイン
- Googleを使って2ちゃんねるの中を検索する方法 | nanapi[ナナピ]
- http://r.nanapi.jp/379/
これを見てそういえば掲示板機能なんて合ったのを思い出したので、検索バーから一発で検索できるようにFirefoxの検索プラグインを作りました。
- Ready2Search(2ch検索) 日付順
- Ready2Search(2ch検索) 関連度順
使ってみてもそこまで精度はよくないので、ちゃんと調べる場合は2ちゃんねる検索 のほうがいいかな。
「RefControl」でリファラを偽装しておくべきサイト
RefControlというアドオンを使う事でURL毎に、リファラを阻止や偽装することができます。
偽装までしなくても阻止すれば問題ないサイトも多いです。
このアドオンを使ってリファラを阻止、偽装しておくべきサイトのメモ
URLのリストはインポートできるので、インポートするのが一番楽です。

- refcontrol.txt をインポート
RSSリーダから画像を表示するためにリファラを偽装、阻止するサイト
- blogs.yahoo.co.jp
- fc2.com
- image.itmedia.co.jp
- plusd.itmedia.co.jp
AmazonはGoogleからのリファラを見て、商品説明の上部に検索結果を表示するようになったためリファラを偽装しています。
- www.amazon.co.jp
Googleの検索結果にtwitter検索の結果を同時に表示するGreasemonkey
Googleの検索結果画面にTwitter検索の結果も表示するGreasemonkeyスクリプトです。
Twitter検索は@penguinanaの方を使ってるのでより日本語に適したものが返ってくると思います。
Twitter検索はほぼリアルタイムで流れているのでより即時性の高い検索結果が見られるので便利です。
検索結果に表示するTweetsの数は各自編集してください。
デフォルトだと5件表示します。
Google Readerのプリフェッチを調節するGreasemonkey
今回はただの紹介です。
Google Readerのプリフェッチ(先読み)の値を変更するGreasemonkeyスクリプトです。
プリフェッチを変更すると何がうれしいのかというと、現在のデフォルトの値はあまり大きくないので、
記事を飛ばしていくと詰まった感じになるため、先読みの値を増やすことでそれを軽減できます。
同じようにスクロールでカクカクする現象も軽減できるそうです。
- Google Reader Prefetch More for Greasemonkey
- http://userscripts.org/scripts/show/26383
スクリプトのデフォルト値は少し読み込みすぎてる気がするので、自分のパソコンと相談して適当な値にするといいかも。
var first = 25; // default is 5 var next = 15; // default is 1 var list = 60; // default is 20



![sshot-2009-08-26-[17-18-14] sshot-2009-08-26-[17-18-14]](http://efcl.info/wp-content/uploads/sshot-2009-08-26-17-18-14-150x150.png)

