2010年10月28日

CodeRage 5 セッションリプレイ

CodeRage 5セッションリプレイが見られるようになりました。

個人的に要チェックなセッション(全部は無理だろうけど):
また一部ですがスピーカの方々によるセッション資料、サンプルコードの公開も行われています。

Marco Cantuさん(Day 1: Session 1/2, Day 2: Session 14/15)
CodeRage 5 Slides and Code Downloads

Cary Jensenさん(Day 2: Session 20)
28044 CDSDemo Simple ClientDataSet Demonstration

John Kasterさん(Day 5: Session 57)
28067 Deep dive into dbExpress CodeRage 5 slides
DbxUtils(svn)

2010年10月25日

WMI Delphi Code Creator

RRUZ(Rodrigo Ruz)さんによるDelphiでWMI(Windows Management Instrumentation)を扱うコード(コンソールアプリケーションおよびアクセスメソッド)を生成するツール。興味深い。とりあえずメモ。

WMI Delphi Code Creator « The Road to Delphi – a Blog About Delphi Programming (mostly)

ただしWindows 2000では正常に動作しません(GetText_メソッドがサポートされていないというエラーが発生します)。

2010/10/26追記: WMI Delphi Code Creatorが1.0.0.1から1.0.0.11に更新されています。

WMI Delphi Code Creator – New Features « The Road to Delphi – a Blog About Delphi Programming (mostly)

インストーラ形式になったほか、生成したコードを直接コンパイル/実行したりDelphiのIDEで開く機能や、WMIのメソッド呼び出し/イベントのサポートなどが追加されています。

2010/11/29追記: OSによりWMIのインタフェースのサポートするメソッドが異なるので注意しましょう、という補足記事が出ています。

Be careful when you import the Microsoft WMIScripting Library « The Road to Delphi – a Blog About Delphi Programming (mostly)

てきとうな要約: Microsoft WMIScripting LibraryをDelphiのインポートウィザードで取り込んで生成したWMIのインタフェースは環境(というより"%System32%\wbem\wbemdisp.TLB")に依存してしまうため、新しいOSで追加されたインタフェースには気をつける必要がある。環境に依存しないようにするには、対応する予定のOSの最も古いもののインタフェースのみを使用する。例としてあげられているISWbemObjectSetのItemIndexメソッドはWindows XPには存在しないがWindows 7には存在するため、気付かずにItemIndexを使用しているとWindows XPで実行時にアクセスバイオレーションを引き起こしてしまう。これを防ぐにはItemIndexを使用せず、代わりに_NewEnumメソッドで取得したIEnumVariantインタフェースのNextメソッドを使用する。

2010年10月22日

InterBase XEリリース

どうやらInterBase XEがリリースされているようです。バージョンはWindows x86が10.0.0.247、Windows x64が10.0.0.258となっています。まだ日本語の情報は出ていないようなので、英語の登録、導入、ライセンスに関する情報のリンクを再掲しておきます。

Embarcadero InterBase News - New InterBase XE
Download a Free Trial for InterBase

Installation, Registration, and Licensing Information for Embarcadero ® InterBase® XE
InterBase XE Readme

2010年10月21日

Firebird 2.5 日本語インストーラリリース

Firebird日本ユーザ会からFirebird 2.5(Win32)の日本語インストーラがリリースされています。ただし
本インストーラーのFirebirdは、はやしがMS VisualStudio2008でビルドしたものです。公式に配布されているバイナリはVisualStudio2005でビルドされているもので、必要なMSのランタイムライブラリのバージョンが違っています。必要なランタイムライブラリはインストーラーがインストールしますが、問題がある場合には英語版の公式インストーラーをご利用下さい。
とのことなので注意が必要です。ダウンロードページからダウンロード可能です。

元ねたはFirebird News » Japanese Firebird 2.5.0 installer is ready (Windows 32-bit versions)

2010年10月15日

FFR yarai 脆弱性防御機能 for Windows 2000 動作検知用スクリプト

Windows 2000(Service Pack 4)は2010/07/13で延長サポートフェーズが終了しています。企業などでは延長サポートが終了したOSはPCごと更新してしまうのが望ましいわけですが、色々な(お金やリソースの)事情でなかなか更新できない、ということもあります。そのような場合の延命策のひとつとして、フォティーンフォティ技術研究所(FFR)のFFR yarai 脆弱性防御機能 for Windows 2000(yarai2000)を導入している場合もあるのではないでしょうか。ところがこのツール、異常な動作を検知してもイベントログにイベントを記録するだけで、ユーザに明示的に通知するようにはなっていません。そこでyarai2000がイベントログにイベントを追加するのを監視して、エラーダイアログを表示するスクリプト(VBS)をでっち上げてみました。
strComputer = "."

Set objWMIService = GetObject("winmgmts:{(Security)}\\" & _
                              strComputer & "\root\cimv2")

Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
                         ("Select * from __InstanceCreationEvent Where " & _
                          "TargetInstance ISA 'Win32_NTLogEvent' " & _
                          "and TargetInstance.SourceName = 'yarai ZDP' ")

Do
  Set objLatestEvent = colMonitoredEvents.NextEvent
  If objLatestEvent.TargetInstance.EventCode = 1 Then
    Call MsgBox("FFR yarai 2000が異常を検知しました。" & _
                vbCrLf & vbCrLf & _
                "メッセージ: " & _
                objLatestEvent.TargetInstance.Message & _
                "イベントコード: " & _
                objLatestEvent.TargetInstance.EventCode, _
                vbYes + vbError,"Error")
  End If
Loop
このスクリプトを拡張子.vbsで適当な場所に保存し、
%windir%\system32\cscript.exe <scriptfile>
(<scriptfile>は保存したスクリプトのフルパス名)という内容のコマンドラインをスタートアップで最小化状態で起動しておけば、yarai2000が異常を検知したときにエラーダイアログを表示して知らせてくれます。

元ねたはMicrosoft | TechnetHey, Scripting Guy! イベント ログで特定のイベントの発生を監視する方法はありますかHey, Scripting Guy! イベント ログ メッセージに特定の単語が含まれるかどうかを監視する方法はありますかスクリプトとは何ですか | スクリプト センターあたり。

2010年10月12日

Delphiのインラインアセンブラ解説

Ernesto De SpiritoさんによるDelphiのインラインアセンブラに関する解説。興味深い。とりあえずメモ。

Inline Assembler in Delphi
将来のMacOS XやLinux、x86以外のCPU(x64、ARM...)のサポートを考えれば、インラインアセンブラは使わない方向に向かうのでしょうが。

2010年10月8日

FastMM 4.97リリース

忘れかけていましたが、FastMMのVersion 4.97がリリースされています。

元ねたは公式フォーラムのThread: FastMM 4.96 available。なにやらマルチスレッド環境下のLockの問題で揉めているようですが…。

2010年10月5日

Delphiのメモリマネージャ(その2)

以前のアーティクルで標準メモリマネージャ、FastMM中村さんのNkMMの3種類のメモリマネージャについて触れましたが、これ以外に2種類のメモリマネージャを見つけました。

TopsoftwareのIvo TopsさんによるTopMemoryManager(最新版はv3.55)は、標準メモリマネージャやFastMMに比べて特にマルチプロセッサ、マルチスレッド環境下でのパフォーマンスが優れているとのことです。ドキュメントによれば特にライセンス条件はなく、自由に使用して構わないようです。

一方でIntelのTBB(Threading Building Blocks)を使用したZach SawさんによるTBBMM(最新版は09-09-2010)というものもあります。こちらはBorlndMM.dllを置き換えてTBBを呼び出すようにするようです。TBBのライセンスは"GPL v2 with Run-time Exception"となっていて、商用製品にも組み込み可能なようです。XLsoftのIntel TBBの"お知らせ"のFAQの項にある
TBB ライブラリーのオープンソースは GNU Runtime Exception (GNU GPLv2) を採用しています。そのため、TBB ライブラリーのソースコードに何も変更を加えていない場合はソースコード開示義務は発生しないとインテル社では考えております。最終的には御社法務ご担当者のご判断に基づきます。
という表現からも特に問題にはならないと思われます。これ以外のTBBMM.dllとBorlandMM.dllは自由に配布してよい、となっています。

元ねたは公式フォーラムのThread: FastMM 4.96 available

2010年10月4日

Firebird 2.5リリース

長い間登場が待ち望まれていたFirebird Ver2.5が(ついに)リリースされています。

Firebird File Repositories(download)
Firebird 2.5 Release Notes

また2010/10/05 01:00(JST)からFirebird Foundation代表のPhilippe MakowskiさんとリードデベロッパのDmitry YemanovさんによるLaunch Webinarが行われます。

2010年10月1日

2010/10開催のウェブセミナー

2010/10/04 21:00-2010/10/05 09:45(JST) CodeRage 5 Day 1
2010/10/05 21:00-2010/10/06 09:45(JST) CodeRage 5 Day 2
2010/10/06 21:00-2010/10/07 09:45(JST) CodeRage 5 Day 3
2010/10/07 21:00-2010/10/08 09:45(JST) CodeRage 5 Day 4
2010/10/08 21:00-2010/10/09 03:45(JST) CodeRage 5 Day 5
2010/10/21 17:30-18:30(JST) 10/21 - Webセミナー「RadPHPで始めるビジュアルWebプログラミング」

CodeRage 5は英語で深夜で、となかなか厳しいですが、面白そうなセッションが結構ありますし後でセッションリプレイが見られるようになるとのことなので、可能な範囲でトライしてみましょうか。

2010年9月29日

Microsoft OOB Update 2010/09

Microsoftの定例外のセキュリティアップデートがリリースされています。
MS10-070

2010/09/30追記: MS10-060と同様に、MS10-070の.NET Framework 1.1 SP1/2.0用の更新プログラム(ファイル名がNDP1.1sp1およびNDP20で始まるもの)はWindows 2000 SP4/XP SP2にも適用可能なようです。

2010年9月28日

LockWindowUpdateとWM_SETREDRAW

Raymond ChenさんのThe Old New ThingLockWindowUpdate (ja)(とWM_SETREDRAW)に関する興味深い一連のアーティクルがありました。
てきとうな要約:
  • LockWindowUpdateはシステム(デスクトップ)全体で1つのウィンドウしかロックできない。
  • LockWindowUpdateはドラッグ操作(アイテムのドラッグアンドドロップやウィンドウのドラッグ)でウィンドウの描画更新を止めるときに使う(本来はそのために存在している)。
  • LockWindowUpdateで描画更新を止めているウィンドウに追加的に描画を行う必要があるときはGetDCEx (ja)のflagsにDCX_LOCKWINDOWUPDATEを含めて作成したDCに描画する。
  • それ以外の状況ではLockWindowUpdateではなくWM_SETREDRAWを使用するべきである。
  • LockWindowUpdateはWindows 3.1(Win16)のリソースが限定されていた時代に作られたもので、いまどきはDirectXオーバレイ、リージョン化ウィンドウ、レイヤードウィンドウ、アルファブレンド、デスクトップコンポジションといったものがあるのだから、これらでエフェクトをかけるほうが多機能だし望ましい。

The Old New Thingは書籍(日本語訳はWindowsプログラミングの極意)にもなっていますが、MSDNのリファレンスには載っていない色々な"理由"を解説してくれる素晴らしいblogです(英語なので厳しいですが…)。

2010年9月27日

Windows 7のタスクバーの制御

Delphi 2010で追加されたWindows 7サポート機能を使用して、Windows 7のタスクバーの拡張機能であるプレビューにボタンを追加したりプログレスを表示したりする方法を説明した記事。興味深い。とりあえずメモ。

Dr.Bob Examines... #125: Fun with the Windows 7 Taskbar

またJEDI Windows APIUsing Windows 7 Taskbar-features via componentsという記事経由の情報で、theunknownones - Project Hosting on Google CodeにDelphi 2006-2009で使用できるTaskbarListComponentsというコンポーネントセットもあります(JEDI Windows APIが必要)。ただしライセンスがGNU LGPLとなっていて、Delphiのコンポーネントは実行時パッケージを使わない限り静的リンクでありLGPLv2の6a項あるいはLGPLv3の4d0項に該当する可能性が高いため、商用アプリケーションでは非常に注意が必要と考えられます(Wikipedia(ja)のLGPLの解説を参照)。

日本語の情報では第15回エンバカデロ・デベロッパーキャンプ

【B6】Delphiテクニカルセッション「Delphi 2010 で探る! Windows 7 新機能」

細川さんのプレゼンテーション資料のp.15-22も非常にわかりやすく、参考になります。またこの資料にもあるアプリケーションユーザモデルID(グループ化やジャンプリストで必要になる)についてはMSDNの

アプリケーション ユーザー モデル ID (AppID)
SetCurrentProcessExplicitAppUserModelID Function (Windows)

に説明があります。

2010/09/28追記: Daniel Wischnewskiさんによる"Windows 7 Component Library"がCode Crunching - Windows 7 Components - Betaからダウンロードできます(betaですが)。こちらはコンポーネントライブラリを作るのに使うならGPLで、アプリケーションに使うならGPL/LGPL/MPLのいずれかで、というライセンスになっています。benokさん、情報ありがとうございます。

2010年9月24日

RAD Studio XEのヘルプについて

Dee EllingさんNotes for XE Helpによれば、RAD Studio XEの(ローカル)ヘルプにはデフォルトでMicrosoft SDKヘルプが含まれないようになっているとのことです(インストール時のオプションで含めることも可能)。また最低でも2回のアップデートを予定しているそうです。

またオンラインヘルプ(docwiki)はRAD Studio XEのものが

Online Help for RAD Studio XE (ja)

に配置されているのに対して、RAD Studio 2010のものも

Online Help for RAD Studio 2010 (ja)

から見ることができるようになっています。検索もGoogleベースになっています。また"Recent changes"(MainVCLCodeSample)およびそのRSS/ATOMで更新状況を確認できます。

ところでMicrosoftはVisual Studio 2010でDocumentExplorer(hxs形式)を放棄してヘルプをwebブラウザベースに変更したようですが、RAD Studioはどうするのでしょうか?

2010年9月22日

InterBase Expressについての解説

InterBase Expressを使用しているプログラムでTIBTransactionの設定を変更しようと思い、詳細な情報をOnline Help (ja)で探してみたのですが、現在のGetting Started with InterBase Express - RAD Studio (日本語はInterBase Express の概要 - RAD Studio)には有用な情報が皆無でした。そこであちこちさまよった結果、Internet ArchiveでBorland(borland.co.jp)のころの解説を見つけました。
またこれらのページの元となったと思われるEDNのIntroduction to InterBaseExpressというアーティクルやIBPhoenixIntroduction To InterBase Express (IBX)というページも見つかりました(どちらも内容はほぼ同じだけどborland.co.jpの日本語のもののほうが詳しい)。

2010年9月21日

InterBase XE World Tour

ちょっと前にInterBaseの次期バージョンがInterBase XEになるという情報がありましたが、InterBase XE World Tourが2010/09/21(フランクフルト/ドイツ)、22(アムステルフェーン/オランダ)、29(モスクワ/ロシア)の日程で行われるようです。ここでもう少し具体的な情報が出てくるのかもしれません。

と書いた直後にInterBase XEのページがオープンになっています。新機能としては
  • Stronger password protection with SHA-1 cryptographic hash function
  • Support for Dynamic SQL in Stored Procedures
  • Support for increase buffer caches for improved performance
  • Optimized performance of large objects with Stream methods
  • Improved scalability with the ability to handle 8 times more data
  • 64-bit native binary application
  • Table-Specific Blocking Factors
  • Larger index key segment size
  • Support for larger external files
が挙げられていますが、一方で動作環境からWindows 2000(SP4)およびWindows Server 2003が削除されています。

元ねたはAndreano LanusseさんのSoftware Development, technologies and other matters #2

2010/09/24追記: InterBase XEのインストール、登録、ライセンスに関する情報とReadmeが公開されています。リリースは近いということでしょうか。

Installation, Registration, and Licensing Information for Embarcadero ® InterBase® XE
InterBase XE Readme

2010年9月17日

Windows Updateのデータストアをクリアする(Windows 2000/XP/Server 2003)

Windows Update/Microsoft Updateはデータベースやログを%windir%\SoftwareDistribution\DataStoreに保存します。このデータが極端に大きくなったり、データの不整合が発生してWindows Update/Microsoft Updateでエラーが発生することがあります。このような場合は以下の手順でDataStoreの内容をクリアする必要があります。
  1. サービスマネージャで"Automatic Update"サービスを停止する。
  2. %windir%\SoftwareDistribution\DataStoreフォルダの内容の全て削除する。
  3. サービスマネージャで"Automatic Update"サービスを開始する。

ただしDataStoreの内容をクリアすると、Windows Update/Microsoft Updateで非表示にした項目などの設定がすべてクリアされるので注意が必要です。

元ねたはWindows Update サイトで利用可能な更新を検索すると 0x80248013 エラーが表示される

2010年9月16日

フォルダのDACLを設定する

JEDI Windows Security Library(JWSCL)を使用してフォルダのセキュリティの詳細設定(随意アクセス制御リスト、Discretionary Access Control List(DACL))を設定する方法を解説した記事。興味深い。とりあえずメモ。

Setting Folder Security by JEDI Windows API

2010年9月15日

第17回エンバカデロ・デベロッパーキャンプ開催

会場なう。受け付け開始。地下2階でもFOMAはアンテナ2本。後は電源か。

Developer Camp Live (USTREAM)でストリーミング配信されています。

午前のジェネラルセッションは終了。G1のプレゼンテーションの資料は後で配布されるのでしょうか?
ところでTrack Aのセッション資料の半分はA4なんですが…。

無事に終了しました。スピーカおよび関係者のみなさま、おつかれさまでした。

USTREAMで中継したものはdeveloper-camp-japan on USTREAMで見られます。

2010/09/21追記: セッション資料および一部のセッションのサンプルコードがダウンロードできるようになっています。

第17回 エンバカデロ・デベロッパーキャンプ - セッション資料ダウンロード