Wanderlst

一言愚痴日記

日記TOPへ

2008.12.30

再び帰ってきました。久々にRSSリーダーで巡回していたら…。もうすでに浦島太郎。ブログもいろいろ、メリクリの文字が。

もうクリスマスなんておわってるよー!そんななか、酔漢さんがU-BOOTの移植完了したことを知る。自分もやりたいが、もう明日は大みそか。年始早々やること山済み。あー。やってられんー。

ちょっと早いですが、明日は更新できるかわからないので、よいお年をー。

2008.12.27

帰ってこれたー!

けど、トラブルあってとんぼ返りだー! orz

なーぜーだー(T-T)

最悪な年末。

2008.12.21

AVR32UCの内臓フラッシュ書き換えができーん!なんでアライメント例外が起こるのかさっぱり。最初は順調にフラッシュ書いているのに、どこかで例外投げられてそのまま停止。

うーん??もうちょっと調べる必要あり。ってか、もうタイムアップ。

明日から出張。たぶん1週間日記更新できなくなります。

2008.12.19

AVR32のアセンブリニーモニックはARMに似てる…気がする。気がするだけで勘違いかもしれないが。

2008.12.18

ガンバ大阪負けちゃいましたね。クラブワールドカップ。

試合終わった今でもまだ仕事してるため、試合自体は見てないので、どんな内容だったのかわかりませんが、結果だけ見て、お。3点入れたんだーって感じ。

来年もがんばれ。

2008.12.17

会社でLANケーブルテスタとかみしめ工具を買った。納品物設置時に使うためなんだけど、LANのケーブル配線なんて久々だ。大変なので、できればやりたくないw

しっかし、こういったネットワーク整備なんて何年振りだろう。

2008.12.16

ああ!しまった。Digikeyで買い物したのに、肝心の水晶頼むの忘れてたっ!orz

しかも、また仕事スパイラルにー。

2008.12.15

先日、「SmartPointerを使いますか?」と、酔漢さんに聞かれた。

その時、「私はあまり使わない。」と話したのだけど、自作のクラスライブラリではそれなりに使っている。むしろ、スマートポインタではなくて、カーネルオブジェクトのCloseし忘れとか、Mutexのunlockし忘れといった、型の情報が明確な場合には、デストラクタを活用している。

スマートポインタ自体は確かに便利なんだけど、C++初心者が使いこなせるものではないと思う。検索するといろいろヒットして、スマートポインタのメリットばっかりが出てくるが、いざ使うとなると、std::auto_ptrのような自己完結型のスマートポインタは使える機会が少ない。auto_ptrという名前もスマートではない気がする。

std::auto_ptrは、生存期間を終えると勝手にデストラクタがメモリを回収してくれる仕組み。javaやC#のようにシステムが勝手にオブジェクトの生存期間の面倒みてくれるようななものではないので、以下の欠点がある。

  • スマートポインタ自体の生存期間を把握しなければならない。
  • 実態ポインタ自体をコピーができない。(正確に言うとできないのではなく、コピーしてはならない。だって、コピーしたら、どのスマートポインタがdeleteするのか分からなくから。)
  • デストラクタでの処理がdelete[]ではないため、配列クラスオブジェクトには使えない。(※1)

こういった理由で、クラス内部で使用するローカルのバッファなど、他から参照しないような隠蔽された状況にしか使えないことが多い。

一番痛いのは、実態ポインタがコピーできないため、auto_ptrを使用した場合、vectorのようなコンテナには使えない。(※2)

なので、これを解決するために、std::auto_ptrを捨てて、boost::shared_ptrのような参照カウンタ型のスマートポインタを使うわけで、そちらは便利で、コピーできないという欠点をカバーしている。

ただ、やっぱり欠点も存在する。

参照カウンタ自体はスタックに保存しておけないため、結局newで参照カウンタのエリアを確保する。mallocのように内部で使用するヘッダを一緒に埋め込めればいいが、スマートポインタの使い方からして、newでメモリ確保するのはユーザ側なので(※3)、参照カウンタを別にnewしなければならない。

つまり、仮に参照カウンタがintの4バイトですむとしたら、たった4バイトのためだけにメモリ確保する必要がある。スマートポインタを作るたびにこんな小メモリを確保していては無駄が多いので、これを解決するために、参照カウンタ全体を管理するクラスを用意するか、この無駄を受け入れなければならない。

なので、スマートポインタは作るものではなくて(※4)、すでにあるクラスライブラリのものを使った方がいい。有名なのは、boostクラスライブラリ。そのboostも、いくつかのスマートポインタを用意している。

scoped_ptr/scoped_array/shared_ptr/shared_array

今まで記述したような問題点があるため、適材適所でいくつかの種類を使い分ける。その違いは、初心者には分かってもらえない。

***********************************************************************

※1
deleteとdelete[]の違いは、配列全体のオブジェクトにデストラクタが実行されるかどうか。たとえば、

class A;
A* a = new A[100];

delete a; ← 最初のa[0]しかデストラクタが実行されない
delete[] a; ←全部のオブジェクト(a[0]〜a[99])までデストラクタが実行される

デストラクタが実行されないと、スマートポインタの意味もなくなる。これがなかなかわからないバグになったりする。

※2
auto_ptrのコンストラクタに、constが付属したものは引数にできない。なので、通常はコンパイル時にエラーが起こる。言い換えると、auto_ptrをメンバに持つと、コピーコンストラクタが作れない。ワンクッションかませば、引数のconstはとれるため、無理やりならできなくはないが、コンテナ内部では確保と開放を繰り返すため、めちゃくちゃ遅くなる。

※3
書式はこうなるため。std::auto_ptr<A> a(new A);

※4
私は一通り作りましたw

2008.12.14

朝6時の新幹線に飛び乗り、帰路へ。戻ってきて仕事のメールを確認やら何やらした後、さすがに寝不足で死んでました。

今日一日移動と睡眠で終わり・・・(^^; さすがにこれ以上の仕事はできんかった。

2008.12.13

仕事の後、大阪にて忘年会。某プロギタリストの方も遊びに来て、朝まで盛り上がっていました。

午後5時には新大阪に入ったんだけど、みんなも仕事だったらしく、8時まで合流できず、仕方なくぶらぶらと時間つぶし。

今回はみんなギター持ち込みでエフェクタとか試していたんだけど、いやー、エロ話といろいろ盛り上がっていました。やっぱ関西の人は突っ込みノリ良すぎw

来年もやりましょう。大阪OFF参加者の皆様、よいお年を〜。

2008.12.12

最近の政治はどうなっていくんでしょうかね。

2兆円もただ単に配るのなら、失業者のために再雇用の補助金に充てるとか、自給率が低いんだから農業の整備とか、医師を増やすための対策とか、もっといい方法があるんじゃないかと思うのですが。

まさにそれは皆感じているようで、今朝のTV番組で、一般から「今の不況を打破するための政策案」を募集した結果をいくつか紹介していました。

おおー。と思うのもあれば、いや、それはだめだろうと突っ込みを入れたくなるのもあったんですが、結局は金が回らないとだめという結果に。

いっそのこと、国民から公募でアイデア募ったらいいのに。とおもう瞬間でした。

P.S.

…と、朝書いていたのに、夜NEWSを見ていたら…。23兆円の経済対策って…。なんじゃそりゃああ。どこからそんな金が??

2008.12.11

あ〜あ〜。クリスマスはサンタさんしてます。顧客に納品物プレゼント。ああ〜。やってられな〜〜〜い。

ストロベリーリナックスで、以前からほしかったNXPのARMチップを搭載したLPC-2478STKの取り扱いを開始してる〜!LCD付きで25000円。やばい。ほしい。

LQFPでカラーLCDコントローラ内蔵しているプロセッサってあんまりないんだよねぇ。

…けど、IARの開発環境がないんだよなぁ。ARMだからgccはあるけど、LPC2478のヘッダーファイルとかあるのか使ってないからよくわからず。そもそも、NXPのサイト見ても、内臓フラッシュにはどうやってプログラムするのか説明がないのでよくわからず。なので、手を出そうとして躊躇している。

なんて話を、ETの時に、NXPのブースで話をしたら、代理店のユニダックスからメールが来て、うちの会社まで説明しにくるって…(汗

2008.12.10

今日は打ち合わせで一日終わった。仕様変更があり、納期延ばしてきたため、少し余裕ができた。今月はもう徹夜しなくてもいいかも…?

ただ、クリスマスは福岡に缶詰かもしれない(T-T

2008.12.9

あー。はずかし。最初、話しながら、「これ、どう話持って行くんだっけ?」と、自分で書いておきながら、要点つかめずテンパるところいくつか。自分、この資料寝ながらかいていたんだっけ??

なんか、入社したての頃のプレゼンを思い出す。上司にずいぶん練習させられたんだけどなぁ。そういえば、今の会社に移ってから、一度もプレゼンやった記憶がないや。あちゃー。

酒が入るときだけ活舌になりますな。次回はがんばろう。

昨日も3時寝だったし、ねぶい。今日はもう寝ます。

2008.12.8

明日から出張。なんか持っていくものいろいろ。スピーカーとか送ればよかったと今更後悔。

これからBF533CBのマザーボードのテストします。せめて、酔漢さんにトークスルーのサンプルぐらい渡せるようにしておかねば〜。

2008.12.7

今日も元気に仕事です orz

ここまでくると、世間から隔離されてるような気分ですよ。年末からは普通に過ごせそうなので、早く納品終わんないかなぁ。

BF533BFのマザーボードのテストぐらいしなくては…。

2008.12.6

最近、仕事の合間にYoutubeで猫の動画で癒され中。(かなりの猫好き)

実家には猫いるけど、実家まで帰らないと会えないしなぁ。

2008.12.5

私もいろいろ検討しましたが、酔漢さんの結論通り、クロックは20MHzにしましょう。入手も容易ですし。 27MHzのリファレンスクロックが作れませんが、外部に水晶か発振器をつけることにします。

え?なぜ10MHzじゃないかって?ちょうどうちに在庫がなく、20MHzならAVR32と併用できるからです。20MHzでも特に困らないし。

てなわけで、

CCLK = 20MHz ÷ 1 × 25 = 500MHz
SCLK = CCLK ÷ 4 = 125MHz

来週、酒のネタに話しましょう>酔漢さん

2008.12.4

仕事の基板のおまけで作ったBF533CBの簡易設計のマザーボード基板が届いた。急いで数時間で設計しただけなので、簡易すぎて機能に不満はあるが、これでオーディオでの簡単なデモとプログラムは作れるはず。

落ち着いたら、もうちっとましなマザーボード設計します。なお、本体の水晶クロックは、どうするかまだ悩んでいます。はい。

2008.12.3

昨日、ようやく某研究会の講演資料を提出できた。それなりにみんなの興味を引く資料に…なったかなぁ?

BF533CBの水晶を27MHzと決めたまではよかったんだけど、本当にこれでよかったのかは、ちょっと疑問だったり。サンプルプログラムのネタはあるのに、取り掛かれるのはちょっと先かも。

2008.12.2

いしかわさんが欲する小型のCPUボードってどんなのだろう?と勝手に妄想してみた。小型というとかなり制限がつくため、たぶん専用に特化したほうがいいんだろうなぁー。70mm×50mmでもでかいと言われたので、50mm×50mmならいいのかな?うーん。難しい。

客先の都合で、仕事の納期が延びた。もしかして、年末までずれ込む…のかなぁ?年末だと飛行機がとりにくくなるので、来年にならないかなー。

2008.12.1

朝から頭痛で悩まされる。風邪ひいている場合ではないので、気合いを入れる。

BF533CBを持っていくと、必ず「いくら?」と聞かれるので、コスト算出のために、実装業者に見積もりをお願いした。「見積もりだけになったらごめんね。てへっ」みたいな感じで(爆

やっぱり部品仕入は、日本の商社にしたいところだけど、100枚分程度の部品では高いし、納期遅いんだなー。これが。Digikey恐るべし。