2010年6月30日水曜日

Andriodのコンテントプロバイダで使えるURI一覧

最近Androidアプリの開発を始めましたが、素晴らしいサイトを見つけたので、紹介します。

Andriodのコンテントプロバイダで使えるURI一覧

ずっと探してました。ありがとうございます!

2010年6月23日水曜日

EXCELVBAの性能改善

EXCELマクロで、ワークシートに文字列を書き込むときの性能についてです。
実際ぶち当たったのですが、なぜか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
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
改修後は、毎回セルに値を設定するのではなく、2次元配列に値を設定しておき、配列をセル(レンジ)に一回で設定する。というものになります。

これにより性能が約100倍くらい早くなりました。(※処理によります)
推測ですが、WorkSheetオブジェクトのCellsプロパティやRangeプロパティは実は時間がかかる処理なのかもしれません。索引を使っているだろうから早いと思っていたのに…。

2009年10月25日日曜日

iPhoneでキャプチャ禁止

iPhoneのSDK3.0からカメラ用APIが色々追加されたと聞きました。
いくら探してもキャプチャを取れなくする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
<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日金曜日

Android

Google Androidが気になっている。
iPhone嫌い、ってかapple嫌いの私は必然的にGoogle好きになってしまった。

というわけでAndroidケータイHT-03Aを買うべく、まずはアプリを作る。

これからアプリ作成日記を書こうと思う。

2009年9月26日土曜日

便利なスキル

社会人教育にはめったに出てこない、新人に教えたい便利なスキルを列挙。

・EXCEL VBA

・UNIX/Linux シェルスクリプト

・Ant

・VBScript/JScript

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 用フレームワーク