Browsing "ソフトウェア"
2月 9, 2009 - ソフトウェア    コメントは受け付けていません。

週末にJavaではまったところ2カ所

Chen_20090208.jpg最初は単純に思えました。表示ページから、リンクをクリックして、添付資料をダウンロードする。
しかしよく仕様書を読むと、これをFTPで、しかもユーザとパスワードで接続して行う。
「ftp://username:password@server/directory」とかリンクを作ればできるけれど、これでは、パスワードが丸見え。
結局、FTPでテンポラリのファイルをダウンロードして、それをクライアントに返す、サーブレットを作ることに。
FTPはftp4jを使い問題なく、ダウンロードできる。
問題は、クライアント側でセーブするファイル名が日本語だと文字化けすること。
この問題の解決には、2段階のデバッグが必要でした。
まずは、URLEncodeされたファイル名を、サーブレットで正常に、getParameterで持って来れるか?
と、ファイル名をUTF-8で取得できたら、それを、「 response.setHeader( “Content-Disposition”, “attachment; filename=\”" + cnv_filename + “\”" );」で正常に「cnv_filename」を設定できるか?
結論から言うと、前者は、「String filename=new String(request.getParameter(“file_path”).getBytes(“8859_1″),”UTF-8″);」、後者は、「 String cnv_filename = new String(org_filename.getBytes(“SJIS”),”8859_1″);
」で解決しました。

2月 1, 2009 - ソフトウェア    コメントは受け付けていません。

コメントしてくれたみなさん、ごめんなさい

image_Alexei_20090201.jpgひょんなことから、「心のおもむくままに」にコメントしてくれた方から、承認されなくて、凹んだ、という感想をいただいて、おかしいなと思いながら、自分でも投稿してみると、表示されない。
通知メールも飛ばないし、管理画面のコメント一覧にも表示されない。ログにも残らない。
同じMTを使った他のブログではOKなのですが・・・。
なんとなく、キャプチャ機能を有効にしたときからのような気が・・・。
悩みました。テンプレートやモジュールの内容を、正常なブログと比較したりして、最後は、お金を払ってシックスアパートのサポートを受けようかとまで思いました。(商用ライセンスなのですが1年を経過しているので)
それでふと気がつくと、コメント一覧の右にフィルタのメニューがある。
もしやと思って、スパムコメントを選択すると・・・、出ました!
かなり長文の日本語のコメントもスパムになっていました。
対策としては、スパムの認識の強度を2から1に下げました。大量にスパムがたまっていたことも事実です。
キャプチャは関係なかったですね。人騒がせだなあ。
みなさん、本当にごめんなさい。

1月 24, 2009 - ソフトウェア    コメントは受け付けていません。

シミュレーターのNSIndexPathのリークはリークではない?

image_rusia20090124.jpgLeaksでのシミュレータの実行で、単純なTableViewの表示で32bytesのリークが。なんでもNSINdexPathのオブジェクトということ。
しばらく悩んだあげく、ネットで検索。
するとこんな記事が。
どうやら、シミュレーターでは、NSIndexPathの正確なリークは測定できないみたいです。

1月 23, 2009 - ソフトウェア    コメントは受け付けていません。

サンプルコードのバグを見つけた

image_russia20090123.jpg1日悩んだiPhoneアプリのメモリーリーク。
原因は、「The iPhone Developer’s Cookbook」のサンプルコード。
// Build a thumb image based on the grayscale percentage
id createImage(float percentage)
{
CGRect aRect = CGRectMake(0.0f, 0.0f, 48.0f, 48.0f);
CGContextRef context = MyCreateBitmapContext(48, 48);
CGContextClearRect(context, aRect);
// Outer gray circle
CGContextSetFillColorWithColor(context, [[UIColor lightGrayColor] CGColor]);
CGContextFillEllipseInRect(context, aRect);
// Inner circle with feedback levels
CGContextSetFillColorWithColor(context, [[UIColor colorWithRed:percentage green:0.0f blue:0.0f alpha:1.0f] CGColor]);
CGContextFillEllipseInRect(context, CGRectInset(aRect, 4.0f, 4.0f));
// Inner gray circle
CGContextSetFillColorWithColor(context, [[UIColor lightGrayColor] CGColor]);
CGContextFillEllipseInRect(context, CGRectInset(aRect, 16.0f, 16.0f));
CGImageRef myRef = CGBitmapContextCreateImage (context);
free(CGBitmapContextGetData(context));
CGContextRelease(context);
return [UIImage imageWithCGImage:myRef];
}
これでは、myRefのRelease時期を逸してしまう。
正確には、こうあるべき。
// Build a thumb image based on the grayscale percentage
id createImage(float percentage)
{
CGRect aRect = CGRectMake(0.0f, 0.0f, 48.0f, 48.0f);
CGContextRef context = MyCreateBitmapContext(48, 48);
CGContextClearRect(context, aRect);
// Outer gray circle
CGContextSetFillColorWithColor(context, [[UIColor lightGrayColor] CGColor]);
CGContextFillEllipseInRect(context, aRect);
// Inner circle with feedback levels
CGContextSetFillColorWithColor(context, [[UIColor colorWithRed:percentage green:0.0f blue:0.0f alpha:1.0f] CGColor]);
CGContextFillEllipseInRect(context, CGRectInset(aRect, 4.0f, 4.0f));
// Inner gray circle
CGContextSetFillColorWithColor(context, [[UIColor lightGrayColor] CGColor]);
CGContextFillEllipseInRect(context, CGRectInset(aRect, 16.0f, 16.0f));
CGImageRef myRef = CGBitmapContextCreateImage (context);
free(CGBitmapContextGetData(context));
CGContextRelease(context);
//return [UIImage imageWithCGImage:myRef];
UIImage *img = [UIImage imageWithCGImage:myRef];
CGImageRelease(myRef);
return img;
}

1月 16, 2009 - ソフトウェア    コメントは受け付けていません。

1週間の成果

image_postes20090116.jpgiPhoneアプリ開発で進展あり。
iPhoneの外にデータを取り出せないと諦めていたのですが、SyncDocsというオープンソースがあって、これを使えばできる。
iPhone側のサンプルアプリと、Windows側、Mac側のサーバーが提供されています。
USBは使わないで、Wi-FiとBonjourでHTTPを使っているようです。
Mac側のサーバーで確認したのですが、少しおかしいところもありますが、まずまず大丈夫そうです。
最初はPDFで取り出そうとしたのですが、問題がいくつかあって、JPEGで取り出すことにしました。フォトライブラリに追加する場合と違って、高解像度の画像が取り出せます。
PDFでの問題は、グラフィックコンテキストを使ってテキストを描画する場合、日本語が化けること、選択できるフォントが「Helvetica」のみらしいこと、Wrapなどの折り返しが自動ではできないこと、などです。
解決法をかなり時間をかけて調べたのですが、ユーザがその都度指定する文字列を日本語でPDF化するのは、今のところ困難と判断。
iPhone側のサンプルの改造で、難航して1日かかったものの、動作するようになりました。
1歩前進です。

12月 22, 2008 - ソフトウェア    コメントは受け付けていません。

アルゴリズムの見直し

image_dogAndcat20081221.jpgiPhoneで、画面にブロックを配置するアルゴリズムを見直し。
総合試験で、テストしていると、思いもかけなかったようなバグがいろいろと出てきます。
テストに関して言えば、バグが見つからなかったテストは失敗ですし、安定度が増しているということですからこれはいいことなのでしょう。
1月リリースは少し難しいかな、という感じです。念には念を入れたいですし。
スタートが遅かったことが悔やまれます。これが7月とか、いやSDKが出た時点で始めていれば、もっとタイムリーにリリースできたのですが。
これがコードアニマートのビジネスモデルの1つになるかどうかは、ユーザーの反応によります・・・。
大手は採算が取れなくて撤退するのでは、というのが私の予想です。Microsoft参入のニュースもありましたが。

12月 12, 2008 - ソフトウェア    コメントは受け付けていません。

進捗中

image_pumpkin20081213.jpg昨日、今日と、それぞれ1日がかりで、バグの修正。
不思議なもので、最初は見当もつかず、これは果たして解決できるんだろうか?と思っていたバグが、最後には解決してしまう。
どんなに理不尽に見える現象でも、必ず、原因があるはずです。
XcodeにはLeaksを初めとして、便利なツールがいろいろと用意されているが、場合によっては、原因となるコードを指し示していないこともあるし、そうなると、推理と試行錯誤です。
今回は、どちらもメモリーリークがらみ。
今日のは、解放してはいけないメモリーを解放してしまい、スタックの内容を壊してしまった模様。
こうなると、何が起こっても不思議ではない。原因のコードを特定しようとする努力も無駄な努力となる。
努力のかいあって、だいぶ安定してきました。

12月 10, 2008 - ソフトウェア    コメントは受け付けていません。

今日は若干の進捗

dogs_20081210.jpgiPhoneアプリ開発は、昨日からメモリ・リークの確認に入って、だいたいはバグが取れたのですが、どうしてもわからないところがあって、imagepickerのところです。ネットを検索していたら恐ろしい記事に出会った。Appleのバグであり、imagepickerを7回、起動・終了を繰り返すとcrashすると。だから、imagepickerはシングルトンとして使うべきだと言う。シミュレータでは10回やったが、大丈夫でした。実験された方は、iPhone 2GでOSは2.1だということで、その違いかもしれません。
今日、参考になったサイトは、まず、メモリ・リークの対処方法、次にimagepickerのバグについて
それから財務省から、法人企業調査の依頼というか、指示(答える義務があるとのことですので)があったのですが、資料を読んで笑ってしまった。オンラインで回答できるのですが、そのときの必要システムが、一番新しいもので、Windows XPとIE6.Xだと。3年くらい冬眠していた人が作ったのではないかな。リップ・ヴァン・ウインクルですな。日経の記事を読んでいても行政のやり方には、呆然とする。事故米を青く染めないのは、その方法が安上がりで大きな予算を要求できないからだと言う。
と、愚痴を書いたので、何かいいニュースはないかと探したのですが、Radio.Meowingsのリスナーの方で、以前、パイロットだったという方からメールをいただいたことでしょうか。外にスピーカーをつけて大音量で聴いておられるとのこと。ただただ恐縮です。

12月 8, 2008 - ソフトウェア    コメントは受け付けていません。

うまくいかない日

image_wedding_20081206.jpg毎日、同じような意欲とモチベーションを持って仕事をしていても、うまくいくこともあれば、うまくいかない日もある。
画面の遷移で、遷移先のViewのレンダリングに時間がかかるので、プログレスバーを出して、進捗状況を見せたいと思いました。
最初の関門は、プログレスバー(アクションシートの上)が遷移先のViewの表示とともに一瞬だけ表示される現象。
これは、アクションシートの表示直後に、RunLoopを1回だけまわしてやることで、遷移元の画面にアクションシートが表示されるようになった。
[self presentSheet];
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:(1)]];
このときに、プログレスバーを更新するタイマーを設定するのですが、次にこのタイマーのイベントが全く処理されない。
タイマーを別スレッドで実行するべきか、などと考えているのですが、非同期でタイマーを処理するという、以下の方法では、ダメでした。
nstimer=[NSTimer scheduledTimerWithTimeInterval: 1.0 target: self selector: @selector(incrementBar:) userInfo: nil repeats: YES];
[[NSRunLoop currentRunLoop] addTimer:nstimer forMode:NSDefaultRunLoopMode];
このModeがMacOSのオプションで、iPhoneにはないものがあって、これを指定できればできそうなんですがね。
[[ NSRunLoop currentRunLoop ] addTimer: nstimer forMode:NSModalPanelRunLoopMode];

11月 30, 2008 - ソフトウェア    コメントは受け付けていません。

VMWare Fusionには少し失望

VMware_20081127_1_t.jpg
VMware_20081127_2_t.jpg
VMWare Fusionで、Vista起動後、数時間でネットワーク接続ができなくなり、Macの再起動が必要になる件、アクト2でも現象を把握していました。
なんでも、仮想マシンに割り当てたメモリの他に、Mac側のメモリも使用していて、しかもファイルのオープン・クローズ等を多数繰り返すと、Mac側のメモリを食いつぶしていって、まず、Windowsの動作が遅くなる、次にMacの動作が遅くなる、ついにはフリーズするというもの。
私の場合は、Vista側の重い処理といえば、OutLookで180のメールアカウントについて、15分おきに、サーバーに読みにいくというもの。
これで6-7時間でMacのリセットが必要になります。
がっかりです。他の点では完璧なソフトなんですが。
サポートの話では原因は、Macのメモリ管理にあるということを匂わせました。はっきりとは言わなかったですが。いずれにししてもバグとは認識していない模様。
対処方法はメモリを増やすか、リセットするか・・・。
メモリはもう目一杯だし。
VMWareの次のバージョンアップに期待です。

ページ:«1234567...27»