Google Chrome (BETA)からChrome Beta版をダウンロードしてインストールする(通常のChromeが2.0になったので普通に入手すればOK)- Chromeのショートカットの「リンク先」の最後に、" --enable-user-scripts"を追加する(「"C:\Documents and ... \chrome.ext" --enable-user-scripts」といった感じになる)
- 上記のショートカット経由でChromeを再起動する
- マウスジェスチャ for Chrome - Grieverか、Loox Uと初音ミクで行こう!: Google ChromeのUserscript版マウスジェスチャ完成からUser Scriptを入手する
- メモ代わり: Google Chrome グリースモンキーに書いてあるフォルダにScriptファイルを置く
2009年5月22日金曜日
Chromeでマウスジェスチャ by Greasemonkey (User Scripts)
User ScriptsはChrome2(現在Beta版またはDev版 正式リリースされた)から使える。
2009年5月13日水曜日
Firefoxのアドオン CustomizeGoogleを自分で SearchWikiに対応させる方法
やったことのメモ。
Firefoxは閉じてからやった方がよいと思う。
検索結果はli要素として表示されるが、そのclass属性が"g"から"g w0"に変わったことが原因だった。
「検索ツール」を使って再検索した場合など、class属性が昔ながらの"g"になる場合もある。
"w0"の意味は知らないので期待通りに動かないこともありそうだが、とりあえずこれで様子を見る。
Firefoxは閉じてからやった方がよいと思う。
- FirefoxのProfilesフォルダを開く
- extensionsフォルダの中からCustomizeGoogleのフォルダを探す
- chromeフォルダの中にファイル「customizegoogle.jar」があるので、これのバックアップをとっておく
(必須ではないが、念のため。) - customizegoogle.jarを解凍ソフトで開く(たぶん拡張子をZIPにすればWindowsの標準機能でも展開できると思う)
- contentフォルダの中にあるcustomizegoogleフォルダの中にあるファイル「javascript.js」をテキストエディタで開く
- 文字列「/li[@class='g']」を、全て「/li[@class='g' or @class='g w0']」に変換し、ファイルを上書き保存する
- contentフォルダ、localeフォルダ、skinフォルダをまとめてZIPにして、ファイル名を「customizegoogle.jar」にする
- 作った「customizegoogle.jar」を、3の同名のファイルのところに上書きコピーする
検索結果はli要素として表示されるが、そのclass属性が"g"から"g w0"に変わったことが原因だった。
「検索ツール」を使って再検索した場合など、class属性が昔ながらの"g"になる場合もある。
"w0"の意味は知らないので期待通りに動かないこともありそうだが、とりあえずこれで様子を見る。
PEAR::Services_Amazonで Product Advertising APIの電子署名認証を使うサンプル
PEAR::Services_Amazonから最新版(現在0.8.0)を入手する。
使い方は、SECRET KEYが必須になった以外は今まで通りでOK。
参考:Amazon Product Advertising API への対応(PHP版) - もやし日記
(2009/05/17 PEARコマンドの誤りを修正)
pear upgrade -a Services_Amazon-0.8.0
使い方は、SECRET KEYが必須になった以外は今まで通りでOK。
require_once('Services/Amazon.php');
//Services_AmazonECS4ではなく、Services_Amazonの方を使う
$amazon = new Services_Amazon('ACCESS_KEY', 'SECRET_KEY');
//Base URLをhttp://ecs.amazonaws.jp/onca/xmlにする
$amazon ->setLocale('JP');
//デフォルトは現在最新の"2009-03-31"
//$amazon ->setVersion('2009-xx-xx');
$res = $amazon ->ItemSearch('Books', array(
'Keywords' => 'Ruby on Rails',
'Sort' => 'daterank',
'ResponseGroup' => 'Small,Images',
));
参考:Amazon Product Advertising API への対応(PHP版) - もやし日記
(2009/05/17 PEARコマンドの誤りを修正)
PHP 5.3 RC2に無いエクステンション
PHP5.3 RC2(Windows版)で確認したところ、下記のエクステンションが無いことが気になった。
でも、MCryptもPDOもZIPもできたので問題無かった。
PHP本体に取り込まれた?
- php_mcrypt.dll
- php_pdo.dll
- php_zip.dll
でも、MCryptもPDOもZIPもできたので問題無かった。
PHP本体に取り込まれた?
Windows用の Freeのサーバ監視ツール HealthMonitor
Windows用のオープンソースのサーバ監視ツール、HealthMonitor3.1についての調査メモ。
情報が少ないのは何故?

ライセンス
インストール方法
主な監視対象
異変を察知した時に実行できること
その他
感想
HealthMonitor3.1の紹介記事(本家サイトへのリンクはリンク切れ)
本家サイト(SourceForge.net: HealthMonitor)
現行サイト(HealthMonitor Web Site - Welcome to HealthMonitor)
情報が少ないのは何故?
ライセンス
- GPL(v2)
インストール方法
- インストーラに従うだけ
- .NET 1.1が入っていない場合は親切にダウンロードするよう導いてくれる
主な監視対象
- HDD残容量
- CPU使用率
- メモリ残容量
- Windowsのイベント(イベントID、メッセージ等でフィルタリングできるようだ)
- Windowsのサービス
- Ping、HTTP、FTP(これらについては他のサーバの監視もできるようだ)
異変を察知した時に実行できること
- メールで通知する(メールの内容は設定できない)
- スクリプトを実行する(vbsファイルやbatファイル。パラメータとしてSubject、Messageを渡すことができる)
その他
- 各監視項目について、On/Offを設定できる
- チェックするタイミングは秒単位で設定できる。デフォルトでは10分に1回
- ログはDB(MS SQL Server、MySQL、MS Access(!))にも出力できるが、デフォルトではDBに出力しない
- 異変が起きたとき
感想
- 導入がとても簡単
- 設定も簡単。GUIが直感的で使いやすい
- スクリプトを実行できるのが便利
- スクリプト側で、どの異変が起きたかを判断するのは少し面倒そう(メッセージを見比べたりとか)
- Windowsのイベント、サービスも監視できるのがよい
- HTTP等についてはローカル以外も監視できそう
HealthMonitor3.1の紹介記事(本家サイトへのリンクはリンク切れ)
本家サイト(SourceForge.net: HealthMonitor)
- バージョン3.1まではここを根城にしていたようだ
- 現在はもうメンテナンスされてない
- 現在でもバージョン3.1まではこちらで入手可能
現行サイト(HealthMonitor Web Site - Welcome to HealthMonitor)
- こちらはバージョン4からサイト(最新バージョンは6)
- 有償だが、機能限定のFree版もあるようだ
2009年5月7日木曜日
PHPマニュアルの比較
数字はGoogle検索結果の順位。
上位15件の中ではzapa.netが便利。
ちなみに、PHPマニュアルの著作権についてはPHP: 著作権 - Manualに書いてある。
上記ページにある"Creative Commons Attribution 3.0 license"の日本語訳はCreative Commons Attribution 3.0 Unported。
- search.net-newbie.com PHP マニュアル
- 更新日:2009-01-02
- 見た目:ダウンロードしたマニュアルそのまま
- php.benscom.com PHP: PHP マニュアル - Manual
- 更新日:2009-03-27(最新)
- 見た目:php.netと同じ
- マニュアルだけでなく、php.net全体のアンオフィシャル・ミラー
- zapanet.info PHPマニュアル:ZAPAnet
- 更新日:2008-03-27(最新)
- 見た目:カラフルで見やすい
- サイト内検索あり
- (マニュアルじゃないサイトなので割愛)
- manual.xwd.jp PHP: PHP マニュアル - Manual
- 更新日:2006/10/31
- 見た目:ダウンロードしたそのままより、少し見やすい
- サイト内検索あり
- php.atpedia.jp PHPマニュアル検索@pedia
- 更新日:2008-04-11
- 見た目:ダウンロードしたマニュアルほぼそのまま
- サイト内検索あり。関数検索とかもできる
- フッターにSEOっぽいリンクがある
- phpspot.net PHPマニュアル
- 更新日:2006/01/20
- 見た目:ダウンロードしたそのままより、少し見やすい
- マニュアル全文検索あり
- ヘッダーとフッターに関連サイトへのリンクがある
- (下記www.phppro.jpの親ページ)
- www.phppro.jp PHP マニュアル - PHPプロ!マニュアル
- 更新日:2009-02-13
- 見た目:まあまあ見やすい
- サイト内検索あり
- ヘッダー・左サイドバー等にサイト内の別コンテンツへのリンクメニューがある
- php.s3.to PHP マニュアル
- 更新日:2008-05-09
- 見た目:ダウンロードしたマニュアルほぼそのまま
- トップページに少しだけサイト内へのリンクがある
- (上記php.s3.toの全文検索機能)
- jp2.php.net PHP: PHP マニュアル - Manual
- 本家!
- onur.profcode.com PHP マニュアル / 日本語PHPマニュアル
- 更新日:2008-05-16
- 見た目:ダウンロードしたマニュアルそのまま
- スポンサードリンクあり
- www.phpmanual.jp PHP マニュアル
- 更新日:2006/01/20
- 見た目:ダウンロードしたそのままより、少し見やすい
- フッターにSEOっぽいリンクがある
- aym.pekori.to PHP マニュアル:PHPマニュアル
- 更新日:2006/05/06
- 見た目:ダウンロードしたそのままより、少し見やすい
- サイト内検索あり
上位15件の中ではzapa.netが便利。
ちなみに、PHPマニュアルの著作権についてはPHP: 著作権 - Manualに書いてある。
上記ページにある"Creative Commons Attribution 3.0 license"の日本語訳はCreative Commons Attribution 3.0 Unported。
Google Maps APIの InfoWindowが仕様変更されてた
いつの間にかGoogle Maps APIに仕様変更があったようで、openInfoWindowHtml()をした直後に、情報Window内のエレメントにアクセスすることができなくなった。
それまでは、こんな感じでアクセスできた。
情報Windowが表示されたらイベントがFireするので、それをListenするようにしたら解決した。
参考:
Google Maps API リファレンス - Google Maps API - Google Code
infowindowopen
それまでは、こんな感じでアクセスできた。
gmarker.openInfoWindowHtml('<a href="foo" id="bar">baz</a>');
var bar = document.getElementById("bar");
情報Windowが表示されたらイベントがFireするので、それをListenするようにしたら解決した。
gmarker.openInfoWindowHtml('<a href="foo" id="bar">baz</a>');
GEvent.addListener(gmarker, "infowindowopen", function(){ ... });
参考:
Google Maps API リファレンス - Google Maps API - Google Code
infowindowopen
PEAR::HTTP_Client 非徹底解剖
PEAR::HTTP_Clinetがget()する時の、主にコネクションを確立するまでの大まかなfunctionの流れ。
HTTP_Client#get()
↓
HTTP_Client#_performRequest()
↓
HTTP_Request#sendRequest() ※1
↓ ↓ ※2
↓ Net_Socket#connect() ※3
↓ ↓ ↓
↓ ↓fsockopen()
↓ ↓ ※4
↓ socket_set_blocking() ※5
↓
HTTP_Response#process() ※6
↓
ソケット経由で得たレスポンスを処理していく
(以下省略)
※1 将来的にはHTTP_Request2に切り替える可能性が高いと思われる
※2 URLのスキームがhttpsの場合は、ホスト名は「ssl://ホスト名」に、そうでない場合はIPアドレスに変換される
※3 ちなみにHTTP_Request2の場合、自前のSocketクラス(HTTP_Request2_Adapter_Socket)を使っている
※4 もしこのあたりでNet_Socket#enableCrypto()を使えばSSLのバージョンを指定できるけど、使っていない
※5 stream_set_blocking()のエイリアス。この流れの中ではデフォルト設定のままなので、常にブロッキングを有効にしている
※6 HTTP_Responseクラスは、HTTP_Requestのファイル(Request.php)内で定義されている
HTTP_Client#get()
↓
HTTP_Client#_performRequest()
↓
HTTP_Request#sendRequest() ※1
↓ ↓ ※2
↓ Net_Socket#connect() ※3
↓ ↓ ↓
↓ ↓fsockopen()
↓ ↓ ※4
↓ socket_set_blocking() ※5
↓
HTTP_Response#process() ※6
↓
ソケット経由で得たレスポンスを処理していく
(以下省略)
※1 将来的にはHTTP_Request2に切り替える可能性が高いと思われる
※2 URLのスキームがhttpsの場合は、ホスト名は「ssl://ホスト名」に、そうでない場合はIPアドレスに変換される
※3 ちなみにHTTP_Request2の場合、自前のSocketクラス(HTTP_Request2_Adapter_Socket)を使っている
※4 もしこのあたりでNet_Socket#enableCrypto()を使えばSSLのバージョンを指定できるけど、使っていない
※5 stream_set_blocking()のエイリアス。この流れの中ではデフォルト設定のままなので、常にブロッキングを有効にしている
※6 HTTP_Responseクラスは、HTTP_Requestのファイル(Request.php)内で定義されている
Sinatra on Ruby on JRuby on Java on Google App Engine for Java
環境構築メモ。
Sinatraとは?
Google App Engine for JavaでSinatraを動かす
Datastore APIを扱う
所感
Sinatraとは?
- 分かりやすい解説 Sinatraで鼻歌まじりのWeb開発
- 本家 Sinatra
Google App Engine for JavaでSinatraを動かす
- Javaが未インストールの場合はダウンロードしてインストールする。
- GAE/JのSDK(PythonのGAEとは別)もダウンロードして展開しておく。
- あとは、System.Exit - Sinatra が Google App Engine で動くまでを参考にして進める。
Datastore APIを扱う
- bumbleを使えばできるらしい
- 参考
所感
- Sinatraは素敵だが、こんな準備が必要なら素直にPythonで書いた方が楽そうだ
Google App Engine 調査メモ
リファレンス
Tips
- 本家リファレンス(トップページ以外は英語)
デベロッパー ガイド - Google App Engine - Google Code - 和訳?
【祝完了】 オレの和訳にオマエが泣いた - Google App Engine - 暗号、数学、時々プログラミング - リファレンスの和訳Wiki(未訳あり)
Google App Engine デベロッパーガイド 日本語訳 Wiki - トップページ
Tips
- 静的ファイルを扱う方法
Python Application Configuration - Google App Engine - Google Code - ローカル(SDK)のDatastoreをクリアする方法
dev_appserver.py --clear_datastore myapp
- ローカル(SDK)のdev_appserverの実行を止める方法
Ctrl + Break
- ローカル(SDK)の管理機能(Webインターフェイス)
http://localhost:8080/_ah/admin/datastore
- アップロードする際にコマンドのパラメータとしてメールアドレスを渡す方法
appcfg.py --email=Albert.Johnson@example.com update myapp/
- Djangoのテンプレートを使う
Google App Engine テンプレートを利用する - ボトルネック解消
Big Sky :: Google App Engineでアプリを高速化する3つのtips
サーバサイドでHTTP POSTする PHPライブラリいろいろ
cURL
PEAR::HTTP_Request (もうメンテナンスモードになったらしい)
PEAR::HTTP_Request2 (まだα版(0.4.0))
PEAR::HTTP_Client (PEAR::HTTP_Requestをラップしていて使いやすい。現時点ではこれがベストか)
Snoopy (htmlsqlでも内部的に使われている、わりと有名なライブラリ)
Zend_Http_Client
CakePHP HttpSocketPEAR::HTTP_Request (もうメンテナンスモードになったらしい)
This package has been superseded, but is still maintained for bugs and security fixes. Use HTTP_Request2 instead.
PEAR::HTTP_Request2 (まだα版(0.4.0))
PEAR::HTTP_Client (PEAR::HTTP_Requestをラップしていて使いやすい。現時点ではこれがベストか)
Snoopy (htmlsqlでも内部的に使われている、わりと有名なライブラリ)
Zend_Http_Client
P2_Services_Base