2014年5月15日木曜日

「オープンソース・クラウド基盤 OpenStack入門」を執筆しました


このエントリーをはてなブックマークに追加


中井さんと共同執筆させていただきました。Amazonにて予約が可能となっています。前書きと目次についてはこちらで紹介されています。

まだ発売前ですが、ベストセラーの1位となっていました。この時点ではまだ表紙ができていなかったので、下の画像ははめ込みです。

前書きでも書きましたが、OpenStackは進歩が早く、まとまった情報を(特に日本語で)入手することが難しいのが現状です。この書籍でそんな状況が少しでも改善されればと考え中井さんと共に執筆いたしました。OpenStackやクラウドに興味のある方はぜひ読んでみてください。


2014年5月11日日曜日

gnupack devel 12.03 非公式アップデート


このエントリーをはてなブックマークに追加


*gnupack 非公式アップデート版に関する最新バージョンは こちら をご確認ください*

アップデートの概要 12.02 to 12.03

・term.el系(term/ansi-term/multi-term)で起動時、もしくは特定ディレクトリへの cd でエラーになる
・term.el系(term/ansi-term/multi-term)で、コマンド実行時に C:/bin/bash を呼び出そうとしてエラー

以下の問題を修正したものになります。
gnupack devel 12.02 非公式アップデート で確認されている不具合

ダウンロードはこちらから。
gnupack_devel-12.03-unofficial.exe


2014年5月10日土曜日

gnupack devel 12.02 非公式アップデート で確認されている不具合


このエントリーをはてなブックマークに追加


gnupack devel 12.01 非公式アップデート にて確認している不具合です。次回リリースで修正する予定です。

■term.el系(term/ansi-term/multi-term)で起動時、もしくは特定ディレクトリへの cd でエラーになる
No such directory found via CDPATH environment variable
http://aikotobaha.blogspot.jp/2014/05/term-ansi-term-multi-term-cygwin.html で回避できます。


■term.el系(term/ansi-term/multi-term)で、コマンド実行時に C:/bin/bash を呼び出そうとしてエラーになる
私は多段SSHを呼び出したときに発生しました。init.el もしくは、init-loader 化に以下を加えると回避できます。
(setenv "SHELL" "/bin/bash")


term, ansi-term, multi-term + cygwin-mount.el で発生する No such directory found via CDPATH environment variable について


このエントリーをはてなブックマークに追加


少々長いタイトルになってしまいましたが、題記の通りです。cygwin-mount.el を有効化した環境で、term.el系を起動したタイミングや、特定ディレクトリへ cd したタイミングで発生します。

No such directory found via CDPATH environment variable

この現象は、ターミナル側の cd を捕捉して、Emacs 側でも cd を動かそうとして発生しますので、.emacs や init.el で、

;; term側 cd 捕捉によるEmacs側の cd を抑制(term.elで定義されている関数)
(fset 'term-command-hook '(lambda (x)))

として、ターミナル側の入力をキャッチしている関数を無効化すると、とりあえずは現象を回避できます。

この根本原因は、cygwin-mount.el によって変換される cygwin マウントポイント となるディレクトリを直接指定する場合に、末尾に / つきパスでないと変換してくれない、という仕様によるもののようです。

このようなマウントポイントの場合、
(shell-command "df -h")

ファイルシス                                 サイズ  使用  残り 使用% マウント位置
C:/gnupack_devel-12.02/app/cygwin/cygwin/bin   230G  153G   77G   67% /usr/bin
C:/gnupack_devel-12.02/app/cygwin/cygwin/lib   230G  153G   77G   67% /usr/lib
C:/gnupack_devel-12.02/app/cygwin/cygwin       230G  153G   77G   67% /
C:/gnupack_devel-12.02/app/cygwin/local        230G  153G   77G   67% /usr/local
C:/gnupack_devel-12.02/home                    230G  153G   77G   67% /home


これは上手くいきますが、
(cd "/home/")

"c:/gnupack_devel-12.02/home/"

これはエラーになります。
(cd "/home")

Debugger entered--Lisp error: (error "No such directory found via CDPATH environment variable")
  signal(error ("No such directory found via CDPATH environment variable"))
  error("No such directory found via CDPATH environment variable")
  ad-Orig-cd("/home")
  cd("/home")
  eval((cd "/home") nil)
  eval-last-sexp-1(t)
  eval-last-sexp(t)
  eval-print-last-sexp()
  call-interactively(eval-print-last-sexp nil nil)


このあたりをいじるとよくなるかもしれないですが、どんな影響があるかわからないので、今回の対策としました。

cygwin-mount-activate is an interactive Lisp function in
`cygwin-mount.el'.

(cygwin-mount-activate)

Activate cygwin-mount- and cygwin-style-handling.

file-name-handler-alist

(("\\(?:\\.dz\\|\\.xz\\|\\.lzma\\|\\.lz\\|\\.g?z\\|\\.\\(?:tgz\\|svgz\\|sifz\\)\\|\\.tbz2?\\|\\.bz2\\|\\.Z\\)\\(?:~\\|\\.~[-[:alnum:]:#@^._]+\\(?:~[[:digit:]]+\\)?~\\)?\\'" . jka-compr-handler)
 ("\\.gpg\\(~\\|\\.~[0-9]+~\\)?\\'" . epa-file-handler)
 ("\\`/[^/]\\{2,\\}\\'" . tramp-completion-file-name-handler)
 ("\\`/\\([^[/|:]\\{2,\\}\\|[^/|]\\{2,\\}]\\):" . tramp-file-name-handler)
 ("\\.lnk\\'" . w32-symlinks-file-name-handler)
 ("^/cygdrive/[A-Za-z]/" . cygwin-mount-map-drive-hook-function)
 ("^//[A-Za-z]/" . cygwin-mount-map-drive-hook-function)
 ("^/[^:@]*$\\|^/|/[^/:]+\\(\\'\\|/\\)" . cygwin-mount-name-hook-function)
 ("\\`/:" . file-name-non-special))


2014年5月8日木曜日

gnupack devel 12.02 非公式アップデート


このエントリーをはてなブックマークに追加


*gnupack 非公式アップデート版に関する最新バージョンは こちら をご確認ください*

アップデートの概要 12.01 to 12.02

・Emacsの画面描画で問題があったため、Emacsのみ12.00へ戻しました。
・そのほかは 12.01 の通りとなっております。

ダウンロードはこちらから。
gnupack_devel-12.02-unofficial.exe


2014年5月7日水曜日

gnupack devel 12.01 非公式アップデート


このエントリーをはてなブックマークに追加


*gnupack 非公式アップデート版に関する最新バージョンは こちら をご確認ください*

アップデートの概要 12.00 to 12.01

・Emacs24.3を再コンパイル(cmgemo.dllをリンクするようにコンパイル)
・UTF-8での使い勝手を向上
・いくつかのパッケージを追加
・上記にともない、ruby, python, perl, clisp の全てを利用可能に。

ダウンロードはこちらから(Emacsに問題があったため、12.02を利用してください)
gnupack_devel-12.01-unofficial.exe

アップデートの詳細


2014年5月4日日曜日

Helm から Hyerspec/CLtL2 を引く


このエントリーをはてなブックマークに追加


** 2014/05/11 slime をバージョンアップ したらHyperSpec が引けなくなったので修正

HyperSpec と CLtL2 を Helm から引けるようにします。 anything とまったく一緒です。

HyperSpec は ANSI Common Lispのリファレンス、CLtL2 は Common Lisp the Language, 2nd Editionの略記で仕様書風の読み物。CLTL1 → ANSI と仕様がFIXするまでの経緯等にもついて記載されているらしいです。私はほぼ HyperSpec しか使っていません。


設定方法は以下


gnupack devel 12.00 非公式アップデート


このエントリーをはてなブックマークに追加


*gnupack 非公式アップデート版に関する最新バージョンは こちら をご確認ください*

アップデートの概要 11.10 to 12.00

・tdm/mingwをバージョンアップ
・上記に伴いEmacs24.3を再コンパイル
・UTF-8を使うように変更
・Cygwinパッケージを追加
・上記に伴い全体のサイズが約650MB(11.10)→1,100MB(12.00)と増加

ダウンロードはこちらから(DL数カウントのため google shortener経由にしました。実態はDropboxへ配置)
gnupack_devel-12.00-unofficial.exe

アップデートの詳細


2014年5月3日土曜日

gnupack devel 11.10 非公式アップデート


このエントリーをはてなブックマークに追加


*gnupack 非公式アップデート版に関する最新バージョンは こちら をご確認ください*

gnupack を愛用しているのですが、最近更新がとまってしまったので、非公式のアップデート版を作成しました。

ダウンロードはこちらから(DL数カウントのため google shortener経由にしました。実態はDropboxへ配置)
gnupack_devel-11.10-unofficial.exe

アップデートの概要は以下です。

・Emacsのバージョンを24.2 => 24.3
・Cygwinのバージョンを 1.7.17-1 => 1.7.29-2
・apt-cyg をバージョンアップ

以下の問題を解決しています。

apt-cygが失敗します
Win8.1/x86 でのemacs


アップデート内容に関する詳細は付属のREADMEに記載しています。


2014年4月15日火曜日

Fedora on T440s


このエントリーをはてなブックマークに追加


メイン機としていたT440sが半死状態になりました。


OS起動時に高確率でHDD(標準搭載のSAMSUNG MZ7TD256)を認識しません。特に再起動時に高確率で発生します。通常起動した際も最初のブートローダーの立ち上がり前に1~2分待たされてしまいます。
T440sはスペック的にかなりのお気に入りなのですが、ThinkPadとは思えない品質の悪さです。

今回はSSDの不良っぽく、検索してみるとHDD交換になる可能性が高そうなので、eService(Lenovoのサポートリクエスト窓口)に修理依頼をしつつ、手元からなくなる前にFedoraをインストールして遊んでみることにします。

T440sのスペックは以下です。

 ・Windows8.1 64bit
 ・Core-i5 4200U
 ・8GB memory
 ・T440s 14.0FHD WWAN(1920x1080 none touch panel)
 ・Wireless LAN: Intel 7260 BT BGN
 ・720p HD Camera
 ・NVIDIA Geforce GT 730M(Optimus)
 ・指紋センサー
 ・UEFI+Secure Boot(デフォルト)

nVidia Optimus と 指紋センサーはFedora20では認識されません。T440sをLinux機として使いたい人はこの二つをつける必要はないと思います。内蔵のIntel統合ビデオチップでも十分な性能です。


デュアルブート(Win8.1 & Fedora20) + UEFI + Secure boot

Win8.1/T440sは標準の状態で以下のようなパーティション状態になっています。Win8の場合は、末尾の回復パーティション、OEMパーティションが存在していません。GPT形式です。


Windows標準ツールでは表示されませんが、実際はMSRパーティションというものがあり、こんな感じになっています。

 1. 回復パーティション
 2. EFIパーティション
 3. MSRパーティション
 4. 標準パーティション ← Windowsの本体はここ
 5. 回復パーティション
 6. OEMパーティション

デュアルブート構成する場合は、4つ目標準パーティションを縮小して空き領域を作ります。縮小はWindowsの管理ツールから行えます。リカバリメディアを作成 or 手配している場合は回復パーティションとOEMパーティションは削除しても問題ありません。削除は diskpart コマンドを使います。


Fedora20をインストールするときは / のみ作成し、既存のEFIパーティションを /boot/efi へマウントするように設定します。/boot や swap はあってもなくてもいいです。既存パーティションは再初期化しないように注意してください。

GrubからWindowsをブートする方法は上手くいきませんでした。ですがUEFIの場合は、UEFIブートローダーからOSを選択できます。UEFIでは、EFIパーティションに配置されているブートイメージを登録することで、起動するOSを選択できるようになります。

登録されている情報を操作するには、Linux から efibootmgr コマンドを利用します。


シングルブート(Fedora20) + UEFI + Secure boot

特筆すべきことはありません。EFIパーティションを作成して、/boot/efi にマウントするだけで後は普通のインストールと変わりません。


シングルブート(Fedora20) + Legacy Boot

BIOSの設定で、Secure Boot を OFF にする事で、Legacy Bootモードに変更できるようになります。このモードではEFIパーティションは不要で、従来のように /boot からカーネルを起動するようになります。

Linuxオンリーで使う場合はこのモードが一番扱いやすいと思います。Linuxの場合は高速スタートアップも利かないので、UEFIもレガシーブートも起動速度に差はほとんど無いように感じました。