<<20072009>>

2008-1-1[火]

あけましておめでとうございます。

ここ4ヶ月ほど餡ドーナツばかり食べてたせいもあってか 今年はひさしぶりに趣味で何か新たに作りたい、と 思うたり... まずは案だけど。 サイトもぼちぼちと...




2008-5-24[土]

修羅場終了。
さすがに最後1ヶ月は連泊も多くキツかったけれど プロジェクトとしては結構恵まれていて無理しすぎることなくすみ、 わりと体は無事のよう。 けれどプチ浦島太郎感はやっぱりアリで、 気が付いたら終わってることの多いことです。 (ボカロはホント流れがはやい...)

とりあえず今日は荒れ放題の家の片付け、 といいつつ、ほぼPCさわってるだけでした。
家サーバーが絶不調で完死前になんとかせねば、とか、 壊れて4ヶ月放置のiPodどうしようとか、 壊れたFKB8744(キーボード)邪魔 ...て、つなげたら復活したり?

会社に持ち込んで使ってたもので 会社引越のおり無反応になってしまって いくつかのマシンで駄目だったのですが... 時間差で機嫌なおるものなのでしょうか。 相性かなにかでしょうかね。 も一枚の8744もそんな感じで不安定になってて 予備機に繋げて放置状態だったのでした。
しかし、復活したはいいけど すでに自宅職場共にメイン機はリアフォ(91UBK)に してしまったので、こいつは押入れ行き、でしょう (このふにゃふにゃキータッチも結構好きなんですが... 納期直前にキーボードごときにストレス感じ続けたくないと 自分に言い訳して買い増しした手前悔しいので:-)

それにしても、普通のテンキーレスキーボードって、 もっと安くで種類増えないものでしょうかね。 値段がアレでも選択肢が1つ残ってるだけでもマシなんですが、 ワイヤレス、どっか出してくれないかなあ。




2008-10-1[水] osバージョン取得で嘘を返される

以前、フリーのアプリがVistaでいつのまにか ヘンな挙動をするようになったことがあったのですが、 ソースがあるので Visual Studio で追っかけてみたところ api でのosバージョン取得で 6(vista)でなく5が返されて Vista非対応処理に流れていたためでした。
アプリは正常、osがヘン…原因気づくまではvista腐ったかと思いましたよ。

もちろん、vistaでなく自分のポカで、 xp互換モードになっていたのが原因。

ただ、xp互換モードになってたのは、そのアプリでなく、 常用しているファイラ(WinFD)のほうでした。
(vista環境で不安定なWinFDを多少なりにも安定させようと 試行錯誤でたまたまxp互換にしてた模様)

アプリ も Visual Studio もファイラ上のファイル名を ダブルクリックして関連付けで起動していたため、 ファイラを操作している気分が少ないせいもあってか、 ファイラの影響をうけてるなんて思いもしなかったです...

というか、互換モードって子プロセス(?)にも継承されるのですね。
古いファイラやランチャを互換モードで使うのは、あまりよろしくない、 ということのようです。
(互換モードで動くアプリから呼ばれる .dll 内部で osのバージョンで処理切り替えていたりする場合も同様だろうで... 互換モードによらずos判定とかする方法ってあるのかな?)

※結局、ファイラはWinFM2008に移行しました。




2008-10-2[木] ないものねだり

  • C++/C#/Dあるいはそれら並に強力に機能のある言語で、
  • ネイティブコード生成できて、
  • まともなide&デバッガがあって、
  • 32,64ビットcpu(生成コード)に対応していて、
  • windows,mac,linux(unix)の環境で使えて、
  • それらのosに対応したマルチプラットフォームなライブラリ(gui含む)があって、
  • できれば言語やライブラリの仕様がキレイ

なんて選択を全てみたすことはできないものなんでしょうかね。
趣味や仕事のツール/アプリ作成で使い続けやすいものとして。

iPhoneを手にいれてからこっち(開発機として)macがほしくなり 年内には買う気満々になってしまってるのですが(まだ買ってない)、 その影響で、趣味で作ってたvc+wtlなプログラムへの意欲が 急速に萎えてしまったのでした... というかマルチプラット フォーム対応が気になってしまう。

c++でフリーなマルチプラットフォームなライブラリは いろいろありそだけれど完成度や日本語関係の対応具合や日本語資料を思うと wxWidgets がベターな感じなんでしょうか。 用途によってはSDLも。 ただ、いまのとこ64ビット対応は無さそう?(64ビットlinuxは対応してる?) 欲求としては64ビット対応はソースレベルでそれを考慮しとけば 後の版でコンパイルできればok、ってレベルなんですが。 (個人的には実行サイズ的にwtlのようなtemplateベースなもののほうが 好みなので、wxWidgetsはいまいち食指が動かないってのもある)

ネイティブあきらめれば、javaな環境はgui等含めベターな気もしてきます(甘いか?)。 ただ、java言語はC++/C#/Dに比べ窮屈でおもしろくないとおもったり。

javaするくらいならマルチプラットフォームもあきらめて.netで c#3やc++/Cliするのが、ライブラリ&開発環境の具合はかなり魅力で 面白そうなんですけど..本末転倒 (いや、とっととツールを作るってことなら正しい気もしますが)

...なんて考えてると面倒くさくなってきて とりあえずwin以外はguest-osにwin系をいれるの前提に マルチプラットフォームあきらめれて vc+wtl,mfcでするのが無難、て気に...なりかけてループ。




2008-10-3[金] C++よくある罠

少し前にやってしまったバグ。
WTL でCStringを使ってると、ポインタ取り出すのに LPCTSTR(strBuf) のような キャスト表現を使うようになってしまったのですが、

 CComBSTR  bar;
   :
   :
 CString foo(LPCTSTR(bar));
 foo.MakeUpper();

なんてしたら、foo.MakeUpper()の行でfooがstruct,unionじゃない、って 怒られてしまったのでした。

CString foo(LPCTSTR bar); と解釈されるので関数内でのプロトタイプ宣言に 化けてただけなんですが、すっかり関数内プロトタイプ宣言なんて 禁じ手的にしてたせいかすぐには思い至れなかったのでした。 ( CString foo(); とかだと デフォルトコンストラクタの使用上の注意として意識してるけど)

C/C++でよくある(?)コーディングスタイルだと グローバル関数変数のプロトタイプ宣言はヘッダ1箇所のみにする、 ってのが普通だろうから、いっそ関数内プロトタイプ宣言は警告に するコンパイラ・オプションがほしいなあ、と思ったり...

これに限らず、C/C++コンパイラは、歴史的に文法をかえるわけにいかないけれど 現行の開発手法(コーディングスタイル)ではグレーになってしまう用法とかを 検出/支援するようなコンパイルオプション (gccでの 多重 extern 宣言の検出や、dmcでの???_cast<T>()を基準に(キャスト)を 警告にするモードとか... そういったもの) を、 もっとサポートしてくれたら、と思ってしまうのでした。




2008-10-4[土]

一寸前に「ローポリ スーパーテクニック」という本を読了。 モノはゲームなローポリモデル作成の解説本。
自分でモデルを作りたいというわけではなく、 たまたま絵柄に惹かれて手にとったモノだったのですが、 この方の作られるデータの前提(そのデータが乗っかるゲームシステムの制限) が書かれていたりして、 おぼろげによそさまのゲーム製作の一端が垣間見られて 楽しいかったです。 (PS2の30フレームベースで30~35Kポリゴンという値に妙に安心してしまったり)。 製作記的に読み物として楽しみましたが、あとで社内のグラフィッカーさんに聞いてみたら、みな購読ずみで割と評判そさそうでした。




2008-10-5[日] 本『C++言語のカラクリ』

επιστημη 『C++言語のカラクリ 誕生の秘密と舞台裏』 をぱらぱらと読了。 地味な表紙からは硬い雰囲気がありますが、中身はくだけていて読みやすいです。
あらかじめamazonのレビューを読んでいたため、 期待しすぎずに楽しんで読んだのですが、 たしかに現在に関係する技術的には他で知れることも多く、 後半の座談会はこんなにも頁いらないから、 もう少しテクニカルな話があってほしかったというのが正直なところ。
わんくまの勉強会での講演を元にしたものらしく、 その関係者の座談会なので、まあ頁埋めなのかなあ、て気も. あと、 わんくまファンブックみたいな趣があるのかな)

内容的には、CからみてC++のブラックボックス的な、 コンストラクタ/デストラクタ、virtual関係、多重継承、template、 のコード生成/トランスレータの吐き出したcソースの解説、 となるので、Cなら生成コード想像ついて自信ありだが C++はブラックボックスが増えて気持ち悪くちょっと… と思ってるC熟練者には手がかりのひとつになるかも、です。 (古い仕様のC++が題材だけど、熟練者ならさっぴいて見れるだろうで)

まあamazonのレビューのバラけ具合みての通り、人を選ぶ感じはします。 言語処理系に興味がある人間には食い足りないでしょうし。 CもC++もあやふやな人は下手に手をださないほうがいいのかもだし。

※ 題材のC++コンパイラでは実装されてない仕様なんでお門違いだけど、 ブラックボックス的な生成コードの解説としては、"例外"、もほしかったなあ、です。 (「BINARY HACKS」にg++での解説(等価処理)があるので、間に合ってるといえば間に合っていますが)




2008-10-11[土] ブートHDD換装

vistaをインストールする前のxpのときにそれで間に合っていたからと 320GのうちC:ドライブに60Gしか割り当てていなかったら、 当然のことながら最近のソフトはよく食うため 気がつくと空きが2,3G、 気を抜くと空き容量不足で怒られるようになっていたのでした。 ファイル移動やフォルダ圧縮でしのいでいたけれど、 作業に必要なソフトのインストールできないのはさすがにまずく、 諦めて1T HDDへ換装を決意。

といっても、一からos&アプリインストールするのは 面倒すぎるので HDD のデッドコピー&パーティション拡張の方針。

以前にIDEのRAIDカードでミラー(RAID1)リビルドでまるまるコピー (あまった領域は新たなドライブ(レター)割り当て)で移行してた こともあるので、今回も同様に... ですが、 SATAなRAIDカードなんてもっておらずM/BのRAID機能をあてにしていたら (nVidiaチップのせいか)BIOSではリビルドをサポートしていない模様 (os上のサポートアプリで可)。

しかたがないのでHDDコピーツールを検索、できればフリーで、となると あまりなさそうで、すぐさま見つかるのは HDCloneなるソフトのフリー版と、 linuxやBSDのliveCDで dd するくらい、でしょうか。 ddは以前フロッピーの読み出しで苦労した印象もあったので (それは単にエラーが多発するFDだったからだろうけど)、 HDCloneを使ってみました。CD 焼いてブートして所定の選択をするだけで コピー開始...で楽なんですが、転送速度が約 5MB/秒。 320Gだと17,8時間かかってしまいます。 フリー版は遅いってかいてあったけど (今検索しなおしたらちゃんと5MB/秒と書いてあった) ここまで遅いと辛いので一旦中止。 再度ぐぐるも適当なのを見つけられず、結局 Knoppix のCDやいて、dd することに。
面倒くさそうなこと書いているページもありますが、 面倒なんで、まずは簡単に説明されていたページをまねて、

dd if=/dev/入力ドライブ of=/dev/出力ドライブ

を実行。
漢らしく無言で実行中のよう。HDDランプの具合から順当な気は するけれど、数分で耐え切れずストップ... したら、そのときまでのコピー量と速度が表示されました。 正常に動いてたようです。21M/秒ならば 4,5時間って所なので、 許容範囲(眠いし)、早速再実行して就寝、起床後みたらエラーもなく 完了してた模様。 コピーしたHDDで起動したところ正常に起動しました。 (多少不安がなくもないのでチェックディスクもしましたが)

続いてコンピュータの管理で、 ブートドライブ以外のパーティションを削除&ブートドライブの パーティションの拡張(vistaでは標準で出来たのね)で計250Gに変更し、 残り領域を適当にパーティションわけ。
元のHDDからブートドライブ以外にあったファイルを(先ほど消した領域の分を再度) すべてコピーして完了。
(ドライバーがちゃんとインストールされたからなのか、 30~40M/秒くらいの速度でコピーされていた模様)

あと、コピーしたCドライブは容量満杯期間が長く デフラグが全然されていない状態だったので、 デフラグを何度か実行しておきました.
(何度か実行したのは、 xp等のデフラグで複雑な状態の場合 1度実行しただけでは不十分で何度か実行するのが ベターだったからですが)。

ただ、vista(プレミアム)のデフラグでは 配置情報がまったく見れないはやっぱり不便なので、 結局、フリーでvista64対応と明記されていた デフラグツールJkDefragを入れてみました。 設定 2(-a 2)しか試してませんが、動いているようです。

※vista64に対応しているようなことが書いてあったので UltraDefrag というのも試してみましたが、こちらは 起動しませんでした。UACが設定されていると それに引っかかり、UACをoffにした状態で実行すると、 著名のないドライバーで怒らて終わりです。 kernel-driver として実装されているということらしいので (vista64は著名必須で野良ドライバーが入らず)... たぶんVista64は非対応でしょう
... と書いたけど、 readme.txtに Vista Sp1 はfaq.txt みろと書いてありますね。 FAQ みたら Vista SP1 から著名必須になったけれど ドライバー著名はgplと相容れないから、著名を改善する気はないよ、って感じ? ただ直後のQAではvistaでのドライバー著名をoffにする手順が書いてある(!?)、 ぽいのでそっちで対処?...
試そうとしたら bcdedit なんてファイルない、って起こられました。 bootの設定するvista標準のツールですが、このへんみてると sp1 ではなくなったらしい(?)。そのページで紹介されている ReadyDriverPlusを インストールしてみましたが、書いてある通り、起動時にF8押して ドライバ署名強制無効をカーソルで選ぶ、という一連のキー操作を自動で やってくれるもののようです。 (メニューが出て勝手に操作される様をみるのは、 PCを乗っ取られたような感じで、ちょっと気持ち悪かったですが:) でもUltraDefrag自体は結局、別のエラーで起動せずon_




2008-11-3[月]

macbook買いました。アルミの一番安い奴。 といっても2週間ほとんど触らず、、いや、つべにこ再生機状態on_。 iPhone開発をめざして、、、なんですが開発サイトの何か 情報入力させられるたびに登録内容が文字化け等おかしくなるので その段階で挫折気味。

キーボードの違いもなかなかなじめず。 持ち歩く気なくて据え置き状態なのでRF91Uをつなげて...だけど そのままじゃ日本語キーや編集キーの一部が使えず PCKeyboardHack,Keyremap4macbook のおかげでなんとかまともになったのですが. 多少まだ設定しきれないキーがあったり. (己の欲求からしたらWinKあたり購入したほうがいいのかも)

で、それらを差し置いてもwin機では自作のキーコンバータダイアモンドカーソル を常用してたりするので、 それが出来ないのが結構つらいのでした。 (ダイアモンドカーソルなドライバーはすでにあるようだけど、10.5に対応してるかわからないし、前記キーボードドライバとは併用できないだろし。 それにCTRLは潰さずにCapsLock+で操作したいと思ってるわけで...ドツボ)




2008-11-4[火]

Ancia、結構いいですねぇ。

IEのツールバーが使えるタブブラウザですが、 試したらちゃんとコリャ英和!が機能してくれたので、 (そのためにサブとして使っていた)IEの代わりに使うことにしたのですが、 非常に実行ファイル小さくて軽いし(WTLで作られてるとのことで 贔屓目でみてしまってるかもだけど)、なにより機能/ボタンが整理されて いてわかりやすく、だんだん、メインで使いたくなってきてます^^;

αゆえかもだけどIEオプションあれど自身のオプション設定なし だったり、お気に入りバーはあるけどお気に入りメニューなしだったり (ただしお気に入りツールバーみたいなものはあり)、 エンジンを変えずに検索がボタンになってるとか、 複数単語のボタンを別途ページごとに ハイライトバーがつくという形で餡modなんかの単語ボタン状態 でタブ切り替えしたときの不安定状態が発生させずで... バランスいいなあ、と。

といってもまだまだα(0.2.4 ...てかいたら0.2.5出てるや) ぽく不具合あったり(プロセス残ったりお気に入りバー表示したまま起動するとページのフレームのサイズがおかしかったり等)、 己のほしい機能も足りてなさそうなので、もしばらく様子見ですが...

(macと行き来することを思うと火狐がベターという選択もちらついてたり)




<<20072009>>