特定のタグが付いたホッテントリを非表示にするGreasemonkeyスクリプト



興味がないFacebook関連のホッテントリがあまりにも多くてうんざりしたので、はてなブックマーク人気エントリーのページから、特定のタグが付いたエントリを非表示にするhotentry_cleaner.user.jsを作りました。

そんなことRSSリーダやら何やらを使えというのはもっともですが、僕はここ何年かホッテントリを一覧性が良いWebからチェックするのが習慣になっているので、敢えて敢えてGreasemonkeyスクリプトにしてみました。

ソースコード冒頭のngtagsという文字列の配列に非表示にしたいタグを書いておくと、はてなブックマークのトップや人気エントリーのページで該当するエントリーが消えるようになっています。

var ngtags = ['facebook', 'iphone', 'ipad'];

上記のとおりデフォルトだとFacebookiPhoneiPadに関係するエントリーが見えなくなります。タグの大文字小文字は無視されます。日本語を含むタグを扱う場合はutf-8で保存する必要があります。

デフォルトの設定に特別な意図は無いので気を悪くしないて下さい。単に僕がFacebookをあまり面白いと思わないし、iPhoneiPadも自分で使う気がないだけです。

ダウンロード

(直接Greasemonkeyに食べさせたい場合はリンク先のrawをクリック)

mod_sftpでProFTPDをSFTPサーバとして動かす

ProFTPD 1.3.2からmod_sftpというモジュールが添付されており、SFTPサーバになれる機能がオプションで追加されています。
これまでmod_tlsによりProFTPDが標準でサポートしていたFTPS(FTP over SSL/TLS)は対応するクライアントが限られていたり何かと癖が強かったのですが、このモジュールを有効にしてビルドするとより広く使われているSFTPによるセキュアな接続を提供できるようになります。

以下では僕が実際に試したビルドの手順とSFTPを有効にする設定例を紹介します。
mod_sftpにはとても親切なドキュメントがあるので、詳しくは本家のサイトを参照して下さい。

ビルドとインストール

本家(http://www.proftpd.org/)から落としてきたソースを展開し、おきまりの手順でmakeします。
SFTPを有効にするために./configure時に--with-modules=mod_sftpを指定します。公式ドキュメントは--enable-opensslしていますが必須ではないようです。

$ wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3a.tar.gz
$ tar zxf proftpd-1.3.3a.tar.gz
$ cd proftpd-1.3.3a
$ ./configure --prefix=/opt/proftpd --sysconfdir=/etc/opt/proftpd --with-modules=mod_sftp
$ make
# make install

この例では僕の趣味で--prefix=/opt/proftpd --sysconfdir=/etc/opt/proftpdしています。
既にProFTPDを別の方法で入れている場合は干渉しないように気をつけましょう。

SFTPサーバの設定

設定ファイル(proftpd.conf)に以下のSFTP関連の設定を追加します。公式ドキュメントに倣ってVirtualHostで設定します。
SFTPで接続できるだけでただのVirtualHostなので、もちろんGlobalセクションの設定は受け継がれます。

まずSFTPEngine onでSFTP接続を受け付けるようにします。
SFTPLogはSFTP接続に関わるログの保存先を指定します。ここではprefix=/opt/proftpdだと仮定して指定しています。
Portディレクティブでこの例ではポート2222番を専用の待ち受けポートとしています。
SFTPHostKeyにはsshdで使っているホスト鍵を指定します。少々気持ちが悪いですがサーバに接続する際にホスト鍵が違うと警告を出すのを避けるためです。

<IfModule mod_sftp.c>
<VirtualHost x.x.x.x>
    SFTPEngine on
    SFTPLog /opt/proftpd/var/log/sftp.log

    Port 2222

    SFTPHostKey /etc/ssh/ssh_host_rsa_key
    SFTPHostKey /etc/ssh/ssh_host_dsa_key
</VirtualHost>
</IfModule>

あとはproftpdを実行すればSFTP接続を受け付けるデーモンが起動します。

# proftpd

なおnオプションをつけるとフォアグラウンドで動きます。

# proftpd -n
ProFTPDのアクセス制御を併用する

SFTPが有効なVirtualHostであってもProFTPD独自の認証機能やアクセス制御がそのまま利用できます。

この例ではmod_auth_fileを使って/etc/opt/proftpd/ftpasswdファイルに書かれたユーザだけがログインできるよう認証を行うようにしています。

AuthOrder mod_auth_file.c

<VirtualHost x.x.x.x>
    ...

    AuthUserFile /etc/opt/proftpd/ftpasswd
</VirtualHost>

こういった設定の中でも特に需要がありそうなchrootの設定もこのとおり手軽に実現できます。これでホームディレクトリより上は見られません。

<VirtualHost x.x.x.x>
    ...

    DefaultRoot ~
</VirtualHost>

また例えばLimitディレクティブでSITE_CHMODを無効にすればパーミッションを変更できなくなります。またSFTPだけにあるコマンド(例えばSYMLINK)もLimitディレクティブで制限できます。

<VirtualHost x.x.x.x>
    ...

    <Limit SITE_CHMOD>
        DenyAll
    </Limit>
    <Limit SYMLINK>
        DenyAll
    </Limit>
</VirtualHost>
通常のFTPを無効にする

LimitディレクティブでサーバすべてのLOGINを無効にした上で、SFTPEngine onのVirutalHostだけLOGINを有効にする方法がドキュメントのFAQで紹介されていました。

<Limit LOGIN>
    DenyAll
</Limit>

<VirtualHost a.b.c.d>
    <Limit LOGIN>
        AllowAll
    </Limit>

    SFTPEngine on
    ...
</VirtualHost>

フォーラムではVirtualHost外(server configコンテキスト)でPort 0にする方法も紹介されていました。

Port 0

http://forums.proftpd.org/smf/index.php/topic,3840.0.html

ただこんな回りくどいことをしなくても、単にserver configコンテキストでSFTPEngine onにしても良いと思うのですが、VirtualHostを使った方が何かメリットがあるんでしょうか。

おわりに

SFTPはsshdのサブシステムとして提供されるのが主で、SFTPだけを単独で提供するにはシステムのユーザを作成した上で特殊なシェルを指定するなど設定を工夫する必要がありました。

このProFTPDのmod_sftpは、シェルの利用は許可せずにファイル転送機能のみを提供するのはもちろん、mod_auth_file等の認証モジュールでProFTPD独自の認証を行うことができ、ProFTPDの機能そのままにchrootや各種ディレクティブによるアクセス制御まで簡単に行えます。

セキュアなFTPだけが必要なシチュエーションは限られていそうではありますが、使い方によっては便利そうですね。

iBusの有効/無効に個別のホットキーを割り当てるseparate hotkey patchを作りました(ついでにvi協調機能付き)




あらまし

最近mozcと共に使い始めたiBusですが、UIM + Anthy使いだった僕は以下の点を不満に感じました。

  • 日本語入力のオン/オフのホットキーはトグルしか設定できない、オン/オフにそれぞれ専用のホットキーを割り当てたい
  • いわゆるvi協調モードのような挙動(これはmozc側の機能?)は、自分の環境だとたまに取りこぼしがあり、不安定だった

そこでiBusのソースをチラ見したところ、案外簡単にいじれそうな作りだったため、次の変更を加えるいいかげんなパッチを作りました。

  • 日本語入力のオン/オフだけを個別に行う有効(Enable)/無効(Disable)ホットキーを追加
  • ESCやctrl+[といった任意のキーで日本語入力を確実に無効にするvi協調(Vi collaboration)ホットキーを追加
  • 日本語入力の有効/無効/vi協調ホットキーを設定できるようにibus-setupのUIを変更(エントリー冒頭の画像)

このパッチはdebian squeezeのリポジトリにあるibus_1.2.0.20091215をベースに書いています。ubuntu 10.04もibus_1.2.0のようなので多分そのまま使えるでしょう。

本家で最近stableになったibus_1.3.5は、構造がちょっと変更されているのでそのままでは使えません。本質的な部分は変わっていないようだったので、とりあえず適用できるように書き換えたパッチも作りました(動作未確認)。

パッチ当てとインストール

debian squeezeの場合だと以下の手順でパッチを適用してインストールできます。ubuntuでもibusのバージョン表記が少し違う程度だと思います。

$ mkdir ibus
$ cd ibus
$ apt-get source ibus
# apt-get build-dep ibus
$ cd ibus-1.2.0.20091215
$ wget http://kokutoto.com/files/ibus/ibus-1.2.0.separate_hotkey.patch
$ patch -p1 < ibus-1.2.0.separate_hotkey.patch
$ dpkg-buildpackage
$ cd ..
# dpkg -i *.deb

起動と設定

既に起動しているibus-daemonを置き換えてついでにXIMも有効にするなら起動はこんな感じ。

$ ibus-daemon -d -x -r

設定はibus-setupを実行するかシステムトレイのアイコンから設定を起動。

$ ibus-setup

デフォルトではEnable/Disable/Vi Collaborationのどれもキーを割り当てない設定です。Vi CollaborationはEscape; Control+bracketleftを推奨します。キーコード指定時はESCキーを押すとダイアログが閉じるので、キーコードの欄にEscapeと書いて追加します。

設定でトグルや他のホットキーと重複するキーを割り当てた場合は、挙動がおかしくなると思います。あんまりいじめないでください。

おわりに

このパッチは長いものには巻かれろの精神でmozc + iBusを使いたい人向けです。そもそもiBusなんて使いたくないという方は、uim-mozcというすばらしい試みがあるので、そちらを使った方が良いかも知れません。

パッチのダウンロード


(2010/10/14 gistへ移行)

後藤裕文さんがibus_1.3.9に対応したパッチを公開されています! ありがとうございました。紹介させていただきます。

http://gotto.jp/ibus/ibus-1.3.9.separete_hotkey.patch

(2011/07/13 後藤裕文さんのibus 1.3.9対応パッチへのリンクを追加)

格安のキワモノ系海外VPS「prgmr.com」

格安の海外VPSのprgmr.comを契約しました。契約と解約の方法、デフォルトでのメモリやディスクの使用率、ちょっと使った印象などをまとめておきます(契約は2009年7月)。

プラン

prgmr.comはアメリカのVPS業者で、XENで仮想化されたサーバがレンタルされます。$6からプランがあり、単に固定IPが必要な場合も最安レベルだと思われます。

雰囲気は極めて怪しく、恐ろしく簡素なウェブに" We don't assume you are stupid."と売り文句が書かれています。事実、Webによる管理画面などなく、すべての操作をコンソールで行います。

ひときわ目を引く$6のプランはXENでメモリ128MBと価格にしては優秀な印象。ただ転送量は20GiBと一般的な他のVPSより1桁少ない点に注意が必要です。半年、1年で契約すると更に安くなります。

6$ 128MB RAM 3GiB Disk 20GiB Network transefer
8$ 256MB RAM 6GiB Disk 40GiB Network transefer
12$ 512MB RAM 12GiB Disk 80GiB Network transefer
20$ 1024MB RAM 24GiB Disk 160GiB Network transefer
36$ 2048MB RAM 48GiB Disk 320GiB Network transefer
68$ 4096MB RAM 96GiB Disk 640GiB Network transefer

契約まで

もちろんWebから申し込めますが、一部人手による作業があり、英語のメールを書く必要があります。

サインアップ

コースを選んで連絡先をフォームに入力するだけ。支払い方法はpaypalが利用できます。

住所は都道府県が選択式ですが、ウムラウト記号や[]が入っている項目を選択するとエラーになり先に進めません。適当にAomoriなどを選ぶと良いようです。

サインアップ終了後に以下の内容が表示されます。

Signup successful

Thanks for signing up!

Signup information for YOURNAME:

Username: USERNAME
Package: 128MiB ram, 3GiB disk, 20GiB transfer Xen VPS, $6/month

Remember to send your OpenSSH format public key in an attachment to support@prgmr.com also, let me know if you want CentOS 5.2 or Debian 5.0. 

また以下のメールが送られてきます。

you ordered a xen vps, 128MiB ram, 3GiB disk, 20GiB transfer Xen VPS, $6/month username USERNAME

Before I can set you up, I need to know what distro you would like and an OpenSSH format public key (on a *NIX, run ssh-keygen  and send me either the id_dsa.pub or id_rsa.pub file in an attachment)

on putty/windows, see
http://www.unixwiz.net/techtips/putty-openssh.html#keypair
and scroll down to the screen shot where it says 'openssh format public key for pasting into authorized_keys' - that is what I need.

thanks.

コンソールに繋ぐための公開鍵と、どのディストリビューションを使うのかメールしてくれ、とのこと。ここから先は手作業になります。

鍵の作成と設定依頼

Linuxならssh-keygenで鍵を作成すれば良いです。

ssh-keygen

途中で鍵を作る場所を聞かれるのでid_rsaとかしておけば、カレントディレクトリにid_rsaとid_rsa.pubが作られます。パスフレーズはお好みで。面倒なら空欄でも良いでしょう。

希望のディストリビューションを書いて公開鍵id_rsa.pubを添付して support@prgmr.com へ送信します。参考サイトの通り適当な英語メールを書きました。すぐに自動返信メールが届きます。

Hello
I want to use Debian.
thanks.

以降の作業は手作業で行われているらしく、相手はGMT-0900くらいで動いているので、気長に待つ必要があります。

特に記載はありませんが休日は対応してくれていないようです。しばらくすると設定完了のメールが届きます。

Your server is setup now, you can login to council.prgmr.com with
your username and ssh key and follow the instructions at
http://book.xen.prgmr.com/mediawiki/index.php/Quickstart
The default root password is password, and you should get a bill
soon by email. If you have any questions please email
support@prgmr.com. Thanks very much.
Nick Schmalenberger

管理用のsshアクセス先を教えてくれます。この場合だと USERNAME@council.prgmr.com へ繋げば良いことになります。councilの部分は複数種類あるらしいのでメールを確認のこと。

コンソールへの接続

事前に秘密鍵を登録しておく必要があります。先ほど作成したid_rsaを食わせるなど、適当に。

ssh-add id_rsa

メールの指示に従ってsshで接続します。

ssh USERNAME@council.prgmr.com

以下の管理用コンソールが現れます。

Name                                        ID   Mem VCPUs      State   Time(s)
USERNAME                                   117   128     1     -b----     19.2

Options for USERNAME
1. console
2. create/start
3. shutdown
4. destroy/hard shutdown
5. reboot
6. exit
press the number> Read from remote host council.prgmr.com: Connection reset by peer
Connection to council.prgmr.com closed.

ざっと説明すると1. consoleで生のコンソールを叩ける。2. create/startはサーバを起動させる(デフォルトで起動している)。実際にはそのままコンソールが起動する。grubの画面も見られるのでCent OSやFreeBSDはリストアできるらしい(Debianは不明)。あとの項目は不明。概ね意味通りと思われます。

初期状態について

個々のホストにはUSERNAME.xen.prgmr.comというドメインが当たっています。正引きはもちろん、逆引きもこのドメインが設定されています。

デフォルトでsshdが入っていますが、デフォルトでrootログインが禁止されており、1度はコンソールに入る必要があります。

ps
  PID TTY          TIME CMD
    1 ?        00:00:03 init
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 migration/0
    4 ?        00:00:00 ksoftirqd/0
    5 ?        00:00:02 watchdog/0
    6 ?        00:00:08 events/0
    7 ?        00:00:00 khelper
   19 ?        00:00:00 xenwatch
   20 ?        00:00:00 xenbus
   51 ?        00:00:00 kblockd/0
   60 ?        00:00:00 ksuspend_usbd
   66 ?        00:00:00 khubd
   69 ?        00:00:00 kseriod
  102 ?        00:00:00 pdflush
  103 ?        00:00:00 pdflush
  104 ?        00:00:00 kswapd0
  105 ?        00:00:00 aio/0
  230 ?        00:00:00 net_accel/0
  537 ?        00:00:00 kjournald
  613 ?        00:00:00 udevd
 1115 ?        00:00:00 rsyslogd
 1200 ?        00:00:01 sshd
 1227 ?        00:00:00 cron
 1244 hvc0     00:00:00 login
 1245 tty2     00:00:00 getty
 1246 tty3     00:00:00 getty
 1247 tty4     00:00:00 getty
 1248 tty5     00:00:00 getty
 1249 tty6     00:00:00 getty
 5057 hvc0     00:00:00 bash
 5084 hvc0     00:00:00 ps
/proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 16
model           : 2
model name      : Quad-Core AMD Opteron(tm) Processor 2352
stepping        : 3
cpu MHz         : 2110.816
cache size      : 512 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu de tsc msr pae cx8 apic cmov pat clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow constant_tsc up rep_good pni cx16 popcnt lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch
bogomips        : 4233.19
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate
free
             total       used       free     shared    buffers     cached
Mem:        131288      56432      74856          0      12060      25148
-/+ buffers/cache:      19224     112064
Swap:       131064          0     131064
df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/xvda1             2952848    554608   2248240  20% /
tmpfs                    65644         0     65644   0% /lib/init/rw
udev                     10240        20     10220   1% /dev
tmpfs                    65644         4     65640   1% /dev/shm
sources.list
deb http://ftp.us.debian.org/debian lenny main
ping
PING USERNAME.xen.prgmr.com (xx.xx.xx.xx) 56(84) bytes of data.
64 bytes from USERNAME.xen.prgmr.com (xx.xx.xx.xx): icmp_seq=1 ttl=42 time=143 ms
64 bytes from USERNAME.xen.prgmr.com (xx.xx.xx.xx): icmp_seq=2 ttl=42 time=142 ms
64 bytes from USERNAME.xen.prgmr.com (xx.xx.xx.xx): icmp_seq=3 ttl=41 time=155 ms
64 bytes from USERNAME.xen.prgmr.com (xx.xx.xx.xx): icmp_seq=4 ttl=42 time=159 ms
64 bytes from USERNAME.xen.prgmr.com (xx.xx.xx.xx): icmp_seq=5 ttl=41 time=138 ms
64 bytes from USERNAME.xen.prgmr.com (xx.xx.xx.xx): icmp_seq=6 ttl=41 time=158 ms
64 bytes from USERNAME.xen.prgmr.com (xx.xx.xx.xx): icmp_seq=7 ttl=42 time=146 ms
64 bytes from USERNAME.xen.prgmr.com (xx.xx.xx.xx): icmp_seq=8 ttl=42 time=138 ms
64 bytes from USERNAME.xen.prgmr.com (xx.xx.xx.xx): icmp_seq=9 ttl=42 time=139 ms
64 bytes from USERNAME.xen.prgmr.com (xx.xx.xx.xx): icmp_seq=10 ttl=41 time=141 ms

--- USERNAME.xen.prgmr.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8996ms
rtt min/avg/max/mdev = 138.164/146.181/159.305/7.941 ms

初期設定

基本的には通常のサーバ設定と何ら変わりはありません。prgmr.comを使う上で注意が必要そうな部分を取り上げます。

ユーザ設定

デフォルトでrootパスワードがpasswordになっているので、これは早々に変更してしまいましょう。

passwd
apt

貧弱な/etc/apt/sources.listはとりあえず以下にでもしましょう。jpではなくusのミラーなのが新鮮です。

deb http://ftp.us.debian.org/debian lenny main contrib non-free
deb-src http://ftp.us.debian.org/debian lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free
ロケール

もしLANG=ja_JP.UTF-8だとperlがwarningを吐きます。

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

ロケールのカタログが足りないのが原因のようです。
試行錯誤の結果以下のパッケージを入れれば黙らせることができました。

apt-get install localse locales-all

結構ディスク容量を食うので、必要がなければ入れない方が良いでしょう。

/etc/hostsが存在しない

参考にしたサイトでも取り上げられていましたが、localhostさえ名前解決できません。/etc/hostsにせめてlocalhostを記述しておきましょう。

127.0.0.1       localhost

各種サーバのインストール

あとはお好みで。

例えばApache2をインストール。

apt-get install apache2

これでhttp://USERNAME.xen.prgmr.com/でIt Works!が確認できるます。

参考までにApacheインストール後の状況。

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/xvda1             2952848    680748   2122100  25% /
tmpfs                    65644         0     65644   0% /lib/init/rw
udev                     10240        20     10220   1% /dev
tmpfs                    65644         4     65640   1% /dev/shm
             total       used       free     shared    buffers     cached
Mem:        131288     120984      10304          0       6768      80500
-/+ buffers/cache:      33716      97572
Swap:       131064         24     131040

まだ余裕があるように見えますが、これに色々追加していくとディスクがカツカツになるはずです。やはりお遊びを越えた用途には、最低でも$8以上のプランが選択肢になってきそうですね。

請求

契約後しばらくするとinvoiceというメールが届くので、この請求メールに書いてあるリンクをクリックして、PayPalにより支払いを行います。サーバの契約状況は以下から確認できます。

サポート

英語でsupport@prgmr.comにメールを送ればいろいろ対応してもらえるのだと思います。公式のTwitterアカウントprgmrcomもあります。

何気なくprgmr.comのトラブルについて(日本語で)つぶやいたら、公式のアカウントから的確なreplyが飛んできて驚きました。

prgmr.comのホストは無事に復旧した。でも何故かデフォルトで設定されていたns1.sjc.he.netのネームサーバが使えなくなっているっぽい。アナウンスは特にないけど自力でどうにかしろってことかな。

@kokutoto I can't read what you are saying but if I just re-ip'd you and dns is broken, use 216.218.223.67 and 38.99.2.224

解約について

解約用のウェブインターフェイスなどはありません。メールで解約の希望を伝えると、しばらくすると特に返信もなくアカウントが削除されました。

参考URL

登録については以下のサイトを参考にさせていただきました。

wimeを使ってLinuxでWindows版ATOK 2008を動作させる

Windows版のATOK2008をwineで動作させcannaサーバに見せかけるプログラム、wimeをインストールして使えるよう設定します。

kokutotoは去年の9月くらいから使っていますが安定していて十分常用できますし、やはり連文節変換でATOKの精度は侮りがたいものがあります。

Linuxで文章を書くがAnthyはちょっと…でもWindows版があるしATOK X3は買いたくない、といった場合に重宝します。

以下の作業はdebian lennyを前提としていますが、ubuntuなどはほとんど変わらない手順で導入できるのではと思います(試していないのでわかりません)。

wineのインストール

まずwineをインストールします。
wimeはwine 1.0.0でも動作するのでdebian lennyならaptからインストールするだけで良いです。

apt-get install wine

ATOKのインストール

ATOK2008製品版のCD-ROMのATOK/ATOK21.msiをmsiexecで実行します。普通にexeを起動するだけではダメなようです。

文字化けするかも知れませんがwime自体は正常に動くのでフィーリングでインストールを進めます。

msiexec /i /mnt/ATOK/ATOK21.msi

不足しているレジストリを補うためwimeを展開した中に入っているatok.regをregeditで読ませます。

regedit atok.reg

wimeのインストール

作業の一連の流れとReadmeを読んでも書いていない事を中心に書きます。

ダウンロード

公式サイトから最新のwimeのアーカイブ(ここでは3.1.3)を落としてきます。

wget http://www.venus.sannet.ne.jp/thomas/wime/wime-3.1.3.tar.bz2

展開します。

tar jxvf wime-3.1.3.tar.bz2
ビルド

makeします。
debianではwine関係のファイルが/usr/libとか/usr/includeに入るのでWINEDIRは/usrにしておくのが良いでしょう。

WINEDIR=/usr make

RK.hが無いと言われたら…。

sudo apt-get install libcanna1g-dev

winuser.hが無いと言われたら…。

sudo apt-get install libwine-dev

gtk.hなどが無いと言われたら…。

sudo apt-get install libgtk2.0-dev

デフォルトで後述するwimeximとim-wimeもコンパイルされるよう設定されているので、これらが不要なら以下のように変数を設定しておくと依存ライブラリが減るかも知れません。

enable_xim=0
enable_gim=0
動作確認

インストール前に動作を確認することもできます。

Readmeにあるようにwimeをmakeしたディレクトリで次のようにするとwimeが動作します。

LD_LIBRARY_PATH=./so:$LD_LIBRARY_PATH WINEDLLPATH=./dll ./exe/wime
インストール

make installでインストールします。

wime.dll.soはPREFIXとは関係なくWINELIBDIRにinstallされるので、環境変数の指定は注意が必要です。

debianでWINEDIRを指定せずにmake installするとwime.dll.soが/usr/local/lib/wimeとしてinstallされてしまい悲しい事になります。

sudo WINEDIR=/usr make install

wimeの起動/設定/終了

起動はwimeコマンドから。

wime

もし本物のcannaサーバが動いていたら終了させておきます。
wimeを常用する場合はupdate-rc.dでcanna自動起動設定を切っておきましょう。

sudo /etc/init.d/canna stop

wimeの設定はwimeの起動時にwimectrlで。

wimectrl

wimeの終了はwimectrl -kで。

wimectrl -k

異常終了時に「アドレスは既に使用中です」と言われて再起動できない場合があります。

ImInit: Address already in use

libcannaと通信するためのソケットが残っているのが原因なので、そういう場合は/tmp/.iroha_unix/IROHAを削除します。

rm /tmp/.iroha_unix/IROHA*

入力メソッド毎の設定

ここから先はお好みで。

uim + uim-cannaでの設定例

kokutotoはATOK以外ならuim + anthyな人なのでuim-cannaを使ってuimでwimeを使うように設定します。

sudo apt-get install uim-canna

これでuimの設定でインプットメソッドとしてcannaが指定できるようになります。

uim-pref-gtkで「使用可能にする入力方式」を"Canna"にします。

uim-pref-gtk

以上でcannaサーバとして動作するATOKが利用可能になります。

wimexim及びim-wime

wimeには2.0.0からXIMサーバのwimeximが、3.0.0からGTK+用immoduleのim-wimeが付属しています。

ATOKパレットも出て素敵な感じになりますが、wineにパッチを当てないとファンクションキーが効かないなど不便な所があります。

debianだとこれらに関係する環境変数XMODIFIERSやGTK_IM_MODULEの設定は~/.xinput.d以下のファイルで行います。

またリソース設定は~/.Xresourcesに書くことにします。~/.Xresourcesはどこかでxrdbで読まれると設定されている前提です。

wimexim

~/.xinput.d/ja_JPで以下を設定をします。
このファイルはデフォルトで/etc下にあるファイルを指すシンボリックリンクなので注意が必要です。

XIM=wime
XIM_PROGRAM=/usr/local/bin/wimexim

続いてIMEをon/offするためのキーバインドをリソースで設定します。~/.Xresourcesに以下を書きます。

ximegim.imeToggleKey:A-space

または

Wime.imeToggleKey:A-space

wimeximを起動しておきます。

wimexim

これでXIM対応アプリケーションから、リソースimeToggleKeyで設定したキーバインドIMEがon/offされ、ATOKが利用可能になります。

im-wime

同じく~/.xinput.d/ja_JPに以下を設定します。

GTK_IM_MODULE=wime

次に~/.Xresourcesに以下を設定します。

wimegim.imeToggleKey:A-space

または

Wime.imeToggleKey:A-space

これでGTK+immodule対応アプリケーションから、ATOKが利用可能になります。

MoinMoinをお好みのエディタで編集できるPythonスクリプトeditmoin

MoinMoinは海外で使用例が多いPython製のWikiエンジンです。ページ単位でアクセスコントロールが可能なほか、ローカルで動作させることができるなどの特徴があります。
editmoinというPythonスクリプトを使えば、MoinMoinのページを普段利用しているエディタで編集することができます。

インストール

editmoin - Labix

公式ページからダウンロードしても良いですが、debianubuntuであればaptを使ってインストールすることもできます。

apt-get install editmoin

基本的な使い方

ログインが必要ないMoinMoinならURLを引数にするだけでエディタが起動して編集が可能です。エディタを終了するとMoinMoinに書き込まれます。
テンプレートの指定は-tオプションを使って行えます。

editmoin http://moinmoin.wikiwikiweb.de/TestPage
editmoin -t SomeTemplate http://moinmoin.wikiwikiweb.de/TestPage

認証の設定(~/.moin_ids)

~/.moin_idsにMoinMoinのURLとMOIN_IDというCookieの対を記述することで、ログインが必要なwikiでも認証なしで書き込めます。
MOIN_IDはMoinMoinにログイン後にブラウザから調べます。Firefoxの場合は「編集->設定」の「プライバシー」にある「Cookieを表示」から調べられます。
以下のようになります。

http://moinmoin.wikiwikiweb.de 987654321.321.54321 
http://wiki.canonical.com
http://example.com/moin/moin.cgi 123456789.123.12345 

Basic認証は~/.moin_idsで指定しなくても対話的に認証できますが、面倒な場合は~/.moin_ids中でURLにユーザ名とパスワードを埋め込むこともできます。
ユーザ名をuser、パスワードをpasswordとすると以下のようになります。

https://user:password@example.com/moin/moin.cgi 123456789.123.12345
ショートカット

~/.moin_idsに記述があればショートカットが利用可能です。URL中でMoinMoin以下のパス(サブパス)がはじまるスラッシュより前の文字列の一部分を入力するとだけでアクセスできます。
例えばhttp://wiki.canonical.comが存在する場合、canonicalだけでもアクセスできます。

editmoin canonical/FrontPage

エイリアス(~/.moin_alias)

深い階層のページなど、長いURLを打ち込むのは面倒な場合は、~/.moin_aliasesでエイリアスを設定することができます。
各行にエイリアスと展開結果の対を指定します。以下のようになります。

script http://moinmoin.wikiwikiweb.de/ScriptMarket

エイリアスを利用したアクセスも通常の使い方と変わりません。
以下の例ではhttp://moinmoin.wikiwikiweb.de/ScriptMarket/EditMoinにアクセスされます。

editmoin script/EditMoin

環境変数による設定

EDITOR

デフォルトだとviが起動します。editmoinで起動するエディタは環境変数EDITORで指定できます。bashの場合は以下。

export EDITOR emacs
http_proxy

プロキシ下のネットワークに居る場合は、環境変数http_proxyにプロキシを指定できます。同じくbashの場合は以下。

export http_proxy http://proxy.example.com:8080/

おまけ:Vimシンタックスファイル

VimにはMoinMoin記法のシンタックスファイルmoin.vimがあります。以下からダウンロードできます。~/.vim/syntax/以下に配置しておきます。

moin.vim - Syntax file for MoinMoin wiki text : vim online

さらにファイルタイプの自動判別のために~/.vim/ftdetect/moin.vimとして以下の内容を記述しておくと良いです。

au! BufRead,BufNewFile *.moin
    \ if getline(1) =~ '^@@ Syntax: 1\.5$' | setf moin1_5
    \ | else | setf moin1_6 | endif