|
setup diary |
ようやく、あたらしい環境でhomepageを作れるようになった。しかし、サーバーのrubyは1.6.4と古く、まだうまくtdiaryを動かすことができない。とりあえず、homepageを少しずつ作り始めた。まずは、昔のhomepageの中から、価値のありそうなデータを引っ越して、それから徐々に新しい形にしていこうと思う。同じものを作っても面白くないし。
過去に、tdiaryは、ruby1.8.5とruby1.6.8で動かしたことがあった。1.6.8では、それほど苦労しなかったが、今回は1.6.4である。まず、uriが無いと言われるので、手元のPCのruby1.8の/usr/lib/ruby/1.8/の中のuri.rbとuri/*をtdiary.rbと同じ場所に置いたらなんとか動くようになった。過去のデータを移動するために、*.td2をすべてコピーしてくると、一応の体裁は整った。
しかし、実際に日本語を書き込もうとしたら、uconvが無いと言われる。今度はrbuconvをtdiaryのところに置いて、update.rbにrequire 'rbuconv'を加えたら、書き込みも出きるようになった。
9年前のrubyをいまさら使わないといけなくなるとは思ってもいなかった。
print a=1とすると、invalid syntaxと言われてしまう。つまり、式とステートメントには明確な区別があるのである。まだまだpythonは知らないことが多い。
"1,2,3,".split(/,/)とすると、["1","2","3",""]となると思っていたのだが、["1","2","3"]となっている。リファレンスを調べると、要素の最大数を第二引数に指定しないと、最後は無視されるようだ。さらにその数字に負の数を指定すると、要素の数はいくらでも取れるらしい。つまり、
"1,2,3,".split(/,/,-1)とすると、私が期待する結果が得られる。 このことを知らなかったということは、これまで扱ってきた文字列は、比較的素直なものだけだったのだろう。
Options ExecCGI AddHandler cgi-script cgiと記述すると、CGIが動かせるようになる。しかし、どこかでエラーが生じている。ruby1.8用に書いたscriptで、IO.readを使っていたが、これがサーバーのruby1.6.4では動かないのが原因だということが分かった。代わりにopen("formula.dat"){|f| f.read}と書くとうまく動いた。
そろそろ、学生が卒業論文や修士論文を書き始める季節になってきた。TeXを使って論文を書く人も多いと思うが、化学系で面倒なのが、化学式である。これまで、rubyを使って、化学式らしい部分を自動で変換していたが、便利なstyファイルがあることを教えてもらった。mhchemというもので、Debianの場合にはtexlive-scienceに入っている。ヘッダーに
\usepackage[version=3]{mhchem}
と書いておいて、\ce{H2O}などと書くと、それが化学式として出力される。/usr/share/doc/texlive-science-doc/latex/mhchem/mhchem.pdfに、詳しい説明がある。イオンでまぎらわしい時には、\ce{CrO4^2-}とする。結晶水の点はピリオドで記述するようだ。
texlive-scienceに入っている他のものとしては、sciposterというのが気になった。ポスターを作るときには、posterクラスを自分で修正したものを使っていたのだが、こちらの方が便利そうだ。いつか使ってみるかもしれない。
TeXに便利なツールができてくるのはうれしいことなのだが、それに取り残されている自分が悲しくなる。
rubyでは、グローバル変数は使わないのが原則らしい。通常の変数はすべてローカルになる。例えば、
a=1 def f(b) return a+b end print f(1)
とすると、aはf()の中では宣言されていないので、エラーが出る。しかし、pythonでは取扱いが違うらしい。
a=1 def f(b): return a+b print f(1)
とすると、2を表示する。つまり、aはグローバル変数として取り扱われて、f()の中でも有効なのである。このどちらの方が便利なのか、意見が分かれるとは思う。