プログラミングとか日常とかの覚書っぽいなにか
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
現在、Objective-Cの勉強がてら、iPhone向けのTwitterクライアントを作ってみるなどという挑戦をしているので、メモ書き程度につらつらとご紹介。
Twitterクライアントを作ると言っても、OAuth認証などの専門的で面倒な部分を自分で実装するほどの気力はないので、既存のライブラリを使っていこうと思います。 iPhoneアプリの開発なのでMacが必要です。 開発環境(XCode, iOS SDK)はすでにインストールされているものとします。 (2012/06/19) iOS5/ARC対応版の記事を書きましたので、そちらを参照してください。この記事の内容は古いです。 PR
ソフト開発の技術書には、パフォーマンス最適化について書かれているものも多いですが、そこで必ずと言っていいくらいに述べられているのが、「コードを書く時点から最適化をしない」「手を加える前にまずパフォーマンスを測定せよ」ということです。
「プログラムの処理にかかる時間の80%はコード全体の20%の部分が占める」という、いわゆるパレートの法則に則り、まず測定によってプログラムの実行時間の大半を占めるわずかな部分のコードを割り出して、そこを集中的に改善しましょう、というのが定説です。 コードの測定には通常、プロファイラと呼ばれるツールを使います。 プロファイラは、どの関数がどのくらいの時間実行されていたか、何回呼び出されたかなどの方法を収集して解析し、ボトルネックとなっている部分を探すことができるものです。 VC6.0時代にはプロファイラが標準機能として存在したのですが、なぜかVC.NET 2002以降、標準ではプロファイラがなくなってしまったようです。 VCで使えるフリーのプロファイラというと、以前にCompuwareという会社が「DevPartner Profiler Community Edition」という無償のプロファイラを公開していて、VC.NET 2003やVC2005などで使えたのを記憶しているのですが、最近はどうやらダウンロードできなくなっているようですね。(まぁ、これは無償のVC2005 Express Editionでは使えなかったんですけどね。) そこで、VCで(できれば無償で利用できるExpress Editionで)利用可能なフリーのプロファイラがないかどうかというのを探してみました。 そしたらあるじゃないですか、しかも本家本元のマイクロソフトがちゃんと用意してくれてました。 というか、こんな形で公開するなら最初から一緒にしておいてくれればいいのに。 ということで、マイクロソフトが公開しているプロファイラを使ってプロファイルを行う方法を簡単に紹介しておきます。ここでは、ビルド環境としてVisual C++ 2008 Express Edition (SP1) を使っています。 2011/07/05 Visual C++ 2010 の場合の方法を追記しました。
最近はちょっとAdobe Flash Builderの体験版をインストールしてFlex AIRアプリを作っていたりします。とりあえずTwitterクライアントなどに取り組んでみています。
アプリ製作中にDataGridのセルにHTMLテキストを表示させる手順について調べましたので、メモ書き程度に。まぁ、HTMLテキストといっても簡単なタグしか使えないものですが、見栄えを整えるにはそれで十分かと。 DataGridで実際にセルに表示されている部分のコンポーネントはitemRendererで決定されるようです。DataGridで通常使用されているDataGridItemRendererの代わりに、HTML形式文字列を表示できるタイプのコンポーネントを作ってやればOKだろうと推測を立ててみました。 しかも、通常のDataGridItemRendererを調べてみるとTextFieldの派生ではありませんか! ということは、何とかしてテキストをitemRendererの htmlText プロパティにセットしてやることができればうまくいくはずです。 ということで、試行錯誤を重ねて出来上がった DataGirdItemRenderer の派生クラスが以下。
validateProperties() をオーバーライドして htmlText をセットしてます。それだけです。詳しい原理は知りませんがまぁその辺はキニシナイ。 (パッケージ名がないじゃないか!とか、その辺もキニシナイ。まぁ慣れないもので。) で、実際にDataGridを作成する際に、このクラスを DataGridColumn の itemRenderer プロパティに設定するなり、 DataGrid の defaultDataGridItemRenderer (こちらはFlex 4.0の新しいものかしら。)に指定してやるなりして、あとは通常のテキストの代わりにHTML形式のテキストを渡せばよしということで。 ちなみに、この状態だと <a> タグでリンク先をブラウザで表示させたりとかイベントを発生させたりがうまく働かないようです。 調べてみたところ、上で作成した DataGridItemRenderer の selectable を true にすれば良いようです。 が、実際に試してみてちょっと私の目的には合わなかったのでそちらは却下。 ここでも詳しくは触れませんのであしからず。
ネットワーク通信を使用するプログラムなどでは、設定ファイルやユーザー入力でテキスト形式(ドット区切り)のIPv4アドレス(例えば「192.168.1.15」など)を使用することが多いです。この場合、プログラムでは、文字列が有効なIPv4アドレス形式であるかどうかを判定し、さらには4バイト整数形式のアドレスに変換しなければならないと思います。
その方法でパッと思いつくのが「inet_addr」関数を使用する方法。 正しいIPアドレス文字列を渡せばそのアドレスの4バイト整数値が戻り値として返されますし、フォーマットが正しくなかったりすれば戻り値は INADDR_NONE になりますからね。 しかし、昔は私も使ってたこの方法、割と厄介な(?)問題を含んでいるので、ここに記しておきます。
2011/12/12 リンク切れ修正しました
とりあえず現状までできてるものを公開。 HGIMG3を使用することを前提としたもので、Easy3Dは未対応です(無理やり使うことはできるけど。ただしHSP3.2添付のではなく最新のEasy3Dが必要なので注意)。 GPLの関係でEXEを含めるのは割と困難っぽいので、HSPはソーススクリプトのみ。 https://blog.cnobi.jp/v1/blog/user/e9eed2fc6f221b3e7b6d681b962b9f91/1323698466 Readmeのハンドル名から私の素性がばれそうな気もしないでもないですが、そこは内密に、内密に。 |
プロフィール
HN:
はむぱい
職業:
ソフト作ったりしてる人
Twitter
カテゴリー
最新CM
[06/09 replica rolex oyster perpetual datejust]
[06/09 bracelets imitation cartier love]
[06/09 replica the oyster perpetual datejust]
[06/09 datejust rolex oyster perpetual]
[06/09 replica gold love bangle]
カレンダー
ブログ内検索
あ~いい漢字
|