最近Androidアプリの開発を始めましたが、素晴らしいサイトを見つけたので、紹介します。
Andriodのコンテントプロバイダで使えるURI一覧
ずっと探してました。ありがとうございます!
2010年6月30日水曜日
2010年6月23日水曜日
EXCELVBAの性能改善
EXCELマクロで、ワークシートに文字列を書き込むときの性能についてです。
実際ぶち当たったのですが、なぜか6セル分を書き込むだけで3秒程度かかる事象が起きました。
はっきりとした原因は不明なのですが、おそらくデータのあるセル範囲(アクティブレンジ)が多すぎると、書き込みに時間がかかるようです。
※ScreenUpdatingやAutoCalculate等は当然OFFにして実行しています。
対策として以下のようにしました。
・改修前(遅いパターン)
・改修後
これにより性能が約100倍くらい早くなりました。(※処理によります)
推測ですが、WorkSheetオブジェクトのCellsプロパティやRangeプロパティは実は時間がかかる処理なのかもしれません。索引を使っているだろうから早いと思っていたのに…。
実際ぶち当たったのですが、なぜか6セル分を書き込むだけで3秒程度かかる事象が起きました。
はっきりとした原因は不明なのですが、おそらくデータのあるセル範囲(アクティブレンジ)が多すぎると、書き込みに時間がかかるようです。
※ScreenUpdatingやAutoCalculate等は当然OFFにして実行しています。
対策として以下のようにしました。
・改修前(遅いパターン)
for i = 1 to 10
for j = 1 to 10
Cells(i,j).value=cstr(i+j)
next j
next i
・改修後
dim values(10,10) as variant改修後は、毎回セルに値を設定するのではなく、2次元配列に値を設定しておき、配列をセル(レンジ)に一回で設定する。というものになります。
for i = 0 to 9
for j = 0 to 9
values(i,j) = cstr(i+j)
next j
next i
Range(Cells(1,1),Cells(10,10)).value2 = values
これにより性能が約100倍くらい早くなりました。(※処理によります)
推測ですが、WorkSheetオブジェクトのCellsプロパティやRangeプロパティは実は時間がかかる処理なのかもしれません。索引を使っているだろうから早いと思っていたのに…。
2009年10月25日日曜日
iPhoneでキャプチャ禁止
iPhoneのSDK3.0からカメラ用APIが色々追加されたと聞きました。
いくら探してもキャプチャを取れなくするAPIは公開されていません。
カメラ付きケータイが禁止されている会社もあるのに、なぜ非公開なのでしょうか。疑問です。
ソースコードなどを書くとまずそうなので、方法だけ載せます。
まず前提として、iPhoneはシングルタスクで稼動する。ということがあります。
そして、非公開APIを含めて実現できること。
カメラロールに入っている画像の撮影時間を取得すること。
カメラロールに入っている画像を削除すること。
ということはつまり、
1)アプリ起動時の起動時間を保持しておく。
2)アプリ終了時に(起動時間≦撮影時間)の画像を全て削除する。
とすれば、アプリ起動中にキャプチャした画像は亡き者になります。
※OSアップデートによって実装できなくなる可能性もあります。
ちなみにOS3.1.2ではこの方法がうまくいくことが確認できました。
いくら探してもキャプチャを取れなくするAPIは公開されていません。
カメラ付きケータイが禁止されている会社もあるのに、なぜ非公開なのでしょうか。疑問です。
ソースコードなどを書くとまずそうなので、方法だけ載せます。
まず前提として、iPhoneはシングルタスクで稼動する。ということがあります。
そして、非公開APIを含めて実現できること。
カメラロールに入っている画像の撮影時間を取得すること。
カメラロールに入っている画像を削除すること。
ということはつまり、
1)アプリ起動時の起動時間を保持しておく。
2)アプリ終了時に(起動時間≦撮影時間)の画像を全て削除する。
とすれば、アプリ起動中にキャプチャした画像は亡き者になります。
※OSアップデートによって実装できなくなる可能性もあります。
ちなみにOS3.1.2ではこの方法がうまくいくことが確認できました。
2009年10月14日水曜日
xfireでSOAP
最近仕事でjavaのSOAP通信にxfireというライブラリを使い、どつぼにハマった。
ドキュメント類も一切ないので、これから使う人のためにメモ。
xfireとは:
次世代のSOAPフレームワーク。各種標準をサポートしており、扱いやすいAPIを通じてSOA開発のアプローチを実現する。
※このフレームワークというのがポイント!
使い方
①SOAPサーバ側にxfire設定ファイル(services.xml)を、WEBアプリの以下のパスに配置されるようにする。
WEBルート/classes/META-INF/xfire/services.xml
services.xml
②SOAPサーバ用xfireライブラリをクラスパスに入れる。
③web.xmlにxfire定義を追加する。
web.xml
④WEBアプリをデプロイ
注意点
①SOAPクライアントとしてxfireを使用するときは、SOAPサーバ側もxfireでなければならない。
②SOAP通信に用いるインタフェースは、クライアント側とサーバ側で同じパッケージにしなければならない。
ドキュメント類も一切ないので、これから使う人のためにメモ。
xfireとは:
次世代のSOAPフレームワーク。各種標準をサポートしており、扱いやすいAPIを通じてSOA開発のアプローチを実現する。
※このフレームワークというのがポイント!
使い方
①SOAPサーバ側にxfire設定ファイル(services.xml)を、WEBアプリの以下のパスに配置されるようにする。
WEBルート/classes/META-INF/xfire/services.xml
services.xml
<bean>
<service>
<name>WebServiceName</name>
<serviceclass>com.oboegaki.servers.TestService</serviceclass>
<implementationclass>com.oboegaki.servers.Test</implementationclass>
</service>
</bean>
②SOAPサーバ用xfireライブラリをクラスパスに入れる。
③web.xmlにxfire定義を追加する。
web.xml
<web-app>
<servlet>
<servlet-name>XFireServlet</servlet-name>
<display-name>XFire Servlet</display-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet>
④WEBアプリをデプロイ
注意点
①SOAPクライアントとしてxfireを使用するときは、SOAPサーバ側もxfireでなければならない。
②SOAP通信に用いるインタフェースは、クライアント側とサーバ側で同じパッケージにしなければならない。
2009年10月9日金曜日
2009年9月26日土曜日
iPhoneのAPNs
最近仕事でiPhoneを使った業務システムの開発を行った。
社内PCからiPhoneへ向けたメッセージを送信するのに、
apple社のAPNs(Apple Push Notification service)を使用したので、
覚えたことをメモ。
・APNs番号について
APNs番号とは、iPhoneのデバイスIDとアプリケーションのBundleIdentifierが紐付けられた、端末を一意に特定するための番号。半角英数で64文字。
APNs番号の作成タイミング:iPhoneアプリからappleAPNsサーバに初回アクセスに行ったとき、appleAPNsサーバで発行し、iPhoneアプリに戻してくる。
・プロビジョニングプロファイルとプロバイダ証明書について
プロビジョニングプロファイルは、開発用(Development)と商用(Production)が存在する。
それぞれ違いはあるが、注意すべきは、Productionが有効になっている場合、Developmentは無効になるということ。つまり、Production登録したあとは、iPhoneアプリに食わせるプロビジョニングプロファイルも、プロバイダサーバに置く証明書(pemファイル)も、Production版の証明書をキーチェーンからExportして使用しなければならない。
おそらく、APNsサーバ内で制御しているのだろう、APNsのテスト機(gateway.sandbox.push.apple.com)へアクセスしても、反応してくれなくなる。
参考:
iPhoneアプリで稼げるのか:PushNotificationの実装方法
Push Notification 用フレームワーク
社内PCからiPhoneへ向けたメッセージを送信するのに、
apple社のAPNs(Apple Push Notification service)を使用したので、
覚えたことをメモ。
・APNs番号について
APNs番号とは、iPhoneのデバイスIDとアプリケーションのBundleIdentifierが紐付けられた、端末を一意に特定するための番号。半角英数で64文字。
APNs番号の作成タイミング:iPhoneアプリからappleAPNsサーバに初回アクセスに行ったとき、appleAPNsサーバで発行し、iPhoneアプリに戻してくる。
・プロビジョニングプロファイルとプロバイダ証明書について
プロビジョニングプロファイルは、開発用(Development)と商用(Production)が存在する。
それぞれ違いはあるが、注意すべきは、Productionが有効になっている場合、Developmentは無効になるということ。つまり、Production登録したあとは、iPhoneアプリに食わせるプロビジョニングプロファイルも、プロバイダサーバに置く証明書(pemファイル)も、Production版の証明書をキーチェーンからExportして使用しなければならない。
おそらく、APNsサーバ内で制御しているのだろう、APNsのテスト機(gateway.sandbox.push.apple.com)へアクセスしても、反応してくれなくなる。
参考:
iPhoneアプリで稼げるのか:PushNotificationの実装方法
Push Notification 用フレームワーク
登録:
投稿 (Atom)