2011年7月28日

RAD Studio/Delphi XEユーザ向Delphi Developer Certification無償キャンペーン締切間近

忘れかけていましたが、Delphi Certification ProgramDelphi Developer CertificationのRAD Studio/Delphi XE(Academicを除く/Starter SKUは含まれる)登録ユーザ向の無償キャンペーンの締め切り(2011/07/31)が迫っています。Delphi Certification FAQsQ: What is the free exam offer for registered Delphi XE and RAD Studio XE users?にあるように、プロモーションページでシリアル番号を入力することで無償テストコードを受け取り、そこから90日以内であれば"Developer Certification"を受験することができます。当然英語ですが、Delphi Developer Certification Exam Study Guideにあるサンプル問題程度の難易度ですので、それほどハードルは高くないと思います。

2011/07/31追記: 現時点(23:47)で上記のプロモーションは既に受け付けられない状態になっています。まぁそもそもどこの標準時を基準にしているのかも書いていない話なのでアレですが、日本人の感覚からするといかがなもんかなぁと。PDTベースだとまだ16時間もあるわけだし。

2011/08/02追記: 公式フォーラムのEmbarcadero Discussion Forums: Free Exam Offer for Delphi XE and RAD Studio XE Users, can't get test codeの情報によると現時点(2011/08/02 13:50JST)でプロモーションページが再びオープンとなっています。いつまでこの状態が続くのかはわかりませんが、まだ申し込んでいない方はお早めに。

2011年7月27日

Michael RozlogがEmbarcaderoを退職

DelphiプロダクトマネージャだったMichael Rozlogさんが2011/07/29(今週末ですな)でエンバカデロ・テクノロジーズを退職することを明らかにしました。

Michael Rozlog » Blog Archive » The time as come…

This is my last blog post for Borland/Inprise/Borland/CodeGear/Embarcadero as Friday the 29th is my last day.ということだそうです。ちょうど一年前のNick Hodgesさんの一件といい、新バージョンのリリース直前にマネージャが抜けるってのはどうなんでしょうね。直接XE2との関係はなさそうです(追記参照)。

Michael Rozlogさんの新しいblogは

TECHMANA

で、2011/07/30スタートとのことです。

2011/07/28追記: EDNプログラムマネージャだったJohn Kasterさんも2011/12/27でエンバカデロ・テクノロジーズを退職していたんですね。いまごろ気付きました。John Kasterさんの新しいblogは

John Kaster

です。

2011/07/30追記: Michael Rozlogさんは2011/01からセールスに異動していたようで、それが理由では?という見方もあるようです。というわけで一部修正。

2011年7月26日

TListの新しいメソッドSortList/IndexOfItem/ExtractItem/RemoveItemとTDirection

Delphi 2010でTListクラスにSortListIndexOfItemExtractItemRemoveItemというメソッドが追加されています。

TList.SortListはQuickSortの比較関数を"const TListSortCompareFunc" = "reference to function(Item2: Pointer, Item1: Pointer): Integer;"、つまり無名メソッドで渡すことができる、というもので、従来のSortのように比較関数を別途記述する必要がありません。たとえばフォーム上にTButtonとTMemoをひとつずつ配置しておき、
type
  TTestItem = class(TObject)
  private
    FNum: Integer;
    FStr: String;
  public
    constructor Create(ANum: Integer; const AStr: String);
    property Num: Integer read FNum;
   property Str: String read FStr;
  end;

constructor TTestItem.Create(ANum: Integer; const AStr: String);
begin
  inherited Create;
  FNum := ANum;
  FStr := AStr;
end;

procedure TForm1.Button1Click(Sender: TObject);

  procedure ShowList(List: TObjectList; const Caption: String);
  var
    Index: Integer;
    TestItem: TTestItem;
  begin
    Memo1.Lines.Add(Caption);
    for Index := 0 to List.Count - 1 do
    begin
      TestItem := List.Items[Index] as TTestItem;
      Memo1.Lines.Add(Format('Num=%d Str=%s',
                             [TestItem.Num,TestItem.Str]));
    end;
    Memo1.Lines.Add('');
  end;

var
  List: TObjectList;
begin

  List := TObjectList.Create(True);
  try
    List.Add(TTestItem.Create(5,'Five'));
    List.Add(TTestItem.Create(3,'Three'));
    List.Add(TTestItem.Create(1,'One'));
    List.Add(TTestItem.Create(2,'Two'));
    List.Add(TTestItem.Create(4,'Four'));

    ShowList(List,'Before sort');

    List.SortList(
      function (Item1, Item2: Pointer): Integer
      begin
        Result := TTestItem(Item1).Num - TTestItem(Item2).Num;
      end);

    ShowList(List,'After sort (Num)');

    List.SortList(
      function (Item1, Item2: Pointer): Integer
      begin
        Result := CompareStr(TTestItem(Item1).Str,TTestItem(Item2).Str);
      end);

    ShowList(List,'After sort (Str)');

  finally
    List.Free;
  end;

end;

こんな感じでSortListのパラメータに直接比較関数を記述できます。無名関数の記述が気持ち悪い(セミコロンの付きかたが違う、とか)という点はともかく、比較関数そのものはわかりやすく書くことができます。

一方IndexOfItem/ExtractItem/RemoveItemはIndexOf/Extract/Removeに追加のパラメータとしてFromBeginning/FromEndという2値の列挙型TList.TDirectionを受け取り、これがFromBeginningならば対象アイテムを(従来通り)先頭から検索し、FromEndならば対象アイテムを末尾から検索するというバリエーションです(なぜオーバロードにせず別のシグネチャを与えたのかはわかりません)。

元ねたはMarco CantuさんDelphi 2010 Handbook

2011年7月25日

Windows Vista/Server 2008/7/Server 2008 R2でIPv6コンポーネントを無効にする

Windows Vista以降のOSではIPv4とIPv6がデュアルIPレイヤという形で統合されて実装されていて、IPv6が不要であってもアンインストールできなくなっています。そこでIPv6が不要な(あるいは邪魔な)場合にIPv6コンポーネントを無効にする方法(ただしIPv6のループバックインタフェースは無効にならないので注意)。とりあえずメモ。

診断ツール Fix it: Windows Vista、Windows 7、および Windows Server 2008 で特定の IPv6 (Internet Protocol version 6) を無効にする方法に関する問題

直接レジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
の値(DWORD)を、
  • 0: IPv6有効(デフォルト)
  • 0xFFFFFFFF: IPv6無効
  • 0x20: プレフィックスポリシーでIPv4を使用
  • 0x10: IPv6ネイティブインタフェース無効
  • 0x01: IPv6トンネルインタフェース無効
と書き換えても問題ありませんが、レジストリの書き換えを行ってくれるFix itウィザードも用意されています。

またIPv6を無効にするまでもないけれどもIPv4を優先に設定したいような場合はコマンドプロンプトから

netsh interface ipv6 show prefixpolicies
で表示されるプレフィックス"::ffff:0:0/96"(IPv4-Mapped IPv6 Address)が最優先になるように、管理者権限を持つコマンドプロンプトから

netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 100 4
(最後から2番目の値が優先度(大きいほうが優先)で最後の値が当該プレフィックスのラベル)とすればいいようです(こちらはIPv6を有効にしたWindows XPでも使えます)。デフォルトの設定に戻すときは管理者権限を持つコマンドプロンプトから

netsh interface ipv6 reset
として再起動します。

元ねたはセキュリティホール memo2011/07/12の記事と、IPv4 を IPv6 より優先にするおよびWindows 7でIPv4をIPv6に対して優先にする方法 - 徒然日記(2011-03-30)

2011年7月23日

DDevExtensions 2.4リリース

Andreas HausladenさんDDevExtensionsがアップデートされてVersion 2.4になっています。Delphi 2007/2009で[Shift]+[F3]による逆方向の検索ができるようになるなど、細かく新機能が追加されています。

DDevExtensions 2.4 | Andy’s Blog and Tools

2011年7月19日

デバッグ時にEIPを移動する

RAD Studio/Delphi/C++Builder 2010以降のIDEのデバッガ上でプログラムをデバッグ実行しているときに(ブレークポイントにヒットするなどして)実行が停止した状態で、次に実行する行を示す矢印(Instruction pointer symbol)を他の行にドラッグすることで任意の場所から実行を継続することができる、という機能が追加されています。同一ソースファイル上であれば別の関数のコードに移動することもできますが、実際に実行を継続すると概ねエラーになります(スタックの状態とか自動変数のことを考えれば当たり前ですけど)。

ヘルプを確認してみるとDelphi 2010 および C++Builder 2010 の新機能 - RAD Studio (日本語)のコード エディタの変更点の最後に
アイコンのドラッグ アンド ドロップ: コード エディタ ウィンドウの左マージン領域で、特定のアイコンを移動できるようになりました。 たとえば、
(略)
指示ポインタ記号: このアイコンは、(デバッグ中に)次に実行するコード行を示します。

とこっそりと書いてありますが、気づいていませんでした。過去のデベロッパーキャンプで聞いたことがあるような気もしますが、すっかり忘れていたのでとりあえずメモ。

元ねたはMarco CantuさんDelphi 2010 Handbook

2011年7月13日

Microsoft Monthly Update 2011/07

今日はMicrosoftのセキュリティアップデートの日です。
MS11-053
MS11-054
MS11-055
MS11-056

今回の更新をもって
  • Windows Vista Service Pack 1 (x86/x64)
  • Windows Server 2008 (RTM)
  • Office XP
  • .NET Framework 3.0/3.0 Service Pack 1/3.0 Service Pack 2/3.5
  • Exchange Server 2007 Service Pack 2
のサポートが終了になります。Windows Vista/Windows Server 2008についてはService Pack 2 (x86/x64)を、.NET Frameworkについては3.5 Service 1を、それぞれ適用することが推奨されています。元ねたはサポート ライフサイクル終了に伴うセキュリティ更新プログラム配信終了の予告 - 日本のセキュリティチーム - Site Home - TechNet Blogs

2011年7月11日

FindCmdLineSwitch関数

SysUtils.FindCmdLineSwitch関数はコマンドラインパラメータに特定のスイッチが指定されているかどうかを判定する関数で、Delphi 4以降に存在していますが、Delphi 2010までは特定のスイッチの有無を調べるだけで、それ以上のことをしようと思うと結局ParamCountParamStrのお世話になるしかなく、いま一つ使えない関数でした。ところがDelphi XEでは4つめのオーバロード関数が追加され、第4パラメータのSwitchTypesで指定した方法でスイッチのパラメータを取得できるようになり、使える関数になりました。これは非常に便利です。とりあえずメモ。

元ねたはMarco CantuさんDelphi XE Handbook

2011年7月8日

3rd anniversary

このblogを始めて丸3年になりました。当初は過疎blogでしたが、いまでは本家エンバカデロ・テクノロジーズからもリンクしていただくまでになり、ありがたく思っています。

さて、この1年間のエントリは205件(2010/07/08-2011/07/07)と週平均4エントリに迫っており、なかなか頑張った感じです。

2010/07にBloggerに追加されたアクセス解析の統計情報から月別ページビュー(PV)を。

2010/07: 4,267
2010/08: 4,518
2010/09: 4,854
2010/10: 5,547
2010/11: 5,149
2010/12: 5,570
2011/01: 5,291
2011/02: 6,010
2011/03: 5,587
2011/04: 6,308
2011/05: 6,950
2011/06: 6,882
2010/07-2011/06合計: 66,977

平均的には1日あたり平日は約250+PV、休日は約100+PVといったところでしょうか。またページ別ではWindowsのSNP(Scalable Networking Pack)を無効にするのPVが圧倒的に多く、このページだけで約5000+PV、全体の約8%を占めています。これはGoogle(jp)上の"SNP 無効"という検索で非常に上位に(それもGoogleがアルゴリズムの変更を行うまで元ねたの日本マイクロソフトのAsk the Network & AD Support Teamのアーティクルよりも上位だった)出てくるのが理由だと思われます。bing(us)では同一のキーワードでもそれほど極端に上位ではないので、Blogger上のコンテンツであることが有利に働いているのでしょう。次点はMS11-025によって発生する問題とその対策で、わずか2ヶ月で900+PVと、この問題がいかに影響が大きく、かつMicrosoftからの情報発信が不十分だったか、ということを物語っていると思われます。
一方、国と地域別では当たり前ですが90%以上を日本からが占めていて、アメリカ合衆国、オランダ、大韓民国と続いています。アンゴラやラトビアなどからは一時的に一定期間だけまとまったアクセスがあるので、これはプロキシとして利用されているのではないかと思っています。

今年はこの後RAD Studio/Delphi/C++Builder XE2(Pulsar)のリリースが控えています(8月とも9月ともいわれていますが、さて…)。去年からの宿題であるクロスプラットフォーム(MacOSサポート)やWindows x64サポートの第一歩になるDelphiのx64版など、なかなか楽しみです。

そういえばGoogleのPageRankは長らく"2"でしたが、数日前にふと確認したら"3"に成り上がっていました。これもご贔屓にしてくださっているみなさまのおかげです。

2011年7月6日

2011/07開催のウェブセミナー

2011/07/21 17:00-18:00(JST) 9月まで待てない!7~8月はデベロッパーキャンププレセミナー 第1回 - 再演!「今さら聞けない(?!)C/C++ポインター再入門」

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

第20回エンバカデロ・デベロッパーキャンプは2011年09月06日に開催されます。

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

今回はエンバカデロ・テクノロジーズ チーフエヴァンジェリストのDavid I (David Intersimone)さんが来日して、RAD Studio/Delphi/C++Builder XE2(仮称、コードネームPulsar)についてディープなセッションを繰り広げる予定とのことです。またG6セッションは例によってはかせと銅鑼娘はやしさん司会の『ライトニングトーク「共有!みんなの開発事例、開発経験、テクニック」』で、参加者募集中だそうです。

また『9月まで待てない!7~8月はデベロッパーキャンププレセミナー 』というタイトルで3回に渡ってWebSeminarが行われます。第1回、第2回は以前のデベロッパーキャンプの再放送ですが、第3回はタイミング的に面白い話が聞けるかもしれません。

2011/07/21追記: プレセミナーは「再放送」ではなく「再演」なんですね。

2011/08/17追記: EDNの記事のリンクを追加しました。

2011年7月2日

[書籍]Delphi XE Handbook

Amazon.comで注文した

Delphi XE Handbook (Amazon US)/Marco Cantu著/CreateSpace/ISBN 978-1463600679/34.50USD

が配送されてきました(今回の配送は日本郵便でした)。2011/06/21に注文して11日目の到着、34.50USDにShippingの5.48USDで締めて39.98USD=3,233JPY(暫定)3,253JPY(1USD=81.366JPY)でした。

2011/07/17追記: 日本のamazonでも扱いが始まっています。

Amazon.co.jp: Delphi Xe Handbook: A Guide to New Features in Delphi Xe: Marco Cantu: 洋書

2,908円で送料がかからないので、円高が72円台に進んだりしなければamazon.co.jpのほうが安いですね。

2011/07/31追記: カードの利用明細によると3,253JPY(1.00USD=81.366JPY)で決済されました。amazon.co.jpでは2,836JPYで配送無料ですから、やはりこちらがお勧めです。

2011年7月1日

RAD Studio/Delphi/C++Builder XE Help Update 3

RAD Studio/Delphi/C++Builder XEのHelp Update 3がリリースされています。

Help Update 3 for Delphi XE and C++Builder XE now available
リリース ノート: Delphi XE および C++Builder XE Help Update 3
28256 Help Update 3 for Delphi XE and C++Builder XE

2011/07/03追記: リリースノートへのリンクを追加しました。お休みなのにごくろうさまです。