xemacs21のビープ音を消した。
emacs21にいつ移行しようかと思いつつ、xemacs21を使い続けているが、エラーのときにビープ音がうるさいので消してみた。設定ファイルに
(setq visible-bell t)
を追加すると、ブザーの代わりに画面が反転するようになる。でも、意外に目にうるさい感じがする。反転もしなくする方法もあるとは思うけど、どうするのかな。
xemacs21のビープ音を消した。
emacs21にいつ移行しようかと思いつつ、xemacs21を使い続けているが、エラーのときにビープ音がうるさいので消してみた。設定ファイルに
(setq visible-bell t)
を追加すると、ブザーの代わりに画面が反転するようになる。でも、意外に目にうるさい感じがする。反転もしなくする方法もあるとは思うけど、どうするのかな。
Windowsでpdfをつくるのは面倒なようだ。
Acrobatを入れれば良いのだろうが有料だし、と思って調べてみたら、方法を見付けた。まず、AdobePSプリンタドライバというのがあるので、それをdownloadして、インストールする。その際、ポートとしては、ローカルのFILEを選択する。すると、印刷のところからPSを作れるようになるので、ps2pdfで変換すれば良い。Acrobatで変換したときと、フォントが違うようだが、まあ大きな問題ではないだろう。
標準でPSも作れないWindowsもどうかと思いますが。まあ、OpenOfficeを使うか、TeXを使えば良い話なので、あまり利用価値はない気がしますが。
Linuxでも簡単にスキャナーが使えるようになってきた。
まずはsaneをインストール。
sudo aptitude install sane sane-utils
使ったのは、canonのN1220Uというスキャナーだが、これをUSBにつないで、
sane-find-scanner sudo scanimage -L
として、うまく認識していることを確認したのち、
sudo scanimage |convert - temp.png
として、データを取り込む。しかし、デフォルトの設定をかえるオプションがわからなかったので、
sudo xscanimage
としたら、windowsなんかでよくあるような感じで簡単に指定できた。あとはimagemagickで変換でもなんでもすれば良いだろう。
タブ補完のときのビープ音がうるさかったので、消した。
これまで、あまり気にしていなかったが、他の人に迷惑かなと思って、ターミナルのビープ音を消してみた。/etc/inputrcのset bell-style noneの部分のコメントアウトしてあるのを、#を消して有効にすれば終わりです。
他のアプリケーションに関しては、どうするのかな。
エディターの設定
acroreadを使っていると、defaultのeditorがなぜかacroreadに設定されてしまった。以前もそんなことがあったので、何か悪さをしているのだろう。起動するアプリケーションは、 .config/rox.sourceforge.net/MIME-types/ に設定ファイルがある。このtext_plainが書き換えられているようだ。/usr/share/rox/Choices/MIME-types/text を参考に、
#! /bin/sh exec x-terminal-emulator -e sensible-editor "$@"
としたら、無事nanoが立ち上がるようになった。
提出書類をplatexで準備
書類のほとんどがwordやexcelで出すように強要される。せめてopenofficeを使って欲しいのだが、世の中はそう簡単には変わらないようである。
Linuxユーザーとしては、これをどのように処理するかが問題なのだが、これまでは最後だけwindowsマシンで処理して提出するという手段でごまかしてきたが、今回はlatexで処理してみた。
まず、windowsマシンで書類をpdfに変換してもらう。これよりあとはすべてlinuxマシンで行うことができる。そして、acroreadでページ毎のpsを作る。このとき、printerの設定をcustomにしておかないとあとでエラーが出た。ps2epsでepsに変換すれば、それらをwatermarkとして背景にして文字を書き込んでいけば良い。
注意しなければいけないのは、watermarkとして文字を書き込んだ場合には、ページが出力されないので、phantomをつかって、何かの文字があるようにしておかないといけない点です。連続したページの場合には、本文として文字を書き込んで、watermarkはthiswatermarkとwatermarkでページの背景を作りわけると良い。
2009.10.12追記 watermark.styはdebian lennyではtexlive-latex-extraに入っているらしい。
Rのエラーメッセージはわかりづらい。
せめて、行番号くらい出して欲しい。warningに関しても同じことが言える。一応オブジェクト指向なのだが、隠蔽があんまりできない感じだし、やはり長いプログラムを組むにはあまり向かない気がする。長らく発見されずにどこかでエラーが起きて気づかなかったバグが、今日ようやく取れた。まあ、慣れもあるんだろうけど。あまりオブジェクト指向っぽく書けていないのも、バグができる要因なのだろう。グラフを簡単に書けるようにするプログラムを作っていたのだが、書くよりも簡単にコマンドを覚えられる気がする。
ふたつのブラケット
Rのtcltkでbindを使ってみた。tkbindを使えば良いのはすぐに分かったが、
tkbind(widget,"<<ListboxSelect>>",function(){})
でなんとか動いた。ふたつ括弧が必要なのはなぜだろう。ruby/tkのときは一つだったのに。まあ、tcl/tkを理解しないで使っているので、気にしないことにしよう。
Rの正規表現は面倒だ。
perlやrubyでは、スラッシュでquoteするので、バックスラッシュの取扱いが簡単だが、Rでは、“や’でquoteするので、バックスラッシュを二個重ねないといけないので、厄介だ。
rubyだと、
r.gsub!(/\^\{([^\}]*)\}/){"\",phantom()\^{#{$1} phantom()},\""}
と書けば良いところを、
r<-gsub('\\^\\{([^\\}]*)\\}',"\",phantom()^{\\1 phantom()},\"",r)
というように長くなってしまう。ちなみに、phantom()はV4+とかのときに、エラーがでないようにするためにつけています。
Rのプログラムは思ったより組みやすい。
オブジェクト指向だし、変数はローカルだし、慣れればなんとかなりそうある。しかし、癖はある。rubyに慣れていると、括弧とかを省略してしまって、すぐにエラーがでる。
今日は、どんなデータフレームが読み込まれているかを調べる関数を作るのに苦労した。データフレームもローカルなんですね。また、is.data.frameは名前の文字列を入れると、文字列なので、常にFALSEを返してしまうので、evalでごまかした。
data_frame <- function(){ l<-ls(env=.GlobalEnv) r<-c() for(i in l){ if(eval(parse(text=sprintf("is.data.frame(%s)",i)))){r<-c(r,i)} } return(r) }