2008年11月3日

Mac OS X 10.5(Leopard)でscreenを使う時の注意

結構はまっている人がいるのでメモしておく。 以下みたいなエラーメッセージが出る人向け。
Returning nil _server
Timed out. AquaSKKServer.app didn't get online.
terminate called after throwing an instance of 'exception_CFMessagePortCreateRemote'
  what():  AquaSKK: CFMessagePortCreateRemote() failed
原因はLeopardにインストールされているGNU Screenにあたっているパッチが変。 解決方法は別のscreenをインストールすること。Finkなら以下にする。
sudo fink install screen
これで解決する。

2008年10月25日

Terminal上でのPythonのコード補完

コードの補完ができると結構便利です。
コード補完の設定は Python チュートリアルのキー割り当て に記述があります。
readlineの機能を利用します。
$HOME以下に.pystartupのような名前で以下のファイルを作成します。

import atexit
import os
import readline
import rlcompleter

historyPath = os.path.expanduser("~/.pyhistory")

def save_history(historyPath=historyPath):
    import readline
    readline.write_history_file(historyPath)

if os.path.exists(historyPath):
    readline.read_history_file(historyPath)

atexit.register(save_history)
readline.parse_and_bind('Tab: complete')
# Mac OS X 10.5(Leopard)のデフォルトの場合のみ以下
# readline.parse_and_bind ("bind ^I rl_complete")

del os, atexit, readline, rlcompleter, save_history, historyPath
.bashrc等に以下を記述します。
export PYTHONSTARTUP=${HOME}/.pystartup
Mac OS X 10.5(Leopard)のreadlineはGNU readlineでないです。
GNU readlineと同様の動作にしたい場合は他からGNU readlineをインストールする必要があります。
Finkの場合は readline5-shlibs をインストールした後で Python の readline モジュールをインストールする必要があります。
sudo fink install readline5-shlibs
curl -o http://pypi.python.org/packages/source/r/readline/readline-2.5.1.tar.gz
tar zxvf readline-2.5.1.tar.gz
cd readlien-2.5.1
sudo python setup.py install
ためしにPythonインタプリタをTerminalで起動して以下の動作をためしてみてください。
import os
os.<TAB>
コード補完が効くようになります。

2008年10月18日

Alert! Cover was previously removed.

久しぶりにDellサーバのメモリ交換とかやったら「Alert! Cover was previously removed.」とか出た。
なんだっけ?という感じになってしばらく悩んでしまったのでメモしておく。
これはメモリ交換なんのためにカバーを開けた後で発生する警告メッセージ。
起動すると「F1でSKIP起動するかF2で設定しやがれ」という警告がでる。
F2で設定しないと毎回警告でやがるので、F2で設定することに。
設定の「System Security」で「Chassis Intrusion」を選択し、「Disabled」になっているのを「Enabled」か「Enabled-Silent」に変更すれば警告はでなくなる。

カバー開けたら設定しないとけいないので注意。

2008年10月6日

Mac OS X 10.5 で crochet を動かしてみる

crochetとは@showyouが作成している、Twitter用クライアント。
Pythonで作成されている。

以前も動作させたことがあるのだけどメモってなかったので今回は動かすまでをメモしておく。
参考にするサイト
crochet紹介 - Showyou@hatena Mac で crochet というか wxPython で作られたアプリを動かすお話 - yano3の日記
wxPythonのインストール
http://sourceforge.net/projects/wxpython/
http://downloads.sourceforge.net/wxpython/wxPython2.8-osx-unicode-2.8.9.1-universal-py2.5.dmg

バイナリなのでダブルクリックすれば良い。
simplejsonのインストール
http://code.google.com/p/simplejson/
http://pypi.python.org/pypi/simplejson

tar xvfz simplejson-2.0.1.tar.gz
cd simplejson-2.0.1
sudo python setup.py install
PILのインストール
http://www.pythonware.com/products/pil/
tar xvfz Imaging-1.1.6.tar.gz
cd Imaging-1.1.6
sudo python setup.py install
crochet
svn export -r HEAD http://svn.coderepos.org/share/lang/python/crochet
cd crochet
.chat/twdata の中にユーザ名とパスワードを設定して起動する。
./chat_all.py
起動して、投稿まではできた。

で、本当の目的は
エラー - showyouの日記とhamaの成長記録 - はてなグループ::ついったー部
に記述のある内容の再現と調査だったのですが、こういう時にかぎって再現しねー
AquaSKKが起動してると落る現象と、終了するとPy_Finalizeよばれる所でエラーの出る現象は出たけどcrochetの問題ではないような。
とりあえずしばらく動作させないと再現しなそう。

2008年9月28日

tubuyakix.user.jsに文字数カウント機能をつけてみた

公開場所:スクリプト公開エリア
ライセンス:GPL3
動作確認環境:Firefox3 + Greasemonkey 0.8.20080609.0以上

Twitter、nowa、Wassrへの投稿に対応したグリモンのtubuyakix.user.jsに文字数カウント機能をつけてみました。
自分の投稿文字数がわかるほうが良いのでTwitterの仕様に合せて作成しました。
結構便利だと思います。

2008年9月21日

Macで書籍のISBNを読み取る

ISBNをMacに直接読み取らせることができれば書籍の管理が格段に簡単になります。

最近のMacにはiSight、つまりカメラが内蔵されていますので、結構簡単にISBNを読み取らせることができます。

Barcode scanner を利用すれば、バーコードリードの機能部分は簡単に利用することができます。

ソースコード形式なのでコンパイルが必要です。

barcodescanner.zip
unzip barcodescanner.zip
cd BarcodeScanner
xcodebuild
これで build/Release 以下にアプリケーションが作成されますので、ダブルクリックして起動します。

手近にある書籍のISBNを読み取らせてみましょう。
結構簡単に読み取れます。読み取りミスは多少あります。
こうした機能を内蔵した書籍管理ソフトも存在していますので探してみると良いでしょう。

2008年7月26日

CodeRepos

CodeReposにアカウント登録していただきました。
http://coderepos.org/share/wiki/Committers/sakito

アカウント申請は htpasswd コマンドで生成した結果をそのままメールに添付して申請しました。

アカウントのログインができた後、まずは、以下の事を実施しました。

http://coderepos.org/share/prefs
に行き「Full name」と「Email address」を設定。メールアドレスはsvnリポジトリのRSS Feedに流れるようです。

http://coderepos.org/share/prefs/datetime
で「GMT +9:00」に設定しました。

コミッタアカウントwikiページに何か書いておきます。
http://coderepos.org/share/wiki/Committers/sakito
とりあえず自分の情報がわかるURLを書いておけば良いかと思います。

アイコンがあると楽しいのでアイコンの設定をします。

svn co http://svn.coderepos.org/share/websites/coderepos.org/trac/share/js/TracUtils.js
して TracUtils.jsの中をみます。見ればわかると思います。
はてなのアカウントをもっている場合は設定は簡単です。

svn ci http://svn.coderepos.org/share/websites/coderepos.org/trac/share/js/TracUtils.js
コミットメッセージを必ず書きましょう。
コミットメッセージはルールがありますが一番簡単にやる場合は svn logを見て既存の書き方に倣うのが良いかと思います。極力丁寧な方を参考にします。

とりあえずこんな感じにしてみました。後はいろいろ他の人の物見ながらやってみます。

2008年7月12日

TwitterとnowaとWassrへの投稿に対応したグリモンバージョンアップ

公開場所:スクリプト公開エリア
ライセンス:GPL3
動作確認環境:Firefox3 + Greasemonkey 0.8.20080609.0

Twitterとwassrとnowaへの投稿に対応したグリモンスクリプトを公開します。
全部のアカウントをもっている必要はありません。nowaだけへの投稿等も可能です。
今回はアカウント情報設定UIを作成しました。
利用したくないアカウントは空白のままにしておけば無視されます。

アカウント情報の入力などは、信頼できるサイトを表示の上実施してください。

バグに気づいたらコメントなどいただけるとありがたいです。

2008年7月7日

TwitterとnowaとWassrにクロスポストするグリモン

公開場所:スクリプト公開エリア
ライセンス:GPL3
動作確認環境:Firefox3 + Greasemonkey 0.8.20080609.0

tiwtx.user.jsを改造して作成してみました。今の所ファイルにパスワードを 直接書く必要があるという悪辣な仕様になっていますが作成時間が不足してい るためです。ご了承ください。

作成中はまった所。
WassrはAPIをHTTPS経由で叩こうとしたら不正はSSLと言われてしまうようです。
GM_xmlhttpRequestが動かないようなので、HTTPで更新するようにしました。

nowaはAPI仕様書が公式サイトでなくてWikiの方にあり、それが公式な文書なのか良くわかりませんでした。

あとナニシテルを発言 / updateには以下の二種類が書いてあるのですが、

https://api.nowa.jp/status_message/update.json [Basic Auth]
https://api.nowa.jp/statuses/update.json [Basic Auth]

https://api.nowa.jp/statuses/update.json の方では発言が更新されませんでした。同じスクリプトで入れかえているだけなのになぜなのか不明。

2008年6月18日

Google ブック検索用の検索プラグインを作成した

Google ブック検索( http://books.google.co.jp/ ) 用の検索プラグインを作成しました。
スクリプト公開エリアに公開しています。

ついでなので Hamachiya2の20080616のエントリーを参考にbadongoをGoogleで検索するプラグインを作成してみました。

各XMLのリンクをクリックすると自動インストールするか確認して来ますので承認するとインストールされます。削除するには検索窓からの検索プラグインの管理画面を開いて削除してください。


Google Page Creatorでリンクをクリックして自動インストールする設定は以下のようなJavaScriptをopensearch.jsの名前で作成して、アップロードしておきます。

function addOpenSearchProvider(engineURL) {
  try {
    window.external.AddSearchProvider(engineURL);
  } catch (e) {
    return false;
  }
  return true;
}

以下のようなscriptタグをタイトルが書いてあるあたりのエリアに貼ります。

<script type="text/javascript" src="opensearch.js"></script>

リンクさせたい位置で以下のように記述します。XMLはフルパスで指定します。

<a href="javascript:void(0)" onclick="addOpenSearchProvider('http://sakitodraftdoc.googlepages.com/veoh.xml')">veoh.xml</a>

これで自動インストール設定ができます。

一般的には link rel="search" を指定したlinkタグで指定するのですが、これはGoogle Page Creator上では上手く動作しないようです。

検索プラグインは他にも作成したい物がまだあるので作成しだいアップしておきます。
現在重複とか気にしてないので同じ物がどっかにあるかもしれません。

2008年6月14日

テンプレートがAutoPagerizeに対応してなかったので対応した

このBlogで利用しているテンプレートはLDRizeは対応してたが、AutoPagerizeに対応してなかったので対応した。 結構いいかげんに対応しているけどまあ、こまらないレベルだと思う。 次のページのリンクが記述してある a 要素に
rel="next"
次のページを繋げたい div 要素に
class="autopagerize_insert_before"
繋げたい部分の要素に
class="autopagerize_page_element"
指定を変な所に書くとレイアウトが崩れたり、2ページ目から表示されたりするので十分自分でテストするようにしてください。

Firefoxの検索プラグインを作成する

Firefoxの検索プラグインは2種類の形式で作成できるようですが、OpenSearch形式の方で作成してみました。 Veohの検索を実施する検索プラグインをつくっています。すでに存在するのであまり意味ないのですが、とりあえず学習用です。 Vehoでは
http://www.veoh.com/search.html?type=&search=検索用語
でVideoの検索ができます。よって以下のようにすると検索できます。
<Url type="text/html" method="GET" template="http://www.veoh.com/search.html?type=&amp;search={searchTerms}"/>
ソートを変更して検索する事はできないようですので検索結果画面でソートを変更するしかないみたい。 作成したものはスクリプト公開エリアに公開しておきます。 自動インストールできる設定がうまく効いてないみたいなので自動インストールできません。 検索プラグインでほしい物があるので、これを元に作成してみたいと思います。

2008年5月31日

MacのFirefoxでTabキーを押してもボタンに移動しないのを解決する方法

tiwtx.user.js を作成した後人に指摘されたのだけど、WinのFirefoxだと TextareaからTabキーを押すとボタンに移動するが、MacのFirefoxだとロケー ションバーに移動すると言う話。 tiwtx.user.jsはTabキーで移動できないとウィンドウが結構すぐ閉じてしまう 仕様になっているので不便だという。 これはMac版Firefoxでは Safariのデフォルトに合せている関係で、Tabキーでの移動は、テキストボックスとリストのみになっている。 これを変更するには以下のドキュメントに記述のある通りに設定すれば良い。 http://www.mozilla-japan.org/kb/solution/2041
  1. Mac OS X のシステム環境設定を開く
  2. [キーボードとマウス] を選択
  3. [キーボードショートカット] タブを選
  4. [フルキーボードアクセス] の項目で [すべてのコントロール] を選択
  5. Firefox を再起動
これで問題なくなる。

Google Page Creator を調べる

とりあえずでスクリプトとか公開する場所としてGoogle Page Creatorでページを作成している(http://sakitodraftdoc.googlepages.com/ )。 そんなに機能があるわけではないがアクセス解析ぐらいはしないと、アクセスしてくる人の要望に答える事ができないので調べてみた。 だいたいのやりたい事はFAQに書いてある。というか機能が限定されていて書いてあることしかできない。 Google Page Creator でトラッキング コードを追加するにはどうすればよいですか。 上の書いてある方法を使えば広告とかも貼れる。JavaScriptがはれるなら他にもいろいろできるだろう。 まだ独自ドメインに転送したりはできないようだ。Bloggerでできるのだからできるようになるのではないだろうか。 期待だけしてまっておく。

2008年5月29日

tiwtx.user.js 20080529版

公開場所:スクリプト公開エリア ライセンス:GPL3 動作確認環境:Firefox3 RC1+ Greasemonkey 0.8.20080505.0 昨日公開した物から基本的には変化はないですが細かい部分を修正しています。変更点は以下になります。
  • 投稿中に出るloadingイメージがGPLに合致するか不安だったので完全に合致する画像に差し替えました
  • 認証時scriptタグを作成するのですが、作成後消さない動作だったので消すようにしました
認証を毎回するのが良いのかとか、Greasemonkey的良いやり方をまだ知らない部分があるとか、他にもいくつか問題があるので徐々に修正していくつもり。

2008年5月28日

tiwtx.user.js 20080528版 Firefox3に対応しました

公開場所:スクリプト公開エリア ライセンス:GPL3 動作確認環境:Firefox3 RC1+ Greasemonkey 0.8.20080505.0 Firefox3 になってから認証ダイアログが出ない問題を解消したバージョンです。変更点は以下になります。
  • バージョン番号を表示するように変更
  • verify_credentials.json を利用して認証するように変更
まだ動作的に不満な所もありますし、動作確認をあまり多くの環境でやってないのでエラーがでる可能性もあります。 無保証ですのでご利用はご注意ください。

2008年5月26日

Firefox3のXMLHttpRequestで認証ダイアログが出ない現象に関して

そもそも認証ダイアログが出ることが Firefox2までの仕様上のバグとして扱われている模様。 Firefox3の特権付XMLHttpRequestは(POSTの場合)バックグラウンドで実行され認証ダイアログなどがデフォルトで出ない - 0x集積蔵

一般的な回避策は XMLHttpRequest#mozBackgroundRequest をfalseにすれば良い

という事らしいがこれは現在のGreasemonkeyからは変更することはできない。 よって別の対策が必要となる。 対策はFirefox 3でまた見てる - むぅもぉ.jpと同じことをするのが近道の模様。 とりあえず手元では動作するが、このままだとライセンス上まずそうなので、オリジナルコードに差し替え中。 あまり時間が取れないのでちゃんと差し替えられるかは今の所不明。 tiwtx.user.jsのFirefox3完全対応はとりあえず今週中に公開する予定。

2008年5月25日

tiwtx.user.js 追記

昨晩アップロードした物にミスというかバグがあったので修正しました。 tiwtx.user.jsですが、元と名前を変更しているのはオリジナルが更新された場合に混乱が発生しないようにするためです。 ブラウザ上での色や表示位置も変更してありますのでご了承ください。 昨日のエントリーの補足もしておきます。 オリジナルのtiwt.user.jsがFirefox3で動作しないというのは、正確にはFirefox3で動作するGreasemonkey最新版(SVN先端版)で動作しないという意味です。 昨日のエントリーでjsの自動インストールができないと書いてありますが、Google Pagesでアップロード直後は上手く動作しなかったのですが、しばらくしたら自動インストール可能なようです。

2008年5月24日

tiwt.user.jsの改造版

tiwt.user.jsというのは FirefoxのGreasemonkeyで動作するスクリプトでtwitterへの投稿をFirefoxから行なえます。 以下で配布しています。 System.Exit - tiwt.user.js このスクリプト便利なのですがFirefox3では動作しないようです。 前からいろいろ直したい所もあったのでこの際なので改造してみる事にしました。 Twitter / jugyo: @sakito えっと、じゃあ、GPL ということでお願いします 09:44 AM May 19, 2008 とGPLの旨の確認が取れたので変更した物をGPLで公開します。 改造したい所はいくつかありますが、まず改造したかったのは、85行目の画像部分です。 通常Greasemonkey内で画像を利用する場合は Base64化して埋めこむのが普通ですので以下のようなコマンドを実行してBase64化して画像埋め込みにしました。
openssl base64 -e -in loader.gif | tr -d '\n'
あと、入力欄に今見てるサイトのURLが出るのはあまり利用しないので、空白にしました。 とりあえずこの変更だけした物をtiwtx.user.jsに公開しておきます。自動インストールはできないのでダウンロード後Firefoxにドラッグドラップして自分でインストールしてください。 追記:このエントリーには追記があります。tiwtx.user.js 追記 追記(2008/05/26):この版はFirefox2でしか動作しません。

Bloggerでレイアウトの変更とかRecent Commentsとか

レイアウトは修正してみたが、結構だめだめ。あまり時間を取らずにやっているのでHTMLがおかしい。 とりあえず修正は後程にするしかない。 Googleの広告も付けてみた。 Recent Commentsの付け方は以下のサイトを参考にした。 clmemo@aka: Blogger Beta に「最近のコメント」を付ける コメントされる事はまあそんなにないだろうけど、生存報告記にも付いている機能なので、なんとなく付けておいてみる。 他はあまり機能的にはつけたい物もない感じ。後でAmazonとかの広告もつけておいてみるかもしれない。

Bloggerの機能をいろいろ調査

Bloggerの記事のURLはどのようなルールなのか良く調べもしないでいたのだが、以下に記述があった。 クリボウの Blogger 入門: Blogger の投稿タイトルと URL これで自由自在にURLを操作する事ができるわけです。
favicon.icoは別のサイトに設置しておいた物を参照するようにすれば良い。

<link href='http://xxxx/favicon.ico' rel='shortcut icon'/>
<link href='http://xxxx/favicon.ico' rel='icon'/>
あとは独自ドメイン関連は以下。
クリボウの Blogger Tips: 新 Blogger、カスタムドメインをサポート DNSを正常に設定しておく事が必要です。
www.sakito.com  CNAME  ghs.google.com.
で設定した。

2008年5月21日

JavaScriptをEmacsで開発する場合の設定

機能とかからjavascript.el を利用するのが良さげ。
http://code.google.com/p/mewde/

(autoload 'javascript-mode "javascript" nil t)
(add-to-list 'auto-mode-alist (cons  "\\.\\(js\\|as\\|json\\|jsn\\)\\'" 'javascript-mode))
(add-hook 'javascript-mode-hook
          (function
           (lambda ()
             (setq tab-width 4)
             (setq javascript-indent-level 4)
             (setq javascript-basic-offset tab-width)
             )))

とりあえずこんな感じで。

2008年5月17日

Blogger 初期カスタマイズ

参考にしたサイトは クリボウの Blogger 入門
テンプレートを The Blogger WorkShop の DownRight v3.0を適用した。適用の仕方だが、download よりXMLを別名で保存して、Bloggerの 「レイアウト」-> 「HTMLの編集」でXMLを選択してアップロードして適用した。
とりあえず 生存報告記にある機能を追加してみようと思う。
まずカレンダーなんだが、これはあるのだろうか?
と思ったが普通にあった 。クリボウの Blogger Tips: Blogger beta にもカレンダー
ただこれだとちょっと思いの動作と微妙に違う。
という事で他に探したら Blogger Archive Calendar ってのがあった。
こっちの方が理想に近いのでこちらでやってみた。とりあずできたが後でもうすこし変更するかもしれない。

初回投稿

記事が一件も無いとアーカイブの実験とかできないので、実験用です。
何か新しい事をしていないと腐ってしまうので、いろいろやってみるつもり。
Bloggerに関してはほとんど何も調べないでなんとなくでやっているので、便利かどうかも不明なまま思いつきでやっている。
続くかどうかは不明。