2007年5月アーカイブ

404 Blog Not Found:Code Snippets - reduce(l|r)を実装汁!より、面白そうだし、コーディングの練習にもなるのでやってみた。

まずはループで。


public class Reduce {

public static String reducel(String...a){
//最初の2つだけ特別扱い
String tmp = cat(a[0], a[1]);
for(int i=2; i < a.length; i++){
tmp = cat(tmp, a[i]);
}
return tmp;
}

public static String reducer(String...a){
String tmp = cat(a[a.length-2], a[a.length-1]);
for(int i=a.length-3; i>=0; i--){
tmp = cat(a[i], tmp);
}
return tmp;
}

private static String cat(String a, String b){
return "(" + a + "#" + b +")";
}

public static void main(String args[]){
System.out.println(reducel("1","2","3","4","5"));
System.out.println(reducer("1","2","3","4","5"));
}

}

長さ判定してないのでマズイコードだ。
次はちゃんと考えて再帰で。


public class Reduce2 {

public static String reducel(int lastIndex, String[] array){
if(array.length <= 1){
// 1つだけ-> reducel無理
return "can't reducel";
}else if(lastIndex == 1){
// 最初の2つだけになったら具体的な文字列を返す
return cat(array[0], array[1]);
}
return cat(reducel(lastIndex-1, array), array[lastIndex]);
}

public static String reducer(int index, String[] array){
if(array.length <= 1){
// 1つだけ-> reducer無理
return "can't reducer";
}else if(index == array.length-2){
// 最後の2つだけになったら具体的な文字列を返す
return cat(array[array.length-2], array[array.length-1]);
}
return cat(array[index], reducer(index+1, array));
}

private static String cat(String a, String b){
return "(" + a + "#" + b +")";
}

public static void main(String args[]){
String[] a = {"1","2","3","4","5"};
System.out.println(reducel(a.length-1, a));
System.out.println(reducer(0, a));
}

}

結果はどちらも
((((1#2)#3)#4)#5)
(1#(2#(3#(4#5))))


再帰だと制限の10分を超えてしまった。がふん。
reducel()を実装の時、最初→方向で考えてしまったけど、再帰だとでかい塊から徐々に小さい塊へってなるから逆方向(←)だよね。

ここ最近、1週間ぐらいぐらい前からだろうか。
研究室のPCでも自宅PCでもwindowsを動かしてると、時々黒い画面(コマンドプロンプト)が一瞬だけ表示され、すぐそれが消えるという謎の現象が発生し始めた。もちろん、ウイルスやマルウェアにかかった覚えはない。しかも困ったことにいつそれが起動されるのか全く分からないのだ。あるときはfirebirdでnetをまわっていたとき。あるときはwordで文章を書いていたとき。といったように特定のアプリに依存しているわけではないようだ。

なんでだろうと思い、調査し始めたので分かった部分だけでも紹介しようと思う。

自宅の方で色々調べてみたところ、conime.exeというプロセスが毎回、黒い画面が消えた後に必ず残っていることが分かった。調べてみるとconime.exeはコマンドプロンプト用のIMEらしい。コマンドプロンプトが死んでもこいつは生き残るとのこと。(試しに手動でコマンドプロンプトを実行してみるとたしかにconime.exeも起動されるようだ。しかもほぼ同時に。)
結局なにかしらのプロセスがcmd.exe(コマンドプロンプト)を立ち上げたために、conime.exeが残ったのだろう。
じゃあ、結局一体どのプロセスがcmd.exeを立ち上げているのだろうか。


-もっと深く調べるために用意したもの
 Process Explorer for Windows v10.21
こいつで、例の黒い画面が出てきたときに何が起こってるのか調べてみようという考え。
研究室でDB英語本を翻訳しながらまったり、待つつもりだったが意外にもそいつはすぐに現れた。(by 戸愚呂兄

黒い画面が現れた瞬間、GoogleDesktopIndex.exeが動きを示したのだ。
GoogleDesktopIndex.exeとconime.exeを比べてみた。

process_state_graph.jpg

(上がconime.exe。下がGoogleDesktopIndex.exe)
conime.exe起動のタイミングがかなりGoogleDesktopIndex.exeに近い。
ちなみに、この後PCで立ち上がっている全てのプロセスについてconime.exeと比較してみたが、conime.exeが起動した付近でグラフに変化があったのはexplorer.exeぐらいしかなかった。GoogleDesktopIndexが犯人なら冒頭でちょろっと言った"いつ起動されるのか全く分からない"という点も納得できる。アイドルになったときに動き始めるのだから。

とりあえず研究室か自宅のどちらかでGoogleDesktopを一時的に消して様子を見ようかなぁと思う。

今から23年と6時間ほど前に生まれました。


23かぁ~。二十歳になってからもう3年も経つのか。早いもんだなぁ。
なんか、このままいくとすぐに三十路になりそうで怖いです。(´Д`;

なるべく有意義に日々を過ごしていきたいと改めて思った。

---
久々に塾講のバイトをまたやりました。もう週1しか来れないのに、(まだ)雇ってくれるので非常に感謝しています。なんだかんだで今度先生方だけで飲み会をやるらしい。面白そうだ。
そーいえば今のプログラマーとしてのバイト先もなんだかんだでもう1年近く働いてることになってる。んー、やっぱり1年の長さが短く感じる今日この頃です。

現在のニコニコ動画のランキング1位動画。

凡人がメモ帳で優曇華院に挑んでみた

調整とかすごいしんどそうだ。


狂気繋がりなおまけ。
キュウリ味のペプシコーラ登場
一体どーゆう会議のノリでこうなったのか、すげぇ興味がある。

#コレも面白かったので追加のおまけ
新君が代(2008~)

よーやくsiに返すことが出来そうです。面白い本だった。
joelのようにバランスの取れた判断が出来る技術者になりたいなぁと思う。


最近買った本
ip_routing_book.jpg
今期取っているネットワークの講義が輪講形式で自分はOSPFの部分を担当することになったのだが、全然分かっていないので英語の資料を読み始める前に前知識を付ける意味で購入。DB本の翻訳が終わり次第、読み始めたいと思う。


最近欲しいなぁと思う本
perl_hacks.jpg
いつの間にか日本語版が出ていた!
バイト帰りに本屋に寄って見たんだけど、本当に小技集みたいな感じ。ひとつのテーマがだいたい2-3ページぐらい。なのでhacksシリーズとしてはちょっと薄め。BSD Hacksの半分ぐらいの厚さではないだろうか?けどオライリーなので相変わらず\3000over。ちょっと手を出しそうになったが最近出費が激しいのでこらえた。他にも読むべき本がまだまだ大量にあるし。(´Д`;)
けど内容が面白そうなのでそのうち買う予定。

HHK_sumi.jpg

嘘です、ごめんなさい。(´へ`;)

某M研の方(一時期、TAの給料のほとんどをキーボードに費やしていたそうな)がRealForceの方にハマってしまい、余ったpro墨をしばらくウチの研究室で使ってくれとのこと。と言っても何故かウチの研究室内では英語キーボードはあまり評価されず、このままだとサーバ用キーボードとして放置されてしまいそうだ。

もったいないし、せっかく白proを持っているので記念に撮ってみた。

HHK_sumi2.jpg
1台のマシンにHHKpro2つ繋ぐという、素晴らしく無駄な構成!

ウボァー

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

家に帰ろうとイスを離れた瞬間、ケーブルが足に絡まり、コンセントが抜けた...。
自分が使ってるマシンだけなら良いのだが、サーバ2台もwindowsマシンと共にプツーンと逝った。

現在修復中(´Д`ι)早く帰りたーい。

いっつも混乱するのでまとめておく。

Eclipse Java
-宣言を開く:F3
-戻る:Alt + ←

Visual Stdio C/C++
-定義にジャンプ:F12
-戻る:Ctrl + -

とりあえず必要最低限なモノだけ。もし他にもあったら追加していく。

泊まりで翻訳です。現在の進捗状況は30%
と言っても訳し疲れたので、今はまったりモード。この後ちょいと研究用プログラムに手を加えないとなぁ...。


最近欲しいなぁと思う曲リスト
Mims - This is Why I'm Hot

最近interFMでよく聴く曲。運転しながら聴いてるとThis is Why This is Why This is Why I'm Hot がスゲー耳残って洗脳され中。


God knows...ではなくてArch Enemy - Nemesis

未だに買ってないがそのうち買う。ギターも良いがドラムも良い。
これを本当に女性が歌っているというのだから驚きだ。↓


おまけ
Windows Remix

error音によるtechno。コレは面白い。

宇宙ネタ

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

天体ネタ好きなのでこういうのはたまりませんな。

星の大きさ比較。

現在知られている一番大きい星"VV Cephei"でも銀河系全体を一枚の画像に納めると1ピクセル、要するにちっちゃなひとつの点にしかならない。

galaxy.jpg


しかも宇宙全体はこのような銀河がまた無数にあるわけだからホント、スケールがでかい話だ。

#またNHKで宇宙の話やってくれないかなぁ。

結局、大きい方の日立情報システムズに決めた。郵送物も今日届き、内定の連絡が来た。
決めた以上、技術者として上を目指して、落ちぶれないように頑張る。


本日のネタ
安斎遅刻、説教で空耳終わる

やっぱりこの2人のやりとりは面白い。

英語の翻訳をするはずだったのだが、やっぱり家ではダメだ。
今日はニコニコ動画でトムとジェリーを見てしまった。非常に懐かしい。そして相変わらず笑える。
「星空の音楽会」や「土曜の夜は」といった音楽系は非常にイイ。年をとってBGMの良さに気づいた。
インディアンごっこのやつは相変わらず腹がよじれるほど面白い。
てか、トム&ジェリーって第2次大戦中とかに作られてたのね。1944年の作品とかあったけど戦争中にこんな面白いアニメが作れるモノなのか....なんとなく日本が戦争で負けたのも分かる気がする。

どうしてプログラマに・・・プログラムが書けないのか?

コンピュータサイエンスを専攻している自分にとっては耳の痛い話ですな。履歴書にコンピュータサイエンスを学んできた経歴があるからといって、誰もがプログラミングできるわけではないんですよー。というお話。

リンク先にあるFizz-Buzz問題だったら
-Nの倍数 = Nで割ったら0
-nとm両方の倍数 = nとmの最小公倍数で割ったら0
と言うことにすぐ気づけばok。

この記事のはてブが面白い。ワンライナーだけどやっぱり多くの人が自分と同じように剰余を利用してる。面白いのはフラグやテーブルを使った方法で実装している例があることだ。その発想はなかった。

最近プログラミング関係の講義のTAを担当することになり、教わる側から教える側になったのだが、コーディングの速さは人によって雲泥の差が出るなぁ、とよく思う。中にはやっぱり本当にこの先IT系の業種でやっていけるのか、こっちが不安になってしまうような学部生も居る。(その講義はプログラミングの授業を1年間やってきたという前提条件付きのはずなのにだ)

学生の身分でこう言うのもなんだけど、コンピューターサイエンス系の学校って、実はプログラミングが苦手な人達が結構多いんじゃないかなぁと思う。(流石にリンク先に書いてあるような200人中199人というのは言い過ぎな気がするが。)
中にはやっぱりスゴイ人達もいる。けど、自分が今まで出会ったそーゆう人達は決まって独学で勉強しているような知的好奇心が旺盛な人達だ。中の人の視点で言わせてもらうと、学校で学ぶプログラミング授業の内容はあんまり大したことがないような気がする。自分がなんとかバイト先でプログラマーとしてこなしているのも今まで本を読んできた経験があったからだ。おそらく学校の授業だけではアウトだっただろうなぁ。

以前紹介したjoelの記事"Javaスクールの危険"も併せて考えて、アプリケーションエンジニアを目指す学生から見ると、こんな感じなのだろうか?

--さっき例に挙げたFizz-Buzz問題のような手続き型言語を制御する壁--

--ポインタやoopの壁------------
                              ←自分は今この辺をウロウロしている感じ(Haskell本読みたい)
--LispやHaskellといった関数型言語の壁-------


で、別ベクトルでバイナリーな壁とかもあるに違いない。
以上、思ったことをテキトーに並べてみた。

で、自分はどうなのよ?と聞かれると、今日は最近流行らしいPOEを使って簡単なEchoサーバを作ってみたのですが、なかなかC言語で作ったクライアントとの通信がうまくいかず、なんでかなーなんでかなーと大いにハマり、最終的に改行コードが抜け落ちていたというポカをやらかしたので全然エラソーな事は言えません。(言っちゃってるジャン)

---

日本人の場合、技術に関わるなら英語力も必要だなぁと最近強く思う。

この前のタコノコ祭でsiにも言ったのだが、英語のドキュメントに勇気を出してアクセスすれば意外と早く答えが見つかることに(ようやく)気づいた。と、いうか日本語文献のみという条件で調べるとそれだけで情報量を相当絞ってしまい、遠回りした挙げ句、最悪の場合、何も見つからねぇという事態が起きる。

最近
FreeBSD で Cool'n'Quiet → Athlon64が62MHz駆動?内で紹介した

sysctl -a dev.cpu.0.freq_levels →  2000/67000 1875/62812 1800/64700 1687/60656 1575/56612 1462/52568 1350/48525 1237/44481 1125/40437 1000/28600 937/26812 875/25025 812/23237 750/21450 687/19662 625/17875 562/16087 500/14300 437/12512 375/10725 312/8937 250/7150 187/5362 125/3575 62/1787

この出力の/の右側が何を意味してるのか分かんなくて色々調べたのだが、最終的にはやっぱり公式の英語のドキュメントにたどり着いた。

dev.cpu.%d.freq_levels Currently available levels for the CPU (frequency/power usage). Values are in units of MHz and milliwatts.

なるほど、TDPをmWで表記したモノらしい。Fab51で使用しているCPUのリストを見たら

AMD Athlon 64 Desktop Processor TDP67W ADA 3200(2.0) 3500(2.2) DKA4CG 939 OuPGA 1.35V 65 512k __-E4 - - ADA 3000(1.8) 3200(2.0) 3500(2.2) DAA4BW 939 OuPGA 1.35V-1.40 65 512k DH-E6 2, FF2 2F

たしかに67Wだ。

ってことは62MHz時は1.8Wっすか?とワットチェッカーを購入せずにいられなくなってしまう。


えーと何の話をしていたのかさっぱり忘れてしまったので今日はもう寝る...前に若干DB本の翻訳を進める!
まだ翻訳しやすい英語の技術書なので助かる。昨年、院の英語の講義でやっていたMitpressのSICPの翻訳は序文でもう死んだ。訳本の評価が酷いのも何となく頷ける。
てか数学や関数型言語の前知識無しで、いきなりSICPっていうのもどうなんだろう。

このシリーズはすごくイイ。

途中スノーマンが出てきて涙腺がやられそうになった。懐かしすぎる。

やってきました今年も。
体調がもう少し良ければ酒ももう少し進んだと思いますが...。

ただ、先日に醜態を晒したばかりなので、体調が良くてもそんな飲まなかったかもしれません。

今年は明かりも十分あったし、食い物と酒の比も良かったのではないかと思います。
色々話もできたので楽しかった。

どうも今年のGWはついてない。まだ前厄なのに、来年はどうなる事やら。

Cドライブが10Gでイイのはwin98かMeまでのようです。
ここまで容量食ってこの断片化率ではもはやお手上げ。今度から30Gは確保しよう...。
defragmentation.png


最近感動したモノ。

江戸時代熱すぎです。

小学校5年生以来、だから.....12年ぶりに吐いた。

あと初めて酒で記憶を失った。


居酒屋から気づいたら研究棟4Fのトイレに居ました。途中の記憶がかなり断片的だ。ビニール袋差し出されてウエウエやっていたのはなんとなく覚えている。

#ご迷惑をおかけした皆さん、本当にすみません(´□`)


#でも酒にのまれる経験を学生の内に1回やっておいて良かったかもしんない。

このアーカイブについて

このページには、2007年5月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2007年4月です。

次のアーカイブは2007年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

OpenID対応しています OpenIDについて
Powered by Movable Type 4.261