Monday, December 13, 2010

こっちで単語登録したら、あっちでも使いたい

これは SKK Advent Calendar 2010 の六日目 2010/12/13 の記事です。

五日目は tomoya さんによる、

です。 (setq skk-kakutei-when-unique-candidate t) は便利そうですね。実は単語登録したいとき困るのじゃないかと思っていたら、続けて skk-undo-kakutei すれば辞書登録モードになるという新発見もありました。

さて、SKK の特徴的な機能の一つには再帰的な辞書登録モードがあり、たとえ世界中のどの辞書にも載っていない単語だとしても、超簡単に単語を登録してあっというまに個人辞書を充実させていくことができます。

これは再帰していない

ぼくは普段 Windows のデスクトップで生活していて、Emacs では Daredevil SKK (ddskk) を使い、他のアプリケーションでは skkime を使って日本語を入力しています。ところが ddskk と skkime はそれぞれ別の個人辞書を使うので、どちらかで単語を登録してももう一方ではすぐにその単語が出てきません。これはちょっと悲しい。そこで今日は個人辞書育成を少しだけ楽しくする TIPS を紹介したいと思います。

skkime から ddskk の個人辞書を参照する

まずは skkime から ddskk の個人辞書を参照できるように設定します。

SKKIME1.5(build:20100719) Properties

skkime のプロパティを表示して、辞書設定のタブから、ファイル辞書として ddskk で使っている個人辞書のファイルを指定します。辞書ファイルのパスはお使いの環境に合わせてください。

ddskk の個人辞書はソートされていませんので、「この辞書はソートされている」のチェックは入れないようにしてください。

これで skkime の個人辞書にない単語を変換したときに、ddskk の個人辞書を参照して変換できるようになりました。

しかし、これだけでは、ddskk で単語登録した直後にはその単語を skkime で使うことができません。単語登録をしても、ディスク上の個人辞書ファイルがすぐに更新されるわけではないためです。

ですから、ddskk の設定にも少し手を入れます。以下のように .skk ファイルへ追記します。

(defvar my-skk-jisyo-updated
  nil
  "個人辞書の更新直後に保存するかどうかを示すフラグ")

(defadvice skk-henkan-in-minibuff (after my-skk-raise-jisyo-update-flag last
                                         activate compile)
  "単語登録された場合 my-skk-jisyo-updated をセットする"
  (if ad-return-value
      (setq my-skk-jisyo-updated t)))

(defadvice skk-update-jisyo (after my-skk-sync-private-jisyo last
                                   (word &optional purge)
                                   activate compile)
  "新たに単語が登録されたか削除された時、個人辞書を保存する"
  (if (or my-skk-jisyo-updated purge)
      (progn
        (skk-save-jisyo 'quiet)
        (setq my-skk-jisyo-updated nil))))

これで便利になりました!
ddskk で単語を登録して、すぐに skkime からもその単語を変換できるようになっていることを確認してみてください。

さて、続いてこんどは逆に ddskk から skkime の個人辞書を参照できるようにしましょう。

追記@Fri Dec 17 03:00:47 2010

2010/12/17 以降の CVS 版 ddskk をお使いの場合は、上記の代わりに以下のように書くだけで良くなりました。※コメント参照

(setq skk-save-jisyo-instantly t)

ddskk 開発者の北本さんが、同等の機能を ddskk 本体に取り込んでくださいました。
ありがとうございます!

ddskk から skkime の個人辞書を参照する

実はこれから紹介する方法はあまりスマートではありません。
と言うのも、前項のように辞書を更新する適切なトリガーが無い(あるいは、ぼくが知らない)ので、手動で更新するような形になってしまうのです。

まず、いくつかのツールが必要になるので、以下からダウンロードするなどして用意してください。

それぞれの実行可能ファイルを PATH の通ったディレクトリに置いて、以下のように .skk ファイルへ追記します。

(setq skk-extra-jisyo-file-list
      (list '("c:/Users/yu-ji/home/.skkime-jisyo_euc_sort" . euc-jp)))

(defun my-skk-update-skkime-jisyo ()
  "skkime の個人辞書を保存し、文字エンコーディングを変換し、ソートする
既に読み込まれていれば辞書バッファーを削除する"
  (interactive)
  (let* ((extra-jisyo-dir "c:/Users/yu-ji/home/")
         (extra-jisyo-name ".skkime-jisyo_euc_sort")
         (skkime-jisyo-dir "c:/Users/yu-ji/home/")
         (skkime-jisyo-name ".skkime-jisyo")
         (sync-command "syncskkiserv")
         (nkf-command "nkf -W16L -e -Lu -d")
         (buf (get-buffer (concat " *" extra-jisyo-name "*")))
         (command-line (concat sync-command
                               " && " nkf-command
                               " < " skkime-jisyo-dir skkime-jisyo-name
                               " | " "skkdic-sort"
                               " > " extra-jisyo-dir extra-jisyo-name)))
    (shell-command command-line)
    (if (buffer-live-p buf)
        (kill-buffer buf))))

辞書ファイルのパスはお使いの環境に合わせてください。既定では、

  • C:/Documents and Settings/ユーザー名/Application Data/skk/skki1_5
    あるいは、
  • C:/Users/ユーザー名/AppData/Roaming/skk/skki1_5

などになっていると思います。

このとき nkf に渡すオプションでは、skkime 用の辞書の文字エンコーディングが UTF-16-LE、ddskk 用の辞書は EUC-JP を想定しています。実際のところ様々なエンコーディングを使えるのですが、skkdic-sort のフィルターを通す前に EUC-JP へ変換する必要があります。

これで M-x my-skk-update-skkime-jisyo とすると、skkime 用の個人辞書を変換して ddskk で使えるようにしたファイルが用意され、このファイルを ddskk から参照して変換できるようになります。

理想的には、skkime で単語を登録したタイミングで個人辞書を保存したり、ddskk 側で(個人辞書以外にも)ソートされていない辞書ファイルを扱えれば良いのかなぁと考えています。

(add-hook 'skk-mode-hook
          (lambda () (my-skk-update-skkime-jisyo)))

いまのところはこのように C-x C-j したタイミングで更新するようにして使っています。

ということで

後半はかなり弱気になってしまいましたが、どうでしょうか。Advent Calendar 初参加の @yunh がお送りいたしました。

もしほかの上手い方法をご存知のかたがいらしたらぜひ教えてください。
そして可能ならブログしてその記事を SKK Advent Calendar 2010 で!

七日目となる明日は tyru さん Humanity が書いてくださいます。
よろしくお願いします!

追記@Wed Jan 05 00:35:29 2011

Sunday, December 12, 2010

Emacs 23.2.91 pretest

Emacs 23.2.91

土曜日の早朝に、Emacs 23.3 へ向けた 2回目の pretest が出ました。
ドキュメント類の拡充・修正をはじめ、多くの調整・不具合修正が含まれています。

Windows 用のバイナリーもすでに公開されています。手元のビルドも問題無し。

Emacs 23.2.91 HELLO

HELLO ファイルに ancient Greek が追加されてました。

関連

Thursday, December 2, 2010

ActivePerl のモジュールをアップグレードする

PPM MSWin32-x86

ActivePerl の特徴の一つに Perl Package Manager (PPM) を使ったモジュール管理があります。

マウスでぽちぽちしてPerl モジュールをインストール、アップグレード、アンインストールできるもので、使い易い GUI アプリケーションがありますが、同等のことをコマンドラインから実行することもできます。

ppm help

コマンドプロンプトから ppm help と入力すると使い方が表示されます。

ActivePerl のインストールパッケージのリリース後、PPM リポジトリが利用可能になる頃にはいくつものモジュールの新しいバージョンが公開されていると思うので、モジュールのバージョンに関する事情が無ければごっそりアップグレードしてしまいましょう。

マウスでぽちぽちやっても同様の効果ですがコマンドラインからは以下のようにやります。

# ActivePerl インストール直後、モジュールアップグレード前
C:\Perl64\bin>.\ppm area list
┌───────┬──────┬────────────────────┐
│ name  │ pkgs │ lib                │
├───────┼──────┼────────────────────┤
│ site* │    0 │ C:/Perl64/site/lib │
│ perl  │  227 │ C:/Perl64/lib      │
└───────┴──────┴────────────────────┘

# PPM リポジトリの状態を更新
C:\Perl64\bin>.\ppm repo sync
Downloading ActiveState Package Repository packlist...done
Updating ActiveState Package Repository database...done

# アップグレード可能なモジュールをすべてアップグレード
C:\Perl64\bin>.\ppm upgrade --install

# ぜんぶアップグレードできました
C:\Perl64\bin>.\ppm upgrade
*** no upgrades available ***

新たにインストールするモジュールや、アップグレードされたモジュールは、既定では site エリアへ配置されます。

C:\Perl64\bin>.\ppm area list
┌───────┬──────┬────────────────────┐
│ name  │ pkgs │ lib                │
├───────┼──────┼────────────────────┤
│ site* │   65 │ C:/Perl64/site/lib │
│ perl  │  227 │ C:/Perl64/lib      │
└───────┴──────┴────────────────────┘

ActivePerl というと Windows の Perl ディストリビューションというイメージがあると思いますが、Mac OS X をはじめ各種 UNIX と GNU Linux 用のインストールパッケージも用意されています。

GUI のないサーバーへの接続時のほか、自分で作った ppm パッケージのインストール時にもコマンドラインからの PPM 操作を覚えておくと役立つことがあるかと思います。

自分でモジュールを書いている人は、Module::Build などを使って ppm パッケージを簡単に作ることができますよ。

…と書いたけど、PPM についてもっと突っ込んだ手っ取り早い記事が、上記 advent calendar の記事を書かれた @xaicron さんのブログにありました。

Wednesday, November 10, 2010

Emacs 23.2.90 pretest

Emacs 23.2.90

Emacs 23.3 リリースへ向けた pretest が始まりました。

ブランチは emacs-23 で、Emacs 23.2 から続く系列のバグフィックスと小さな改良のバックポートがメインとなり、trunk で実施されているような大きな変更は含まれません。 ざっとですが、各種言語モード、vc モード、国際化文字エンコーディング、tramp などに関連する修正があります。(CEDET 関連もあるようですが良く分かりません…)

NEWS ファイル(etc/NEWS または F1 n または view-emacs-news)をはじめドキュメント類はこれから整備されていくようです。

Windows の Emacs 23.2.90 を使ってみていますが、ぼくの使い方ではいまのところ問題無いようです。

準公式?有志による Windows 用のバイナリはまだ公開されていませんが、いずれ近いうちに公開されると思われます。

なお、trunk の Windows 用バイナリは、不定期に作成して公開してくださっている方がいます。

追記@Fri Nov 12 09:14:06 2010

Windows 用のバイナリが公開されました

Saturday, November 6, 2010

Postini inbound gateway のアドレスブロックが増えた

Google Apps の Postini (Message Security for Google Apps) で使われる inbound gateway の IP アドレスブロックが増えました。

従来 64.18.0.0/20, 207.126.144.0/20, 74.125.148.0/22
現在 64.18.0.0/20, 207.126.144.0/20, 74.125.148.0/22, 74.125.244.0/22

Apps Gmail のinbound gateway を設定している場合、この設定を更新しないと受信するメールを失なう可能性があります。

Postini new inbound gateway address block

Google Apps の Dashboard から Email settings へ入り、inbound gateway の内容を更新します。

以下、コピペ用(空白を含めるとエラーになります)
64.18.0.0/20,207.126.144.0/20,74.125.148.0/22,74.125.244.0/22

Help forum によると、2010年 10月の中旬~下旬くらいに増えたようです。

英語のヘルプ、ガイドなどは既に更新されているが、アナウンスはなにも無かった気がする。これ困ると思うんだけど…。

日本語のヘルプも一部は更新されているみたい。

追記@Sat Nov 06 03:27:44 2010

新しく増設された system で使われる IP アドレスブロックっぽいので、Postini の外から入ってくるメールであれば既存の system には影響しないのかも知れません。新しい system に入っているドメインから、従来の system (たとえばうちだと System 9)への経路はどういう風になるのか分かりませんけど…。

Sunday, October 17, 2010

AOD250 のディスクを SSD に換装してみた

Acer Aspire One D250 (AOD250 Br18) に SSD 載せてみた。AOD250 でやってみたシリーズ、たぶん最終回。

「SSD 160GB 以上のがお値頃になったら載せ替え」のつもりでいましたが、AOD250 の使い方が変わって大きなデータを入れる必要がなくなったので 80GB の SSD を載せてみた。

今回載せたのは Intel X25-M Mainstream SSDSA2MH080G2R5です。十分に枯れていて可もなく不可もない Intel SSD の主流モデル。

実際のところ AOD250 に対して X25-M はオーバースペックで、その性能を完全に引き出すことはできません。が、それでも HDD と比べれば数倍~数十倍のアクセス速度になりますから、悪い投資ではないと思います。とはいえ、160GB のやつは遊びで買うには少々お高いので 80GB に。

最近はデータをネットワーク上・クラウド上に置くことの敷居がほんとうに低くなったので、容量だけを考えれば 40GB のやつでも十分かも知れません。でも、容量だけじゃなくて性能と価格も、さらに、使いまわして保証期間の 3年を遊ぶつもりであれば、80GB の勝手が良さそうかな、と。

SSD ファームウェアのアップデート

買ったばかりの X25-M であれば大丈夫だと思いますが、念の為ファームウェアが最新かどうかを確認しておきます。

D250 SSD label

出荷時のファームウェアのバージョンは X25-M のラベル面に記載されています。Windows がオンラインなら、SSD Toolbox や CrystalDiskInfo 等のソフトウェアでも確認できます。

ファームウェアの最新バージョンの確認とアップデートツールのダウンロードは上記サイトから。

追記@Sun Jan 30 05:57:53 2011

不具合修正とパフォーマンス改善が図られた BIOS のアップデート Revision 02M3 (2CV102M3) が出ています。

HDD から SDD へ載せ替え

うちの AOD250 には Western Digital の WD1600BEVTが載っていましたので、これを外して X25-M を載せます。

D250 HDD / SSD  BIOS

D250 ura1 Windows をシャットダウンして電源抜いてバッテリー外して引っくり返す。

D250 ura2 シールを綺麗に剥すなりネジの部分を削って穴をあけるなり。

ネジ 2個はずしてカバーをあけます。

D250 ura3 HDD のマウンター?ケースがネジ止めされているので外し、スライドさせると SATA と電源のコネクターが抜けて、HDD をケースごと取り外せるようになる。

D250 ura4 スライドと取り外しは、ゴムとスポンジの緩衝材が入っている関係でけっこう固いです。

HDD ケースをスライドさせて、この写真でいう左側にくっつくくらいになっていれば、コネクターは外れています。

SSD に載せ替えてもケースと緩衝材は同じものを使うので痛めたり歪めないように注意が必要です。

D250 ura5 四隅のネジを外して、ケースと HDD を分離。

D250 ura5-2 外した HDD とコネクターの向きを同じにして SSD をケースに付ける。

ふーふーしたらダメって任天堂が言ってた。

D250 ura6 ケースに付けた SSD を本体の中に戻すとき、本体にくっついている緩衝材を折ったり曲げたりしないよう注意。

この緩衝材の方向へ押し付けるようにすると、スムースに格納できる。

外したときと同様に、右へスライドして SSD と本体の SATA コネクターを接続する。

D250 ura7 ケースのネジを締め、カバーをして、カバーのネジを締める。

おしまい。

インストール

HDD のときとなにも変わりません。普通にインスコ。

なお、再インストール無しに換装したいという向きには Intel Migration Software という、現 HDD から SSD にごっそりデータを移行(クローン)するツールも提供されています。(ぼくは使いませんが…)

参考までにぼくは以下の順でインストールしました。

  1. Windows 7
  2. Intel Chipset Software Installation Utility
  3. Intel Solid-State Drive Toolbox
  4. Intel Rapid Storage Technology (RST)
  5. Intel Graphics Media Accelerator Driver
  6. Acer ePower Management
    バックアップ DVD の AppDrv1 から
  7. Atheros LAN AR8132
  8. Broadcom WLAN BCM43xx
    後述の Acer のドライバーダウンロードページから
  9. Broadcom WIDCOMM Bluetooth Software
  10. Realtek USB 2.0 Card Reader
    "Computer Peripheral ICs" → "Card Reader Solutions" → "Card Reader Controllers" → "Software"
  11. Realtek High Definition Audio Codecs
    "Computer Peripheral ICs" → "PC Audio Codecs" → "High Definition Audio Codecs" → "Software"
  12. Synaptics Pointing Device Driver
    後述の Acer のドライバーダウンロードページから
  13. Broadcom Crystal HD Video Decoder Drivers
  14. Microsoft IntelliPoint
    Download Software / ソフトウェアのダウンロード
  15. DirectX
  16. Dritek Launch Manager (Acer)
    後述の Acer のドライバーダウンロードページから
  17. Windows Update

モデルによって搭載されているハードウェアが異なるかも知れないので、各種ドライバー類は使っているモデルに合ったものを。上記の Crystal HD なんかは後から増設したものです。

Windows 7 のインストールディスクに含まれていないもの、および、AOD250 出荷後にアップデートされたドライバー・ソフトウェアは Acer のサイトからダウンロードできるものもあります。

これらをインストールした段階で以下のようになります。

Intel Rapid Storage Technology
Intel Rapid Storage Technology

Intel SSD Toolbox - System Configuration Tuner
Intel SSD Toolbox - System Configuration Tuner
インストール直後は SuperFetch が有効になっていると思うので無効にします。

Intel SSD Toolbox - Check SMART Attributes
Intel SSD Toolbox - Check SMART Attributes

CrystalDiskInfo
CrystalDiskInfo

CrystalDiskMark
CrystalDiskMark

ベンチマークの結果でシーケンシャルリードと 512K ランダムリードの値が、(他で X25-M を使った人には信じられないくらい)低い値になっていますが、これが AOD250 の ICH7M の限界っぽいです。どんまい。

-----------------------------------------------------------------------
CrystalDiskMark 3.0 (C) 2007-2010 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   133.619 MB/s
          Sequential Write :    82.190 MB/s
         Random Read 512KB :   122.752 MB/s
        Random Write 512KB :    80.779 MB/s
    Random Read 4KB (QD=1) :    12.974 MB/s [  3167.5 IOPS]
   Random Write 4KB (QD=1) :    27.003 MB/s [  6592.5 IOPS]
   Random Read 4KB (QD=32) :    61.047 MB/s [ 14904.1 IOPS]
  Random Write 4KB (QD=32) :    54.729 MB/s [ 13361.5 IOPS]

  Test : 100 MB [C: 22.0% (16.4/74.4 GB)] (x5)
    OS : Windows 7 Ultimate Edition [6.1 Build 7600] (x86)

CrystalDiskMark を動かしていたあいだの状態は以下のような感じ。(Sysinternals Process Explorer の System Information)

Process Explorer - System Information
Process Explorer - System Information

Windows Experience Index
Windows Experience Index
ディスクはいっちょまえです ;)

使い勝手

速くなった!軽く感じる!持ち歩きの振動も気にしない!右手ひんやり!

極普通に想定した結果になりました。AOD250 を使うようなちょっとした用途を快適にという意味で、大いに使い勝手が向上したと思います。型落ちなのに生き返ってまだまだ使えそう。

発熱に関して、SSD はほぼ無いような感じなので、手に温度が直接伝わる Netbook ではすごく具合が良い。AOD250 に向かって右側の SSD が入っている半分はずっとひんやり。まぁ、左側は Crystal HD で変わらずの温もりっぷりですけども。HDD は確かに熱くなりますが、HDD 自体よりも釣られてキーボードやシャーシに籠った熱が不快の原因なんですね。

という感じで、AOD250 いぢりはこれにておしまい。ハードウェア大嫌いなぼくですが、AOD250 は面倒なこともなく遊べる、ぼくみたいのがいじっても壊れない、ほんと良い Netbook でした。

AOD250 関連記事

Saturday, July 17, 2010

windres: can't open icon file `icons\emacs.ico'

MinGW / MSYS の環境を作り直して、久しぶりに Emacs の emacs-23 ブランチをビルドしてみたら、make all や make bootstrap で emacs.exe を作るときに windres がコケるようになってた。

$ make bootstrap (的なコマンドライン)
(略)
windres -O coff --include-dir ../nt -o oo-spd/i386/emacs.res ../nt/emacs.rc
rm oo-spd/i386/temacs0.a
rm: cannot lstat `oo-spd/i386/temacs0.a': No such file or directory
make[2]: [oo-spd/i386/temacs0.a] Error 1 (ignored)
ar -rsc oo-spd/i386/temacs0.a oo-spd/i386/emacs.o
windres: can't open icon file `icons\emacs.ico': No such file or directory
make[2]: *** [oo-spd/i386/emacs.res] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/c/Users/yu-ji/home/src/wc/emacs/emacs-23/src'
make[1]: *** [bootstrap-temacs] Error 2
make[1]: Leaving directory `/c/Users/yu-ji/home/src/wc/emacs/emacs-23/src'
make: *** [bootstrap-gmake] Error 2

(並列に走ってる部分なので余計なメッセージも混ざってますが…)

使ったのは binutils-2.20.51-1-mingw32-bin.tar.lzma で、以前の環境で正常だったはずの binutils-2.20-1-mingw32-bin.tar.gz の windres に戻しても同様にコケる。

=== modified file 'nt/emacs.rc'
--- nt/emacs.rc 2010-05-08 04:46:44 +0000
+++ nt/emacs.rc 2010-07-17 07:33:02 +0000
@@ -1,5 +1,5 @@
-Emacs ICON   icons\emacs.ico
-32649 CURSOR icons\hand.cur
+Emacs ICON   icons/emacs.ico
+32649 CURSOR icons/hand.cur
 1 24 "emacs.manifest"

 #ifndef VS_VERSION_INFO

emacsclient.rc のほうは直さなくてもいいみたい。なんでしょうね…。MinGW / MSYS の環境作りでなにか忘れてるのかなぁ。

Friday, June 25, 2010

ActiveState Perl Dev Kit 9.0 / ActivePerl 5.12.1

Perl Dev Kit(PDK) 9.0 が先週出たので PDK 8 からアップグレードしました。PDK は 9.0 から Perl 5.12 に対応したので、併わせて ActivePerl も 5.10.1 から 5.12.1 へアップデート。

ようやく Perl 5.12 を本格的に使えそうです。まずはアップデートされた各モジュールのキャッチアップから…これがいちばん大変そう。PPM で提供されるモジュールも変わっているので、自分のモジュールもいまだインストールできない状態です(´д`)

Wednesday, June 2, 2010

MinGW gcc 4.5.0 の -march=native を Core i7 860 で

以前 "MSYS gcc 4.5.0" と書いていましたが "MinGW gcc 4.5.0" の間違いです。

MinGW gcc 4.5.0 の -march=native オプションを Core i7 860 で使うと適用されるオプションがおかしい。

のシェルスクリプトを拝借して…、
(一部手動改行)

## 参考に Cygwin で。
$ cat /proc/cpuinfo | grep '^model ' | sort | uniq
model name      : Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz

$ uname -a
CYGWIN_NT-6.1-WOW64 devildoll 1.7.5(0.225/5/3) 2010-04-12 19:07 i686 Cygwin

$ gcc --version
gcc (GCC) 4.3.4 20090804 (release) 1
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ ~/work/gcc_native.sh
-march=core2 -mcx16 -msahf --param l1-cache-size=32
--param l1-cache-line-size=64 -mtune=core2


## MinGW / MSYS で。
$ uname -a
MINGW32_NT-6.1 DEVILDOLL 1.0.14(0.47/3/2) 2010-03-17 23:02 i686 Msys

$ gcc --version
gcc.exe (GCC) 4.5.0
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ ./work/gcc_native.sh
-march=atom -mcx16 -msahf -mpopcnt -msse4.2 --param l1-cache-size=32
--param l1-cache-line-size=64 --param l2-cache-size=8192 -mtune=core2

(ノ∀`) アチャー atom て

Friday, May 14, 2010

zlib

こないだ zlib はオフィシャルから配布されてた DLL を使いましたが、新バージョン公開後すぐにバイナリーが上がるわけではないみたい。なので自分で make してみた。

win32/DLL_FAQ.txt によればオフィシャルの DLL を使うよう推奨しているのにね…。

## Cygwin で
$ cd ~/src
$ wget http://zlib.net/zlib-1.2.5.tar.bz2
$ tar xjf zlib-1.2.5.tar.bz2

## MinGW で
$ cd zlib-1.2.5
$ cp contrib/asm686/match.S ./match.S
$ make LOC=-DASMV OBJA=match.o -fwin32/Makefile.gcc
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o adler32.o adler32.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o compress.o compress.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o crc32.o crc32.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o deflate.o deflate.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o gzclose.o gzclose.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o gzlib.o gzlib.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o gzread.o gzread.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o gzwrite.o gzwrite.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o infback.o infback.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o inffast.o inffast.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o inflate.o inflate.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o inftrees.o inftrees.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o trees.o trees.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o uncompr.o uncompr.c
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o zutil.o zutil.c
gcc -DASMV -Wall -c -o match.o match.S
ar rcs libz.a adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o match.o
windres --define GCC_WINDRES -o zlibrc.o win32/zlib1.rc
gcc -shared -Wl,--out-implib,libzdll.a -DASMV \
        -o zlib1.dll win32/zlib.def adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o match.o zlibrc.o
Creating library file: libzdll.a
strip zlib1.dll
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o example.o example.c
gcc -DASMV -o example.exe example.o libz.a
strip example.exe
gcc -DASMV -O3 -Wall -DNO_VIZ -c -o minigzip.o minigzip.c
gcc -DASMV -o minigzip.exe minigzip.o libz.a
strip minigzip.exe
gcc -DASMV -o example_d.exe example.o libzdll.a
strip example_d.exe
gcc -DASMV -o minigzip_d.exe minigzip.o libzdll.a
strip minigzip_d.exe

$ make test testdll -fwin32/Makefile.gcc
./example
zlib version 1.2.5 = 0x1250, compile flags = 0x255
uncompress(): hello, hello!
gzread(): hello, hello!
gzgets() after gzseek:  hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!
echo hello world | ./minigzip | ./minigzip -d
hello world
./example_d
zlib version 1.2.5 = 0x1250, compile flags = 0x255
uncompress(): hello, hello!
gzread(): hello, hello!
gzgets() after gzseek:  hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!
echo hello world | ./minigzip_d | ./minigzip_d -d
hello world

## Cygwin で
$ tar cvzf zlib-1.2.5-win32-x86-unofficial-uch.tar.gz \
> ./zlib-1.2.5/*.{exe,dll}
./zlib-1.2.5/example.exe
./zlib-1.2.5/example_d.exe
./zlib-1.2.5/minigzip.exe
./zlib-1.2.5/minigzip_d.exe
./zlib-1.2.5/zlib1.dll

いちおう置いてみます。オフィシャルの DLL が出たのに気づいたら消します。ダウンロード前に http://www.zlib.net/ をチェックしてみてください。

  • http://w4.hoso.net/files zlib-1.2.5-win32-x86-unofficial-uch.tar.gz

追記@Wed Aug 18 17:03:52 2010

オフィシャルの DLL がでています。

Monday, May 10, 2010

Emacs 23.2 released

NTEmacs 23.2

週末に Emacs 23.2 がリリースされました。

23.1.97 からの変更は、Windows の nmake で make が通るよう nt/makefile.w32-in が修正されたくらいです。

Windows 用のバイナリーも公開されています。

それに伴い emacs-23 ブランチのバージョンは 23.2.50 となり 23.3 に向けたバグフィックスに開放されました。

## emacs-23 ブランチで 23.2 リリースの EMACS_23_2 タグをチェックアウト
$ bzr revert -r tag:EMACS_23_2
## emacs-23 ブランチ HEAD へ戻る
$ bzr revert

なんか用語が怪しいですが…。

Wednesday, May 5, 2010

Emacs 23.1.97 pretest

NTEmacs 23.1.97

Emacs 23.2 リリースへ向けた 23.1.97 pretest が出ました。
特別な問題がなければこれが最後の pretest となり 23.2 がリリースされるようです。

Windows での NTEmacs のビルドに問題無し。

追記@Wed May 05 21:43:13 2010

Windows 用のバイナリーが公開されました。

Friday, April 30, 2010

AOD250 Bk83 を Br18 にして すのこタン。に乗っけてみた

もうお金かけないぞっ!」と言ってから二ヶ月…我慢できませんでした、今月始めから断続的にパーツを買い込み、またこのおもちゃにお金をかけてしまいました。

AOD 250 Br18

今回は Acer Aspire One D250 AOD 250 Bk83AOD 250 Br18 に換えました。というか、つまり、本体そのものを買い増ししました…。

AOD 250 後期モデル Bx18 は初期モデル Bx83 と比べて、ハードウェアのスペックはほぼそのままで、液晶パネルが 1280×720 に、バッテリーが 3セルから 6セルとなり、標準の OS が Windows XP Home Edition から Windows 7 Starter になったものです。

AOD250 Bk83   Br18
AOD250 Bk83 & Br18
家の物置部屋で見苦しいけど毒男は写り込んでないはず…

液晶パネルの大きさは 10.1インチで同じです。黒と赤は、キーボード・タッチパネルまわりがしわしわ加工(?)なのも一緒です。無線 LAN の切り替えスイッチは Br18 のほうが使い易い形状になっていました。

すのこタン。

すのこタン。

仕事に使えるマシンじゃないのでオフィスではまず使いませんが、電源入れとくだけでも、特に Crystal HD のところがぬくもりたっぷりになるので、オフィス用のすのこタン。も買いました。 AOA150 / AOD250 は A4 でも Mobile でもなく素のすのこタン。がぴったりフィットします。

SDHC で ReadyBoost

SDHC を使った ReadyBoost、これまで Bk83 で SDHC Class 6 8GB を使っていて、Br18 の試運転の間はナシ、その後 SDHC Class 10 8GB を刺してみました。
なんでこんなことしたかと言うと、SDHC で ReadyBoost しても快適さは実はさほど変わらんよね、というのを実感したくて。(´・ω・`)

CrystalMark HDD SDHC C10

ベンチマークはこんな感じ。

体感速度向上に必要と言われているランダム 4KB リードは、さすがに HDD よりかは速いけど、といった程度。この SDHC は上海問屋のオリジナルの Class 10 のやつで、いちおうカタログ記載通りの速度が出ているようです。…つまりカードリーダーがへぼくってパフォーマンスが出ないというわけではない。

USB メモリーが使えれば、頭抜けてこの二倍以上の速度にはなると思います。物理的にでっぱると持ち運びに邪魔なので使いませんけどね。

さて、前回の SDHC で ReadyBoost した記事には、どれくらいパフォーマンスが向上するのかという情報を求めて読みにきてくれた人が多かったです。なので今回、どんな感じかをしっかり書こうと思いました。

…が。やっぱ分かんないね、これ、気のせいだよ。(ノ∀`)

ま、せっかく買ったので、特別パフォーマンスの向上がなくても、どこかでパフォーマンスが落ちないという方向で意味があるかも知れないから、ReadyBoost いれたままにしてみます。

前にやったことぜんぶ

そんなわけで、これまで Bk83 に施したものをすべて Br18 にやってみた。

Windows 7 入れ替えて、バッテリー 3セルに交換して、現状文句無しのおもちゃになったと思います。:)

AOD 250 Br18

Aspire One は後継機がいくつか出ていますけれど、個人的には食指が動きません。751 も 532h も 532G もいまいち。あんまり高望みするようだと、ちゃんとしたの買ったほうが良いし、けど買っても別に使うわけではないし… D250 くらいのおもちゃが遊びにちょうど良い感じです。

つーことで、次は SSD 160GB 以上のがお値頃になったら載せ替えます。
たぶん(・∀・)

参考

Tuesday, April 20, 2010

Emacs 23.1.96 pretest

NTEmacs 23.1.96

Emacs 23.2 リリースへ向けた 7回目の pretest、Emacs 23.1.96 が出ました。

今回は Windows の NTEmacs のビルドに問題は無さそう。

時間がないのでじっくり見ていませんが、ざっとログを流したところ、ドキュメントの追加・修正がほとんどのようです。リリースに向けてきちんとドキュメントを整備していくのって素晴しい@尊敬

新たなリリースブロックがなく順調にいけば、次が最後の pretest で Emacs 23.2 のリリース候補となるそうです。

追記@Wed Apr 21 09:33:28 2010

23.1.96 の Windows 用バイナリーが公開されました。

Sunday, April 18, 2010

libXpm, libjpeg, libpng

Windows の Emacs (NTEmacs) のイメージサポートに必要な DLL を作る。

現実逃避メモ。

libXpm

#
# XPM
#

$ cd ~/src/
$ wget http://alpha.gnu.org/gnu/emacs/pretest/windows/libxpm-3.5.7-w32-src.zip
$ unzip libxpm-3.5.7-w32-src.zip
$ cd libXpm-3.5.7/src

# MinGW で
$ make
$ cp -pf libXpm.dll /c/emacs/23/bin

# 後始末
$ rm -f *.{dll,o}

または、

$ wget http://ftp.gnu.org/pub/gnu/emacs/windows/libxpm-3.5.8-w32-src.zip
$ mkdir libXpm-3.5.8
$ cd libXpm-3.5.8
$ unzip ../libxpm-3.5.8-w32-src.zip
$ cd src
$ rm -f *.{dll,o}

# MinGW で
$ make

# 後始末
$ rm -f *.{dll,o}

この libxpm-3.5.8-w32-src.zip はたまたま置いてあるだけかも。バイナリもはいってるし。

libjpeg

#
# JPEG
#
# Independent JPEG Group
# http://www.ijg.org/
#

$ wget http://www.ijg.org/files/jpegsrc.v8a.tar.gz
$ tar xzf jpegsrc.v8a.tar.gz
$ cd jpeg-8a/

# MinGW で
$ ./configure CFLAGS="-O2 -mno-cygwin -march=native"
$ make
$ cp -pf .libs/libjpeg-8.dll /c/emacs/23/bin/libjpeg.dll

# 後始末
$ make distclean

zlib

オフィシャルバイナリありがたや。

#
# zlib
#
# zlib Home Site
# http://www.zlib.net/
#

$ wget http://zlib.net/zlib124-dll.zip
$ unzip zlib124-dll.zip
$ cp -pf zlib-1.2.4/zlib1.dll /cygdrive/c/emacs/23/bin

追記@Fri May 14 02:13:19 2010
その後やっぱり自分で作ってみた。

libpng

#
#PNG
#
# libpng Home Page
# http://www.libpng.org/pub/png/libpng.html
#
$ wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.4.1.tar.gz
$ tar xzf libpng-1.4.1.tar.gz
$ cd libpng-1.4.1
$ mkdir include
$ cp png.h pngconf.h include/

# MinGW で
$ cp scripts/makefile.mingw Makefile
$ make CFLAGS="-Ic:/Users/yu-ji/home/src/zlib-1.2.4"
$ cp -pf libpng14.dll /c/emacs/23/bin/libpng.dll

# 後始末
$ make clean

giflib

息抜きに…じゃ済まなさそうなので、またいずれ。

libtiff

#
# TIFF
#
# LibTIFF - TIFF Library and Utilities
# http://www.remotesensing.org/libtiff/

$ wget http://download.osgeo.org/libtiff/tiff-3.9.2.tar.gz
$ tar xzf tiff-3.9.2.tar.gz
$ cd tiff-3.9.2

# MinGW で
$ ./configure CFLAGS="-O2 -mno-cygwin -march=native" \
 --with-zlib-include-dir=c:/Users/yu-ji/home/src/zlib-1.2.4 \
 --with-zlib-lib-dir=c:/Users/yu-ji/home/src/zlib-1.2.4 \
 --with-jpeg-include-dir=c:/Users/yu-ji/home/src/jpeg-8a \
 --with-jpeg-lib-dir=c:/Users/yu-ji/home/src/jpeg-8a
$ make
# 途中でこけるけど
$ cp -pf libtiff/.libs/libtiff-3.dll /c/emacs/23/bin/libtiff.dll

# やっぱダメ

DLL できたけど、なんか変。なのでまたこんど。

configure.bat

emacs/nt/configure.bat

configure.bat --with-gcc --no-cygwin --no-debug --prefix=C:/emacs/23 \
 --cflags -Ic:/Users/yu-ji/home/src/libXpm-3.5.8/include \
 --cflags -Ic:/Users/yu-ji/home/src/libXpm-3.5.8/src \
 --cflags -Ic:/Users/yu-ji/home/src/jpeg-8a \
 --cflags -Ic:/Users/yu-ji/home/src/zlib-1.2.4 \
 --cflags -Ic:/Users/yu-ji/home/src/libpng-1.4.1/include \
 --without-gif --without-tiff

目的

後先ですが…、セキュリティ絡みの修正がでても更新されない gnuwin32 の DLL を卒業したいと思った。

さっと息抜きに済ませるはずが、giflib が手強くって、gnuwin32 からソース落として patch を眺めたところで諦めた。libtiff も時間のあるときに延期。

gnuwin32 が更新されたら何も心配しないで済むんですが…。

Friday, April 16, 2010

ActivePerl 5.12.0 build 1200

ActiveState の ActivePerl 5.12.0 build 1200 がリリースされていました。

が、まだ PPM リポジトリが絶賛ビルド中であることと、PDK が 5.12 をサポートするのは向こう二ヶ月くらい先になりそうだということで、個人的には次のリリースまで様子見の予定。

Wednesday, April 14, 2010

AOD250 + Crystal HD Driver 3.3.0 + Flash 10.1 rc

Crystal HD Driver 3.3.0 と Flash Player 10.1 rc(release candidate) が出ていたので再々レビュー。
ちょっと良くなった!

D250 CrystalHD Flash 1080p

スケールもばらばら、超てきとうな切り貼りキャプチャー。これ、下のほうに書いてある Youtube の Nvidia PureVideo HD 1080p を D250 で再生したところ。前回の Crystal HD Driver 3.1.8 + Flash Player 10.1 beta 3 と比べると、負荷も描画のカクカク度もかなり軽減されています。…まぁ動画として見れたもんじゃないという意味では前と同じ。

AOD250 ではいくら Crystal HD を積んでも、ここらへんが限界なのかなぁ。通常の動画再生ならフル HD でもぬるぬるなので、もうちょっと頑張って欲しいけれど。

H.264 720p くらいの Youtube、ニコ動なら CPU 負荷 40% 前後、映像もスムースで綺麗でした。ニコ動の弾幕も平気な感じ。

Acer Aspire One AOD250, 2GB Memory, Windows 7 x86, Broadcom Crystal HD BCM970012 Driver 3.3.0, Adobe Flash Player 10.1 rc Plugin, Firefox 3.6.3

ついでに、デスクトップの GT 240 + NVIDIA DRIVERS 197.45 WHQL も Flash 10.1 サポートがはいったので試してみたところ、こっちは楽勝綺麗なスムースさでした。

Saturday, April 3, 2010

Emacs 23.1.95 pretest

NTEmacs 23.1.95

Emacs 23.2 リリースに向けた 6回目の pretest、Emacs 23.1.95 が出ました。前回の 23.1.94 から emacs-23 ブランチです。

pretest 直前 revno 99713 の影響で、Windows では movemail が壊れているため make が通りません。

revno 99713 は movemail の privilege escalation / race condition (CVE-2010-0825) の修正なので、movemail を使っているかた、これまでの Emacs pretest を使っているかたはアップデートが必要です。

tarball からの 23.1.95 pretest を Windows で使うひとは、以下の patch を使ってみてください。emacs-23 ブランチ HEAD では修正されています。

=== modified file 'lib-src/ChangeLog'
--- lib-src/ChangeLog	2010-04-02 15:24:16 +0000
+++ lib-src/ChangeLog	2010-04-03 02:45:22 +0000
@@ -1,3 +1,9 @@
+2010-04-03  Juanma Barranquero  <lekktu@snip>
+
+	Add stubs for Windows, required after CVE-2010-0825 change.
+	* ntlib.c (getgid, getegid, setegid): New stubs.
+	* ntlib.h (getgid, getegid, setegid): Declare them.
+
 2010-04-02  Dan Rosenberg  <dan.j.rosenberg@snip>  (tiny change)
 
 	* movemail.c (main): Check return values of setuid.  Avoid

=== modified file 'lib-src/ntlib.c'
--- lib-src/ntlib.c	2010-01-13 08:35:10 +0000
+++ lib-src/ntlib.c	2010-04-03 02:45:22 +0000
@@ -125,12 +125,30 @@
   return 0;
 }
 
+unsigned
+getgid ()
+{
+  return 0;
+}
+
+unsigned
+getegid ()
+{
+  return 0;
+}
+
 int
 setuid (unsigned uid)
 {
   return 0;
 }
 
+int
+setegid (unsigned gid)
+{
+  return 0;
+}
+
 struct passwd *
 getpwuid (unsigned uid)
 {

=== modified file 'lib-src/ntlib.h'
--- lib-src/ntlib.h	2010-01-13 08:35:10 +0000
+++ lib-src/ntlib.h	2010-04-03 02:45:22 +0000
@@ -36,7 +36,10 @@
 char * getlogin ();
 char * cuserid (char * s);
 unsigned getuid ();
+unsigned getegid ();
+unsigned getgid ();
 int setuid (unsigned uid);
+int setegid (unsigned gid);
 char * getpass (const char * prompt);
 int fchown (int fd, unsigned uid, unsigned gid);
 

23.1.94 pretest では、3/31 に Windows 用のバイナリが公開されました。23.1.95 では上記修正済みのバイナリ公開が期待できるかも?

追記@Tue Apr 06 01:37:50 2010

23.1.95 の Windows 用バイナリが公開されました。

Wednesday, March 31, 2010

NTEmacs で Super / Hyper モディファイアを使う

右に Windows キーのあるキーボードを使うようになったので、右の Win キーを Super モディファイアに、App キーを Hyper モディファイアに使えるよう NTEmacs を設定してみた。

;; 右 Win キーを Super モディファイアキーに
(setq w32-pass-rwindow-to-system nil)
(setq w32-rwindow-modifier 'super)

;; 左 Win キーを Super モディファイアキーに
;;(setq w32-pass-lwindow-to-system nil)
;;(setq w32-lwindow-modifier 'super)

;; Super + Shift + s で「先生!お願いしますっ!」
(define-key global-map [(s S s)] 'doctor)

;; App キーを Hyper モディファイアキーに
(setq w32-apps-modifier 'hyper)

;; Hyper + なんちゃらでフレーム操作
(define-key global-map [(H f)]
  '(lambda (arg) (interactive "p") (other-frame (- arg))))
(define-key global-map [(H b)]
  '(lambda (arg) (interactive "p") (other-frame arg)))
(define-key global-map [(H o)] 'other-frame)
(define-key global-map (kbd "H-2") 'make-frame-command)
(define-key global-map (kbd "H-0") 'delete-frame)

Win キーとの組み合わせは Windows シェルの explorer でホットキーに使われているキーがけっこうあって、いまいち使いづらい感じです。Windows のホットキーはアプリケーションにキーが渡る前に処理されるので、NTEmacs 側ではどうにもならないんですね。

他のモディファイアキーと組み合わせたり、prefix キーにすればあるいは…でも、そこまでして使いたいバインディングがあるわけじゃなく…。ちょっと活用が思いつかないなぁ。

App キーはふつうに便利に使えそう。

Monday, March 15, 2010

Emacs 23.1.94 pretest

NTEmacs 23.1.94

Emacs 23.2 リリースに向けた 5回目の pretest、Emacs 23.1.94 が金曜日に出ました。

今回は開発者有志による Windows バイナリが公開されそうな雰囲気だったのですが、現時点では出ていません。

今回からは Emacs 23 用に切られた emacs-23 ブランチが対象となります。これに伴ない trunk は Emacs 24 に向けて解放されたみたい。

ぼくは ~/src/wc/emacs を shared repository にしていて(emacswiki のどこかに書いてあった形)、以下のような感じで emacs-23 ブランチへ移行しました。

MSYS で:
$ cd ~/src/wc/emacs/trunk/nt
$ ../../../emacs.make.sh realclean && ../../../emacs.make.sh distclean
(emacs.make.sh は以前の記事 u-ch: Emacs pretest 23.1.92 で書いたシェルスクリプト)
Cygwin で:
$ cd ~/src/wc/emacs
$ bzr branch http://bzr.savannah.gnu.org/r/emacs/emacs-23 emacs-23
$ cd emacs-23
$ bzr bind http://bzr.savannah.gnu.org/r/emacs/emacs-23

これで trunk とはしばらくお別れです。

Windows 7 では日本語環境にデフォルトで選択されるフォントが適切ではないようです。たぶん Vista もかな。XP 日本語版では問題無いっぽい。うちの Win7 ではひらがなやカタカナには BatangChe(韓国語フォント) が選択されてしまってます。

ここらへん日本語を使う NTEmacs 入門者の為の調整があると良さそうですが、どうなるでしょうね。

追記@Wed Mar 31 01:38:36 2010

Windows 用のバイナリが公開されました。今週末、次の pretest が公開される予定です…。

Friday, March 5, 2010

Realforce87U SE170S 静音仕様

りあふぉ買いました。りあふぉ。

「東プレ Realforce87U 英語配列 【静音仕様】 逆輸入モデル SE170S」というのを買ってみました。

SE170S - SE0500
SE170S(手前)と SE0500(奥)

これまで使っていた Realforce86U SE0500 に右 Win キーが追加され、Scroll Lock が Num Lock キーと併用になって、Num Lock キーと Caps Lock に青色 LED が付いた…のがたぶん SE1700 で、それを静音仕様にしたものが SE170S だそうです。詳しくは ShopU のページで。

さっき来たばかりで、ざっと試し打ちしかしていないので、ちょっとだけファーストインプレッション。

まず音。静かです!

ぼくは SE0500 でスペースキーを叩いたときの音、指が離れて返ってきたときの音、これが嫌いでした。スペースキーだけ特別に耳障りだったんだけど、SE170S ではそれがまったく無くって、他のキーと同様の音で済んでます。これはいい。満足。
他のキーも SE0500 と比べたら SE170S は非常に静か。

キータッチは、SE0500 とは違う感触です。耳を塞いでみたら確かに「りあふぉの押下感」なんだけど、最初にタイプしたときには一瞬、黒軸かと思った。

品物到着のお礼メールに返信をくださった ShopU 店長さんが言った「打ち心地が一層しっとり」というのを見て、あぁこりゃ「しっとり」と表現するのかぁと思った。そう、しっとりです。

静音効果とあいまった思い込みかも知れませんが、キーが全体的に軽やかな感じがして、心地いいです。

SE170S - SE0500 - switch

キートップはずしてみたら、中の鉄板もスイッチも違ってました。これが静音仕様なのかな。

で、タイプ時の音を撮ってみました。携帯なのでアレですけど、生で聞く音とそう違いないと思います。

タイプしているのは ENTER ENTER C-h C-h 続けて "the quick brown fox jumps over the lazy dog." ENTER を 3セット、最後に C-@ C-p C-p C-p C-w です。
単語の最後、一拍おく前の音がスペースキーの音。SE0500 と大違いです。

買う前に懸念していた「青色 LED まぶしいの邪魔」というのは、そういえば普段は LED 消えてるのでまったく問題になりませんでした。

あとは右 Win キーを使いこなすのと、右 Win キー と App キーを誤爆するのを気をつけるだけかな…。

初めて買ったりあふぉに比べたら、これは文句無しの大満足です。

追記@Mon Jul 05 09:57:38 2010

ShopUさんの再入荷で予約受け付けが始まっています。ぼくが買ったときにはメーカー保証無しでしたが、今回は「あり」になったようで、安心して買えるようになりました。

Thursday, March 4, 2010

twittering-mode の短縮 URL に j.mp / bit.ly を使う設定

tweet 入力中に F4 キーで使える短縮 URL の生成に、TinyURL.comto.ly じゃなくて j.mp / bit.ly を使う設定。

(add-to-list 'twittering-tinyurl-services-map
	     '(jmp . "http://api.j.mp/shorten?version=2.0.1&login=YOUR_LOGIN&apiKey=YOUR_API_KEY&format=text&longUrl="))
(setq twittering-tinyurl-service 'jmp)

試してないけど bit.ly のときは "j.mp" を "bit.ly" にすればいいんだと思う。

これは tweet に URL を含めるときに、長い URL でも短縮してくれる機能。
例えば http://supercalifragilisticexpialidocious.example.net/ みたいな文字数のかさむ URL でも http://j.mp/bdx9xe で使えるようにしてくれる。
http://twoallbeefpattiesspecialsaucelettucecheesepicklesonionsonasesameseedbun.example.net/ なんていうふつうじゃない URL でも http://j.mp/9UfeQU にしてくれる。ステキ。

追記@Tue Feb 01 03:29:24 2011

2011/01/29 の修正で bit.ly, goo.gl, is.gd, j.mp などが使えるようになった。
j.mp を使う場合には、

(setq twittering-tinyurl-service 'j.mp)
(setq twittering-bitly-login "YOUR_LOGIN")
(setq twittering-bitly-api-key "YOUR_API_KEY")

と設定。試してみたところ、最近は上記のビッグマックのような無茶な URL は短縮してくれなくなったようだ。

Monday, March 1, 2010

Emacs 23.1.93 pretest

NTEmacs 23.1.93

金曜日に 23.1.93 の pretest がはじまりました。

が、23.1.93 は Windows では壊れていることが発覚したので、tarball から入れる人はスキップした方が良さそうです。

メンテナーによると近いうちにもう一度つぎの pretest を出す予定とか。
23.2 branch とどっちが先かな…。

Friday, February 26, 2010

各種スペルチェック用の辞書ファイルをくっつける

GNU Aspell と Firefox と TortoiseSVN のスペルチェック用ユーザ辞書をマージする Perl スクリプト。

ついでに NTEmacs の ddskk と skkime のユーザ辞書から abbrev モードで使う単語も抜き出してくっつけます。

Windows の ActivePerl 5.10.1 と Cygwin の Perl 5.10.1 で動くようにしてあります。

こんなの需要があるか分かりませんが、あのムカつく赤波アンダーラインが嫌いな人向けです。ファイルのバックアップとかしませんので必要なら手動でどぞ…。

Crystal HD Driver 3.1.8 + Flash 10.1 beta 3

Crystal HD Driver 3.1.8 と Flash 10.1 beta 3 が出ていたので再レビュー、、、しようかと思ったけど、なんか、別に変わってなかった。

YouTube もニコ動も CPU usage 80% ~ 100% 程度でかろうじて再生はできてるので DXVA 対応の恩恵を受けてはいるみたい。
ニコ動はコメントがあるのでともかく、YouTube のダウンロード済み映像音声のみの再生でもコマ落ちするのじゃまだまだ厳しいかなといったところ。
MPC-HC ではフル HD サイズの H.264 を CPU usage 10% ~ 50% 程度の余裕で再生できることを考えると、Flash ももうちょいいけるんじゃないかと思うんだが。

Acer Aspire One AOD250 + 2GB Memory, Windows 7 x86, Broadcom Crystal HD BCM970012 Driver 3.1.8, Adobe Flash Player 10.1 beta 3 Plugin, Firefox 3.6

Flash Player 10.1 beta 3 ActiveX + IE8 では UI の応答が悪過ぎて試す気になれなかった。再生自体は Plugin よりほんのすこし安定している印象。カクカクでだめげなのは一緒。

Thursday, February 25, 2010

FeedBurner から twitter に飛ばしてみるテスト

知らないうちに FeedBurner から twitter に飛ばせるようになっていたらしい。

feedburner - publicize - socialize

いつのまにこんな機能が…。

Wednesday, February 10, 2010

ウィンドウ・バッファ関連のキーバインドを晒してみる

キーバインドを晒してみる。と言うのも…

を読んで、自分の .emacs を見てみたら、キーバインドのカスタマイズは、ほとんどがウィンドウとバッファ関連だったから。

愚直にほぼデフォルトのキーバインドをずっと使ってきたので、長いこと使ってるわりには他のベテランの人みたいな味わい?は無いです。最近になって他のかたの twitter や blog から勉強させてもらって、それで真似てみたのが多いかな。

なのでただ晒すだけ。普段から新しい情報を探している人には目新しいものは無いと思われます。

ぼくが普段使っているのは Windows の GUI の(-nw ではない) Emacs で、一つの Emacs を二つの縦長 80桁のフレームで、頻繁に縦に二分割しながら使ってます。分割するかどうかは window-full-height-p を見ます。

最大化(フルスクリーン)と横分割はあんまりしないです。いまどき 80桁へのこだわりも無いので、そのうち突然横幅を広げるかも知れないけど。

;; ~/.emacs.d/emacs23_nt.el -*- mode: emacs-lisp; coding: utf-8-dos -*-
;; $Id: emacs23_nt.el 635 2010-02-10 11:32:17Z yu-ji $

;;
;; key bindings
;;

;; C-h を backspace として使う。
(define-key global-map [(C h)] 'delete-backward-char)

;; (・ω・)モキュ
(define-key global-map [(M o)] 'moccur)

;; C-x M-f で recentf
(define-key ctl-x-map [(M f)] 'recentf-open-files)

;; C-x 4 M-f u-recentf-open-files-other-window
(defun u-recentf-open-files-other-window ()
  "Show a dialog to open a recent file in other window."
  (interactive)
  (if (window-full-height-p)
      (split-window-vertically))
  (other-window 1)
  (recentf-open-files))
(define-key ctl-x-4-map [(M f)] 'u-recentf-open-files-other-window)

;; C-x C-b で list-buffers のかわりに ibuffer
(define-key ctl-x-map [(C b)] 'ibuffer-other-window)

;; C-x 4 C-b 
(define-key ctl-x-4-map [(C b)] 'ibuffer)

;; C-aで「行頭」と「インデントを飛ばした行頭」を行き来する - ポロポロ
;; http://d.hatena.ne.jp/kitokitoki/20100131/p4
(defun u-move-beginning-of-line ()
  (interactive)
  (if (bolp)
      (back-to-indentation)    
      (beginning-of-line)))
(define-key global-map [(C a)] 'u-move-beginning-of-line)

;; ibuffer
;; Meadow/Emacs memo: バッファリストとバッファの切り替え
;; http://www.bookshelf.jp/soft/meadow_28.html
(define-ibuffer-column
 ;; ibuffer-formats に追加した文字
 coding
 ;; 一行目の文字
 (:name " coding ")
 ;; 以下に文字コードを返す関数を書く
 (if (coding-system-get buffer-file-coding-system 'mime-charset)
     (format " %s" (coding-system-get buffer-file-coding-system :mime-charset))
   " undefined"
   ))
(setq ibuffer-formats
      '((mark modified read-only " "
	      (name 18 18 :left :elide) " "
	      (size 6 -1 :right) " "
	      (mode 10 10 :left :elide) " "
	      (coding 10 10 :left :elide) " "
	      filename-and-process)
	(mark " " (name 16 -1) " " filename)))

;; 分割したウィンドウ間の移動
;; マイ.emacs探訪 - I am Cruby!
;; http://d.hatena.ne.jp/authorNari/20091225/1261667956
(define-key global-map [(C S n)] 'windmove-down)
(define-key global-map [(C S p)] 'windmove-up)
(define-key global-map [(C S b)] 'windmove-left)
(define-key global-map [(C S f)] 'windmove-right)

;; 分割したウィンドウの大きさを Ctrl-上下キーで変える
;; とりあえず暇だったし何となく始めたブログ
;; http://d.hatena.ne.jp/khiker/20100118/emacs_arrow
(define-key global-map [(C up)] 'shrink-window)
(define-key global-map [(C down)] 'enlarge-window)

;; 細かいことはキニシナイ。
(define-key global-map [(C left)]
  '(lambda (size) (interactive "p") (shrink-window size t)))
(define-key global-map [(C right)]
  '(lambda (size) (interactive "p") (enlarge-window size t)))

;; w3m
;; w3m-mode-hook で
;;(define-key w3m-mode-map (kbd "C-c C-q") 'w3m-delete-buffer)

;; twittering-mode
(define-key twittering-edit-mode-map (kbd "C-c C-q")
  'twittering-edit-cancel-status)

;; そろそろEmacsのウィンドウについて一言いっとくか
;; (rubikitch loves (Emacs Ruby CUI))
;; http://d.hatena.ne.jp/rubikitch/20100210/emacs
(defun u-other-window-or-split (arg)
  (interactive "p")
  (if (window-full-height-p)
      (split-window-vertically))
  (other-window arg))
(define-key global-map [(C t)] 'u-other-window-or-split)
(define-key global-map [(C S t)]
  '(lambda (arg) (interactive "p") (u-other-window-or-split (- arg))))

;; URL をブラウザで開く
;;(define-key ctl-x-map "m" 'browse-url-at-point)

;; App キーを Hyper に
;;(setq w32-pass-lwindow-to-system nil)
;;(setq w32-apps-modifier 'hyper)
;;(define-key global-map [(H f)] 'forward-char)

冒頭の rubikitchさんのも早速入れてみました。ちょっと手を加えて。
前述の理由で横分割しないのと、引き数取るのと、C-t で順方向、C-S-t か C-- C-t で逆方向。

手がこれを使うかどうかは分からないけど…。細々操作してると、二分割して「こっちのウィンドウでなにかしたい」ときと「あっちのウィンドウでなにかしたい」ときとありますよね。そういうとき従来のキーバインドを使うと思う。C-t を使いはじめたら、C-t 連打で使い分けるようになるかなぁ。

あと変数の設定は custom でやってるので、関係しそうなところだけ手抜きコピペ。

;; ~/.emacs.d/custom23_nt.el
;; $Id: custom23_nt.el 627 2010-02-03 21:36:35Z yu-ji $
(custom-set-variables
 '(cursor-in-non-selected-windows nil)
 '(custom-file "~/.emacs.d/custom23_nt.el")
 '(history-delete-duplicates t)
 '(ibuffer-mode-hook (quote ((lambda nil (ibuffer-switch-to-saved-filter-groups "u")))))
 '(ibuffer-saved-filter-groups (quote (("u" ("dired" (saved . "dired")) ("Development" (saved . "Development")) ("Text" (saved . "Text")) ("Mew" (saved . "Mew")) ("Twitter" (saved . "Twitter")) ("w3m" (saved . "w3m")) ("Custom" (saved . "Custom")) ("Help" (saved . "Help")) ("Emacs" (saved . "Emacs"))))))
 '(ibuffer-saved-filters (quote (("dired" ((or (mode . dired-mode) (mode . vc-dir-mode)))) ("Emacs" ((or (name . "\\*scratch\\*") (name . "\\*Messages\\*") (mode . Buffer-menu-mode) (mode . completion-list-mode) (mode . apropos-mode)))) ("Text" ((or (mode . texinfo-mode) (mode . org-mode) (mode . text-mode)))) ("Mew" ((or (mode . mew-summary-mode) (mode . mew-virtual-mode) (mode . mew-draft-mode) (mode . mew-message-mode)))) ("Development" ((or (mode . bat-generic-mode) (mode . c++-mode) (mode . c-mode) (mode . change-log-mode) (mode . conf-mode) (mode . conf-windows-mode) (mode . cperl-mode) (mode . css-mode) (mode . diff-mode) (mode . emacs-lisp-mode) (mode . html-mode) (mode . java-mode) (mode . js2-mode) (mode . lisp-mode) (mode . makefile-gmake-mode) (mode . makefile-mode) (mode . moccur-mode) (mode . nxml-mode) (mode . php-mode) (mode . reg-generic-mode) (mode . sgml-mode) (mode . sh-mode) (mode . sql-mode) (mode . vc-bzr-log-view-mode) (mode . vc-git-log-view-mode) (mode . vc-svn-log-view-mode) (mode . visual-basic-mode) (mode . xml-mode) (name . "\\*vc-diff\\*") (name . "\\*vc\\*") (name . "\\.\\(php\\|yml\\|cmd\\)")))) ("w3m" ((or (mode . w3m-mode)))) ("Twitter" ((or (mode . twittering-mode) (name . "^\\*Twit-")))) ("Custom" ((or (mode . Custom-mode)))) ("Help" ((or (mode . help-mode) (mode . Man-mode) (mode . Info-mode)))))))
 '(iswitchb-mode t)
 '(recentf-exclude (quote ("^c:/Users/yu-ji/AppData/Local/Temp" "^c:/Users/yu-ji/home/work/ExtractedFiles/" "^c:/Users/yu-ji/home/Mail/draft/" "^c:/Users/yu-ji/home/.mozilla/firefox/firefox35/itsalltext/")))
 '(recentf-max-saved-items 40)
 '(recentf-mode t)
 '(recentf-save-file "~/.emacs.d/.recentf")
 '(save-place t nil (saveplace))
 '(save-place-file "~/.emacs.d/.emacs-places")
 '(save-place-limit 100)
 '(savehist-mode t nil (savehist))
 '(shift-select-mode nil)
 '(uniquify-buffer-name-style (quote post-forward) nil (uniquify))
 '(w3m-mode-hook (quote ((lambda nil (define-key w3m-mode-map (kbd "C-c C-q") (quote w3m-delete-buffer))))))
 '(windmove-wrap-around t))

見辛いな(-ω-;)

C-S-n, C-S-p, C-S-f, C-S-b は transient-mark-mode と相性悪いめです。

Saturday, February 6, 2010

ActiveState Perl Dev Kit 8.2 / ActivePerl 5.10.1 Build 1007 released

ActiveState の Perl Dev Kit(PDK) 8.2.0 と ActivePerl 5.10.1.1007、ついでに 5.8.9.827 がリリースされました。

ダウンロードのディレクトリ構造が掃除されて、ActivePerl は古いリリースのファイルがダウンロードできなくなってる。いっぱいあったからなぁ。古いファイル捨てられなくなっちゃったな。ActivePerl 5.6 系はもう完全に終了なのかしら。

ActivePerl 5.10 はセキュリティ修正があります。5.8 は cpan モジュールのアップデートくらいかな。

PDK 8.2 は、UTF-8 の取り扱いが腐ってて日本語圏では PerlApp が実質使い物にならなかった問題が修正されています。

同じテストプログラムが PDK 8.2 では正常に動くようになっています。Windows でも Linux でも。

あとは、Windows 7 と x64 Windows ではまだちょこちょこ問題がある様子ですね。それほど問題にはならないかな。たぶん。

Monday, February 1, 2010

AOD250 に Crystal HD 載せてみた

Acer Aspire One D250 (AOD250) に Broadcom Crystal HD BCM970012 を載せてみた。(あいかわらず酷い写真だけど気にしない)

CrystalHD_BCM970012

購入はヤフオクで。ネジを 2種類つけてくれたので、小さいほうのネジで取り付けました。きちんと差し込んでネジ締めて、Windows 起動してドライバを入れるだけ。

Broadcom CrystalHD Video Decoder

ドライバは 32bit / 64bit 両方あって、Windows 7 Ultimate x86 に 3.1.0 の 32bit 版を入れました。

Atom N280, 945GSE Express (GMA950) の AOD250 では、これまで DVD の SD 画質でどうにかやっと、フル HD とか夢でも再生は無理な状況でした。まぁ、そもそも画面が 1024×600 しか無いので、外のモニタに出さないとアレなんだけど。

Playing FullHD with MPC-HC
涼しい顔してるだろ。フル HD 再生中なんだぜ、これ。

H.264 1920×1080 の動画を MPC-HC (ちょっと古いやつ 1.3.1449) で再生させたところです。なんか楽勝です…。だいたい 50% を上回らない感じ。

エンドロールみたいな文字がスクロールするのもモタつかないし、動きの激しい場面でもコマ落ちしてるように見えないし、ちょっとすごいです。

あと、Crystal HD と DXVA 対応の Flash で YouTube がワーイという触れ込みだったので、Flash 10.1 beta 2 を入れて試してみたんだけど、これはぜんぜんダメげでした。IE8 + Flash ActiveX, Firefox 3.6 + Flash plug-in どちらも。adbsn

ま、Flash は現時点ではβ版だし期待してなかったのでさておき、ふつうの動画は映像にもよるけど 10% ~ 50% くらいの CPU usage でいけちゃうみたい。

ただ、動画再生していなくてもわりとぬくい、再生すると熱いです。すのこタン。必須と思われます。AOD250 はファンがあるからマシだけど、ファンレスのマシンは厳しそう。

結論として、いい買い物だった、かな。
でも、もうこれ以上 AOD250 にはお金かけないぞっ!w

Sunday, January 31, 2010

Emacs pretest 23.1.92

NTEmacs 23.1.92

予定どおりに 23.1.92 が出たようです。

bzr を使って追っかけするのにもだいぶ慣れてきました。

が、やっぱ、なにをするにも遅いんだよなぁ。
Cygwin 1.7 の bzr は 2.0.0 なんですけど、これが遅いんですかね?なんだろうな。

公式で git を使えるようになったらすぐに乗り換えると思います。

一応、有志による git ミラーは以下にあります。

さて、こないだから MinGW + MSYS でビルドするようになったので、そこらへんを少しだけ。

うちでは Windows 7 Enterprise x64, MinGW 5.1.6, MSYS 1.0.13-2, gcc 4.4.0 でビルドしています。

$ msysinfo
msysinfo-1.3: Send this to the MSYS support list:

MSYS 1.0.13(0.47/3/2) 2010-01-27 23:29 i686 unknown; targ=MINGW32
GNU bash, version 3.1.17(1)-release (i686-pc-msys); ENV=.profile
GNU Make 3.81This program built for i686-pc-msys; MAKE_MODE=unix
gcc.exe (GCC) 4.4.0; targ=MINGW32
GNU ld (GNU Binutils) 2.20
00 2010-01-28 13:31:10.000000000 +0900 /bin/msys-1.0.dll
92 2009-07-11 15:34:34.000000000 +0900 /bin/msys-bz2-1.dll
74 2010-01-06 19:46:31.000000000 +0900 /bin/msys-lzma-1.dll
52 2009-11-08 10:09:15.000000000 +0900 /bin/make.exe
2009-06-23 11:46:39.000000000 +0900 /c/MinGW/bin/gcc.exe
8 2009-10-24 09:13:00.000000000 +0900 /c/MinGW/bin/ld.exe
HOME=/c/Users/yu-ji/home
Sysname=MINGW32_NT-6.1  OSTYPE=msys  TERM=cygwin
PATH=.:/usr/local/bin:/mingw/bin:/bin:/usr/bin:/c/MinGW/bin:/c/Windows/system32:/c/Windows

普段使いの環境は Cygwin 1.7 に合わせてあるので、msys.bat で MinGW + MSYS 用の環境を調整しています。Emacs をビルドするときには、cmd でも bash でも大丈夫ですが、なんとなく bash からやってます。

$ diff msys.bat~ msys.bat
1a2,3
> set Path=C:\msys\1.0\bin;C:\MinGW\bin;%SystemRoot%\system32;%SystemRoot%
> set LANG=C

間違って Cygwin 環境でやっちゃうとややこしいことになるので、configure と make はそれぞれシェルスクリプトをかませてやっています。

emacs.config.sh とかファイル名つけて…、

#!/bin/sh
if [[ $MSYSTEM != "MINGW32" ]]; then
    echo emacs.config.sh must run under the MSYS shell;
    exit;
fi
export LANG=C
time $COMSPEC /c \
    'configure.bat --with-gcc --no-cygwin --no-debug --prefix=C:/emacs/23' \
    2>&1 | tee config.log.yu-ji;

引数とか忘れますしね。

以下は emacs.make.sh とかファイル名つけて…、

#!/bin/sh
if [[ $MSYSTEM != "MINGW32" ]]; then
    echo emacs.make.sh must run under the MSYS shell;
    exit;
fi
export LANG=C
time make \
    --jobs=4 XMFLAGS="--jobs=3" \
    ARCH_CFLAGS="-c -mno-cygwin -march=native -O3 -fno-tree-vectorize -mfpmath=sse -mthreads -pipe" \
    $1 $2 $3 $4 $5 \
    2>&1 | tee make.log.yu-ji;

うちの CPU は一昨年くらいの Core 2 Duo です。-O3 だけだと temacs をダンプするとき(だったと思う)にこけるので optimization 関係のオプションを調整した結果 -O3 -fno-tree-vectorize になりました。これが何を意味するかは知りませんし、他のマシンにバイナリを持っていくことも考えてません…。
※追記参照のこと

普段追っかけるときには、以下のようにやってます。ローカルのリポジトリの持ち方によって違う気がします。ワーキングコピーに merge してから diff して commit するほうが通信量も少ない気がします。

$ cd ~/src/wc/emacs/trunk/
(emacs のワーキングコピーに移動)
$ bzr merge --preview | lv
(変更点を眺めてみる)
$ bzr merge --pull
(変更点を取り込む)
$ cd nt
$ ../../../emacs.make.sh all
(上に載せたシェルスクリプトです)
$ ../../../emacs.make.sh recompile EMACS=../src/oo-spd/i386/emacs.exe
(lisp/ 以下に変更があったときにはこれやらないと .elc が古いままです)
$ ../../../emacs.make.sh install
(いんすこ)

なにかおかしくなったら、ワーキングコピーを綺麗にして bootstrap からやりなおします。

$ ../../../emacs.make.sh realclean
$ ../../../emacs.make.sh distclean
$ ../../../emacs.config.sh
$ ../../../emacs.make.sh bootstrap

こんな感じで。

MinGW-w64 で x64 Emacs はビルドできるんですかねえ。画像用の DLL 作るあたりが鬼門そうだ…。

追記Sun Feb 14 02:39:06 2010

@dnerkxさんが -O3 -fno-tree-vectorize の件を調べてくれました。thx!