紀伊國屋書店新宿本店で
クラウドを支えるこれからの暗号技術 (amazon)/光成滋生著/秀和システム/ISBN 978-4-7980-4413-2/3,024円
を購入。
2015年6月28日
2015年6月24日
DataSnapサーバまとめ
DataSnapサーバを作るにあたって、ヘルプのDataSnap アプリケーションの開発あたりに載っていなかったり、載っていても気をつけたほうがいいと個人的に思ったことをまとめました(ユニットやクラス、あるいはそのリンクはDelphi XE8のものです)。
サーバメソッドでサポートされているデータ型
- DataSnapの公開サーバメソッドでデータの受け渡しに使うことができるデータ型は以下のとおり(*がついているものはドキュメントにないもの)。
- 組込型
- Boolean
- SmallInt
- LongInt *
- Integer
- Int64
- Single
- Double
- TDateTime *
- Currency *
- AnsiString
- WideString *
- String
- OleVariant *
- System.JSONユニットで定義されている型
- TJSONValueから派生した全てのクラス
- Data.DBXCommonユニットで定義されている型
- TDBXTime
- TDBXDate
- TDBXStringValue *
- TDBXWideStringValue
- TDBXAnsiStringValue
- TDBXWideCharsValue *
- TDBXAnsiCharsValue *
- TDBXUInt8Value
- TDBXInt8Value
- TDBXInt16Value
- TDBXInt32Value
- TDBXInt64Value
- TDBXSingleValue
- TDBXDoubleValue
- TDBXBcdValue
- TDBXTimeValue
- TDBXDateValue
- TDBXTimeStampValue
- TDBXBooleanValue
- TDBXReaderValue
- TDBXStreamValue
- コレクション
- TDBXReader *
- TDataSet *
- TParams *
- TStream *
- コネクション
- 組込型
- これ以外の型が含まれるメソッドはクライアント側のTSQLConnection上で"DataSnap クライアント クラスの生成"を実行してもサーバメソッドプロキシに含まれなくなるので注意が必要です。そのような型の値やクラスインスタンスをDataSnapで扱うときは組込型に置き換えたり(たとえば列挙型ならOrdで序数にしたりGetEnumNameで文字列化する、など)、マーシャリング、アンマーシャリングという仕組みを使ってJSONオブジェクト経由で受け渡す必要があります。詳細はDataSnap サーバー メソッドの公開を参照。
- DataSnapの公開サーバメソッドでデータの受け渡しに使うことができるデータ型は以下のとおり(*がついているものはドキュメントにないもの)。
クラスインスタンスのマーシャリング/アンマーシャリング
- Delphiのオブジェクト(クラスインスタンス)は、基本的に送信側でTJSONMarshalのMarshalメソッドでTJSONValueにマーシャリング(変換)したものを送信し、受信側では受信したTJSONValueをTJSONUnMarshalのUnmarshalメソッドでアンマーシャリング(逆変換)して元のクラスのインスタンスに戻します(アンマーシャリングの結果の型はTObjectなのでasで本来のクラスにキャストします)。
- クラスインスタンスのリスト(TObjectListやTObjectList<T>)はそのままではマーシャリング/アンマーシャリングできないため、
のようにそれぞれの要素をマーシャリングしたものをTJSONArrayにAddElementメソッドで追加していって、そのTJSONArrayを受け渡して、var Values: TJSONArray; Item: TFoo; List: TObjectList<TFoo>; begin ... for Item in List do begin Values.AddElement(Marshal.Marshal(Item)); end;
TJSONArrayのItems[]プロパティ(またはenumerator)で取り出したJSONValueをアンマーシャリングする、という方法が考えられます。var Values: TJSONArray; Item: TJSONValue; List: TObjectList<TFoo>; begin ... for Item in Values do begin List.Add(UnMarshal.Unmarshal(Item) as TFoo); end; - RTL経由で適切にシリアライズできないようなクラスのメンバを扱う場合は、マーシャラ(TJSONMarshal)およびアンマーシャラ(TJSONUnMarshal)に特定の型またはメンバに対応する変換/逆変換処理をRegisterConverter、RegisterReverterで登録して処理させる、ということになります。詳細はユーザー オブジェクトのシリアル化を参照。
TJSONValueとその派生クラスについて
- DelphiでJSON形式の値を扱うときにはTJSONValueの派生クラスを使用します。
- TJSONNullはJSONのnull値に対応します。
- TJSONFalse/TJSONTrueはJSONの真偽値(false/true)に対応します。
- TJSONStringはJSONの文字列値に対応します。
- TJSONNumberはJSONの数値(整数、浮動小数点数)に対応します。
- TJSONArrayはJSONの配列("JSON形式の値"の配列)に対応します。
- TJSONObjectはJSONのオブジェクト("文字列のキーと値のペア"の順序付けされていない集合)に対応します。"文字列のキーと値のペア"はTJSONPairとして実装されています。ペアはAddPairメソッドで追加し、逆に文字列のキーからペアを取り出すにはGetメソッドを使用します。
- DelphiでJSON形式の値を扱うときにはTJSONValueの派生クラスを使用します。
サーバクラスのインスタンスのライフサイクルについて
- サーバクラスのライフサイクルは、RESTサーバではSessionかInvocation、それ以外ではSessionとするのが普通でしょう。詳細はサーバー クラス インスタンスのライフサイクルを参照。
セッションの管理について
- サーバメソッド内でセッションを取得するときはTDSSessionManager.GetThreadSessionメソッドを使用します。またセッションに関する操作にはSessionIdが必要になります。詳細はサーバー側セッション管理を参照。
- 全てのセッションに対して処理を行いたいときはTDSSessionManagerのForEachSessionメソッドを使用して、
とします。TDSSessionManager.Instance.ForEachSession( procedure (const Session: TDSSession) begin // end); - セッションごとにデータを保持させたいときは、TDSSessionのPutObject、GetObject、HasObject、RemoveObjectの各メソッドで特定のキー(文字列)と結びつける形でTObjectのインスタンスの保持、取得、問い合わせ、削除ができます。保持させたデータはセッションが所有しており、セッションが破棄されるときに解放されます。
- セッションが生成、破棄されるごとに処理を行いたい場合はTDSSessionManagerのシングルトンインスタンスであるInstanceのAddSessionEventでイベント(イベントハンドラや無名メソッド)を登録します(RemoveSessionEventで登録を削除することもできます)。
TDSSessionManager.Instance.AddSessionEvent( procedure(Sender: TObject; const EventType: TDSSessionEventType; const Session: TDSSession) begin case EventType of SessionCreate: begin // Session is created end; SessionClose: begin // Session is closed end; end end);
重量コールバック(クライアントコールバック)の管理
- TDSCallbackTunnelManagerのAddTunnelEvent、RemoveTunnelEventメソッドでトンネルおよびコールバックの登録、解除を通知するコールバック関数を登録、解除できます。
TDSCallbackTunnelManager.Instance.AddTunnelEvent( procedure(Sender: TObject; const EventItem: TDSCallbackTunnelEventItem) begin case EventItem.EventType of TunnelCreate: begin // Tunnel is created end; TunnelClose: begin // Tunnel is closed end; TunnelClosedByServer: begin // Tunnel is closed by user end; CallbackAdded: begin // Callback is added end; CallbackRemoved: begin // Callback is removed end; end; end);
- TDSCallbackTunnelManagerのAddTunnelEvent、RemoveTunnelEventメソッドでトンネルおよびコールバックの登録、解除を通知するコールバック関数を登録、解除できます。
TCP/IP接続を監視
- TDSTCPServerTransportのOnConnect、OnDisconnectイベントでTCP/IP接続の確立と切断を監視することができます。詳細はDataSnap 用 TCP/IP 接続の監視と制御を参照。
2015年6月19日
RAD Studio/Delphi/C++Builder XE8 Update 1
RAD Studio/Delphi/C++Builder XE8のUpdate 1がリリースされています。
30278 General Update 1 for RAD Studio, Delphi, and C++Builder XE8
30282 Subscription Update 1 for RAD Studio, Delphi, and C++Builder XE8
30284 Delphi and C++Builder XE8 ISO (includes Subscription Update 1)
30304 Boost for RAD Studio & C++Builder XE8 Subscription Update 1
XE8 Update 1 のリリース ノート - RAD Studio (en)
RAD Studio XE8, Delphi XE8, C++Builder XE8 の Subscription Update 1における不具合修正リスト
Subscription Update 1 Fix List for RAD Studio XE8, Delphi XE8, and C++ Builder XE8
XE8からはUpdate Subscriptionに加入しているかどうかで受け取れるバグフィックス、アップデートが異なる、ということになりましたが、XE8 Update 1もGeneral Update 1とSubscription Update 1で内容に差があります。General Update 1には" Community toolbar"、"iOS 8 simulator fix"、"Several files missing from the initial XE8 delivery"のみが含まれ、"Favorites in welcome page"、"Fast search of Bluetooth LE devices"、"Improved robustness of IDE productivity features"、"Improvements in multi-device previews"はSubscription Update 1のみ、となっています。
2015/07/08追記: C++Builder XE8のBoost 1.39用のヘッダファイルの更新(30304)が追加されています。
30278 General Update 1 for RAD Studio, Delphi, and C++Builder XE8
30282 Subscription Update 1 for RAD Studio, Delphi, and C++Builder XE8
30284 Delphi and C++Builder XE8 ISO (includes Subscription Update 1)
30304 Boost for RAD Studio & C++Builder XE8 Subscription Update 1
XE8 Update 1 のリリース ノート - RAD Studio (en)
RAD Studio XE8, Delphi XE8, C++Builder XE8 の Subscription Update 1における不具合修正リスト
Subscription Update 1 Fix List for RAD Studio XE8, Delphi XE8, and C++ Builder XE8
XE8からはUpdate Subscriptionに加入しているかどうかで受け取れるバグフィックス、アップデートが異なる、ということになりましたが、XE8 Update 1もGeneral Update 1とSubscription Update 1で内容に差があります。General Update 1には" Community toolbar"、"iOS 8 simulator fix"、"Several files missing from the initial XE8 delivery"のみが含まれ、"Favorites in welcome page"、"Fast search of Bluetooth LE devices"、"Improved robustness of IDE productivity features"、"Improvements in multi-device previews"はSubscription Update 1のみ、となっています。
2015/07/08追記: C++Builder XE8のBoost 1.39用のヘッダファイルの更新(30304)が追加されています。
2015年6月16日
InterBase XE7 Update 3
InterBase XE7 Update 3(12.0.3.337)がリリースされています。いくつかの不具合が修正されています。またDeveloper EditionはUpdate 3適用済のものに置き換えられています。
30271 InterBase XE7 Update 3 (12.0.3.337) for Windows
30272 InterBase XE7 Update 3 (12.0.3.337) for Linux
30275 InterBase XE7 Server Ed., Windows/Linux (12.0.3.337, English)
30274 InterBase XE7 Server Ed., Windows/Linux (12.0.3.337, Japanese)
30273 InterBase XE7 ToGo Edition (12.0.3.337), Win/OSX/iOS/Android
30066 InterBase XE7 (12.0.3.337) Developer Edition, English
30090 InterBase XE7 (12.0.3.337) Developer Edition, Japanese
InterBase XE7 Update 3 Readme - InterBase (en)
30271 InterBase XE7 Update 3 (12.0.3.337) for Windows
30272 InterBase XE7 Update 3 (12.0.3.337) for Linux
30275 InterBase XE7 Server Ed., Windows/Linux (12.0.3.337, English)
30274 InterBase XE7 Server Ed., Windows/Linux (12.0.3.337, Japanese)
30273 InterBase XE7 ToGo Edition (12.0.3.337), Win/OSX/iOS/Android
30066 InterBase XE7 (12.0.3.337) Developer Edition, English
30090 InterBase XE7 (12.0.3.337) Developer Edition, Japanese
InterBase XE7 Update 3 Readme - InterBase (en)
2015年6月10日
2015年6月7日
[書籍]C#実践開発手法
紀伊國屋書店新宿本店でAdaptive Code via C# (amazon.com)の翻訳である
C#実践開発手法 (amazon)/Gary McLean Hall著/クイープ訳/日経BP/ISBN 978-4-82229-847-0/5,400円
を購入。
C#実践開発手法 (amazon)/Gary McLean Hall著/クイープ訳/日経BP/ISBN 978-4-82229-847-0/5,400円
を購入。
[書籍]改訂新版 C++ポケットリファレンス
紀伊國屋書店新宿本店でC++ポケットリファレンスのC++14対応改訂版の
改訂新版 C++ポケットリファレンス (amazon)/高橋晶、安藤敏彦、一戸優介、楠田真矢、道化師、湯朝剛介著/技術評論社/ISBN978-4-7741-7408-2/3,218円
を購入。
改訂新版 C++ポケットリファレンス (amazon)/高橋晶、安藤敏彦、一戸優介、楠田真矢、道化師、湯朝剛介著/技術評論社/ISBN978-4-7741-7408-2/3,218円
を購入。
2015年6月1日
2015/06開催のセミナー
- Web Seminar
- 2015/06/10 17:00-18:00(JST) デベロッパーTV 「第30回デベロッパーキャンプ開催レポート」
- Live Seminar
- 2015/06/09 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
- 2015/06/18 15:30-17:00(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
2015年5月21日
第30回エンバカデロ・デベロッパーキャンプ
本日10:00から第30回エンバカデロ・デベロッパーキャンプ・イン東京がベルサール新宿グランドコンファレンスセンターで行われます。セッション資料は
ダウンロード | デベロッパーキャンプ
からダウンロードできるようになる予定です(2015/05/21 10:00以降)。またUStreamで全セッションの中継が予定されています(CH1がG/Fセッション、CH2がEセッション)。
無事(?)終了しました。セッションスピーカのみなさん、関係者のみなさん、おつかれさまでした。
2015/05/25追記: 早くもセッションリプレイの公開が始まっています。
第30回 エンバカデロ・デベロッパーキャンプ資料ダウンロード
ダウンロード | デベロッパーキャンプ
からダウンロードできるようになる予定です(2015/05/21 10:00以降)。またUStreamで全セッションの中継が予定されています(CH1がG/Fセッション、CH2がEセッション)。
無事(?)終了しました。セッションスピーカのみなさん、関係者のみなさん、おつかれさまでした。
2015/05/25追記: 早くもセッションリプレイの公開が始まっています。
- 【G1】ケーススタディセッション ユーザーショーケース「C++Builderを用いたマルチOS対応一般コンシューマ向けスマートフォンアプリ開発事例」
- 【G2】ジェネラルセッション「IoT時代のマルチデバイス開発環境」
- 【F3】テクニカルセッション「業務システムにモバイルを!実践エンタープライズモバイル開発プロジェクト」
- 【E3】Delphi/C++テクニカルセッション「移行プロジェクトでもモバイル開発でも必須!今からでも間に合うデータモジュール活用法」
- 【F4】Delphi/C++テクニカルセッション「RAD Studio XE8 の新機能とその活用法」
- 【E4】Delphi/C++テクニカルセッション「今さら聞けない!? FireDAC入門 ~ オンメモリーデータベース編」
- 【F5】Delphi/C++テクニカルセッション「RAD Studioで始めるモバイル開発 ~ コンポーネントで簡単入門!勘所も押さえよう」
- 【E5】Delphiテクニカルセッション「DelphiによるEnterpriseアプリケーション開発 ~ 当社パッケージの内部構造、開発方法ご紹介」
- 【G6】ライトニングトーク「共有!みんなの開発事例、開発経験、テクニック」
第30回 エンバカデロ・デベロッパーキャンプ資料ダウンロード
2015年5月16日
IDE Fix Pack 5.92
Andreas HausladenさんのIDE Fix PackがアップデートされてVersion 5.92となっています。不具合を2点修正とのことです。
IDE Fix Pack 5.92 released | Andy's Blog and Tools
IDE Fix Pack 5.92 released | Andy's Blog and Tools
Category:
Add-ons,
Delphi 2009,
Delphi 2010,
Delphi XE,
Delphi XE2,
Delphi XE3,
Delphi XE4,
Delphi XE5,
Delphi XE6,
Delphi XE7,
Delphi XE8,
Updates
at
23:25:00
0
Comments
2015年5月13日
2015年5月6日
RAD Studio/Delphi XE8 iOS 8 Simulator Hotfix (Beta)
RAD Studio/Delphi XE8のiOS 8 Simulator Hotfix (Beta) for XE8がリリースされています。FireMonkeyマルチデバイスアプリケーションをiOS 8.xシミュレータ上で動作させられるようにするもののようです。
30221 iOS 8 Simulator Hotfix (Beta) for XE8
iOS 8 Simulator Hotfix (Beta) for Delphi and RAD Studio XE8 is available in Registered User Downloads - Blogs
iOS8シュミレータへアプリを配置すると「No such file or directory」エラーが出る件について
Updates, hot fixes, and patches are provided exclusively to customers with an active Update Subscription, however, this particular critical patch is being provided to all XE8 customers.とのことで、Update Subscriptionとは関係なくダウンロードできます。
30221 iOS 8 Simulator Hotfix (Beta) for XE8
iOS 8 Simulator Hotfix (Beta) for Delphi and RAD Studio XE8 is available in Registered User Downloads - Blogs
iOS8シュミレータへアプリを配置すると「No such file or directory」エラーが出る件について
2015年5月1日
2015/05開催のセミナー
- Web Seminar
- 2015/05/13 16:00-16:30(JST) 「RAD Studio XE8 新機能紹介セミナー - IoT & クラウド編」
- 2015/05/13 17:00-18:00(JST) デベロッパーTV 「第30回デベロッパーキャンプ直前情報!」
- Live Seminar
- 2015/05/19 10:00-17:40(JST) 第30回 エンバカデロ・デベロッパーキャンプ・イン大阪
- 2015/05/21 10:00-18:00(JST) 第30回 エンバカデロ・デベロッパーキャンプ・イン東京
- 2015/05/26 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
- 2015/05/28 15:30-17:00(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
2015年4月24日
IDE Fix Pack 5.91
Andreas HausladenさんのIDE Fix PackがアップデートされてVersion 5.91となっています。
IDE Fix Pack 5.91 – Bugfix release | Andy's Blog and Tools
IDE Fix Pack 5.91 – Bugfix release | Andy's Blog and Tools
Category:
Add-ons,
Delphi 2009,
Delphi 2010,
Delphi XE,
Delphi XE2,
Delphi XE3,
Delphi XE4,
Delphi XE5,
Delphi XE6,
Delphi XE7,
Delphi XE8,
Updates
at
6:37:00
0
Comments
InterBase XE7 Update 2
InterBase XE7 Update 2(12.0.2.299)がリリースされています。
30198 InterBase XE7 Update 2 (12.0.2.299) for Windows
30199 InterBase XE7 Update 2 (12.0.2.299) for Linux
30165 InterBase XE7 Server Ed., Windows/Linux (12.0.2.299, English)
30164 InterBase XE7 Server Ed., Windows/Linux (12.0.2.299, Japanese)
30066 InterBase XE7 (12.0.2.299) Developer Edition, English
30090 InterBase XE7 (12.0.2.299) Developer Edition, Japanese
InterBase XE7 Update 2 Readme (en)
Resolved Defects
What's New in InterBase XE7 Update 2
30198 InterBase XE7 Update 2 (12.0.2.299) for Windows
30199 InterBase XE7 Update 2 (12.0.2.299) for Linux
30165 InterBase XE7 Server Ed., Windows/Linux (12.0.2.299, English)
30164 InterBase XE7 Server Ed., Windows/Linux (12.0.2.299, Japanese)
30066 InterBase XE7 (12.0.2.299) Developer Edition, English
30090 InterBase XE7 (12.0.2.299) Developer Edition, Japanese
InterBase XE7 Update 2 Readme (en)
Resolved Defects
What's New in InterBase XE7 Update 2
2015年4月22日
DDevExtensions 2.83/IDE Fix Pack 5.9
Andreas HausladenさんのDDevExtensionsとIDE Fix PackがRAD Studio XE8に対応しました。
DDevExtensions 2.83 for XE8 released | Andy's Blog and Tools
IDE Fix Pack 5.9 for RAD Studio 2009-XE8 | Andy's Blog and Tools
2015/09/20追記: DDevExtensionsがRAD Studio/Delphi/C++Builder 10 Seattleに対応して再リリースされています。内容に変更はないとのことで、バージョンも2.83のままとなっています。
DDevExtensions 2.83 for XE8 released | Andy's Blog and Tools
IDE Fix Pack 5.9 for RAD Studio 2009-XE8 | Andy's Blog and Tools
2015/09/20追記: DDevExtensionsがRAD Studio/Delphi/C++Builder 10 Seattleに対応して再リリースされています。内容に変更はないとのことで、バージョンも2.83のままとなっています。
Category:
Add-ons,
Delphi 2009,
Delphi 2010,
Delphi XE,
Delphi XE2,
Delphi XE3,
Delphi XE4,
Delphi XE5,
Delphi XE6,
Delphi XE7,
Delphi XE8,
Updates
at
6:26:00
0
Comments
2015年4月15日
2015年4月11日
RAD Studio/Delphi/C++Builder XE7 Update 1 iOS 8.1.3/8.2 Deployment Beta Hotfix
RAD Studio/Delphi/C++Builder XE7 Update 1のiOS 8.1.3/8.2 Deployment Beta Hotfix for XE7がリリースされています。Update subscriptionで提供されていたもの(の一部?)のようで、署名とプロビジョニングを変更してiOS 8.1.3および8.2での問題の回避策を自動化するもの、ということのようです。
30190 iOS 8.1.3/8.2 Deployment Beta Hotfix for XE7 Pro
30189 iOS 8.1.3/8.2 Deployment Beta Hotfix for XE7 Ent and above
2015/05/07追記: 30189、30190とも2015/05/06(たぶんPDT)付で更新されています。
2015/06/04追記: 30189、30190とも2015/06/03(たぶんPDT)付で再更新されています。
30190 iOS 8.1.3/8.2 Deployment Beta Hotfix for XE7 Pro
30189 iOS 8.1.3/8.2 Deployment Beta Hotfix for XE7 Ent and above
2015/05/07追記: 30189、30190とも2015/05/06(たぶんPDT)付で更新されています。
A rebuilt hotfix was posted on 5/6/2015 to address issues some customers were running into.とのこと。
2015/06/04追記: 30189、30190とも2015/06/03(たぶんPDT)付で再更新されています。
登録:
投稿 (Atom)