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回 エンバカデロ・デベロッパーキャンプ - セッション資料ダウンロード

Microsoft Monthly Update 2010/09

今日はMicrosoftのセキュリティアップデートの日です。
MS10-061
MS10-062
MS10-063
MS10-064
MS10-065
MS10-066
MS10-067
MS10-068
MS10-069

2010年9月13日

JVCL 3.40リリース

JVCL(JEDI Visual Component Library)がアップデートされてVersion 3.40(JCL Version 2.2.1)になっています。

Browse JEDI VCL for Delphi Files on SourceForge.net

元ねたは公式フォーラムのThread: ANN: JVCL 3.40 Released!

2010年9月12日

IDE Fix Pack 3.5/DDevExtensions 2.1リリース

Andreas HausladenさんIDE Fix Pack 2009/2010/XEがアップデートされてVersion 3.5に、DDevExtensionsもアップデートされてVersion 2.1になっています。またDDevExtensions 2.0 snapshot for Delphi 2007もリリースされています(Delphi 2007用のDDevExtensionsの正式版は1.61)。

Andy’s Blog and Tools » IDE FixPack, DDevExtension and AsyncCalls updates for 2009/2010/XE

2010年9月10日

リモートデバッガの使い方

Delphi Wikiにリモートデバッガの使い方を説明したRemote Debugger - Delphi Programmingというページがあります。忘れがちなのでメモ。

てきとうな要約:
  • ターゲットマシンではリモートデバッガを"-listen"オプション付きで実行しておく。

  • Delphi 2009 ESD版にはリモートデバッガのインストーラがないので
    • bccide.dll
    • bordbk120.dll
    • bordbk120N.dll
    • comp32x.dll
    • DCC120.dll
    • rmtdbg120.exe
    をコピーして
    regsvr32 /s bordbk120.dll
    regsvr32 /s bordbk120n.dll
    とする。

  • リモートデバッグの対象となるプロジェクト(当然デバッグビルド)のオプションのリンカオプションで"(TD32)デバッグ情報"と"リモートデバッグシンボル"を含めるようにする。

  • ターゲットマシンにリモートデバッグ対象のアプリケーションをコピーしたら、[実行]→[プロセスのロード]で"リモート"を選択して、"リモートパス"にはターゲットマシン上のプログラムのフルパスを、"リモートホスト"にはターゲットマシンのIPアドレスを、"作業ディレクトリ"にはターゲットマシン上のプログラムの配置パスを、それぞれ指定し("パラメータ"は必要に応じて)、[読み込み]ボタンをクリックするとターゲット上でプログラムがロードされて実行可能になる。

元ねたはCannot get the remote debugger for Delphi 2007 to work correctly? - Stack Overflow

2010年9月9日

RAD Studio XE スニークプレビュー その6

一応スニークプレビューの最後のまとめということで。

シニアソフトウェアデベロッパのMat DeLongさんのところ。QAディレクタのChris Pattinsonさんのところ。Uwe Schusterさんのところ。Team JapanMichael Rozlogさんのところ。Twitterの某所さんのまとめ。DEKOさんのところ。Jeroen Pluimersさんのところ。Cary Jensenさんのところ。Robert Loveさんのところ。Andreas Hausladenさんのところ。Mason Wheelerさんのところ。A7Mさんのところ。Barry Kellyさんのところ。Darren Kosinskiさんのところ。Tim Del Chiaroさんのところ。Alexandru Ciobanuさんのところ。
またXE発売記念のキャンペーンをやるようです。
RAD Studio/Delphi/C++Buider 2005およびそれ以前のバージョンからは
XE Professional 特別アップグレードキャンペーン (2010/12/25まで)

RAD Studio/Delphi/C++Buider 2006およびそれ以降のバージョンからは
Delphi / C++Builder / RAD Studio XEシリーズ 早期バージョンアップ申込キャンペーン (2010/09/30まで)

2010年9月8日

Firebird 2.5がまもなくリリースへ

Firebird NewsFB 2.5 final is comingによれば、現在Firebird 2.5の最終版のリリースを準備中とのことです。

2010/10/01追記: Firebird NewsFirebird 2.5 will be released October 4, 2010によればFirebird 2.5は2010/10/04にリリースされるようです。またLaunch Webinarを2010/10/05 01:00(JST)から予定しているとのことです。

WindowsのSNP(Scalable Networking Pack)を無効にする

ITpro[Windows 7編]ネットワーク設定を標準で使ってはいけない - ITアーキテクトの「やってはいけない」:ITpro (要登録)という記事がありました。
SNP(Scalable Networking Pack)という機能がWindows Server 2003 Service Pack 2で導入されています。MicrosoftによるとSNP とは TCP に関するネットワーク処理を、ネットワーク インターフェース カード (NIC) および NIC のミニポート ドライバーを利用して最適化するためのテクノロジー及びその実装の総称です。ということですが、例によって熟成不足で、SNPを有効にしているとネットワーク関係が安定しなくなるなどの問題が生じているようです。この問題についてはMicrosoft日本法人のAsk the Network & AD Support Teamに詳しく解説されていますが、SNP の有効化により効果が期待できるような環境は、10 GbE 程度の NIC を搭載し、数 Gbps 程度の通信を頻繁に行うような環境となります。ということなので、通常の環境ではSNPを使用する必要は全くない、ということになります。ところがWindows Vista/7では標準でSNPが有効になっているため、以下のように明示的に無効化する必要があります。なおWindows 8/Server 2012ではRSSのみ既定で有効、TCP Chimney Offloadは既定で無効、NetDMAは機能削除となっています。

Windows Vista/Server 2008の場合
RSSおよびTCP Chimney Offloadを無効にするには管理者権限を持つコマンドプロンプトから
netsh int tcp set global rss=disabled
netsh int tcp set global chimney=disabled
とします。これに加えてNetDMAを無効にするためにレジストリの
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
のEnableTCPA(DWORD値)(存在しなければ作成する)の値を0に変更して再起動する必要があります。

Windows 7/Server 2008 R2の場合
RSS、TCP Chimney Offload、NetDMAを無効にするには管理者権限を持つコマンドプロンプトから
netsh int tcp set global rss=disabled
netsh int tcp set global chimney=disabled
netsh int tcp set global netdma=disabled
とします。

Windows 8/Server 2012の場合
RSS、TCP Chimney Offloadを無効にするには管理者権限を持つコマンドプロンプトから
netsh int tcp set global rss=disabled
netsh int tcp set global chimney=disabled
とします(NetDMAは機能削除されており、設定不要)。

現在の設定を確認するにはコマンドプロンプトで
netsh int tcp show global
とします。

なおWindows 7/Server 2008 R2以外でSNPをを有効にする場合は修正モジュール、修正プログラム、回避策の適用が必要ですので注意してください。

2011/07/01追記: 現在の設定の確認方法を追加しました。

2013/03/07追記: Windows 8/Server 2012に関する記述およびマイクロソフト Network & AD サポートチーム公式ブログのWindows 8/Server 2012に関する記事のリンクを追加しました。

2010年9月7日

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

2010/09/17 12:30-13:30(JST) Webセミナー - デベロッパーキャンプ・リキャップ「いよいよ登場!RAD Studio XEの新機能」
2010/09/21 17:30-18:30(JST) Webセミナー - デベロッパーキャンプ・リキャップ「いよいよ登場!RAD Studio XEの新機能」

いずれもエンバカデロ Webセミナー 参加申込フォームから申し込むことができます。

2010/09/27追記: RAD Studio XE製品デモのページから"Webセミナービデオ - デベロッパーキャンプ・リキャップ「いよいよ登場!RAD Studio XEの新機能」"を見られるようになっています(mp4形式)。

2010年9月5日

FastMM 4.96リリース

FastMMのVersion 4.96がリリースされています。いくつかの機能拡張のほかにDelphi/C++Builder XE対応も行われています。

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

2010年9月3日

RAD Studio XEのhotfixを準備中

DEKOさんが予言をしている DEKOさんが予言をしているようですが、公式フォーラムのThread: Delphi XE memory leak?にあるように、Delphi 2009/2010/XEに
var
  i: Integer;
begin
  if i < (
end;
と")"で閉じていない"< ("があるときにメモリを食い尽くしてしまうという不具合があるようです(QC87753としてレポートされています)。 John Kasterさんによれば既にhotfixが準備されているとのことです。またAndreas Hausladenさんによる非公式なバイナリパッチ(de) (en訂正分)も公開されています。

ちなみにDelphi 2009/2010のhotfixが用意されているのかどうかはわかりませんが、必要な方は上記のスレッドでリクエストしてみたらいいと思います。