路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

Pythonにgenericsって何故

2007-09-30 11:41:19 | プログラミング
IronPythonについて調べていうるうちに、IronPythonが汎用型(genrics)をサポートしていることが分かりました。

いや、分かったとたん、目の前に「?」マークがざーっと並びましたとも。

CPythonにはなかったはず。
型チェックに無頓着なPythonになぜgenericsが?
Genericsを使うとパフォーマンスでも上がるのか?
デコレータ「@」との関係は?

いろいろサンプルを見るうちに、.NETのCLRのサポートのために必要らしい(つまり、ArrayList<String>を期待してるメソッドを呼び出すときに、それを作れるようにする)、というところまでは想像ついたのですが・・・

結局のところ、「?」たちには答えが出ず。

メーリングリストで中の人が書いた「[IronPython] Generics support in IronPython」
http://lists.ironpython.com/pipermail/users-ironpython.com/2005-April/000400.html
より。

「There are still many open design questions about how generics and a
dynamic language can best work together, but most of the obvious things
just work in IronPython today.」

というのが答えといえば答えらしい。

要は、「言語デザインとしては疑問もあるけど、とにかく動く」ということで、まあ正直、そんなところなのかも。

C/C++系でスレッドを明示的に書かずに並列化してくれる言語(処理系?)

2007-09-25 11:35:47 | Birds-Of-Feather
記事「テラスケールコンピューティングのための言語「Ct」」
http://pc.watch.impress.co.jp/docs/2007/0925/idf10.htm
より。

今までのIntelコンパイラ(OpenMP)では、明示的に#pragmaでループに対して明示的に並列化を指示するのに対して、

このCtというやつは、専用のデータ構造(疎行列とか)を用意して、その演算に対しては、自動的に並列が実行できるようにしてくれるらしい。

実装はというと、専用のデータ構造を使ったC++のソースコードから、Intelコンパイラ(OpenMP)の#pragmaが入ったC/C++のソースコードを生成してくれるトランスレータのようです。

仕組みとしては、なるほどね、とは思います。

(疎)行列を使うアプリケーションは書かないので、たぶん使いませんけども。

試聴がしぢょーに困難

2007-09-20 12:21:33 | その他
iTunesのラヂオでだらだら聴いていて、ときどき、「あ、これいい」と思って、

あわてて曲名をメモします。アップルのなんとかストアで圧縮された音楽を買う気はさらさらありませんので、CDを探しにかかります。

ググると、たいてい引っかかるのはamazonとHMV。あとはいくつかのmp3ダウンロード販売サイト。ひょっとするとアーティストのサイト。

mp3をダウンロードさせる(選択肢のある)サイトではたいてい試聴できるのですが、ビットレートが妙に低くて「なにこのかんかん鳴ってるの?」って音になってたり。

試聴できる部分が決めうちでイントロ30秒だったりして「こんな曲だったっけ?」となったり。

次に、たとえばamazon.co.jpにいくと、なぜか試聴はreal audioのリンクのみ。Vista環境のせいか、これがうまく機能しない

amazon.comにいって検索し直すと、ちゃんとreal audioとwmvと両方あるし、アルバムの曲をまとめて試聴ができるMusic Samplerもあったり。(ついでにいえば、Music Samplarで試聴できる秒数は長くないけど、わりときちんと選んである感じです。)でもなぜか.co.jpにはない。

まあ.comで試聴して.co.jpで買っても、仁義には反しないんだろうけども、変な感じ。

国内版と輸入盤があるときは、たいてい輸入盤を買います。国内版は変な付加価値で高価だから。

輸入盤の場合も、ヨーロッパから輸入したやつの方が米からのよりも安かったり。なかなか気が抜けません。

だれかWeb 2.0とやらで、試聴からCD購入までを安心して任せられるような、決定版のサイトを作ってくれないかなあ。

(2007/09/26 追記)
記事「CD/DVDを複数のショップで一括検索して商品情報を一覧表で比較できるソフト」
http://www.forest.impress.co.jp/article/2007/09/25/jcddvdexplorer.html
より。

「J CD・DVD Explorer」というソフトが紹介されてました。対応する店舗が増えて、試聴もツールの中からできるようになれば良いかも。

Vistaには13年前のウィルスも感染するけど、OS X、Linux、Solarisよりセキュア

2007-09-18 11:35:48 | その他
2つのニュースをつなげて読むと面白かったので。

「Mac OS X, Linux and Sun Solaris Are All Out-Patching Windows」
http://news.softpedia.com/news/Mac-OS-X-Linux-and-Sun-Solaris-Are-All-Out-Patching-Windows-65889.shtml
より。

シマンテックの発表によると、Windowsはパッチを考慮に入れれば、OSXやLinuxやSolarisよりセキュアだそうです。

その一方で、

「13-Year-Old Virus Infects Windows Vista Machines」
http://news.softpedia.com/news/13-Year-Old-Virus-Infects-Windows-Vista-Machines-65886.shtml
より。

VistaとLive OneCare 1.6を組み合わせても、13年前のウィルスStoned.Angelinaの感染は止められず、検知すらできないそうです。

うーん。

ステルスアップデートし放題の会社もあるのになあ

2007-09-14 22:15:08 | その他
記事「Windows Updateが設定無視の「ステルス」アップデート、MSは釈明」
http://japanese.engadget.com/2007/09/13/windows-update-ms/
より。

「自動更新をOFFにしていても勝手にファイルを書き換えていたことが判明し問題になっています。」

アップデートされたファイルは「WindowsシステムのアップデートではなくWindows Updateそのものへのアップデート」だとのことで、海賊版対策か、変なセキュリティホールが見つかったのか、とにかく、すべてのWindowsを強制的にアップデートする必要に迫られたのでしょう。

まあ問題といえば問題かも知れませんけども。

Webアプリの企業なら、「ステルス」どころか、アップデートされたかどうかさえも検証不可能な方法でアップデートできるわけで。

こそっとルートキットを仕込むようなケースとは違うみたいだし。

あんまり責めるのもどうかなあと思いますけど。個人的には。

不覚、std::setでハマる

2007-09-10 22:19:59 | プログラミング
油断したというか。

std::setでコンパイルに通って実行時エラーで落ちるコードを作ってしまいました。

-----------------
std::set<int> a, b;

・・・検索して見つかった値をaに追加・・・

・・・そのうちで不要であるとわかった値をbに追加・・・

a.erase(b.begin(), b.end()); ← 不要な値を消す
-----------------

最後の行が間違い、勘違い。

すっかり
a.insert(b.begin(), b.end())
と反対のことを、
a.erase(b.begin(), b.end())
でできると思いこんでいたのでした。

甘かった。見かけは同じ2つのイテレータを取る関数でも、意味は全然違ってました。

実は(ともったいぶるほどでもないかもしれませんけれども)、最後の行で意図したことをやろうとするなら、

-----------------

std::set<int> r;
std::set_difference(a.begin(), a.end(), b.begin(), b.end(), std::inserter(r, r.end()));
a.swap(r);

-----------------

とすべきでした。

あ痛たたた。

早くも見限られつつある?情報大航海プロジェクト

2007-09-08 01:03:37 | Birds-Of-Feather
記事「日本が目指す「Google対抗エンジン」は成功するか?」
http://wiredvision.jp/news/200709/2007090719.html
より。

日本の技術者は待遇も悪く「独創的なイノベーションに対して手柄や所有権が与えられることはほとんどな」いため、「目新しさの乏しいような検索エンジン」しかできないだろう、とのこと。

個人的には、外れることを祈ってますけど・・・

(追記 2007/09/21)
経産省のページに、プロジェクトの概略というか、こんな体制でやります、という記事がありました。
http://www.meti.go.jp/press/20060616006/20060616006.html

ざっと読んでみると、どうやら、参加している企業が今までやってきたことを持ち寄った、っぽいですね。

鉄のニシキヘビ #3

2007-09-07 18:28:34 | プログラミング
さらにまた少しIronPythonを触ってみました。

・エラーメッセージが簡素、というか手かがりになる情報が少ない。出てくるのはせいぜい行番号くらい。

→ デバッグにはCPythonのほうが良さげ。

・バイナリライブラリ(.pyd)をimportできない。

→ わかってはいたけれど、実際に突き当たるとやっぱりショック。

次期IronPythonのα版(2.0A3)というのがリリースされていたのでチェックしてみましたが、上記の点については変化ないみたいです。

# それにしても、Guidoさん、これだけマルチコアがはやってるのに、GILに関しては心変わりしないのかなあ・・・

お知らせ: コメント/トラックバックを承認制に変更します

2007-09-04 23:51:51 | その他
お目汚し、どうもすいません。

とうとうというか、やっとというか、スパムがばんばん来るようになりました。

というわけで、

これまで、コメントやトラックバックはつけていただければ自動的に即公開、としていたのを改めて、

これからは手作業で一つづつ確認してから公開するようにいたします。つけていただいてから公開になるまで、少し時間がかかるようになりますが、ご容赦ください。

かしこ。