« 2007年8月 | トップページ | 2007年10月 »

2007/09/28

[自作] L2 キャッシュ 512MB ?

via AKIA PC Hotline

2007/9/29号のこのページ

ん?よくわからない?
じゃぁ画像直リン↓

L2 キャッシュ 512MB x 2 と書いてあります。
まぁ、店員さんのミスでしょうがもし本当ならすごく魅力的なスペックですね。

見た時は笑ってしまいました。
いま、結構きつい状況なので和ませてくれた記者さんに感謝です。

あ、修正しないでくださいね> Impress さん

| | コメント (0) | トラックバック (0)

2007/09/23

[ python ] Threading で作成されるスレッドはネイティブスレッド

とある人から「Python では Thread / threading モジュールをを使ったとしても、ネイティブマルチスレッドアプリは作れない」と聞いていたのですが、少なくとも、Win32 環境においてはネイティブスレッドになるようです。

havana の発言:
  あれ
havana の発言:
  Pythonはネイティブスレッド使ってるって
havana の発言:
  書いてあるけど。
havana の発言:
  おお?
fomalhaut の発言:
  いや
fomalhaut の発言:
  そんなことないはずだけど・・・
fomalhaut の発言:
  threading つかってみ?
havana の発言:
  http://0xcc.net/blog/archives/000099.html
havana の発言:
  なまずのひととか
havana の発言:
  んー。
havana の発言:
  どうなんでしょう
havana の発言:
  ソース読めば解るな
havana の発言:
  ごそごそ
fomalhaut の発言:
  (´・ω・`)
havana の発言:
  Pythonの実装見てきたー
havana の発言:
  やっぱりthreadingのなかでthreadってモジュールを使ってて
havana の発言:
  threadの実装がプラットホーム毎に
fomalhaut の発言:
  うん
havana の発言:
  ネイティブスレッドでスレッドを実現する仕組み。
fomalhaut の発言:
  thread が低レイヤーのスレッド実装
fomalhaut の発言:
  
fomalhaut の発言:
  
fomalhaut の発言:
  thread 使っても
fomalhaut の発言:
  ネイティブスレッドにはならんらしいぞ
havana の発言:

PyThread_start_new_thread(void (*func)(void *), void *arg)
{
	Py_uintptr_t rv;
	callobj obj;

	dprintf(("%ld: PyThread_start_new_thread called\n",
		 PyThread_get_thread_ident()));
	if (!initialized)
		PyThread_init_thread();

	obj.id = -1;	/* guilty until proved innocent */
	obj.func = func;
	obj.arg = arg;
	obj.done = CreateSemaphore(NULL, 0, 1, NULL);
	if (obj.done == NULL)
		return -1;


havana の発言:

	rv = _beginthread(bootstrap, _pythread_stacksize, &obj);

havana の発言:
  ってなってるけど。
havana の発言:
  pthread実装とかもあるし。
havana の発言:
  んー
havana の発言:
  _beginthreadはWin32のスレッド開始めいれいだぬ
havana の発言:
  http://msdn2.microsoft.com/ja-jp/library/kdzttdcb(VS.80).aspx
havana の発言:
  はて。
fomalhaut の発言:
  (´・ω・`)
havana の発言:
  あとはネイティブスレッドでない場合
havana の発言:
  インタプリタ側でスケジューリングしないと成らないけど
havana の発言:
  それぽいところがみあたらん。
fomalhaut の発言:
  なるほど
havana の発言:
  うむ
havana の発言:
  ためしにPythonでタイマ100個つくってみたが
havana の発言:
  ネイティブスレッドが101個できたよ
havana の発言:
  1個インタプリタのスレッドだぬ
havana の発言:
  Win32の話なので
havana の発言:
  他だとどうなるかは知らん。

CPython インタープリタのソースコードを見る限りでは Thread / threading モジュールを使ってスレッドオブジェクトを作成してそれを run() させた場合はネイティブスレッドになるようですね。

| | コメント (0) | トラックバック (1)

2007/09/20

[ニッキ] 無礼者

定時の 10 分前とか 5 分前に電話、メール投げてきて「今日中にやって」とほざく輩は何を考えているのだろうか?

こちらに非があるならばともかく、自分の都合で終業直前に電話かけてきて「今日中に」?
無礼にもほどがある

電話で開口一番に「今お時間大丈夫でしょうか」とか聞いてくるわけだが、そんな前口上を気にかける頭はあるのに時間というものを気にかける頭は存在しないのだろうか。

| | コメント (0) | トラックバック (0)

[ 備忘録 / RFC ] RFC 2795 MS-CHAP V2

MS-CHAP V2 の RFC とそのクライアントレスポンス部分の実装を見つけたのでメモ。

| | コメント (0) | トラックバック (0)

いつまで続くんだ?

最近は帰宅するのが 25 時とか 26 時くらい。帰宅したらご飯食べてシャワー浴びて寝るだけ。
で、朝起きたらすぐ出社って生活が続いてる。この生活いつまで続くんだろうか?

寝不足で疲れが残ったままで、電話がじゃかじゃか鳴っている環境で仕事。
とてもじゃないが集中なんてできません。

やっと集中できたと思ったら電話が鳴り響いたり、メールがどうこうとか騒がれたりして「さて、どこまで進んだっけな」って頭に入れなおすところからやり直さなきゃならない。1度2度ならまだしも、何度も何度も繰り返されるからやる気なんて出しようがない。

どうもスーツ族は電話とかメールしまくれば、モノが早く上がってきて、しかもその質も高いと信じているようだ。
率直に言って馬鹿としか思えないが。

集中できる環境がどれだけ大切かということは、簡単な思考実験ですぐにわかるだろう。
雑音が多い上に頻繁に割り込みが入る環境と、静かで集中し続けられる環境の2つを用意して、受験生に難関大の入試問題とか数学オリンピックのような頭をフル回転させることが必要な問題を解かせてみればいい。どちらのほうがいい成果を出せるかなんて考えるまでもないでしょ?この程度もわからないのか?

思考実験じゃなくて実際のデータが見たいというならば PeoplewareSlack を読んでみればいい。
参考文献まで示してくれる。

| | コメント (0) | トラックバック (0)

[ book ] Essential Silverlight でてた

Essential Silverlight

Essential Silverlight がリリースされていました。まだ PDF 版のみで紙の書籍は出ていないみたい。

Silverlight も SDK 入れただけで触ってないな。遊びたいんだけど。

Silverlight は C# とか IronPython とか、.NET Framework に対応した言語を既に知っているなら、そのまま使えるのがいいよね。Flash みたいに新しく言語を覚える必要がない。

| | コメント (0) | トラックバック (0)

2007/09/18

[ 備忘録 / solaris ] 見えてない NIC を有効化する

sun Fire V100 には NIC が 2 つありますが、セットアップの方法によっては NIC がひとつしか見えていないことがあります。 わたしが渡された V100 もその手のもので、ifconfig -a と打ってもひとつしか表示されなくて困りました。


bash-2.05# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
dmfe0: flags=1004843 mtu 1500 index 2
        inet 192.168.111.111 netmask ffffff00 broadcast 192.168.111.255
        ether xx:xx:xx:xx:xx:xx

さて、この状態で着いているはずのもうひとつの NIC を見えるようにするにはどうすればいいでしょう?

大昔のエントリで「plumb オプションは本来は物理インターフェイスを作成するもので・・・」と書きました。このオプションを使います。

Fire V100 の NIC 名はデフォルトでは dmfe0, dmfe1 となります。次のコマンドを実行します。

ifconfig dmfe1 plumb 192.168.222.1 netmask 255.255.255.0

実際に実行すると↓のようになるはず。
(MAC アドレスは伏字にしています。)


bash-2.05# ifconfig dmfe1 plumb 192.168.68.67 netmask 255.255.255.0
bash-2.05# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
dmfe0: flags=1004843 mtu 1500 index 2
        inet 192.168.111.111 netmask ffffff00 broadcast 192.168.111.255
        ether xx:xx:xx:xx:xx:xx 
dmfe1: flags=1000842 mtu 1500 index 3
        inet 192.168.222.1 netmask ffffff00 broadcast 192.168.222.255
        ether xx:xx:xx:xx:xx:xx 

見えていることが確認できたら ifconfig dmfe1 up で稼動させれば実際に利用できるようになります。


bash-2.05# ifconfig dmfe1 up
bash-2.05# 
bash-2.05# ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
dmfe0: flags=1004843 mtu 1500 index 2
        inet 192.168.111.111 netmask ffffff00 broadcast 192.168.111.255
        ether xx:xx:xx:xx:xx:xx 
dmfe1: flags=1000843 mtu 1500 index 3
        inet 192.168.222.1 netmask ffffff00 broadcast 192.168.222.255
        ether xx:xx:xx:xx:xx:xx

実際に運用してみて問題がなければ /etc/ にファイルを作成、または編集して再起動しても認識されるようにしましょう。

| | コメント (0) | トラックバック (0)

2007/09/16

[ 雑談 ] どこまでもポジティブな友

Thinkpad T61 が届いて、とりあえずは Vista のまま使ってみようかと格闘しています。

困ったことにわたしの環境では Windows9x 系もびっくりなほどフリーズしたりブルーバックしてくれるわけですが、そんなことを友人と話した時のこと

fomalhaut @ 消魂 の発言:
    Vista
fomalhaut @ 消魂 の発言:
    固まりまくりだぜ
fomalhaut @ 消魂 の発言:
    青くなったり
havana の発言:
    おお
fomalhaut @ 消魂 の発言:
    いそがしいOSだな
havana の発言:
    いsがしいな
havana の発言:
    たぶん最近のPCにイマイチたりなくなったプリミティヴな刺激を
havana の発言:
    取り戻そうという計らいだろう
havana の発言:
    @<Win9x時代の
havana の発言:
    その点OSXは刺激があって良いぞ
havana の発言:
    まあOSごと死ぬことはめったにないが
havana の発言:
    ハイバネーション復帰でもどってこないことが
havana の発言:
    結構ある
fomalhaut の発言:
    それもお約束だね

ブルーバックとかフリーズも刺激として楽しめということらしい。
どこまでもポジティブな友人です。

| | コメント (1) | トラックバック (0)

2007/09/14

[ 備忘録 / python ] socket が使うクライアント側の IP アドレスを指定する

マシンに複数の NIF がある場合は、通常なら通信に使うインターフェイスとかポート番号は OS が割り振ったりするわけですが、 たとえばスレッドごとに利用するインターフェイス ( IP アドレスでも ) を決めておきたんだとか。つまり、サーバ側の IP アドレスとポート番号だけでなく、クライアント側の IP アドレスとポートも指定して通信したい。そんなときにはどうすればいいのかという話。

クライアント側 IP アドレスとポート番号の指定は、実に単純で、socket オブジェクトの bind メソッドを使うだけ。
クライアントサイドのコードしか書いたことがなかったので、送信側の NIF, IP address, Port を指定する方法を今まで知りませんでした _| ̄|○il|!

some_socket.bind( (123.123.123.123, 12345) )
some_socket.connect( (server01_address, server01_port) )

other_socket.bind( (234.234.234.234, 23456) )
other_socket.connect( (server02_address, server02_port) )

とすると、以降 some_socket を使って server01 と通信するときは IP アドレス 123.123.123.123 ポート 12345 番を使って行われます。一方で other_socket を使って server02 と通信するときは別のインターフェイス、234.234.234.234 が使われます。

IP アドレスが NIC ごとに割り当てられている場合は NIC を使い分けることにも繋がります。また、ひとつの NIC に複数の IP アドレスを割り当てている場合は、それらのアドレスを明示的に使い分けることができます。

注意点としては、サーバ側の設定やサーバサイドアプリの仕様などでクライアントサイドのポートが限定されている場合もあるということ。また、トラブルを防ぐために well-known ポートは指定しないほうがいいでしょう。

| | コメント (0) | トラックバック (0)

« 2007年8月 | トップページ | 2007年10月 »