Skip to main content

ログ取得ツール

Google日本語入力きたー

やっとAndroid版が出ましたね。いつまで待たせるんだと思ってましたが、早速入れてみて、悪くない出来だと思いました。PCではずいぶん前から使ってました。Linuxでもmozcでしたし。こういうところからGoogleに染まるのもどうかと思いますけどね。

メールに「あ、そう」「了解」くらいしか書かない私でも、入力方法は気になるもんです。

この文章も、AndroidからGoogle日本語入力で入れてます。

clacは使えるよ!

簡単な計算をするときに長らく重宝していたのが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時はまだ痛かったかな。夜中にはもうかなり回復していて、朝はもう何ともなかったです。それにしても、あそこまで痛いのはなかなかない経験だったなぁ。外出中だったらやばかった。

IronPythonメモ

Python.NETことIronPythonでプログラムをMSIL(アセンブリ)にコンパイルするときに、普通にやるとモジュールを使えない。Tools/Scripts/pyc.pyでコンパイルできて.exeと.dllを生成できるのだが、実行すると例外が発生して落ちてしまう。sysは組み込みらしく使えるものの、sys以外のモジュールはひどい状況だ。

最初はprintくらいしか使ってない非現実的な例しか見つからなくて困った。

例外の文字列を見ながら、モジュールも込みでコンパイルする(pyc.pyにモジュールのファイルをいちいち追加していく)と、何とか実行できるファイルを生成できるが、非常に長大なコンパイルオプションになり、面倒なことに。とてもやってられない。

import文を追跡してpyc.pyに渡すスクリプトを書けばいいのかなぁと思いながらググッていると、良い情報があった。

次のようなスクリプトを実行して、一度stdlib.dllを作っておく。

main()の外でargcとargvを見るには?

少しググッてみたけど答えは見つからなかった。とにかく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.

でも、移植性のある方法はないんでしょうかね?

川崎3-0マリノス (オー、ジュニーニョ)

前日に発表された衝撃的な契約満了のニュースを受けて、10番のユニを着て等々力へ。ホーム最終戦。天皇杯に出ずに帰国することがアナウンスされ、アウェイに行けない私には最後のジュニーニョとなる。どういう気持ちで見ればよいのか…

状況が消化試合ってところが悲しいですけど、ジュニーニョにゴールさせて勝つというタスクは完遂しました。しかしマリノスは最初から谷口FWってどうなってるの(笑)。前半はセカンドボールを拾われまくり押し込まれるものの大したチャンスは作らせず、しかし川崎もシュートは少なかった。ジュニーニョは1本ミドルを打って感覚を磨き、小林悠のヘッドはポストを叩き、後半へ。カウンターからのクロスをオウンゴールで先制1-0、ガチャガチャした展開を続け、カウンターで綺麗に崩してフリーのジュニーニョにボールをつなげ、連続得点3-0。1点取らせないとマクドナルドの賞(決勝点を取った選手に贈られる)がジュニに行かないんでは? と思って見ていたが、マリノスのシュートは枠外で守りきってしまった。賞はオウンゴールだとどうなるのかと思ったが、普通にジュニがもらっていた(別に点を取られなくても良かったのだ…)。

Jリーグも残り2試合

残り2試合になりました。今週末がホーム最終戦というクラブが半数。

川崎は広島でJ1残留を確定させましたが、今年もアウェイがラストゲームです。私は最終節はホームでやるほうが好きなので、残念ですね。

J1の優勝は柏・名古屋・ガンバの3クラブに絞られました。マリノスは早々と4強から脱落しまして、川崎は週末にそのマリノスとホーム最終戦を戦うことになります。どっちから見ても、言っちゃ悪いけど消化試合だよね。マリノスのほうは賞金額が変わるか。川崎は2連勝すれば賞金圏に届く可能性が数字上は残っていますが…まずないでしょうね。あんだけ負けてたら当然です。

えー、優勝争いの話でした。柏は2位の名古屋に3ポイント差をつけているので圧倒的有利か。ガンバは可能性は残っているけど、2勝しても勝ち点は70。柏が1勝でもすると追い付きません。残りの対戦は、以下のようにいずれのクラブも最終節がアウェイです。

  • 柏…Hセレッソ、A浦和
  • 名古屋…H山形、A新潟
  • ガンバ…H仙台、A清水

対戦相手を見ると、ガンバが一番きついかな。名古屋は2勝しそうですね。でも柏が浦和を落として目の前で優勝を決めるかな? ちなみに浦和は昨年話題になったように、最終節は毎年負けてますからね。セレッソは難敵ですが、普通に行けば引き分けくらいは得られるんじゃないかな。

1次分は完売

昨日動き始めたサーバにデータを送りながらぼんやりブラウザを眺めていたら…CloudCore VPS 新規受付の一時停止につきまして

初日の反響を見て速攻でマシンを発注したとして、納期が1週間、頑張って構築して10日後(つまり11/25)くらいには申し込み再開できてるかな? こりゃ勤労感謝の日(11/23)は出勤確定か。誰が?

普通はこういうサービスを始めるときはどのくらいのサーバを用意するものなんだろう。

仮に300台くらいで構築していたとすると、1ノードの構成がQuadCoreのAMD Phenom x2だとして8コアだから、12ユーザくらい収容すると考えると、12x300=3600人か。ほとんどの人が年間契約11,340円だとして、全員支払ったとするとこの4日間で売上が4億円くらい。SMB向けとは言っても、この価格設定で数日で完売というスピードであれば、たぶんほとんどが個人ユーザなんだろうと思う。

あと微妙なところは、契約の流れ。10日は無料で使えて請求書の支払期限は1ヶ月後。実際のところ10日でやめる人もいるだろうけど、支払期限は過ぎていない。とりあえず回収してその分の新規申し込みを受け付けたとして、そのあとで無料で去ったと思ったユーザに支払われてしまったら、その時点ではVMを切り出せないということになる? ストレージは支払期限まで保管しておけばいいだけなんだろうけど。

KDDIウェブコミュニケーションズのCloudCore VPSを使ってみた

http://cloudcore.jp/

1年契約のディスカウントで、945円/月で2GBのメモリと100GBのディスク、というのに惹かれて。KVMです。別に仮想化の方式はどうでもいいんです。

このWebサーバ(wtnb.mydns.jp。やっぱり月額1000円未満のVPSで、DTIのServersManです)との比較で言うと、

項目wtnb.mydns.jpCloudCore VPS
CPUIntel Xeon L5520 @2.27GHz (2core)AMD Phenom 9550 (1core)
メモリ512MB~2GB2GB
ディスク30GB100GB
OSCentOS 5(x86)CentOS 5(x86_64)
仮想化方式OpenVZKVM

CPUはwtnb.mydns.jpのほうが良いですね。メモリとディスクはCloudCoreの方が良い。ネットワークは測定していないけど、wtnb.mydns.jpも特に不満はないけど(sshでログインして操作しているとたまに引っかかることがあるが)、CloudCoreもKDDIだから問題はないんじゃないのかな。wtnb.mydns.jpはIPv6も使えるけどCloudCoreはv6のアドレスはくれない。ServersManも契約したときは32bitしか選べなかったけど、今は64bitのOSを使えたりする。

川崎4-0大分 (天皇杯3回戦)

久しぶりな感じがする等々力はのどかなものでした。いいですねこういうのも。

次は湘南が相手のようですね。

この試合は勝つのはもちろんですが、久々に戻ってきた横山やスタメンに入った小林悠の出来が気になりながら見ていました。

序盤は2人とも良かったですが、途中でバテましたね。特に横山は後半34分まで引っ張りましたが、そのずいぶん前からダメな感じになってたし、こういう時に便利な田坂もいたので、ずいぶん引っ張ったなぁという印象。まあでも久々の登場で今日のプレーは上出来だったと思います。

あと、出来が良かったのはボールボーイも。非常にスムーズなボール出しでした。スローインの位置にうるさい主審だったら逆に最悪だったかもしれませんが(笑)、そうではなかったので。リーグ戦でボールボーイやってくれてる市内の高校生も、いつもあんな感じで出してくれるといいんだけどな。