改め Objective Technician

はぐれ技術者のやりたい放題

驚くべき発見をしたが、それを述べるのに10分では短すぎる

2009-07-27 21:49:15 | 勉強
学会発表、ほぼ練習通りに出来て、質問もいっぱい来て、反応もまぁまぁ。


でも終わったら「なんかもういいや」って気分になってしまった。

なんだか研究に対するモチベーションの落差が激しい。



そんなことより、学会後に狂吐で見たエヴァ・破のインパクトが大きすぎてもう…


あの映画は事件だ。


震熟でまた観てしまった。

同じ映画をお金払って二回観たのは初めてだ。





狂吐の夜景













しかし…、カルシウム溶田があの場面でポテンシャル花井に対面するとは、あれは予想できなかったなぁ…


オブラート幸恵ならまだわかるが…







7大OPENは 12"6? (-3.?) 。

今の体の状態じゃぁこれぐらいか。

60m以降で体力がなくなった。

でも、ケガの再発なく完走できたからいい。


インターン中の一ヶ月間にいっぱい走って、秋シーズンにはしっかり競技ができる体に戻したい。













そういえば、国立競技場の周辺でビックリ仰天するような光景を見た。







Show Time

2009-07-22 21:02:53 | 勉強
学会2日目終了。

変態的な研究がたくさんあって非常に面白い。



自分の発表がいよいよ明日に迫ってきた。

学外で研究発表をするのはこれで3回目だけど、今回は全国規模の学会で初めてのオーラル発表。


もう30回ぐらい練習したので大丈夫だと思うが、やっぱり不安だ。




「天使のように大胆に、悪魔のように繊細に」という言葉があるが、というか、なぜに天使が大胆で悪魔が繊細なのかの理由が分からないが、まぁそういうことだ。


研究内容の変態度なら負けない自信がある。






今回宿泊してるホテルになんか見覚えあるなぁと思ってたら、中学のときに修学旅行で泊まったホテルであることを思い出した。


たしかあのときは修学旅行の日程がなんかの県大会の直前で、朝にホテル前の京都御所で調整してた。


今回は修学旅行ではなく学会、県大会ではなく七大オープン戦だけど、10年前と全く同じ状況。



今日も、広い京都御所で夜中にダバダバした。






学会が終わればお祭りが待っている!



いざ

2009-07-20 07:14:53 | 陸上競技
7月17日(金) 評定 夜 涼

ドリル
流し
スタブロ


7月19日(日) 評定 暑

ドリル
流し
スタブロ



なんとかスタートが切れるようになったが、一回ハムを攣りかけた。危なかった。


明日から狂吐で学会。

学会直前に肉離れとか意味わかんない。持ちこたえてくれ左足。




最近これのブログに書く記事が情報系のネタに偏っているので、自分はそっち方面の専門だと思われてるかもしれないが、プログラミングはあくまでも趣味・アルバイトであって、本業は視覚科学の研究である。


今回の学会発表は結構気合入れて準備してきた。





ただ移動手段が、震熟まで高速バスを使いさらにそこからバスを乗り継いで狂吐へ向かうというクレイジーなスケジュールであることに加えて、学会の終了直後にそのまま七大戦会場の凍狂に乗り込むので、荷物が意味不。


発表用のノートパソコン、スーツ、練習着、ユニフォーム、スパイクと、何装備だこれは。














しかし狂吐で練習できるだろうか。





モカと同じ組で走れることが大きなモチベーションですたい。

ノッホソーニョ・エル・プラシーヴォアラ

2009-07-17 00:19:02 | 陸上競技
7月15日(Wed) ずいほう 夜 暑

坂ダッシュ
80m×10


7月16日(Thu) 評定 夜 暑

ドリル
鉄棒
100mWS 3+3+2



ヒザに痛みが出ない疾走フォームを探し当てた。


関節を完全に伸展しない姿勢で走れば問題ない。

とりあえず七大オープンで走れる目処は立った。



その結果、足をあまり前へ振り出さず、後ろへも蹴らず、腰の真下だけで力を伝えるような感じで接地も短くなり、なんか前よりもフォームが改善されているような気がするが、













intデータの1のビット個数をカウント

2009-07-16 00:36:51 | プログラミング
さっき面白い話題を見つけたので、ここでも紹介。


Java の Integer クラスに、int bitCount(int) という、intデータのうちビットが1の個数を数えるメソッドがある。

例えば、10 は2進数表現で 00…001010 と、1が2つあるので bitCount(10) の値は 2 になる。


1の個数を数えるだけだから、まずはじめに思いつく方法は、ビットを全部スキャンして2進数表現で1になってるとこをチェックする愚直なやり方。

この素朴な方法の計算量は、ビット長 n に対して O(n) 。


しかし、Integer.bitCount() はそんなことを一切しないで、O(log n) で動く以下のロジックが実装されている。(ここで int 型は32ビット)

    public static int bitCount(int i) {
        i = i - ((i >>> 1) & 0x55555555);
        i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
        i = (i + (i >>> 4)) & 0x0f0f0f0f;
        i = i + (i >>> 8);
        i = i + (i >>> 16);
        return i & 0x3f;
    }




この処理はいったい何をしているのか?


はじめに見たときはこの6行の処理の意味が分からず、これがなんで1の個数を数えることになるのかと考え込んでしまった。

この黒魔術を相手に延々と悩んだ末、数10分もの時間をかけてようやくひらめいた。





以下、解答が書いてあるので、自分で考えたい人は読まないでください。












一度理解してしまえばなんのことはない。黒魔術と言うほどのものでもない。

さっきの6行の中に出てきた一見奇妙な16進数の定数は、2進数表現にすると以下のようになる。

0x55555555:01010101010101010101010101010101 
0x33333333:00110011001100110011001100110011 
0x0f0f0f0f:00001111000011110000111100001111 
0x3f   :00000000000000000000000000111111 

//int型は32ビット
    public static int bitCount(int i) {
        i = i - ((i >>> 1) & 0x55555555);
        i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
        i = (i + (i >>> 4)) & 0x0f0f0f0f;
        i = i + (i >>> 8);
        i = i + (i >>> 16);
        return i & 0x3f;
    }





1行目の処理は、

00 → 00 - 00 = 00
01 → 01 - 00 = 01
10 → 10 - 01 = 01
11 → 11 - 01 = 10

という演算を、隣のビットとの組の16組で計算して、2ビット間隔で結果を記憶している。

つまり、2ビットのうち1になってる個数を2ビットの2進数表現で保存して、それを16個並べている、という処理。


次は、隣りの2ビット組とで足し算をして、結果を4ビットずつ8個並べて記憶。

次は、隣りの4ビット組とで足し算をして、結果を8ビットずつ4個並べて記憶。

次は、隣りの8ビット組とで足し算をして、結果を16ビットずつ2個並べて記憶。

最後は、隣りの16ビット組とで足し算をして、32ビットの結果から余計な7ビット目以上を消して終わり。



マージソートアルゴリズムのイメージと全く同じ。



これでビットカウントが O(log n) 時間で実行できる。







これをひらめいたときは「なるほど!」と一瞬感動したが、こんな見たまんまのロジックに数10分間も気付かなかった自分が非常に残念に思えてきてしまった…。


この程度で時間かかってるばかりか、O(log n) 時間で数えるアルゴリズムを自分で思いつかないようじゃまだまだ…。





3回目

2009-07-15 22:43:19 | 勉強
自己採点。


3回目のチャレンジでやっと合格できた。



約1年かけて4科目を3回に分けて取った形になって、ちょっと時間かかったけど、研究の片手間にやってたからと思えばまぁしょうがないか。


システムと設備は学部の知識だけでなんとかなったけど、法規と専門はちゃんと勉強しないとムリだった。



しかし、この国家資格を取って自分は何をやりたいのだろうという疑問が未解決のままである。


内容が、学部で勉強したことと関連するものの、自分の専門の研究分野にはカスってもいないし、そもそも研究者になるんだったらこんな資格意味ないし。




……何がしたくて電気通信主任技術者なんて目指してたんだろう。





というか、こんな勉強するぐらいなら英語をもっとやらなきゃいかん。




でも…

英語の勉強したくないでござる。






とりあえず、次のTOEICの申込みをした。








スーフォーの力

2009-07-14 21:52:16 | 陸上競技
7月11日(Sat) ずいほう 夜 涼

ドリル
坂ダッシュ


7月14日(Tue) 評定 夜 涼

ドリル
鉄棒
メディシン投げ
ポール歩き
踏み切りドリルもどき
100m WS×5



8割ぐらい出した。

変な姿勢で接地することさえなければヒザに痛みはない。

踏み切りも意外と問題ないかもしれない。


この調子だったら、七大オープンに出るつもりで練習しようと思う。

ただ、ケガで練習してない上にあと10日なので、満足のいく状態に持っていくのはどう考えてもムリ。



できる範囲でやってみよう。





果たして100mを完走できるのか!







試験日

2009-07-12 17:55:35 | 勉強
電気通信主任技術者試験、本番。



ちょっと本気出してきた。


3度目の正直。今回は専門(データ通信)だけ。




ムキになって勉強してきた甲斐があって、自己採点が楽しみだ。





この試験に限らず前に取ったソフトウェア開発技術者でも、この業界はなんでもすぐ言葉を略して使う。


主に英語の頭文字をとって3~6文字のアルファベットで表現された用語が数え切れないほどある。

だから、実務経験がないところから試験勉強を始めるときはまずその用語が何の略なのか確認するところから始めないと勉強が進められない。



でも、これはさすがにやりすぎじゃないかと思うのもそれなりにあって、例えば "CBR:Call By Reference(参照渡し)" とか" CBV:Call By Value(値渡し)" とか。


こんなの使ってる人を見たことがない。



「あの…、関数を実行しても変数の値が変わらないんですが」

「これはCBVだから値を更新しても呼び出し元には反映されないですよ」


なんて絶対言わない。

こんな略語を使う人はたぶん嫌われる。



あと、プロトコルとか規格とかの名称に数字(バージョン番号?)を使うのが覚えにくいからなんとかして欲しい、と勉強を始めた頃は思ってた。








10日後には学会発表が迫ってるけど、今日はもう何にもしないでいいや。


買ったまま読んでない本が5冊くらい机に積んであるから、とりあえず読もう。




と思ったら、Amazonからのメールに「ジャガー17巻好評発売中」?!!



しまった! 

ノーマークだった!!

そんな大事なことを…、なんということだ!


これは今すぐ本屋に走らなければ!!

ノッホソ・スパイラル

2009-07-10 23:28:03 | 陸上競技
7月1日(木) 評定 夜

ドリル
鉄棒
ポール歩き
ポール走


7月7日(火) ずいほう 夜

坂ダッシュ


7月8日(水) ずいほう 夜

坂ダッシュ


7月10日(金) 評定 夜

ドリル
鉄棒
ポール歩き
メディシン投げ
流し100m×3



練習を少しずつ再開。

6割ぐらいで走れるようになった。






勉強&研究のほうが、来週・再来週にいよいよ佳境。

あとは、いままで準備してきたものを出し切るだけ。







練習を再開したことでノッホソの合成速度が増し、さらにノッホソの自己触媒作用により反応系に正帰還ループが形成された「ノッホソ・スパイラル」状態に近づいている。