2009年10月8日

タッチアプリケーションのデモ

Cris Bensenさんが先日のCodeRage 4で使用したタッチアプリケーションのデモについて説明しています。

Touch Demo Part IではまずフォームにDirect2Dサーフェースを用意します。WM_ERASEBKGNDメッセージハンドラではバックグラウンドの消去をしないようにして、オーバライドしたPaintでダミーの描画を、同じくオーバライドしたResizeでDirect2Dサーフェースのリサイズを行うようにします。

Touch Demo Part IIでは1秒あたりの描画フレーム数を計測、描画する処理を追加して、10msec毎に再描画を発生させます。

Touch Demo Part IIIではタッチした位置をグラフィカルに表示するためのTGlowSpotとそのリストを用意して、これらをPaintで描画するようにします。WM_TOUCHメッセージハンドラでタッチしたポイント(複数)に対応したTGlowSpotを生成するようにして、最後にRegisterTouchWindowUnregisterTouchWindowでこのフォームでWM_TOUCHメッセージが発生するようにします。

Touch Demo Part IVではイナーシャ(inertia/慣性)をサポートするためにTGlowSpotに_IManipulationsEvents COMインタフェースを追加してその処理を行わせ、最後にマウス動作をタッチ動作に統合します。

デモはこれで完成、ということでソースコードがCodeCentralで公開されています。

27469 Touch Demo

2009/11/20追記: Part IVの内容を追加しました。

2009年10月1日

RAD Studio 2009対応 TeeChart Standard 8.05アップデート

RAD Studio 2009対応 TeeChart Standard 8.05アップデートがリリースされています。RAD Studio 2010に含まれるものと同等になるようです。

RAD Studio 2009対応 TeeChart Standard 8.05アップデート
27339 TeeChart Standard 8.05 for RAD Studio 2009
Release Notes

Asphyre Sphinx

Delphi/C++Builderで2D/3Dグラフィックを扱うためのライブラリとしてはOpenGLのラッパであるGLSceneがメジャーどころですが、Stack Overflowを眺めていたらAsphyre Sphinxというフレームワークを見つけました(ライセンスはMPL 1.1)。Delphi 2006/Turbo Delphi/Delphi 2007対応(Delphi 2009/2010対応はまだ)で、DirectX 7/DirectX 9/OpenGLをサポートしているとのことです。

元ねたはStack Overflow3D graphics in Delphi/Native TForm GUIs

2009年9月29日

IDE Fix Pack 2.71リリース (RAD Stdio 2009のみ)

Andreas HausladenさんIDE Fix Pack 2009がVersion 2.71にアップデートされています

Andy’s Blog and Tools » IDE Fix Pack 2.71 for RAD Studio 2009 (only)

SourceForge TurboPowerプロジェクト

2003年にオープンソース化されたTurboPowerプロジェクト(MPL 1.1)ですが、Nick Hodgesさんが管理者(tpsfadmin)となり、公式な形で提供されていく(But I should note that this isn’t an "officially sponsored" Embarcadero deal. This is at best "semi-official".)ことになったそうです(オープンソース化された経緯については旧Delphi-MLの73894以下のスレッドが参考になります)。現在TurboPowerプロジェクトには以下のプロジェクトが存在しています。

2009年9月28日

RAD Studio 2010の新機能その13

VCL/TTimeSpanレコード型
TTimeSpanユニットに時間差を表すTimeSpanレコード型が追加されています。詳細はWings of WindさんRAD Studio 2010 Review #13: – The Persistence of Time

コンパイラ/RTTI
新しいRTTIを利用して別パッケージ内に存在する未知のクラスのインスタンスを生成する方法。詳細はTeam JapanDelphi 2010: RTTI新機能を試す(動的なインスタンス生成)

これで持ちネタは終了です(というかこの2つを書くのを忘れていました)。

2009年9月25日

2009年9月24日

C++Builder 2010のBoostライブラリサポート

David DeanさんがC++Builder 2010におけるBoostライブラリ(日本語訳)のサポート状況を公開しています。またCodeCentralからパッチ済のBoost 1.39.0がダウンロードできるようになっています。

David Dean » C++Builder 2010 Boost support
27358 C++Builder 2010 Patched Boost 1_39_0

2009年9月17日

RAD Studio オンラインヘルプシステム

ちょっと古い話題ですが、RAD Studioのヘルプシステムがwiki上に再構築されています。

英語版(オリジナル)
日本語版
コードサンプル

Dee Ellingさんによれば、
  • wikiの内容をMicrosoft Help2形式に直接変換できる(Help Updateは2009/09と2009/11に予定されている)。
  • 内容を簡単に編集、更新できる(当社比)。
  • 登録ユーザはディスカッションタブに書き込むことができる(英語版のみ)。
  • 英語版以外のものは翻訳したものが流し込まれる。
  • wikiへのログオンは現時点ではEDNとは異なるシステムになっている(将来はシングルサインオンシステムに統合したい)。
だそうです。システムのレスポンスがあまりよくないのが難点ですね。

元ねたはDee EllingさんWiki Wiki Help2 Wiki

2009年9月15日

クラスコンストラクタとクラスデストラクタ

Delphi 2010で追加されたクラスコンストラクタクラスデストラクタですが、その名に反してクラスだけではなくレコード型に対しても定義することができます。またジェネリクスを含むクラス/レコード型に対するクラスコンストラクタ、クラスデストラクタは複数回呼び出されることがあります(Delphiのジェネリクスの実装がC#やJavaのようにライブラリによるものではなくC++のようにコンパイラによるものであることを考えれば当然なのかもしれませんが)。

Class constructors and Generics | YAPB

元ねたはNick HodgesさんRandom Thoughts on the Passing Scene #127

2009年9月13日

Delphi 2010のRTTIと属性

Robert Loveさんによる、Delphi 2010の新機能の一つであるRTTI(Run Time Type Information)の拡張と属性(Atributes)についての解説記事です(全1213回の予定)。
  1. Delphi 2010 RTTI - The basics (新しいRTTI(en)の基本的な使用方法)
  2. Using Attributes and TCustomAttribute descendants (属性として使用するTCustomAttribute(en)とその派生クラス)
  3. Exploring TRttiType and descendants in Depth (実行時に取得した型情報を扱うためのTRttiType(en)とその派生クラス)
  4. Introduction to TValue (新しいRtti.pasのTValue(en)レコード型)
  5. Exploring TRttiMember Descendants in depth (Part I) Properties and Fields (RTTI情報を扱うためのTRttiMember(en)とその派生クラスで、フィールドを扱うTRttiField(en)とプロパティを扱うTRttiProperty(en))
  6. TRttiContext.Create() & TRttiContext.Free() (TRttiContextのCreateとFreeがコンストラクタ、デストラクタ呼出ではないことについて)
  7. Exploring TRttiMember Descendants in depth (Part II) Methods (TRttiMember(en)の派生クラスのTRttiMethod(en)経由でメソッドを呼び出し(invoke))
  8. TValue in Depth (TValue(en)レコード型の詳細)
  9. INI persistence the RTTI way (RTTIの属性を利用してクラスインスタンスの情報を永続化)
  10. Xml Serialization - Basic Usage (RTTIを利用してクラスインスタンスをXMLにシリアライズ/デシリアライズ)
  11. Xml Serialization - Control via Attributes (属性でXMLシリアライズ化を制御)
  12. Attributes: Practical Example- Object to Client Dataset
  13. Types by Package... Dynamic plug-in systems.

元ねたはRob’s Technology Corner: Delphi 2010 - RTTI & Attributes

2009/09/15追記: Introduction to TValueのリンクを追加しました。
2009/09/16追記: Exploring TRttiMember Descendants in depth (Part I) Properties and Fieldsのリンクを追加しました。
2009/09/18追記: Exploring TRttiMember Descendants in depth (Part II) Methodsのリンクを追加しました。
2009/09/23追記: TValue in Depthのリンクを追加しました。
2009/10/08追記: INI persistence the RTTI wayおよびXml Serialization - Basic Usageのリンクを追加しました。
2009/10/09追記: TRttiContext.Create() & TRttiContext.Free()およびXml Serialization - Control via Attributesのリンクを追加しました。

RAD Studio 2010で拡張されたToolsAPIのサンプルコード

Chris HesikさんがRAD Studio 2010で拡張されたToolsAPIのサンプルコードを公開しています。

27315 ToolsAPI demo for plugging into the code editor in Delphi 2010

元ねたはChris’ CodeGear Debugger Blog » RAD Studio 2010 ToolsAPI: Plugging into the code editor space in the IDE

RAD Studio 2010のUML機能

Michael RozlogさんがRAD Studio/Delphi/C++Builder 2010のUML機能、検査(オーディット)機能、計測(メトリクス)機能、ドキュメント生成機能に関するwhitepaperを公開しています。

RAD Studio 2010 UML and Audits and Metrics: not the old UML!

Delphi 2010ではPro SKUでも限定的に検査機能、計測機能が使用できるようになっています。

元ねたはMichael Rozlog » Blog Archive » New UML whitepaper for RAD Studio 2010 (Delphi and C++Builder 2010)

CodeRage 4の動画公開

2009/09/08-11(PDT)に行われたオンラインカンファレンスCodeRage 4のセッションの動画が公開されています(EDNでログインする必要があります)。

CodeRage 4 Sessions & Replays

RAD Studio Roadmap

DelphiのプロダクトマネージャであるMichael RozlogさんがRAD Studioのロードマップを公開しています。

RAD Studio Roadmap

が、全然新しくないような。Newsflash: The Roadmap. « Wings of Wind Softwareでもツッコミまくりです。見た限り新しい情報は5枚目で赤線で消されている"Windows"くらいでしょうか。

2009年9月10日

Firebird 2.1.3リリース

Firebird Ver2.1.3がリリースされています。

Firebird Development: Database Engine
Firebird File Repositories(download)
Firebird 2.1 Release Notes

Firebird 2.1以降には"UPDATE OR INSERT文"なんていうのがあるんですね。

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

2009年09月02日に大阪で開催された第14回エンバカデロ・デベロッパーキャンプのセッション資料とダイジェストビデオが公開されています。

第14回 エンバカデロ・デベロッパーキャンプ - 資料ダウンロード
セッションダイジェストビデオ「ついに登場!Delphi/C++Builder 2010の概要」

2009年9月9日

Microsoft Monthly Update 2009/09

今日はMicrosoftのセキュリティアップデートの日です。
MS09-045
MS09-046
MS09-047
MS09-048
MS09-049

MS09-048のWindows 2000/XP用の更新プログラムが存在しない(対応不能)件はいかがなものかと。

2009年9月8日

Delphi 2010は13をスキップしてVer14に

Delphi 2009はVer12だったので、順当にいけばDelphi 2010はVer13となるはずでした。が、キリスト教文化圏の悪癖で(というかそのことでグダグタいわれないために)13をスキップして14としたようです(確かにQCクライアントでも2010にはVer14が割り当てられています)。このあたりの経緯についてはAllen BauerさんのThe Oracle at Delphi » What happened to version 13?を参照。

2009年9月7日

RAD Studio 2010の新機能その12

コンパイラ/Delphi
新しい"delayed"ディレクティブでDLL内の関数のロードを実行直前まで遅延することができるようになります。詳細はAllen BauerさんProcrastinators Unite… Eventually!とその続きのExceptional Procrastination
また高橋さんがdelayedディレクティブを実際に使用する方法を紹介しています。詳細はTeam JapanDelphi 2010: 新機能 delayed ディレクティブ

IDE/言語構成ツール
言語構成ツールでIDEのUIとライブラリの言語を切り替えることができます。詳細はAndreas HausladenさんのRAD Studio 2010 now speaks multiple languages

DataSnap/REST+JSON
DataSnap上でREST経由でJSON形式のデータをやり取りする方法を高橋さんが紹介しています。詳細はTeam JapanDelphi 2010: DataSnap 2010でREST,JSONを試す

IDE/オブジェクトインスペクタ
コンポーネントのプロパティエディタをオブジェクトインスペクタ最下段の"verbs"エリアからも呼び出すことができるようになります。詳細はPaweł GłowackiさんRAD Studio 2010 - Object Inspector "verbs" area

VCL/JSON
TJSONMarshal/TJSONUnMarshalを使用してクラスインスタンスをマーシャリング(シリアライズ/デシリアライズ)することができます。詳細はDaniele TetiさんCustom Marshalling/UnMarshalling in Delphi 2010

コンパイラ/RTTI
RTTIについてのまとめ。
  • TRTTIContextはレコード型で、Create/Freeで生成、破棄する必要はありません。
  • RTTI用のデータで実行ファイルのサイズは大きくなります。
  • RTTIを使用するとprivateメンバにもアクセスできます($RTTI指令でメソッド、フィールド、プロパティの別に可視範囲を指定します)。
  • 実行時情報を元にどのメソッドでも呼び出すことができます。
  • TValueはバリアント型のように使用できます。
  • 詳細はWings of WindさんCommunity pulse: CodeRage 4, RTTI Reloaded

    コンパイラ/クラスコンストラクタ/クラスデストラクタ
    従来initialization/finalization部に記述していた処理をクラスコンストラクタ、クラスデストラクタに置くことができるようになります。クラスコンストラクタはinitialization部よりも前に、クラスデストラクタはfinalization部よりも後に実行されることが保証されています。これによりクラス依存のコードをそのクラスの外側に記述する必要がなくなり、リンカが不要なコード/データを外すことが容易になります。詳細はAllen BauerさんClass (, Static, or Shared) Constructors (and Destructors)とその続きのClass Constructors. Popping the hood.

    2009年9月6日

    IDE Fix Pack 2.7/VCLFixPack 1.4リリース

    Andreas HausladenさんIDE Fix Pack 2007およびIDE Fix Pack 2009/2010がVersion 2.7に、VCL Fix PackがVersion 1.4にそれぞれアップデートされています(Delphi 2010にはVCL Fix Packは必要ないとのことです)。

    Andy’s Blog and Tools » New IDE Fix Pack for 2007, 2009 and 2010

    2009年9月4日

    Delphi 2010 Handbook

    Marco Cantuさんによれば、Delphi 2010 Handbookを執筆中とのことです。発売まではまだしばらくかかるようですが、ebookのサブスクリプションという形で書きあがった分からリリースしていくようなことを考えているとのことです。でも英語をモニタ上で読むのはつらいので紙媒体のほうがいいかな…。

    Delphi 2010 Handbook in the Works

    2009年9月3日

    Indy10のTIdFTPコンポーネントのパッシブモードのGetメソッドの不具合

    Delphi 2007またはそれ以前のバージョン用のIndy10の最新ナイトリ(Ver10.2.3 r3568)のTIdFTPのGetメソッドには、パッシブモードで呼び出したときにTransferTimeoutプロパティの値が使用されずに永久に受信待ちになってしまう不具合があります。
    TIdFTP.InternalGetメソッド内でInitDataChannelを呼び出してFDataChannel.IOHandlerのReadTimeoutにTransferTimeoutを設定しているのですが、DataChannelのReadTimeoutがデフォルトの-1のままになっているため、LPasvCl.Connectの呼び出しの内部でDataChannel.IOHandler.ReadTimeoutにFDataChannel.ReadTimeoutを設定して結果的にTransferTimeoutの値が無視されてしまう、というのが原因と思われます。
    回避策としてはOnDataChannelCreateイベントでDataChannel.ReadTimeoutにもTransferTimeoutを設定してしまう、という方法が考えられます。
    procedure TDataModule1.IdFTP1DataChannelCreate(ASender: TObject;
                                                   ADataChannel: TIdTCPConnection);
    begin
    
      if (ASender <> nil) and (ASender is TIdFTP) then
      begin
        if (TIdFTP(ASender).Passive = True) and
           (ADataChannel <> nil) and (ADataChannel is TIdTCPClientCustom) then
        begin
          TIdTCPClientCustom(ADataChannel).ReadTimeout := TIdFTP(ASender).TransferTimeout;
        end;
      end;
    
    end;
    

    2009年9月1日

    JVCL 3.38リリース

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

    Browse JEDI VCL for Delphi Files on SourceForge.net

    JCLが2.0でDelphi/C++Builder 5、Kylix 3、Delphi.netをサポートしなくなったため、JVCLもこれらのバージョンでは動作しないと思われます(JVCL 3.37 with JCL 1.105が最終バージョン)。

    トライアル版にはコマンドラインコンパイラが付属しておらずそのままではインストールできないため、JCL 2.0.1とJVCL 3.38のバイナリインストーラをAndreas Hausladenさんが用意してくれています。ダウンロードは下記のページから。

    元ねたはAndreas HausladenさんAndy’s Blog and Tools » JEDI Code Library 2.0.1 and JVCL 3.38

    2009/09/06追記: Andreas Hausladenさんによると、JVCL 3.38はDelphi 2010のdelayedディレクティブの影響でテーマ描画関係がうまく動作しなくなってしまっているようです(JCLには影響しないとのこと)。
    Andy’s Blog and Tools » Once upon a delayed JVCL time…

    Windowsユーザエクスペリエンスガイドライン

    MSDNライブラリでVisual Style(Windows Vista/7)に対応した"Windows ユーザー エクスペリエンス ガイドライン"(UXガイド)が公開されています。PDF版もあります(775ページもありますね)。

    Windows ユーザー エクスペリエンス ガイドライン

    元ねたはCrystal Dew R&D LabsさんのWindows ユーザー エクスペリエンス ガイドライン

    2009年8月27日

    RAD Studio 2010の新機能その11

    dbExpress/SOAP
    WDSLインポートウィザードを含むSOAP 1.2サポートが追加されます。詳細はWings of WindさんRAD Studio 2010 Review #12: – Tooling, Help, UnicodeChris BensenさんRAD Studio 2010 - SOAP 1.2

    DataSnap/HTTPサポート
    DataSnapでプロトコルとしてHTTPを使用するときにサーバ側をISS+ISAPIのDLLで構成することができます。詳細はJim TierneyさんDataSnap 2010 HTTP support with an ISAPI dll

    コンパイラ/Delphi
    as演算子、is演算子でインタフェース参照から元のクラス(インスタンス)にキャストできるようになります。詳細はMalcolm GrovesさんCasting an Interface Reference to the Implementing Class in Delphi 2010

    コンパイラ/RTTI
    クラスやそのメンバに属性(attribute)を付加(annotate)し、RTTIでそれを取得することにより、実行時に属性情報による処理を行うことができます。詳細はMalcolm GrovesさんMore Attributes in Delphi 2010

    IDE/リファクタリング
    属性に対してもリファクタリング機能が使えます。詳細はMalcolm GrovesさんRefactoring Support for Attributes in Delphi 2010

    DataSnap/JSON
    DataSnapでTDBXCallbackを使用してサーバメソッド内からコールバック関数を呼び出すことができます。詳細はAdrian AndreiさんDatabase Connectivity : Don’t call me, I’ll call you…

    2009年8月26日

    RAD Studio 2010の新機能その10

    ネタをためてしまうと駄目ですね。毎日少しずつでも書かないと…。
    Database/dbExpress
    dbExpressでFirebirdのサポートが追加され、BlackfishSQL、DataSnap、Sybase ASA (Adaptive Server Anywhere)、Sybase ASE (Adaptive Server Enterprise)、IBM DB2、Firebird、Informix、Interbase、Microsoft SQL Server、mySQL、Oracleといったデータソースを扱えるようになります(非常に残念なことにInterBase/FirebirdはProfessional SKUに含まれませんが)。またMidas.dllのソースコード(C++)が付属するようになります。詳細はWings of WindさんRAD Studio 2010 Review #10: – Database Jewels。またAndreano LanusseさんによるビデオもNew dbExpress driver for Firebird in Delphi 2010 and C++Builder 2010で見られます。

    VCL/マルチタッチ
    実機を使えば簡単にマルチタッチを扱うアプリケーションが作れますよ、というお話。詳細はTeam JapanさんDelphi 2010/C++Builder 2010: マルチタッチを試す

    DataSnap/サーバ-クライアント通信
    ウィザードでDataSnapサーバを簡単に作成でき、これを実行しておけばDataSnapクライアントから呼び出すサーバ側のメソッドをプロパティエディタ上からドロップダウンで選択するだけで簡単に呼び出しコードができてしまいます。またクラスインスタンスをJSONでシリアライズして転送することもできます。詳細はWings of WindさんRAD Studio 2010 Review #11: – DataSnap。またDataSnap上でのJSONの扱いかたについてはAdrian AndreiさんDatabase Connectivity : JSON Types for Server Methods in DataSnap 2010で、DataSnapを使用した軽量クライアントについてはTeam JapanさんDelphi 2010: DataSnapでOracle11gに接続するで、それぞれ詳しく説明されています。

    RAD Studio 2010発売紹介ビデオ

    RAD Studio 2010の発売にともなって公式ページがRAD Studio 2010 エヴァリュエーションセンターになり、RAD Studio 2010についてMichael Swindellさん(製品戦略担当副社長)とJan Libandさん(マーケティング担当副社長)が紹介するビデオが追加されています。2010の次はクロスプラットフォームと64bit対応、という方向性はまだそのままのようです。

    2009年8月25日

    W32.Induc その2

    この件に関するFAQの翻訳がリリースされています。

    W32/Induc-A Virus (Compile-A-Virus)に関するQ&A

    単純に今回の(現在の)ウィルスだけを考えればこれでいいのかもしれませんが、このFAQにある対応をくぐりぬけるような変種は簡単に考え付きます。この問題を完全に回避するには、ライブラリパスにリストアップされているLib、Bin、Imports、Projects\Bpl、Lib\Indy10およびデバッグdcuパスにリストアップされているLib\Debug、Lib\Debug\Indy10のように既知のパスに既知のユニット名のdcuが格納されているものを全て置き換えられないようにする必要があります(例えばIndy10に属するユニットのmalware版をLibに配置すればこちらがリンクされてしまいますよね)。

    そのための方法としては、常に削除+既知でない場所に配置したバックアップからコピーする、ということも考えられますし、あるいはハッシュを保存しておいてそれを比較して検証するようなことでもいいかもしれません。なにかツールを作成してみますか…。

    Delphi 2010/C++Builder 2010/RAD Studio 2010リリース

    予定通りDelphi 2010/C++Builder 2010/RAD Studio 2010が発売開始になりました。現時点ではESD(Electronic Software Distribution)版のみで、パッケージ版は2009/09/中旬予定とのことです。残念ながら開発環境からWindows 2000が外れてしまいました。あとは2009で導入されたPROFESSIONAL エディションおよび PROFESSIONAL ACADEMIC エディションの DB Express 配備制限に適用される追加条項の影響によりProfessional SKUでdbExpress経由のリモートデータベースアプリケーションが作れなくなったこともあり、導入は見合わせとはいわないまでも微妙です。本格導入は遠のいたかも…。

    Delphi® 2010とRAD Studio™製品ファミリー新バージョンが 本日、世界同時発売開始、タッチサポートも搭載

    License Terms for Delphi 2010, C++Builder 2010 and Embarcadero RAD Studio 2010
    Delphi Prism 2010 使用契約

    Embarcadero Delphi 2010 および C++Builder 2010 のリリース ノート
    Delphi Prism 2010 リリース ノート

    Embarcadero Delphi 2010 および C++Builder 2010 のインストール ノート
    Delphi Prism 2010 のインストール ノート

    RAD Studio 2010 Released!

    2009年8月21日

    W32.Induc

    既に各所で報じられていますが、DelphiのVer4-7を経由して広がるコンピュータウィルスが報告されています。現時点での危険性は低いようですが、この手法を模倣したもっと凶悪なmalwareの出現の可能性を考えると、早期に対策するべきだと思われます。
    まず確認方法ですが、Delphiのインストール先のLibフォルダにsysconst.bakが存在し、sysconst.dcuのタイムスタンプがつい最近になっているという場合、ウィルスに感染している可能性が濃厚です。この場合、Delphiをアンインストールして、Delphiのインストール先フォルダを完全削除し、再インストールするのが望ましいと思われます(再インストールが難しい場合は正常なsysconst.pasをコンパイルしてsysconst.dcuを再生成する方法もありますが、あまりお勧めしません)。
    また対策としては今のところとりあえず怪しいプログラムをいきなり実行しない、ということぐらいでしょうか(sysconst.bakを作っておくという手はいつまで通用するのかわからないので)。Allen Bauerさんによれば、

    私たちは、皆さんがこのウイルスに感染しているかどうかを調べる方法、そして、感染していた場合の推奨される対応方法についてまとめる作業を進めています。この推奨されるステップでは、皆さんが再感染しないようにガードされるように作業しています。

    ということなので、正式なアナウンス待ちということで。当該ディレクトリをログオンユーザの権限で書き込みできないようにする、という手も考えられますが…。

    ちなみに第一発見者はロシアのGunSmokerさんのようです。

    参考URL:
    Team Japan: Delphiをターゲットとしたウイルスの脅威について
    Embarcadero Discussion Forums: Virus use old Delphi versions to spread ...
    Symantec: W32.Induc.A
    Sophos security analysis: W32/Induc-A Win32 executable file virus (Virus.Win32.Induc.a)
    マカフィー: W32/Induc | ウイルス情報
    エフセキュアブログ: 0wn1ng Delphi(0wn1ng Delphi - F-Secure Weblog : News from the Labの翻訳)
    Viruslist.com: Analyst's Diary

    2009/08/25追記: この件に関するFAQがリリースされています。すぐに翻訳されると思いますが、とりあえず英文のリンクを。
    Frequently Asked Questions about the W32/Induc-A Virus (Compile-A-Virus)

    2009年8月18日

    RAD Studio 2010 スニークプレビュー その3

    RAD Studio 2010の公式ページにスニークプレビュー第3弾"Make the Connection with RAD Studio 2010"(日本語版:"RAD Studio 2010のデータベース接続")が追加されています。内容は予告どおりデータベース/DataSnap接続関係です。
    • Firebird 2.1/1.5サポートの追加とInterBase 2009、Microsoft SQL Server 2008、Oracle 11g、MySQL 5.1のドライバの更新
    • DataSnapによるマルチティア接続
    • DataSnapサーバを簡単に作成
    • DataSnapサーバとクライアント間のデータストリームのフィルタリング
    • RESTful Web ServicesとJSONサポートの追加

    これでいよいよ来週はリリースということに…あれ?カウントダウンがなくなってる…。

    RAD Studio 2010の新機能その9

    VCL/OnGestureイベント
    TTouchManagerのOnGestureイベントにはジェスチャに関する情報、位置、アングル、距離、慣性(イナーシャ)ベクタがTGestureEventInfoレコード型で渡されます。例えばInteractiveGestureOptionsにigoPanInertiaを指定するとEventInfo.GestureIDがigiPanのOnGestureが連続して発生するようになります(最初の1回はEventInfo.FlagsにgfBeginが含まれていて区別可能)。詳細はSeppy BloomさんRAD Studio 2010 - Touch & Gestures Part 2

    2009年8月17日

    RAD Studio 2010の新機能その8

    コンパイラ/RTTI
    TCustomAttributeクラスを派生してカスタム属性を定義し、これをクラスやクラスのメンバに適用することで、RTTIを使用して実行時にその属性を取得できるようになります(でいいのかな?後で再確認)。これを利用してORマッパ(object-relational mapper)のようなものも作れます、ということのようです。詳細はMalcolm GrovesさんRTTI and Attributes in Delphi 2010Wings of WindさんRAD Studio 2010 Review #9: – Attributes, The new RTTI and DB Access

    2009年8月15日

    RAD Studio 2010の新機能その7

    VCL/グラフィック
    PNGとBMPでアルファチャンネルをサポートするようになります。TDirect2DCanvasでDirect2Dをサポートします。ジェスチャの形状をCanvasに描画することもできます。詳細はWings of WindさんRAD Studio 2010 Review #8: – And now some feedback from us

    VCL/新しいユニット
    Chris Bensenさんによる新しく追加されたユニットの説明です。Delphi 2010 - New Units

    2009年8月13日

    RAD Studio 2010の新機能その6

    IDE/メニュー項目
    表示メニューからメッセージペインが開けるようになったり、プロジェクトメニューからQA測定、QA検査が呼び出されるようになったり、コンポーネントメニューからWSDLインポータが呼び出せるようになったりします。詳細はTeam JapanRAD Studio 2010: メニューの地味な変更

    VCL/タッチキーボード
    VCLのTouchカテゴリのTTouchKeyboardコンポーネントで仮想キーボードを使用することができるようになります。ファンクションキーがないとか、日本語環境で標準的な109キーレイアウトではないとか、微妙な気がしますが…。Windowsキーがない件については"Microsoftのスクリーンキーボードとは違うアプローチを選択した(we decided to take a different approach to the Touch Keyboard than Microsoft did with their on screen keyboard)とのことです。詳細はTeam JapanRAD Studio 2010: タッチキーボードChris BensenさんRAD Studio 2010 - Touch Keyboard。Chris Bensenさんのコメントによれば、101/102/106キーボードレイアウトが入力ロケールにより選択されるが、アジア系言語は日本語だけで、中国語、韓国語、アラビア語は間に合わなかった、とのことです。

    コンパイラ/delayed属性
    externalな関数にdelayed属性を付加することでその呼び出しまでバインドを遅らせることができるようになります。詳細はWings of WindさんRAD Studio 2010 Review #6: VCL – Language enhancements for Touch and Gestures

    VCL/WICサポート
    WIC(Windows Imaging Component)をサポートするようになります(WICはWindows XP SP3以降で使用可能です)。BMP/GIF/ICO/JPEG/PNG/TIFF形式およびRAW形式の画像をWICで経由扱うことができます。詳細はWings of WindさんRAD Studio 2010 Review #7: – A historical moment

    VCL/IOUtilsユニット
    新しく追加されたIOUtils.pasでディレクトリの列挙やファイルの列挙をfor-in構文(と無名メソッド)で簡単にできるようになります。詳細はMalcom GrovesさんIOUtils.pas – OO File System Access in Delphi 2010。RANさん、情報ありがとうございます。

    2009年8月12日

    Microsoft Monthly Update 2009/08

    今日はMicrosoftのセキュリティアップデートの日です。
    MS09-036
    MS09-037
    MS09-038
    MS09-039
    MS09-040
    MS09-041
    MS09-042
    MS09-043
    MS09-044

    2009年8月11日

    RAD Studio 2010 スニークプレビュー その2

    RAD Studio 2010の公式ページにスニークプレビュー第2弾"Free Your Customer From Keyboards with Dazzling Touch Based User Interfaces"(日本語版:"タッチベースのユーザーインタフェイスでキーボード操作から解放!")が追加されています。内容は予告どおりタッチ、ジェスチャなど"Natural Input"関係です。
    • タッチ対応
    • Windows 7のマルチタッチ
    • カスタムジェスチャ
    • 仮想キーボード
    • 既存のアプリケーションのタッチ/ジェスチャ対応

    今回はChris Bensenさんの部屋からです。が、ん?オリジナルと日本語版で尺が違う…オリジナルは2分37秒、日本語版は8分49秒ってどういうことでしょう?

    次回は2009/08/18でFirebird、DataSnapなどのデータベース接続についてとなっています。

    ところでhttp://blogs.embarcadero.com/のwebサーバが落ちてます(2009/08/11 17:08JST現在)。pingは通るようですが。2009/08/12 10:20JST現在で復旧しています。2009/08/12 17:27現在でまた落ちてます。なんか不安定です。2009/08/13 10:20現在で復旧しています。

    2009/08/12追記: オリジナルも8分49秒のものに入れ替えられています。

    Delphi 2010 プレビュー その5 まとめ

    2009/08/06に行われたDelphi/C++Builder次期バージョンプレビュー会のまとめなど。

    まずここまで出てこなかった項目について。
    • 言語構成ツールでIDEのUIやリンクするライブラリの言語を切り替えられます。切り替えはインストール時に言語(英語、ドイツ語、フランス語、日本語)毎にインストール対象としたものから選択するようになります(例えば英語、日本語とインストールしておけばこの2ヶ国語間で切り替えられる)。

    • トランスレーションリポジトリについても、事前翻訳されたリポジトリが多数用意されており、自動翻訳を使用することで、より簡単に国際化アプリケーションを作成することができるようになります。

    • RTTIの拡張はProject ChromiumのライトウェイトORマッピングを実現するためにも必要だったようです。

    • クラスエクスプローラのクラス階層図はSVG形式でエクスポートできるそうです。

    • RAD Studio 2010はAll-AccessのInstantOn上で動作します。

    • Subversion対応は見送られたようです。VCSを組み込む上で必要なサポートはOTA上に用意されているようですが。

    • PostgreSQLは日本以外ではマイナーなので対応しないようです。QC41013が再度Openされたらみんなでvoteしましょう。

    • 発売は意地でも2009/08/25(PDT)らしいです。

    プレビュー会でいろいろ見ての感想その他。
    • 言語構成ツールによる言語の切り替えのサポートは、日本語ユーザが英語を基本言語とする国際化対応アプリケーションを作成する上で嬉しい機能です。これで英語版dcuの取り出し、差し替えとか不毛なことをしなくて済みます。

    • 全体としては地道に細かい改善を積み重ねた、という印象です(全く新しいのはジェスチャ関係とTDirect2DCanvasくらいでは?)。マーケティング的にはWindows 7に正式対応、でしょうけれども。

    • DataSnapはもっと実用面を考えたプロモーションが必要だと思います。こういうシステムでこういうように使うと効果的ですよ、といったところを。

    • RAD Studio 2010は「買い」か?ですが、2009ユーザは「買い」でしょう。バグもたくさん取れているようですし。では2007以前のユーザにとってはどうでしょう?これはいつ"Unicode Ready"に移行するか、ということになりますが、次のCommodoreやDelphi Xで少なからず混乱する可能性を考慮すれば、2010は一つのタイミングだと思います(次の次くらいまでスキップするのも一つの見識ではありますが)。

    • All-AccessならDelphi 2007もDelphi 2009も使えますよ、というのはアピールするらしいです。

    • 製品ロードマップは早く更新したほうがいいと思います。

    • マルチタッチのデモに使ったHPのノートPCは前日に秋葉原で買ってきたそうです。

    Delphi 2010 プレビュー その4 データベース

    2009/08/06に行われたDelphi/C++Builder次期バージョンプレビュー会のまとめです。データベース関係。
    • dbExpress
      Firebirdサポート追加
      正式にdbExpressでFirebird 1.5/2.1に接続できるようになります。
      各データベースの最新版に対応
      InterBase 2009、Microsoft SQL Server 2008、Oralce 11g、MySQL 5.1に対応します。
      SQL Native Clientドライバ
      Windows 2000でも動作するSQL Native Client 2005用ドライバとMARS(Multiple Active Results Sets - 複数のアクティブな結果セット)サポートの追加。
      date/time関数
      ロケール依存書式文字列とロケールに基づくTimestampのオフセットのサポート。
      MIDAS.DLLソースコード
      MIDAS.DLLのソースコードが添付されるそうです。
      Web Service SOAP 1.2クライアントのサポート

    • DataSnap
      新規DataSnapサーバ、新規DataSnap WebBrokerアプリケーションのウィザードの追加
      HTTPコミュニケーションとインプロセスコネクティビティをサポート
      HTTPトンネリングサポート
      ファイアウォール外のクライアントで使用します。
      DataSnap HTTPリクエストのためのRESTサポート
      コミュニケーションストリーム処理のためのフィルタ
      フィルタリングのための新しいDataSnap APIとコンプレッションフィルタの追加。
      コールバックおよびJSON(JavaScript Object Notation)
      サーバメソッドでTJSONValueおよびその継承を受け入れ可能。
      WebサーバアプリケーションでDataSnapサーバをホスティング
      .NETプロキシ生成

    2009年8月10日

    RAD Studio 2010の新機能その5

    IDE/クラシックスタイル
    Delphi 2010のIDEをDelphi 7ライクなクラシックスタイルに設定する方法をAndreano Lanusseさん動画つきで説明しています。
    Andreano Lanusse » How to configure Delphi 2010 to look, work, and feel like Delphi 7またはVideo: How to configure Delphi 2010 to look, work, and feel like Delphi 7から。

    VCL/Delphi Natural Input
    ジェスチャ、マルチタッチ、仮想キーボードなどの、従来とは異なる、あるいはWindows 7で新しく追加された入力であるNatural Inputのサポート。詳細はWings of WindsさんRAD Studio 2010 Review #5: VCL – Natural Input OverviewSeppy BloomさんRAD Studio 2010 - Touch & Gestures Part 1Chris BensenさんRAD Studio 2010 - Gestures and Multi-Touch。Seppy BloomさんによればGesturesカテゴリのTGestureListView/TGesturePreview/TGestureRecorderコンポーネントはジェスチャデザイナで使用しているものだそうです。

    IDE/ソースコードフォーマッタ
    ソースコードを指定したルールに従って整形しなおすことができます。詳細はTeam JapanRAD Studio 2010: ソースコードの整形

    Delphi 2010 プレビュー その3 VCL

    2009/08/06に行われたDelphi/C++Builder次期バージョンプレビュー会のまとめです。VCL関係です。
    • Delphi Natural Input

    • タッチ
      ベーシックタッチ
      一本の指でマウスのエミュレーションを行う。通常のタッチパネルでサポート。
      マルチタッチ
      二本以上の指でタッチした位置や距離を検知する。Windows 7以降のOSと専用のハードウェアが必要になる。
      ジェスチャ
      マウスやタッチの動きでジェスチャイベントが発生する。

    • ジェスチャ/仮想キーボード
      ジェスチャ
      独自実装のジェスチャエンジンをプラグイン可能(ジェスチャマネージャコンポーネントを配置するだけ)。特殊なハードウェアは不要。標準のジェスチャもカスタム定義したジェスチャも使用可能。カスタム定義も専用デザイナで簡単にできる。ジェスチャの割り当てはコンポーネント単位に指定できる。
      仮想キーボード
      TTouchKeyboardコンポーネントで仮想キーボードを実現。カスタマイズも可能。

    • Direct2D
      Windows 7のDirect2D/DirectWriteのサポート
      TCustomCanvasから派生したTDirect2DCanvasを使用する。
      TGraphicによるWIC(Windows Imaging Component)ラッパ
      TImageでTIFF形式をサポート

    • VCLの機能強化
      Gridコンポーネント
      テーマサポートの追加。
      IOUtils.pas
      新しいI/Oユーティリティクラスの追加。
      CM_INPUTLANGCHANGE
      言語の変更を通知するカスタムメッセージの追加。
      TIcon.AssignTo
      ビットマップへのアサインが可能に。
      Month Calendarボックスドロップダウン
      オブジェクトインスペクタで日付をカレンダで指定可能に。
      TCategoryButtonsコンポーネント
      インプレースリネーム機能のサポート。
      TCheckListBoxコンポーネント
      CheckAllメソッドの追加。
      PtInCircle関数
      Typesユニットに追加。
      TRichEditコンポーネント
      現在のカーソル位置を返すActiveLineNoプロパティを追加。
      Boolean型プロパティ
      オブジェクトインスペクタでBooleanをチェックボックスで指定可能に。


    今日はここまで。

    Delphi 2010 プレビュー その2 コンパイラ

    2009/08/06に行われたDelphi/C++Builder次期バージョンプレビュー会のまとめです。次にコンパイラ、言語関係。
    • Delphiコンパイラ
      RTTI
      取得可能なRTTI(実行時型情報)が拡張される。クラス型やレコード型のメンバ(メソッドやフィールド、プロパティ)を実行時に知ることができ、メソッドの呼び出しも可能になる。RTTIユニットを使用する。RTTIなのでprivate属性のものは取得できない。
      カスタム属性
      [(属性)]でクラスなどの定義にカスタム属性を付加する。
      クラスコンストラクタ/クラスデストラクタ
      従来ユニットのinitialization部、finalization部で行っていたような処理をクラスコンストラクタ(クラスのロード時に呼び出し)、クラスデストラクタ(クラスのアンロード時に呼び出し)で行うことができるようになる。

    • C++コンパイラ
      FastMM
      (やっと)FastMMが標準のメモリマネージャとして組み込まれる。
      #pragma once
      VC++と同様にインクルードガードに#pragma onceを使用できるようになる。
      XML生成オプション -Zx
      __FUNCTION__マクロのサポート
      [[deprecated]]属性のサポート
      セキュア(..._s)関数
      VC++互換のセキュア関数が使用できるようになった。
      テンプレートクラスのための__declspec(dllimport)/__declspec(dllexport)
      実際には不具合の修正だとか。

    Delphi 2010 プレビュー その1 IDE

    2009/08/06に行われたDelphi/C++Builder次期バージョンプレビュー会のまとめです。まずIDE関係から。
    • 操作性の改善
      IDEインサイト
      [F6]で表示されるIDEInsightでキーボードから全ての機能にアクセスできる。
      コードフォーマッタ
      パラメータに従ってソースコードを自動的に整形(パラメータはDelphiとC++で別々に設定できる)。
      バックグラウンドコンパイル
      オプションでコンパイルをバックグラウンドで実行させることができる。バックグラウンドコンパイルを実行するとソースコードなどは一時的なスナップショットが取られ、エディタ上で編集を続行可能。C++はコンパイル時間が長いので特に有効。
      コードエディタ上の検索
      Firefoxライクな検索バーで検索候補をハイライト表示し、次候補([F3])および前候補([SHIFT]+[F3])の検索が可能になる。
      開き直す
      開き直すことのできるプロジェクトおよびソースの数、履歴を変更可能に。
      ユニットの使用
      IDEInsight同様にフィルタリング可能に。
      新規作成のフィルタ
      IDEInsight同様にフィルタリング可能に。
      XMLデータバインディングウィザードの改善
      ジェネリック構文のリファクタリングをサポート

    • デバッガ
      ビジュアライザ
      日付時刻型やTStringsクラスなどをデバッガ上でよりわかりやすく表示できる。
      カスタムビジュアライザ
      Open ToolsAPIでカスタムビジュアライザを作成して組み込むことができる。sourceディレクトリにサンプルとして標準添付ののビジュアライザのソースがある。
      スレッドデバッグサポート
      選択したスレッド内でのステップ実行やデバッグが可能になる。各スレッドの停止、再開を任意に指定可能になる。ブレークポイントのプロパティで特定のスレッドをターゲットにすることができるようになる。また各スレッドに名前をつけて区別するようになる(名前がないとWindowsがつけるスレッドIDで区別することになる)。

    • モデリング
      新しいlook&feelのモデル図、グラデーションによる塗りつぶし、項目間のリンクの作成機能などが追加
      検査/測定機能はモデリング機能を有効にしなくても利用可能になる
      C++のモデリング機能のパフォーマンス改善
      ダイアグラムエディタの強化

    2009年8月8日

    RAD Studio 2010の新機能その4

    IDE/細かい改善
    プロジェクトマネージャペインで並び順が指定できるようになったり、デザイン時パッケージと実行時パッケージのアイコンが区別できるようになったり、コードエディタペインのブレークポイントやブックマークが移動できるようになったりします。またIDEインサイトではフォームやデータモジュール上のコンポーネントを探したり、プロジェクトオプションを探すこともできるようになります。詳細はWings of WindさんRAD Studio 2010 Review #4: Project Management Enhancements

    IDE/新機能紹介ビデオ公開
    Andreano LanusseさんIDEの新機能を紹介するビデオを公開しています。Video: What's new in Delphi 2010 and C++Builder 2010 - IDE Featuresからも見られます。

    IDE/ToolsAPI拡張
    ToolsAPIが拡張されて、IDE上のドッカブルビューが(公式に)作成できるようになったり、エディタ領域に追加のビューを組み込めるようになったり、IDEインサイトのサポートが追加されたり、プロジェクトマネージャのローカルメニューへのメニューの追加のサポートが拡張されたり、IOTAProjectインタフェースで提供される情報が増やされたり、デバッガビジュアライザの作成と登録がサポートされたり、デバッガインタフェースが新機能をサポートするように拡張されたり、ビルドシステムからの通知がサポートされたり、IDEへのバージョンコントロールシステムのサポートが追加されたり、ToolsAPIからより多くのアクションにアクセスできるようにコードフォールディングのインタフェースが拡張されたりします。詳細はChris HesikさんRAD Studio 2010: ToolsAPI enhancements

    IDE/ジェネリクス用のリファクタリングとヘルプインサイト
    ジェネリクスに対してもリファクタリング機能やヘルプインサイトが有効になります。詳細はDarren KosinskiさんRAD Studio 2010 - Refactoring & Help Insight for Generics

    2009年8月7日

    C++0x規格案からConceptが削除された経緯

    大詰めを迎えつつある(はずの)C++0xの規格案からConceptが削除された、というニュースは一部のC++0xウォッチャな人々に驚きを持って迎えられました。C++標準化委員会の偉い人であるDouglas Gregorさんによる理由と経緯の説明をhitoさんが翻訳してくださっています。C++0xに興味がある人は読んでおくべき。

    What Happened in Frankfurt? « C++Next
    本の虫: Douglas Gregor、フランクフルト会議について語る

    2009/08/15追記: Bjarne StroustrupさんとDanny Kalevさんのやりとりもhitoさんが翻訳してくださいました。

    本の虫: Bjarne Stroustrup、Conceptと未来を語る

    RAD Studio 2010の新機能その3

    IDE/アクションプロパティエディタ
    プロパティエディタ上のアクションプロパティから新規アクションや標準アクションを便利に設定することができるようになります。詳細はChris BensenさんRAD Studio 2010 - Actions

    コンパイラ/RTTI機能の拡張
    新しいRTTIの拡張機能を使用すると従来取得できなかった情報をクラスやレコードから取り出せるようになります。しばらく前にDelphi-MLで質問が出ていたレコード型のフィールド名の取得もこれで可能になります。詳細は我らがTeam JapanDelphi 2010: RTTI新機能を試す

    2009年8月6日

    Delphi/C++Builder次期バージョンプレビュー会

    Team Japan » 本日、Delphi/C++Builder次期バージョンプレビュー会

    これから中目黒に行ってきます。実況はしませんが、随時更新の予定です。

    18:00 準備完了。もう時間ですが誰か足りないような…。始まりました。
    みなさん揃ったようです。というかいつもの人たちだけですね…。

    FORUM 8さんのVRはヌルヌルに動きます。イケてます。OpenGLだそうです。

    高橋さん登場でRAD Studio 2010のお話に。

    時間オーバでバタバタしつつ終了しました。なかなか面白かったです。出席者および関係者のみなさん、おつかれさまでした。プレビューのまとめ、感想などは別途。

    2009/08/07追記: 中継の録画が見られるようになっているようです。たぶんVRの凄さはこれではわからないと思いますが。
    Delphi/C++Builder次期バージョンプレビュー会ライブ - 録画

    2009/08/10追記: プレビュー会についてのリンクをまとめておきます。
    Delphi 2010 プレビュー その1 IDE
    Delphi 2010 プレビュー その2 コンパイラ
    Delphi 2010 プレビュー その3 VCL
    Delphi 2010 プレビュー その4 データベース
    Delphi 2010 プレビュー その5 まとめ

    2009/08/11追記: @ITさんの記事が出ています。
    Delphi新版はタッチ操作のアプリケーション開発を可能に - @IT

    RAD Studio 2010の新機能その2

    IDE/ファイル|開き直すメニューの改良
    IDEの[ファイル]→[開き直す]で保持されるプロジェクト、ファイルの最大数や実際に保持されているアイテムをエディットできるようになります。詳細はChris HesikさんRAD Studio 2010: Improved File|Reopen menuNick HodgesさんRAD Studio 2010 IDE Features: File|Reopen。日本語だとTeam Japan » RAD Studio 2010: ファイル・プロジェクトの再オープン

    IDE/デバッグビジュアライザ
    デバッグ時のローカル変数をよりわかりやすく表示できるようになります。日付時刻(TDateTime)や文字列リスト(TStrings)用のものは標準で付属しますが、OTA(Open Tools API)を利用して作ることもできます。詳細はWings of WindさんRAD Studio 2010 Review #3: Debug Visualizers.

    2009年8月5日

    RAD Studio 2010の新機能その1

    RAD Studio 2010の新機能についての情報が続々と公開されています。ということで可能な限りフォローしてみます。
    IDE/バックグラウンドコンパイル
    Delphi/C++Builder 2010ではバックグラウンドでコンパイルを実行させることができるようになります。詳細はAndreano LanusseさんBackground Compilation in Delphi 2010 and C++Builder 2010

    IDE/検索機能の強化
    検索結果がコードエディタ上でハイライト表示されます。また検索ダイアログがFirefoxのように検索バーに置き換わりました。詳細はDarren KosinskiさんEmbarcadero RAD Studio 2010

    IDE/IDEインサイト
    IDE上で呼び出し可能な機能を集約して一覧表示します。詳細はNick HodgesさんRAD Studio 2010 – IDE Features: IDE InsightMark DuncanさんRAD Studio 2010 - IDE Insight Part 1。日本語だとTeam Japan » RAD Studio 2010: IDEインサイト

    IDE/C++Builderクラスエクスプローラ
    C++Builderでもクラスエクスプローラが使用できるようになります。またクラスの継承関係をグラフィカルに表示できます。詳細はDavid DeanさんC++Builder 2010 and the new Class Explorer。日本語だとTeam Japan » RAD Studio 2010: 帰ってきた C++ クラスエクスプローラー

    IDE/スレッド指定ブレークポイント
    ブレークポイントのプロパティで実行スレッドをIDまたは名前で指定できるようになります。またデバッガ上でスレッドを扱いやすくするためにTThreadクラスでスレッドに名前をつけられるようになります。詳細はChris HesikさんRAD Studio 2010: Thread-specific breakpoints

    IDE/コンポーネントツールバー
    (コンポーネントパレットではなく)Delphi 7以前のようなコンポーネントツールバーを使用することができるようになります。詳細はWings of WindさんRAD Studio 2010 Review #2: The new old Component Toolbar.Andreano LanusseさんThe old Component Toolbar is back and better in RAD Studio 2010、新しいツールパレットのほうが気に入ってるんだけどな、というNick HodgesさんRAD Studio 2010 — IDE Features: "Old School" Tool Palette。日本語だとTeam Japan » RAD Studio 2010: コンポーネントツールバー

    IDE/プロパティエディタ
    プロパティエディタ上でBooleanにチェックボックスがつきました。また日付型ではDateTimePickerライクなプロパティエディタが使えるようになります。詳細はChris BensenさんEmbarcadero RAD Studio 2010

    IDE/ユニット表示、フォーム表示
    ユニット表示([Ctrl]+[F12])、フォーム表示([Shift]+[F12])はIDEインサイトを使用するように変更されました。詳細はChris BensenさんRAD Studio 2010 - The IDE

    ちなみにNick Hodgesさんの右隣の部屋はChris Bensenさん(シニアR&Dエンジニア)の部屋だそうです。

    2009年8月4日

    RAD Studio 2010 スニークプレビュー その1

    EmbarcaderoのwebサイトにRAD Studio 2010の公式ページが登場しました。スニークプレビューの第1弾"RADically Reduce Development Time with RAD Studio 2010"はIDEの新機能についてです。
    • IDEインサイト
    • コードフォーマッタ
    • クラスエクスプローラ
    • データビジュアライザ
    • デバッガスレッド制御

    次回のプレビューはタッチ/ジェスチャ機能についてで、2009/08/11に公開だそうです。またカウントダウンによればRAD Studio 2010は2009/08/25発売ですね(もちろんPDTでしょうけど)。

    元ねたはMarco CantuさんのIDE Sneak Preview of RAD Studio 2010

    2009/08/05追記: 早くも翻訳されています。
    RAD Studio, C++Builder, Delphi Prism, Delphi 2010スニークプレビュー
    Application Development with RAD Studio 2010 |Delphi , C++Builder & Delphi Prism

    2009/08/05追記: RAD Studio/Delphi/C++Builder 2010は2009/08/25 00:00PDT(2009/08/25 16:00JST)からダウンロード版が購入可能になるとのことです。
    Windows 7対応のDelphi/C++Builder新版が8月25日発売へ - ニュース:ITpro(要登録)

    2009年8月3日

    Micro FocusによるBorlandの買収が完了

    2009/05/06の発表以来どうなることやらという雰囲気も漂っていたMicro FocusによるBorland Softwareの買収が2009/07/27に完了したとのことです。

    Completion of Borland acquisition - Micro Focus

    既に www.borland.com は www.microfocus.com にリダイレクトされるようになっています。と思ったら http://www.borland.com/jp/ はまだそのままですね…。

    2009/08/03追記: Micro Focus Finalizes Borland Acquisition with Sweetened Deal -- Application Development Trendsによれば最終的に1株1.50USD、合計1億1千万USD(約107億円)で合意したそうです。

    2009年7月31日

    某所さん終了

    残念なことにRANさんの某所/某所(避難所)さんが終了されるとのことです。
    これまでおつかれさまでした。役に立つコンテンツも多いので、できれば更新終了後もblogはそのままにしておいていただけると嬉しいのですが…。

    2010/11/15追記: RANさん某所 - その後の某所によると某所@so-netのコンテンツはfc2に統合したとのことです。

    2009年7月29日

    Microsoft OOB Update 2009/07

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

    2009年7月27日

    Weaverプレビュー会開催

    ちょっと前の情報ですが、Weaver (Delphi/C++Builder 2010)のプレビュー会が2009/08/06に行われるそうです。

    Delphi/C++Builder次期バージョンプレビュー会のお知らせ

    WeaverのFTには入れてもらえなかったので、どうするかなぁ…。もっとも人数制限もあるし、どうしよう以前に相手にしてもらえない可能性もあるわけですが。

    2009/07/29追記: 上記リンク先にQ&Aが追加されています。別に当日PCを持っていかなくてもいいらしいです。

    2009/08/05追記: 駆け込みですが出席することにしました。

    2009年7月24日

    Delphi Live! 2009/プレゼンテーション資料ダウンロード

    2009/05に行われたDelphi Live! 2009のプレゼンテーション資料がダウンロードできるようになっています。

    Presentation Download | Delphi Live ! - The Delphi Developer Conference!

    元ねたはDelphi.orgのDelphiLive! Presentation Downloads

    2009年7月23日

    Delphi 7以降で追加された機能について

    第13回エンバカデロ・デベロッパーキャンプの「Delphiコーディングスタイル バトルトーク」(A5)セッションのトークの中で、スピーカの方々を含め会場内は意外にDelphi 7以降に追加された機能をあまり知らないような雰囲気でしたが、そのあたりをわかりやすくまとめてあるアーティクルを4つ。

    34361: Delphi 7以降の IDEの新機能
    34409: Delphi 7以降の言語およびコンパイラの新機能
    34342: Delphi 7以降のVCLの新機能
    37433: あなたの環境でもきっと役に立つDelphi 7以降の新機能トップ10 - by Pawel Glowacki

    Delphiアルゴリズムトレーニング

    同じくはやしさん@ITのCoding Edgeフォーラムで連載していた"Delphiアルゴリズムトレーニング"も完結しています。

    (1) TListの実装と性能
    (2) 単純なキューと循環キュー
    (3) AVL木で木構造を学ぼう
    (4) もっとAVL木で木構造を学ぼう
    (5) RDBMSで使われるB木を学ぼう
    (6) B木から要素を削除する方法を学ぼう

    Yet another OSS DB:Firebird

    Firebird日本ユーザ会はやしさん@ITのDatabase Expertフォーラムで連載していた"Yet another OSS DB:Firebird"が完結しました。

    (1) Firebirdのアーキテクチャと特性、歴史
    (2) データベースファイルの内部構造を探ってみた
    (3) 仕組みを「見える化」してみた
    (4) Firebirdの標準関数を極める
    (5) 内部関数が足りない? それならUDFだ!
    (6) ユーザー定義関数で日付時刻やBLOBを扱う

    InterBase/FirebirdのユーザやDelphi/C++Builderでデータベースを扱うプログラマはひととおり読んでおくといいと思います。

    C++Builder 2009 ファーストガイド

    C++Builder 2009 ファーストガイドが10回に分割されて公開されるようです。

    第一回 「C++Builder 2009のインストールと使用許諾」
    第二回 「C++Builder2009の起動と終了」
    第三回「総合開発環境(IDE)の説明」
    第四回「プログラミング手順(前編)」
    第五回「プログラミング手順(後編)」
    第六回「C++基礎知識(前編)」
    第七回「C++基礎知識(後編)」
    第八回 「コンポーネント」
    第九回「コンポーネントの作成」
    第十回「データベースアプリケーションの作成」

    第一回で気になった点を2つばかり。
    1. "1.3 インストールに必要なソフトウェア"にあるとおり、Dephi 2009/C++Builder 2009では必要に応じてMicrosoft .NET Framework 2.0、Microsoft JSharp Runtime 2.0、Microsoft .NET 2.0 Japanese Language Pack、Microsoft Data Access Components(MDAC) 2.8、Microsoft Core XML Service(MSXML) 6.0、Microsoft Document Explorer 2008、Microsoft Document Explorer 2008 Language Packがインストールされますが、少なくとも.NET Framework 2.0、MDAC 2.8、MSXML 6.0についてはセキュリティ更新プログラムが存在するはずです。これらのソフトウェアが新規にインストールされたときにはWindowsUpdateMBSAでセキュリティ更新プログラムの適用の必要性を確認するよう、注意を促しておくべきではないでしょうか。

    2. アップデートの確認や適用方法は第二回以降に出てくるのでしょうか…?

    2009/07/31追記: 第二回のリンクを追加しました。
    2009/08/12追記: 第三回のリンクを追加しました。
    2009/08/21追記: 第四回のリンクを追加しました。
    2009/09/02追記: 第五回のリンクを追加しました。
    2009/09/11追記: 第六回のリンクを追加しました。
    2009/09/22追記: 第七回のリンクを追加しました。
    2009/10/02追記: 第八回のリンクを追加しました。
    2009/10/11追記: 第九回のリンクを追加しました。
    2009/10/22追記: 第十回のリンクを追加しました。やっと完結です。

    2009年7月16日

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

    先日の第13回の懇親会のときの藤井さんの予告のとおり、次回のデベロッパーキャンプは2009年09月02日に大阪で開催です(出張でも重なれば行けるかもしれませんが…)。今回はG2セッションのWeaver (Delphi/C++Builder/RAD Stdio 2010)のプレビュー(by高橋さん)が注目です。

    2009年7月15日

    1st anniversary

    気が付いたら1年経っていました(1週間も気付かなかったのかい)。2008/07/08から2009/07/07までの1年間で168エントリ、平均するとだいたい2日で1エントリといったところですが、最近ちょっとペースが悪いような。

    totonica on EDN

    totonicaさんによるEDNのTechnical Articleが順次公開中です。

    39691: RawByteStringの使い方
    39692: 文字列とエレメント
    39696: ライブテンプレートの作り方
    39697: 暗黙の文字列変換
    39698: Quality Centralでのバグレポートのコツ
    39699: DCC警告W1050の回避方法
    39701: 無名メソッドとスレッド
    39704: Delphi 2009におけるグラフィック機能の強化点
    39706: 文字列型とオーバーロード

    2009/07/21追記: 39691/39692/39697のアーティクルへのリンクを追加しました。
    2009/07/22追記: 39701のアーティクルへのリンクを追加しました。
    2009/07/24追記: 39704/39706のアーティクルへのリンクを追加しました。
    2009/07/28追記: totonicaさんによれば、これで今回は打ち止めだそうです。おつかれさまでした。

    Microsoft Monthly Update 2009/07

    今日はMicrosoftのセキュリティアップデートの日です。
    MS09-028
    MS09-029
    MS09-030
    MS09-031
    MS09-032
    MS09-033

    2009年7月12日

    Blogger Syntax Highlighter 1.5.2

    Heisencoder: Adding Syntax Highlighting to Bloggerを参考にSyntax Highlighterを組み込みなおしてみました。

    2009年7月11日

    Delphi 2009/C++Builder 2009 Help Update 3

    Delphi 2009/C++Builder 2009のHelp Update 3がリリースされています。英語版についてはHelp Update 2の不具合修正、ドイツ語、フランス語、日本語については英語版Help Update 2の翻訳となっています。

    Readme: Help Update 3 for Delphi and C++Builder 2009

    元ねたはNick HodgesさんのRandom Thoughts on the Passing Scene #115

    2009年7月9日

    ファイルをごみ箱経由で削除

    ファイルをごみ箱に送る(ごみ箱経由で削除する)にはSHFileOperationSHFILEOPSTRUCTのwFuncにFO_DELETEを指定します。またファイル名はNUL文字で区切って最後にNUL文字を2つ重ねる("double-null terminated string")必要があります。
    uses
      Windows, SysUtils, Classes, ShellAPI;
    
    function SHDeleteFiles(const Filename: String; WindowHandle: HWND;
                           AllowUndo: Boolean; FilesOnly: Boolean;
                           NoErrorUI: Boolean; Silent: Boolean): Boolean; overload;
    function SHDeleteFiles(Filenames: TStrings; WindowHandle: HWND;
                           AllowUndo: Boolean; FilesOnly: Boolean;
                           NoErrorUI: Boolean; Silent: Boolean): Boolean; overload;
    
    function InternalDeleteFiles(const Filenames: String;
                                 WindowHandle: HWND;
                                 AllowUndo: Boolean;
                                 FilesOnly: Boolean; 
                                 NoErrorUI: Boolean;
                                 Silent: Boolean): Boolean; forward;
    
    function SHDeleteFiles(const Filename: String; WindowHandle: HWND;
                           AllowUndo: Boolean; FilesOnly: Boolean;
                           NoErrorUI: Boolean; Silent: Boolean): Boolean;
    var
      FilenameArray: String;
    begin
    
      FilenameArray := ExpandFileName(Filename) + #0;
      Result := InternalDeleteFiles(FilenameArray,WindowHandle,
                                    AllowUndo,FilesOnly,NoErrorUI,Silent);
    
    end;
    
    function SHDeleteFiles(Filenames: TStrings; WindowHandle: HWND;
                           AllowUndo: Boolean; FilesOnly: Boolean; 
                           NoErrorUI: Boolean; Silent: Boolean): Boolean;
    var
      Index: Integer;
      FilenameArray: String;
    begin
    
      FilenameArray := '';
      for Index := 0 to Filenames.Count - 1 do
      begin
        FilenameArray := FilenameArray + ExpandFileName(Filenames.Strings[Index]) + #0;
      end;
      FilenameArray := FilenameArray + #0;
    
      Result := InternalDeleteFiles(FilenameArray,WindowHandle,
                                    AllowUndo,FilesOnly,NoErrorUI,Silent);
    
    end;
    
    function InternalDeleteFiles(const Filenames: String;
                                 WindowHandle: HWND;
                                 AllowUndo: Boolean;
                                 FilesOnly: Boolean;
                                 NoErrorUI: Boolean; 
                                 Silent: Boolean): Boolean;
    var
      SHOP: TSHFileOpStruct;
    begin
    
      with SHOP do
      begin
        Wnd := WindowHandle;
        wFunc := FO_DELETE;
        pFrom := PChar(Filenames);
        pTo := nil;
        fFlags := FOF_NOCONFIRMATION;
        if AllowUndo = True then
        begin
          fFlags := fFlags or FOF_ALLOWUNDO;
        end;
        if FilesOnly = True then
        begin
          fFlags := fFlags or FOF_FILESONLY;
        end;
        if NoErrorUI = True then
        begin
          fFlags := fFlags or FOF_NOERRORUI;
        end;
        if Silent = True then
        begin
          fFlags := fFlags or FOF_SILENT;
        end;
        fAnyOperationsAborted := False;
        hNameMappings := nil;
        lpszProgressTitle := nil;
      end;
    
      Result := (SHFileOperation(SHOP) = 0) and (SHOP.fAnyOperationsAborted = False);
    
    end;
    
    元ねたはDelete files with the ability to UNDO他多数。

    2009年7月2日

    第13回エンバカデロ・デベロッパーキャンプ終了

    スピーカの皆さん、関係者の皆さん、懇親会に参加したみなさん、おつかれさまでした。
    今日は山本さん神が降臨した瞬間を見られてよかったです(それが感想かい)。あとペンケースが当たりました。

    2009/07/13追記: セッション資料がダウンロードできるようになっています。

    2009年6月29日

    JVCL 3.37リリース

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

    SourceForge.net: JEDI VCL for Delphi: Files

    元ねたはNick HodgesさんのRandom Thoughts on the Passing Scene #114

    2009年6月19日

    PowerPDF for Delphi 2009 日本語版

    PDFを生成するTakeshi KannoさんのPowerPdf 0.9(開発停止/LGPL)をDelphi 2009で使用できるようにMamさんが改造したコンポーネント。

    PowerPDF for Delphi 2009 Japanese
    MAM'S WEBSITE 無料フリーソフトダウンロード(PCツール)

    数式計算コンポーネント

    数式を与えて値を計算するという、簡単なようにみえて実際には結構面倒なことをやってくれるというコンポーネント。作者のYura Pisarevさんはロシアの方でしょうか。

    High-speed mathematics parser
    TMathParser

    ライセンス条件はどうなっているのでしょう…?

    2009年6月16日

    ローカライズリソースDLLの選択

    国際化対応のためのメカニズムとしてDelphi/C++Builder(Ver3以降)にはローカライズリソースDLL(localized resource DLL)があります。これは拡張子".EXE"、".DLL"、"BPL"のファイルについて、実行時にこれらのファイルからのリソース(フォームデータ、リソース文字列、その他の埋め込みリソース)のロードをローカライズリソースDLLからのものに置き換えてしまう、というものです。
    この動作はSystem.pasのLoadResourceModule関数で処理されますが、ここではまず"HKCU\Software\CodeGear\Locales"(Delphi 2009 or later)、"HKLM\Software\CodeGear\Locales"(Delphi 2009 or later)、"HKCU\Software\Borland\Locales"(Delphi 4 or later)、"HKLM\Software\Borland\Locales"(Delphi 6-2007)、"HKCU\Software\Borland\Delphi\Locales"(Delphi 3 or later)の順にレジストリキーの存在を確認し、いずれかが存在したら次に実行ファイルのフルパス名の登録があるかどうかを見て、登録されていたら代替ロケール識別子として取得します。次に実行プログラムのロケール識別子を実行ロケール識別子として取得します。その上で実行ファイルのフルパス名の拡張子を代替ロケール識別子(登録されていれば)、実行ロケール識別子、実行ロケール識別子の先頭2文字だけ、の順で置き換えてWin32APIのLoadLibraryExを呼び出し、成功したらそのモジュールハンドルを以後のリソースの取得に使用します。いずれも失敗した場合はもともとの実行ファイルのモジュールハンドルからリソースを取得することになります。

    ここでロケール識別子はGetLocaleInfoのLCTYPEにLOCALE_SABBREVLANGNAMEを指定して取得される3文字の英字で、最初の2文字が言語簡略名(ISO 639)を、3文字目がサブ言語タイプ(主に地域)を示します。詳細なリストはMSDNのNational Language Support (NLS) API Referenceにあります。

    ということは、実行ロケールがJPN(ロケールID=0x0411/日本語版Windows)かつ実行ファイルのロケールがJPN以外(例えばENU=0x0409)の状況でローカライズリソースDLLとして.JPNファイルが存在する場合、実行ファイルのリソースを使用する方法がない(.JPNファイルを削除するしかない)わけです。どーりでレジストリに何を指定しても駄目なわけだ…。

    元ねたは"Source\RTL\SYS\System.pas"。

    2009/09/06追記: 新井さんによるとDelphi 2010ではこの選択メカニズムに一部変更があったとのことです。
    Embarcadero Discussion Forums: Delphi2010 国際化対応について ...
    Delphi 2010を入手したら検証してみたいと思います。

    2011/05/04追記: forums.codegear.comのリンクをforums.embarcadero.comのものに差し替え。

    2009年6月10日

    Microsoft Monthly Update 2009/06

    今日はMicrosoftのセキュリティアップデートの日です。
    MS09-018
    MS09-019
    MS09-020
    MS09-021
    MS09-022
    MS09-023
    MS09-024
    MS09-025
    MS09-026
    MS09-027
    KB969898 (Cumulative Security Update of ActiveX Kill Bits)

    2009年6月4日

    Borlandの買収に競合出現

    2009/05/06にBorlandがMicro Focusに買収されるというニュースが流れましたが、ここにきて1株1.20USDで買収したいという競合相手(BorlandによればNDAで相手を明かすことはできないが、"E社"(Company E)と呼んでいる)が出現した模様です。

    Tech Trader Daily - Barron’s Online : Borland Shrs Spikes; Second Bidder Offers $1.20/Shr

    Borlandはどうもこっちになびいているようで、Micro Focusによる買収は不透明な情勢のようです。

    元ねたは公式フォーラムのEmbarcadero Discussion Forums: Is "Company E" Embaracadero...? ...あたり。

    2009年6月3日

    DelphiのASLR/DEP(NX)サポート

    ASLR(Address Space Layout Randomization)とは、実行ファイルからリンクされるDLLをユーザメモリ空間上に配置するときにその位置をランダムにすることにより特定のアドレスに既知のDLLがロードされていることを前提とした攻撃を防ぐもので、Windows Vistaで導入されました。
    一方DEP/NX(Data Execution Prevention/Non-eXecutable)とはNXであるとマークしたメモリ空間上の領域でコードを実行することを禁止することによりバッファオーバランなどを利用した攻撃を防ぐもので、Windows XP SP2で導入されました。

    Delphiでは2007以降でASLRおよびDEP/NXをサポートするようになりました。またDelphiのデバッガも2007以降でDEP/NXに対応した(DEP/NXが有効なWindows上でもエラーにならないようにした)とのことです。

    ASLRを有効にするにはソースコード上で
    {$DYNAMICBASE ON}
    または
    {$SETPEOPTFLAGS $40}
    とします(コマンドライン版では"–dynamicbase"スイッチを使用します)。

    DEP/NXを有効にするにはソースコード上で
    {$SETPEOPTFLAGS $100}
    とします。

    ASLRとDEP/NXを同時に有効したい場合はソースコード上で
    {$SETPEOPTFLAGS $140}
    とすれば1回の指定で済みます。

    コンパイラ指令$SETPEFLAGS/$SETPEOPTFLAGSはDelphiのヘルプのPE ヘッダーフラグ(Delphi)(英語ヘルプ)にあるように、PEファイルヘッダのCharacteristicsフィールドとPEファイルオプションヘッダのDLLCharacteristicsフィールド上のフラグをセットする(指定は累積されます)ためのもので、これらのコンパイラ指令はプロジェクトソース(*.dpr/*.dpk)に記述するのが望ましいとのことです。PEファイルヘッダのCharacteristicsフィールドとPEファイルオプションヘッダのDLLCharacteristicsフィールドの詳細はIMAGE_FILE_HEADER Structure (Windows)(PEファイルヘッダ)およびIMAGE_OPTIONAL_HEADER Structure (Windows)(PEファイルオプションヘッダ)を参照してください。

    元ねたはMichael Howard's Web Log : CodeGear’s new Delphi 2007 supports ASLR and NXMike Devery » Delphi 2007 supports ASLR and NXChris’ CodeGear Debugger Blog » The Delphi 2007 Debugger and DEP/NX (Internet Archive)あたり。

    2011/05/05追記: Chris Hesikさんの"Chris’ CodeGear Debugger Blog"のInternet Archiveのリンクを追加。

    2009年5月31日

    IDE Fix Pack 2.6/VCLFixPack 1.3リリース

    Andreas HausladenさんIDE Fix Pack 2009がVersion 2.6に、VCLFixPackがVersion 1.3にそれぞれアップデートされています。IDE Fix Pack 2009 Version 2.6はDelphi 2009 Update 3適用済の環境でのみ動作するとのことです。

    Andy’s Blog and Tools » IDE Fix Pack 2.6 for 2009 Update 3 / VCL Fix Pack 1.3

    2009年5月29日

    リリースは月火水のみ

    公式フォーラムでNick Hodgesさんが以下のように発言しています。
    Embarcadero Discussion Forums: When the heck is Update 3 going to be ...
    Actually, we now only ship on a Monday, Tuesday, or Wednesday. We've set that as an official policy.

    要は公式な方針として(PST/PDTで)月曜日、火曜日、水曜日にのみリリースを行う、ということのようです(JSTだと概ね火曜日~木曜日になりますね)。

    2009年5月27日

    Indy 10のアップデート

    最近のDelphi/C++Builder/RAD Studioではネットワーク関係のライブラリとしてIndyの使用が推奨されており、実際にDelphi 2007には10.1.5が、Delphi 2009には10.2.3がそれぞれ標準で添付されています。しかし最新のnightlyは10.5.5(2009/05/27現在)となっており、DEKOさんの指摘のとおり不具合を修正するには最新にアップデートすることが必要です。ということでメモ。

    Delphi 2009 に最新版の Indy10 をインストールする
    Delphi 5~2007 に最新版の Indy10 をインストールする
    Unicode 版 Delphi (2009 以降) に最新版の Indy10 をインストールする [Delphi Programming]
    ANSI 版 Delphi (5~2007) に最新版の Indy10 をインストールする [Delphi Programming]

    ところでindy10.zipは10.2.3、IndyTiburon.zipは10.5.5ですが、名前に反してIndyTiburon.zipはDelphi 2007およびそれ以前にも導入可能のような気がします。あとでDelphi 2007で更新を試してみます。

    2009年5月26日

    C++0xの右辺値参照とムーブセマンティクス

    C++0xの新機能の一つである右辺値参照とムーブセマンティクスについてのわかりやすい説明のわかりやすい翻訳。C++プログラマではありませんが、非常に興味深いテーマです。

    Visual C++ Team Blog : Rvalue References: C++0x Features in VC10, Part 2
    和訳:Rvalue References: C++0x Features in VC10, Part 2 - ntnekの日記

    InitializeCriticalSectionEx

    Team Japanの高橋さんの記事によると、Windows Vista(NT 6.0)以降ではInitializeCriticalSectionによる初期化ではリソースリークが発生するとのこと。

    Team Japan » InitializeCriticalSectionEx

    まぁそもそもマルチCPUではInitializeCriticalSectionAndSpinCountでスピンカウントの指定をしないとパフォーマンスに影響が出るらしいし、新しいOSではInitializeCriticalSectionExを呼び出しなさない、というのは判るのだが、もう少し互換性のある拡張はできないのかと。スピンカウントもどのくらいの値が適当なのかよくわからないし。

    ちょうどいま流し読み中のWindowsデバッグの極意(Mario Hewardt、Daniel Pravat著/長尾高弘訳/アスキー・メディアワークス/ISBN978-4-04-867608-3)の"第10章 同期"でクリティカルセクションに触れています。以下引っ掛かる点を引用。
    RTL_CRITICAL_SECTION.DebugInfo
    クリティカルセクションに関する追加情報を格納する構造体で、これを格納するメモリはシステムにより確保される。(p.502)

    RTL_CRITICAL_SECTION_DEBUG
    RTL_CRITICAL_SECTION_DEBUGは主としてデバッグ用の情報を格納しているように見えるが、初期バージョンのWindowsでは、これがなければクリティカルセクションが使える状態だと見なされなかった。実際、オペレーティングシステムが初期化中にこの構造体のメモリを確保できなければ、APIは失敗していたのである。Windows Server 2003 SP1以降、このデバッグ情報がなくても、クリティカルセクションは機能するようになった。(p.504)

    EnterCriticalSection
    Windows 2000のEnterCriticalSection APIについては注意が必要だ。メモリの残量が少なくなったときにこれを呼び出すと、メモリ不足例外が投げられることがあるのだ。クリティカルセクションはイベントを使っており、EnterCriticalSection APIではこのイベントが初期化される。システムのメモリの残量が少なくなっていると、そのために例外が起きる。Windows 2000のもとでクリティカルセクションを信頼できる形で実行したければ、クリティカルセクションの初期化時にイベントを確保し、その後は例外を投げないInitializeCriticalSectionAndSpinCount APIを使うようにするとよい。(p.505)

    追記: 高橋さん、フォローありがとうございます。

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

    第13回エンバカデロ・デベロッパーキャンプは2009年07月02日にOpenSource World 2009の一部として開催されます。OpenSource World 2009そのものは2009年07月01日~07月02日の開催です。今回はPhilip Rathleさん(All-Accessのプロダクトマネージャ)やmatzさんがいらっしゃるようです。

    2009年5月23日

    Delphi Live! 2009/スピーカインタビュー

    Anders OhlssonさんがYouTubeにDelphi Live! 2009のスピーカのインタビューを大量アップロードしています。

    The Hacker’s Corner » Blog Archive » Speaker video interviews from Delphi Live! 2009
    Video interviews from Delphi Live! 2009

    2009/05/26追記: EDNの紹介記事が翻訳されています。
    Delphi Live! 2009からのビデオインタビュー(英語)

    2009年5月22日

    アプリケーション開発者向けMicrosoft Windows 7対応アプリケーションの互換性

    MSDNのWindows 7 互換性情報ページで"アプリケーション開発者向けMicrosoft Windows 7対応アプリケーションの互換性"というドキュメントがダウンロードできるようになっています。このドキュメントではWindows Vista/Windows 7向のアプリケーションで注意しなければならない点について解説されています(Vistaのときのお粗末な文書に比べると結構詳細でわかりやすくなっています)。

    Delphi Live! 2009/プロダクトアドレス

    Delphi Live! 2009のプロダクトアドレスの画面キャプチャ+音声が公開されています。

    Delphi 2009! Live Recap
    26915 Delphi Live! 2009 Recap and Product Address

    英語で70分間はかなりきついですが、画面(PowerPoint)を見ているだけでも雰囲気はつかめます。

    2009年5月21日

    Delphi Live! 2009の動画

    Delphi.orgに"What is Cooking in the Delphi Labs"セッションの動画が順次アップロードされていくようです。
    Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 1 - The Podcast at Delphi.org
    Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 2 - The Podcast at Delphi.org
    Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 3 - The Podcast at Delphi.org
    Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 4 - The Podcast at Delphi.org
    Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 5 - The Podcast at Delphi.org
    Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 6 - The Podcast at Delphi.org
    Delphi Live! 2009 - What’s Cooking in the Delphi Labs - Part 7 - The Podcast at Delphi.org

    Fun Side of Delphi with Marco Cantu at Delphi Live 2009! - The Podcast at Delphi.org

    またYouTubeにもアップロードされています。
    YouTube - Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 1
    YouTube - Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 4
    YouTube - Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 5
    YouTube - Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 6
    YouTube - Delphi Live! 2009 - What is Cooking in the Delphi Labs - Part 7

    Marco Cantuさんによれば、この"What is Cooking in the Delphi Labs"セッションではNick HodgesさんのIDEインサイト機能やコードフォーマッタ、Allen BauerさんのDirect2DサポートやRTTI拡張によるリフレクション機能、Carlさん(誰?)のDelphi for MacによるMacOS上のコンソールアプリケーション、Anders OhlssonさんのDelphiコードのANSI->Unicode変換ツール、David IさんのVS2010上のDelphi Prismでの.NET 4.0やパラレルエクステンションのサポートなどがデモされたようです。
    (更新中)

    2009年5月20日

    Blaise Pascal Special Issue

    BLAISE PASCAL MAGAZINEの(通常はダウンロード版が4号で30.00EURですが)特別版が無償で読めるようになっています。英語ですけど。
    でさらっと目次を見ていたのですが、Borlandの創業者であるPhilipe Kahnさんのインタビューが掲載されています。懐かしいですね。

    元ねたはRave, Delphi and more: BlaisePascal magazine - special edition -

    2009/05/21追記: EDNでも紹介されています。
    Free special issue of Blaise Pascal Magazine and Free One-Year Subscription
    26909 Blaise Pascal Magazine Special Issue & Free 1-year Subscription

    2009年5月19日

    Delphi/C++Builder/RAD Studioのコマンドラインオプション

    Delphi/C++Builder/RAD Studioで使用できるコマンドラインオプションをまとめてみました。

    
    
    -r
    カスタムレジストリ設定を使用 (-rXYZ : XYZレジストリを使用)
    -idecaption
    IDEのキャプションを指定 (-idecaption="NEW CAPTION" : キャプションを"NEW CAPTION"に変更)
    -p
    使用パーソナリティの指定 (-pDelphi : Delphi, -pCBuilder : C++Builder, -pDelphiDotNet : Delphi.NET, -pCSharp : C#Builder)
    -np
    Welcome pageの非表示 (Delphi 7およびそれ以前ではデフォルトプロジェクトの非作成)
    -ns
    スプラッシュの非表示

    -rオプションで指定した文字列はレジストリ"HKEY_CURRENT_USER\Software\Borland\BDS\6.0"(Delphi 2009の場合)の"BDS"部分の置き換えに使用されます。

    -pオプションで指定するのは、実際にはレジストリ"HKEY_CURRENT_USER\Software\Borland\BDS\6.0\Known IDE Packages"(Delphi 2009の場合)の下にあるキーの名称で、指定したキーの下にあるIDEパッケージが起動時に読み込まれます。ここに新たにキー/エントリを追加して-pオプションで指定することで、カスタマイズしたプロファイルでIDEを起動することができます(ただしコンポーネントパッケージは対象にならない)。詳細は下記のMark Edingtonさんの記事を参照。

    Delphi/C++Builder/RAD Studio XE以降については以下のリンクに詳細な記述があります。
    元ねたはDelphi 2007 HandbookDELPHI 2009 HANDBOOKMark Edington’s Delphi Blog : Delphi Startup Times and the Kitchen SinkDelphi Tweet Day (delphitweetday) on Twitterなど。

    2016/04/20追記: Delphi/C++Builder/RAD Studio XE以降のオンラインヘルプのコマンドラインオプションのページへのリンクを追加。

    2017/03/23追記: Delphi/C++Builder 10.2 Tokyoの情報を追加。

    2009年5月16日

    Delphi Roadmap - 遠い将来には

    クラウドコンピューティング

    Web 3.0

    RIA(Rich Internet Application)を超えて

    組み込みデバイス

    ソフトウェアアプライアンス

    セキュリティ

    コンプライアンス

    関数型プログラミング、宣言型プログラミング、自然言語入力、もっと多くのプラットフォーム…

    元ねたはRob’s Technology Corner: DelphiLive - Where is Delphi Going?Delphi Tweet Day (delphitweetday) on Twitterなど。

    Delphi Roadmap - "Project Commodore"

    64bitネイティブ

    コンパイラ、RTL(Run Time Library)、VCL(Visual Component Library)の64bitネイティブフルサポート

    マルチコア、マルチスレッドアプリケーション

    元ねたはRob’s Technology Corner: DelphiLive - Where is Delphi Going?Delphi Tweet Day (delphitweetday) on Twitterなど。

    Delphi Roadmap - "Project Chromium"

    とにかく品質

    Pascalコードフォーマッタ

    OTA(Open Tools API)のドキュメント化

    コントロールのあらゆるプロパティにバインド可能な新しいデータバインディングモデル

    データベースツールの更なる統合

    元ねたはRob’s Technology Corner: DelphiLive - Where is Delphi Going?Delphi Tweet Day (delphitweetday) on Twitterなど。

    Delphi Roadmap - "Project X"

    Windows、Mac OS、Linuxのクロスプラットフォーム

    クロスプラットフォームコンポーネントライブラリ

    全てのプラットフォームでDataSnapを使用可能に

    Delphi Live! 2009の2日目(2009/05/15)にデモ予定

    元ねたはRob’s Technology Corner: DelphiLive - Where is Delphi Going?Delphi Tweet Day (delphitweetday) on Twitterなど。

    2009/05/21追記: Allen Bauerさんによれば、"Project X"に興味がある人はEli Bolingさんのblogをチェックすべしとのこと。

    Delphi Roadmap - "Project Weaver"

    主要な目標はユーザエクスペリエンスの向上、データベース接続の拡張、ドキュメントの充実。
    IDEのユーザビリティ

    チーム生産性

    タッチ
    "Delphi Natural Input"
    GestureManagerコンポーネント
    ジェスチャーはActionと結びつけるか、OnGestureイベントでハンドルする

    IDEインサイト
    FastAction
    キーボードであらゆる機能にすばやくアクセス

    DataSnapの改良

    Firebirdのサポート

    .NETにおけるAOP(Aspect Oriented Programming)

    SCM(ソフトウェア構成管理)サポート

    拡張RTTIサポート

    Attributeサポート

    シームレスな.NET-Native間通信

    Windows 7 APIとDirect 2D

    SOAP 1.2クライアントのフルサポート

    元ねたはRob’s Technology Corner: DelphiLive - Where is Delphi Going?Delphi Tweet Day (delphitweetday) on Twitterなど。

    2009/05/21追記: タッチインタフェースのデモの動画がThe best of DelphiLive was [Video]: « Daniel Magin’s Weblogにあります。最後の動画ではDelphi付属のfishfactデモにGestureManagerコンポーネントでジェスチャーを追加しています。

    2009年5月15日

    Delphi Live! 2009

    海の向こう、カリフォルニア州サンホセではDelphi Live! 2009が始まっています。DelphiプロダクトマネージャのMike RozlogさんがDelphiのロードマップについて発表を行ったようです。
    Project Weaver
    次期版Delphi/C++Builder

    Project X
    クロス開発環境

    Project Chromium
    周辺ツールの充実

    Project Commodore
    64bit対応、マルチプロセッサ、マルチスレッドサポート

    詳しくは以降のエントリで。

    元ねたはRob’s Technology Corner: DelphiLive - Where is Delphi Going?など。

    2009年5月13日

    Microsoft Monthly Update 2009/05

    今日はMicrosoftのセキュリティアップデートの日です。
    MS09-017

    2009年5月6日

    Micro FocusがBorlandを買収

    Marco CantuさんのMicroFocus buys Borlandによれば、Micro Focus(日本法人)という会社がBorlandの買収提案を発表しました(Borlandのプレスリリースでは正式に契約したようです)。またMicro Focusは同時にCompuwareの"Application Testing / Automated Software Quality (ASQ)"ビジネスの買収でも合意しています。Micro Focusは英国を本拠としていて、Open COBOLが主な製品分野の会社のようです。そういう意味で旧Borlandのエンタープライズ向(ALM)ビジネスとの相性は意外によいのかもしれません(CodeGearとEmbarcaderoのように)。ただこれでBorlandという会社がなくなってしまうわけで、ちょっと寂しい気もします。

    2009/05/07追記: 日本語の記事も出ているようです。
    Borland,約7500万ドルでMicro Focusに身売り:ITpro(要登録)
    ブランド名が残るかは不明:BorlandをMicro Focusが約7500万ドルで買収 - ITmedia エンタープライズ
    ボーランドをマイクロフォーカスが買収へ--買収価格は1株1ドル - 企業情報 - ZDNet Japan

    2009年5月5日

    Project CrossTalk

    IntraWebの開発元であるAtozed Softwareが、Delphi(native)から.NETのコードを簡単に呼び出すことができるようにするProject CrossTalkをアナウンスしています。面白そうなのでとりあえずメモ。
    Atozed Software - Project CrossTalk

    Q&AによればProject CrossTalkは主に(たとえばIntraWebで使用するDelphiコードの)バックエンドで.NETのコードやライブラリを呼び出せるようにするのが目的で、.NETのビジュアル要素を扱いたいならRemObjectsHydraのほうが適している、とのこと。

    元ねたはDrs.Bob's Delphi Notes (weblog)