2015.12.23

ListView の Height は WRAP_CONTENT を避けるべき

もはや常識なのだろうけど、ListView の Height を WRAP_CONTENT にすると、
http://stackoverflow.com/questions/15232895/same-convertview-instance-is-passed-for-visible-views-in-cursoradapter
この問題が出てしまう。
自分は知らなかったのでメモ。

自分で ListView の Adapter を作る場合、Height を WRAP_CONTENT にすると、複数の position で同じ convertView で呼ばれてしまう。
直後に convertView = null で再度呼ばれるので、新たに view を作ることになり、通常は問題にならないが、画像とか時間かかるのを表示しようとすると、最初に呼ばれた時点で他の position と同じ converView の Pointer を 保持するように Thread を生成して画像取得しにいくので、画像取得後には保持した Pointer の先のを更新してしまい、他の position のを上書いてしまうことになる。 (tag に unique な ID を設定して上書きを避けてても最後に設定した unique ID は重なるので1つは上書いてしまう。)
(java では pointer とは言わないか。参照かな?)

昔から謎で、最初だけの問題なので wait 入れてごまかしていたが、Layout が確定するまでは同じ convertView が渡されてしまうのが仕様っぽいので、WRAP_CONTENT は避けるべき。

MATCH_PARENT なら違う position で同じ contentView で呼ばれることはなかった。

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

2010.09.27

プログラミングコンテストチャレンジブック

これおもしろい。
具体例が多いし、説明がわかりやすくて、安心できる。

自分のように GDD2010 のパックマンを楽しめた人(=簡単すぎてつまんないとは思わなかった方々)には、この本はお薦めだと思う。

過去のコンテストの問題が103問あって、解き方についてのわかりやすい解説がついてるので、すごく勉強になるよ!

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

2009.03.18

久しぶりに

昨日、久しぶりに言語な本を買った。

これ。

amazon 的には1人しか評価してなく、いまいちな感じがするのだが、読んでみると結構面白かったので買ってみたのだった。

#買ったのはヨドバシ。
#ポイント還元率の低い(3%)のをポイントだけで買うのがお得だよね。


でも、、、
今日、気付いたのだが、
http://gigamonkeys.com/book/
ここに全て公開されてるのね。。。;;
なんかすごくすごくがっかりでっした;;

英語苦手な私にとってはすごく助かるのだけど、読める方にとっては全く必要の無い本っぽいね。。。
#この前の TOEIC で、やっとうちの最低レベル(650)を超えた程度じゃ、
#この英語読むのは大変すぎるのだ。。。;;

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

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

2008.11.24

AVR-USB, hid-data

AVR-USB のサンプルの examples/hid-data のデータ転送速度を測ってみた。

サンプルのままだと、EEPROM の読み書きで遅すぎるので、単純に RAM 上の配列に読み書きするようにして測定してみた。
(ATTiny45 で内蔵OSC使って 16.5MHz 動作のもの。)


結果は、

128Byte * 1000回 の書き込みが 2652ms で 47.13KB/s
128Byte * 1000回 の読み込みが 5663ms で 22.07KB/s

8Byte * 1000回 の書き込みが 499ms で 15.66KB/s
8Byte * 1000回 の読み込みが 671ms で 11.64KB/s

でした。


理論的には、1.5Mbps / 8 = 187.5KB/s なので、実効で 100KB/s ぐらい出て欲しいと思っていたけど、ソフトだけでエミュレートしてるせいか、ちょっと遅かった。

コントロール転送で Feature Report を使ってデータ転送するという、ある意味裏技っぽい使い方してるのも遅い原因かな? 普通に、インタラプト転送すれば、もっと速いのかも???

まぁ、ちょっとしたパラメータを設定するだけなら、数バイト/s で転送できれば十分なので1000倍以上速いんだけどさ。

それにしても、書き込みの方が速いのが意外だったな。
読み出しは、「読み出すよ命令」を書き込んでから読み出してるってことなのかな?

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

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

2008.11.08

AVR-USB、Tiny45 の internal RC oscillator で動作!

AVR-USB のサンプルの hid-data を、Tiny45 で internal RC oscillator を使って動作させる事ができた!

AVR-USB の HP に、
> New: Internal RC Oscillator Supported
と書かれている通り、avrusb-20081022 では、internal RC oscillato がサポートされているはずなのだが、libs-device フォルダに入っているソースを使おうとすると、コンパイルエラーが出たりして、ちょっとハマっていたのだった。

結局、EasyLoggerのソースから一部を持ってくることで動作させる事ができました。


以下、詳細。

■hid-data/firmware/Makefile
 □DEVICE=atmega168 → attiny45
 □F_CPU=16000000 → 16500000
 □FUSE_L= → 0xe1 (make fuse で書き込まないのであれば関係無い)
 □FUSE_H= → 0xdd (make fuse で書き込まないのであれば関係無い)

■hid-data/firmware/usbconfig.h
 □USB_CFG_IOPORTNAME D → B (Tiny45 には PortB しかないからね)
 □USB_CFG_DMINUS_BIT 4 → 0 (適当な port でいいはず)
 □USB_CFG_DPLUS_BIT 2 → 2 (INT0 の必要があるのでそのまま)

 □/* #define USB_RESET_HOOK(resetStarts) ... */
  の代わりに
  -----
  #ifndef __ASSEMBLER__
  extern void usbEventResetReady(void);
  #endif
  #define USB_RESET_HOOK(resetStarts) if(!resetStarts){usbEventResetReady();}
  -----
  を追加

 □USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0 → 1

■hid-data/firmware/main.c
 □以下の2つの関数を EasyLogger の main.c から持ってきて追加
  (libs-device フォルダの中にもあるが、
   /**/ が2重になっててエラーが出たので、面倒なのでコピペした。)
   
   -----
   static void calibrateOscillator(void)
   {
    ...
   }
   
   void usbEventResetReady(void)
   {
    ...
   }
   -----

これで、USB Device として認識されました。


あと残りは 3 pin だけだけど、ADC で温度取得、PWM で電力制御、GPIO で回転数検出、の3つは出来るので、USB 制御可能なファンコントローラが作れそうだね。

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

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

2008.04.05

Visual Studio 2008 Professional Edition

を買ってきた。

Img_0300_2_2

Redmond の Microsoft Company Store で、社員の方に付き添ってもらったので、激安でした(^^)
普通に買おうとしたら10万円超えてるよね。これ。
当然ながら英語版しか無かったけど、VS2005 も英語版を使ってるので特に問題無いはず。

Microsoft Flight Simulator も欲しかったけど、これはマニュアルが英語だと、たぶん離陸さえも出来ないだろうと思ってやめといた。^^;; <色んなキー操作しないと、離陸できないよね?

ソフト以外は、社員が居なくても普通に入って買えるみたいだね。

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

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

2008.02.13

またしても先を越された

CPUMonitorMini Ver.0.20 をリリースした。
http://homepage1.nifty.com/salt/CPUMonitorMini.htm

新たに通信速度を表示する機能を付けたので、今週末まで一週間テストしてからリリースしようかと思ったのだが、、、

またしても、DevStatusBar に先を越されたことに気付き、急遽リリースしたのだった。 ^^;<ちょっと酔った勢いもあるかも?^^;

一番最初にリリースした時も、既に DevStatusBar に CPU 負荷を表示する機能があったみたいだし、 今回の通信速度の表示も、先週金曜夜のリリースで対応されていたのだった。(ここup0981.zip

で、よくよく見るとソースがついてて、CPU 負荷のところはサンプリングを細かくして、複数回前からの差分を取って表示する、 という処理をしていて、、、すげー、私にはその発想は無かった、、、負けた、、、という感じで、ちょっと呑み過ぎつつ、リリースしちゃいました。 ^^;

まぁ、3連休で、テストはしてるので、大丈夫でしょう。

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

 

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

2008.02.04

CPUMonitorMini Ver.0.10

CPUMonitorMini Ver.0.10 をリリースした。
http://homepage1.nifty.com/salt/CPUMonitorMini.htm
サイズ変更できるようにしたので、これで一段落した感じ。
なので、一気に Ver.0.10 に。

ついでに、tdFlashCard Ver.0.10 もリリース。
Today 画面で暗記カードっぽいことをするソフト。
http://homepage1.nifty.com/salt/tdFlashCard.htm
こっちは、年末からずっと使ってて、自分的には満足なので、1発目から Ver.0.10。

次はネットワークの転送量をグラフ化したいが、しばらくこのままかも?

はたして、Ver.1.00 まで続くだろうか。。。^^;

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

| | コメント (5) | トラックバック (1)

2008.01.27

CPUMonitorMini Ver.0.03

CPUMonitorMini Ver.0.03 をリリースした。
http://homepage1.nifty.com/salt/CPUMonitorMini.htm

ついでに、ホームページのデザインも変えてみた。
年末からちょくちょく修正してたのを、やっと置き換え出来たよ。

WYSIWYG なエディタをいくつか試したが、結局全部手書き。^^;
メニューとかバナーとかの共通部分は、Ruby スクリプトで一気に置き換えて対応。
こういうことができる WYSIWYG なエディタが見つからなかったのも、手書きになってしまった原因かも。

前のダサいデザインも10年使ったから、今回も10年ぐらい変えないのだろうな^^;
めんどうなんだもん。

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

 

| | コメント (2) | トラックバック (3)

2008.01.19

FillSolidRect()

CDC::FillSolidRect() は、CreatePen(PS_SOLID, ...) & FillRect() より高速とされている。

ので、いつも使ってたのだが、なぜか突然、なぜ高速なんだ?と疑問に思ってしまったので、MFC のソースを探してみた。

ら、なんと、ExtTextOut() でのテキストを描画するときの背景塗りつぶしを使って、空テキストを描画していることが判明。

Win32 SDK レベルのアプリで書くなら、

void FillSolidRect(HDC hDC, COLORREF clr, RECT *pRect)
{
  SetBkColor(hDC, clr);
  ExtTextOut(hDC, 0, 0, ETO_OPAQUE, pRect, NULL, 0, NULL);
}

こんな感じだね。

Windows Mobile でも高速なのだろうか?

そいえば、Android コンテスト始まってるのに、Windows Mobile で遊んでるな。。。^^;

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

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

より以前の記事一覧