2008年7月アーカイブ

2次元に介入

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

【実写版】BLACKLAGOON OP
中盤の編集がスゲェうめぇ

WWW::NicoVideoという面白そうなモジュールがCPANに上がってるなぁと思い、ソース読んでたらモジュールの終端が"Ritsuko";で吹いた

作者はきっとアイマス好きに違いない。

--解説
Perlのモジュールはほとんどと言っていいほど大抵の場合
1;
で終わってる。

本当はreturn 1;なんだけど、Perlの場合、最後に評価したものが返り値になるので、実は式さえ書けばreturnは不要なのだ。だから省略して 1;と書く。

で、なんで1を返すのさと言うと、Perlで他のソースファイルを利用する場合に使うuseとrequireはファイルの終端を評価して偽だったら読み込み失敗という処理が入る。0や空文字、undefでなければ偽とみなされないので慣例的に1が使われている。

評価して偽にならなければなんでもいいのだが、実際に1以外を使用してる人は初めて見たわー。

社員証を入れる首掛け紐が届き、使い始める。

この間チラッと紹介したアレです。
流石に通勤に片道1時間10分かけると本を読める時間が爆発的に増えるな。

この本に関する他の人のレビューは角谷さんのブックマークを見た方が早いかもなぁ。自分は前半の章がとにかく面白く感じられた。

様々なインターフェイスのスタイル...
プル型やプッシュ型
複数メソッド、単一メソッド
ステートレス、ステートフル
...等今まで適当に考えてあまり意識してなかった部分を解説してくれているので非常に為になった。
また、ステートレスをステートフルでラッピングする話から始まる、インタフェースの変換に関する話題も面白く感じられた。

具体例で実際に設計してみる部分は少々読みづらかった。一度にたくさんインタフェースを紹介されてもなかなか頭にはいらん。

あと、デザインパターンに関する補足説明が良かった。
個人的に既存のインターフェイスを変形させて使えるようにするのが、アダプター。
既存のインターフェイスと同じインターフェイスにして透過的にしたのがデコレータと思っていたのだが、デコレータはユーザが機能を組み合わせる手段を提供して初めてデコレータなのね。プロキシとごっちゃにしていたことに気づかされた。

ちょっと残念なのは誤字脱字が若干多いと言うことだろうか。
例えば、p135

正規表現を用いたパーサーを使うこともできるし、
何故かココだけ、ですます調でなく激しい違和感を感じた。(´Д`;
あとシーケンス図にメッセージ名が一部抜けてたり(p154)とかインデントがずれていたりとか(p193)してる。まぁ、あまり話の本筋とは関係ないけど、ちょっともったいないように感じた。

---
さて次は何を読むかねぇ。
途中で止まってるHaskell本(ふつける)辺りでもまた読み始めるかな。最近また関数型言語に興味が湧いてきた。

【ニコニコ動画】ピコピコ動画流星群 - The Legend of GameMusic -

スーパーアレスタの音源登場により、全俺が泣いた。

SiSチップ

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

Intel天野氏がMini-ITXへの注力をアピール より

このほか質疑応答では、「22W」(天野氏)とされるAtomマザーのチップセット発熱について、「945チップセットを改良していく予定はないが、SiSさんのチップセットは通常10W前後なので、これらを使った製品が出てくる可能性はある」という回答もされている。
やべぇ、本当ならちょっと楽しみ。(´Д`*)
まだAtomは買わないでおこう...。
問題はSiSを使ったチップが市場にちゃんと出てくるのかってことだな...。

ぬぅ、1ヶ月以上空いてしまった。メモがもったいないのでこっちの方にも書いておこう。
まぁ、最近はJavaなんて全然触れていないのですが!(´Д`
--------------
39.通常フローに例外を使うなんてトリッキーなことはしない
上手く設計されたAPIは利用者側に通常フローで例外を使わせない。
例:Itratorのnext()→状態依存だが... 状態を検査するhasNext()がある!

hasNext()が上手く使えない場合→オブジェクトが外部同期無しで並列にアクセスされる場合
hasNextとnextを一つにまとめ、返り値で判断できるようにする(nullや-1とか)方法もあるが...できれば状態検査メソッドがあったほうがコードは読みやすい。

--------------
40.例外の種類
例外: -チェックされる(catchされるべき)例外
    -実行時例外(Runtime Exception系)
    -エラー

チェックされる例外以外は一般に回復不能なもの。エラーを隠蔽してしまうので、例外処理はしない方がいい。
だからRuntime Exception系のものは発生する可能性があっても特にtry文は求められない。

(けど個人的にjava.lang.IllegalArgumentException派生のモノは例外処理アリなんじゃないかなぁとも思ってる。よく数値っぽい文字列かどうか判定するのにNumberFormatExceptionを使ってるんだけど、これは卑怯でしょうか?)

-例外が発生しても対処可能ならチェックされる例外を使う。(外部リソースに依存している場合とか。DB、filesystem等)
-利用者のプログラミングエラーを示すなら実行時例外。

例外も一つのオブジェクト。自分で例外クラスを作るならエラー情報のアクセサを作るのもアリ。

--------------
41.チェックされる例外を多用しない
例えば、自作ライブラリーがチェックされる例外を投げて、利用者がcatchしてもe.printStackTrace()ぐらいしかやる事がなければ実行時例外の方を使うべき。

チェックされる例外の発生はライブラリー利用者に負荷をかける。
利用するのにtry~catch文が必要になる。
↓負荷を減らすには...
失敗か成功かを表す返り値booleanなラッパーメソッドを作る(でも、39のhasNext()同様にスレッドセーフであることが求められる。ラッパーメソッド実行中にオブジェクトの中身が変化して間違った値が返ってきたら意味がない。)

--------------
42.用意されている例外を使え
新しい例外を作ると覚えることが増えてメンドイ。

よく使われる例外
・IllegalArgumentException
・IllegalStateException
・NullPointerException
・IndexOutOfBoundsException
・ConcurrentModificationException
・UnsupportedOperationException

-NullPointerExceptionとIndexOutOfBoundsException
渡ってきたパラメータの検査時に使う。これらはIllegalArgumentExceptionより具体的に例外内容を示している。

-UnsupportedOperationException
 →コレを投げるようならそもそもそんなメソッド作るなという話だが、インタフェースを実装するときに使える。
   本では例としてremove不能なListを実装する場合を挙げている。

--------------
43.例外翻訳(Exception translation)

これは実際のコード例見た方が早いな。
AbstractSequentialList#get(int index)より。

    public E get(int index) {

	ListIterator e = listIterator(index);

	try {
	    return(e.next());
	} catch(NoSuchElementException exc) {
	    throw(new IndexOutOfBoundsException("Index: "+index));
	}

    }

この場合、要素が見つからないというのは渡されたindex値がリストの範囲を超えてる場合なので、そんな要素ありませんという例外よりはリストの範囲外だぞという例外を投げた方が利用者にとって分かり易い。

このように下位レイヤーが投げる例外と上位レイヤーで例外の意味合いが代わってくるときに.例外翻訳イデオムを使用する。
デバッグ用に下位レイヤーで発生した例外を新たに生成する例外のコンストラクタに渡すことで例外情報を保持し続けることもできる。(例外連鎖)

#もっとも、一番良いのは下位レベルで発生した例外を上位レイヤーに投げずに済むように中で例外を片づけることだけどね。

--------------
44.例外を投げるメソッドのドキュメント
jacvadocコメント内で@throws タグを使ってメソッドが投げる例外について記述しようという話。
→例外を記述することにより、そのメソッドを実行するための事前条件が記述される。

クラス内にあるほとんどのメソッドの事前条件がnot nullな場合毎回書くのか?
 →クラスドキュメントにまとめて書くのもok。

--------------
45.例外の文字列表現
例外クラスを自作する際のtoString作事の注意点について
→例外を発生時のパラメータとフィールド値は全て記録しておくことが望ましい。

例:IndexOutOfBoundsException
 範囲の下限上限と実際に例外を発生させるキッカケになったパラメータ値を保持してるべき。
 →詳細情報の提供を強制させる為、例外オブジェクト生成時にこれら上限下限とパラメータ値を引数として要求するコンストラクタを作るのもアリ。

--------------
46.エラーアトミック性
例外が発生したら、オブジェクトの状態は例外が発生する前の状態に戻っていることが望ましいという話。

一番ラクなのは最初に引数チェックをしてオブジェクトの状態を変化させる前にエラーを検知すること。
それが無理なら状態戻すコードを追加すること(DBで言うところのroollbackに相当)
一時的なコピーをつくってそれに対して操作するという方法もある。

エラーアトミック性を達成できないモノもある。
(ConcurrentModificationExceptionを投げたオブジェクトに関しては中身が壊れてる状態なので元に戻すことは出来ないだろう。)

--------------
47.例外は無視しない
catchブロックが空なコードは書かない。まぁ、当たり前か。
仮にしょうがなかったとしても、なんで空なのか説明するコメントが必要。

ニコニコ動画でちらっと見たんだが、WWIIもののドキュメンタリーがカラー映像で凄かった。
一部人工着色らしいが、とにかくすげぇ。

WWII以前の映像って白黒で少し早回しでどうも自分たちが今居る現実とどこか離れた、実はウソなんじゃないか感がぬぐえないのだが、やっぱカラーだとリアリティがすげぇ出てくる。映像の中の人達も生きていた時代が60年ほど違うだけで、やっぱり自分たちと同じ空気を吸っていたのだなぁと感じ取ることが出来た。

---
週末辺りからどうも体調がよろしくない。今年何回風邪をひく気だオレは。
職場配属による環境の変化で疲れが出てしまったのだろうか?相変わらず適応能力が無さ過ぎて困る。

研修つっても本配属後の...だけど。

遂に電話対応をした!
が、同じ部署の人を"さん"付けで呼んでた(´Д`; )
こーゆうとき、社内部署だとマダ救われるよなぁ...コレを見越しての配属だったのかしら?

最近やってることと言えば、ひたすらテストだなぁ...。Excel使いまくりな生活なのでExcel Hacksでも買おうかなぁと思っているところ。

昨日は部署内の飲み会だったので、起きるのが辛かった。
部長に期待されてしまっているのは分かった。でもその期待に応えられるのか...(´~`; )
肝心のプログラムも全く知らない世界に突入しそうだしなぁ。
あと、課長の傘を間違えて持って返ったりとかやらかした!


-今日見た動画
アンインストール (VOCALOID MEIKO ver.)[H.264]
http://nicovideo.g.hatena.ne.jp/Lyo/20080709

-面白wiki
名前の由来
rcってそーゆう意味だったのか。
個人的には/usrの意味が知りたい。BSD Hackかなんかで「いったいどのぐらいの人間がusrの本当の意味を知っているのだろうか?」みたいな文章があったのでuserじゃ無いんだろうな...。

#調べてみたらやっぱり色々hitするなぁ。
Unix系OSでの"usr"は"User Services and Routines"でもない?
http://d.hatena.ne.jp/ginpei/20080420/1208705778

串刺公

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

プロイセンやドイツの歴史も好きだが、オスマントルコ周辺の歴史も好きだな。

ワラキアに舞う血煙の中で

ヴラド3世って夜神月を地でいっちまったような感じだよな。

tiepin.jpg
タイピン遂に購入(´Д`*)
これで洗面台で手を洗うときにネクタイがべちょっと濡れることも無くなるわけですね。

【ニコニコ動画】グニャラは大変なPerlをDISっていきました
Perlネタ満載。「スレッドつかったらこわれちゃう」にワロタ

自分は今日、報告書が返ってきました。真っ赤になってな!

てなわけでただ今修正中( つД`)
こんなに紙に文字を書いたのは就活以来かもしれない。誤字で泣きそうになるのも。
院出ておいて日本語が未だに不自由な自分が恨めしい。

3日目の今日も覚えることが山盛り。
プログラムのコードを追ったが環境が違うと全然慣れないなぁ。OJTの方とソース読んだが、追うのが早い早い。マジで二十歳の頃に戻っちまったかのような感覚だ。どうもまだついていけん。適応能力に乏しいなオレは。

まぁ、嘆いてばかりもいられない。今はただ現場に慣れるのみ。

このアーカイブについて

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

前のアーカイブは2008年6月です。

次のアーカイブは2008年8月です。

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

月別 アーカイブ

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