やっとAndroid版が出ましたね。いつまで待たせるんだと思ってましたが、早速入れてみて、悪くない出来だと思いました。PCではずいぶん前から使ってました。Linuxでもmozcでしたし。こういうところからGoogleに染まるのもどうかと思いますけどね。
メールに「あ、そう」「了解」くらいしか書かない私でも、入力方法は気になるもんです。
この文章も、AndroidからGoogle日本語入力で入れてます。
やっとAndroid版が出ましたね。いつまで待たせるんだと思ってましたが、早速入れてみて、悪くない出来だと思いました。PCではずいぶん前から使ってました。Linuxでもmozcでしたし。こういうところからGoogleに染まるのもどうかと思いますけどね。
メールに「あ、そう」「了解」くらいしか書かない私でも、入力方法は気になるもんです。
この文章も、AndroidからGoogle日本語入力で入れてます。
簡単な計算をするときに長らく重宝していたのがcalcというソフト。コマンドラインから十分な精度で計算してくれる。非常に便利で、私はここ数年というもの、毎日のように使っていた。
別にPython起動してもいいんですけどね。シェルの入力でそのまま計算できるというのは便利なもんです。
しかしFedoraならいいけど、EPELにパッケージがないのでCentOSでは使いにくいという問題があった。しょうがないので自分でrpm作って入れてたんです。
そこに登場したのがPythonのeval()をうまく使ったclacというソフト。似たような使い勝手で、Pythonなので無限桁の整数を苦もなく使える。拡張もやりやすい。ソースはPythonのスクリプト1本なので、Cygwinのような環境にも持ち歩ける(Cygwinのパッケージには入ってませんが)。
これは良い! 非常に!!
…のだけど、
うーむ。浮動小数点の演算で誤差が入るのはどうもアレですよねー。
しかし、拡張可能というのがこういう時に使えることを私は知っている。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
これによって、正確に計算することができるのだ。
先日、風邪にやられました。
ちょっと長めにセキが出ている人は要注意です。少しでも頭痛を感じたらすぐに頭痛の薬を飲んで寝ることですね。
私の場合は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は以下のような関係にあるらしい。
とても移植性があるとは思えないですね。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.
でも、移植性のある方法はないんでしょうかね?
前日に発表された衝撃的な契約満了のニュースを受けて、10番のユニを着て等々力へ。ホーム最終戦。天皇杯に出ずに帰国することがアナウンスされ、アウェイに行けない私には最後のジュニーニョとなる。どういう気持ちで見ればよいのか…
状況が消化試合ってところが悲しいですけど、ジュニーニョにゴールさせて勝つというタスクは完遂しました。しかしマリノスは最初から谷口FWってどうなってるの(笑)。前半はセカンドボールを拾われまくり押し込まれるものの大したチャンスは作らせず、しかし川崎もシュートは少なかった。ジュニーニョは1本ミドルを打って感覚を磨き、小林悠のヘッドはポストを叩き、後半へ。カウンターからのクロスをオウンゴールで先制1-0、ガチャガチャした展開を続け、カウンターで綺麗に崩してフリーのジュニーニョにボールをつなげ、連続得点3-0。1点取らせないとマクドナルドの賞(決勝点を取った選手に贈られる)がジュニに行かないんでは? と思って見ていたが、マリノスのシュートは枠外で守りきってしまった。賞はオウンゴールだとどうなるのかと思ったが、普通にジュニがもらっていた(別に点を取られなくても良かったのだ…)。
残り2試合になりました。今週末がホーム最終戦というクラブが半数。
川崎は広島でJ1残留を確定させましたが、今年もアウェイがラストゲームです。私は最終節はホームでやるほうが好きなので、残念ですね。
J1の優勝は柏・名古屋・ガンバの3クラブに絞られました。マリノスは早々と4強から脱落しまして、川崎は週末にそのマリノスとホーム最終戦を戦うことになります。どっちから見ても、言っちゃ悪いけど消化試合だよね。マリノスのほうは賞金額が変わるか。川崎は2連勝すれば賞金圏に届く可能性が数字上は残っていますが…まずないでしょうね。あんだけ負けてたら当然です。
えー、優勝争いの話でした。柏は2位の名古屋に3ポイント差をつけているので圧倒的有利か。ガンバは可能性は残っているけど、2勝しても勝ち点は70。柏が1勝でもすると追い付きません。残りの対戦は、以下のようにいずれのクラブも最終節がアウェイです。
対戦相手を見ると、ガンバが一番きついかな。名古屋は2勝しそうですね。でも柏が浦和を落として目の前で優勝を決めるかな? ちなみに浦和は昨年話題になったように、最終節は毎年負けてますからね。セレッソは難敵ですが、普通に行けば引き分けくらいは得られるんじゃないかな。
昨日動き始めたサーバにデータを送りながらぼんやりブラウザを眺めていたら…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を切り出せないということになる? ストレージは支払期限まで保管しておけばいいだけなんだろうけど。
1年契約のディスカウントで、945円/月で2GBのメモリと100GBのディスク、というのに惹かれて。KVMです。別に仮想化の方式はどうでもいいんです。
このWebサーバ(wtnb.mydns.jp。やっぱり月額1000円未満のVPSで、DTIのServersManです)との比較で言うと、
| 項目 | wtnb.mydns.jp | CloudCore VPS |
|---|---|---|
| CPU | Intel Xeon L5520 @2.27GHz (2core) | AMD Phenom 9550 (1core) |
| メモリ | 512MB~2GB | 2GB |
| ディスク | 30GB | 100GB |
| OS | CentOS 5(x86) | CentOS 5(x86_64) |
| 仮想化方式 | OpenVZ | KVM |
CPUはwtnb.mydns.jpのほうが良いですね。メモリとディスクはCloudCoreの方が良い。ネットワークは測定していないけど、wtnb.mydns.jpも特に不満はないけど(sshでログインして操作しているとたまに引っかかることがあるが)、CloudCoreもKDDIだから問題はないんじゃないのかな。wtnb.mydns.jpはIPv6も使えるけどCloudCoreはv6のアドレスはくれない。ServersManも契約したときは32bitしか選べなかったけど、今は64bitのOSを使えたりする。
久しぶりな感じがする等々力はのどかなものでした。いいですねこういうのも。
次は湘南が相手のようですね。
この試合は勝つのはもちろんですが、久々に戻ってきた横山やスタメンに入った小林悠の出来が気になりながら見ていました。
序盤は2人とも良かったですが、途中でバテましたね。特に横山は後半34分まで引っ張りましたが、そのずいぶん前からダメな感じになってたし、こういう時に便利な田坂もいたので、ずいぶん引っ張ったなぁという印象。まあでも久々の登場で今日のプレーは上出来だったと思います。
あと、出来が良かったのはボールボーイも。非常にスムーズなボール出しでした。スローインの位置にうるさい主審だったら逆に最悪だったかもしれませんが(笑)、そうではなかったので。リーグ戦でボールボーイやってくれてる市内の高校生も、いつもあんな感じで出してくれるといいんだけどな。