2005年03月31日(Thu) 萌え萌えRubi [長年日記]
● っていうかまだ3月なんですけど。
● [memo] Pythonのlist#unshift
list.pop(0)
となー。
● 全部消えました
python setup.py clean --build-lib . --build-temp .
したら何もかも消えました。そんなものなのかのうorz
● [memo][momonga] HeadのNFSサーバーがマウントできない?
rpc.idmapdが起動しないとか起動してもクライアントが接続を切られるとか。時間ができたら調べてみる。iptablesもSELinuxも関係ない(動かしていない)。
● SEGVをもらいに行く
CでPythonの拡張モジュールを書いている。参照カウントを数えまちがえるとpythonをすこっと落とせます♪大変だ。
● Pythonの時刻を表すクラスをみつけられない
time.timeと同じくfloatを返す関数にしちゃったけどよかったのだろうか…。
(追記)おくじさん、ありがとうございます。
言葉たらずですみません。今、Cで拡張モジュールを書いていて、ファイルに文字列として書いてあるUTの時刻を環境に依らずPythonの時刻オブジェクトにしたいと思いました。datetimeモジュールはみつけたのですがCからのAPIを見つけられず、そして、CからPythonのコードを同じインタプリタで実行する方法も見つけられませんでした。これは僕の探しかたがわるい。
一方、timeモジュールには統一的な時刻オブジェクトはなく、あるメソッドは引数としてfloatをとるしあるメソッドはstructをとるように見えました。structはCでのstrcut tmと同様のもののようで結果がタイムゾーンに依存してしまうので却下。
そういうわけで、Cでtime_tとして作った値をfloat(Cではdouble)に変換するようにしたのですが、ここで一つ心配が。doubleとtime_tって少なくとも手元のマシンではビット数が一緒なのです。ということは、2038年(でしたっけ?)が近づくと今作った関数が返す時刻の精度は1秒未満になってしまうのではないか?ということです。この関数には0.1秒の精度が必要で、Cとしてはstruct timevalを返すことで実現してるのですが。
たぶん、datetimeモジュールで定義されているクラスのオブジェクトを返せるように勉強する、というのが正道なのですよね。このモジュールにはstruct timeval相当のクラスがあったような気がします。
(もっと追記して訂正) 上で、time_tとdoubleが同じバイト数だ、と書きつつ、なにかひっかかるものがあったのでやっと調べてみました。glibc-2.3.4では、sizeof(time_t)は4、sizeof(double)は8。やっぱり嘘でした。time_tをdoubleに変換しても精度は悪くならなさそうだ。お詫びして訂正します。
datetimeモジュールにクラスがいろいろあるみたいです。>時刻を表すクラス<br>timeモジュールにもstruct_timeというクラスがありますね。<br>私も使ってないのでよくは分からないです。
最近のツッコまれどころ