ウイグル文字とutf-8

ウイグル文字でhtml
今週はウイグル語というよりウイグル文字の勉強をした。目的は、homepageのどこかを見れば分かるでしょうが。ウイグル文字はアラビア文字系で、右から左に読む。htmlでは、utf-8を使うのが良いのだろうということで、

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">

として、コードは

&#1726;&#1609;&#1583;&#1585;&#1608;&#1711;&#1744;&#1606;

というように記述した。ちなみに、上の文字列は水素です。文字はアルファベットと対応がつけられているようなので、この変換スクリプトをrubyで書いて、いろいろ変換して表示させていくうちに、なんとなくは読めるようになってきた。 そうしているうちに気づいたのだが、ややこしいことに、前後の文字とのつながり方によって、文字の形が変わってしまいます。時には、元の文字が分からないぐらいに。ただ文字を並べるだけで、表示が変わるので、書くときにはそれほど意識する必要はないのだが、フォントはどんなしくみでこれを実現しているのだろう。しかし、困ったことに、いくつかの文字では、このつながったときに形が変わるべきなのに、変わらないということが起きている。おそらくこれは、アラビア語には無い文字の場合に、そのような処理が行われていないのではと予想しているが、確証は無い。ウイグル語のフォントも見付けたのだが、インストールするべきか迷っている。

Read more...

Rで日付を用いたグラフ

x軸が日付のグラフ
あるものの経時変化を見たくなったので、プロットしてみた。rubyでデータを計算するところまでは問題ないが、何を使ってプロットしようかというところで迷ってしまった。日付を数字に直してからプロットしても良いのだが、面倒だし。Rでも日付を扱えるようだったので、練習してみた。基本的には、as.Dateで文字列を日付に変換すれば、適当に処理してくれるようだ。文字列としては、“2008.5.11"じゃだめで、“2008/5/11"とか"2008-5-11"としないといけないようだ。あとは軸のところで、axis.Dateを使って指定するぐらいかな。

d<-read.table("number.out",header=TRUE)
xl<-as.Date(c("2004-4-1","2008-6-1"))
yl<-c(360,480)
par(tcl=0.5,xaxs="i",yaxs="i",ann=FALSE)
plot(as.Date(d$date),d$num,type="l",xlim=xl,ylim=yl,axes=FALSE)
box()
axis.Date(side=1,at=
  seq(from=as.Date("2004-4-1"),to=as.Date("2008-6-1"),by="6 months"),
  format="%Y%m")
axis(side=2)
axis(side=4,labels=FALSE)
mtext(side=2,"the number",line=3)
mtext(side=1,"date",line=3)

グラフを書くときは、軸とかラベルとかははずしてplotして、後から書いているが、それをそのまま適応すれば、ほとんど問題なくできた。年号が変わったときにだけ年を表示したいと思ったのだが、

format=c("%Y/%m","%m")

としてごまかした。これだと六ヶ月おきだから使える方法で、任意の間隔の場合には問題になるだろう。

Read more...

media

昔のメディア
PCで仕事をする機会が増えてきたが、それに伴って古いメディアに保存されたデータを取り出す必要が出てくる場合がある。そのために、各メディアに対応したドライブを用意しておくと便利である。 個人的にはいろいろなドライブを取っておいている。FDとしては、3.5や5インチは当然だが、8インチも一応読めるようにしている。マイナーなところでは、PDとかZIPとかJAZZなんかもある。これらは現在ではメディアの入手が困難になっているが、ZIPは最近入手方法が開けた。MOもそろそろ過去のものになろうとしている。また、ezflyerというのもつい最近いただいたのだが、こちらはメディアが手に入るのかが疑問だ。 FDにしても、2インチや2EDなんかもまだ持ってないし、世の中にはいろいろなメディアがあるものである。 いろいろと調べていたら、MDもPCのメディアとして使えるらしい。しかし、そのようなドライブはかなりマイナーらしい。 USBメモリの普及に伴い、これらのメディアは徐々に姿を消していってしまうのだろうが、それぞれ個性があって面白いものである。

Read more...

gifアニメーション

ImageMagickでアニメーションをつくる
結晶をまわす絵を作りたかったので、convertで作ってみた。

convert -delay 10 -loop 0 hoge*.jpg temp.gif

delayの単位は10msで、アニメーションの速度を変えられます。loopでループの回数を設定しますが、0だと無限ループになります。このようなアニメーションがTeXに組み込めるようになると、プレゼンで使えるのに。でも、epsでアニメーションができるようになってからかな。

Read more...

debianでcapture

キャプチャーカードのインストール
NTSCを画像として取り込むために、キャプチャーカードをインストールした。カードはIODATA GV-VCP3/PCIを使用しました。以前にやっているので、それほど苦労しなかったが、moduleを組み込むようにして、必要なソフトをインストールして、permissionを変更して、終了。

echo "alias char-major-81 videodev" >> /etc/modprobe.d/video
echo "alias char-major-81-0 cx88xx" >> /etc/modprobe.d/video
echo "options cx88xx card=10" >> /etc/modprobe.d/video
aptitude install v4l-conf
aptitude install xawtv
mknod /dev/video0 c 81 0
chgrp video /dev/video0
chmod g+w /dev/video0

一番のコネクタに接続しているのに、なぜか二番のところで写る。不思議だが、まあ使うのには問題ないので良いだろう。

Read more...

プリンターの設定

PPD for Linux
長らく標準ドライバで動かしていたが、思い立ってプリンタの設定をした。使用するプリンタのPPDを探すのが一苦労なのだが、OKIの http://www.okidata.co.jp/support/unix/ppd.html に、Linux用のPPDを見付けたので、ダウンロードしてgunzipして適用してみた。KNOPPIXでの設定の仕方を見ると、JCLから%JCLにするように書いてあるが、とりあえずそのままでやってみた。うまくいかなかったらあとで変更しよう。 もう一台はFujiXeroxだったが、こちらもPPDが見付からなかったが、windows用のPPDをdownloadして、wineで展開したら、入手できた。

Read more...

perlとpythonとruby

スクリプト言語の比較
現在、pythonを少し勉強し始めたところだが、まだ哲学が分からない。今のところ、perlは楽に作る、rubyは楽しく書く、pythonは楽に読める、ということを重要視しているように感じている。例えば、簡単なループをするときには、perlだと

for($i=0;$i<10;$i++){print $i;}

となり、C言語から入った人には非常に分かり易い。一方、pythonだと

for i in range(0,10):
  print i,

となる。これ以外には書き方はほとんど無いでしょう。しかし、rubyだと

for i in 0...10 
  print i
end

が標準的な書き方でしょうが、

10.times{|i| print i}

でも良いし、

0.upto(9){|i| print i}

とも書ける。好きに書けるが、methodを知らないと何をしているのか分からなくもなってしまう。まあ、一長一短があるでしょうが、好きずきなのではないでしょうか。rubyは日本語が安心して使えるという利点もありますが。

Read more...

シェルスクリプト

rubyとsh
コマンドラインからのコマンドを実行する必要のある簡単なプログラムは、rubyで書くよりはシェルスクリプトの方が自然だと思うので、時々シェルスクリプトを使うのだが、文法がまだ覚えられない。今日は、 if then else fi while do done と、ファイルがあるかを調べるtest -fを覚えた。それから、前のコマンドが成功したときに実行するための&&と、失敗したときに実行するための||も知った。 あまり深く勉強するつもりはないが、シェルスクリプトをまともに書けるようになるのはそうとう先のことになりそうだ。

Read more...

rejectとdelete_ifとselect

rejectとselectはこれまで知らなかった。
rubyでarrayの処理にはdelete_ifをよく使っていたが、reject!の方が一般的な記述のようだ。当然rejectもあって、その逆もselectという名前であるらしい。「Rubyデスクトップリファレンス」を愛用しているのだが、rejectは配列の所に載っていたが、selectはEnumarableの所にあって、なかなか見付けられなかった。また、以前から欲しいと思っていたmethodであるmaxとかminとかも実はEnumarableにあった。これまでは、delete_if{|l| not l==0}のような感じで使っていたことも多かったのだが、selectを使うようにしよう。

2008/4/21追記 しかし、select!はない。

Read more...

sargeからetchへ

測定用のPCのOSをsargeからetchにした。
今回は二台目なので、ほとんど問題なくいったが、GPIBを入れるときに、シェルスクリプトを動かしたのだが、ソースをtarで展開するところがスキップされてしまったようだ。一行ずつコピーして実行したら動いたので、結局何が悪かったのかよく分からないけど。

Read more...