2007年10月23日火曜日

ubuntuのEvinceで日本語PDFが表示できない

evinceで日本語PDFが文字化けして表示された。
ここの手順どおりにして解決した。

evince のほうが Adobe Reader よりも軽快に動作するのでプレビューにはこっちの方がいいかも。

以下導入メモ。
sudo apt-get install evince ghostscript cmap-adobe-japan1 xpdf-japanese

sudo mkdir -p /usr/share/poppler/cidToUnicode
sudo ln --symbolic /usr/share/xpdf/japanese/Adobe-Japan1.cidToUnicode \
/usr/share/poppler/cidToUnicode/Adobe-Japan1
sudo mkdir -p /usr/share/poppler/cMap
sudo ln --symbolic /usr/share/fonts/cmap/adobe-japan1 /usr/share/poppler/cMap/Adobe-Japan1


無事日本語PDFが表示された.

2007年10月22日月曜日

ubuntuの日本語のディレクトリ名を直してみた

Gutsyにアップグレードして、Portland Projectの成果により、homeディレクトリ直下に、「デスクトップ」やら「ドキュメント」「画像」「ビデオ」などなどの日本語のディレクトリが作られるようになりました。

 これはOSに関わらず、共通のフォルダを提供しようというものでVistaやMacOSXでも同じようなフォルダ構成になっていると思います。

これはこれでありかなと。これからの初心者がubuntuに振れるときには違和感なく触れられるだろうしと。

ただ、日本語のディレクトリ名は端末から打ち込むとき、いちいち日本語入力システムを立ち上げないといけないし、だいいいち日本語入力システムが使えるとも限らないわけで、まぁ昔から使っていた人にとっては意味のないものです。

そこでこれらのディレクトリ名を英語に修正します。
端末から、
LANG=C xdg-user-dirs-gtk-update
とすれば、設定画面がますので、そのままOKボタンを押せば、これらのディレクトリ名が英語に置き換わります。
これでコンソールからのアクセスもばっちり。

2007年10月21日日曜日

Gutsy にアップデートメモ

18日に7.10 Gutsy がリリースされたのでさっそくアップデートしてみました。
ubuntu開発チームとJAチームに心から感謝を!

さて、公式サイトに手順どおりにアップデート開始。
長い時間の果てに失敗しました。orz
まあ、6.06からアップグレードし続けてきた環境なので、いろいろゴチャゴチャになっているので失敗してもおかしくはないんですけど、悲しい・・・

  • 新しいカーネルで起動失敗する
    device-mapper がエラーを吐いてドライブのマウントが失敗し起動出来なかった。調べたら、evms が悪さをしているらしいので削除して再起動。無事起動成功。

  • ネットに繋がらない
    ネットに繋がらなくなった。ping は通るのに。調べたらfirestarterが悪さをしていた。いったん削除して入れ直して解決。

  • compiz の設定
    今までberylにドライバは envy を使っていれていた環境だったので、リストラクチャドモジュールを入れてから、制限付きドライバのインストールでnvidia-glxをインストール。
    今度からXorg.confを編集せずともGUIなインターフェースで気楽に設定できるようになったので、かなり楽々と画面まわりの設定が出来た。
    メインメニューのシステム→設定→外観の設定から視覚効果でExtraでcompizが無事動いた。
    ただこのままでは細かい設定が出来ないので、
    sudo apt-get install compizconfig-settings-manager
    で設定ツールを導入。berylほどではないがかなりの設定ができるように。
    あとは beryl-manager みたいなトレイアイコンツールがあればいいんだがubuntuにはまだリポジトリにはないみたいだ。

  • itunesサーバが動かない
    mt-daapd とmdns-scan を使っているのだけれど、mdns-scanfirestarterが有効になっていると動かない。なんでやねん。とりあえずfirestarterを無効にすることで回避。

  • homeディレクトリに日本語のディレクトリが勝手に出来ていた
    「テンプレート」「ドキュメント」「ビデオ」「音楽」「画像」「公開」などの日本語のディレクトリが出来ていた・・・なんじゃこりゃ。マイクロソフトの製品じゃあるまいし。日本語入力システムがなかったらどうアクセスしろというんじゃーぼけ〜
     どうやら Portland という標準化規格ができてそれのせいらしい。ようはどのディストリでもWindowsでもMacOSXでも共通に「ドキュメント」とか「ビデオ」とか「画像」とかのディレクトリにアクセスできる手段を提供しようということらしい。
    大きなお世話だ。
    ~/.config/user-dirs.dirsの中に設定が書いてある。ここを修正すればいいみたい。

  • フレームバッファがblacklist入り
    フレームバッファモジュールがロードされているとハイバネートがうまくいかないらしく、blacklist入りになっていた。直接コンソールを使う機会もあまりないから、まぁいいか。

  • Firestarterがよく落ちる
    Firestarterがコアダンプする。なんだろうねー不安定だよね。


とまあこんな感じでトラブりましたが無事動いていますw
でもpython2.4とか残ってて、削除したけど、他にも使ってないファイルが残ってそうだなあ。
次の? LTS版を入れるときはクリーンインストールですね。

ちなみに劇的にアプリの起動が早くなりました。なんだこれは〜w compiz も快適に動作しているようで今後に期待。
もうしばらくして様子をみたらemacs22を入れてみるかな。

2007年10月5日金曜日

Emacsのアウトライン機能を使いこなす

 論文を書くときや小説やシナリオを書くときなど、ある程度構造的な文章を書く場合、アウトライン機能は大変便利な機能です。これがないと作業出来ないという人もいるでしょう。

 ubuntuでも独立したアウトラインプロセッサソフトもいくつかありますが、エディタに内蔵されているアウトライン機能は普通のテキストでシームレスにアウトライン機能が利用できるのが最大の特徴でしょう。反対にアウトライン専用ソフトは独自のファイル形式でエディタ内蔵よりもはるかに複雑な装飾が出来るものが多いです。

 Emacsでアウトライン機能を使うには、M-x outline-mode とすることでアウトラインモードになり、各見出しが色付されて表示されます。

 emacsではアウトラインの見出しは行頭に「」アスタリスクを付けることで見出しとします。
 *見出し
 **小見出し
 ***小小見出し
こんな感じですね。

 もちろんこの見出し記号は自由に変えることも可能です。

基本的な操作方法

すべての本文を折り畳むC-c C-t
最上位の見出しだけにするC-c C-q
すべてを展開するC-c C-a
カーソル位置の見出しの本文を折り畳むC-c C-d
カーソル位置の見出しの本文を展開するC-c C-s

これぐらい覚えておけば大丈夫でしょう。

●見出しだけを別ウィンドウに表示しておきたい

 アウトライン機能ですから、見出しだけを別ウィンドウに表示させ、常に文章全体の構造を把握しておきたい、という場合もあるでしょう。
 そういうときは、間接バッファ機能を使います。~/.emacs に以下を追記します。

(defun outtree ()
"outline-tree
見出しを別ウィンドウで表示させる.
by yama @ Thu Mar 29 23:37:45 2007"
(interactive)
(if 'outline-mode (outline-mode))
(hide-body)
(let* ((basename (princ (buffer-name)))
(newtmp (concat basename "-tree")))
(if (get-buffer newtmp)
(unless (get-buffer-window newtmp)
(split-window-vertically 10)
(switch-to-buffer newtmp)
(other-window 1))
(progn
(make-indirect-buffer (current-buffer) newtmp)
(split-window-vertically 10)
(switch-to-buffer newtmp)
(if 'outline-mode (outline-mode))
(hide-sublevels 1)
(other-window 1)))))
M-x outtree で別ウィンドウに見出しだけが表示されます。


●もうちょっと便利に

Ee - Emacs Information Manager というelispパッケージがあるのですが、こいつは何でもかんでも階層化して表示しちゃおうというもので、その中に ee-outline というのがあります。
 階層化して表示するわけですから、とうぜんoutline-modeとの相性もいいです。

インストール

ubuntuのリポジトリにはないみたいなので直接取ってきます。
wget http://www.jurta.org/emacs/ee/emacs-ee-0.0.2.tar.gz
tar zxvf emacs-ee-0.0.2.tar.gz
mv emacs-ee-0.0.2 ee
mv ee ~/.lisp
として~/.lisp/ee に放り込み、~/.emacs に以下を追記してloadpathを通します。
(setq load-path (cons "~/.lisp/ee" load-path))
そしてさらに~/.emacsに以下を追記します。
;;====================================
;;; Ee - Emacs Information Manager
;;===================================
(require 'ee-autoloads)

;; アウトラインの該当個所を表示
;; ee のアウトライン表示で該当箇所を別ウィンドウに表示できる.
(defadvice previous-line
(after ee activate)
(if (and (eq major-mode 'ee-mode)
(string-match "ee-outline" (buffer-name (current-buffer))))
(ee-outline-display-buffer)))

(defadvice next-line
(after ee activate)
(if (and (eq major-mode 'ee-mode)
(string-match "ee-outline" (buffer-name (current-buffer))))
(ee-outline-display-buffer)))

(defadvice ee-view-record-select-or-expansion-show-or-hide
(around ee-delete-window activate)
(if (and (eq major-mode 'ee-mode)
(string-match "ee-outline" (buffer-name (current-buffer))))
(progn
ad-do-it
(delete-other-windows))
ad-do-it))

(defun my-ee-outline ()
"事前にoutline-modeを起動してからee-outlineにする"
(interactive)
(outline-mode)
(ee-outline))

;; C-c o で起動。
(global-set-key "\C-co" 'my-ee-outline)

使い方

  • C-c o でアウトラインのツリー表示が表示されます。
  • カーソルを動かすことで画面が縦に分割され、該当する部位が逐次表示されます。
  • カーソルの左右で折りたたみ、展開。
  • 該当見出しでリターンキーでその場所を開きます。あるいは o キーでフォーカスが移動します。
  • h キーでヘルプが出ます。


もっともっと便利にっ

これ以上の便利さを追求すると、アウトライン機能のみならず、ToDoやスケジュール、リンク機能を備え、一人WiKiまで出来ちゃう org-mode がいいかもしれません。アウトライン機能のキー設定も TAB キー一つで折り畳み、展開が行え、各見出しの並び替えなども楽にできるようになっています。

導入は emacs22 以降なら標準で入っていますので、 M-x org-mode とするだけです。

詳しい使い方は、何しろ機能が豊富過ぎて説明しきれません。幸いマニュアルを翻訳してくれている方がいますのでそちらを参照してください。

2007年10月3日水曜日

emacsからbloggerへ投稿するg-clientを試してみる

Emacsからbloggerに投稿したくて、GoogleのAPIを使えるemacsのフロントエンド、g-client
を試してみる。
まずは、g-client.tar.bz2 を落としてきてmakeしたが、g-cus-load.elが生成されなかった。
ので、svn から先端を取ってきてmakeし、~/.emacsにpathを追記した。以下手順。
svn export http://emacspeak.googlecode.com/svn/trunk/lisp/g-client/
cd g-client
make
以下を~/.emacsに追記。
(load-library "g")
(setq g-user-email "gmailのアカウント")
(setq gcal-user-email "カレンダーのアカウント")
(setq gblogger-user-email "bloggerのアカウント")
(setq browse-url-browser-function 'w3m-browse-url)
としたんだが、動かない。どうやらcurlと、elispのnxml-mode を使っているみたいなので、
sudo apt-get install cur nxml-mode
としてインスト。あとemacs-w3mも必要。
M-x gblogger-blog
とすると、パスワードを聞かれるので入力。自分のblogが表示されるので、postlinkのurlをコピー。
M-x gblogger-new-entry
で投稿feedを聞かれるので、ここにペースト。
あとはタイトルを書き、本文を書いて、 C-c C-c すれば投稿に成功していた。
が、いまいち使いにくいな・・・いちいち投稿URLを入れないといけないのかな。
ラベルはどうやって付ければいいのかな。
あとカレンダーが動かないw

2007年10月2日火曜日

bashの履歴に日付も加える

小ネタです。

bash3 からの機能なのですね。知らなかった。
やり方は~/.bashrc に、
HISTTIMEFORMAT="%y/%m/%d %H:%M:%S : "
と書くだけ。

これで tcsh みたいに履歴にそのコマンドを実行した時間も記録されるようになる。これをやると、前回のコマンド実行時からどれくらいコマンドを打っていないかということが、つまり仕事をサボっているということがバレてしまうのだぁっw

あとは、履歴に残したくないコマンドの指定なんかもできる。
HISTIGNORE=ls:history
とかしておけば、指定したコマンドが履歴に残らなくなる。

履歴はデフォルトでは500行だが、
HISTSIZE=1200
とか書けば1200行保存されます。

2007年10月1日月曜日

bashの補完機能を拡張してみた

 bashにはインテリジェントな補完機能があり、ubuntuだとデフォルトでさまざまな補完定義の書かれた bash_completion が有効になっているはず。
 なっていなければ ~/.bashrc に、
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
と追記しておこう。
 この便利な補完機能だけど、自分で設定できる。が、ものすごく賢く設定できるだけに /etc/bash_completion 見てもよく分からないw

ちょうどnkfのロングオプションをよく使うんだけど、よく忘れるw のでいい機会だったので試しに作ってみた。

# nkf completion

_nkf()
{
local cur

COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}

# options completion
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -o default -W '-j -s -e -w -J -S -E -W \
--help --version --overwrite --jis --euc --sjis \
--utf8 --utf16 --mime --base64 --guess \
--hiragana --katakana --katakana-hiragana' -- $cur ) )
else
COMPREPLY=( $( compgen -o default $cur ) )
fi
}
complete -F _nkf nkf
のような感じで、~/.bashrc に追記。
source ~/.bashrc
で即反映させて、試しに、
nkf --
と打ってTABキーを押すと、
~$ nkf --
--base64 --jis --sjis
--euc --katakana --utf16
--guess --katakana-hiragana --utf8
--help --mime --version
--hiragana --overwrite
とロングオプションが補完候補として表示される。便利だね♪

上のは適当に書いただけなので誰かリファインして本家にマージしてください><

しかしあれだね、bashの補完機能を自分で作ることに関しての情報がほとんど無いね。あっても bash_completion に関する情報ばかり。bashの補完定義を自分でどんどん簡単に作れればどんどん便利になっていくね。