C#のDelegateとは

先日の記事で C#のdelegateについてちらっと触れた。

C#のDelegateというのは、簡単に説明すると、C/C++での関数ポインタで、
イベントハンドラなどに利用される。

ただ、C/C++の関数ポインターとは大きく異なる点(拡張された点)が少なくとも2つあり、
まともに使いこなすならこの2点を抑えないといけない。

1つめは、インスタンスメソッドを参照できる点。
C++ではstaticなメソッドしか参照できなかったので、
第1引数にthisを渡すなどして回避していた物が割と柔軟に対応できます。

2つめは、複数のメソッドを割り当てることが出来る点。
C/C++はあくまでもプログラムの場所を指し示す物、
もっと低レベルで言うならば、指定された関数のメモリー上のアドレスを指定していたわけですが、
そのため、複数の関数を関数ポインターに渡すことは出来ませんでした。
Delegateは、複数のメソッドを指定できる画期的な機能があります。

この2点が、関数ポインターとの大きな違い。

慣れてくるとかなり便利。

ロシアに隕石落下

おそロシア(マテ

というわけで、ロシアに隕石が落下して大騒ぎになっていましたね。
最初、ニュースを聞いたときに、小惑星の欠片か何かか?

と思ったけど、そうでは無く、単に観測不能な方向からやってきた隕石だったそうで。

興味深いのが、落下の様子が結構車載カメラで残っていると言うこと。
そう思っていたら、こんなニュースが:
TechChurchの記事より:
隕石落下のビデオがYouTubeにあふれた理由はロシアの独特の“車事情”から

なるほど、ロシアはドライブレコーダーが発達しているのか。
納得。

というのも、ネット上の事故動画はロシアの物がおおく、
ロシアは事故が多い国なのかな?と思っていたら、
どうやら、ドライブレコーダーの搭載率そのものが多いみたい。

へぇ~一つ勉強になった。

遠隔操作の容疑者曰く「C#は使えない」

また、遠隔操作事件ネタ。

高木ひろみちゅ先生によれば、容疑者は

②「自分はウイルス作成に使われた言語を使うことができない」

http://togetter.com/li/456852
と主張しているそうな。

Ω ΩΩΩ<ナ・ナンダッテー 確か、件の事件はC#で書かれていたワケだけど、 C#を容疑者が使えるという事の立証責任が警察に生じたわけだ。 なかなか面白い展開になってきた。 もっとも、C#を使えないことを証明するのは難しい(悪魔の証明)けど、 C#を使える証明は意外と簡単。 C/C++/Javaなど、C言語の流れを持った言語を知っていればC#は使える。 ただ、今回の騒動のプログラムがC#のDelegate機能とかを使っていたりすると、 CやC++の関数ポインター的な知識が必要で、 C#を専門に学習したり、CやC++をかなり熟知した人間じゃないといけないなど、 問題のプログラムの内容に応じて、合理的疑いを越えるための、証明をするハードルが変わる。 なんにせよ、どんどん面白くなってきた。 ここで、真犯人を名乗る人間が、 「マテ、それは誤認逮捕だ」 と、メールでも送ってきたらさらに面白いことになるけど、 さすがにそれは無いかなぁ・・・

32768両編成

先日京王線で
「32768両編成」
と電光掲示板に掲載されるトラブルがあったそうな:

http://matome.naver.jp/odai/2136074097394394601

まぁ、32768を16進数表記にすると0x8000なので、なんてことはない。
short型の負の最大桁数が符号無し変換されて表示されたってだけのようです。
#いや、それはそれで異常な事態なので問題ではあるのですが

それはそうと、ネットでは
「なんで、車両の編成数にshort型(-32768~32767)を使うんだよ!char型(-128~127)でいいんじゃね?」
「むしろ、BYTE型(0~255)だろ。」
とか色々論じられていますがナンセンスです。

世界最大長の編成は、ギネスブックに載っているだけで700両超だそうで、
いっそ、2バイトで管理しておけば十分じゃね?と判断するのは有りだと思います。

また、数値が0x8000だとしても、unsignedで表示されているわけで、
short型と言うよりも、WORD型です。
仮にsignedでマイナス記号が表示されていないだけなのだとしても、
ここまで長大ならば、1ビット付いていようが付いていまいがあまり関係ないです。

等と、論じられていますが、
ぶっちゃけ、データ量をシビアに切り詰める必要があるとかでなければ、
使っているプロセッサのレジスタサイズに合わせた方が、
プロセッサの仕様効率が上がるので、そっちを優先します。

たとえば、32bitのintel系のCPUで、
16bitのデータをメモリーから取り出すのと、
32bitのデータを取り出すのでは、後者の方が圧倒的に早いです。
さらに、16bitだとアライメントにあっているか否かでさらに動作にペナルティーが生じます。

理由はintel系のCPUは16bitのデータを取得するときには、
まず32bitでデータを取得して、ビットマスクやシフト演算で目的の16bitデータを取り出すという、
内部動作をしているから・・・とintel CPUの最適化マニュアルに書いてありました。

そういうわけで、特にデータ量に問題が無ければ、
CPUのレジスタサイズに合わせるのが吉です。

プログラマーにぴったりな稼げる副業は?

表題の記事が/.Jに載ってた
http://developers.slashdot.jp/story/13/02/13/0848210/

なんだろうね?

そういえば、先日は、自社の仕事を外部に(自分が個人事業主として)勝手に委託して、
自分はその管理業務をしていただけという人が居たっけ。
しかも成果物はすこぶる良かったとか。

もう、上級のプロマネになれよと言う感じがする。

それはさておき、Blogのアフィリエイトも、
よほどのアクセス数を望まないと、雀の涙だし。
※当Blogのアフィリエイト代は、ドメイン代とサーバー代の合計よりは少ないですorz

たまにプログラム作っても、美味しい社会貢献ライセンスとか、
MITライセンスで公開しているから、お金にならないし。

そういえば、仕事で本を2冊ぐらい書いたな(改訂版を入れると3冊)。
それをプライベートでやれば儲かるかも知れないけど、
逆に大きな赤字になるリスクもあるので、
給与が保証されている中でやった方が楽だよなー

過去には、土日限定で、
近所のパソコンサポートをお小遣い貰いながらやったり、
書類の代打ちをやったりしていたけど、
この年だと、ご近所さんから小遣い貰うのも変だし。

なんだろうね?
プログラマーにぴったりな稼げる副業って。

自作PC保有者はITに精通しているらしい

遠隔操作事件の件で面白いニュースが:
http://www.fnn-news.com/news/headlines/articles/CONN00240346.html

以下、本記事の作成に当たっての引用:

パソコンの遠隔操作事件で、逮捕された男の自宅から押収されたパソコンに自作のものが含まれていたことがわかり、
警視庁などは、IT技術に精通した男が、遠隔操作ウイルスも作成したとみて調べている。
<略>4台のパソコンを押収したが、このうちの2台は、自分で作ったものだったという。

引用終わり。

自作パソコンを使っている人は、IT技術に精通して、ウイルス作成とか出来るらしい。

じゃあ何か?自作PCを5台保有していて、
しかも、4台が現役稼働中の自分はスーパーハッカーなのだろうか?
そんなことは無いよね?

ぶっちゃけ、自作パソコンなんて、店の人に任せて部品を買えば、
プラモデルよりもずっと簡単だし。

基本的には
・電源(ギークじゃなければ普通は筐体とセットで買う)
・マザーボード
・CPU
・メモリー
・キーボード
・マウス
・HDD
・光学ドライブ
を繋がる端子に繋がるケーブルをホイホイ指していけば組み立ては終わる。
OSのインストールなんて、DISCを光学ドライブに入れて、シリアルキーを入れる部分以外は、
次へと進んでいくだけで終わる。

むしろ、真のギークは、自作パソコンなんかに時間をかけるぐらいならば、
DELLとかあたりのBTOで注文して、ソフトと戯れることに注力するはずだ。

これが、オライリーの本をほとんど揃えていて
読み終わった木琴代わりにしてPCから制御して遊んでいた(↓)とか言われれば、
ITに精通していると言われても納得するけど、
自作PCがあるだけでITに精通していると言われても・・・ねぇ。


※お台場の日本科学未来館で一時期展示されていたオライリー木琴

冤罪事件の教訓はどこ?

時間が無いなぁ・・・
でも、日記と化しているBlogは更新。

ここまで続けて、突然止めたりしたら、
生死を疑ってくれる友人は1人ぐらいは居るだろうし。

閑話休題で、昨今の遠隔操作ウイルス事件。
というか、遠隔操作というか、CSRFなわけだから、遠隔操作って言うのも違うな・・・
まぁ、冤罪誤認逮捕事件とでもいいますか。

で、前回、散々、誤認逮捕を実名報道していたマスコミは、
今回も盗撮をしたり、実名報道をしたりの、やりたい放題。

怖い世の中です・・・

旅行記を微妙に更新(連載スタート?)

2010年の九州旅行とか、
2011年だか2012年の、かみちゅ!旅行のリベンジとか、
いろいろ、旅行に行っているけれど、
全くもって掲載してないので、
2010年の九州旅行記を更新し初めてみた。

書き出しだけでこの量だとどれぐらいかかるのだろう・・・

記事はこちら:https://kerokero.org/travel2010/

遠隔操作ウイルスの容疑者逮捕らしい。

遠隔操作ウイルスの容疑者が捕まったらしい。
http://sankei.jp.msn.com/affairs/news/130210/crm13021010370007-n1.htm

これから犯人となるかどうかは裁判の行方次第ですが、

犯人「山頂に埋めた」

警察発表「見つからなかった。嘘に違いない」

犯人「そんなわけは無い、嘘つき呼ばわり良くない!もう一度今度は手近なところに置いた」

逮捕

この流れは、どう見ても、深追いのしすぎです。

CQCQCQ

どうでも良い、アンプの話。

A級:
トランジスタの特性の良い部分だけを使った、波形に歪みが少ないアンプ。
でも、いいとこ取りをするために、常に電気を消費するちょっと困ったちゃん。

B級:
波形の下半分を切り捨てて、上半分だけを出力するアンプ。
入力が0だと出力も0なので、おサイフにも優しいけど半端もの。

B級P-P(Push-Pull):
B級アンプを上下につなげて、波の上半分、下半分と役割分担させることで、
半端物だったB級アンプでもちゃんと波が出るようにした物。
でも、0~0.xV付近の出力が安定しない部分を使っているので、
波形がちょっと良くないのが玉に瑕。

AB級:
Vsatがあるならばそこを使わなければ良いじゃ無い。
というわけで、0V付近の出力が安定しない部分を使わないように、
上半分と、下半分のB級アンプの出力を上手く組み合わせたアンプ。
電力消費量も少なく、安定した波形に。

C級:
波形なんて細かいことはどうでも良い。とにかくめちゃくちゃ増幅したいときにはこれ。
音楽で言うとディストーション。
FMやらAMで変調されていて波形そのものに意味があまり無いときに使う。

ちなみに、アマチュア無線の試験勉強で、
「A級、B級、C級、D級のどれか?」
みたいな問題が出たら、問題文の前段は無視して、
とりあえずC級と答えておけば、ほぼ間違いなく正解。

すがやみつる先生曰く、
「無線は「各局」を「CQ」って符丁で呼ぶから、問題の答えはC級でok」
だそうな。