2009/09/30

デザインを変更


 今までのものも良かったのですが、ブログのデザイン(テンプレートですが)を変更しました。最新記事のサマリーはスクロールしないと見えなかったのですが、最低限スクロールしなくても分かる様になりました。やっぱりシンプルなものが良いですね。写真も効果的に使えるので、今後は画像が多めになるかもしれません。

参照サイト

 今月末が最初の締め切りのgunjouですが、只今最終デバック中です。終了次第、wikiに文法や使い方を掲載予定です。



2009/09/29

Mophie Juice Pack Air iPhone 3G (1)


 電池が予想以上に持たないiPhoneですが、その薄さやデザインを犠牲にしてしまう為、いままでケースに入れて我慢していました。とはいいつつ、出先で電池が切れてしまう事もあるので、これを買いました。

 装着した感じですが、画像の様にDocomo D905iと同じ位の厚さになります。この位の方が手にしっくりなじんでGoodです。更に(On/Off出来る)バッテリーが内蔵されているので、電池残量が無くなってきた辺りでOnする事も可能です。

 ちなみに、画像内のAirプチプチはかけたわけではないです。PuchiPuchi開発用に買ってきたプチプチが、ロールごとあって持て余し気味です。


2009/09/28

Mac OS X Snow Leopard (3)



 早速、Snow Leopardでgunjouの開発を再開しているのですが、Xcode(3.2)のインタフェースも若干変わりました。

 エラーが出た場合には行間にエラーメッセージが出ていたのですが、今度は図の様に行の横に出る様になりました。行間に出た時は感動しまくったものの、その後の編集時にエラーメッセージが邪魔で編集できない事もしばしば。バージョンを重ねるごとに使いやすくなっていて、とても感謝です。

 ところで、Qt4.5はSnow Leopardに対応していない為、ビルド時にwarningが沢山出ます。今のところ実行に不便はありませんが、要注意です。

2009/09/24

Mac OS X Snow Leopard (2)

 今日はちょっと暑かったのですが、MacBook Pro(Late 2008だが、17inchなのでユニボディでは無い)がいつにも増して熱いような気がします。Leopardでは底面の熱さ対策でFan Controlを使っており、Snow Leopard移行でそれがなくなったと言う理由があるかもしれません。

 でも、日中は熱くてキーボードをタイプしたくないと思う程熱かったです。この時間でもうっすら汗をかいてしまうので、やはり何かありそう。OSの動作としてはかなりいい感じなのですが、Leopardに比べメモリを多めに使用しているみたいで全般的に熱くなる傾向があるのでしょうか。

2009/09/23

Mac OS X Snow Leopard (1)


 発売から一ヶ月。しばらく静観するつもりでしたが、別件でApple Storeで買い物をするついでに購入しました。

 こっち見んなと言われそうですが、Snow Leopardです。そしていつもの様にアップグレードせず、クリーンインストールしました。バックアップの対象にならない項目って、使わないかもしくは参照頻度が極端に低いものなので、私はいつもクリーンインストールする様にしています。

 とは言いつつもプロジェクトページは極力稼働させておきたいので、

  1. VMwareをインストール
  2. バックアップしておいた仮想マシンファイルを読み込み
  3. 起動

を実行して、OS X Server 10.5は再稼働させました。こういう時は仮想マシンって便利ですよね。他の設定については長くかかりそうなので、続きは後で投稿します。

2009/09/18

Qtで言語を作る (5.5)

 まさかの第5.5回です。第5回ではWindows版について少し触れたのですが、gunjouのソースコード確認用も含めて改めてWindowsにQtSDK入れてみました。

 MinGWもインストーラーに同梱されており、QtSDKのインストール(10分位)のみで開発環境が揃いました。Qt4.0位の頃は、MinGWのインストールやWindowsのSDKのバージョンが合わないとかで時間を取られましたが、かなり良く仕上がっています。

 これなら費用や保守も軽そうなので、学生用の教材にも使えそうな気がします。ちなみに、Windows版のQtCreatorは日本語対応してました。


2009/09/17

Yahoo! BB 光 with フレッツ (3)

 これって即企画終了したやつですよね(第2回)。そうなのですが、今日ポストを覗いてみたら

Yahoo! BB 光 with フレッツ お申し込み内容確認書

が届いていました。オヤ? 、と言う訳で早速電話をしました。

  1. NTTでは申し込みキャンセルされました。
  2. ですが、申し込み確認書が届いてますよ。
  3. web上で申し込み出来る様になっているのは何故よ。

を尋ねました。結論としては、プロバイダ業務は出来る(受付可能)ものの、NTT側での準備が出来ていないとダメ。3については、電話からの申し込みの場合、受付時にNTT側の準備状況をその場で確認してくれるのだそうです。答えにはなっていませんが、申し込みは電話でした方が確実のようです。

 電話対応してくれた方も親切だったので、これはこれで良い経験だったという事にしましょう。

2009/09/16

Qtで言語を作る (5)

 前回迄はQtのAPIを使用した単語の解析方法を解説したのですが、実際にコンパイルしてから実行する迄の解説をしていませんでした。ので、今回はQtのインストールとライセンスについても触れたいと思います。

Qtを入手する
 Qt : Downloads からLGPL/Free版を選択、各プラットホーム用にバイナリがありますので自分の使用したい物をダウンロードします。



今回はMac版のSDKをダウンロードします(その間にOSのDVDに同梱されている、Xcodeをインストールしてください)。本日時点では、qt-sdk-mac-opensource-2009.03.1.dmgですので、イメージをマウント後QtSDK.mpkgを起動します。インストール後は、


の様に/Developer/Applications/Qt/内に各バイナリが出来ます。後は、QtCreatorを起動すれば一通りの事は確認出来る様になります。他のプラットホームの場合ですが、Windows版はMinGWのインストール、Linux版はソースコードからのビルド(2,3時間位)が必要になります。

コードを確認する
 QtCreator起動後 File - New...を選択すると、プロジェクトを作成する画面が出ます。


Qt4 Console Applicationを選択後、OKを押してプロジェクト名を入力します。その後は特に設定せず、最後にOKを押します。するとプロジェクトが開きますので、main.cppをダブルクリックするとソースコードが表示されますので、


6行目に3回目,4回目のコードを貼付けて実行すると確認出来ます。この図の中のsample.proはプロジェクトファイルで、以降QtCreatorで編集する際にはこれをダブルクリックするとプロジェクトが開きます。また、どうしてもXcodeで使いたい方は、コンソールからプロジェクトファイルがある場所に移動し、

$ cd 対象のフォルダ
$ qmake -spec macx-xcode

とすると、*.xcodeprojが作成されますので、それからXcodeを起動する事も出来ます。

ライセンスについて
 Qt4.5からLGPL版のライセンスが追加になりました。この類いのお話は下手に英訳をすると大変な事になるので、コチラを参照ください。参考とは書いてありますが、株式会社SRAではQtの商用(Commercial)版の取り扱いをしていますので、間違いは無いかと思います。と言う訳で、単刀直入に言うと

ソースコードを公開しなくても、商用版の作成OK。

となります。実際の所、gunjouはQt4.5を使用していますがリポジトリを通してソースコードを公開していますし、企業が利益を得る為に使用するのであれば、対価(お金)を払っても良いのではないかと思います。

 と言う訳で、今回はQtのインストールからライセンスについてのお話をしました。次回は国際化関連のお話をしようかと思います。

2009/09/11

My Redmine (1)

 プロジェクトページでも使用しているredmine + subversionですが、国内法人で商用ホスティングサービスが始まりました。


無料期間中にも少し使ってみて良さげだったのでサービス開始を待ちわびていたのですが、ついに2009/09/07から正式サービスを開始したそうです。ご利用プランを見てみると、

ちょっとお高め

な気がしました。subversion無しのコミュニティープランで1,500円/月、1リポジトリでプロジェクト数に制限が無いものは8,000円/月です。プロジェクトとリポジトリは対だと考えたいので、値段を無視しても厳しい感じがします。プラグイン等の個別のカスタマイズは別料金との事。

 うーん、年間5,246円の魅力にはかなわないかなぁ。(2)があるかどうかちょっと微妙です。

2009/09/10

Qtで言語を作る (4)

 3回目では、正規表現について解説をしました。この表現を使う事で、単語の定義にマッチしているかしていないかが簡単に分かるのでした。

 今回は、について話を進めようと思います。前回の正規表現を使いつつ、テンプレートクラスの使い方も解説します。肝心の文の定義ですが、このようにしたいと思います。

  1. 単語から始まる。
  2. 単語と単語の間は、ホワイトスペースで構成される。
  3. ホワイトスペースは、スペース( ),タブ(\t),改行(\nと\r)の繰り返しで構成される。
  4. 文の最後はピリオド(.)で終わる。

この例を当てはめると、This is very gunjou. のように、各単語の間にホワイトスペースが挿入された文体になります。

 実際にプログラム内部で展開する際には、各単語を抽出し、それが何を意味しているかまで解析をする必要がありますが、今回は単語の抽出迄やる事にします。簡単なアルゴリズムとしては、

  1. ホワイトスペースが表示される迄先頭から検索。
  2. どれかのホワイトスペースが現れたら、先頭から文字を抽出。
  3. 2の位置からホワイトスペースで無い文字が現れる迄検索。
  4. ホワイトスペースで無い文字が現れたら、その位置を先頭とする。
  5. 1-4を繰り返し。

となると思います。きっとループが2つ出来て、分岐もそれなりに出来そうな気がします。更に、抽出した単語をストックしておく為の入れ物も必要になりそうです。挙句の果てに、This is very 群青. とか入力された日には1byte文字以外についても処理出来る様にしなければなりません。

いや、出来ませんって(ioi)。

と思いますが、これを3行でやりましょう。では、サンプルです。

QString s = "This is very gunjou.";
// QStringListはQStringをリストで扱う。
QStringList sl;
// "ホワイトスペースの繰り返し"を正規表現で指定
sl = s.split( QRegExp("(\\s|\t|\r|\n)+") );
s = sl.at( 0 ); // "This"
s = sl.at( 1 ); // "is"
s = sl.at( 2 ); // "very"
s = sl.at( 3 ); // "gunjou."

いかがでしょうか。splitメソッドは、正規表現(でも可)で指定された値を区切りとして、その間にある文字列を抽出しQStringの連結リストを返します。これでコメントと確認用の後ろ4行を抜かせば、実質3行で上記の1-5が出来ました。文字列内の"gunjou"を"群青"にしても正常に動作します(場合によっては文字コードの変換が必要かもしれません)。

 後は、そのリストを順に抽出して確認すれば安心です。確認には3回目の方法を使うとして、連結リストから取り出す方法が必要ですね。以下サンプルです。

foreach( QString t, sl )
{
QRegExp e( "^[A-Za-z_]{1}[A-Za-z0-9_]*$" );
t.contains( e ); // true or false?
}

foreachはコンテナ内のものを(終端迄)一つずつ返し、変数に代入してくれますので、代入された変数にマッチするかしないかの処理を記述します。

 これで無事、文を抽出して単語が正しいかどうかの検証が出来る様になりました。実際には文字列を表す" "の間にあるホワイトスペースの処理が上手く行かないのでコレだけではダメなんですけどね。興味がある方はコチラを参照してみてください(toWordsが今回のものの改良版になります)。


2009/09/09

Yahoo! BB 光 with フレッツ (2)

 いきなり企画終了になるとは思いませんでしたが、

申し込みは受け付けているが対応していない地域

があるそうです。先程NTTから本件について電話があったのですが、申し込みは出来る様になっておりましたが、工事は出来ないとご丁寧に説明をいただきました。

それは良いのですが、そもそも受付出来ない様にしておいて欲しいんですけどね。


2009/09/07

Yahoo! BB 光 with フレッツ (1)

 実はADSL(しかもYahoo!のみ)しか来ていない所に今住んでいるのですが、光なんてあと5年は来ないだろうと諦めてました。ところが、


おや? 今年6月に見た時には、全然こんなの書いてませんでしたよ。SoftBankがADSLの契約数低迷で光の販売に積極的だとは記事で見ましたが、こんなに早く展開するとは思ってもいませんでした。

 と言う訳で、さっそく人柱に。フレッツ 光ネクストをポチッとして、スターターパックが来るのを待ちます。きっとIPv6関連の設定をする羽目になるので、自宅サーバーの設定も変更する必要がありそうです。設定詳細については、次回の投稿で触れようと思います。


2009/09/06

OS X Server on VMware Fusion (4)

 この話はコスト削減がメインだったので、どれだけお安くなったのかについて補足しておきたいと思います。電気料金メーターの回転速度を見ながらでも良かったのですが、今回使ったのはコレ。


コンセントに差し込んでおくだけで、単位時間あたりの電気料金やCO2排出量も分かります。では早速、

  1. Power Mac G5 (1TB RAID1 & NIC 2枚増設)
  2. MacBook Pro
  3. 24型ブラウン管TV (1990年製)

で比べてみた結果です。1.はOS X Server 10.5がインストールされており、2.はVMware Fusion上でOS X Server 10.5を動作させています。主なサービスの構成は一緒(3回目を参照)、アイドリング状態で計測しています。

結果

  1. 3.7円/時間 => 32.412円/年間
  2. 0.6円/時間 => 5,246円/年間
  3. 2.6円/時間 => 22,776円/年間

24型ブラウン管TVより消費していると思いませんでしたが、これならVMware Fusionを新規購入しても充分におつりが来ます。ただし、障害時の信頼性を含めたものではありませんので、注意が必要です。


2009/09/03

OS X Server on VMware Fusion (3)

# gunjouの語句解析アルゴリズムに専念してた為、少し更新遅れました。

 
apacheのバージョンを上げる作業に難航した後は、何事も無く設定は完了しました。それから5日間経ったのですが、不具合は1度真夜中にフリーズした位。サーバーのシステムログを見ると、

kernel[0]: HgfsBd_Dispatch: RpcOut_send returned failure

が大量に出ており、VMware Communitiesを見る限りは"/Volumes/VMware Shared Folders"をマウントしているからと言うので、アンマウントして対応しました。様子を見ながら、"/Library/Application Support/VMware Tools/services.sh"を書き換えてあげようと思います。

 また、ファイルサーバーが無くなってしまってたのですが、Air Mac Extremeに16GBの高速USBメモリを取り付け代用しています。貴重なデータだけを保護する目的なら、HDD回さずに済むので経済的かもしれませんね。

 これら以外は、サーバーのレスポンスが目に見えて早くなったので、かなりgoodです。ミッションクリティカルな用途では無いなら、検討の価値は充分にあると思います。

動作中のサービス

  • AFP
  • DNS
  • iCal
  • iChat
  • MySQL
  • Open Directory
  • Web
  • メール

用意したもの

  • VMware Fusion $79.99

ところで、Mac用のVMwareってなんでこんなに安いんでしょうか(Intel Mac専用だから?)



Powered By Blogger