2009年7月28日火曜日

ソロスは警告する2009 感想

 ソロスは警告する2009

 前作以上に面白かった。ソロス氏は、本来あるべき投資家の姿で尊敬できる人ではないか?と感じました。本書も旬を逃せば面白みも半減する内容ではあると思うが、そこを差し引いても面白い内容ではと思う。
 ロシア・中東・中国・インド・ブラジルなどの状況と分析、投資家ならではの視点で勉強になります。フラット化する世界にも書かれていたが、政治的要因は投資においても重要な要素なのだろう。住宅ローン方式はデンマークのものが良いなど、知見にも富んでいる。
 今回も、再帰性理論が強調されていた。前回の感想では「要領を得ない」と書いたが、プログラマであれば、それがどのようなものか、大体は想像がつくものなのだ。ただ、実際のモデルを構築するのが難しいという意味で要領を得ないと書いたのである。今回の内容でも再帰性理論については、おぼろげながら雰囲気ぐらいしか感じ取れなかった。
 今度は、金融界では常識の事でも、もっと一般的なレベルにまで落として本を書いて欲しいと感じました。ジョーカーを掴ませるような投資家でなく、本当の投資家とは、どのようなものか?信念と指針と基礎について書かれたものが読みたいです。

 こんなに面白いのに、なんで冊数無いの???

iGoogle の新デザインうぜー

 タブがサイドへ移動したのも使いにくいのだが、チャット機能が「おまえは、チャット機能を使いなさい」と強制的に追加され、これを押し売りする形でサイド型に変更されたのが、どうにもいただけない。
 再三に渡って書いているように、私は Twitter もやらないし、チャットもやりたくないのである。ちょこまかちょこまかチャットしてたら、ただでさえマルチタスクで仕事してるのに、仕事にならん。つまり、どこかでウザさを感じたら、iGoogle を捨てるつもりだ。

2009年7月23日木曜日

高木先生のWinny等規制法の案に対する雑感

 自分のブログで書いた流れで、自分の考えを書いてみます。アップロード・ダウンロードと人間の概念で捉えた所を実際の事象に照らし合わせて文章化するのは、なかなか困難な作業だと感じました。自動流通複製プログラムという定義は、よく書けていると思います。定められた期間に対する解釈ですが、どの程度の時間が良いのかは置いて、抜け道への対処に関しては、「悪意があるかないか?」を基準にするのが良いのではないかという所を押したいです。法を逃れるために絶えず移動し続ける場合には(極端に移動間隔が短いとP2Pのメリットが無くなる)、総合的にファイルが留まる時間を期間として認定する事で対処できそうです。開発者の努力義務もあるので、悪意は認定しやすいのではないかと思います。
 Winny の類は使った事が無く、ソースを探してみましたが、混沌としている(本物のソースは公開されていないらしい)ようで、実態がわかりませんでした。おぼろげな記憶を辿ると、ピラミッド構造のノード接続構成となっており、ピラミッドの上位階層が重要な役目をはたしているという感じだったでしょうか・・・。一旦、共有カタログに載ったファイルは、あちこちのノードに広く分散しなければ消滅してしまうので、適度にファイルを分散させてコピーする戦略を採っていると推察されます。そのためには、ファイルの人気度に応じて、ファイルの分散濃度を決定し、ピラミッドの部分三角形内でファイルを分散させるように、部分三角形内の頂点ノードが重要な役割をしている…と、こんなところでしょうか?P2P全体としてのファイル削除は証明書のCRLのようで、どこかに主体が無いと厳しいと感じます。そうすると、P2Pという集合知上でファイルが流通する期限を誰かがアップロードすると宣言してから一ヶ月以内としなければならないという制約を設けるのも手なのかもしれません。
 P2P内でのファイルの流通には、直近の受信元・送信先を記録するようにすれば、全体としてのグラフを構成していけば、嘘つきが誰か(悪意のある偽装アップロード者)推定できそうに思います。ただし、組織的な偽装はゼロとは言えないので、怖さは残ります。

2009年7月21日火曜日

網走監獄博物館

 網走監獄博物館に行ってきました。でも、俺の趣味ではなく、嫁さんの趣味です。中は広く、1時間ぐらいは楽しめます。


 PRISON ブックカバーをゲットしました。文庫本サイズです。なかなか、いい感じです。

2009年7月17日金曜日

Popfly が終了するみたいだ

 スパム判定されなかったメールを問題メールのフォルダに移動して、分析を加えていたら、そのうちの1通は、Microsoft Popfly team からのお知らせメールだった。

 お知らせによると、Popfly はサービスを終了するらしい。UI がMicrosoft らしくて面白いと思っていたが、あまり発展せず、ちょっと残念だ。まぁ、意図したのかどうかわからないけど、Google のサービスとの繋ぎがいまいちだった辺りも盛り上がらなかった要因なのかもしれない・・・と、勝手に想像してます。

お知らせの中に
http://research.microsoft.com/en-us/projects/kodu/
も紹介されていて、こいつは、初めて知った。

2009年7月16日木曜日

C++ const が骨抜きになるシチュエーション

 const が骨抜きになるシチュエーションを考えてみました。
  1. 利用するライブラリが const を使っていない。(引数ぐらい const 修飾子を付けてくれよ・・・と、泣く泣く const_cast と reinterpret_cast を駆使する羽目になるが、一筋縄ではいかず、Cスタイルキャストでお茶を濁すとか、もう const を諦めます・・・と自暴自棄になる)
  2. 利用するクラスが const を使っていない。(今時、const 修飾子ぐらい付けてくれよ・・・と、泣く泣く、そのクラスに引きずられる)
  3. マルチ・スレッドによる同期保護オブジェクトや状態変数があり、mutable するのが面倒になった
  4. あるメンバ・オブジェクトは静的で変更されない事が保障されているから const で十分なのだけども、動的にロード・アンロードを繰り返すので、mutable するしかない。でも、これって const じゃないから、const 修飾子を付けても意味が無いか?と妥協してしまう
  5. 勉強不足で const をよく知らない時のソースを拡張するときに、const を付けると影響範囲が多すぎて愕然とし、自己嫌悪に陥ってしばらく立ち直れない
 実際のところ、const は鬼門のうちのひとつではないかと思います。 const char* const なのか、const char* なのか、よく迷います。あんましconst 修飾子が多いと発狂するかも…(私は const char* const を使う事は、まず無いかも?)。

追記: const なメンバ関数でも、結構付け忘れてる場合ってありますね・・・。ここは、ちょっと反省せねば・・・。

2009年7月13日月曜日

P2Pを取り締まるには(児童ポルノ法つづき)

 高木さんのエントリを詳しく読んで考察してみるに、結局のところ、匿名配信の禁止を法律でうたう以外に道は無さそうに思えてきた。ここで言う匿名配信の禁止とは、必ずしも実名を公表せよという意味ではない。データの出所がわかるように(家宅捜査ができるように)必ず何らかの記録を取るようにしなければならないという意味である。ダウンロードしただけで処罰というのは、実情に合っていない。ならば、アップロードの禁止をする。これは自然な流れだ。違反者の検挙が匿名によって阻害されているならば、匿名によるアップロードを禁止するのが流れだろう。
 ただ匿名配信を禁止した場合、ウィルスに感染して匿名配信状態になってしまった場合の考慮が必要になってきそうである(意図せず匿名配信してしまった場合の考慮)。ウィルスを製作して、ばらまく行為も匿名配信に相当する行為である。今のところ匿名配信でないとまずい例というのは思いつかない。そもそも匿名配信というものには、責任というものが感じられない。私の頭の中で、民主党の鳩山代表の無名献金と匿名配信が、何故か連結してしまった。

 こういった法律が施工されると、今度こそ本当にWinnyのようなものを作ったら(匿名性を高める配信)、法律違反になってしまう。こういう問題もあるが、P2Pのような技術で、発信元が身元を詐称しても、それを看破する技術が実装可能なのかどうか、そこも凄く気になる。SMTPのように自己申告で差出人を名乗っているようでは、いくらでも詐称が可能であるし、途中経路での改竄という巧妙な撹乱が出来るようでは、せっかくの法律も無意味である。発信側には正確な記録は期待できないから、受信側の記録が重要になってくる。しかし、ノードが動的に移動しまくると、発信元からの経路情報が長大になってくるので、それはそれで辛い。まさか、データのダウンロードには、中継ノード数の制限を加えるようなマニアックな法律を作るわけにもいかんだろうし、適切なノード数すらわからない。

 なかなか難しい問題である。

追記;何も中継ノード数に制限など加えなくても、長くなりすぎればファイルを消滅させればよいだけのような気がしてきた。その方が発信元を正確に捉える事ができる。

追記:無防備な無線LANのAPからのゲリラ配信、ネット・カフェを利用した時限爆弾配信、こういうのもあるかも…(書き忘れてた)

2009年7月11日土曜日

児童ポルノ法のダウンロードしたものを処罰も微妙

 ダウンロードしただけで処罰しようという動きもあるようだが、これも、微妙なのでエントリとしてあげる事にした。
もう一般に浸透してしまっているブラウジング、つまり、インターネットをサーフィンするという事は、コンテンツを探して、コンテンツを見るという行為である。
 そして、このコンテンツを見るという行為は、一時的ではあれ、コンテンツを手元にダウンロードして、ブラウザがそのコンテンツを解釈して、視覚的に整形したりして、表示するという行為でもある。エスパーでなければ、リンク先のサイトがどんなサイトなのかは、ブラウジングしなければ、わからない。
 ダウンロードしたものを処罰するというのは、過去の人類における、見た(目にしただけ)ものを処罰するという意味になるのである。

 ネットサーフィンしてたら、メデューサの蛇の髪があちこちにあって、見るたびに石化しているようでは、問題ではなかろうか?
 

2009年7月10日金曜日

児童ポルノ法のリンクは的外れなのでは?

 ここは書いておかねばならない事だと思うので、エントリとしてあげます。
何故?リンクを貼っただけで罰せられてしまうのか?頭おかしいんじゃねーの???
このサイトは、面白い。
このサイトは、ひどい。
このサイトは、犯罪じゃないの?
このサイトは、ためになる。
このサイトは・・・
リンクを貼らなければ、何も言えないじゃないですか???

 で、更に突っ込むと、リンク先のサイトのサムネイル画像を表示してくれるサービス等があって、それを自分のページに javascript として埋め込む。その時にサービスが勝手に href の内容を書き換える。これは物理的に書き換えるわけじゃないから、罰せられないとしよう。じゃ、そのサービスをしていたサイトが罰せられるわけ???そうやって、法の及ばない海外に、リンク書き換えサービスを設置して難を逃れる。そういった芸当は可能だ。
 英国だったと記憶してるけど、過去にリンクしていたページのドメインの所有者が変わった事に気がつかず、よろしくないリンクに変貌していてニュースになった件。リンクは、切れる可能性もあるし、内容が変化する可能性も大いにありうる。これも処罰の対象なのか?法廷で争われるのは、故意があったか無かったか?「記憶にございません」こと、「故意ではありません」と禅問答を繰り広げることになるのか?

 リンクを罰するという発言をしているやつは、頭がどうかしているんじゃありませんか?

2009年7月9日木曜日

技術者は40代になったらマネジメント職になるべきか?

 スラドで質問が出ていたので、思うところをポストしてみます。なんか、スラドからもお題が出るようになった気がするのは気のせいなのか…?

 王道は無いと思います。プログラマという職業を長年やっている方なら、今自分が持っている技術や知識が3年後にも通用するかどうかなんて当てにならないという事は、身に染みてわかっている事だと思います。新しいトレンドが出ては、それについての知識を得ないと、若い技術者からあっという間においてけぼりを食らってしまう。ま、そういう意味では厳しい世界なのかもしれません。マネジメントの部分は、全工程を経験した上でキャンバスに描ける絵のようなものであり、リスク管理などの嗅覚が必要な独特の世界が広がっている気がします。更にその上の経営という事になると、もうプログラミングの世界とは異質な感じがしてます。

 人の事をあれこれ書いても憶測にしかならないので、自分の本音を書きますと、上を見ても下を見てもキリが無いですが、プログラミングの世界において、社内では他の人の追随を許さないほど差があると思ってます。つまり、最も優秀なプログラマが、その能力をマネジメントという仕事に多大な時間を割くという事態は、才能の無駄使いではないかと感じてしまうのです。何が言いたいかというと、自分がどう感じるか?が重要な事なのではないかという事です。マネジメントに面白みを感じるのであれば、大いにやれば良いと思います。

 どのみち経験を積まなければ描きにくいキャンバスなので、中小企業で働いていて、他に人材がいなければ、お前マネジメントやれって話になるのでしょうけど…。

Chrome OS ってどうなのよ

 まだ、どんなものなのか、よくわからないけど、仮にブラウザ機能だけしかないのであれば、そんなOSは、まっぴら御免被りたい。私は、いらない。ブラウザ機能で、何でもできるから大丈夫だよというのは、論外である。
 クラウドの定義次第だが、ローカルのハードディスク上には、ウェブ上のミラー・コピーしか無いという状態は危うすぎて、ついていけない。自分の使い方としては、ウェブの世界と、ウェブでない世界との切り分けがあるので、それを否定されたら使うわけにはいかないのである。2台ハードウェアを持っていて、使い分けるという事でなければ使わないであろうと思う。
 理由は、100%他人を信用していないというのもあるが、それ以上に、セキュリィティ上の観点から、ウェブの世界に命を預けるわけにはいかないからである。
 ウェブ・サンドボックスの他に、ローカル・サンドボックスが別途あるなら、まだ考えてもいいが、ローカル・サンドボックスからウェブ・サンドボックスへのXSSとか、こんな事を想像すると危なくていけねぇ。

2009年7月8日水曜日

vb の thread_pool で pszqoadhx1u5zahbhohghldgiy4qixhx

何気にへんてこりんな文字列のタイトルですが、キーワード pszqoadhx1u5zahbhohghldgiy4qixhx で検索していただけると、まさか!なのです。
私じゃないですが、VB で thread_pool を使って、SoapHttpClientProtocol 継承 のオブジェクトを New しようとすると、例外もハンドリングできずに、いきなりアボーンする問題に出くわしました。で、VB.Net を使っている場合、COM オブジェクトは STA ? MTA どうなの?って部分が非常に気になってきました。いや、そもそもオブジェクトが COM なのかどうなのかさえわからないブラックボックスで、嫌な感じです。もし STA であれば、GIT(Global Interface Table)を使わないと解決しないはずだし、thread_pool での CoInitializeEx 関係の初期化はどうなってるのかも皆目、見当もつかない状態。いやー、しんどいですな…。

openssl の multithread 絡みではまっていたっぽい

ここんところ、仕事のコーディングで、問題箇所は、おおまかに特定できるけど、原因不明な問題ではまっていた。ヒステリックな挙動を示したのは、OpenSSL の d2i_RSAPublicKey をコールした戻り値。全く同じデータを渡しており、その渡したデータはログに記録していて正しく表示されている状態であっても(72バイト長のバイト列)、RSA 構造体のポインタに null がセットされる。あーん???
もしかして・・・と調べてみると、こんな情報を見つけた。他にも検索していて、libpq が openssl の初期化を考慮していない等、いろいろ情報が交錯している模様だ。OpenSSL の情報自体も少ない。C/C++セキュア・プログラミング・クックブックに、いろいろと載っているが、マルチスレッドに関するコーディングの記載は見当たらない。だいたい、今の時代において、マルチスレッドはデフォルトで考えておいてほしい所だ。これらの初期化を行うのは誰の責任か?例えば、A.DLL と B.DLL が気を利かせて OpenSSL マルチスレッド対応のコードを実装していたらバッティングしてしまう。そうするとアプリケーションの仕事って事になるのだろうが、どのタイミングで処理を行えばOKなのか不安だ。
ちなみに、OpenSSL のマルチスレッド対応のコードをインプリメントしてみたが、状況は変わらなかった。こうなると、opensslを利用するライブラリが競合して、何かが起こっているのではないか?と勘ぐりたくなってくる。

結論

OpenSSL は標準でマルチスレッドに対応すべきである。

 余計なファクターを取り除くために今回決断した事は、openssl を捨てて、windows の cryptograph api を利用するか、マルチスレッドを考慮した車輪の開発を行うかの2択で、とりあえず windows api を使う方向で考える事にした。疲れた・・・

2009年7月2日木曜日

sqlite3 トランザクション 備忘録

この記事を書いた時点では、sqlite は version 3.6.16 です。

トランザクション周りがどうなっているのか、細かい部分が気になる。

マルチプル・アクセスについてを見ると、Read Commited とか、Read Uncommited という問題ではなくて、単純に Reader Writer Lock パターンを利用しているみたい。ソース・コードを見ていないので、可能性を推測してみると(挙動のヒントページ

複数のトランザクションが同時に並行して実行され、ページ単位、または、レコード単位に書き込みオーナー(スレッド|プロセス)が記録されていて、同じ箇所を書き込みしようとした場合には、後だしジャンケンの方が CONFLICT を受け取り、ロールバックするのがデフォルトの動作。 ただし、データベース自体を書き込み中に排他ロックするパターンもあるようだ。

という線が濃厚。もし前者の場合、トランザクション中に書き込みされているレコードの読取が、どのような位置づけなのか非常に気になる。整合性の無いダーティ・リードのような気がしてしょうがない。この動作が嫌なら排他ロックせよって事なのだろうか・・・。

絶えず Read があり、頻繁に Write が発生する場合には、テーブルを別DBに分けてしまう方が、レスポンスは高くなりそうである。

うーん・・・使いどころが微妙な感じだ・・・。

2009年7月1日水曜日

関数型プログラミングって

 結局のところ、変数というものが無くて、集合に対してオペレーションを繰り返すって感じでいいのかな?考えてみたら、LISPでプログラムを書こうと思った事は無いし、書いた事もないけど、そこそこいじくった経験はあるんで、今のところ、そんなに感動するといった事がないです…。で、悪いことに、真新しさというのも感じないです…。
 うーん、時間とって Haskel やらないとダメって事か…

資本主義の次

 ふと、資本主義の次は、オープン共産主義かな?と、閃きました。

 どういうものか?というと、第1次世界大戦以前は、超金持ちと一般人の差がものすごくありましたが、第2次世界大戦後は、その格差も縮まっていたのに、ここへきて、また第1次世界大戦以前のように格差が開いているようです。

 他には、これだけ不況になっているにも関わらず、余ったお金(金持ちのお金)が利益を求めてプチバブルを形成しつつあるなんて話も聞きます。

 この際、もうお金に執着しなくてもいいじゃないですか?共産主義が失敗したのは、支配階級が搾取して腐敗してしまったからではないかと思うのです。そこで、お金の流れや分配を完全に情報公開してしまって、仕事もお金も分配するような仕組みをオープン共産主義としてみました。

 絵空事かな・・・。書いてる自分も、どんな世界なのか、わかんねぇーす。

サイバーフィールド研究会

 金曜日は、サイバーフィールド研究会でした。レーザー・音波等による3次元計測の研究会です。SPARJの河村様から米国での状況について講義を受けました。
GoogleEarthの登場により、3次元というものが身近になった事と思います。3次元計測では、GoogleEarthで扱えないぐらい大量の計測データを扱います。テネシー州では2008年から州全体をDB化、道路をグーグルのストカーならぬレーザー計測カーで、2mm 間隔 5万kmを2年ごとに更新し、経年変化を記録しているそうです。大量データ処理、ストレージ容量が増えても底は見えないようです。
 河村さん曰く60歳から75歳までは、ヤングなシニアなんだそうです。この話を聞いて元気が出てきました…。

 あと、他の講義を聞いてみて、輪郭抽出やエッジ抽出(例えばOCR)に巡回セールスマン問題を解くルーチンが使えるかも…と気が付きました。これの応用で、等高線を引くのにも使えるかも…。