三重苦

いや、どれも頑張れば解決できるとは思うけど。

その1。D-Deckでは市販のレジストデーター(プロテクトされたもの)の移動すらできない!これには驚いた。先日、ヤマハであちこちに分散していたレジストを一つのUSBメモリーに移してもらったのだが、フォルダーの位置はあとで移動させればいいからと、配置の最適化まではやってもらわなかった。ところが、Stageaではできるプロテクトデータの移動(コピーではなく移動ですよ、ええ)が、D-Deckではできないのだ。多分・・・。そんなことってありか? もう、まったく・・・。

その2。Ubuntuを8.04から8.10に上げたら、日本語入力できなくなってしまった。プロセスを見てみると、SCIMがロードされていないみたい。ううむ。日本語の表示はされるのだけど。つらつら考えるに、ブート用のCDが8.04専用になっているのが原因のようだ。8.04に戻すのもしゃくなので、最新の9.10をクリーンインストールしているところなのだが、家のマシンはUSBブートできないので、ブート用CDを別途作らなくてはならない。8.04とは微妙に違うみたいで、現在悪戦苦闘中。あーあ。

その3。マックで動くBBEditというテキストエディターがとてもよさそう(Code Foldingできるのが、ツボ :mrgreen: )なので、これをTeXで使いたいのだが、BBEditからUNIX Shellスクリプトに文書名を渡すパラメーターのやり方が分からない。仕方なく、Apple Script 経由でトライしているが、Apple Script って最低!(笑)とか思ってしまう。この中途半端な自然言語っぽい文法は何とかならないのかね。あーあ。

ということで、楽しい週末(苦笑)になりそうです 😉 。トホホ。

apt-get -f install

Ubuntuメモ。texmakerxというレポジトリーにないDebianパッケージをインストールしようとしたら、依存関係でエラーが。で、パッケージが中途半端な状態でライブラリーにあるという状態。こういうときは、

sudo apt-get -f install

と -f オプションを付けて、apt-get install すると良いらしい。f は fix の f だそうな。

それにしても、うっかりすると依存関係がぐちゃぐちゃになるかもと思うと、心臓に悪い。

UbuntuにAsymptoteをインストール

お絵描きプログラムであるAsymptoteをUbuntuにインストールした。これは、MetaPostの亜種というか改良版であり、文法などはMetaPostから引き継いで、その上でMetaPostをさらに使いやすくしたものらしい。MetaPostに慣れつつあるので、ちょっと気になったこともあり、インストールしてみた。

最初は、Synaptic パッケージ・マネージャーからUbuntu用にコンパイルされたものを入れてみたのだが、これが1.4というちょっと古いバージョン。3D関係のライブラリーを使うとエラーが出るとかで、最新の1.86を入れるべく、ソースからのコンパイルを試みた。ポイントは、ガーベージ・コレクション用のライブラリーを別途ダウンロードすることと、ドキュメント関係の作成のために TeX一式を入れておくこと。最初、コンパイル完了直前になって、texindexがないというエラーであえなく沈没。apt-get install texinfo と、texinfoをインストールして再度試みて成功。

ということで、手順をメモ。

$ wget http://downloads.sourceforge.net/asymptote/asymptote-1.86.src.tgz
$ gunzip asymptote-1.86.src.tgz
$ tar -xf asymptote-1.86.src.tar
$ cd asymptote-1.86/
$ wget http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.1.tar.gz
$ ./configure
$ make all
$ sudo make install
$ hash -r

Perlでエクセル・データを処理する

とある件で、マイクロソフト・エクセル(MS Excel)のデータを取り扱うことになった。というか、入力済みのデータがエクセルのフォーマットという次第。ホントはテキスト・データでくれれば嬉しいのだが、どうも、事務関係はどこもかしこもエクセルばかりのようだ。

幸いなことに、Windowsを起動しなくても、Ubuntu上のOpen Office SpreadSheetで開くことができて、さらに、これを CSV (Comma Separated Values) 形式のテキストファイルとして保存できる。こうなれば、あとは楽である。やっぱりテキストファイルが一番だよねえ。

CSV形式のオプションとして、セパレーターが選べる。コンマで区切るよりもタブで区切る方が、ある意味合理的なので、タブで区切って保存する。これって、Tab Separated Values だから、TSVと呼ぶべきだと思うが、これでもやっぱりCSVと称するのだろうか。

それはともかく、あとは1行ずつ読み込んで処理すればよい。UNIXの標準入力から読み、標準出力に書き出すことにした。実際には、リダイレクトすれば良い。こうすると、プログラムは極めて簡単。入出力を書かなくてよいから。

while (<STDIN>) {
  chomp; # 行末コードを削除
  @data = split /\t/, $_; # $_は1行分のデータ
  # 以下、この配列に対する作業を行う。
}

こんな感じ。UNIXの便利さ、Perlの柔軟さが実感できる。

布教活動中?

朝起きると、家内は既に勉強中らしくパソコンで調べ物などしている。あれ?確か Ubuntu 起動用のCD-ROMを入れっぱなしだったと思うが・・・と聞いてみる。そこにユーザー名とパスワードがあったからログインしたよ、という返事。うーん、そうであったか :mrgreen:

一応、家内のアカウントも別に作ってはあるのだが、まあ、それはよい。とりあえず Ubuntu を抵抗無く使ってくれれば、こちらとしては成功なのである。ログインとログアウト(シャットダウン)の方法だけは覚えたみたいだし、Firefox (ブラウザー) には慣れているし。あとは IE じゃないと上手く表示されないタコなページに遭遇しないことを祈るのみだな。

環境変数の設定と .bashrc と .bash_profile と .profile

最近のUbuntu GNU/Linuxでは、ログイン時に .bash_profile ではなく .profile が読み込まれるらしい。実際、Ubuntu 8.04 (Hardy Heron) をインストールした直後に自分のHOMEを見たところ、.bash_profile はなかった。お勧めの使い方は .profile で .bashrc を読み込み、個人的な設定は .bashrc で行うというもの。それに従って、
export PATH = /usr/local/teTeX/bin:$PATH;
と /usr/local/teTeX/bin にパスを通している。ターミナルから which platex とかやると /usr/local/teTeX/bin/platex と表示されるので、パスが通っていることは間違いなく、実際、ターミナルからは platex hoge.tex とかでちゃんとプログラムが起動する。

ところが、エディターから platex を起動させようとすると、これが動作しない。しかたないので、フルパスを書いていた。これだと動作するのだ。今回、文字コードを判別しながら組版、PDF作成など一連の作業を行う自前の Perl スクリプトを作ったのだが、やはり system(“platex $texfile”) では platex を見つけられないようだった。仕方ないので、やはりフルパスを記述していた。

ふと思いついて、Perlが認識している環境変数を表示させてみた。スクリプトの最後に print(“PATH = $ENV{PATH}”) と書いて、環境変数PATHを表示させる。案の定、/usr/local/teTeX/bin は含まれていなかった。ううむ、何故なんだろう。

そこで、実験。試しに、直接 .profile の方に export PATH=/usr/local/teTeX/bin:$PATH; と書いてみた。おお、ちゃんとPerlも認識している。

結論。要は、見よう見まねに書いていた .profile と .bashrc あたりの設定が適切でなかったということですかね。きちんと勉強したい気もするが、そこまでの時間と余裕がない。とりあえず目的は果たしたということで、現状をメモするだけにしておこうか。

YaTeX(野鳥)をEmacs-snapshotにインストール

備忘録。てっきりインストール先は、/usr/local/share/emacs/site-lisp/ で良いと思って makefile を修正して sudo make install したのだが、まったく反応なし。Emacs-snapshot (Emacs 23) の場合は、/usr/share/emacs-snapshot/site-lisp/ だった。makefile を再び修正してインストール。とりあえず、yatex mode になったので、インストールは成功。これからコンパイル関係の設定をしなくてはならないが、今日は疲れたので、ここまで。

Firefox3.5

Firefoxのヴァージョン3.5が出たらしく、家内のWindowsの方ではアップデートが催促(?)されるというか、自動的にアップデートされたらしく、知らないうちに3.5になっていた(笑)。宣伝文句ほどは速さを感じないものの、確かに動作は以前よりきびきびしている。ということで、Ubuntu/Linux版はまだかなあと待っていたのだが、いつになってもアップデートのお知らせが来ない。

ところが、実はLinux版も既に出来ているようなのだ。何故にアップデートの催促がないのか不思議だが、ともかくサイトに取りに行き、解凍してfirefoxを起動。ブックマークなども既存のを読み込んで、3.5が使えるようになった。

ところが、これが3.0を上書きしていないようで、両者共存になってしまった。/usr/bin/firefox は依然として firefox-3.0 へのシンボリックリンクになっていて、3.5の方は、ダウンロードした場所が ~/firefox/firefox なので、ここを直接起動させないとダメ。ううむ、どうしようかな。これって、firefox本体だけ /usr/bin/ 以下に移して、そこにリンク張ってもダメなんだろうな。同じフォルダーに沢山ファイルあるし。

それから、3.0用のプラグインで3.5に対応できてないのが幾つかあることが判明。特にVideo Downloaderあたりが未対応なのがちょっと痛いかも。ということで、ショートカットを二つ作って、適宜使い分けることにした。ブックマークとかが共通なのが便利なのか危険なのか・・・ちょっと不安もあるのだが。

文字コードを判別してTeXにかけるPerlスクリプト

とある事情で、Ubuntu上ではUTF-8およびShift_JISの2種類のTeX文書を処理している。一々 platex -kanji=utf8 とか platex -kanji=sjis とか、したくないので、文字コードを判別してから組版し、ついでにPDFに変換して文書ビューアで表示させる Perl スクリプトを作ってみた。

ユーザーは自分だけなので、思いっきり手抜きだが、まずまず役立っている。

#! /usr/bin/perl -w
#
# [usage] myplatex hoge
#  hoge.tex の文字コードを判別して、platex -kanji=KANJICODE とコンパイル
#  引き続いて dvipdfmx で PDF を作り、文書ビューアー evince を起動する
#  とりあえず,普段使っている UTF-8 と Shift_JIS のみサポート

use strict;

my $basename;   # hoge
my $texfile;    # hoge.tex
my $dvifile;    # hoge.dvi
my $pdffile;    # hoge.pdf
my $kanjicode;  # UTF-8, Shift_JIS

$basename = $ARGV[0];
$texfile = $basename."\.tex";
$dvifile = $basename."\.dvi";
$pdffile = $basename."\.pdf";

open (INFILE, "<$texfile") || die "File Not Found\n";
close INFILE;

$kanjicode = `nkf -g $texfile`;
chomp($kanjicode);

if ($kanjicode eq "UTF-8") {
 system("platex -kanji=utf8 -interaction=nonstopmode $texfile");
} elsif ($kanjicode eq "Shift_JIS") {
 system("platex -kanji=sjis -interaction=nonstopmode $texfile");
} else {
 die "Not supported\n";
}

system("dvipdfmx $dvifile");
system("evince $pdffile");

熱暴走

かみさんのVAIOにHDDを外付けし、Ubuntu GNU/Linux として使用しているのだが、何と何と、熱暴走なるものを初体験してしまった。システムのアップデートから再起動を促されたので、一旦シャットダウン。さて、再起動しようとするが、途中でカーネル・パニックの表示が出てダウンしてしまう。ええ〜 😯 ワタシ、何もしてないのに〜。今度はリカバリーモードでブートさせるのだが、これも途中でダウン。画面に一瞬、critical temperature らしき文字が出たのに気づいたのが幸いだった。も、もしかして熱が原因でしょうか? 触ってみると、おお、熱い! 😯

ということで、しばらく冷ましてからブートさせる。何事もなかったように起動。ああ良かった・・・。それにしても、カーネルパニックの表示が出たときはビビったなあ。