たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
自分がGNOME3ベースの環境でgeditを使う時に最低限これだけはやっとくという設定。
あと、vimの設定も。というか、Ubuntuの方の設定なんだけど。
vimを使っているのは、nanoはGNOME標準のキーバインドとも何とも異なるワケ分からない操作体系のようなので、それよりはまだlessとかと操作が共通している部分が多いvimの方がマシ……という判断による。
日経Linuxの連載(シス管系女子)でtmuxを紹介しようかなあと思ったんだけど、自分で使ってないと紹介のしようもないと思ったので、さくらのレンタルサーバ(共用サーバなのでsudoとかは使えない)にtmuxを入れてみる事にした。
以前にGNU screenを入れた時は、ソースからビルドした物を ~/opt/screen 以下に入れたので、それと同じように ~/opt/tmux 以下に入れようと思ったんだけど、ちょっと検索してみた限りだと前回みたいにそのものずばりの手順の情報がなかったので、前回の手順を見返しながら見よう見まねでやってみる事にした。
まずtmuxをビルドしてみようとしたんだけど、
checking for library containing event_init... no configure: error: "libevent not found"
とか言われて ./configure が止まってしまった。メッセージを見ると、ライブラリ(libevent)が無いって言われてるので、まずはそっちの方からインストールした。
$ mkdir ~/tmp $ cd ~/tmp $ wget http://downloads.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.16-stable.tar.gz
$ tar zxvf libevent-2.0.16-stable.tar.gz $ cd libevent-2.0.16-stable
$ ./configure --prefix=$HOME/opt/libevent $ make && make installインストール先としてhome以下を指定すること。
次に本番のtmux。
$ cd ~/tmp $ wget http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.5/tmux-1.5.tar.gz
$ tar zxvf tmux-1.5.tar.gz $ cd tmux-1.5
$ DIR="$HOME/opt/libevent/" $ ./configure CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib" --prefix=$HOME/opt/tmuxインストール先としてhome以下を指定するのに加えて、さっきインストールしたlibeventを使うための指定が必要。ソースからtmuxをビルドしたいんだけど?という質問に対する回答の中にそういう例があったので、そのまま引き写した。
$ make $ make install
ちゃんとインストールできたか、試しに動かしてみる。ライブラリのパスを明示的に指定しないといけない事に注意が必要。
$ env LD_LIBRARY_PATH=~/opt/libevent/lib ~/opt/tmux/bin/tmux
動いていれば成功してる。
ただ、このままだと毎回tmuxを起動する度にlibeventのパスを指定しないといけないので、僕は.bashrcに以下の内容を書き加えて、「tmux」とだけ入力すればtmuxを起動できるようにした。
alias tmux='env LD_LIBRARY_PATH=~/opt/libevent/lib ~/opt/tmux/bin/tmux'
見よう見まねで上記の通りやってみたところ、どうやら動いてくれた。
GNU screenの時は使ってるとBackspaceが変になったりしていまいち動作が怪しかったんだけど、tmuxだとどうだろう。今のところまだその現象は起こってないようなんだけど。
僕は会社では主にUbuntuを使用しているのですが、Sambaで共有してるフォルダの中にあったThunderbirdのプロファイルっぽい物を「あれ、これテスト用に作ったやつだっけ」と思ってWindowsから削除してしまった後になって「あ、これメインで使ってるThunderbirdのプロファイルへのシンボリックリンクやがな」と気がついて慌てて止めたものの、時既に遅しでメールフィルタもなんもかも消えてしまった。せめてNautilusからの削除だったらゴミ箱に残ってたのに……!
Thunderbirdは起動した状態のままだったので、設定エディタを開いて適当な設定値をいじって、一番重要なprefs.js(アカウント情報が入ってる)だけは書き出させた。アドレス帳は全く使ってないに等しい状態だったので、消えても構わない。メールフォルダの中身も、IMAPで自宅・サーバ上・このPCの3箇所で同じ物を複製しあってる状態だったのでなんとかなる。しかし、このPCでしか設定してなかったメールフィルタが消えてしまったのは痛い。
ということでなんとかundeleteする方法はないかと検索したら、extundeleteというのを使えばいいらしいという事が分かった。
試してみたらかなりの数のファイルを救出できたけど、なんやかやで一部壊れてる物もあった。とりあえず目当てのメールフィルタは無傷で救出できたので、なくさないようにDropboxに入れて自宅にもコピーを置いておこう……
しばらくぶりに帰宅して、さあ外出先で行った開発の結果を取ってきましょうと思ってgit pullしようとしたら、bashが起動しなくなってた。
背景を説明すると、僕は自宅ではWindowsを使ってて、Gitを使った開発にはTortoiseGitとmsysGitの組み合わせを使用しているのですが、普段は全然普通に使えてるのに今日になって急にそれが動かなくなってたという状況でした。どうもTortoiseGitが内部的に呼び出してるCygwinのbashが動いてないようで、bash単体で起動しようとしてもこんな風なエラーが出てしまってすぐにプロセスが落ちてしまいます。
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487 AllocationBase 0x0, BaseAddress 0x68540000, RegionSize 0x70000, State 0x10000 C:\Program Files\Git\bin\bash.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
で、エラーメッセージを頼りに何か情報が無いかとGoogle先生に聞いてみた所、同じようなエラーが起こって困ってる人が結構いるみたいだったんですが、そこで紹介されてた以下の2つの対処法は僕の環境では効果がありませんでした。
諦めずにさらに探してたら、MSYSの謎のエラー - メモ@wantoraというエントリで紹介されてた方法でうまくいきました。
>cd "c:\program files\git\bin" >rebase -b 0x30000000 msys-1.0.dll
rebaseというのはひょっとしたら普通は入ってないかもしれません。自分はFirefoxのビルドのためにWindows SDKというのを入れてましたが、それに付いてきてたのかもしれません。リンク先のエントリによるとWindows SDK for Windows Server 2008 and .NET Framework 3.5を入れると付いてくるようです。
rebaseってなんやねん、git rebaseとは違うのか、と思って検索してみたら以下のような記事が出てきましたが、読んでもよくわかりませんでした。
ATOKはATOK2011からWindows XP以降の多言語入力のフレームワークにきちんと則った設計になったとか何とかで、独自のフローティングウィンドウ(ATOKパレット)の代わりに、Windows標準の「言語バー」で全ての操作を行えるようになった。それはいいんだけど、使い勝手がちょっと今までのATOKパレットと違って違和感がある。目下のところ困ってたのは、IMEがOFFの時に言語バーが消えないという事。
というのも、ATOKパレットでは「IMEがONになってる時だけ表示して、IMEを介さない直接入力になってる時は非表示にする」という設定ができたんだけど、フローティング表示にしたWindowsの言語バーにはそういう機能が無いようで、直接入力の時でも常に言語バーが出っぱなしになってしまうのです。
普段の利用とか開発の時とかはそれでも別にいいんだけど、全画面表示でDVDとかBDとかを鑑賞したり、Adobe IllustratorやSAIとかの画面をなるべく広く使いたいアプリケーションを使う時なんかには、これが邪魔になる。
じゃあタスクバーに入れとけばいいじゃんって話なんだけど、タスクバーを縦置きして且つ自動で隠すようにしてる僕の環境では、ぱっとデスクトップの右下に目をやった時にIMEがONなのかそうでないのか(何も出てなければIMEがOFFになってて、ATOKパレットがあればIMEがONになってるってことですね)を判別できないので、そっちの方が不便が大きい。
JustSystem的にはこういう場合は言語バーを非表示にするかタスクバーにドッキングさせた上で従来通りのATOKパレットを使うようにしてくれって事らしい。でもそれも何だか芸がないですよね。できれば新しい物を使いたいし、古いオプションがいつまで残るかなんてわかんないし。乗り換えられるようになったらさっさと乗り換えておいた方がいいという事は、自作アドオンのせいでFirefox 1.5にロックインされてFirefox 2にいつまでも移行できなかった時にも痛感したし。だいたい、従来のATOKパレットではアプリケーションを切り替えたタイミングとかで、切り替え後のウィンドウの方でIMEが無効になってる時でもたまにATOKパレットが出っぱなしになることがあったから、以前のやり方に戻しても万全じゃないのです。
それでもうちょっと検索してみたら、そういう事をはてなで訊いてる人がいて、その回答の中でXLangBarというユーティリティが紹介されてた。昔なつかしVzエディタの作者の方の手による物だそうだ。最終リリースが2006年だったりWindows XP+MS-IME2002専用と書いてあったりで、Windows Vista+ATOK2011な僕の環境では動かないんじゃなかろうかとも思ったんだけど、試してみたらばっちり動いた。多分、Windows標準の言語バーを使ってる物だったら何でも使えるんだと思う。Windowsの多言語入力の仕組みが変わらない限りはしばらくは安心して使い続けられる……かな……?
追記。64bit版のWindows 7で試してみたら、XLangBarは起動するものの、機能しないという結果だった。Windows 7だからアウトなのか64bitだからアウトなのかは不明です。
自宅ではWindows Vistaで秀丸エディタを使っている僕は会社では主にUbuntuを使用していますが、viでもemacsでもなくgeditがメインのテキストエディタだったりします。という事を言うとワリと失笑されがちですが、geditそんなにわるくないよ!! むしろメモ帳(notepad)よりはずっといいよ!! タブの挙動とかはキモイけど!! シンタックスハイライトもあんまり賢くないけど!! あとShift_JISで「\」(半角バックスラッシュ)を含んだファイルを開くと勝手にUnicodeの円マークに変換しちゃうせいでそのまま保存するとJavaScriptの正規表現とかがぶっ壊れがちだけど!!
そんなgeditに対する不満の1つに、検索で正規表現を使えない、特に、正規表現による一括置換ができないという点が挙げられます。改行やタブをコピペして検索したり置換したりしようとした時には勝手に「\n」とか「\t」とかエスケープされて表示されますが、こういうのを自分で入力しても期待通りには認識されません。
んでまあずっと諦めていたのですが、改めて探してみたら、geditで正規表現検索できるようにするプラグインというのが世の中にはあったのですね。
以下、Ubuntu 10.10での導入手順。
置換先の入力欄の上で何か操作しないと、「Replace All」などのボタンが有効化されません。置換先の文字列を空にしたまま置換しようとすると(=マッチ箇所を削除する操作をしようとすると)「すべて置換」ボタンが有効にならないという風な事が起こるので、何か入力してそれをまた消す、という操作を必要に応じてやらなくてはなりません。という風に若干作りが甘いと思われる部分はあるものの、これでやっとgeditだけでもそれなりの事ができるようになったという事の方が嬉しくて、もうこれだけで満足してしまいがちな僕がいます。
あと「grepもできたらいいなあ」「でもってgrepでヒットしたファイルを一括置換したいなあ」とかも思って検索してみたら、grepだけならプラグインですぐにできる事も分かりました。
こちらで紹介されているGedit File Search PluginをRegex Search and Replaceと同じようにしてインストールして「編集」→「設定」→「プラグイン」で「File Search」にチェックを入れてgeditを再起動すると、「検索」メニューの「Find in files...」でgrepできるようになります。ヒット箇所をクリックするとその位置までスクロールした状態でファイルを開いてくれるので良いですね。さすがに「grepで置換」まではできませんが……
Windowsには昔からよく知られた便利機能でCommand Prompt Hereという物がありまして、要するに「フォルダの右クリックメニューから、そのフォルダをカレントディレクトリにした状態でコマンドプロンプトを開く」というやつなんですが、Windows 95の頃にはPower Toysというユーティリティ集でこの機能を簡単に追加できたりもしました。
これと同じ事をGNOMEのNautilusでやるパッケージがあったんですね。その名もnautilus-open-terminal。Debianにも同名のパッケージがあるようです。
CUIメインで使ってる人には用がなさそうですが、僕みたいにヌルい人にはあると便利です。
Ubuntuの場合、初期状態では1つのプロセスで開けるファイルの最大数は1024個までと決まっているようで、それ以上の数のファイルを開こうとするとエラーになる。普通に使っててこの制限を気にする場面は全然無いんだけど、自動テストで大量のファイルを処理するようなやつを実行するとたまにこの制限に引っかかってしまうことがある。
現在の制限がどうなっているかは、ulimit -a で調べられる。open filesと書いてある所の数値がそれだ。
この制限を一時的に緩和するには、ulimit -n 任意の整数 とやればいいらしい……んだけど、ulimitはsudoでは実行できないようだった。rootで操作すればいいんだけど、普通にUbuntuを使ってるとrootにはなれないので、この方向を頑張るのはちょっとやる気が出ない。
代わりの方法として、/etc/security/limits.conf を編集するという手もある。例えばすべてのユーザに対してファイルの最大オープン数を2048個に増やしたければ、/etc/security/limits.confに以下のような指定を書き加える。
* soft nofile 2048 * hard nofile 2048
これで再起動すれば、すべてのユーザについて、1プロセスで扱えるファイルの最大数が2048にまで増える。
仕事でRails 3.0とかRuby 1.9.2とかを使わないといけなくなったんだけど、Rails 3.0と併せて使うとお薦めと紹介されていたBundlerというやつをgemでインストールしようとしたらRubyGemsのバージョンが古くてダメだと言われてしまい、Ubuntu 10.10にアップグレードしたらいけると教えてもらったので、早速上げてみた。(10.04はLong Time Supportだからアップグレードの通知が来てなくて、10.10がリリースされていたことに気付いてなかった。)
unix extensions = no wide links = yesの2行を足してsudo server smbd restartとしたら、シンボリックリンクを辿れるようになった(でもセキュリティ的にまずいのか?)
が、日本語入力の所で問題が起こった。
僕は以前からUbuntuでATOK X3を使ってた。アップグレード後も、特にインストールし直さなくてもATOKによる日本語入力はできるようだったが、どうも動作が怪しい。
9.10→10.04LTSの時の手順でATOKを再インストールしてみよう……とする前に、念のため「Ubuntu 10.10 ATOK」で検索してみたら、Ubuntu日本語フォーラム / 10.10にATOKをインストールというのが出てきた。これによると、
という事だったので、早速やってみた。しかし、上記の「動作が怪しい」点は変化が無かった。
症状をキーワードに検索してみたけど類似の例が見つからなかったのでお手上げということでtwitterでぼやいたら、いくやさんが情報を示して下さった。紹介していただいたエントリによると、「immoduleの設定がおかしい」のが原因……らしい。
いくやさんのエントリには /usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules を編集するように書いてあるけど、何故か僕の環境だとこの位置にファイルが無くて /usr/lib/gtk-2.0/2.10.0/gtk.immodules にそれらしきファイルがあった。sudo vi /usr/lib/gtk-2.0/2.10.0/gtk.immodulesで開いて、こちらはいくやさんのエントリと同じように
"/usr/lib/gtk-2.0/immodules/im-iiim.so"
"iiim" "Internet/Intranet Input Method" "iiimgcf" "/usr/share/locale" ""
と追記し( /usr/lib/gtk-2.0/immodules/im-iiim.so の位置にファイルがあることはちゃんと確認した)、ログアウトしてログインし直したら、「入力を確定するとメニューバーにフォーカスしてしまう」「変換候補のポップアップがウィンドウの左下に張り付いてしまう」問題は解消された。
ただ、上記のリンク先にある修正版のATOK(用のIIIMF)のパッチにはiiimf-properties(iiim-properties)のパッケージは含まれていなくて、tarからインストールするのはさすがに怖かったので、「ウィンドウ左下のツールチップ?を表示しない設定」+「変換キーでIMEのON/OFFをトグル」は諦めるしかないようだった。(「ウィンドウ左下のツールチップ?を表示しない設定」の方だけは、JustSystemのサポートサイトで公開されているIIIMFステータス非表示ツールというのを使うことでどうにかできるけど。)
ATOKの使用をあきらめかけた時に、せっかくだからとibus-mozc(Google日本語入力のエンジンのオープンソース版)を試してみることにした。
ibusの設定は システム→設定→キーボード・インプットメソッド で変更できる。こちらは変換キーだけでのIMEのON/OFFトグルも簡単に設定できた。また、言語パネルを表示させた状態であればibus-mozcの設定を変更できて、ここからキーバインドをATOK風に変えることができた。
とりあえずちょっと触った感じでは日常的な利用には支障なさそうだと思った。ただ、僕はATOKに電子辞書を入れて変換候補の同音異義語の使い分けに使ってて、mozcにはそれがないようだったので、ATOKが使えるうちはATOKを使いたいなあと思った。
さくらのレンタルサーバ(スタンダードプラン)は初期状態ではこんな風になってた。
Ubuntuのコンソールとの違いに戸惑う事が多くなりそうだったので、人に教えてもらって、以下のように設定してみる事にした。
トレンドはzshらしいけどよくわからんからbashで。
ここにある通りやったらできた。
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
これで、bash起動と同時に ~/.bashrc が読まれるようになる。~/.bashrc はこの段階ではまだ空。
ここの指示通りにやったらできた。
これで、 ~/opt/vim/bin/vim でvimを起動できるようになった。
UbuntuでGnome使ってるとGnomeのターミナルで新しいタブを開いて並行して作業するということができるけど、「sshで入った先」ではタブを開けない。タブを開くと、手元のマシンの方の新しいセッションになってしまう。
「sshで入った先」でもそういう事ができるようにしとくと便利だよと言われたので、GNU Screenという物を入れてみた。sshでログインする先のマシンにこれが入っていれば、ログイン先で「タブを開く」みたいな事ができるようになる。でもさくらのレンタルサーバのFreeBSDには入ってなかったので、これも自分で入れないといけない。
ここの指示通りにやったらできた(同じとこばっか参照してる)。
これで、 ~/opt/screen/bin/screen でscreenを起動できるようになった。
~/.bash_profile はこうなった。後半部分は、ログインしたら勝手にscreenを起動するようにするための物。
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
if [ $TERM != "screen" ]; then
exec screen -S main -xRR
fi
~/.bashrc はこうなった。
export LANG=ja_JP.UTF-8 # 日本語で。
PATH=$PATH:~/opt/vim/bin # vimにパスを通す。
PATH=$PATH:~/opt/screen/bin # screenにパスを通す。
export PATH
alias vi='vim' # viと打ったらvimを起動する。
~/.screenrc はこうなった。教えてくれた人の言われるままにコピペしただけ。画面の一番下の行を使って、今どのプロセスを見てるのかを常時表示するようにしてある。(これがないと今自分で何をやってるのかさっぱり分からない)
defencoding utf8
hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w"
使いこなせてるとはとても言いがたいけど、とりあえずここから始めようという感じです。
CygwinのOpenSSHから接続してると、なんかscreenが変なことになった。PuTTYで接続した場合は何ともない。これ、Cygwinが悪いのか誰が悪いのか……とりあえずWindowsからやる時はPuTTYの方を使う事にしようと思います。
追記。GnomeのターミナルからやったらCygwinの時みたいに変な事にはなってない……みたい。やっぱりCygwinが悪いのかなー。