パスワードを忘れた? アカウント作成

jjkingさんのトモダチの日記みんなの日記も見てね。 最新から新しい日記やタレこみを確認できますよ。

187149 journal

jjkingの日記: BREWアプリで設定値を保存する 5

日記 by jjking

BREWのアプリで設定値を保存する方法について、

ISHELL_SetPrefsで保存、ISHELL_GetAppPrefsで取得をする
関数のプロトタイプは、

int ISHELL_SetPrefs (
        IShell * pIShell,
        uint16 wVer,
        void * pCfg,
        uint16 nSize
);

int ISHELL_GetAppPrefs (
        IShell * pIShell,
        uint16 wVer,
        void * pCfg,
        uint16 nSize
);

で、以下のパラメータを設定する。

  • pIShell - IShell構造体へのポインタ
  • wVer - バージョン番号(何を指定するか謎。書く側と読む側で一致させておけばよい?)
  • pCfg - 保存・取得する構造体へのポインタ
  • nSize - pCfgの示す構造体のサイズ

使い方は、まずアプリ設定値を入れる構造体を定義して、

typedef struct _myAppPref {
        int value1;
        int value2;
} myAppPref;

static myAppPref m_appPref;

アプリの開始時に設定値の読み込み、終了時に書き込みをするようにイベントハンドラに記述した。

switch (eCode)
{
    // App is told it is starting up
    case EVT_APP_START:
        if (ISHELL_GetAppPrefs(pMe->a.m_pIShell, 1, (void*)&m_appPref, sizeof(myAppPref))
                == AEE_SUCCESS) {
            DBGPRINTF("読込成功: value1=%d value2=%d", m_appPref.value1, m_appPref.value2);
        }
        else {
            // 最初の起動時など設定が無いと失敗するので初期値をセット
            DBGPRINTF("設定値がありません");
            m_apppref.value1 = 1;
            m_apppref.value2 = 2;
        }
        break;

    case EVT_APP_STOP:
        if (ISHELL_SetAppPrefs(pMe->a.m_pIShell, 1, (void*)&m_appPref, sizeof(myAppPref))
                == AEE_SUCCESS) {
            DBGPRINTF("書込成功");
        }
        else {
            DBGPRINTF("書込失敗");
        }
        break;
    ...
  }

この方法が正しいやり方かはサンプルコードを見たことがないのでなんともいえないが、とりあえずシミュレータ上で期待通りに動いてはいる。ただ、エラーの処理はコードを見てもう少しきちっとしないといけないのだろなーという予感。

設定値はWindowsXP上のシミュレータでは以下ファイルに保存されるようだ。
ファイルを削除するとアプリ全ての設定値が存在しない状態になる。
アプリごとに消したりはできないのだろうか?

C:\Program Files\BREW 4.0.1 SP05 Ja\bin\priv\prefs.dat

VISTAの場合だとVirtual Storeが働くので以下ファイル。

%USERPROFILE%\AppData\Local\VirtualStore\Program Files\BREW 4.0.1 SP05 Ja\bin\priv\prefs.dat

175239 journal

jjkingの日記: Virtual PCのゲストOSからホストのファイル参照が重い

日記 by jjking

Virtual PC 2007 を使って次のような環境で運用中

  • ホスト: Windows VISTA SP2 (64bit)
  • ゲスト: Windows XP SP3 (32bit)

Virtual PCの「共有フォルダ」の機能を使ってホストのファイルシステムをゲストから参照しているのだが、ファイルアクセス時にCPUに大きく負荷がかかる。そしてアクセス速度もものすごく遅い。ウイルス対策ソフトが怪しそうなので一時的にOFFにしてみたいのだが会社側で強制設定されているみたいでOFFにできないのがつらい。他に何が原因なのか今のところ不明。Google先生に聞いてもそれらしいのが今のところ見つかっていない。

161158 journal

jjkingの日記: 中国からのアクセス

日記 by jjking
外向けサーバーでTomcatをあげていると、58.221.28.231 というアドレスから数時間おきに / にアクセスがくる。ルートにはダミーのHTMLがおいてあるので問題は無いとは思うが、なにを狙っているのやら・・気持ち悪い。
151505 journal

jjkingの日記: SQL Azure 使ってみる

日記 by jjking

MS のクラウドデータベースSQL Azureをうごかしてみた。今年頭にMS Tech Daysに参加して、そのとき大々的に取り上げられていたので興味はもっていたが、最近やっと登録をして使ってみた。どんなものなのかというとリモートにあるSQL Serverといった感じだった。ただしhostingと違うのはDBの物理構成などは表には見えず意識をしなくて良い、DB本来のサービス部分だけを利用すればいいという感じである。

SQL Azureの登録はLive IDがあれば以下からできる。

http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx

登録してしばらくすると自分のサーバーを有効にするための手順がメールで送られてきて、そのとおり進めるとSQL Azureの管理画面にたどりつける。ここではデータベースの作成などごく簡単な管理ができる。デフォルトではmasterデータベースだけあるが、ここにはテーブルが作れないようなので、適当な名前のデータベースを新規で作っておく。

テーブルの作成やデータのメンテは、別途ツールを使う必要がある。
手元にSQL Server 2005が入っているマシンがあったのでコマンドラインI/Fのosql.exeを使ってみた。以下の書式で接続できる。{ServerAdmin}と{ServerName}には管理画面から参照できる値を使う。{DBName}は管理画面で作ったデータベース名。実行するとパスワードをきかれるのであらかじめ登録したものを入れると接続完了。

osql -U {ServerAdmin}@{ServerName}  -S tcp:{ServerName}.ctp.database.windows.net -d {DBName}

とりあえずテーブルを作ってみる。

create table mytable (
    pid integer not null,
    name varchar(20) not null
)
go

データを入れる。

insert into mytable values(1, '山田')
go

エラーで怒られる・・・

Msg 40054, Level 16, State 1, Server SQL Data Services, Line 1
Heaps can not be replicated tables. Please create a clustered index for the table.

どうやら、cluster indexを作れといっているようなので作成する。

create unique clustered index idx_mytable1 on mytable(pid)
go

これをした後で、もう一度insertを実行すると今度はうまくいったようだ。

select * from mytable
go

上記コマンドでちゃんと入っているか確認してみる

pid         name
  ----------- --------------------
           1 ??

名前が化けている・・・ 日本語を入れるには何かもうひとつ必要らしいが、今日はここで終了。

145961 journal

jjkingの日記: Google App Engine使ってみる

日記 by jjking

出た当初は Python だけをサポートしていたように思うが、Javaでも開発ができるようになっているとは知らなかった。Javaの場合 Eclipseのプラグインが出ているためものすごく簡単にWebアプリが作れる。以下その手順。

  1. まずはGoogleアカウントを取得
  2. アプリ管理画面 http://appengine.google.com/ へ行き、Application ID を取得。無料の範囲では10個までしか作れない。またこのIDはユニークでないといけないので他の人がすでに使っているものだとだめ。
  3. Google Plugin for Eclipseを入手する。Eclipseのソフトウエア更新のダウンロードサイトに以下を追加する。ダウンロード可能なモジュールが3つほど出るのですべて選択する。
    • Eclipse 3.3(Europa)の場合: http://dl.google.com/eclipse/plugin/3.3
    • Eclipse 3.4(Ganymede)の場合: http://dl.google.com/eclipse/plugin/3.4
  4. プラグインがインストールされたら、Eclipseの新規プロジェクトで Web Application Project を選びプロジェクト作成。(サンプルとして簡単なフォームアプリを含む)
  5. プロジェクトのプロパティ Google→AppEngine の Application ID に取得した Application IDを設定
  6. プロジェクトを右クリック →Google→Deploy to App Engine で App Engine にアプリが設置される。
  7. ブラウザで http://{取得したApplication ID}.appspot.com/ にアクセスする。簡単なサンプルのアプリが実行される。

サンプル動かすだけならこれだけです。詰まることなく10分くらいで動かせてしまった。

ちなみにプロジェクトについてくるサンプルはこんな感じです。(メッセージは少し変えてます)
http://kuma-soft.appspot.com/

仕組みとしてはサーブレットベースの何らかのフレームワークになっているのだと思うが、また追々見ていきたいと思います。

136839 journal

jjkingの日記: iTune Windows 64bit版 2

日記 by jjking

Apple は昔はMacユーザーでもあり好きなベンダであったのだが、最近は気に入らないことが多い。

iPhoneのOSをバージョン3にあげようとしたら「iTuneの最新版が必要です」と言われる。で、Appleの日本のサイトにいき「今すぐダウンロード」のボタンからiTune8をダウンロードしインストールしようとすると、「お使いのOSには64bit版が必要です」とダイアログが。

たしかに、日本のiTuneダウンロードページには「64ビット版Windows Vistaは、iTunes 8 64ビットインストーラが必要」を小さく書いてあるが、これを落とすためのリンクがどこにも無い。また、ブラウザを見て32/64bitの自動判別をして合ったほうのインストーラーが自動で提供されるとのことだが、自分のブラウザではうまく動かないようだ。

Google先生に聞いて掲示板とかからたぐっていくと、やっと見つけました。米国のダウンロードページにわかりにくいが64bit版のリンクがありますのでここから落としましょう。

http://www.apple.com/itunes/download/

135875 journal

jjkingの日記: jrunscript

日記 by jjking

J2SE6に付属しているスクリプト実行エンジンの対話シェル。デフォルトだとECMAScriptが起動する。
何が便利かというと、bcコマンドのように対話型計算機として使える

js> 3*4
12.0
js> 100*20 + 10
2010.0

sin,cosなどの数学関数はMathクラスに定義されているようだ(これはjava.lang.Mathを参照している?)

js> Math.PI
3.141592653589793
js> Math.sin(Math.PI)
1.2246467991473532E-16

あれ・・・? 誤差があるが、ちょっとした計算ならこれで十分
windowsでcygwin入れなくても使えるのがとてもうれしい

128881 journal

jjkingの日記: VISTAでファイルを握っているプロセスを調べたい 2

日記 by jjking

前に、ファイルを握っているプロセスを調べる WhoLockMeについて書いたがVISTA未対応らしい。そこでこの手のソフトで唯一VISTA対応といわれているUnlockerを使って見ることに。

ダウンロードしてインストールするとエクスプローラーでの右クリックメニューに "Unlocker"が追加されるはず。なのだがされない・・・

入れたいのは VISTA x64 なのだが、これはx64には未対応なのか?

128254 journal

jjkingの日記: Windows Search SDK 1

日記 by jjking

Windows VISTAでは Windows Searchという検索サービスが搭載されている。XPとかで別に入れると使えるようになるWindowsデスクトップサーチのAPI互換な進化版のようである(間違っていたらすまん)。
機能の詳細はWikipediaをみていただくとして、APIを使えば自作プログラムからもこの機能を使うことができる。

以下、SDKの入手からVisual Studio 2005を使ってサンプルを実行するまでの手順。Windows VISTAでは動いたがXPだと追加で何か必要かもしれない。

1. Windows Search 3.x SDK をダウンロードする。
この中にはWindows Searchの.Netライブラリアセンブリ1つとサンプルコードが入っている。

2. ダウンロードしたexeを実行すると展開先を聞かれるので適当な場所に展開。

3. 検索のサンプルをビルドしてみる Windows Search 3x SDK\Querying\DSearch の中の DSearch.sln を Visual Studio 2005 で開く

4. メニューの ビルド→ソリューションのビルド を実行しビルドする。DSearchディレクトリに bin\Debug\DS.exe が生成される

5. DS.exeはコンソールアプリなので、コマンドプロンプトを開き Windows Search 3x SDK\Querying\DSearch に移動

6. 検索キーワードに検索したい文字列をいれ以下を実行すると、検索が実行されその文字列を含むファイル一覧がコンソールに表示される。

bin\Debug\DS.exe "検索キーワード"

127721 journal

jjkingの日記: _tprintf

日記 by jjking
Visual Studio 2005 Win32コンソールアプリにて_tprintf (UNICODE版)を使うときは最初にロケールの設定をすること。

#include <locale.h>;
...
_tsetlocale(LC_ALL, _T(""));
_tprintf(_T("こんにちは世界\n"));

しないと日本語が出ない。

typodupeerror

Stay hungry, Stay foolish. -- Steven Paul Jobs

読み込み中...