2011年11月18日金曜日

Ubuntu 11.10でFreeNXを実行する

他の方も書いていらっしゃいますが、Ubutnu 11.04からアップグレードするとFreeNXサーバーは消されます。仕方が無いので、Launchpadから持って来て入れようとするのですが、上手く入ってくれない。

仕方が無いので、NoMachineのFreeNXサーバーを入れました。
が、クライアント(Windows 7)で壁紙しか表示されない(悲)。Unitiy-2Dがクライアントのプリセットに無いからなんですよね。

gnome-session --session=ubuntu-2d

customの設定で、こいつをパラメータに入れてやって下さい。それとDesktopですよ、必ず。

Windowにすると、Unitiyのツールバーのボタン分のWindowが、そしてツールバーが...。そうするとNX Serverをkillして再度起動しないと復旧できませんでした。

とりあえず、この環境で無事にRDP環境は復旧しましたが、posfixやらapacheやら、GalleryやらBacularやら、まだ直さないと行けない設定が無数にあり、ちょっとしょげ気味。

sambaが不調だったのですが、現在はすこぶる快調。何が悪かったかはもう分からない(汗)。

Money Lookのデータ移行

Money Lookについてはアプリケーション版(With Yahoo!)を利用していたのですが、こちらが契約満了にて配布も終了。

アプリ版のデータバックアップは割と簡単で、再インストール時にデータをリストアする場合には、あらかじめインストールした先のフォルダの「User」フォルダ毎バックアップしておいて、再インストールした後、このフォルダをバックアップしたもので上書きするだけでOKだったのです。

このアプリ版にはWeb版への移行ウィザードがあり、こちらで簡単に?移行は出来る(た)のですが、OSの再インストールをしたときには偉いことになります。


というのも、Web版はパスワード類(ログインする)はクライアント側、口座データはクラウド側に保管されているらしく、OS再インストール後に口座にはアクセスできるのですが、更新が出来なくなるというパターンに。

そう、パスワードデータはOSを消す前にエクスポートしておらず、アプリ版の移行用データしかなかったため、なかなか一筋縄ではいかず苦労しました。口座データが登録されていると改めてパスワード情報を取り込めないのです。

仕方が無いので、全ての口座データを消そうとするもこれもけっこう面倒なことに。まぁ、はあはあ言いつつやりましたよ。その後はWeb版の方のパスワードデータをエクスポートしてバックアップ。

その後またOSの再インストールをしたのですが、中々インポートしてくれない(悲)。ログインマネージャ?だかをインストールするときにはブラウザをちゃんと閉じましょう。


2011年5月15日日曜日

がーん

どこを探してもソースコードが残っていなかった(悲)。

いつもなら、Sky Driveとか、Gmailに大体バックアップを入れておくのに....。

再度1からの作成です。まぁ、そのおかげで画面デザインのアイディアも浮かんだし、まぁ、いいとしよう。

2011年5月3日火曜日

実は

PCの調子が悪くなり、再インストールをしたのでした。
バックアップをとっていたつもりが、マイドキュメントや、Program Filesに入れないアプリケーションのフォルダがバックアップ対象に入っていないということに後になって気づきました....。

そう、TvRockの設定やら、Eclipseやら、IEのお気に入りやら...。

かなり泣きが入りました。


昨日無事にEclipseまではインストールが終了。連休明けにでもBD-Rにバックアップしよう。

2011年5月2日月曜日

日経ソフトウェア6月号特集1

普段は購入したことが無かったが(立ち読みは何度かあるけど)、
結構な移動時間のお出かけがあったので、日経ソフトウェア6月号を買ってみた。

今回の特集1「HTML5でiPhone/Android アプリケーションを作ろう!」
これは、JavaScriptとHTML5でWebアプリケーションを作るっていう記事。

画面表示はユーザーがCSSでちゃんと定義してね~、とか、
Webアプリケーションはどうしてもネイティブアプリよりも遅くなるよ~、とか、

そう。特集1ベースでWebアプリを作れば、WebOSのアプリケーションになっちゃうわけです。そしてWebOSであれば、Webアプリ自体がネイティブアプリな訳で、デメリットはない。

あと、WebOSであれば、Widgetがあるので、CSSでごりごり書く必要も無いと。
WebOSのアプリを書いて、それをiPhone, Androidに移植してあげるのが良いのかもねぇ。

2011年4月12日火曜日

ちょっとネタ切れ

仕事が忙しくなってしまい、なかなかアプリに時間が割けない。


来週からはまた時間が取れそうな気配。

2011年4月8日金曜日

Developer Memberになってみた

個人で(趣味で)Developerとなる場合は、

  1. Name on Tax ReturnとCompany Nameは自分の名前。
  2. Type Of Ownershipは Sole Proprietor / Individual
  3. Country Of Tax Residencyは日本
  4. Tax Reference Numberは日本にはないので、0を9個入れた。
  5. Business Typeは Non-US business


Type Of Ownership:Sole Proprietor / Individual
とすれば良いと思う。Form W-8BENはおそらくHPから送付してくると思われる。
こちらに日付とサインを入れれば大丈夫なはず。

http://www.option-dojo.com/st/w-8ben.htmlを参考に作成すればいいと思う。

2011年4月7日木曜日

デフォルトのシーン

WebOSのアプリケーションはapp-assistant.js→stage-assistant.jsとスクリプトが進んでいき、どちらかのスクリプトの中で、~.prototype.setup()でsceneがpushされる。

sceneについては、sources.jsonにて設定してる名称で呼ばれるわけだが、sceneをpushしていなくても、mainからなるmain-assistant.jsとmain/main-scene.htmlがあれば、それが表示される。

単一のsceneのアプリケーションであれば、mainでsceneを作って行っても良いとは思うが、あとあと追加していく可能性の方が強いし、sceneについての説明を兼ねて、main以外を使っても良いかと思う。

2011年4月6日水曜日

とりあえず、画面は出来てきた。

幾分イメージとはまだ違うが。
とりあえず、画面に表示させたいものが出てきたので、第一段階はクリア。

次はメニューとダイアログを作る。

2011年4月5日火曜日

sources.json

HTMLで
<script src="hogehoge.js" type="text/javascript" ></script>
<script src="hogehoge2.js" type="text/javascript" ></script>
的なJavaScriptロードしまくりなページもありそうだが、WebOSではsources.jsonで、必要な時にロードするような設定が出来るし、推奨されている。

[
 {
  "source": "(パス)/hogehoge.js"
  "scene":"(利用されるシーン名)"
 },
 {
  "source": "(パス)/hogehoge2.js"
  "scene":["(利用されるシーン名A)","(利用されるシーン名B)"]
 }
]
とするだけ。Sceneが設定されていないのはアプリケーション全体で使う物だと思う。

IMEの方もぼちぼちやっています。

本屋でJavaScriptの本読みふけってみた。
あそこの記述はそういうことなのね、ということは非常に良く分かりました。

で、結論として、AjaxIMEはマルチブラウザ対応のためにかなり処理を入れている。

WebOSはWebkitなので、Gekkoの友達ということで、Firefoxの処理だけにシェイプアップしようと思っている。

どこでもAjaxIMEの大体の処理

  1. 既存ページに対してテキストエリアを探す。
  2. テキストエリアがあったら、テキストエリア内がCSSで書式が設定されていれば、その書式設定をコピる。
  3. キーボードのスキャンを行って、ローマ字toかな変換を行っている。ここが重要な気がする。
  4. かなで表示されている文字列をURIでAjaxaIMEの変換エンジンのURLに送ると、候補を返してくる。
  5. 候補から変換したい文字を選んで確定。
とりあえずは3.までの処理をWebOSで上手く作動させてやりたい。とりあえずは3だけでも。

4.についてはAjaxIMEの作者さんはMeCabで変換エンジンを作っている模様なので、こいつのローカル版を作ってやれば良い感じ。何となくそのアイディア、というか作者さんのお膳立てはされている。

2011年4月4日月曜日

メニューの出し方

結局、メニューすらWidgetの一部な訳だった。stage-assistant.jsに以下の行を書き込む。
(要するにアプリ起動時のJavaScript)


(アプリケーション名).MenuAttr = {omitDefaultItems: true}; //標準のメニューを一端削除

(アプリケーション名).MenuModel = {
     visible: true,
     items: [
          {label: "About (アプリケーション名)...", command: "do-about(アプリケーション名)"},//他にもメニューに加えたいなら、 label:とcommand:で加えていく。
          Mojo.Menu.editItem,
          Mojo.Menu.prefsItem,
          Mojo.Menu.helpItem
     ]
};

あと忘れてはいけないのは、メニューで選択された場合の処理。prototype.handleCommandで定義しておく。

StageAssistant.prototype.handleCommand = function(event) {
    if(event.type == Mojo.Event.command) {
        switch(event.command) {
            case "do-about(アプリケーション名)": //他のメニューを作った場合はcase が増える。
                var currentScene = this.controller.activeScene();
                currentScene.showAlertDialog({
                    onChoose: function(value) {},
                        title: "(アプリケーション名) — v#{version}".interpolate({
                        version: (アプリケーション名).versionString}),
                        message: "Copyright xxxx",
                        choices:[
                            {label:"OK", value:""}
                        ]
                });
            break;
        }
    }
};
 メニューを作成したSceneの-assistant.jsに、以下の行を書き込む。

this.controller.setupWidget(Mojo.Menu.appMenu, (アプリケーション名).MenuAttr, (アプリケーション名).MenuModel);

これで大丈夫なはず。

2011年4月3日日曜日

sceneが上手く出来上がらない。

うーん、何が行けないのか。思うように表示が出来ない。

(30分後修正)
あれ?出来た(笑)。

this.controller.setupWidget()

の後ろにすぐイベントハンドラーを書いちゃうとだめみたい。どうしてかは分からないけど。

あとはCSSで体裁を整えるだけだな。


2011年3月31日木曜日

IMEは一休み

とりあえず、Widgetの使い方が今ひとつ理解できていないので、
割り勘ソフト(GoDutch)を作ってみることにする。

WebOSアプリは小さい画面で以下に情報を詰めるか。
これが肝になるが、Widgetを上手く使うことで、スマートかつ情報入力を適切に出来るはず。

そして、この画面構成がもっとも気を使うのだろうと思う。


メイン画面:割り勘する支払金額入力、人数入力、リスト[メンバー名(任意)、負担比率、負担金額]

  1. リストは人数入力によって行を作成。
  2. または、リスト最下行+Add...ボタンで追加→人数カウントを増やす。
メンバー入力ダイアログ:デフォルトではmenber-1、負担比率は人数等分となるようにしておく。負担比率をメンバー増やしてもロックしたい場合があるので、ロックボタンもつける。負担金額の入力も出来るようにする。

 
金額入力、負担比率はテンキー方式で表示できると良いかな。

負担比率(デフォルト)(%)=100/メンバー数 

ロックされた比率がある場合の負担比率(%)=(100-(ロックされている比率合計))/ロックしていないメンバー数

負担金額=(支払金額-(ロックされている支払金額合計))×負担比率(%)/100

ということだから、

totalPayment    //整数、まぁ、100万円位までで良いかな?初期値は0
numOfMember  //整数、1~20人ぐらい、初期値は1

memeber[].name  //str、defaultはmember x(xはリスト順)
member[].rate                      //整数、端数切り上げ、1~100(%)
member[].lockedRate   //整数、1~100(%)、FlagOfLockedRateがFalseの場合には、rateを代入。Trueの場合には、lockedRateをrateに代入。初期値は0。

member[].payment              //整数、端数切り上げ
member[].lockedPayment   //整数、1~100(%)、FlagOfLockedPaymentがFalseの場合には、Paymentを代入。Trueの場合には、lockedPaymentをpaymentに代入。初期値は0。

member[].flagOfLockedRate //論理値、true || false
member[].flagOfLockedPayment //論理値、true || false

numOfLockedMember //整数、0~numOfMember, lockedRate== "true" となる数をカウント
member[].rate
// flagOfLockedRate=="false"
=(100-[flagOfLockedRate=="true"となっているlockedRateを合計])/(numOfMember-numOfLockedMember)   
// flagOfLockedRate=="true"
=lockedRate

member[].payment
// flagOfLockedPayment=="false"
=(totalPayment-[flagOfLockedPayment=="true"となっているPaymentを合計])*member[].rate/100
// flagOfLockedPayment=="true"
=lockedPayment

あとはリスト数字が動くイベントの都度、フラグの確認とrate, paymentを算出すれば良いかな?

メイン画面はリスト外:totalPaymentとnumOfMemberが、リスト内:name、rate、payment

2011年3月29日火曜日

ipkファイル

WebOSのアプリケーションパッケージはipkでipkgというのだそう。基本的にはdpkg(Debianの)のサブセットらしい。kimuxさんのipkgを作るにはにZarus用パッケージの作り方として紹介があるので、かいつまんで説明すると、

  1. インストールするアプリケーションの絶対パスにてtar.gz(tar+gzip)化した圧縮ファイルがdata.tar.gz
  2. インストール情報等の制御スクリプト類をtar.gz(tar+gzip)化した圧縮ファイルがcontrol.tar.gz
  3. control.tar.gz無いにはパッケージ管理情報controlファイルは必ず必要。それ以外にインストールスクリプトや、アンインストール時のスクリプトを入れることが出来る。
controlの書式はWebOSではもしかしたら違うかも....。ipk作るコマンドが普通はあるみたいなので、あとでSDKとか調べてみる。

WebOSでAjaxIMEは

動きます。ただし、AjaxIME for Kindle版ですが。

KindleもWebkitだから、でしょうね。差分は1カ所だけなのですが、今ひとつ理解できていません。
ただ動くことは動くと。

あと肝心なこと。AutoCapsは解除しないと変なことになります。PalmOSの時もそうだったけど。
今回はPreferenceで設定できるだけ親切ね。

2011年3月28日月曜日

DOM と JavaScript

GeckoとWebkitは比較的JavaScriptとして近しいということだったので、AppleよりもMozillaかなということで、MDNに行って調べてみた。最初は英語で読んでいたが、よく見たら、日本語もあるのでした。

DOMはJavaScriptの中で使う部品、DOMをどう動かすかを示すのがJavaScript。解説のページによってはごっちゃになっているページもあった。厳密に言えば、DOMへのアクセスはJavaScript以外でも行けるので、分けて考える必要があるわけだが、ことWebOSの基本的なアプリケーションを考える上で、要するにSDKだけ使う上では、ごっちゃでも良かったり(汗)。

とりあえず、MDNは日本語で詳しく記載されていて良い。

2011年3月26日土曜日

Palm Pre Emulatorの日本語化

日本語化ソフトはミニーさんが公開しているのでそちらを利用させていただく。

Palm PDKにNovatermと同等のTerminalソフトが入っている。PDKのショートカットにはputty.vbsが入っているが、Windows7 64bitではどうもエラーが出てうまくいかない。やっている作業は単純に以下のバッチファイルを実行しているだけだった。

Palm Pre Emulatorを起動した上で、

C:\Program Files (x86)\Palm\PDK\bin\DeviceShell.bat

を実行する。すると、ルートログインされ、/var/home/rootディレクトリがホームディレクトリとなる。

あとは先のミニーさんのページに示されている、webOS 2.1.0 の場合の通りに実行する。

Localize210.shの中身は、wgetでLocalize210.zipをwgetして、ルートディレクトリで展開するスクリプト。
Localize210.zip自体はミニーさんのブログ(ローカライズ作業とは何だ)に書いてあるとおり、string.json(ボタンやメニューの表示に用いる)の英日の対応作業とビュー(htmlファイル)の日本語翻訳作業したファイル類を各アプリのフォルダ無いに存在する、resorcesディレクトリのjaフォルダ下に格納したもの。

ちなみにこの作業だけでは、日本語にはならない(ちょっとしばらく悩んだ)。

Mini’s Japanese Quick Setup Ⅱを実行する必要がある。locale_P102UEU.txtという、ロケールを/etc/palm/内のlocale.txtと置き換えている。おそらくver 1.xx系列では/usr/lib/luna/customizationにもlocale.txtがあったようだが、ver 2.xx系には無い模様。これでPreferenceのRegional Settingsのロケールで日本語が選択可能となる。

このシェルスクリプトはその後時刻表示の設定(日本語表記)と、日本語表示を変にするフォントをDisableしている。

まぁ、要するに普通のVer 2.1.0のデバイスと同じことをやれば良いだけ。ここまでやったら、Emulator側でも、ターミナル側でも良いので再起動。再起動した後に、PreferenceのRegional Settingsのロケールで日本語を選んで再起動すれば無事に日本語化が完了する。

とりあえずひらがな入力まで

AjaxIMEを参考にひらがな入力までやってみようと思う。

漢字変換もMecabを利用させてもらうのが簡単かな?
でもそうすると完全にmecab-skkserv for WebOSだな。

ある程度実装できたら、作者さんに連絡した方が良いのかもしれない。

...でも、今までに最後まで行ったことないんだよなぁ、自分(恥)。

2011年3月25日金曜日

AjaxIMEさん

JavaScriptとBookmarkletには感動した。

JavaScriptでローマ字→ひらがな変換までを実行して、ひらがなをサーバーサイドで変換している。

サーバーではMecabで形態素解析して漢字変換、その結果を戻すということみたい。

もじもかさんも変換はWebのAPIに出しているんだよなぁ...。

ひらがな漢字変換部分をなんとかPreの中に入れたいのですが。

どこでもJavaScriptで入力できるようにする

AjaxIMEより。JavaScriptが含まれていないページにJavaScriptを盛り込む関数ね。ちなみに、urlは盛り込みたいScriptの保存場所を記す。
function JSONRequest(url) {
  this.url_ = url;
  this.parent_ = document.getElementsByTagName('head').item(0);
  // headで示された行の内容
  this.obj_ = document.createElement('script');
  this.obj_.setAttribute('type', 'text/javascript');
  this.obj_.setAttribute('charset', 'utf-8');
  this.obj_.setAttribute('src', this.url_);
  // <script type="text/javascript" charset="utf-8" src="(引数であるURL)" >
  this.parent_.appendChild(this.obj_);
  //JavaScriptであるようにコードを追加。
}

JSONRequest.prototype.remove = function () {
  this.parent_.removeChild(this.obj_);
}
WebOSの日本語入力を考える。

  1. キーボードのスキャンはSDLライブラリに任せる。PDKでのサポートがあるから。
  2. 2.詳細な記述はUIMのソースを利用させて頂く
  3. 3.日本語への変換はanthyを利用する。
1,2が上手くいけば、3は別のシステムでも良いかと思っている。とりあえずはUIMのソースコードを見てみる。

あと、PDKのサンプルコードはVisual Studioでコンパイルできるのは分かったが、もうちょっとSDK側の理解が必要みたい。平行してSDKでのアプリケーション作成も進めてみる。

2011年3月24日木曜日

IMEを作るのなら、SDLを学ぶわけね。

まずはSDLでキーボードのキースキャンを学ぶわけですな。

 X-Window Programming
http://www-yano.is.tokushima-u.ac.jp/~mituhara/software_e/sdl.html

こちらのソースコードをベースに作業することになるのね。
あれ?意外に簡単にキーボードは行けそうだな。

キースキャンするPlug-inがアプリケーションをロードすればIMEとして行けるのかな?



#include <stdio.h>
#include <SDL/SDL.h> /* SDLを用いるために必要なヘッダファイルをインクルード */
/* SDLを用いるために,関数の引数を次のようにする*/
int main(int argc,char *argv[]){
 SDL_Event event; /* SDLによるイベントを検知するための構造体を宣言 */

 /* 無限ループ */
 while(SDL_PollEvent(&event)){
   /* イベントタイプ別に動作させる */
   switch (event.type) {
    /* キーボードが押された場合の処理 */
    case SDL_KEYDOWN:
     printf("Key Pressed\n");
     printf("--- The pressed key is %s.\n", SDL_GetKeyName(event.key.keysym.sym)); /* 押されたキーの名前を表示 */
     /* 押されたキーごとに処理(イベントのIDはevent.key.keysym.symに格納されている) */
     switch(event.key.keysym.sym){
      case SDLK_RETURN:
       printf("You pressed RETURN key.\n");
       break;
      case SDLK_ESCAPE:
       printf("You pressed ESCAPE key. This means EXIT.\n");
       exit(-1);
       break;
      default:
       break;
     }
     break;
    /* キーボードが離された場合の処理 */
    case SDL_KEYUP:
     printf("Key Released\n");
     break;
    /* 終了 (^C)が押されたときの処理 */
    case SDL_QUIT:
     SDL_Quit(); /* SDLの停止*/
     exit(-1);
     break;
   }
  }
 }
}

2011年3月22日火曜日

WebOS始めます

出来るかどうかはともかく、今日からWebOS始めます。

今日学んだこと。

WebOSの基本。
  1. アプリケーションはJavaScriptで作成される。
  2. ようするに、Google MapとかGmailみたいなAjaxとかそういったものを活用したものだ。
  3. Mojo Frameworkというライブラリで、JavaScriptベースながら、Local Storageにもアクセスできる。
でも、今やりたいことはIMEを作りたいこと。
これから調べてみます。