白 Be 2010 年 12 月

 BeOS 及びパソコン関連の日記です。といっても毎日書いているわけではありませんが(^^;)。タイトルは「はくび(白眉)」と読んで下さい。BeOS が最も優れた OS になってくれたらいいなぁ、などと期待しながら……。
 各日記の日付の部分は、その日記のアドレスへのリンクになっています。他の雑談や日記からこの日記へリンクを張る際の URL 取得用としてご利用下さい。


<< 前の白 Be ] [ 翔星 Be ランド Home ] [ 次の白 Be >>


PR

2010/12/31 Google Apps Engine 使ってみた

 UTAU 音源「実音とわの」の Twitter bot「とわのっと」の駆動には、これまで他人様がデプロイした GAE-Cron を使わせてもらっていた。

 しかしせっかくなら、自前でデプロイしてみようかと、GAE に登録してみた。

 GAE への登録や、ローカルでのツールのインストールなどはこちら、GAE-Cron のデプロイ手順はこちら

 とわのっとの動作的には、特に何か変わるというわけではないんだけれども。これまでお借りしていた GAE-Cron プロバイダのアカウントは消して、他の人が使えるようにしておいた。

 自分がプロバイダとなっている GAE-Cron の URL はこちら。ご自由にお使いください。

 GAE って結局、Python/JAVA サーブレットを動かせるレンタルサーバー、ってことでいいのかしらん? 普通の Python よりもライブラリが充実したりしているのかな?


2010/12/30 wchar_t 問題

 C++Builder XE では、プロパティ等の文字列が wchar_t 型になっていて、これ結構大きな変更っぽい。

 wchar_t の知識が無かったので調べてみたら、wchar_t は多バイトの文字。実装は環境依存だが、Windows においては 2 バイトであるらしい。文字列リテラルの表記は

const wchar_t*	hoge = L"あいうえお";
のように、L を付与する。

 C++Builder XE で実験してみたところ、sizeof(wchar_t) は 2 となり、エンコーディングは UTF-16 のようだ。hoge[0] = 0x3042 となった(UTF-16 では 0x3042 が「あ」)。

 UTF-16 なので、char 型の文字列(Shift_JIS)と互換性は無く、strcpy(fuga, reinterpret_cast<char*>(hoge)); で強引にコピーしても意味のない文字列になる。リトルエンディアンなので、fuga[0] = 0x42, fuga[1] = 0x30 となり、文字列にすると "B0" となってしまう。

 UTF-16 はアルファベットなら char 互換だから大丈夫かと思ったけど、L'A' は 0x0041。L"ABCDE" を char* にキャストすると、0x41, 0x00 となり、後ろがちょん切れてしまう。

 char→wchar_t の変換には、mbstowcs_s()、wchar_t→char の変換には wcstombs_s() を使う。いずれも、うまくいかない場合は setlocale(LC_ALL, "Japanese_Japan.932") のコールしてみる。……ん、C++Builder XE だと、セキュリティダメ版の mbstowcs() / wcstombs() しかないのかな。char でのエンコーディングも実装依存なのかもしれないけど、C++Builder XE では Shift_JIS だった。char 型だと、Intel マシンでも「あ」は 0x82, 0xA0 の順に格納される(「あ」の Shift_JIS コードは 0x82A0)。

 STL においては、char 型の文字列が string、wchar_t 型の文字列が wstring。

 ちなみに、UTF-16 は必ずしも 16 ビットではなく、文字によっては 32 ビットを必要とする。なんだ、結局可変長になるんじゃないか。それなら char 型で UTF-8 エンコーディングの方がスマートな気が……。と、ここまで書いて、これまで wchar_t に出会わなかったのは、Haiku が UTF-8 を使っていて、UTF-8 なら char で扱えるからなんだ、と納得。

 さて、問題は、自分のライブラリやプログラムで wchar_t を使うのか、それとも char を使ってプロパティを使う際は変換を噛ますか……だ。

 wchar_t を使うと UTF-16 を使うことになるから、扱える文字が増える。

 ただ、UTAU プラグインに限って言えば、UTAU 本体とのやりとりが Shift_JIS だから、char(Shift_JIS)の方が楽かな。


2010/12/21 C++Builder XE に移行

 Windows 開発環境を Turbo C++ Explorer(C++Builder 2006 の単体版)から最新の C++Builder XE に移行。

 生成するプログラムの UI がエアロチックになった。

 その代わり、今まで動いてたプログラムがコンパイルできなくなったりも。文字列プロパティで使われるテキストを C++ 文字列に変換する際、c_str() メソッドが const char* じゃなくて const wchar_t* を返すようになったので、そこの修正が大きそう。

 使っているうちに、他にもいろいろ出てくるかもしれない。


2010/12/20 Re: Sandy 郡の橋の巻

 Sandy Bridge いいですね。手堅く進化している印象です。

 そのうち Haiku でも HT フル活用できるようになるかもしれませんし、せっかくなら Core i7-2600S で!

 Mac で起動している事例があるみたいなので大丈夫なのかもしれませんが、EFI で Haiku がちゃんと起動するのか、若干心配ではあります……。


2010/12/18 ついに EFI の時代が来るか?

 前にもちょろっと書いたけど、Intel の次期 CPU「Sandy Bridge」世代では、マザボの EFI 化が進むらしい。各社のマザボの具体的な情報が出てきた。

 今回は普及にいたって欲しいなぁ。


2010/12/04 R1 アンケート回答

 Haiku 公式サイトで実施されている R1 アンケート(解説はこちら)に回答してみた。

 Haiku が何を目指しているのか、あるいは何を目指すべきなのか、イマイチ見えていない中で、回答は難しいところもある。

 そんな中で Haiku に興味を持ってもらうには、最初に触った時に、Haiku が何らかのリアクションを出せることが大切なのではと思う。

 分かりやすいのは、音と映像。この辺りが出てくれば、ユーザーとしても、何となく触った気になれると思う。なので、音&ビデオ関連の機能を must have にしておいた。HTML 5 は迷った末、実装が大変かと思って only-if-ready にしたけど、今思えばこれも must have にしておけば良かったかな。

 あと、いじっていて分からないことが出てきたら、すぐに調べられるよう、ネット接続は必須だと思う。なので WiFi も入れておいた。



<< 前の白 Be ] [ 翔星 Be ランド Home ] [ 次の白 Be >>


最初前先頭次最後ホーム