2010年8月4日水曜日

firefox: 付箋アドオン

firefox でwebページに付箋を貼り付けることができる拡張機能はいくつかある。 どれも任意のwebページに付箋を貼り付け、再度同じページを表示すると再現されると いうもの。

ソースコード (のhtml) を読みながら、気付いたことをペタペタしておき、 あとでまとめて読みかえす、という使い方をしたく、色々入れてみた。

5 つ試して結局 Stickey Notes に落ち着いた。

  • Sticky Notes (0.2.5)
    • 付箋の一覧表示ができる
    • おかしな挙動も今のところはない
    • 見た目だけがいまいち
  • Internote (2.1.5)
    • ブラウザのタブをいったりきたりしていると、付箋を貼ったページではないのに 付箋と記述したメモが表示されることが度々あった。
    • 逆に付箋を貼ったページなのに、表示されないことも。
    • firefox のバージョンは 3.6.8
    • ... ... 今気付いたけど 3系には対応していないのか..
  • Xsticky-Addon (1.3.2)
    • 見た目も安定性もいいのだが、付箋の一覧ができない
    • あとでまとめて読みかえす、という使い方をしたかったので、一覧ができないのは 致命的。
  • FloatNotes (0.6.2)
    • これも一覧表示ができない
  • Diigo: Web Highlighter and Sticky Notes
    • 付箋の他に赤線を引くようなことができたりと高機能
    • Diigo というソーシャルブックマークのフロントエンドの一つ
    • Diigo のアカウントを作らないと使えない

2010年7月31日土曜日

xcode: header file をさがす

open(1) の -h オプションでヘッダファイルの場所を適当に探して開くことができる:

$ open -h NSview.h
$ oepn -h NSview # 不完全でも一致するものを表示
$ open -h NSview.h -e # TextEdit.app で開く
$ open -h NSview.h -a hoge.app # 指定したアプリケーションで開く

2010年7月19日月曜日

misc: 結婚式のビデオ

最近の結婚式はサプライズな演出が流行りみたいだけど、これはちょっとw
http://www.amo.am/movie/orchestra.html
開演は 1:30 あたりから。
出席した人の顔写真からコーラスを合成するサービスなんだけど、
顔の動きが不自然で気持ちわるーい。夢に出てきそうw

2010年7月14日水曜日

reST: list-table

reStructuredText の list-table を使うと、大きなテーブルも簡単に記述できて便利:

.. list-table:: table title
  :widths: 10 20 30
  :header-rows: 1

  * - Treat
    - Quantity
    - Description
  * - Albatross
    - 2.99
    - On a stick!
  * - Crunchy Frog
    - 1.49
    - If we took the bones out, it wouldn't be
      crunchy, now would it?
  * - Gannet Ripple
    - 1.99
    - On a stick!

セルの連結はできないけど、あまり凝ったテーブルでなければとても快適。

vmware: ESXi 4.1 がリリースされてた

ESXi 4.1 がリリースされてたのでインストールしてみた。

http://www.vmware.com/jp/support/pubs/vs_pages/vsp_pubs_esx41_vc41.html

いいなと思った新機能は次の 2 つ。

  • ネットワークを経由した仮想マシンのシリアル ポートへのアクセス
    • 仮想マシンにシリアルポートを追加すると、ネットワーク経由で接続が 選択できるようになっている。今までゲストOS のコンソールを取る手段が vSphere Client 経由しかなく、Xen と比べてメンテナンス性が劣っていたけど これで解決。
  • SSH 接続を正式にサポート
    • 4.0 までは Alt+F1 して unsupported 入力してゴニョゴニョしていたのが 正式にサポートされ、F2 で表示されるメニュー画面から設定可能に。

2010年7月7日水曜日

misc: MieruPC2010

MieruPC がバージョンアップして 7 月下旬発売予定らしい。

http://www.mierupc.com/product/mierupc2010.html

液晶ディスプレイが広くなって、値段が安くなったのがポイントなのかな。

2010年6月3日木曜日

iPhone: iPhone 構成ユーティリティ

iPhone 構成ユーティリティというものを見つけた。

http://www.apple.com/jp/support/iphone/enterprise/

4文字以上のパスコードが使えるようになったり、 WPA2 エンタープライズが使えるようになったりと、企業での利用を中心により細かに設定できるようになるみたい。

2010年5月26日水曜日

misc: creately

http://creately.com/

Visio や OmniGraffle のようなドローイングツールの Web アプリ。 Google document の図形描画より高機能。だけどちょっともっさりした動作。 お値段は 5 ドルから。内容を考えれば安いのかも。

2010年5月19日水曜日

OpenGrok: CLI から使用する

OpenGrok 0.9 が出てた。utf-8 対応になって、コミットメッセージが化けなくなった。

で、README をながめてたら CLI からも検索できるようだったのでやってみた:

$ java -cp ./lib/opengrok.jar org.opensolaris.opengrok.search.Search
You must specify a configuration file
USAGE: Search -R <configuration.xml> [-d | -r | -p | -h | -f] 'query string' ..
         -R <configuration.xml> Read configuration from the specified file
         -d Symbol Definitions
         -r Symbol References         -p Path
         -h History
         -f Full text
$ java -cp ./lib/opengrok.jar org.opensolaris.opengrok.search.Search \
        -R configuration.xml -p /OpenSolaris -d prachars
Printing results 1 - 1 of 1 total matching documents collected.
/src/OpenSolaris/usr/src/ucbcmd/stty/stty.c:54 [void <b>prachars</b>(void);]
/src/OpenSolaris/usr/src/ucbcmd/stty/stty.c:463 [          <b>prachars</b>();]
/src/OpenSolaris/usr/src/ucbcmd/stty/stty.c:649 [          <b>prachars</b>();]
/src/OpenSolaris/usr/src/ucbcmd/stty/stty.c:653 [<b>prachars</b>(void)]

これなら GNU Global の方が使いやすいかも。これは OpenGrok のデバック用なんかな。

2010年5月18日火曜日

Rhodes: スマートフォンのためのクロスプラットフォームフレームワーク

http://www.infoq.com/jp/news/2010/05/rhodes-2

ver. 2.0 から MIT ライセンスになるそうで。すばらしい。

Rhodes は以下を含むスマートフォンのためのクロスプラットフォームなフレームワーク。

  • iPhone, iPad
  • BlackBerry
  • Android
  • Windows Mobile
  • Symbian

iPhone, iPad はライセンス的によく分からんけど、 iPhone & iPad と以外で 2 つの実装で済むようになれば、だいぶ楽になりそう

2010年5月13日木曜日

misc: GPGPU

http://www.slideshare.net/pfi/20091210-gpu

ちょっとアレなところもあるみたいだけど、けっこう面白かった。 89ページ目の粉体の計算とかどうやってるんだろう、とか。 所詮floatの計算が早いだけでしょとか思ってたけど、考えを改めさせられました。 CUDAも意外と簡単そうだし、ちょっと遊んでみよう。

どうでもいいけど Myrinet ってまだ生きていたのね。

2010年5月11日火曜日

2010年4月2日金曜日

misc: ローカルタイムを参照する NTP サーバ

ntp.conf で server 127.127.1.0 を指定すると、自分自身を参照する NTP サーバとなり、 外部の NTP サーバがなくても NTP サービスを提供できるようになる。

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*LOCAL(0)        .LOCL.           5 l   22   64  377    0.000    0.000   0.001

実験などで閉じたネットワークを作ると、stratum 1 なサーバを参照するすべがなくなり、 時刻合わせに苦労してたけど、これで解決。閉じた系ではこの NTP サーバを参照することで、 系内の時刻はそろえることができる。実際には多少ズレるけど、まあ誤差でしょ。

2010年3月30日火曜日

openbrok: シンボリックリンクの扱い

SRC_ROOT 直下にシンボリックリンクがあるとダメっぽい。 インデックス生成後にソースコードを表示すると例外が発生してしまう。 分散しているコードツリーを SRC_ROOT の下にシンボリックリンクで集めたらよさそうと思ったんだけど、そうもいかないみたい。残念。

2010年3月22日月曜日

opengrok: SCMと連携

まず、リポジトリの場所について。リポジトリはリモートにあってもかまわないけど、 opengrok で使う場合はちょくちょくリポジトリにアクセスが発生するのでローカルにおいておいた方がよさげ。 svnsync なり cvsup なり rsync なりでミラーリングしておく。

で、このリポジトリから一旦チェックアウトしておく必要があって、 よく分からないけどそういうものらしい。ちょっと面倒。 そこにファイルがないとインデックスが作成されないようで、 svn co --depth=files ... みたいにしてもダメだった。

というわけで、仮に以下のようにチェックアウトしたとします:

~/src
     /linux
     /openbsd
     /opengrok

インデックスの作成はopengrok に付属の run.sh を編集して使うのが便利で、 run.sh は結局以下のようになりました。

#!/bin/sh

PROGDIR=`dirname $0`

# REQUIRED The root of your source tree SRC_ROOT=/home/yourname/src

# REQUIRED The directory where the data files like # Lucene index and hypertext cross-references are stored DATA_ROOT=/var/opengrok/data

# OPTIONAL A tab separated files that contains small # descriptions for paths in the source tree PATH_DESC=${PROGDIR}/paths.tsv

EXUB_CTAGS=/usr/bin/ctags

# You might want to add more available memory, and perhaps use a server jvm? JAVA_OPTS="-server -Xmx1024m"

LOGGER="-Djava.util.logging.config.file=conf/logging.properties"

java ${JAVA_OPTS} ${PROPERTIES} ${LOGGER} -jar ${PROGDIR}/opengrok.jar
${SCAN_FOR_REPOS} -c ${EXUB_CTAGS} -s ${SRC_ROOT} -d ${DATA_ROOT} -W configurat ion.xml -r on -H -S -v -P

# OPTIONAL java ${LOGGER} -classpath ${PROGDIR}/opengrok.jar org.opensolaris.opengrok.web.Efta rFile ${PATH_DESC} ${DATA_ROOT}/index/dtags.eftar

-P オプションを付けると複数のプロジェクトを個別にあつかうことができます。

あと、リポジトリ、それをチェックアウトしたもの、opengrok のインデックスで 結構な数のファイルが作成され、inode が足りなくなってハマリました。

opengrok: OpenGrok を使う

OpenGrok は Sun 謹製のクロスリファレンスツール。

対応している言語は

  • C/C++
  • Shell Scripts (like ksh, sh)
  • Perl
  • Java, Java Class files, JAR files
  • ELF files
  • troff man pages
  • Zip, Gzip, BZip2, Tar
  • meta language files (like XML, SGML or HTML)

これ以外のファイルでもリファレンスが正しくできないだけで、 全く表示されないということはない。

また、主要なSCM に対応している。

ちょっと使ってみただけだけど lxr と比べて、対応している SCM が多かったりと 高機能な割に導入が簡単で見た目もよい。 あとは Python と Ruby に対応してくれれば... まあ自分で作ればいいか。


以下、opengrok をインストールしたときのメモ。OS は debian-lenny。

sun-java6-jdk, tomcat5.5, tomcat5.5-admin, tomcat5.5-webapps, exuberant-ctags あたりをインストール。

opengrok-0.8.1.tar.gz をダウンロードして、適当に展開。 このディレクトリを ~/opengrok-0.8.1 としておきます。

source.war の deploy:

cd ~/opengrok-0.8.1
sudo ./OpenGrok deploy

/etc/tomcat5.5/policy.d/04webapps.policy でパーミッションを追加:

grant codeBase "file:${catalina.home}/webapps/source/-" {
     permission java.security.AllPermission;
};

grant codeBase "file:${catalina.home}/webapps/source/WEB-INF/lib/-" {
     permission java.security.AllPermission;
};

次。クロスリファレンスしたいソースコードを用意。 このディレクトリを ~/src としておきます。

インデックスを作成:

java -server -Xmx1024m -s ~/src -d ~/ogk-data -W configuration.xml -v
sudo cp configuration.xml /var/opengrok/etc/configuration.xml

あとは tomcat を再起動すれば http://<your-site-url>:port/source/ で表示されるはず。

2010年3月14日日曜日

misc: コードリーディング

コードを読むのに、lxr + Firefox の internote プラグインが便利な気がする。

2010年3月13日土曜日

misc: graphviz (dot言語) から Ascii Art に変換 (graph-easy)

graphviz は dot言語から各種フォーマットに対応しているけど、 Ascii Art に変換できないのが不満といえば不満。

_GraphEazy では dot --> ascii-art の変換に対応していて、これを使うのがよさげ。

$ echo "[ test ] -- hoge --> [user1]" | graph-easy --as=graphviz

digraph GRAPH_0 {

  // Generated by Graph::Easy 0.64 at Sat Mar 13 00:38:04 2010

  edge [ arrowhead=open ];
  graph [ rankdir=LR ];
  node [
    fontsize=11,
    fillcolor=white,
    style=filled,
    shape=box ];

  test -> "user1" [ color="#000000", fontcolor="#000000", label=hoge ]

}
$ echo "[ test ] -- hoge --> [user1]" | graph-easy --as=graphviz | \
    graph-easy --from=graphviz
+------+  hoge   +-------+
| test | ------> | user1 |
+------+         +-------+

""[ test ] -- hoge --> [user1]"" の部分は graph-easy 形式。 ちょっとしたネットワーク図を AA で書くときは:

$ echo "[ test ] -- hoge --> [user1]" | graph-easy

と, graphviz を経由しなくても OK。

misc: 作成中の man ファイルの確認

man ファイルを編集した後、確認したくても man -f man.1 みたいなことができなくて どうしたものかと悩んでたけど、こうすればいいみたい:

groff -mandoc -Tlatin1 /usr/share/man/man1/man.1 | less

スッキリ。

2010年3月11日木曜日

python: epytext

epytext という物を知った

pydoc と互換性をとりつつ、より豊かな表現ができるらしい。 reStructuredText みたいなものか。文法も似ているし。

debian: backports を利用する

debian を使っていると、一部のパッケージだけ新しくしたいことがある。 tar ball を拾ってきて make install でもいいんだけど、バージョン管理とかめんどう。

そんなときは backports を使うとかなり便利。

まず、/etc/apt/sources.list に以下を追加:

deb http://www.backports.org/debian lenny-backports main contrib non-free

あとは順次更新していくだけ。

  • aptitude update
  • aptitude -t lenny-backports install "package"

ただ、このままにしておくと、upgrade した時に他のパッケージまで lenny-backports のもので更新されてしまってよろしくない。

/etc/apt/preferences に以下のようにしておくとよさげ:

Package: "package name"
Pin: release a=lenny-backports
Pin-Priority: 999

Package: *
Pin: release a=lenny-backports
Pin-Priority: 200

参考: http://www.backports.org/dokuwiki/doku.php?id=instructions

misc: コメントの指針

いつもコードにコメントを入れるか入れるまいか悩むけど、なるほどなと思った指針があったのでメモ。

http://www.infoq.com/jp/news/2010/03/To-Comment-or-Not-to-Comment

「なぜ」というコメント == 役に立つ
「どのように」というコメント == 疑わしい

2010年3月6日土曜日

mac: Mac OS X Server で Spotlight による Web 検索

デフォルトでは使用不可になっていて、有効にしてあげないといけない。

http://support.apple.com/kb/TA23537?viewlocale=ja_JP

2010年2月24日水曜日

misc: screen でシリアルコンソールが使える

http://builder.japan.zdnet.com/news/story/0,3800079086,20365899,00.htm

screen でシリアルコンソールを使えるのね。:

screen /dev/ttyS0 115200

ちょっと感動。今まで uucp とかわざわざ入れていたけど、screen で十分。 ログも取れるし、なにかと便利。

切断は ^a k。

2010年2月17日水曜日

mac: Safari の等幅フォント

Safari で等幅フォントに Osaka などを指定していても、2バイト文字と1バイト文字で 幅がずれる。

普通に表示している分には問題ないんだけど、textarea で編集しているととても気になる。

で、これを次のようにするとずれなくなった。

  • ~/Library/Application Support/Safari/userstyle.css に次のように記述
    @charset "iso-8859-1";
    textarea{
        font-family:Osaka-Mono;
    }
    
  • 環境設定 表示タブで 等幅フォント:Courier New 14 を指定
  • 環境設定 詳細タブで これより小さいフォントサイズを使わない:12
  • 環境設定 詳細タブで スタイルシート:(さきほどのuserstyle.css)

等幅フォントに Osaka を指定しているとうまくいかないとかよく分からんけど、まあいっか。

2010年1月30日土曜日

cocoa: ファイルの読み書き

Cocoa framework ではファイルから 1 行ずつ読み込むような API は存在しないようだ。 まあ自分で作ればいいんだけど、文字コードとか改行文字の違いとか、めんどう。

メモリは無駄になるけど、NSString stringWithContentsOfFile: 全部読み込み込んで、 lineRangeForRange: と substringWithRange: で 1 行ずつパースするのがよさそう (参考)。今どき数MB なんて気にしない方がいいのかな。

やっぱりテキストを扱うときは Python とかの方が楽。

2010年1月27日水曜日

cocoa: ファイルパスの操作

String Representations of File Paths にまとまっている。

やりたかったのはホームディレクトリの参照:

NSString *path = [@"~/Documents/sample.txt"];

=> path is "/Users/your-name/Documents/sample.txt"

misc: 静的解析ツール

オープンソースなツールでもいろいろあるのね: wikipedia:静的コード解析 やっぱり C/C++ が多い。みんな苦労してるのだろうか。

2010年1月24日日曜日

mac: Quicksilver プラグイン初めの一歩

ようやくプラグインがビルドできるところまでいった。 忘れないうちにメモ。

  • svn checkout http://blacktree-alchemy.googlecode.com/svn/tags/B54 quicksilver-b54
  • cd quicksilver-b54/Quicksilver
  • unzip Quicksilver.xcodeproj.zip (パスワードは archaic)
  • ln -s /path/to/quicksilver-b54/Quicksilver /Developer/Apps/Quicksilver
  • open Quicksilver.xcodeproj
  • ビルド
  • いくつか失敗したけど、Framework(QSCore, QSFoundation) ができたので OK

で、Quicksilverプラグインのつくりかた に戻って、 フレームワークのパスを /path/to/quicksilver-b54/Quicksilver/build/Debug にする。環境によっては Debug じゃなくて Release かも。後はつくりかたの通り。

今日はこんなもんかな。結局準備しただけで終わってしまった。

mac: Quicksilver のプラグイン作成でハマる

http://blog.deadbeaf.org/2007/12/15/howto-write-quicksilver-plugin-ja/ を見て Quicksilver のプラグインを作りはじめたものの、ハマりまくってなかなか 進まない。

まず Quicksilver Develop版 (http://getqs.com/dev/) が存在しない。

やれやれと思って、ソースコードをビルドしてみたものの、失敗。

  • 材料: http://code.google.com/p/blacktree-alchemy/source/browse/#svn/branches/B5X
  • /Developer/Apps/Quicksilver にコードツリーを置いてやらないとビルドが進まない
  • QS_SOURCE_ROOT はちゃんと書き換えてるんだけどなぁ。まあいいや
  • ビルドが進むと NSWindowDelegate なんて知らねーよってエラーメッセージが。
  • はて? ちゃんと import されてそうだが、と思ってコードをながめてたら...
  • NSWindowDelegate って Snow Leopard からの API なのね (reference)
  • 家 Mac は今だに Leopard。

なんかしょぼい (自分が、です)。つまるところ、

  • branches/B5X の head は 10.6 でないと build できなさげ
  • tags/B54 はタイムスタンプ的に 10.5 で build できそう

であると。後者を試してみよう。

2010年1月20日水曜日

misc: Bing へのサイトの登録

Bing へのサイトの登録は http://www.bing.com/webmaster/SubmitSitePage.aspx から。

操作は CAPTCHA と URL の入力のみ。 URL の登録しかできない分、 Google Web Master Tool や Yahoo Site Explorer のように認証が必要なく、 操作が簡単。

2010年1月12日火曜日

mac: Norton AntiVirus 11 for Mac で Live Update に失敗する

Snow Leopard にしてから Live Update が成功しない。 次のようなエラーダイアログが表示される:

マイクロ定義エラー
LiveUpdate had an error updating the irus definitions.

an error を教えて欲しいところだけど、不審なログにも特になくお手上げ。

http://service1.symantec.com/SUPPORT/num.nsf/docid/19986514459 から Virus definitions をダウンロード & 手動インストールでとりあえずしのぐことに。 ああ、めんどくさ。

2010年1月10日日曜日

mac: launchd で anacron っぽいことをする

anacron では指定した時刻に電源が落ちていた場合でも 次に起動した時にスクリプトが実行される (cron では指定時刻に電源が入っていないと、そのイベントはスキップされてしまう)。 よくサスペンドしておくノートPCでは便利で、anacron 相当を launchd でやってみた。 といっても StartCalendarInterval で指定するだけ。

たとえば毎日 2:50 に ~/script/test.sh を実行する:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.example</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/zakkie/script/test.sh</string>
    </array>

    <!-- 起動条件 -->
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>2</integer>
        <key>Minute</key>
        <integer>50</integer>
    </dict>
</dict>
</plist>

Hour, Minute の他に Day, Weekday, Month を指定可能。

これを ~/Library/LaunchAgents/example.plist として保存する。 反映は launchctl load ~/Library/LaunchAgents/example.plist 。 次回ログイン時は自動的にロードされる。

設定ファイルの置き場所は 3 種類。

~/Library/LaunchAgents
ユーザ毎の設定
/Library/LaunchAgents
全てのユーザに共通で適用される。
/System/Library/LaunchAgents
Mac OSX によって適用される。この下のファイルはいじらない方がよさそう。

また、起動条件は複数指定可能で、例えば毎時 0 分と 30 分に起動するなら、:

<key>StartCalendarInterval</key>
<array>
<dict>
    <key>Minute</key>
    <integer>0</integer>
</dict>
<dict>
    <key>Minute</key>
    <integer>30</integer>
</dict>
</array>

となる。

ちなみにスキップされたイベントが複数あっても、起動後には 1 回だけ実行される。

2010年1月5日火曜日

mac: 年賀状

今年は Mac で年賀状を作ってみました。 といっても絵心はないので、いきおいツールに頼りきりです。

色々試してみて、次の組み合わせに落ち着きました。

宛名書きは住所録も管理できるツールを使うより、アドレスブック.app にためておいた方がいろいろ活用できそう (どこかに流すとか、そう意味ことではないですよ)。

はがきデザインキットは日本郵政 (名前違ったかな) が作成しているツールで、 いわば公式ツール。添付のイラストを使って、写真入れて、自分の住所書いて、と 機能は必要十分でした。