InterBase XE3 Update 4 Hotfix 3がリリースされています。バージョンは11.0.4.820となっています。
30112 InterBase XE3 Update 4 Hotfix 3 (11.0.4.820) for Windows
2015年1月9日
2015年1月6日
シリアルポートをフレンドリ名で列挙する
以前使用できるシリアルポートをレジストリから列挙する方法について書きましたが、今度はシリアルポートをそのフレンドリ名(デバイスマネージャ上で表示される表記)とともに列挙する方法です。
フレンドリ名の取得にはSetup APIを使用しますが、残念ながらDelphiにはSetup API関係の定義が含まれていない(C++Builderならsetupapi.hがあるのですが)ため、まずは必要なWin32APIと構造体を定義します。
→シリアルポートをフレンドリ名で列挙 (Gist)
フレンドリ名の取得にはSetup APIを使用しますが、残念ながらDelphiにはSetup API関係の定義が含まれていない(C++Builderならsetupapi.hがあるのですが)ため、まずは必要なWin32APIと構造体を定義します。
{ Setup APIs }
type
{ HDEVINFO }
HDEVINFO = THandle;
{$EXTERNALSYM HDEVINFO}
{ SP_DEVINFO_DATA }
SP_DEVINFO_DATA = packed record
cbSize: DWORD;
ClassGuid: TGUID;
DevInst: DWORD;
Reserved: ULONG_PTR;
end;
{$EXTERNALSYM SP_DEVINFO_DATA}
const
{ Flags for SetupDiGetClassDevs }
DIGCF_PRESENT = $00000002;
{$EXTERNALSYM DIGCF_PRESENT}
{ Property for SetupDiGetDeviceRegistryProperty }
SPDRP_DEVICEDESC = $00000000;
{$EXTERNALSYM SPDRP_DEVICEDESC}
SPDRP_FRIENDLYNAME = $0000000C;
{$EXTERNALSYM SPDRP_FRIENDLYNAME}
{ Scope for SetupDiOpenDevRegKey }
DICS_FLAG_GLOBAL = $00000001;
{$EXTERNALSYM DICS_FLAG_GLOBAL}
{ KeyType for SetupDiOpenDevRegKey }
DIREG_DEV = $00000001;
{$EXTERNALSYM DIREG_DEV}
{ SetupDiClassGuidsFromName }
function SetupDiClassGuidsFromName(const ClassName: PChar;
ClassGuidList: PGUID;
ClassGuidListSize: DWORD;
var RequiredSize: DWORD): BOOL; stdcall;
external 'SetupApi.dll' name
{$IFDEF UNICODE}
'SetupDiClassGuidsFromNameW';
{$ELSE}
'SetupDiClassGuidsFromNameA';
{$ENDIF}
{$EXTERNALSYM SetupDiClassGuidsFromName}
{ SetupDiGetClassDevs }
function SetupDiGetClassDevs(ClassGuid: PGUID;
const Enumerator: PChar;
hwndParent: HWND;
Flags: DWORD): HDEVINFO; stdcall;
external 'SetupApi.dll' name
{$IFDEF UNICODE}
'SetupDiGetClassDevsW';
{$ELSE}
'SetupDiGetClassDevsA';
{$ENDIF}
{$EXTERNALSYM SetupDiGetClassDevs}
{ SetupDiDestroyDeviceInfoList }
function SetupDiDestroyDeviceInfoList(DeviceInfoSet: HDEVINFO): BOOL; stdcall;
external 'SetupApi.dll' name 'SetupDiDestroyDeviceInfoList';
{$EXTERNALSYM SetupDiDestroyDeviceInfoList}
{ SetupDiEnumDeviceInfo }
function SetupDiEnumDeviceInfo(DeviceInfoSet: HDEVINFO;
MemberIndex: DWORD;
var DeviceInfoData: SP_DEVINFO_DATA): BOOL; stdcall;
external 'SetupApi.dll' name 'SetupDiEnumDeviceInfo';
{$EXTERNALSYM SetupDiEnumDeviceInfo}
{ SetupDiGetDeviceRegistryProperty }
function SetupDiGetDeviceRegistryProperty(DeviceInfoSet: HDEVINFO;
const DeviceInfoData: SP_DEVINFO_DATA;
Prop: DWORD;
PropertyRegDataType: PDWORD;
PropertyBuffer: Pointer;
PropertyBufferSize: DWORD;
var RequiredSize: DWORD): BOOL; stdcall;
external 'SetupApi.dll' name
{$IFDEF UNICODE}
'SetupDiGetDeviceRegistryPropertyW';
{$ELSE}
'SetupDiGetDeviceRegistryPropertyA';
{$ENDIF}
{$EXTERNALSYM SetupDiGetDeviceRegistryProperty}
{ SetupDiOpenDevRegKey }
function SetupDiOpenDevRegKey(DeviceInfoSet: HDEVINFO;
var DeviceInfoData: SP_DEVINFO_DATA;
Scope: DWORD;
HwProfile: DWORD;
KeyType: DWORD;
samDesired: REGSAM): HKEY; stdcall;
external 'SetupApi.dll' name 'SetupDiOpenDevRegKey';
{$EXTERNALSYM SetupDiOpenDevRegKey}
これらを使用してシリアルポートをそのフレンドリ名とともに取得します。function EnumSerialCommWithFriendlyName(const S: TStrings): Integer;
var
Guid: TGUID;
Size: DWORD;
hDevInf: HDEVINFO;
Index: DWORD;
DevInfoData: SP_DEVINFO_DATA;
S1: String;
hRegKey: HKEY;
S2: String;
RegType: DWORD;
PortNo: Integer;
begin
Result := 0;
Size := 0;
if SetupDiClassGuidsFromName('Ports',@Guid,1,Size) = False then
begin
RaiseLastOSError;
end;
hDevInf := SetupDiGetClassDevs(@Guid,nil,0,DIGCF_PRESENT);
if hDevInf = INVALID_HANDLE_VALUE then
begin
RaiseLastOSError;
end;
try
Index := 0;
while True do
begin
FillChar(DevInfoData,SizeOf(DevInfoData),0);
DevInfoData.cbSize := SizeOf(DevInfoData);
if SetupDiEnumDeviceInfo(hDevInf,Index,DevInfoData) = False then
begin
Break;
end;
SetupDiGetDeviceRegistryProperty(hDevInf,DevInfoData,SPDRP_FRIENDLYNAME,
nil,nil,0,Size);
SetLength(S1,(Size + SizeOf(Char)) div SizeOf(Char));
if SetupDiGetDeviceRegistryProperty(hDevInf,DevInfoData,SPDRP_FRIENDLYNAME,
nil,PChar(S1),Size,Size) = True then
begin
SetLength(S1,StrLen(PChar(S1)));
hRegKey := SetupDiOpenDevRegKey(hDevInf,DevInfoData,DICS_FLAG_GLOBAL,0,DIREG_DEV,KEY_READ);
if hRegKey <> INVALID_HANDLE_VALUE then
begin
try
if RegQueryInfoKey(hRegKey,nil,nil,nil,nil,nil,nil,nil,nil,
@Size,nil,nil) = ERROR_SUCCESS then
begin
SetLength(S2,(Size + SizeOf(Char)) div SizeOf(Char));
if (RegQueryValueEx(hRegKey,'PortName',nil,@RegType,Pointer(PChar(S2)),
@Size) = ERROR_SUCCESS) and
(RegType = REG_SZ) then
begin
SetLength(S2,StrLen(PChar(S2)));
if CompareText(Copy(S2,1,3),'COM') = 0 then
begin
if TryStrToInt(Copy(S2,4,Length(S2)),PortNo) = True then
begin
S.AddObject(S1,Pointer(PortNo));
if Result < PortNo then
begin
Result := PortNo;
end;
end;
end;
end;
end;
finally
RegCloseKey(hRegKey);
end;
end;
end;
Index := Index + 1;
end;
finally
SetupDiDestroyDeviceInfoList(hDevInf);
end;
end;
手順ですが、まずSetupDiClassGuidsFromNameでデバイスインタフェースクラスが'Ports'のGUIDを取得し、そのGUIDを使用してSetupDiGetClassDevsで現在システムに認識されているDevice Information Setsを取得し、SetupDiEnumDeviceInfoでDevice Information Set一つずつの情報をSP_DEVINFO_DATAに取り出して、SetupDiGetDeviceRegistryPropertyでフレンドリ名を取得します。さらにSetupDiOpenDevRegKeyでデバイス固有情報の含まれるレジストリキー('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum'の下のデバイスごとのキーに含まれる'Device Parameters'キー)を開き、RegQueryValueExで'PortName'という名前でREG_SZの値のデータを文字列として取得し、'COM'で始まっていたらシリアルポートとしてフレンドリ名とともにパラメータ(S: TStrings)に格納します。全てのDevice Information Setをチェックし終わったらSetupDiDestroyDeviceInfoListでDevice Information Sets全体を解放します。
以前のものと同様に必ずしもポート番号順にはなっていないため、必要に応じて結果をソートしてください。→シリアルポートをフレンドリ名で列挙 (Gist)
2015年1月1日
2014年12月22日
[書籍]MariaDB & MySQL全機能バイブル
MARUZEN&ジュンク堂書店 渋谷店で
MariaDB & MySQL全機能バイブル (amazon)/鈴木啓修、山田奈緒子著/技術評論社/ISBN 978-4-7741-7020-6/3,780円
を購入。
MariaDB & MySQL全機能バイブル (amazon)/鈴木啓修、山田奈緒子著/技術評論社/ISBN 978-4-7741-7020-6/3,780円
を購入。
2014年12月12日
Firebird 2.5.3 Security Update 1/2.1.7
Firebird Ver2.5.3 Security Update 1(Build 26780)およびVer2.1.7(Build 18553)がリリースされています。
Firebird: Firebird 2.5.3 Security Update 1
Release Notes (PDF)
Firebird: Firebird 2.1.7
Release Notes (PDF)
認証されていないユーザから特別に加工されたパケットを送りつけることでリモートDoS攻撃を受けてしまうセキュリティホールが報告されており、これに対応するものです。信頼できないネットワークからのアクセスを受けるような状況ではアップデートを考慮すべきかと思われます。
Firebird: Firebird 2.5.3 Security Update 1
Release Notes (PDF)
Firebird: Firebird 2.1.7
Release Notes (PDF)
認証されていないユーザから特別に加工されたパケットを送りつけることでリモートDoS攻撃を受けてしまうセキュリティホールが報告されており、これに対応するものです。信頼できないネットワークからのアクセスを受けるような状況ではアップデートを考慮すべきかと思われます。
2014年12月10日
2014年12月8日
2014年12月4日
InterBase XE7リリース
InterBase XE7(12.0.0.191)がリリースされています。現時点(2014/12/04)でDeveloper EditionとServer Edition(トライアル版)の英語版のみダウンロード可能です。2014/12/12にDeveloper EditionとServer Edition(トライアル版)の日本語版もダウンロードできるようになりました。
エンバカデロ、マルチデバイス対応のハイパフォーマンスデータベースInterBaseの新バージョンを発表 | Press Releases
30090 InterBase XE7 (12.0.0.191) Developer Edition, Japanese
30066 InterBase XE7 (12.0.0.191) Developer Edition, English
InterBase XE7 Readme (en)
InterBase XE7 Readme - InterBase (en)
What's New in InterBase XE7
What's New in InterBase XE7 - InterBase
2014/12/09追記: InterBase XE7(開発コードネーム"DeltaForce")では次のような新機能が追加されたとのことです。
InterBase XE7 - Blogs
What's New in InterBase XE7 - InterBase
エンバカデロ、マルチデバイス対応のハイパフォーマンスデータベースInterBaseの新バージョンを発表 | Press Releases
30090 InterBase XE7 (12.0.0.191) Developer Edition, Japanese
30066 InterBase XE7 (12.0.0.191) Developer Edition, English
InterBase XE7 Readme (en)
InterBase XE7 Readme - InterBase (en)
What's New in InterBase XE7
What's New in InterBase XE7 - InterBase
2014/12/09追記: InterBase XE7(開発コードネーム"DeltaForce")では次のような新機能が追加されたとのことです。
- Change Views機能(テーブルの変更履歴を簡単に追跡する)
- 64ビット版LinuxとUbuntu Linuxのサポート(RHEL 6/7、SUSE 11、Ubuntu 14)
- パフォーマンスの向上(SMP環境でのパフォーマンスの向上、トランザクションの改善)
- トランザクションIDの64ビット化
- インクリメンタルデータダンプ(データダンプ時に変更があったページのみを対象に)
- APIの拡張(オンラインダンプ/インクリメンタルダンプ、ジャーナルアーカイブ関係APIの追加)
- パフォーマンス監視の更新(パフォーマンスモニタリングカウンタを64ビット化)
- 以前のバージョンのODSのサポート(ODS 13/14/15をそのまま使用可能に)
InterBase XE7 - Blogs
What's New in InterBase XE7 - InterBase
2014年12月3日
RAD Studio/Delphi/C++Builder XE7 Update 1 Hotfix for FMX Component
RAD Studio/Delphi/C++Builder XE7 Update1のHotfixがリリースされています。[RSP-9732] TViewport3D does not resize properly in Update 1 - Embarcadero Technologiesが修正されているとのことです。
30070 Hotfix for FMX component with custom size reverting to default
30070 Hotfix for FMX component with custom size reverting to default
2014年12月1日
2014/12開催のセミナー
- Web Seminar
- 2014/12/17 17:00-18:00(JST) デベロッパーTV 「2014年を振り返る」
- Live Seminar
- 2014/12/02 18:00-19:30(JST) 「RAD Studio XE7 - モバイル開発体験ワークショップ」
- 2014/12/11 14:00-17:30(JST) エンタープライズ・ルネッサンス2014「エンタープライズモバイル実現セミナー」
- 2014/12/11 18:00-19:30(JST) 技術研修セミナー「C++で始めるマルチデバイス開発入門」
2014年11月14日
RAD Studio/Delphi/C++Builder XE7 Update 1
RAD Studio/Delphi/C++Builder XE7のUpdate 1がリリースされています。
Update 1 for RAD Studio, Delphi and C++Builder XE7
30048 Delphi XE7 and C++Builder XE7 ISO (includes Update 1)
XE7 Update 1 のリリース ノート - RAD Studio (en)
Update 1 Fix List for RAD Studio XE7, Delphi XE7, and C++ Builder XE7
2014/11/19追記: XE7 Update 1でFMX/2DのフォームにTViewport3Dを配置すると、フォームデザイナで開きなおしたときにサイズが正しく反映されない、という問題([RSP-9732] TViewport3D does not resize properly in Update 1)が報告されています。FMXで3Dアプリケーションを開発している方はUpdate 1のインストールを見合わせたほうがよいかもしれません。
2014/12/03追記: XE7 Update 1の[RSP-9732] TViewport3D does not resize properly in Update 1を修正するHotfixがリリースされています。
30070 Hotfix for FMX component with custom size reverting to default
Update 1 for RAD Studio, Delphi and C++Builder XE7
30048 Delphi XE7 and C++Builder XE7 ISO (includes Update 1)
XE7 Update 1 のリリース ノート - RAD Studio (en)
Update 1 Fix List for RAD Studio XE7, Delphi XE7, and C++ Builder XE7
2014/11/19追記: XE7 Update 1でFMX/2DのフォームにTViewport3Dを配置すると、フォームデザイナで開きなおしたときにサイズが正しく反映されない、という問題([RSP-9732] TViewport3D does not resize properly in Update 1)が報告されています。
2014/12/03追記: XE7 Update 1の[RSP-9732] TViewport3D does not resize properly in Update 1を修正するHotfixがリリースされています。
30070 Hotfix for FMX component with custom size reverting to default
2014年11月12日
Microsoft Monthly Update 2014/11
今日はMicrosoftのセキュリティアップデートの日です。
MS14-064
MS14-065
MS14-066
MS14-067
MS14-068
MS14-069
MS14-070
MS14-071
MS14-072
MS14-073
MS14-074
MS14-075
MS14-076
MS14-077
MS14-078
MS14-079
なんだこのリリース日未定ってのは…?
2014/11/19追記: MS14-068がリリースされています。
2014/12/10追記: MS14-075は2014/12のアップデートに含まれる形でリリースされました。
MS14-064
MS14-065
MS14-066
MS14-067
MS14-068
MS14-069
MS14-070
MS14-071
MS14-072
MS14-073
MS14-074
MS14-076
MS14-077
MS14-078
MS14-079
なんだこのリリース日未定ってのは…?
2014/11/19追記: MS14-068がリリースされています。
2014/12/10追記: MS14-075は2014/12のアップデートに含まれる形でリリースされました。
2014年11月11日
第29回エンバカデロ・デベロッパーキャンプ
本日10:00から第29回エンバカデロ・デベロッパーキャンプ・イン東京がエビススバルビル EBiS303 カンファレンススペースで行われます。セッション資料は
ダウンロード | デベロッパーキャンプ
からダウンロードできるようになる予定です(2014/11/10 10:00以降)。またUStreamで全セッションの中継が予定されています(CH1がC/Gセッション、CH2がAセッション)。
無事に終了しました。セッションスピーカ/LT参加者の皆さん、参加者の皆さん、関係者の皆さん、おつかれさまでした。
2014/11/19追記: セッション資料がダウンロードできるようになっています。またセッションリプレイも順次公開されています。
第29回 エンバカデロ・デベロッパーキャンプ資料ダウンロード
ダウンロード | デベロッパーキャンプ
からダウンロードできるようになる予定です(2014/11/10 10:00以降)。またUStreamで全セッションの中継が予定されています(CH1がC/Gセッション、CH2がAセッション)。
無事に終了しました。セッションスピーカ/LT参加者の皆さん、参加者の皆さん、関係者の皆さん、おつかれさまでした。
2014/11/19追記: セッション資料がダウンロードできるようになっています。またセッションリプレイも順次公開されています。
第29回 エンバカデロ・デベロッパーキャンプ資料ダウンロード
- 【C1】Delphi/C++テクニカルセッション「ゲームUIから考えるこれからのエンタープライズUX」
- 【A1】Delphiテクニカルセッション「オンプレからクラウドに移行する中、新旧含め様々なデバイスと接続しないといけない要求にDelphiのクラウド接続で応えてみる」
- 【C2】テクニカルセッション「着飾らない IoT」
- 【A2】Delphiテクニカルセッション「Delphiで作るデータベースツール。その開発のポイントは・・」
- 【G3】ジェネラルセッション「エンバカデロのマルチデバイス開発環境の現在、そして将来」
- Replay (1/2)
- Replay (2/2)
- 【C4】テクニカルセッション「マルチデバイス向けアプリ開発・構築におけるデータハンドリングのいろいろ」
- 【A4】Delphi/C++テクニカルセッション「FireMonkeyの仕組み」
- 【C5】Delphi/C++テクニカルセッション「マルチデバイス対応アプリ開発の勘所」
- 【A5】C++テクニカルセッション「C++コンパイラアップデート」
- Replay (1/2)
- Replay (2/2)
- 【G6】ライトニングトーク「共有!みんなの開発事例、開発経験、テクニック」
- Replay (1/2)
- Replay (2/2)
2014年11月1日
2014/11開催のセミナー
- Web Seminar
- 2014/11/19 17:00-18:00(JST) デベロッパーTV 「デベロッパーキャンプ開催レポート」
- Live Seminar
- 2014/11/07 10:00-18:00(JST) 「第29回 エンバカデロ・デベロッパーキャンプ・イン・大阪」
- 2014/11/11 10:00-18:00(JST) 「第29回 エンバカデロ・デベロッパーキャンプ・イン・東京」
- 2014/11/27 14:00-16:30(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
2014年10月15日
2014年10月11日
[書籍][eBook]Delphi Cookbook
Packt Publishingで注文した
Delphi Cookbook (amazon US, amazon JP)/Daniele Teti著/Packt Publishing/ISBN 9781783559589/26.99GBP(Print+eBook)
が配送されてきました(今回の配送はFedEx/佐川急便で、シンガポールからの発送でした)。2014/09/26に注文して15日目の到着、26.99GBP=4,720JPY(暫定、1GBP=174.88JPY)4,875JPY(1GBP=180.623JPY)でした。
2014/10/16追記: 興味がある方がいるかどうかはわかりませんが、一応自分のために目次をてきとうに訳してみました。
Delphi Cookbook (amazon US, amazon JP)/Daniele Teti著/Packt Publishing/ISBN 9781783559589/26.99GBP(Print+eBook)
が配送されてきました(今回の配送はFedEx/佐川急便で、シンガポールからの発送でした)。2014/09/26に注文して15日目の到着、26.99GBP=
2014/10/16追記: 興味がある方がいるかどうかはわかりませんが、一応自分のために目次をてきとうに訳してみました。
- 序文
- 第1章 Delphiの基本
- イントロダクション
- VCLスタイルでアプリケーションのルックアンドフィールをコードなしに変更する
- 実行時にVCLアプリケーションのスタイルを変更する
- TDBGridをカスタマイズする
- オーナドローコンボボックスとリストボックスを使う
- 埋め込みフォームをスタックする
- JSONを操作する
- XMLドキュメントを操作/変換する
- 21世紀のI/O - ストリームを知る
- VCLアプリケーションをタスクトレイに格納する
- Windowsのサービスを作る
- Windows上でアプリケーションに拡張子を関連付けする
- 第2章 Delphi言語のNinjaになる
- イントロダクション
- 無名メソッドを楽しむ - 高階関数を使う
- 列挙可能な型を書く
- RTTIで救出 - クラスを実行時に設定する
- RTTIでダックタイピング
- クラスにヘルパを作成する
- 正規表現で文字列をチェックする
- 第3章 FireMonkeyでクロスプラットフォーム
- イントロダクション
- FireMonkey標準のコントロールにスタイルを適用して新しい体裁を与える
- スタイルを適用したTListBoxを作る
- アニメーションで顧客に印象付ける
- LiveBindingでマスタ/詳細を使う
- パスを使って複雑なベクタ図形を表示する
- VCLアプリケーションでFireMonkeyを使う
- 第4章 マルチスレッディングの千の顔
- イントロダクション
- TMonitorで共有リソースを同期する
- スレッドセーフキューでメインスレッドと会話する
- TEventで複数のスレッドと同期する
- オシロスコープのように測定値を2Dグラフに表示する
- 第5章 サーバでDelphiを動かす
- イントロダクション
- サーバ上のWebBrokerを使用したwebクライアントのJavaScriptアプリケーション
- コンソールサービスアプリケーションをWindowsサービスに書き換える
- データセットをJSONにシリアライズして元に戻す
- RTTIでオブジェクトをJSONにシリアライズして元に戻す
- パラメータをエンコードしてPOST HTTPリクエストを送信する
- WebBrokerでRESTfulインタフェースを実装する
- UDPでリモートアプリケーションを制御する
- アプリケーションテザリングを使ってコンパニオンアプリケーションを作る
- DataSnapのApacheモジュールを作る
- 第6章 FireMonkeyでモバイル革命に乗る
- イントロダクション
- 写真を撮り、エフェクトを適用し、シェアする
- リストビューでローカルデータを表示して検索する
- メインスレッドをブロックするな!
- SQLiteデータベースでTo-Doリストを扱う
- スタイルを適用したTListViewでデータの長いリストを扱う
- 連続的に写真とロケーションを取得してサーバに送信する
- バックエンドと会話する
- アプリケーションから電話を掛ける
- アプリケーションのライフサイクルを追跡する
- 第7章 特定のプラットフォームの機能を使う
- イントロダクション
- Android SDKのJavaクラスを使う
- iOSのObjective-C SDKクラスを使う
- アプリケーションでPDFファイルを表示する
- Androidのインテントを送信する
- 電話を喋らせる - AndroidのTextToSpeechエンジンを使う
- 索引
2014年10月9日
第29回エンバカデロ・デベロッパーキャンプ開催決定
第29回エンバカデロ・デベロッパーキャンプは大阪と東京のダブル開催(キャンプ・ツアー)で、2014年11月07日(大阪)および2014年11月11日(東京)に開催されます。
デベロッパーキャンプ
今回は製品担当ディレクタのJohn Thomasさんがいらっしゃるようです。
デベロッパーキャンプ
今回は製品担当ディレクタのJohn Thomasさんがいらっしゃるようです。
2014年10月1日
2014/10開催のセミナー
- Web Seminar
- 2014/10/09 15:00-17:00(JST) Webセミナー「企業が業務システム向けにモバイルアプリ開発を始めるにあたり失敗しないための8ヶ条」
- 2014/10/22 17:00-18:00(JST) エンバカデロ・デベロッパーTV デベロッパーキャンプ先取り情報
- 2014/10/28 21:00-2014/10/29 10:45(JST) CodeRage 9 Day 1
- 2014/10/29 21:00-2014/10/30 10:45(JST) CodeRage 9 Day 2
- 2014/10/30 21:00-2014/10/31 10:45(JST) CodeRage 9 Day 3
- Live Seminar
- 2014/10/02 14:00-16:30(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
- 2014/10/09 18:00-19:30(JST) 「RAD Studio XE7 - モバイル開発体験ワークショップ」
- 2014/10/30 18:00-19:30(JST) 「RAD Studio XE7 - モバイル開発体験ワークショップ」
2014年9月19日
[書籍]C/C++セキュアコーディング 第2版
MARUZEN&ジュンク堂書店 渋谷店でSecure Coding in C and C++, 2nd Edition (Amazon.com)の翻訳である
C/C++セキュアコーディング 第2版 (amazon)/Robert C. Seacord著/歌代和正、久保正樹、椎木孝斉訳/KADOKAWA/ISBN 978-4-04-891987-6/4,104円
を購入。
C/C++セキュアコーディング 第2版 (amazon)/Robert C. Seacord著/歌代和正、久保正樹、椎木孝斉訳/KADOKAWA/ISBN 978-4-04-891987-6/4,104円
を購入。
2014年9月10日
登録:
投稿 (Atom)