April 01, 2007携帯のメモリが消えました
[Info]
ネタではないです。3月の上旬頃に携帯の電話帳が全て消えました。当時はトモダチ0人でした、現在徐徐に回復中です。もし僕の携帯のメールアドレス知っている方がいましたら、連絡くださると嬉しいです。 どうして今まで言わなかったのかというと、ネタと思われるかもしれないこの日を待っていました、ネタではないですよ、本当ですよ(笑) ※おまけ ※※ますます胡散臭いですが、携帯メモリ消えたのは事実です。 April 06, 2007リワーク用ホットエアー装置 WHA300リワーク(電子部品の半田を取り外したり、再び付けたりする作業)用の熱風が排気されるHot Air Rework Systemというものを購入してみました。この手のものはホビーユーザから見ると高価(5万円以上)だと聞き及んでいますが、ネットで探してみるとたまたま安いものがあったのでつい手を出してみたくなりました。 購入したのは半田ごてで有名なWellerブランド(日本だと代理店はゲスコ)でWHA300という製品です。送料込み、中古(だと思われる)、先端ノズルなし(これは元々別売りらしいです)で約150ドルでした。付属していない先端ノズルですが、DigiKeyで一部のノズルについてのみですが購入できることを確認しました。 購入したのはalltronicsというところで、機能的に問題がなければ非常にいい買い物ができたと考えています(あまりにも安いので結構賭けです)。届くのが楽しみです。 Wellerのホットエアー装置は、『実験室で使える表面実装型部品のリワーク手法』という記事でお勧めとありました。何をしようとしているかはこの記事から大体想像ができるかと思いますが、今まで半田ごてでなんとか凌いできた32ピンの某BGAパッケージの半田付けを楽に行えるようにしたいと考えています。購入したWHA300はラインナップされているノズルから判断するに主にQFP用で、BGA用ではないようなのですが、ホットエアーでBGAパッケージというと、LinuxザウルスのSDRAMの増設をされている先人もいらっしゃるので、高確率でやろうとしていることは成功するのではないかと考えています。 April 10, 2007GPartedでHDD丸ごとコピー
[Computer]
年度の切り替わりということもあり、パソコンが新調されました。そのため旧PCのHDDの重要なファイルを新PCに移し変えるという作業が発生したのですが、いちいち必要なファイルを探して、新HDDに移すとなると移し忘れが非常に怖いので、ここは新しいHDDを買ってきて丸ごとコピーという作戦でいくことにしました。 HDDの丸ごとコピーとなると、なんらかのソフトウェアを使う必要がでてきます。市販どころで有名なのはNorton先生などがあるようですが、当然今回の作業は一回こっきりのものなので有償製品を使う義理はありません。いつもどおり、無償で行きます。 対象のHDDの容量は80GBで、OSはWindows2000を使っていました。ということでパーティションはNTFSフォーマットです。前述の有償ツールはほとんどNTFSに対応しているようですが、無償のフリーウェアとなるとなかなかそうもいかないようです。しかし諦めることなく、検索を続けてみました。 探してみるとGPartedというパーティション操作用のGUIソフトがあることがわかりました。しかもCD起動用のイメージ(GPartedダウンロードページのLiveCD)も提供してくれています。 作業後に、新HDDを新PCに付け替え、起動しファイルが読めることを確認しました。おそらく正常にコピーが完了したのだと思います。GPartedの作業の最中になぜか数回エラーがでて、リトライを手動でしたのですが、結果オーライということであまり気にしていません。 最後に備忘録ですが、NTFSということなので新PCに入っている別のOSで、コピーしたファイルの所有権やアクセス権がめちゃくちゃになっていました。ファイルを扱う前に、複製でできた新HDDの所有権やアクセス権を再設定したほうがよいようです。 April 16, 2007mallocは関数の中ですべきか
[Computer]
C言語の行列ライブラリを訳あって書いていました。その中でふと思ったのが、今回の記事の表題にあるとおりで、結果を引数として指定されたポインタを通じて返す関数では、関数内でmallocするべきか否かという宗教じみた話です。 このことは特に、関数が場合によって異なるサイズの配列を返す場合で問題になると思います。 void caller_func(){
char input; char *outputs; int number_of_outputs; /* input に対して何か処理 */ callee_func(&input, &outputs, &number_of_outputs); free(outputs); } void callee_func(char *input, char *outputs[], int *number_of_output){ mallocを関数の中で使わないとすれば、外で大きめのメモリを確保して渡すことになります。 void caller_func(){
char input; char outputs[256]; int number_of_outputs; /* input に対して何か処理 */ callee_func(&input, outputs, &number_of_outputs); } void callee_func(char *input, char outputs[], int *number_of_outputs){ どちらがスマートでしょうか。入力と出力の関係が常に固定、あるいはそこまでいかなくとも予想が付くのなら、関数の外で大きめのバッファを用意するのがメモリリークの心配もなく良いと思います。しかし、文字列処理など一体最大の大きさがどの程度になるかわからないという場合は関数内でmallocという方法にも一利あると思います。 そこで師匠であるA氏に相談したところ、Cライブラリに沿うようにすれば、ということでした。これはmallocするもしないもどちらにも対応するようにする方法で、引数を見てNULLが入っていたらmallocでメモリを割り当てて、そうでない場合はmallocしないでバッファが外で確保されているとして処理する方法です。例題でいうとmallocを使う版において*outputsでスイッチにすることに相当し、コードで書くと次のようになります。 void callee_func(char *input, char *outputs[], int *number_of_output){
*number_of_outputs = (int)(random() * 100); if(!(*output)){*outputs = (char *)malloc(sizeof(char) * number_of_outputs);} /* (*outputs)[i] に対する何か処理 */ } なるほど、これなら使い分けられます。 April 20, 2007The Piano It's me
[Music]
のだめ(アニメ)のOPが良かったので、Suemitsu & The Suemitsu(リンク先は音が出るので注意)の1stアルバム『The Piano It's Me』を買ってみました。軽快なピアノっていいですね、自分の中ではかなり当たりでした。特に3トラックの『100 Strawberries』と14トラックの『Allegro Cantabile』がいいです。 興味がある方は、Stage6にある『Allegro Cantabile』のPVもどうぞ(動画が表示されない場合はCtrl+F5)。ピアノがかなり勿体ないことになっていますが。 April 23, 2007Super Sylphide 進捗状況(3) -- サーボ用基板オートパイロットシステム Super Sylphideですが、サーボとのインターフェイスをなす部分を作りました。実はこの先にFPGAがあって、そちらの方が本当の意味でサーボとのインターフェイスを担当するので、単なるサーボ用基板という名前にしておこうかと思います。
何のことはない、バススイッチ、5Vと3.3Vの双方向レベルシフタ(FPGAが3.3V)、あとC8051F530が載っているだけです。C8051はサーボの8chのパルス幅を監視し、オートパイロットがフェイルした際に手動に切り替える用に載っています。 Eagleの回路図と基板アートワークを置いておきます。詳しいことが知りたい方は是非見てみてください。Olimexで製造できるよう10milルールで作成してあります。 ※その後、DSPによる開発がスタートしました。 April 30, 2007アルビレオとエール
[Timely]
先日、高校の友人の結婚式に招待されてきました。新婚さん夫婦にはとても恐縮ですが、参加した観客のほうがとても盛り上がってしまったような気がします。ということで、そのときのことを記念に日記として残しておこうと思います。 続きをどうぞ。 続きを読む "アルビレオとエール" |
かれんだ~
スポンサード リンク
|