(10/10/01~)

10/10/01

先月
 イロイロな事があってかなりドタバタしたなぁ...ま、今月も大して変わらないか。

澪Pad
 お、特設サイトができたんだ。"スレート PC" とはまた別の魅力があるな、コイツには。スレート PC やネットブックに比べて重量半分だし、Windows Mobile にしては画面大きいし。"スマートフォン" じゃないので、携帯電話の縛り (制約) がないのがいいのかも。澪Pad 購入するかどうかは置いといて、そのうち Delphi Prism で Windows Mobile 用のコード書いてみようと思っている。"Windows Phone 7"? Out of 眼中でございます。

Delphi XE つーか、RAD Studio XE
 インストールさえしていないという...いあ、正直 HDD がパンパンなのですわ。換装用の HDD も既に用意してあるのですが、現在仕事の山場でして "動いているものは触らない" の原則によりどのみちいぢれない状態にあるのですよ。


10/10/03

Delphi XE で利用可能な Delphi 2007 について
 利用方法は "RAD Studio XE, Delphi XE, C++Builder XE, Delphi Prism XE 旧バージョンのライセンスの取得方法について" を参照の事。Delphi 7 に関しては既に書いたので省略。

"Delphi 2007" そのものに関する情報
 こちら をどうぞ。それから簡単な概略を。

 詳しくは、"Delphi 2007 アップデータ""Delphi 2007 追加ダウンロード" を参照の事。


10/10/04

Windows 7 のセンサー API
 "Windows 7" + "スレート PC" + "SSD" で真価を発揮できる。理由としては先にも述べたが、

 こんなトコロ。米澤さん罠にはまったようなので、今後に期待しよう (w

デスクトップでは?
 じゃ、デスクトップではセンサー系で面白い事ができないのか?と言ったらそうでもない。"本体にセンサーがないのなら外部にあればいい" のだ。

 具体的には、"WiiRemote (Wii のリモコン)" + "Bluetooth" (+ "センサーバー") を使う。ご存知ない方のために説明しておくと...

 Windows で Wii リモコンを扱うためのソフトウェアには

 等がある。自分で何でもやりたいのなら、"WiiRemoteプログラミング" という書籍もある。以下、実際の動作の動画。

 以下、お買い物リンク。

 余談ですが PS3 のコントローラも Bluetooth 接続です。上に挙げた Bluetooth USB アダプタには、PS3 コントローラを Windows のゲームコントローラとして使うドライバが同梱されています。


10/10/05

RAD Studio XE で利用可能な製品を古い順にインストールしたい。
 RAD Studio XE を購入すると古い製品を貰える のは周知の事実。しかしながら、"RAD Studio XE を使用許諾登録しないと古い製品を取得できない" ため、古い順にインストールする事は不可能にみえる...が。

  1. "使用許諾コードの登録ページ" へ行く。
  2. RAD Studio XE (/ Delphi XE / C++Builder XE) のシリアルナンバーを入力し、登録キーに "1234567" と入力する。
  3. 使用許諾コードを受け取るメールアドレスを入力する (決して間違えないように!!)。
  4. メールが送られて来たら、http://www.embarcadero.com/xe-earlier-versions で、旧製品のライセンスを取得する。
  5. "登録ユーザダウンロードページ" で、ISO 等がダウンロード可能となる。
 上記の方法で、古い製品順にインストールする事が可能。注意点としては、"送られてきた使用許諾コードはデタラメなので破棄しなくてはならない" という事だ。ネタ元はこちら。この方法を使うには、もちろん EDN のアカウントを持っている事が前提となる。


10/10/06

環境再構築中
 折角なので OS を Vista から Windows 7 へ変更。今まで Windows 7 は VirtualBox 上で検証用として動作させていた。メールは "Thunderbird Portable" を使っていたため移行はファイルコピーだけなので楽チン。Vista からなので別に移行で困るものはないなぁ...HDD が壊れてからの移行じゃないんだし。

Virtual PC (Windows 7) の VT 制限
 あうち。そういや、VT 制限なくなってたんだった。

 デブキャン資料には "VT 必須" と書いた気がするので謝罪 m(_ _)m

Windows 7 とグラフィックカード
 グラフィックカードは DirectX 10.1 以降対応のものでないと、Vista よりもパフォーマンスが落ちる事がある。事実、僕の使ってるビデオカードは GeForce 6600GT なのだけれど、多分 Vista の方が快適だったと思う。Windows 7 では WDDM 1.1 ドライバが採用されているが、他のタイプのドライバだと WDDM のエミュレーションで動作するため、どうしてもパフォーマンスは悪くなる。

 この件と因果関係があるのかは不明だが、僕の場合だと NVidia 公式で落としてきたドライバはダメで (!が付く)、Microsoft 製の "NVidia GeForce 6600 GT (Microsoft Corporarion - WDDM)" 以外では正しく動作しない。

 ...まぁ、未だに "Athron 64 X2 3800+ (Socket 939)" のマシン使ってますしね。そのうち安いグラボでも調達するとすっかなぁ...え?誰かくれるって? (w

Windows 7 にインスコしたもの
 めぼしいのを...

 RAD Studio XE とか、Visual Studio は当たり前なので省略。

RadPHP XE
 うぉ!とうとう IDE がガリレオベースになったのか?微妙に違いがあるにはあるが、旧 "Delphi for PHP" に比べて随分軽いと思う。

Delphi Prism XE
 一度インスコに失敗した。何でだろ?さて、Windows Mobile の件もどうにかしないとな。

RAD Studio XE with JEDI
 JCL でインスコに失敗した。エラーメッセージを調べたら "C:\Users\Public\Documents\RAD Studio\8.0\hpp\bzip2.hpp" が生成できないとかどうとか...。パスを調べてみたら、"C:\Users\Public\Documents\RAD Studio\8.0\hpp" なんてのはなかったので作ってやったらインストールが通った。調べてみたら 全く同じ症状の投稿があった ...がっでむ。

 RAD Studio 2010 以前ではインストールエラーは起きないのか。加えて Delphi パーソナリティだけの場合も起きないのか。

Delphi XE で利用可能な Delphi 7
 Windows 7 に入れてみたら、レジストリが正しく登録されなかった。"XP 互換" のショートカットを作って、"管理者として実行" をやった方がいいかも。僕は、Vista のレジストリを転記した...ん?この Delphi 7 って微妙にオリジナルの Delphi 7 と違うような?

 Delphi 7 のヘルプは WinHelp32 なので、Windows Vista / 7 / Server 2008 では WinHelp ビューアを別途インストールしなくてはならない。

 環境移行完了...業務アプリのコンパイルが通る事を確認した。

Delphi XE で利用可能な Delphi 2007 R2
 無印 2007 持ってて R2 が貰えるというのは かなり複雑な心境 だ (w Blackfish があんな事になるのだったら、出し惜しみ (...じゃないらしいけど) しなきゃよかったのに。

 環境移行完了...業務アプリのコンパイルが通る事を確認した。

Delphi XE で利用可能な Delphi 2009
 インスコしてません。Unicode 版 Delphi の案件はすべて Delphi 2010 へ移行済なので。

Delphi XE で利用可能な Delphi 2010
 現在の Delphi 案件は断りがない限り Delphi 2010 で作っている。例外的に Delphi 2007 のアプリケーションを納品したお客さんトコから "連携するアプリケーション" の依頼があった場合には、新規でも Delphi 2007 を使っている。DB が Shift_JIS だったりするからだ。

 XE があるのに、何故 2010 をインストールするのか...そりゃ当然、"確実に動いていた環境" だから。ロクスッポ検証もしないまま 「コンパイル通ったからいいやー」 で XE へ移行する訳にはいかないからなぁ...。

 逆を言えば、どこかのタイミングで Delphi XE への移行を行わないといけないという事。むやみにいくつものバージョンの Delphi を使うと管理が大変になってしまうから。一応、念のために Delphi 2 ~ Delphi 2010 の入った Windows XP を用意はしてある (Virtual PC 用) んだけどね...。

 つーか、そもそも Delphi 2010 はパッシブフェーズに入っていないバリバリの現行製品だし。

 環境移行完了...業務アプリのコンパイルが通る事を確認した。

Indy 10.2.3 ブランチが消滅
 Indy は Delphi 2009 登場時に ANSI 版ブランチとして 10.2.3 を残していましたが、ここにきて 10.2.3 ブランチは消滅した模様です。

 ここの所、"Indy10Tiburon" が ANSI 版 Delphi で普通にインストールできて普通に使えていたので、10.2.3 ブランチの存在理由は無いに等しかったですけどね。"Indy のバージョンによる差異" で悩まなくて済むようにしたければ "Tiburon" と付かないものをインストールし (ANSI / Unicode 関係なく)、何か不具合があったら "Tiburon" と付く最新版をインストールした方がいいのかもしれませんね、今後は...でも、ちょっと動向を様子見。


10/10/07

未だ環境再構築中
 ですだよ。

Indy 10 を ANSI 版 Delphi へインストールする。
 IdMessageClient でパラメータ不足のエラーになったら、以下のように修正するといいようだ。こりゃ、ANSI 版 Delphi ではロクスッポ検証してないな...orz 10.2.3 持ってるヒトはしばらくは捨てずに持っておくが吉。

        if TextIsSame(AMsg.ContentTransferEncoding, 'base64'then begin  {do not localize}
          EncodeStrings(AMsg.Body, TIdMessageEncoderMIME, LEncoding{$IFDEF STRING_IS_ANSI}, LEncoding{$ENDIF});
        end else begin  {'quoted-printable'}
          EncodeStrings(AMsg.Body, TIdMessageEncoderQuotedPrintable, LEncoding{$IFDEF STRING_IS_ANSI}, LEncoding{$ENDIF});
        end;

 Delphi 7 で確認。最新版をインストールするとバージョン表記は 10.5.8 となる (r4441)。Delphi 2007 R2 / 2010 / XE もこれで統一してみよう。

RAD Studio XE
 とりあえず、環境設定完了。コンポーネントの移行も OK。後はボチボチやる事にしよう。


10/10/08

RAD Studio - 旧バージョン情報
 今更だけど。ここにはこう記されている。

Embarcadero RAD Studio XEは、最新バージョンの開発ツールスイート製品です。
このバージョンでは、以下の旧バージョンライセンスを使用することができます。
旧バージョンを必要としている方は、RAD Studio XEをお求めください。

    * Delphi 2010、Delphi 2009、Delphi 2007、Delphi 7
    * C++Builder 2010、C++Builder 2009、C++Builder 2007、C++Builder 6
    * Delphi Prism 2011、Delphi Prism 2010、Delphi Prism 2009

 盛りだくさんだね。でも、よーく考えてみると "Delphi Prism 2011" だけは単体製品だった事もあり、インストール不可なんじゃないのかな?"Delphi Prism 2011" のシリアルナンバーなんて貰えたっけ?いあ、"Delphi Prism XE" が使えるから何の問題もないんだけどね...ちょっと気になったもので。

RAD Studio XE を購入すると...
 利用可能な製品は多分以下の通り。7 製品、14 パーソナリティ。"早期バージョンアップ申し込みキャンペーン" が終了した現在でもアフォみたいにお得。

 Delphi / C++Builder 2007 R2 は結合して、"Delphi for .NET 2007 R2" のない "RAD Studio 2007 R2" とする事が可能。結合インストールの方法はこちら

新キャンペーン
 RAD Studio / Delphi / C++Builder 2010 ユーザ限定で、XE Professional 版がお安く購入できるようです。期限は 2010/12/25 までとなっております。

そして重要事項
 次の製品からはバージョンアップ版購入対象が "RAD Studio / Delphi / C++Builder 2007" 登録ユーザからとなります。BDS 2006 / Turbo は対象から除外されますのでご注意!正確には、XE を購入する場合でも 2010/12/31 以降は BDS 2006 / Turbo ユーザはバージョンアップ対象外です。


10/10/09

うがー!!
 "NVidia GeForce 6600 GT (Microsoft Corporarion - WDDM)" では OpenGL 関係が全滅する。具体的には以下のようなメッセージが出て起動しない (または動作しない)。

 当然、NVidia のドライバを入れても解決しない事は解っている。デュアルディスプレイ環境が失われるだけの事だ。

 VirtualBox が動作しないのはまだ解るとして、例えば MySQL の管理ツールである "MySQL Workbench" なんかも動作しない。そもそも DB 触るのに OpenGL が必要とか意味不明だ。マルチプラットホームな (Linux 由来とかの) GUI ツールは現在の僕の PC 環境では鬼門かもしれん。

GPS がないのなら、無線 LAN を使えばいいじゃない?」
 なるホド...そういうテがあったか。


10/10/10

iPentec さんの Delphi XEのレビュー
 的確なレビューで定評のある iPentec さんのサイトが更新されています。

SkRegExp
 1.0 系及び 1.1 系が更新されています。正直、どっちを使うべきか悩み中。今の所は 1.0 系を使っておりますが...。

今日は幼稚園の運動会
 ...だったので、ちょっとへべれけ。


10/10/11

玄人志向 RH5550-E512HD
 Radeon HD 5550 搭載の安価な DirectX 11 対応ビデオカード。これを els 氏より頂いた...のだが、PCI-E 電源コネクタがないのがマズいのか "K8N Diamond (MS-7100)" では認識せず、BIOS 画面すら出なかった。仕方がないので、同僚のメーカー不明な Radeon HD 3850 (DirectX 10.1 対応) 搭載ビデオカードと交換する事に。

 物々交換の結果は良好で、どちらの PC でも問題なく動作しているようだ。古いマザーボードだからなぁ...イロイロと制約があるのは仕方ないか。


10/10/12

LightReport2 ver 2.51 (Unicode 版 Delphi 用)
 LightReport2 を Unicode 版 Delphi で使って居るヒトがいるのなら、"ソースコードに修正が発生しているのだから、どこかで公開されていてもおかしくはない" (確か LPGL ライセンス) と思うんだけど、見当たらない (気がする) のでコンパイルが通るように修正してアップしておく事にした。

 僕自身は LightReport2 を使ったことがないので、詳しい使い方のわかるヒトがメンテナになって頂けると有難いなぁ...。

暫定メンテナ
 そういえば TEditor も暫定的にメンテナやってたんだった。一応再掲。

 自分で使わないもんだから、最近いじってないなぁ...

 いあ、こんな物を作りかけてはいるのですが、なかなか時間が取れませんで...。


10/10/13

LightReport2 ver 2.51 (Unicode 版 Delphi 用) Rel.4
 Delphi 2005 ~2007 で使えるパッケージを同梱しておいた。

何故 ANSI と Unicode でソースを分けるのか?
 LightReport2 のように、かなり古いバージョンをサポートしている場合には困った事が起きる。最低でも "Delphi 2005 以降" という縛りができればいいのだけれど...具体的に何が困るかと言うと、

 つまりは、古いバージョンの Delphi をサポートするという事は、古いバージョンの Delphi の仕様に合わせなくてはならないという事だ。ソースコードの条件分岐以外にも様々な制約がある事に留意すべきだと思う。ガリレオ IDE になってから (2005 以降) に限れば、"RTL の差異以外の制約" について考えなくてはならない事はまずないのだれど...。

 Win9x コードを排除できたり、文字コード絡みの処理をでっかい {$IFDEF UNICODE} で処理しなくて済むので可能な限り ANSI と Unicode でソースを分けるのが望ましいと思う。どうしても ANSI と Unicode で条件分岐させてソースコードを統一したいのなら Delphi 2005 以降の対応に留めないと様々な制約に引っ掛かってしまう点は肝に銘じておかなくてはならない。

「Unicode 6.0」が策定、絵文字が国際標準に (ケータイ Watch)
 "ウンコ (U+1F4A9)" とか誰得...。例によって "サロゲートペア (UTF-16) / 4 バイト UTF-8 領域" か。


10/10/14

DFMコンバータエキスパート ver1.40
 リリース。MECSUtils に依存しなくなりました。「"DFMコンバータエキスパート" をどういった時に使うと便利なのか?」 とか、「そもそも "DFMコンバータエキスパート" って何よ?」 という件については 過去の雑談 (2009/03/26) を参照してください。

 IDE で対応してくれるのが一番楽なのですが...一応、QC に入れてあります。Vote できる方は Vote をお願いします (多分、FT-QC)。

LightReport2 ver 2.51 (Unicode 版 Delphi 用) について
 メンテナ...そして作者でもある Ohtaka さんに LightReport2 の件で連絡を取りました (対応に感謝)。

 まずは LightReport2 の事実関係をハッキリさせておきます

 以上を踏まえて、3 つの確認 (同意) が取れました。

 という事です。似たような別バージョンが存在するのは好ましくありませんからね。


10/10/15

Windows 7 用 Internet Explorer 8 の累積的なセキュリティ更新プログラム (KB2360131)
 Windows 7 においてこの修正プログラムをあてると、IE が真っ白になって何も表示されなくなったり、Windows メールを起動すると mshtml.dll のエラーが表示されるようになったりする事があるようだ。


LightReport2 ver 2.51 (Unicode 版 Delphi 用) を C++Builder XE にインストールする
 ちょっとやってみましょう。

  1. "$(BDS)\LR251U" にソースを配置する
  2. [ファイル | 新規作成 | パッケージ - C++Builder]
  3. [ファイル | プロジェクトに名前を付けて保存] "$(BDS)\LR251U" に "LR2_150C.cbproj" という名前で保存。
  4. プロジェクトマネージャの "Contains" を右クリックして [追加...]。
  5. [参照] ボタンを押下して、LightRepReg.pas を追加する。

  6. プロジェクトマネージャの "Requires" を右クリックして [追加...]。
  7. [参照] ボタンを押下して、

    を追加する (*.bpi は $(BDS)\lib の中にあります)。

    この作業のやり方が解らない場合には、"Contains" に "$(BDS)\LR251U" 以下にある *.pas をすべて追加してください。必要な *.bpi が自動的に追加されます。 追加されたのを確認したら "Contains" から不要な *.pas を取り除き、上にある画像のような構成にして下さい。

  8. [プロジェクト | オプション] でプロジェクトのオプションを開く。
  9. 左ペインツリーの [情報] を選択し、[説明] に "LightReport2 - C++Builder" のような判りやすい説明をつけておく。

  10. 左ペインツリーから [Delphi コンパイラ | コンパイル] を選択し、[その他のオプション | コンパイラに渡す追加オプション] に "-LUDesignIDE" を追加する。

  11. プロジェクトマネージャの "LR2_150C.bpl" を右クリックして [インストール]。
 他のバージョンの C++Builder でも似たような感じになると思います。上記作業は LightReport2 に限った話ではなく、Delphi 用コンポーネントを C++Builder へインストールするために必要な作業ですので、「Delphi 用だから...」と諦めていたコンポーネントがあるのでしたら一度試してみてはいかがでしょうか?


LightReport2 ver 2.51 (...に含まれる ANSI 版) を C++Builder 2007 にインストールする
 こっちもやってみましょう。

  1. "$(BDS)\LR251A" にソースを配置する
  2. [ファイル | 新規作成 | パッケージ - C++Builder]
  3. [ファイル | プロジェクトに名前を付けて保存] "$(BDS)\LR251A" に "LR2_110C.cbproj" という名前で保存。
  4. プロジェクトマネージャの "Contains" を右クリックして [追加...]。
  5. [参照] ボタンを押下して、LightRepReg.pas を追加する
  6. プロジェクトマネージャの "Requires" を右クリックして [追加...]。
  7. [参照] ボタンを押下して、

    を追加する (*.bpi は $(BDS)\lib の中にあります)。

    この作業のやり方が解らない場合には、"Contains" に "$(BDS)\LR251A" 以下にある *.pas をすべて追加してください。必要な *.bpi が自動的に追加されます (designide.bpi だけは自動で追加されません)。 追加されたのを確認したら "Contains" から不要な *.pas を取り除き、上にある画像のような構成にして下さい。

  8. [プロジェクト | オプション] でプロジェクトのオプションを開く。
  9. 左ペインツリーの [情報] を選択し、[説明] に "LightReport2 - C++Builder" のような判りやすい説明をつけておく
  10. 左ペインツリーから [Delphi コンパイラ | コンパイル] を選択し、[その他のオプション | コンパイル時に使用するパッケージ] に "DesignIDE" を追加する。

  11. プロジェクトマネージャの "LR2_110C.bpl" を右クリックして [インストール]。


LightReport2 ver 2.51 (...に含まれる ANSI 版) を C++Builder 6 にインストールする
 もーこっちもやってみよー (w

  1. "$(BCB)\LR251A" にソースを配置する
  2. "ファイル名を指定して実行" から "C:\Program Files\Borland\CBuilder6\Bin\bcb.exe /np" として C++Builder 6 を起動する。
  3. [ファイル | 新規作成 | その他]
  4. [新規作成 | パッケージ]
  5. [ファイル | プロジェクトに名前を付けて保存] "$(BCB)\LR251A" に "LR2_60C.bpk" という名前で保存。
  6. パッケージウィンドウの "Contains" を右クリックして [追加...]。
  7. [参照] ボタンを押下して、LightRepReg.pas を追加する。
  8. 同じく、"$(BCB)\Source\ToolsAPI" にある DesignIntf.pas を追加する
  9. パッケージウィンドウの "Requires" を右クリックして [追加...]。
  10. [参照] ボタンを押下して、

    を追加する (*.bpi は $(BCB)\lib の中にあります)。

    この作業のやり方が解らない場合には、"Contains" に "$(BCB)\LR251A" 以下にある *.pas をすべて追加してください。必要な *.bpi が自動的に追加されます。 追加されたのを確認したら "Contains" から不要な *.pas を取り除き、上にある画像のような構成にして下さい。

  11. パッケージウィンドウの "オプション" ボタンを押下し、[情報]タブの[説明] に "LightReport2 - C++Builder" のような判りやすい説明をつけておく
  12. パッケージウィンドウの "インストール" ボタンを押下してインストール。


10/10/18

C++Builder 6 と言えば...
 [ヘルプ | バージョン情報] で バージョン情報ダイアログを出した状態で "ALT + [G] [U] [N] [G] [L] [A]" ですかね。


10/10/20

LightReport2 ver 2.51 Unicode Edition rel.5
 リリース。今回のバージョンにはバーコードコンポーネントでおなじみ seizo さん 提供の TLRBarImage が含まれています。

 利用方法は seizo さんTQRBarImage (QuickRepot 用) とほぼ同一で、利用できるバーコードの種類も同じです。

 このコンポーネントは LightReport2 の LightRepEx.pas を上書きして使うため、念のために Extras 扱いになっています。将来的には本体とマージしたいですね。以下、インストール方法です。

  1. LightReport2 を普通にインストールする。
  2. Extras フォルダの中身を LightReport2 フォルダに上書きする。
  3. LightReport2 のパッケージを開く。
  4. LRBarImg.pas をパッケージに追加する。
 ここから ANSI 版と Unicode 版でちょっと違います。

 [Unicode 版のみ]

  1. パッケージを保存し、Delphi を一旦閉じる。
  2. *.dpk をテキストエディタで開き {$R 'LRBarImg.dcr'} を加える。
  3. *.dproj をテキストエディタで開き <DCCReference Include="LRBarImg.dcr"/> を加える。
  4. LightReport2 のパッケージを再度開く。
 そして (再構築して) インストールすれば完了です。Unicode 版はこの手順を踏まないと、コンポーネントアイコンが正しく登録されないようです。ANSI 版でもアイコンが正しく登録されない場合には Unicode 版に倣ってパッケージを編集して下さい。「アイコンなんて細けぇ事はいいんだよ!」 なヒトは Unicode 版の手順をスッ飛ばして構わないと思います。

TLRBarImage
 実は、seizo さん に無理を言って作って貰ったものだったりします。LR2 版作成要望に快諾を頂き、感謝感謝です。

 さて、Extras フォルダが ANSI / Unicode で分かれていますが、Unicode 版はソースコードが UTF-8 だったり、コンポーネントアイコンに 32×32 (大アイコン) が含まれていたりします。中身もちょこちょこ違いますが、基本的にはワーニング潰しです。TQRBarImage と違うのは一部の初期値と描画処理くらいのものですね。

対 RadPHP 配布ウイザード
 フォーラムにもあったように、RadPHP で配布ウィザードを使う時、フォームに日本語が含まれると配布ウィザードが高確率でコケます。

 *.xml.php は UTF-8 なのですが、何故か日本語が入ると落ちるようです。日本語部分を数値参照文字に置換してやれば配布ウィザードが通りますが、一旦配布ウィザードが吐いた *.xml.php に日本語が含まれる元々の *.xml.php を上書きしてもちゃんと動作します...つまり、配布ウィザードだけの問題という事です。ただ...日本語が含まれると配布ウィザードが落ちるのは判っているのですが、「どの日本語で落ちるのか?」という点に関しては規則性がないように思えます。

 面倒なので、U+0080 以降の文字 (ASCII 以外の Unicode文字) を数値参照文字に置換するツールを作りました。Deploy Fix です。

 このツールを使うと *.xml.php 内の "CDATA[]" 内にある U+0080 以降の文字を数値文字参照に置換したり、その逆を行う事ができます。注意点として、このツールは元々のファイルを上書きで更新するので、事前にバックアップを取っておく必要があると思います。"CDATA[]" の抽出には、おなじみ SKRegExp を使っています。ロジック的には

procedure TForm1.Button1Click(Sender: TObject);
var
  Enc: TEncoding;
  SL: TStringList;
  Match: TMatch;
  MT: String;
begin
  if not OD1.Execute then
    Exit;
  Enc := TEncoding.GetEncoding(65001);
  try
    SL := TStringList.Create;
    try
      SL.LoadFromFile(OD1.FileName, Enc);
      for Match in TRegEx.Matches(SL.Text, 'CDATA\[(?<STR>.+?)\]'do
        begin
          MT := Match.Groups.Item['STR'].Value;
          SL.Text := StringReplace(SL.Text, Format('CDATA[%s]', [MT]), Format('CDATA[%s]', [MecsHTMLEncode(MT)]), [rfReplaceAll]);
        end;
      SL.SaveToFile(OD1.FileName, Enc);
    finally
      SL.Free;
    end;
  finally
    Enc.Free;
  end;
  ShowMessage('Done.');
end;

 こんな感じですね。もっとスマートにやる方法をご存じの方がいらっしゃいましたらご教授下さい。

 "CDATA[]" の中だけを抽出せずに、わざわざ "CDATA[]" を含めて抽出しているのは、例えば 'あいう' 'あい' のような日本語文字列があって先に 'あい' がマッチすると 'あいう' が '&#x3042;&#x3044;う' になってしまい、'あいう' が正しく置換されなくなってしまうからです。

 なお、ソースコード中にある MecsHTMLEncode() は Deploy Fix 用のもので、& / < / > / " 等はエンコードしません。"CDATA[あいうえお<br>かきくけこ]" のようになる事があるので、エンコードしてはマズいのです。

FFFTP
 環境が変わると、以前設定していた事をすっかり忘れていて焦る事がある。

 レンタルサーバに RadPHP の rpcl を転送してテストしていたら、rpcl フォルダを削除しようとしても中途半端にフォルダ残ってしまう現象に遭遇。フォルダ内は空なのに。FTP のメッセージは "550 Remove directory operation failed"...以前もこのような問題に遭遇したような?ググったらすぐに判明&思い出した。

 ...そうだった。".で始まるファイルを表示" だけでは .(ドット)で始まるファイルはリスティングされないんだった。こういったググって判った事は面倒臭がらずに雑談にしとくと後で便利だ。ちなみにこの件を詳しく説明してあるサイトを見つけたので紹介しておく事にする。

MySQL Windows 版インストーラ
 長らく触らないと、以前に回避したトラブルで再度躓く事がある。

 MySQL を Windows へインストールする場合、インストールしたりアンインストールしたり繰り返してると、インストール後にサービス起動でコケる (またはフリーズ) 事がある。これも回避方法を忘れるんだよなぁ...。

  1. MySQL を普通にアンインストールする。
  2. %ProgramFiles% に MySQL 関係のファイルが残っていれば削除。
  3. "C:\Documents and Settings\All Users\Application Data" (Vista 以降は "C:\ProgramData") に MySQL 関係のファイルが残っていれば削除。
 大体、こんなもんで大丈夫。「Linux 鯖でやれよ」と言われそうだが、"Pro 版の Delphi / C++Builder で DBX4 を使う" のなら、Windows 版をインストールするしかない のだし、インストール手順を覚えておいてもバチは当たらないと思う。

 MySQL Windows 版のインストール方法とトラブルシューティングについて詳しく説明してあるサイトを見つけたので紹介しておく事にする。

「Buy One, Get One Free」キャンペーン (Embarcadero)
 アメリカ人は本当にこれが好きよね...エンバカさんに限らず。ハッキリ言って、今回のキャンペーンで単体製品を購入するくらいなら、いっそ "RAD STUDIO XE" を購入した方がいい思う。"RAD STUDIO で利用可能な製品は 14 もある" のに加え、同額相当の製品をもう一つ貰えるのだから。"Get One Free" で今まで関心はあっても購入にまで至らなかった製品をチョイスするのはアリかと。

 "RAD Studio XE" がどんだけオトクなのかについては 10/08 の雑談 にあるのでご確認下さい。


10/10/21

Webセミナー「RadPHPで始めるビジュアルWebプログラミング」
 聴講。"米澤さんに便宜を図って頂いた" のだが、実は解決せず。

 何が起きたかと言うと、"Live Meeting の音が小さい&こもってしまって殆ど聞こえなかった" というもの。開始 1 分程、無音でスライドだけがめくられていったような格好で、何が起きているのかサッパリ理解できなかった。テストでは普通に音が出ており、あまりの聞こえづらさにボリュームをかなりデカくしたものの、それでもなんとか聞き取れる程度。

 そして悲劇が...。裏で Live Messenger が起動していたのだけれど、タイミング悪く知り合いからメッセージが。

バイーン!!

 耳をつんざく轟音が...orz 死ぬかとオモタ。"PC -> 壊れてるミニコンポ" な接続なので、結構デカい音がすんですよ (w 一体、何が原因なんでしょうね?皆さんトコでも小さかったのであれば「ステレオマイクを変な風に使っちゃったかな?」って思ったトコですが、僕以外に報告がなかったトコロをみるとそうではない模様。次のセミナーまでには原因を究明したいなぁ。

 内容はいつものことながら「結構なお点前で...」という感じでした。

ステレオマイクがどうしたって?
 話的に面白いのでちょっとだけ。ある音 A に対して逆相の音 B を出すと音が消えます。これを応用したのがヘッドフォンとかの "ノイズキャンセラー" ですね。ステレオの L/R で逆相の音を出してモノラルに変換すると理論上は音が消えます。で、ステレオマイクも接続によっては同じ事が起きるのです。

 詳しくはこんな感じです。音を大きくしてもらった (と思われる) 後も音量が変わらなかったので、最初これを疑っちゃった、と。ちなみに、僕んトコのスピーカで逆相の音が出ていたというオチではありません (w


10/10/22

Interbase XE の IBConsole
 Interbase XE がリリースされたようなので、Developer Edition を DL してみた。IBConsole のアイコンが新しくなってるな...中身のアイコンはそのままだけど。ちょっと調べてみたけど、どうやら IBConsole が Unicode に対応したようだ...長かったなぁ。Delphi 2010 または Delphi XE でコンパイルされている模様 (おそらく XE)。

 Kylix は ANSI な訳だけど、Interbase XE の Linux 版の IBConsole はどうなっているのだろう...もう、追いかける気もしないけど。

 IB2009 とかの "英語版 IBConsole" は環境設定用 XML を書き換えないと InteractiveSQL に日本語が通らなかったりしたけど、今回のは普通に通る...ちなみに環境設定用の XML は "%AppData%\Borland\Interbase" に吐かれる。"ANSI な英語版 IBConsole で日本語を通す方法" は 2007/03/25 の雑談に書いた のでそちらを参照の事。

 ちゃんと使った訳じゃないけど、"SJIS0208" とかの DB を Interbase XE で使う予定があるのなら、IB2009 とかの "ANSI 版 IBConsole" は別に確保しておいた方がいいと思う。当サイトの IBConsole に ANSI 版と Unicode 版が存在するのと同じ理由で。それと、Interbase XE 付属の IBConsole は Firebird には使えない (1.0.x には使えるかもしれない) ので注意が必要。

当サイトの IBConsole
 Unicode Edition rel.15 をリリース。Delphi XE で再コンパイルされている。再コンパイルするのをすっかり忘れていた。

7,999円 (14,979円) で Android ネットブックを作る方法。
 "【パチモン】中華 Androidタブレット/Apad/山寨iPad 6枚目 (2ch)" より。

 WM なマシンの OS を Android (1.5) に載せ替えるというもの。Andoroid とはいえ 300MHz の CPU なのであまり多くを期待しないように。


10/10/23

Buy One, Get One "Tool" Free.
 掲示板ネタ。そうか..."Delphi 2007 以降がインストールされている環境では TEAD が無償で利用可能" という事を知らないヒトも居るのか。NewsGroup の突然のクラッシュから日が経ってるもんなぁ...。事情を知らないヒトのために当時の書き込みを掲載。

 当時の NewsGroup への投稿のままですから、適宜読み替えて下さいね。

 Delphi 2007 / 2009 / 2010 がインストールされている環境では TEAD はレジストを必要としません (恐らく C++Builder も)。但し、XE への対応は行っていませんので、XE 単体がインストールされている環境ではレジストを促すダイアログが表示されると思います。

PPA ver1.25β8
 もう使うヒトも少ないかもしれませんが、XE 用の DCU が同梱された β8 をリリースしてたのを忘れてました。一応書いておきます。

Hello, HAYABUSA.
 先日、朝のテレビでたまたま 「はやぶさ」という曲を聴きましたが、「どっかで聴いたようなギターやね?」とずーっとモヤモヤしてたのですが、これだった事に気付く。

QC#89066: Add the following methods to TEncoding
 何故これが Open なのか、と。"Cannot Fix" だったんちゃうんか、と。QC#62637 の "Duplicate" ちゃうんか、と。つーか、マジで QC の基準がワカラン。"ハムたんの言う事であれば通る" のであれば、直接ハムたんに交渉するわ (w

 IBConsole で "As Designed" と言われた件 といい、自分達が言った事を後で覆すな、と。速攻で Closed にしなくったって Open のままでいーじゃねーか。数年経たないと重要性に気付かないようなら、黙って 文字コード絡みの QC 全部潰せばいいのに。


10/10/24

TEAD の件
 2010 とか XE が単体でインストールされている場合にはレジストなしで TEAD を利用する事ができなかったようなのを修正。少なくとも 2007 が入ってれば OK っぽかった。同名でアップしてありますのでご注意。

Delphi と PostgreSQL
 Twitter で PostgreSQL ネタが出ているようなので少々。

 PostgreSQL が必要な理由としては、MySQL / PostgreSQL / Firebird の現状を理解する必要があると思います。

 日本国内の事情で考えると、どれもこれも中途半端な感がありますね...(^^;A

 Web アプリで DB を使うものは MySQL または PostgreSQL が多いです (レンタルサーバへの対応もありますしね)。これを社内ネットワークで使おうとすると、直接 DB を読み出したいという需要が少なからず出てくると思いますが、Delphi / C++Builder には PostgreSQL 対応のコンポーネントがありません (「有償のサードパーティ製ドライバ使え」 というのはナシの方向で) ...ADO 接続は流石にできますが。

 てな訳で、QC#41013: PostgreSQL support for DBX4 が Reopen されているので、必要とされている方は是非 Vote を。


10/10/25

Delphi と PostgreSQL (その2)
 現状で Delphi から PostgreSQL へ接続する手段は以下の通り (多分)。

 ZeosLib や、PQCompo は残念ながら ANSI 版 Delphi にしか対応していません (Unicode 対応の ZeosDBO 7.0.0 があるにはありますが、一般に DL 可能なのは α版です)。その他の ANSI 版にしか対応していないものも除外してあります...ヤレヤレ ┐(´ー`)┌ な状況ですね。

XE でも TEAD が使えるようにした件について。
 冷静になって考えてみると、早まった事をした気がする。2007 / 2009 / 2010 はともかく、XE 単体インストール環境で TEAD を使えるのは今後の成り行きによってはマズいんじゃなかろうか?ま、いいか...そん時は Unicode 版を本気で作ればいいだけの話だし。

XE 付属の Delphi 7
 Win32.Induc 対策 はお済みかな?


10/10/26

澪Padオンキヨーのスレート PC
 澪Pad が 10/30 発売で、オンキヨーのスレート PC が来月末発売予定か。


10/10/28

inlinevar.xml
 日本語で話すと、コードテンプレートの var が Delphi XE で利用できなくなっている事を今更発見。「なんぞそれ?」って方のために図解すると...あ、Delphi Acid Floor さんに図解がもうあるじゃないか。"ライブテンプレート絡みでもう1つ。" のトピックをご覧ください。

 簡単に手順を書くと、

  1. 関数/手続きの途中で、変数を宣言したくなった。
  2. コード中の任意の場所で "var" と入力して、Ctrl+J を押下。または [表示 | テンプレート] で "var" をダブルクリック。
  3. LVar となっている所で変数名を入力。
  4. [TAB] キー押下。
  5. Integer となっている所で変数の型を入力。
  6. [TAB] キー押下。
 これで、変数定義部に変数が自動で登録されるというもの。「流石に QC にはあるんじゃないかなー?」と思って探したらやっぱりあった。

 ...デスヨネー。「これないと面倒だよー」と仰る方は是非 Vote を。

 え?「お前は使ってなかったのか?」って?えぇ...変数は手入力した方が早いので "しおり + Ctrl+Shift+↓" × 2 (Ctrl+Shift+↓↓) を常用しています (関数内関数には使えませんけど、古い Delphi でも使えますしね)。なお、件の問題は 2010 以前では発生しない事を確認しています。

RadPHP のソースコードフォーマッタの件
 QC 入れときましたよ...適当ですが。

 「アフォですか?」と仰る方は是非 Vote を。


10/10/29

Microsoft Windows SDK for Windows 7 and .NET Framework 4
 Windows 7 にコレをインストールすると、センサー API 用の仮想照度センサードライバをインストールできる。

  1. Microsoft Windows SDK for Windows 7 and .NET Framework 4 をインストール
  2. "%ProgramFiles%\Microsoft SDKs\Windows\v7.1\Bin" へ移動
  3. VirtualLightSensor.exe を実行
  4. 仮想照度センサードライバがインストールされる
  5. 指示に従ってセンサーを有効にする
 センサーを有効にし損なったら、コントロールパネルの "位置センサーとその他のセンサー" で有効にする。なお、センサー/ロケーション API のヘッダファイルは "%ProgramFiles%\Microsoft SDKs\Windows\v7.1\Include" に含まれている (sensors.h / sensorsapi.h / locationapi.h)。

Geosense
 以前にも紹介した、ロケーション API 用の仮想 GPS ドライバ。無線 LAN が利用可能であれば "仮想 GPS" として動作する。

wiiuse
 Wii コントローラの各種センサーを拾うためのライブラリ。使い方は ググると結構出てくる

Delphi で センサー&ロケーション API を簡単に使うために...
 とりあえず、QC に要望出しておきました...なかったみたいなので。

 正直、Delphi から "センサー&ロケーション API" を使うのは大変で、C++ でも結構面倒。Managed からは簡単に使えるように "Windows API Code Pack" があるのだけれどね...。タッチ&ジェスチャを VCL でうまくラッピングしたように、「センサー&ロケーション API もやってくれないかなー」と期待を込めて。


10/10/30

オンキヨーのスレート PC のスペック比較
 お、Amazon でも予約受け付けてるのか。

 チョー欲しいが先立つものが...。

 違う部分だけをまとめてみた。3 軸加速度センサーとか照度センサーはすべてのモデルに付いている。無線 LAN や Bluetooth とかも。赤文字は優れていると思われる点。サイズに関しては画面とのトレードオフなので優劣はつけていない。

 TW317A5 の画面サイズを 10.1 型にして背面カメラ付けたものがあればよかったのに、と個人的には思う。TW217A5 の 内蔵グラフィック "GMA 500" は DirectX 9.0c 対応だから、Windows 7 では厳しいような気がする。HD 動画再生支援機能はあるので、3D をやんないのならこのスペックでもいいのだろうけれど。

 それから「本当に最大メモリは 1GB なのか?」ってのも関心事。Z530 も N450 も本来は "最大 2GB" のサポートで、かつ、普通の SO-DIMM っぽいので、2GB 載りそうな気がしないでもないんだけど、何かがあるのだろうか?GMA はシステムメモリからビデオメモリを持ってくるので、正直 1GB じゃ心許ないかな、と。

 ...と思っていたら、"なぜ、Androidでなく「Windows 7」なのか──オンキヨーのタブレットPC製品戦略 (+D PC USER)" 記事中に答えを発見。

なお、メモリモジュールはPC2-4200対応のDDR2 SDRAMで、
200ピンのSO-DIMMスロットを1つ備えるので、
保障対象外だが自身でより容量の多いモジュールに差し替えることは可能とのことだ。

 よかったよかった。マルチタッチ、センサー&ロケーションと、Windows 7 の機能がすべて試せる機種ってなかなかないので、開発機 (評価機) としての需要って結構あるんじゃないかな?マルチタッチディスプレイを単体で購入してもそれなりにするし、"JM Badge Board (3軸加速度センサ / 照度センサ / 静電タッチ・センサ)""SENSOR-HM/ECO (人感センサー)" のような単体のセンサーでは使い所が限られちゃうし。

TEAD から Delphi プロジェクトのコンパイルを行なう
 掲示板ネタです。まず、以下のようなファイルを用意します。名前は Build.cmd とかで。

@echo off

:// BDS のパス
:// ----------------------------------------------------------------------------
:[Delphi 2009]
:SET BDS=C:\Program Files\CodeGear\RAD Studio\6.0
:[Delphi 2010]
SET BDS=C:\Program Files\Embarcadero\RAD Studio\7.0
:[Delphi XE]
:SET BDS=C:\Program Files\Embarcadero\RAD Studio\8.0

SET BDSBIN=%BDS%\bin
SET BDSAPPDATABASEDIR=BDS

:// プロジェクト名
:// ----------------------------------------------------------------------------
SET PROJECT=%1

:// MS Build の種類
:// ----------------------------------------------------------------------------
:[.NET 2.0]
C:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild %PROJECT% /target:Build /p:config=%2
:[.NET 3.0]
:C:\Windows\Microsoft.NET\Framework\v3.0\MSBuild %PROJECT% /target:Build /p:config=%2
:[.NET 3.5]
:C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild %PROJECT% /target:Build /p:config=%2
:[.NET 4.0]
:C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild %PROJECT% /target:Build /p:config=%2

Pause

 ユーザー定義メニューに "(バッチファイルのパス)\Build.cmd $SEDNAME Debug" と "(バッチファイルのパス)\Build.cmd $SEDNAME Release" を登録します。前者がデバッグビルドで後者がリリースビルドです。

  1. TEAD でプロジェクトファイル (*.dproj) を別に開いておく。
  2. プロジェクトをビルドしたい時にはこのタブをアクティブにする
  3. ユーザー定義メニューからビルドを実行する

 TEAD のヘルプに書いてあったような *.pas を単体でコンパイルする事は今ではもうあまりないとは思いますが、もしやる事があるのでしたら、一度 IDE でコンパイルしてみて、メッセージウィンドウに表示されている DCC32.EXE のコマンドラインスイッチを真似てスクリプトを作って下さい。DCC32.EXE のスイッチに関しては DocWiki を参照して下さい。


10/10/31

LAN ケーブルを自作した時の品質チェック (特に GbE)
 "ケツにはぶっすり刺さって抜けないハ・イ・ヒー・ル♪" て、電気グルーヴの "Rhythm Red Beat Black" じゃねーか (w [ニコニコ動画]

 VIA が "Velocity GigaCheck Utility" 、Realtek だと "Realtek Ethenet Diagnostic Utilitiy" 、Broadcom だと "Broadcom Advanced Control Suite (BACS)"、Marvell だと "Virtual Cable Tester (VCT)" とかになります...Intel のはなんだったっけ?

 追記: Intel のは "Intel PROset" の模様です。なお、ツールへの直接リンクを張っていないのは "製品によって使える機能が異なる" ためです。お持ちの NIC でケーブル品質チェックが行えるかどうかは、実際にユーティリティを DL して確認して下さい。ちなみに、私の PC で使えるチェッカは VCT で、100 BASE のケーブルにも対応します。

 ...nForce のはなんだったっけ?


 BACK   古いのを読む   新しいのを読む