2010年
12月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2010-12-07 新しいhomepage

_ homepageの構築

ようやく、あたらしい環境でhomepageを作れるようになった。しかし、サーバーのrubyは1.6.4と古く、まだうまくtdiaryを動かすことができない。とりあえず、homepageを少しずつ作り始めた。まずは、昔のhomepageの中から、価値のありそうなデータを引っ越して、それから徐々に新しい形にしていこうと思う。同じものを作っても面白くないし。


2010-12-15 やっとtdiaryを動かせた

_ ruby1.6.4でtDiary2.0.4

過去に、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をいまさら使わないといけなくなるとは思ってもいなかった。


2010-12-16 pythonの学習

_ pythonの返り値

pythonの本を読んでいたら、新しいことを知った。C言語はどんな文でも、値を返す。これはperlやrubyでも同様であろう。pythonも当然そうだと思っていたのだが、違うらしい。例えば、
print a=1
とすると、invalid syntaxと言われてしまう。つまり、式とステートメントには明確な区別があるのである。まだまだpythonは知らないことが多い。

2010-12-22 変則的なデータ

_ rubyのsplit

データを処理するプログラムをrubyで書いていて、うまく動かないので調べてみたら、文字列をsplitするときに、予想と違う挙動をすることに気がついた。
"1,2,3,".split(/,/)
とすると、["1","2","3",""]となると思っていたのだが、["1","2","3"]となっている。リファレンスを調べると、要素の最大数を第二引数に指定しないと、最後は無視されるようだ。さらにその数字に負の数を指定すると、要素の数はいくらでも取れるらしい。つまり、
"1,2,3,".split(/,/,-1)
とすると、私が期待する結果が得られる。 このことを知らなかったということは、これまで扱ってきた文字列は、比較的素直なものだけだったのだろう。

2010-12-23 CGIとruby

_ CGIを動かすために

あまり時間が取れなくて、なかなかhomepageの作成がはなどらないが、少しずつ進めている。今日はCGIを動かせるようにした。.htaccessに
Options ExecCGI
AddHandler cgi-script cgi
と記述すると、CGIが動かせるようになる。しかし、どこかでエラーが生じている。ruby1.8用に書いたscriptで、IO.readを使っていたが、これがサーバーのruby1.6.4では動かないのが原因だということが分かった。代わりにopen("formula.dat"){|f| f.read}と書くとうまく動いた。

2010-12-24 texlive-science

_ TeXの化学式

そろそろ、学生が卒業論文や修士論文を書き始める季節になってきた。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に便利なツールができてくるのはうれしいことなのだが、それに取り残されている自分が悲しくなる。


2010-12-28 ローカル変数

_ pythonとrubyの変数の違い

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()の中でも有効なのである。このどちらの方が便利なのか、意見が分かれるとは思う。