現在、いくつかのIP電話サービスが開始されています。メリットは遠距離でも固定料金で通話が出きること。デメリットは停電時に電力供給が止まるので不通になること。どちらを重視するかは人それぞれですが、将来、あらゆる機器にIPが割り振られるようになると、IP電話が主流になっていくのでしょうか?
夜間でもお構いなしに、海外から電話勧誘がひっきりなしに届いたりしたら困りますね。
現在、いくつかのIP電話サービスが開始されています。メリットは遠距離でも固定料金で通話が出きること。デメリットは停電時に電力供給が止まるので不通になること。どちらを重視するかは人それぞれですが、将来、あらゆる機器にIPが割り振られるようになると、IP電話が主流になっていくのでしょうか?
夜間でもお構いなしに、海外から電話勧誘がひっきりなしに届いたりしたら困りますね。
ブートローダのGrubとMBMを共存させる方法を書き記しておきます。
UbuntuにはブートローダにGrubが標準搭載されています。しかし、デフォルト起動OSの切り替え手段がテキストベースなので、頻繁に切り替えたいときに不便です。代替手段として、MBMのようなサードパーティ製ローダを好んで使用している人もいるのではないでしょうか。そこで次のような構成を想定した手順を示します。
hda(ドライブ1):MBM/Windows hdb(ドライブ2):Grub/Ubuntu
通常は、Ubuntuのインストール時にGrubの保存先を訊かれますので、上記構成であれば、hdbを指定して下さい。
もし、上手くいかずエラーがでるようなら、Grubの保存先を初期設定にしたままインストールを済ませてしまいましょう。その後、インストールに使用したライブCDのUbuntuを起動し、そこからGrubのインストール作業を行います。コンソールから以下のインストールコマンドを打ち込んで下さい。
$ > sudo grub #sudoによって権限を昇格していないと以下のコマンドが失敗する可能性があります grub > root (hd1,0) #2番目のHDD,第1パーティション(0からカウント)をrootに指定 grub > setup (hd1,0) #install開始, MBRにstage1, hd(1,0)にstage2が書き込まれる(stage1.5は他のファイルシステム用なので失敗していても無問題) grub > quit
再起動後、hdaの先頭にMBMをインストール。これで、MBMからGrub経由でUbuntuを起動できるようになりました。
もし、Grubのメニューが必要ない場合は、/boot/grub/menu.lstを編集してください。hidemenuをonにするかtimeoutを0にすれば、Grubの存在を隠蔽できるでしょう。ちなみにmenu.lstはroot権限でないと見えません。編集時にはコマンドの前にsudoと打って、スーパーユーザに昇格してください。
$ > sudo gedit /boot/grub/menu.lst
また、未確認ですが、わざわざライブCDを使わなくても、HDD内のUbuntuからGrubの操作が行えるかもしれません。
Irrlicht1.4から関数の修飾子が厳格化されます。例えば、get系の値取得関数は、メンバ変数の値を変更しないように、インターフェースクラスの段階からconst修飾子に縛られているのです。もちろん、不都合があるならメンバ関数をconst修飾子無しでオーバーライドしてしまえば、従来と変わりなく既存ソースを流用できます。
そこで、Irrlichtを使用している人も、その他の人も、ここでC++のconst修飾子についておさらいしましょう。
const char* foo(const char* str) const;
最初のconstから順番に説明していきます。
プログラマが明示的に宣言することで、関数の挙動がある程度分かるようになります。そのため、後々の保守作業において効果を発揮します。うっかりメンバ変数の値を変更してしまい、謎の不具合に悩まされる事も少なくなるでしょう。
しかし、const修飾子は問題がない訳ではありません。特に上記例の3番目のconst宣言は厄介です。関数内でメンバ変数に手を加えるような実装がなされていると、コンパイルが通りません。関数設計を見直そうにも時間がない。バグ混入も恐ろしい。お手上げです。
そこで、mutable修飾子の出番です。これを用いてメンバ変数を宣言すると、特別にconst関数内でも値の変更が認められます。このアンチconstとも言うべき修飾子の存在は、本来期待される制限を歪めてしまう為、何だか本末転倒な感じではあります。最終手段として使うにとどめるのがいいでしょうね。
話は戻りますが、Irrlicht1.4βでもmutable修飾子が使われているところがありました。多少やりすぎなところもあり、IReferenceCounted::grub()にまでconst宣言がされてました。果たして、そこまで必要なのか疑問に思ってます。
Irrlicht.dllに手を加えず、各国語対応するテスト第一弾。1.4βで試しています。
IGUIFileOpenDialogの派生クラスを作る事により日本語表示が可能。コードはIrrlichtMLからコピペしただけです。ただし、これだけでは表示するGUIオブジェクトの管理が面倒になるかと思います。なので、GUIElementFactoryに登録してしまったほうがいいでしょう。
ちなみに、このテストはirrTTを使わなくても、日本語ビットマップフォントを作成して読み込ませれば成功するはず。
参考文献:Custom GUI Development(Irrlicht Forum)
Irrlicht.dllのソースを書き換えずとも、IGUIElementを継承して新しいGUIを作成できる。既に登録されているGUIを複合的に組み合わせる事も可能。詳しくは各GUIエレメントのソースか、GUIエディタのプロジェクトを参照のこと。もし、GUIエディタで自分が作成した新GUIを編集したいのなら以下のようにするといい。
- IGUIElementのserialize/deserializeAttributes/getTypeをオーバーライドすること。そうすれば、編集、読み込み、書き込みが可能になる。
- 子エレメントはsetSubElement(true)を呼び出し、親の管理化であることを宣言する。
- 名称からGUIオブジェクトを生成できるように、カスタムエレメントを新規IGUIElementFactoryに登録する。