graphviz [graphviz]digraph {a -> b1; a->b2; b1->c1; b1->c2; b2->c3; b2->c4;}[/graphviz] pygments [pyg l=“python” style=“emacs”] #! /usr/bin/python import os,sys def test(): print “hello, World!” [/pyg] pygments 2 [pyg l=“bash” linenos=“table”] #! /bin/sh for i; do echo $i $(basename $i) $(dirname $i) done [/pyg]
久々にこのサーバが落ちました。uptimeは約40日。40日前はglibcのバージョンアップなどが行われたため、手動でrebootした。
今回もENOMEMですね。このときと同じような現象です。約1日ずっと落ちてました。最初にspamassassinが落ちたらしく、迷惑メールが大量にメールボックスに入るようになったのがきっかけで、18日の夜には問題に気づいていましたが不覚にも寝落ちしてしまい、19日の朝はもうsshで入れない状態。管理画面から再起動をかけましたが、起動しませんでした。19日の夜に再度の再起動をかけると戻りました。
メモリは以下のとおりスカスカですが、ENOMEMでほとんど何も動かなくなる。

VPSの場合はこういうのはしょうがないのかもしれませんね。あとはどう気づいて、動く間にrebootなり重要度の低いプロセスを落とすなり管理者にメールで通知するか、という話になるのかな。
その1。
ルビをつけるソフトを作りたいと思った。長男はもうだいぶひらがなを読めるが漢字は読めない。あと数年は読める漢字の制約も大きいだろう。難しいものだと、30代も後半に差し掛かっている自分でもたまに読めない漢字があり、検索窓にコピペして読み方を調べることも珍しくない。ということで、ブラウザに自動ルビふり機能があれば、大人も子供も使いたいはず。
イメージとしては、見ているウェブページの文章に自動的にルビをつける。Chromeの翻訳機能みたいな感じで、ボタンひとつでルビをon/off。あるいは「ソースを見る」に近いインタフェースでも良いだろう。すでにあればインストールするだけなんだけど、ちょっと探しただけだと見当たらなかった。
その2。
テキストの簡易マークアップを見ていくと、MarkdownやTextileやBBcode、Wiki記法、DocBook、HTML、RDoc(Ruby)、POD(Perl)、reStructuredText(Python?)あたりの有力なものがある。私としては文書を作りたいけどWordとかLaTeXには直に触りたくないのですね。最終的にはブログ記事(HTMLのサブセット?)やEPUB、PDF、Word、LaTeXソース等を出力することになる。普通のテキストエディタで文書を書いていきたいが、見栄えが悪いplain textのままではイヤだし、画像や簡単な数式やグラフを自由に貼りたくて、バージョン管理は普通にMercurialとかgitでやりたい。
年明け一発目ですが、我那覇本を読みました。
なんだろうこの怒りの感情は…
うっすら見えてくる事件の流れとしては、その場しのぎの詭弁の天才・青木(ほぼ主人公)に騙されたサッカーだけしか見えてないバカが組織の上のほうにいた、気づいたときには引けなくなっていた…ということか。しかし青木の詭弁のモトになったものを考えると、これって川崎の社長のせいじゃねーの?
というわけで採点です。
| 青木 | 4.5 | バカを騙すことに成功し、意図的に無実の選手を陥れる。地位に相応しくない行動を続け、主人公の地位に恥じない活躍ぶり |
|---|---|---|
| 鬼武 | 5.5 | バカ無罪。いまだに事実に気づいていない。本書における2番目に大きな驚き |
| 川淵 | - | 出番少なく、採点なし |
| 犬飼 | 6.0 | 青木の追放に成功 |
| 遠藤(副大臣) | 6.5 | 与えられた地位を越えた行動。よくがんばりました |
| 友近 | 6.5 | 民主党の議員にしてはよくやった |
| 後藤 | 6.0 | いまマリノスのユースにいるんですね |
| 仁賀 | 7.0 | MoM。浦和の人とは思えないほどよくやった。本書における最大の驚き |
| サンスポの記者 | 4.5 | こいつはいったい、何がしたいの? |
| 新城さん | 6.5 | ちんすこう大使。すごいよね |
| 山崎さん(華族) | 5.5 | 平常運転を続行 |
| 清水の社長 | 6.5 | 川崎の社長やってくださいおねがいします |
| 神戸の社長 | 6.0 | 理解力の高い人物 |
| 藤田(選手会) | 6.0 | 地位にふさわしい行動をとり続けた |
| 武田(川崎の社長) | 3.0 | 卑屈な姿勢で無用の混乱を招いた本事件のA級戦犯。人の上に立つような男ではない |
| 我那覇 | 6.5 | 身を削り、勇気ある選択と行動でスポーツを救った。ただ移籍先は神戸よりも清水にするべきだったと思います |
| 杉浦 | 5.5 | 理不尽な痛みに耐えた |
| 田坂 | 5.5 | 近年、印象に残るアシストはほぼ全てこの男によるもの |
| 木村(著者) | 6.5 | 私はずっと、こういう本を読みたいと望んでいた |
もっとこう、青木vs.仁賀の知能対決みたいにしたら「沈まぬ太陽」みたいなサスペンスになったかもしれませんね。青木のパーソナリティに興味が沸騰?
今年も大晦日になりました。皆さんモチ食ってますかー
今年はいろいろありましたね。まず三男が産まれて、一層にぎやかになりました。だんご3兄弟をiTunesで仕入れて、車の中で聴いてます。いつもふざけてばかりの長男は幼稚園で下品な言葉を覚えてくるし、次男もそれを真似する。楽しい時期ですね。
わたなべ家には初めてサンタクロースが来ましたが、サンタさんは長男の希望「ふぉーぜのべると」ではなく、レゴのバケツ(緑と赤:なにげにクリスマスカラー)をくれました。これは私も欲しかった。でも奥さんはやる気ないし、来ない可能性もあったわけで。
私は5月に入院したりしてフルに動けませんでしたけど、電話をAndroidにしたり、小遣い稼ぎのコンピュータの仕事の方でもまあまあコードを書いて過ごせたんで、悪くない1年でした。
あとは3月の地震ですよね。地震とそれに引き続いて起こった/起こっている出来事は将来、例えば30年後に自分の人生を振り返ったときに必ず思い出す、歴史的な経験の一つ。
やっとAndroid版が出ましたね。いつまで待たせるんだと思ってましたが、早速入れてみて、悪くない出来だと思いました。PCではずいぶん前から使ってました。Linuxでもmozcでしたし。こういうところからGoogleに染まるのもどうかと思いますけどね。
メールに「あ、そう」「了解」くらいしか書かない私でも、入力方法は気になるもんです。
この文章も、AndroidからGoogle日本語入力で入れてます。
簡単な計算をするときに長らく重宝していたのがcalcというソフト。コマンドラインから十分な精度で計算してくれる。非常に便利で、私はここ数年というもの、毎日のように使っていた。
- calc “9**100”
265613988875874769338781322035779626829233452653394495974574961739092490901302182994384699044001 - calc 1/10
0.1 - calc “sqrt(2)”
1.4142135623730950488
別にPython起動してもいいんですけどね。シェルの入力でそのまま計算できるというのは便利なもんです。
しかしFedoraならいいけど、EPELにパッケージがないのでCentOSでは使いにくいという問題があった。しょうがないので自分でrpm作って入れてたんです。
そこに登場したのがPythonのeval()をうまく使ったclacというソフト。似たような使い勝手で、Pythonなので無限桁の整数を苦もなく使える。拡張もやりやすい。ソースはPythonのスクリプト1本なので、Cygwinのような環境にも持ち歩ける(Cygwinのパッケージには入ってませんが)。
これは良い! 非常に!!
…のだけど、
- clac “9**100”
265613988875874769338781322035779626829233452653394495974574961739092490901302182994384699044001 - clac 1/10
0.10000000000000001 - clac “sqrt(2)”
1.4142135623730951
うーむ。浮動小数点の演算で誤差が入るのはどうもアレですよねー。
しかし、拡張可能というのがこういう時に使えることを私は知っている。Pythonには分数や10進演算のモジュールがある。分数は確かPython 2.7以降だから入ってない古い環境もあるかもしれないが。なので、~/.clacrcに以下のように書いておく。
try:
from fractions import Fraction
frac=Fraction
except ImportError,detail:
#old python
pass
from decimal import Decimal
dec=Decimal
これによって、正確に計算することができるのだ。
先日、風邪にやられました。
- 1ヶ月くらいハナが出たり出なかったり、セキが出たり出なかったり、熱は出ないが…というだらだらした状態が続き、
- 突然、強烈な頭痛が襲ってくる!
- 半日(?)もあれば終わります
ちょっと長めにセキが出ている人は要注意です。少しでも頭痛を感じたらすぐに頭痛の薬を飲んで寝ることですね。
私の場合は18時頃に自宅で「ちょっと頭痛いかな」という感じがして、19時にはもう耐えられないくらい痛かったです。時計も見る気になれないくらいだったけど、21時はまだ痛かったかな。夜中にはもうかなり回復していて、朝はもう何ともなかったです。それにしても、あそこまで痛いのはなかなかない経験だったなぁ。外出中だったらやばかった。
Python.NETことIronPythonでプログラムをMSIL(アセンブリ)にコンパイルするときに、普通にやるとモジュールを使えない。Tools/Scripts/pyc.pyでコンパイルできて.exeと.dllを生成できるのだが、実行すると例外が発生して落ちてしまう。sysは組み込みらしく使えるものの、sys以外のモジュールはひどい状況だ。
最初はprintくらいしか使ってない非現実的な例しか見つからなくて困った。
例外の文字列を見ながら、モジュールも込みでコンパイルする(pyc.pyにモジュールのファイルをいちいち追加していく)と、何とか実行できるファイルを生成できるが、非常に長大なコンパイルオプションになり、面倒なことに。とてもやってられない。
import文を追跡してpyc.pyに渡すスクリプトを書けばいいのかなぁと思いながらググッていると、良い情報があった。
次のようなスクリプトを実行して、一度stdlib.dllを作っておく。
少しググッてみたけど答えは見つからなかった。とにかくmain()に渡されるargcとargv。これを引数で渡すことナシに別の関数から勝手に参照したいと思い立った。
なんでそんなことをしたくなったのか分からない。でも思い立ったものはしょうがない。
それなりに調べていくと、環境変数を示すenvironというグローバル変数を使えば良いようだ。
extern char **environ;
そしてenvironとargc/argvは以下のような関係にあるらしい。
- (long)environ[-2-argc] = argc
- environ[-2-(argc-1)] = argv[0] (= 実行ファイルを示す文字列)
- environ[-2-(argc-2)] = argv[1] (= 第1引数)
- :
- environ[-2] = argv[argc-1]
- environ[-1] = argv[argc] (= NULL)
- environ[0] = ここから環境変数
- :
とても移植性があるとは思えないですね。Linuxでは動作したが。
#include <stdio.h>
void show_argv(){
extern char **environ;
int n=-1;
if(environ[n]!=NULL) return;
--n;
while((long)(environ[n])!=-n-2){
--n;
}
int argc=(long)(environ[n]);
char **argv=&environ[n+1];
int i;
for(i=0; i<argc; ++i){
printf("%d: %s\n", i, argv[i]);
}
}
int main(int argc, char **argv){
printf("in-main\n");
int i;
for(i=0; i<argc; ++i){
printf("%d: %s\n", i, argv[i]);
}
printf("out-main\n");
show_argv();
return 0;
}
// gcc -Wall -o test-argv test-argv.c
以下、実行結果。
# ./test-argv test argument here.
in-main
0: ./test-argv
1: test
2: argument
3: here.
out-main
0: ./test-argv
1: test
2: argument
3: here.
でも、移植性のある方法はないんでしょうかね?