トップページ | 2007年1月 »

2006年12月

2006年12月31日 (日)

システムロケール、ユーザーロケールetc

話の内容に一貫性がないが、そういえば、ちょっとWindowsロケール周りについて色々読んでみた。ロケールって言ってもWindowsには、システムロケール・ユーザーロケールやらスレッドロケールやら色々あり、ややこしく頭を痛めていたが、システムロケールについて一言。「システム」という名前が付くぐらいだから、何かしら重要な設定なんだと思ったが、どうも違うらしい。

Windowsは非Unicodeウィンドウに対して送信される文字関連のメッセージに含まれる文字の文字コードを自動的に変換するが、システムロケールはただ単純にこの変換で使用するコードページ(変換テーブル)を決めるだけのものらしい。つまり、RegisterClassExWなどで登録されたウィンドウを使用するUnicodeに対応したアプリには全く影響を与えない。

それなのに、「システム」ロケールである。ちょっと、紛らわしいと思ったら、最新のMSDNのドキュメントでは呼び名がLanguage for non-Unicode programsになってました。気づきませんでした。ユーザーロケール。これは、ユーザー毎に設定できて、通貨の記号や、日付・時刻の表示に使用する書式などを決めるものであるが、これもStandards and formatsになっている。これで、こんがらなくてすむ。

システムロケールは一度に一つの値しか設定できないが、非Unicodeアプリに対して、アプリ毎に使用するコードページを指定できるWindowsXP用のAppLocale UtilityなんてソフトがMicrosoftから出ていたりもする。

まぁ、いずれにしよ、今後ますます、Unicodeアプリが出てくると思われるので、システムロケールの事は忘れ去れる予感がする。

GetFontUnicodeRanges

Win32APIのGetFontUnicodeRanges。これで、第一引数で指定されるデバイスコンテキスに設定されたフォントでどの文字のグリフを持っているか調べることができるんですが、フォントリンク機能は考慮しませんね。他のGDI関数TextOutやExtTextOutなどでは、指定したフォントがグリフを持っていなくても、リンク設定されたフォントのグリフを自動的に使用し表示します。このAPIの第2引数に渡す構造体のサイズは、GetFontUnicodeRanges(DC, null)で呼び出せば、必要なサイズが返されます。このサイズは構造体全体のサイズです。

後、GetCharABCWidthsWとGetTextExtentPoint32W。どれも文字というか、グリフの幅が返されるんだけど、実際文字列を描画するために、ExtTextOutを呼び出すと、カーニングや文字の合成をGDIのレンダリングエンジンが行ってくれるが、GetTextExtentPoint32Wはそれらの処理が行われた後の幅のイメージ。GetCharABCWidthsWは行われる前の幅をあらわすイメージ。つまり、一つのUnicodeコードポイントで表される文字についても上記のAPIが返す幅は異なる。例えば、U+0302あたりの合成文字のダイアクリティカルマーク。これらは基底文字と一緒に表示されることを考慮?してGetTextExtentPoint32Wは0の幅を返す(WindowsXP以降?)で、前に基底文字がない単独のダイアクリティカルマークをプログラムによって作り出したが、表示上は幅があって見える。が、選択できない。ははは。というか、最近Unicodeについて勉強してるが、難しい。

2006年12月30日 (土)

最新版リリース

やっと、DBXInspector最新版リリースしました。まだ、βついていますが・・来月中にはβの冠をとる方向でいこうと思っています。ホームページの方にも書きましたが、ライセンスを変更しました。フルモードでは機能制限はもちろんありません。で、フリーモード(機能制限有り)ですが、これをどうするかで悩んでいました。とりあえず、日数制限は無くして、SQL最大履歴数と発行できるSQL文の長さに制限を加えようという方向は規定路線だったのですが、その具体的な値に悩んでいました。で、最終的には、最大履歴数6、SQL文の長さ100バイトということになりました。あまりも、厳しかったら、緩めるつもりですが・・・はは。

というか、このブログ完全に日記ですね。まぁ、日記でいいんですが、他の技術者にとて有用な情報はありませんね。自分がちょくちょく見てるブログはやはり有用な情報が載ってて、有用な情報を定期的にのっけるのは難しいなと実感しました。

2006年12月29日 (金)

疲れた

疲れました。ちょっと、SQL履歴機能に不具合が見つかり、修正してました。

それとライセンスは制限モードと制限無しモードにしようかなと思います。制限モード(フリーモード)は、従来のような、日数の制限をなくし、使用期間に関する制限ではなく、機能の制限をつけようかと思います。ただし、ある機能を全く使えなくするつもりはありません。二日後あたりに、その制限が付いた最新版をあげようかと思います。

そういや、最近は英語三昧、資料を読むのにも英語、読む方は結構、辞書なしに読めるんですが、書くとちょっとつっかえます。海外製のゲームもやってんですが、ほとんどしゃべる人は外人です。そのゲームでかれこれ1年以上仲のよいイギリス人の人がいるのですが、よく、where thereとか、変な位置に使って、意味が通じないときあったのですが、ある時、where=we're there=they'reじゃないかと思い、質問したらそうでした。もっと早く質問しておくべきでした。そのゲームで10才とか子供たちもたくさんいるのですが、そういうときはゲームをせず、そのチャット機能で勉強のために、ひたすら、お話をしてます。

2006年12月23日 (土)

開発動機

ちょっとアクセス解析見てみました。DBXInspectorのホームページはGoogleやYahooのエントリに追加されるまで、1ヶ月近くかかったのに、このBlogはもう既にGoogleの検索結果にヒットします。うれしいです。というか、てっきり、自分しかこのブログを見ていないと思いきや、来訪者が既にいたとは。びっくり。DBXInspectorのこれといった宣伝もしていないのに。とりあえず、Vectorにライブラリ登録すれば、多少は見てくれるかなぁとだけ淡い期待を抱いています。

今日も引き続きDBXInspectorの作業に取り掛かろうと思います。DBXInspectorには過去に実行されたSQL文の履歴を管理し、簡単に呼び出せるようにする機能がついてますが、そこのテストを今日はつっこんでやろうと思います。そういえば、このソフトの開発動機ですが、仕事でOracleデータベースに触る機会は皆さんも多いと思いますが、私は某社のソフトを使っていました。確かに便利で重宝する機会が多いのですが、値段が高く現場によっては、使っていないとろもあり、個人的に購入するのもちょっとって感じだったので、DBXInspectorを開発することにしました。このソフトはグリッドで様々な形式でデータを表示できるので、運用時も十分使えると思います。もちろん、そのようなOracleのパフォーマンスのデータを表示する専用の機能が用意されていないので、SQL文を自前で発行する必要がありますが。

DBXInspectorのグリッドは多彩で、固定列表示(左・右)や列のグループ化、ソート(サーバー側ではなくクライアント側での)などが用意されているので、自分の見やすいように、データの表示を整形できます。列の値が長い場合にも、1レコードを複数行に表示できるので、横スクロールなどをすることなく、見ることができます。詳しくはホームページのスクリーンショットを見れば、何ができるか、サクッと理解できると思います。(というか、現物をはやくアップロードします。来週中までには)。Excelファイル出力機能も便利です。Excelがインストールされていれば、AS-IS機能を使うとこによって、文字通り、グリッドの見た目そのままに、Excelファイルに出力することができます。

2006年12月21日 (木)

DBXInspectorの開発日誌

今日は、色々DBXInspectorのテストをしていました。いい感じのような気がします。正式リリースで実装する機能は9.5割方終わってます。後、readme.txtの修正やら色々やらなければいけないこともありますが。ふー。ベクターに登録する準備も始めなきゃいけないし。

で、タイムリーにも窓の杜でベクターに登録するときにしようできるフォームを作成できるツールが紹介されていました。

http://homepage1.nifty.com/kksoftware/

2006年12月19日 (火)

ブログ作成の続き

あれから、さらにどんな機能があるのか設定を変えて、遊んでみた。気になるのが、設定を反映させるとたまに「反映中・・」となってそれっきり。実際反映されたりされなかったりと色々。で、とりあえず、マイリストなるものを追加。ここに、DBXInspectorへのリンクを。右側のサイドバーががらあきだったので、見やすいように移動。実を言うと早い段階でアクセス解析なるもを見て、数時間でアクセス数が40とかだったので、喜んでいたが、生データを見ると、全部自分。あたりまぇか。で、フィルタ設定に自分のアドレスを追加済み。

それにしても疲れた。今日はこれぐらいにしとくか。頭パンク気味

ブログ作成

はじめまして。vanillaです、今ごろですが、ブログなるものに挑戦いたします。これから、色々な事を書いて行こうと思います。主に、Windowsプログラミングについて書いてみたいと思います。技術的な情報や自作ソフトウェアの開発日誌、および愚痴?などなど。。というかその前に、ブログなるものの使い方などを勉強します。

今、現在はOracleデータベースに接続して、SQL文を発行して、データを表示したり編集するソフト DBXInspectorなるものを開発しています。ホームページはプロフィールからたどれます。それにしても、ホームページの累計アクセス数が今だに400かそこら。ほとんど、自分でアクセスしているような気がします。ははは。

それにしても、ブログって便利。まだ、1記事だけですが、既に何度も色々設定を変更したりしてます。超簡単です。で、先の事考えてみて、このブログのサーバークラッシュしたら、投稿内容失われちゃうのかな??なんか、こうも手軽に編集できると、どんどん記事が膨らんで行く、画像投稿したり色々してみたい。

トップページ | 2007年1月 »

自作ソフトウェア

無料ブログはココログ

メモ