Quantcast
Channel: Latest blog entries - Embarcadero Community
Viewing all 1683 articles
Browse latest View live

New Styles from DelphiStyles.com

$
0
0

DelphiStyles.com sells custom style packs for VCL Windows and FireMonkey multi-device applications. They just released several great new themes for FireMonkey.

 

Shown: FMX Profile Screen GUI template (available in GetIt > Sample Projects) with the custom Calypso iOS style applied, available on DelphiStyles.com

 

Shown: FMX Settings Project sample application (installed with the Samples in 10.2.3) with the custom Calypso Android style applied, available on DelphiStyles.com 

 

 

Shown: FMX Settings Project sample application (installed with the Samples in 10.2.3) with the custom Malibu Blue iOS style applied, available on DelphiStyles.com 

 

Shown: FMX Settings Project sample application (installed with the Samples in 10.2.3) with the custom Malibu Blue Android style applied, available on DelphiStyles.com 

 

Shown: FMX Settings GUI Template (available in GetIt > Sample Projects) with the custom Malibu Android style applied, available on DelphiStyles.com

 

 

 


Read More

RAD Studio 10.2.3 パッチを2つリリース

$
0
0

この記事は、MARCO CANTUによるTwo Small RAD Studio 10.2.3 Patchesの抄訳です。

 

Embarcaderoは、最新のRAD Studio  Delphi / C++Builder 10.2.3のアップデート用に、2つのパッチをリリースしています。

 

1. Android Push Notification パッチ


https://cc.embarcadero.com/item/30831

Androidプッシュ通知パッチです。 このパッチは、jarファイルがないためAndroid上のプッシュ通知に関する問題を解決します。 公開された問題RSP-20137を修正しました。

 

 

2. RAD Server(EMS)パッケージウィザードパッチ


 

RAD Studio 10.2.3 RAD Server(EMS) パッケージウィザードパッチです。これは Enterpriseユーザーのみに適用されます。

https://cc.embarcadero.com/item/30832

10.2.2では、新しいRADサーバ(EMS)プロジェクトはデフォルトでLinuxおよびWin64プラットフォームをサポートしていませんでした。

これを追加すると、10.2.3の新しいウィザードは、インストールされていない、またはサポートされていないC++Builder場合でも、
DelphiプロジェクトとC ++ Builderプロジェクトの両方に自動的にLinuxターゲットプラットフォームを追加するため、
ウィザード実行時にIDEがクラッシュします。readmeには10.2.3で解決された以前のバグのリストが記載されており、 フォローアップでの情報ではありません。


Read More

RAD Studio 10.2.3におけるデータベースとFireDACの機能強化

$
0
0

この記事は、MARCO CANTUによるDatabase and FireDAC Enhancements in RAD Studio 10.2.3の抄訳です。


私は、Delphi,C++BuilderとRADStudio 10.2.3の更新におけるRADServerの変更RTLの修正について記事を作成しました。もう一つの注目を集めている範囲として一般的なデータベースのサポート、特にFireDACがあります。以下のリストは特に注目すべき改善点です。Quality Portalのエントリがある場合は、それも示しています。

FireDACの改善

FireDACは以下のケースについて注力しました。

  • FieldKindがftMemoであるフィールドにおける、NULL値とEmpty値の取り扱い。(RSP-19938)
  • アイドル状態であるアプリケーションのCPU消費量の減少。(RSP-19881)
  • OpenOrExecuteメソッド実行時のRowsAffectedプロパティ値の更新。(RSP-19385)
  • HiDPI環境における、ログインダイアログのスケーリングの改善。(RSP-16776)

他にもデベロッパーチームは以下の問題に対処しました。

  • 1000文字を超えるパラメータを使用したOracleクエリに関する問題。(RSP-20057)
  • パラメータの特定に関する一般的な問題。(RSP-19744)
  • PostgreSQLでのDirectExecuteに関する問題。(RSP-19701)
  • Linux ApacheモジュールからのMongoDBへのアクセス。(RSP-19908)
  • MySQLにて、特定の文字列パラメータを含む場合に" Data too large for variable"例外が発生する件の対処。

FireDACのBatchMoveについても以下の改善が成されています。

  • TFDBatchMoveSQLWriterにNULL値が含まれた場合の対応。(RSP-19746)
  • OnWriteValueイベントにおける、テキストBLOBのNULL値と空文字列の取り扱い。(RSP-19733)
  • TFDBatchMoveDataSetWriterでのテキストBLOBのNULL値と空文字列の取り扱い。(RSP-19732)
  • Android と iOS にて、dmAppendUpdateモードのCSVファイルの読み込みの改善。(RSP-19637)

DataSnap の改善

噂に反して、私達は依然としてDataSnapとともに関連するインフラストラクチャーを整理して解決していきます。このリリースでは以下の改善を行っています。

  • Apache上のDatasnapサーバーは、メソッド名が "update"で始まらなくてもTJSONObjectパラメーターを含むようにした。
  • WebModule.Response.SendResponseのメモリリークを解決。(RSP-20063)
  • TDSServerでのOnErrorイベントの不足。(RSP-19661)
  • C++ DataSnapウィザードの問題。(RSP-19444)
  • プロキシサーバの問題(RSP-18760)
  • TCP DataSnapサーバーでOnCreateInstanceイベントとOnDestroyInstanceイベントが処理されたときのメモリリークを解決。

Refind.exeの更新

Refind.exeはコードの移行を支援する検索置換ツールで、{$ IF CompilerVersion}ディレクティブが引き起こす問題を修正しました。(RSP-20025)
このツールは実行形式ファイルで提供され、スクリプトはsamplesフォルダのdatabaseフォルダにあります。

まとめ

これらは10.2.3のデータベースについての機能強化です。
沢山ではなく僅かながらですが、RAD Serverを含めて品質が向上しました。


Read More

Reported the 35th Developer Camp in Japan.

$
0
0

The 35th Developer Camp was held in Japan on 15th March.

The venue was Tokyo Akihabara UDX.

 

In the morning, it was a general session.VP Sherry Silhavy gave a session about the product. 


We had a technical session in the afternoon.
It was a session such as Windows 10 related, RAD Server, Sencha etc.

 

 


Read More

Казань встретилась с Токио

$
0
0

Думаю, все уже заметили, что последние посты были посвящены хронике событий Embarcadero в нашей стране. Честно говоря, мы соскучились. Нам так не хватало встреч с нашими пользователями в течение переходного организационного периода после вхождения в состав Idera и перераспределения коммерческих функций и интересов. Поэтому с такой готовностью и интересом мы приняли предложения нашего коммерческого партнера в России - компании Softline провести семинар в замечательном городе Казани.

Спасибо всем казанцам, кто пришел на наш семинар, посвященный RAD Studio 10.2 Tokyo! Вы способствовали доверительной и деловой атмосфере в зале. Надеюсь, наш рассказ и актуальная информация  о продуктах и планах EmBorCodera были для вас полезны, как очень важной и полезной для меня была ваша реакция, заданные вопросы и ваши пожелания. Как всегда, вопросы вышли за рамки регламента, общение продолжилось и на фуршете. 

Слайды и примеры будут доступны всем участникам. Softline предоставит ссылки для просмотра и скачивания после 1 апреля.

А еще, как похорошел центр Казани, не только приведенные в порядок улицы, а и открытые, живые глаза и лица жителей и гостей города! 

Спасибо, Казань! 

 


Read More

10.2.3の新機能:iOSとAndroid用のCMakeのサポート

$
0
0

この記事は、DAVID MILLINGTONによるNew in 10.2.3: CMake Support for iOS and Androidの抄訳です。

 

前回C++コンパイラのCMakeサポートに関してご紹介致しました。
CMakeとは何か、Win32とWin64の両方でWindows用の使い方について説明しました。
https://community.embarcadero.com/blogs/entry/new-in-10-2-3-cmake-support-ja

今回はCMakeをiOS, Androidなどのモバイル用に使用した方法のご紹介です。これは、CMakeを呼び出す方法と、CMakeLists.txtファイルにモバイル固有の情報を書き込む方法の両方です。

CMake for iOS and Android

CMakeでWindowsをターゲットをビルドするときは、Win32またはWin64のC/C++コンパイラを指定します。
一度利用したいコンパイラをCMakeが検出し取り出します

-- Win32:
cmake -DCMAKE_C_COMPILER=bcc32x.exe -DCMAKE_CXX_COMPILER=bcc32x.exe -G Ninja

-- Win64:
cmake -DCMAKE_C_COMPILER=bcc64.exe -DCMAKE_CXX_COMPILER=bcc64.exe -G Ninja

これは、同じプラットフォームを構築してターゲット設定しているためです。この場合Windows上に構築し、Windowsをターゲットにしています。 しかし、iOS32,iOS64,Androidの場合、目標としているプラットフォームとは異なるプラットフォームをクロスコンパイルで構築しています。

クロスコンパイルするには、使用するコンパイラを指定する代わりに、ツールチェーンを指定します。 これはCMakeにコンパイラの使い方とモバイルプラットフォームの使い方を伝えるcmakeファイルで、クロスコンパイルの完全な情報が含まれています。 これらのツールチェーンファイルは、各プラットフォームに固有の追加のデプロイメントオプション(スプラッシュ画面イメージなど)も設定します。

C++Builderのクロスコンパイルツールチェインファイルは、使用するコンパイラと同じ名前を持っています。たとえば、bccaarmはbccaarm.cmakeです。 使用するコマンドラインを次に示します。

iOS32:

cmake -DCMAKE_TOOLCHAIN_FILE="<BDS>\cmake\bccios32.cmake" -G Ninja

iOS64:

cmake -DCMAKE_TOOLCHAIN_FILE="<BDS>\cmake\bccios64.cmake" -G Ninja

Android:

cmake -DCMAKE_TOOLCHAIN_FILE="<BDS>\cmake\bccaarm.cmake" -G Ninja

Windows用コマンドよりもさらに入力が少なくて済みます!

これは、CMakeLists.txtファイルが置かれているフォルダからCMakeを起動していることを前提としています。 それが他の場所にある場合は、コマンドラインの最後に "... -G Ninja .."や "... -G Ninja c:\my\path"などのパスを指定することができます。

CMakeLists.txtのモバイル固有の情報

ターゲットは、モバイルデバイスにプロジェクトを展開できるという点でWindowsと異なり、アプリケーションバンドルまたはパッケージに収まる多数のファイルを展開することが含まれます。paserverは通常どおりに実行するので、paserverがインストールされていることを、コマンドラインを実行する前にIDEでデプロイ確認できます。

CMakeの固有のモバイルであることを伝えるために使用できるいくつかの「マクロと変数」があります。

iOS

  • マクロ:デバイスファミリ(iPhoneやiPadなど), サポートされるデバイスの向き, バックグラウンドモード, 配備が必要な追加ファイルが含まれています。 これらはすべてプロジェクトオプションの設定と同等です。
  • 変数:アプリケーション名,SDK,証明書,プロビジョニングプロファイル,バンドル名,カメラの使用状況などのinfo.plistファイルに格納される多数のアイテム。 任意のinfo.plistオプションや、アイコンと画像ファイルを表示します。

Android

  • マクロ:classes.dexに追加するjarファイル。 パーミッション; および展開する追加ファイル。
  • 変数:プロジェクトの場所,KeyStoreの情報(パスワード、エイリアスなど), サービス,ラベル,バージョン,インストール場所などの情報を明示する。 スプラッシュ画像, スタイル, アイコンと画像ファイルなど

ドキュメントにはリストがあります。 すべてのマクロと変数を使用できます。 いくつかの変数には、CMakeLists.txtファイル内のターゲット固有の設定を行うために読むことができる固定値があらかじめ設定されています。

ターゲットに基づいたCMakeLists.txtの設定

CMakeLists.txtファイルは一般的なプロジェクトの説明ですが、Androidをターゲットに設定する際に使用されるAndroidマニフェスト情報などを指定する情報が必要です。

設定方法はEMBT_TARGET変数の値に基づいてifステートメントを追加することです。 Androidプラットフォーム用に設定の場合

if(EMBT_TARGET STREQUAL Android)
  // ... Android-specific CMake config here
endif()

EMBT_TARGETは次のいずれかです。

  • "Android"
  • "iOS32"
  • "iOS64"
  • "Windows"

これらを使い、各プラットフォーム情報を設定に追加することができます。

関連

 

 

次回のSummary

  • iOSまたはAndroid向けにビルドするときに使用するツールチェーンファイルを指定
  • CMakeLists.txtファイルで、EMBT_TARGETをチェックし、それを使ってデプロイメントやmanifest/info.plistなどのターゲット固有の設定

 


Read More

Delphi と C++Builder 10.2.3 Professional Editionに、モバイルサポートが追加

$
0
0

この記事は、Sarina DuPontによるMobile Support in Delphi and C++Builder 10.2.3 Professional Editionの抄訳です。

 

10.2 Tokyo Release 3でDelphi / C++Builder Professional向けの新機能として、新規購入および有効なアップデートサブスクリプション加入者向けにモバイルサポートが追加されました。

従来は、Delphi / C++Builder Professional向けに個別のAdd-On Packとして販売されていました(あるいは、RAD Studio Professional以上、Delphi / C++Builder EnterpriseまたはArchitectを購入)が、今回、モバイルサポートを加えたことで、Delphi / C++ 開発者は、Windows / macOSに加え、iOSとAndroid も対象に単一コードベースの開発を行うことが可能になりました。

 

一つのプロジェクトをデスクトップとモバイル向けにビルド可能

FireMonkeyは、マルチデバイスアプリケーションフレームワークで、スマートウォッチやIoTデバイスなどのウェアラブル端末やスマートフォン、タブレットなど、Windows、macOS、iOS、Android向けのネイティブアプリケーションを単一のコードベースで作成できます。また、ユーザーインターフェースコードから残りの全てのクライアントのソフトウェア・スタックを通じて、アプリケーションは、プラットフォーム API、デバイスセンサーおよびサービスにアクセスすることが可能です。そのため、ネイティブのGPUとCPUのサポートにより、端末の性能を最大限活かすことができます。さらに、既存の Windows VCLアプリケーションを拡張して、デスクトップ、Android、iOSおよび IoT端末上で実行されている他のアプリとのインターフェースを実現します。

 

FireUIマルチデバイスデザイナ

FireUIマルチデバイスデザイナでは、すべてのユーザーインターフェースコードを共有するために、マスターフォームを使用し、複数のデバイス間でユーザーインターフェイスを作成します。その後、ターゲットプラットフォームとデバイスごとに継承ビューを最適化していきます。FireUIマルチデバイスデザイナは、Windowsデスクトップ、Surface Pro Tablet、Macデスクトップ、iPhone、iPad、Androidタブレット、スマートフォンなどの一連の定義済みビューを提供します。

 

 

マルチデバイスプレビュー

マルチデバイスプレビューでは、さまざまなデバイスでアプリケーションがどのように見えるかを設計段階で確認できます。 これにより、アプリケーションを開発する上で視覚的に優れた援助が得られ、特定のフォームファクターやデバイスにおいて、微調整したいユーザーインターフェイスを容易に特定できます。マルチデバイスプレビューウィンドウには、選択したすべてのデバイスで現在アクティブなフォームのプレビューが表示されます。 特定のデバイスの詳細なビューを表示するにはズームインします。また、デバイスのプレゼンテーションを変更するために、マルチデバイスプレビューウィンドウで、違う表示モードを選択します。

 

FireUI アプリケーションプレビュー

FireUI アプリケーションプレビューでは、フォームデザイナでアプリケーションを設計するときに、iOS、Android、Windows、およびMacデバイスでFireMonkeyアプリケーションを表示できます。 フォームデザイナで行われた変更は、接続されたデバイスにリアルタイムで反映されます。 この機能は、当社のアプリケーションテザリング機能を基礎技術として使用しています。

 

マルチデバイス / モバイル向けのアプリケーション開発は、最新のDelphi / C++Builder(およびスイート製品のRAD Studio)トライアル版でお試しいただけます。トライアル版は、こちらからダウンロードできます。ぜひお試しください。

 

参考情報:

 


Read More

LIVE! from the Embarcadero Austin Office


10.2.3で CMake with Ninjaを使う

$
0
0

この記事は、DAVID MILLINGTONによるNew in 10.2.3: Using CMake with Ninjaの抄訳です。

CMakeを使ったビルドのサポートは10.2.3の大きな新機能の1つです。まだ試されてない場合はイントロダクション WindowsでのCMakeビルドiOS/Androidでのビルドをお読みください。

本投稿の利用方法カバーはCMakeジェネレータとNinjaでの高速パラレルビルドえす。

CMake ジェネレータ

CMakeはコンパイラとプラットフォームに依存しないプロジェクトシステムですが、その名前にもかかわらず、実際にはメーキングやビルドはしません。そのかわりに、システム上にあるツールを利用し、CMakeLists.txtファイルを構築に必要なビルドデータに変換します。そのコンバージョンジェネレータです:特定のビルドシステム用のファイル/データを生成。これらを一度生成すると、そのツールを使用してビルドします。 プロジェクトを変更した場合、例えば、新しいファイルを追加したり、設定を変更するなどして、CMake自体を再実行する必要があります。

ジェネレータは「-G」コマンドラインスイッチを指定します。

必要ならばオールドファッションなmakefilesを使う事ができます。makeを使用する場合は、-G "BorlandMakeFiles"を使用してください。 他のジェネレータも使用できます。 特にCMakeでサポートしているのはNinjaです。

Ninja

Ninjaは非常に小さくて高速なビルドシステムです。これは、従来のDelphi/C++Builderアプリのように、単一のEXEとして提供されます。 並列ビルドも可能です。 C++Builderはすでに並列コンパイルをサポートしていますが、Ninjaは非常に優れた実装です。

-Gを指定したコマンドライン

cmake -DCMAKE_TOOLCHAIN_FILE=bccaarm.cmake -G Ninja

ここでは、Android用のビルド(bccaarm toolchainファイルを使用しています)。CMakeはその作業を行い、Ninjaジェネレータを使用して、Ninjaが作成するいくつかのファイルをビルドします:

そして、CMakeが完成したら、ninjaを起動するだけでプロジェクトをビルドできます:

ninja

Simple as that! Ninjaが引き継ぎ、ビルドして並行して実行します。 タスクマネージャを開くと、コンパイラの複数のコピーが表示されます。

コマンドラインでパラレル出力がシリアル化され、7つのステップが完了するたびに、ステータスが表示されます。

 

Overview

Ninjaの使用は非常にシンプルです。実際、すべての例で使用しています。マニュアルにはインストール手順が含まれています。

これは、一般的なCMakeをローカルマシン上で並列ビルドするための素晴らしい追加機能である、高速で軽量なビルドシステムです。

 


Read More

Why create mobile apps in C++

$
0
0

There are a wide variety of languages used for mobile development: Swift, Objective C, Java, Kotlin, Delphi, C#, and C++. What are the reasons to choose C++?

Consider a language along three axes: expressiveness, conciseness, and performance.

  • An expressive language allows you to easily write powerful concepts in code. It is easy to manipulate data in useful ways. ‘Data’ is any variable(s) your app uses and powerful means manipulation in non-trivial ways, whether that mutates the data or merely operates on it.
  • A concise language allows you to express yourself quickly. You type less. It is clear an unambiguous, readable and understandable, yet short and taking up less space onscreen and fewer keystrokes to implement.
  • A performant language compiles to fast code. More, the language design makes it easy to write code that will be well optimized.

C++ occupies an unusual position among languages. It is powerful: code can be expressive, concise, and performant all at once. This is unusual. Languages can be expressive but non-concise, expressive but not performant, performant but low-level and unexpressive in that it takes a lot of code to write complex behaviour, and so forth. C++ has always had a reputation for performance, but especially in recent years with modern C++ (’11 and newer) the language allows powerful expressions and algorithms in very tightly compiled code.

Finally, there are a large number of useful libraries written in C++. From app basics like JSON through to maths like fast fourier transforms or linear algebra to image processing to data recognition to graphics, there’s C++ code to do it.

Thus, C++ tends to be the choice when a developer wants something that runs fast, allows good data manipulation, and is concise onscreen. It’s also used when you want to make use of third party libraries. C++ used for games: performant, and they may have a lot of code, and pull in many common libraries. It’s used for key desktop apps: performant, lots of code, and unusual data manipulation (Explorer does interesting things with files and COM objects. Word manipulates text, layouts, references and more.) And as it happens, mobile fits this perfectly.

What’s important for a mobile app?

Mobile app development has a few key differences to typical desktop or server app development:

  • Energy usage is important. People uninstall apps that eat their battery.
  • Performance is important. There are a decent CPUs in today’s top end phones and tablets, but they’re still limited by a mobile power supply (so you don’t want to spend more cycles than you need to) and a vast number of phones around the world use much lower spec hardware.
  • A very different UI.

A UI is not necessarily something you tie to a language. (C++Builder has great UI tools for cross-platform UI, without losing the benefits of using C++.) The other two are worth considering in more depth, because both points say the same thing in different ways: using less CPU cycles for the same work is better. It’s better for the user, because they see their app running faster; it’s better for the device, because it spends less energy. You always want well optimized code on a mobile device.

What does that mean for a choice of language? It means you want a language that optimizes and runs natively, of course, but also means you want a language that makes it easy to write code that will be well optimized. Here, we circle back to expressiveness and conciseness: write powerful concepts in small clear code that runs fast on the target device.

That’s C++.


Read More

C++でモバイルアプリを作成する理由

$
0
0

この記事は、DAVID MILLINGTONによるWhy create mobile apps in C++の抄訳です。

モバイル開発には、Swift、Objective C、Java、Kotlin、Delphi、C#、C++など、さまざまな言語が使用されています。 C++を選択する理由は何ですか?

表現力、簡潔さ、パフォーマンスの3つの軸に沿った言語を考えてみましょう:

  • エクスプレッシブな言語を使用することでコードを強力なコンセプトで簡単に記述する。
    それは便利な方法でデータを操作するのは簡単です。この場合のデータとはアプリが使用する変数であり、強力な方法で操作する(non-trivial)ことを意味し、そのデータを変化させるのか、それとも単に操作するのかということです。
  • コンサイスな言語で、素早く表現する。タイプレス。実装するキーストロークが少なくて済むようなクリアで読みやすく理解しやすい、画面上のスペースが少ないことです。
  • 高速にコードコンパイルできるパフォーマンスとその言語のデザインメイクは最適化されたコードを簡単に記述することができる

C++は言語の中で異常な位置を占めています。それは強力です:コードはエクスプレッシブコンサイスパフォーマンスを同時に実現できます。珍しいです。他の言語ではエクスプレッシブでコンサイスのないものやパフォーマンスがないもの、パフォーマンスは良いがローレベルでアンエクスプレッシブで複雑なビヘイビアを記述するためには多くのコードが必要になるなどの問題がありました。

最後に、C++で書かれた多数の有用なライブラリがあります。JSONから高速フーリエ変換や線形代数、画像処理、データ認識からグラフィックスまでの計算など、アプリの基本からそれを行うためのC++コードがあります。

したがって、C++は開発者が速く実行でき、良好なデータ操作を可能にし画面上で簡潔なものを求めている場合の選択肢です。また、サードパーティ製のライブラリを使用する場合にも使用されます。ゲームに使用されるC++:パフォーマンスが必要でコード量が多くやたくさんの共通ライブラリをプルしています。主要なデスクトップアプリケーションにも使用されています。:パフォーマンス、多くのコード、通常利用しないデータ(エクスプローラはファイルやCOMオブジェクトで面白いことを行います。Wordはテキスト、レイアウト、参照などを操作)

モバイルアプリにとって重要なのは何ですか?

モバイルアプリの開発には、ティピカルなデスクトップやサーバーアプリの開発とはいくつかの重要な違いがあります:

  • エネルギーの使用は重要。 アプリ利用者はバッテリー食いのアプリをアンインストールします。
  • パフォーマンスは重要。最近のトップエンドなスマホとタブレットにはまともなCPUが搭載してますが、モバイル電源ではまだ制限されています(必要以上に多くのサイクルを費やしたくない)それに世界中の膨大な数のスマホは、より低い仕様のハードウェアを使用しています。
  • 非常に異なるUI

UIは必ずしも言語と結びついたものではありません。(C++Builderは、クロスプラットフォームUI用の優れたUIツールがあり、C++を使用するベネフィットを失うことはありません)。
その他、深く検討できる2つ価値、両方のポイントは同じことでもあります:同じ動作でCPUサイクルを少なくする方が良いでしょう。ユーザーにとってよりベターです。なぜなら、彼らのアプリはより高速処理しているからです。 エネルギーを低消費できるデバイスの方が優れています。 モバイルデバイスには、常に最適化されたコードが必要です。

では言語の選択する意味は?つまり、ネイティブに最適化し実行される言語が欲しいということです。もちろん、最適化されたコードを簡単に記述できる言語が必要なことを意味します。エクスプレッシブコンサイスに戻ります:強力なコンセプトをターゲットデバイス上で高速に動作する小さなクリアコードで記述できます。

それはC++です。

 

関連情報


 


Read More

Sencha EXT JS Web Client + RAD Server 10.2.3

$
0
0

In this previous post, I showed how RAD Studio 10.2.2 introduced adding a new component to the FireDAC BatchMove architecture, to support generating JSON data from database tables, in an easy and flexible way.

In this post, we'll look at the steps to use the Sencha ExtJS library to create a Web Client to connect and get data from our RAD Studio (Delphi and/or C++ Builder) RAD Server!

Sencha Ext JS Background

Sencha ExtJS is a comprehensive application framework for data-intensive cross-platform Applications.

Sencha Ext JS supports both modern and legacy web browsers.

Sencha Ext JS includes a rich set of pre-tested and integrated customizable components – designed to work together for faster development and an improved user experience.

Sencha EXT JS are powerful, ready-to-use JS components!

Using the Sencha Architect IDE we can design visually compelling Web Applications faster, reduce manual coding, build the UI and code fully featured apps directly in the IDE, and create our own templates for use one of the existing templates.

The Sencha advantage is:

  • 100s of integrated, tested, documented UI components, and robust enterprise tools.
  • Analyze, visualize and interact with complex data from any source.
  • Unique “JavaScript-first” approach that simplifies the inherent complexities of building enterprise web applications.
  • Worldwide Training, Services, Technical Support and Maintenance.

With the RAD Server and a Sencha EXT JS web client we will:

  • Expose JSON in the RAD Server Server Methods, and make direct AJAX calls.
  • Export data, define a matching data model and build the Web Client UI.

IMPLEMENTATION

Let’s first start with creating a EXT JS Web client that can connect to our RAD Server and call the RAD Server endpoint :  http://localhost:8080/version that returns the JSON object:  {"version":"3.0","server":"Embarcadero EMS"}

Using Sencha Architect 4.2.2 IDE

1. File | New | Blank Project | Select New Project

2. Choose the EXT JS 6.5.x Classic framework.

3. Click Create.  This creates a new Sencha EXT JS 6.5.x Classic project that looks like this that we will allow us to create our Web App.

4. To the app, add a TAB Panel.  Use the Toolbox search and search for Tab.

5. Double-click the TAB Panel component from the Toolbox, and it gets added to our Web Application.

The TAB Panel gives us a Layout with multiple tabs. 

On the Tab 1, let’s add a button. 

6. Select Tab1 on the Designer, search for “Button” drag and drop Button onto TAB1 and the Button gets added onto Tab 1, like this, with Text that says “MyButton”.

Next, let's add an event to the Button for what we want the Web App to do when someone clicks the button. 

7. Right-Click on the Button and select “Add Event Binding”.

8. On the “Create View Controller Event Binding”, for the Event, select “click” for clicking or on the button, and this gives us a Function Name = onButtonClick

 9. Click the Create Binding.

10. Next, select the Code tab, and we can add code to the onButtonClick function(button, e, eOpts) for what we want to happen when the user clicks the MyButton.

11. Notice the onButtionClick function makes one object available, the button object, which is kind of like the Sender for an Event Handler in C++ Builder and/or Delphi.

For example, if we wanted to change the text of the button, when the button is clicked we can code that like this.  Set the button’s text to be the current Text of the button + “ was clicked”;

button.setText (button.getText() + ‘ was clicked’);

You can also click the Add Comment icon, and add a comment like “Set the button’s text to be the current Text of the button + ‘ was clicked’;”

12. Note:  setText and getText need to be code like this, lowercase and uppercase, since JS is a case-sensitive language.

13. Click SAVE.  To save the application.

14. Save the app in folder:  C:\Users\amann\Documents\SenchaWebApps

Project Name = EMSWebClient

App Name = EMSWebApp.

Note:  Project will be saved as C:\Users\amann\Documents\SenchaWebApps\EMSWebClient\EMSWebClient.xds

15.  Click Save.

16. Next, we can click the Preview App icon, to see what our app looks like running as a Web app:

Note, when you Preview Project, Sencha Architect gives you the option to select your URL Prefix, else Architect will preview the application using its own default URL.

17. Click Preview.

Here we see our EMSWebClient app running in your default web browser.

18. Click the MyButton, and we see the Text of the button changes to “MyButton was clicked”. Excellent!

19. Now that we have out ButtonClick Event Handler working correctly, let's replace the event handler code with some code that can connect to our RAD Server and call the http://localhost:8080/version endpoint, like this code:

Ext.Ajax.request({
        url: ‘http://192.168.1.20:8080/version’,
        cors: true,
        success:  function(response, opts) {
                 var obj = Ext.decode(response.responseText);
                 console.dir(obj);
                 button.setText (‘RAD Server returns ‘ + obj.server);
      }
   });
}

Basically, we are using the global Ajax library (Ext.Ajax) from Sencha Ext Library, and issue a request (Ext.Ajax.Request) and pass in the URL we need to execute:  http:// 192.168.1.20:8008/version

And on success, we are using this anonymous method or closure, depending if you wish to use the RAD Studio term or the JS term.  The success action is a function where we define a JS object based on the decoding of the JSON response text that represents an object:  function(response, opts) { var obj = Ext.decode(response.responseText);

And we can optionally log the output locally to the console using console.dir(obj);

And we’ll add the response, the server value, of the JSON object to the text of our button:   button.setText(‘RAD Server returns ‘ + obj.server);

With your emsdevserver running, the url: ‘http://192.168.1.20:8080/version’ returns this:  "server":"Embarcadero EMS".

Running the Sencha web client in Preview and clicking on the button, shows this also!

Excellent!   We were able to connect to our RAD Server EMS REST Server and send a REST request, and get a JSON object returned to the web client, and we were able to parse the JSON object and display the server value of the JSON object:  “Embarcadero EMS”.

So, this is a simple, direct way to return data from a RAD Studio RAD Server REST Server, connect to that data and display the data on a Sencha Ext JS Web Client! This would be difficult if you had to do it manually, requiring a lot of low-level coding.  But by using Sencha EXT JS libraries, we are able to do this fast and easy!

JSON EMPLOYEE data object and data model

Next, let’s see what we need to do to return a complex JSON EMPLOYEE data object and create the data model on the Web Client to be able to display the data on the web client.

From our RAD Server that we created in the previous post, the REST Endpoint http:// 192.168.1.20:8080/EmployeeData, returns these columns from the EMPLOYEE table:

select * from Employee

And the returned JSON array looks like this:

[{"EMP_NO":2,"FIRST_NAME":"Robert","LAST_NAME":"Nelson","PHONE_EXT":"250","HIRE_DATE":"2007-12-29T00:00:00.000-05:00","DEPT_NO":"600","JOB_CODE":"VP","JOB_GRADE":2,"JOB_COUNTRY":"USA","SALARY":105900,"FULL_NAME":"Nelson, Robert"},

With Sencha EXT JS IDE, we need to create a data model that matches the JSON data returned from the server and display the data on a Grid on the Sencha Web Client.

In Sencha Architect, create a new model.

20. Select Models from the Project Inspector.

21. On the Project Inspector, select + and select Model.  This will add a MyModel Tab to the Project.

22. Select the Code tab, to see the MyModel code in the IDE.

23. For the name of the model, on the Config panel, select useClassName = Employees

Next, we need to define the fields for our model. 

24. Search for the fields property for our Employees Model.

25. Click on the + icon, so that we can type all of our needed columns (fields) separated by a comma, on a single line: EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE, DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY, FULL_NAME

26. Click Finish.

In code, our Data Model for Employees definition looks like this:

Ext.define('EMSWebApp.model.Employees', {
    extend: 'Ext.data.Model',

    requires: [
        'Ext.data.field.Field'
    ],

    fields: [
        {
            name: 'EMP_NO'
        },
        {
            name: 'FIRST_NAME'
        },
        {
            name: 'LAST_NAME'
        },
        {
            name: 'PHONE_EXT'
        },
        {
            name: 'HIRE_DATE'
        },
        {
            name: 'DEPT_NO'
        },
        {
            name: 'JOB_CODE'
        },
        {
            name: 'JOB_GRADE'
        },
        {
            name: 'JOB_COUNTRY'
        },
        {
            name: 'SALARY'
        },
        {
            name: 'FULL_NAME'
        }
    ]
});

This list of fields gets created with no specific data types.

So this is the first step needed, to define the model for the data.

Next, we need to define a STORE.  There are many different types of data stores, like we see here, you can have an Array Store, Virtual Store, JSON Store, XML Store, etc:

We want to use a JSON Store, based on an Ajax request. 

27. Select JSON Store.

In code, we see this MyJsonStore created:

Ext.define('EMSWebApp.store.MyJsonStore', {
    extend: 'Ext.data.Store',

    requires: [
        'EMSWebApp.model.Employees',
        'Ext.data.proxy.Ajax',
        'Ext.data.reader.Json',
        'Ext.util.Filter'
    ],

    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            storeId: 'MyJsonStore',
            autoLoad: true,
            model: 'EMSWebApp.model.Employees',
            proxy: {
                type: 'ajax',
                url: 'http://192.168.1.20:8080/EmployeeData',
                reader: {
                    type: 'json'
                }
            },
            filters: {

            }
        }, cfg)]);
    }
});

Now, there are a few items we need to add to our MyJsonStore.

First, we need to provide a proxy.  We need to provide the actual URL for the data.

28. On the Config panel, select MyAjaxProxy, search for URL, under MyAjaxProxy, and set the URL to your REST endpoint to return Customers data:  http://192.168.1.20:8080/EmployeeData

The URL gets added to the proxy in code:

29. Next, in the Project Inspector, select the MyJsonReader. 

In code we see:

reader: {
                    type: 'json'

 For the Reader, since the JSON does not have any RootProperty, we do NOT need to provide any RootProperty value.

So our JSON store looks like this for our JSON:

constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            storeId: 'MyJsonStore',
            autoLoad: true,
            model: 'EMSWebApp.model.Employees',
            proxy: {
                type: 'ajax',
                url: 'http://192.168.1.20:8080/EmployeeData',
                reader: {
                    type: 'json'
                }
            },
            filters: {

            }
        }, cfg)]);

In the Sencha IDE, you may see some error indicators about the Store and Proxy settings.  

One of the MyJsonStore error reminds us to:  “Please associate a Model with the store, or add one or more Fields to the store.”  So this is something we need to do.

30. Select MyJsonStore, select the model property, and search for the model property.

31. Clicking on the model property, allows us to select our Employees model from the dropdown list.

So we are saying that our JSON Store has information that matches our Employees structure.

32. We can now right-click on our MyJsonStore node, and select Load Data, to see at Design Time, what our data looks like.

You may get data returned, or the store may be empty if no data is returned.

33. Right-click on our MyJsonStore node, and select Load Data.  We see 42 records get returned, that is the JSON Array returned from our RAD Server endpoint:  http://192.168.1.20:8080/EmployeeData

With the RAD Server (EMS) Server running, we see we have our EmployeeData Resource, so we see this data preview from the Sencha IDE.

34. Click to view response.

And the Sencha IDE displays this Response Data:

[
{
"EMP_NO": 2,
"FIRST_NAME": "Robert",
"LAST_NAME": "Nelson",
"PHONE_EXT": "250",
"HIRE_DATE": "2007-12-29T00:00:00.000-05:00",
"DEPT_NO": "600",
"JOB_CODE": "VP",
"JOB_GRADE": 2,
"JOB_COUNTRY": "USA",
"SALARY": 105900,
"FULL_NAME": "Nelson, Robert",
"id": "xds.model.Employees-1"
},

We see that the JSON data values get returned correctly!  That’s great!

Next, let’s go back to our UI with the multi-tabs, and add a Grid on Tab2 to display our Employee Data.

35. Select Tab2 from the MyTabPanel.

On this Tab2, we will add a Grid. 

36. Select Grid Panel.

As you see, the Grid has its own columns that we may or may not need.  For example, we do not need the Number, Date and Boolean columns, so we can delete those columns:

37. Select My Grid Panel, and select the Columns Property.  Expand the Columns property, and delete the Number, Date and Boolean columns.

38. Add 10 more plain String Columns to the Grid, for our EmployeeData columns for the Grid.

Now we have our 11 columns to display our Employee Data:  EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE, DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY, FULL_NAME.

Next, let’s associate the Grid with the datastore that’s providing the data:

39. Select the My Grid Panel, select the Grid Panel, search for ‘store’.  Select ‘MyJsonStore’ for the store.

Now that we have done this, we can select each column, and for each column, you can indicate the field from the JASON data.  Search for ‘data’, and for the dataIndex property, select the field for the column.

40. And for DisplayName property, give it the same Column name.

41. Do the same for the other 10 fields.

42. And next, you can set the TEXT property for each Column to the text of the data.

43. Next, to display data at runtime, select the Store (MyJsonStore) and select autoLoad for the data.

44. Now if you look at the Grid, in Design Mode, you should see your Employee Data.

45. Save All.

46. Click the Preview App icon.

47. The MyButton click should return the Version endpoint, like this:  RAD Server returns Embarcadero EMS

48. And Tab 2, should display your live RAD Server (EMS) Employee data!

49. And you have Full Grid control on the Columns (Sort, etc.).   Congratulations!  

And that’s how easy it is to create a Sencha Web Client to display your RAD Server (EMS) data!

New in 10.2.2 is the inclusion of a RAD Server Single Site Deployment License in Enterprise & Architect Editions of Delphi, C++Builder and RAD Studio.

Start your RAD Studio free trial today.

Sencha Architect IDE free trial.

 

 


Read More

RAD Studio 10.2.3 Webinar Replay

$
0
0

On April 5th, the RAD Studio Product Management team hosted a deep dive webinar on RAD Studio 10.2.3. In this webinar replay, you will learn about the new C++ enhancements including rename refactoring and CMake capabilities in C++Builder, mobile development support in Professional editions, new FireMonkey UI templates, support for ExtJS in RAD Server and more. This recording also includes the Q&A from the webinar. 

 


Read More

Delphi/C++Builder 10.2.3 Tokyoの新元号対応について

$
0
0

はじめに

平成からの改元が1年後に迫りました。改元に対する皆様の準備はお進みでしょうか?Delphi/C++Builderは2018年4月現在の最新バージョンである、10.2.3 Tokyoにて新元号の対応は完了しています。

Microsoftからのアナウンスがあったように、Windows 10は次期アップデートであるSpring Creators Updateにて仮対応が済んでいます。新元号は決まっていませんが、改元日は決まっていますので、このようにレジストリに改元日の情報が追加されています。

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCalendarsJapaneseEras

では、Delphi/C++Builder 10.2.3 Tokyoではどうでしょう。過去、記事が執筆されていますが、その頃とは少々状況が変わっているので再確認しましょう。

まず、「??」では味気ないのでレジストリに新年号を「改元_改_Kaigen_K」として設定します。

西暦から和暦の変換

DelphiとVCLのアプリケーションで西暦から和暦の変換を実行してみます。

変換方法はFormatDateTimeで直接書式を指定する方法と、DateTimeToString でデフォルトのロカール(ロケール)情報を取得して変換する方法があります。

フォームにTDateTimePickerを配置して日付を変換してみます。コードは以下となります。

procedure TEraTest.Button1Click(Sender: TObject);
var
  // 書式
  eraFormat : TFormatSettings;
  s : string;
begin
// 書式を指定して変換をする。
  DateTimeToString(s, 'ggee年mm月dd日', DateTimePicker1.Date);
  edtFormatDateTime1.Text := s;

  // 地域情報を取得して変換をする。
  eraFormat := TFormatSettings.Create(TLanguages.UserDefaultLocale);
  edtFormatSettings.Text := FormatDateTime(eraFormat.LongDateFormat, DateTimePicker1.Date);
end;

アプリケーションを実行して、日付を2019年5月2日にして和暦に変換します。

書式を直接指定するDateTimeToStringでは新元号で表示されました。TFormatSettingsはWindowsのロカール情報から書式を取得しますので、Windowsの日付の表示形式を和暦にします。

同じアプリを実行します。

VCLのTDateTimePickerでも新元号が表示されます。改元日の翌日である2019年5月2日を選択して実行します。

 

Windowsのロカール情報を元に日付が新元号に変換されて文字列として表示されました。

和暦から西暦の変換

次は逆のケースです。FireMonkeyとC++Builderで実装してみましょう。会計や金融系のアプリケーションで良くあるUIで年号をドロップダウンリストで選択して、年、月、日をテキストで入力するUIがあります。

本来ならば、年号と年月日の関係をチェックしなければなりませんが、本記事では省略します。まず、年号一覧の取得です。フォームのコンストラクタでコンボボックスを初期化します。TFormatSettingsには元号の情報が配列として格納されていますので、これをコンボボックスに設定します。

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
    TFormatSettings LocaleSettings = TFormatSettings::Create(TLanguages::UserDefaultLocale);

    // 元号一覧の取得
    cboEra->Items->Clear();
    for (auto era : LocaleSettings.EraInfo) {
        cboEra->Items->Add(era.EraName);
    }
}

続いて、和暦から西暦への変換処理です。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TFormatSettings LocaleSettings = TFormatSettings::Create(TLanguages::UserDefaultLocale);

    LocaleSettings.ShortDateFormat = "ggee/m/d";
    std::unique_ptr<TStringBuilder> psbYMD(new TStringBuilder());

    // 選択値を「ggee/m/d」の形式で文字列化
    psbYMD->Append(cboEra->Items->Strings[cboEra->ItemIndex]);
    psbYMD->Append(edtYear->Text);
    psbYMD->Append("/");
    psbYMD->Append(edtMonth->Text);
    psbYMD->Append("/");
    psbYMD->Append(edtDay->Text);

    // 和暦から西暦に変換
    TDateTime dd = StrToDate(psbYMD->ToString(), LocaleSettings);
    Edit1->Text = DateTimeToStr(dd);
}

StrToDateとTFormatSettingsの書式情報で元号を含む日付が西暦に変換できます。

まとめ

このようにDelphi/C++Builderの改元対応は準備が完了しています。

むしろ、システム側の要件定義などでユースケースの洗い出しが必要となります。特に、金融系などでは、契約期間などで和暦の未来日を扱うケースが発生するなど注意が必要です。

 

本記事のソースコードは以下のURLにて公開してあります。

https://github.com/schikugi/NewEraTest


Read More

Recap of RAD Studio 10.2.3 Patches and Information

$
0
0

The replay launch webinar done by the PM team earlier in April is available on YouTube and it is linked at https://community.embarcadero.com/blogs/entry/10-2-3-webinar-replay. You can also browse the community for all of the 10.2.3 related blog posts at https://community.embarcadero.com/blogs/tags/tag/10-2-3

Two two recent patches are:

C++Builder 10.2.3 C++ Compiler 4k Stack Allocation Patch at https://cc.embarcadero.com/item/30834

RAD Studio 10.2.3 Context Help Patch at https://cc.embarcadero.com/item/30833 (notice that depending on the browser you used for download, the files might have a wrong permission setting, read the additional information in the download page)

I already blogged about these previous patches:

RAD Studio 10.2.3 EMS Package Wizard Patch at https://cc.embarcadero.com/item/30832

RAD Studio 10.2.3 Android Push Notification Patch at https://cc.embarcadero.com/item/30831

Finally, you can find on the GetIt package manager IBLite 2017 and IBToGo 2017 as additional downloads.


Read More

「想定外」のトラブル

$
0
0

筑木です。
今週から「ゴールデンウィークブログ強化週間」と題してエンバカデロ・テクノロジーズのエンジニアが日替わりで投稿することとなり、第一弾は自分が担当することになりました。

内容はテクノロジーに限らないので、今日の雑感を早速記事にします。

自分は通勤に相鉄線を使用しているのですが、週明けからその相鉄線が始発から運転見合わせとなりました。
ご存じの通り、この手のインフラの維持は大変です。特に、人命がかかっている鉄道ならば尚更です。
夜間の終電後から始発までの限られた時間で正確に工事を進めなければならないのですから、本当に頭が下がる重いです。
当然、工程も前々から計画が立案され、工事も粛々と進められていたでしょう。
それでもトラブルは発生するのですから「想定外」の想定は本当に難しいです。
起きてしまった物は仕方が無く、「同様のトラブルは記憶にない」のならば、このトラブルが最初の「ケース」になるのではないでしょうか?
「想定外」のトラブルが発生したことを責めるより、トラブルが発生したときにどのような対応をしたのか、これを残すことで「想定内」のトラブルになるはずです。このようなナレッジの蓄積を共有し、それを次回以降に繋げるのが大事ではないかと感じました。 

さて、明日は「Delphi / C++Builder + FireDACで実現するつながるシステムの開発」と題したセミナーを行います。
FireDACを使えば、広範なデータベースやクラウドサービスがシームレスに活用できます。席は若干残っていますので、
お時間のある方は是非とも足をお運び下さい。

2018年4月23日~5月4日までの月~金曜に毎日ブログを更新。Delphi / C++Builderに関する技術記事からエンジニアの日常まで、さまざまな話題を投稿します。お楽しみに!

日本人スタッフブログを一覧表示できる、こちらのページをブックマークしてください。


Read More

未来日を和暦で扱うアプリは Windows 10 1803 で影響が出ないことを確認しましょう

$
0
0

井之上です。

この記事は「エンバカデロ・日本人スタッフブログ:ゴールデンウィークブログ強化週間」の2日目の記事です。

今日の記事は「未来日を和暦で扱うアプリは Windows 10 1803 で追加の新元号仮設定で影響が出ないことを確認しましょう」というタイトルです。和暦に関する Delphi/C++Builder 10.2.3 での話は 筑木が先日投稿した記事 の中でご説明しておりますが、Windows 10 の 2018年春のアップデートでは元号改正に伴う仮対応としてレジストリにプレースホルダの追加が予定されていることや、Delphi/C++Builderでの挙動を紹介しています。

しかし、Windows 10 1803 で追加されるレジストリの仮対応は、未来の日付を現時点で和暦で扱うアプリケーションで2019年5月1日以降の日付の西暦-和暦変換を行う場合に意図しない形での出力となります。このことが問題になるケースはおそらくはレアケースだろうと思うのですが、本記事ではこれについて補足的な説明をさせて頂くことにします。


Read More

Webinar Replay: Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase

$
0
0

When it comes to developing mobile applications, keeping data on your device is a must-have feature, but can still be risky. With embedded InterBase, you can deploy high-performance multi-device applications that maintain 256-bit encryption, have a small footprint and need little, if any, administration. 

What can participants expect to learn: Using InterBase in your mobile apps is easier than you may expect. Learn to develop mobile applications using InterBase, and how to take advantage of some of the convenient features about InterBase like Change Views and 256-bit security.

Join Mary Kelly, InterBase Engineer & RAD Software Consultant, and Jim McKeeth, Chief Developer Advocate & Engineer, for this webinar replay.

Replay

[YoutubeButton url='https://youtu.be/kSl2hGqSMq0']

Slides

 

Useful links

Creating a Change View

When in IBConsole, click on Subscriptions and Create Subscription adding in details or in ISQL add the following code changing your tables names:

CREATE SUBSCRIPTION "SUB_MEDICINEUPDATES" ON 
"CATEGORY" FOR ROW (INSERT, UPDATE, DELETE),
"MEDICINE" FOR ROW (INSERT, UPDATE, DELETE),
"MEDICINE_CATEGORIES" FOR ROW (INSERT, UPDATE, DELETE)
DESCRIPTION 'Track inserts, updates and deletes to medicine data';

Privileges for accessing tables

GRANT SUBSCRIBE ON SUBSCRIPTION <subscription_name> TO <user_name>
REVOKE SUBSCRIBE ON SUBSCRIPTION <subscription_name> TO <user_name>

 

 


Read More

RAD Studio 10.2.3のパッチと情報の要約

$
0
0

この記事は、MARCO CANTUによるRECAP OF RAD STUDIO 10.2.3 PATCHES AND INFORMATIONの抄訳です。

 

4月初旬にPMチームによって行われたウェビナーはYouTubeで公開しておりますので下記のリンク先でご視聴頂けます。
https://community.embarcadero.com/blogs/entry/10-2-3-webinar-replay

本コミュニティサイトの10.2.3関連ブログ投稿を下記URLで閲覧することもできます。
https://community.embarcadero.com/blogs/tags/tag/10-2-3

 

最近の2つのパッチ

私(MARCO CANTU)はすでに下記のパッチについて、以前のブログに書いています:

最後に、GetItパッケージマネージャー IBLite 2017とIBToGo 2017を追加ダウンロードとして見つけることができます。

 

 

 

2018年4月23日~5月4日までの月~金曜に毎日ブログを更新。Delphi / C++Builderに関する技術記事からエンジニアの日常まで、さまざまな話題を投稿します。お楽しみに!

日本人スタッフブログを一覧表示できる、こちらのページをブックマークしてください。


Read More

経験値に翻弄される!?

$
0
0

ゴールデンウィークブログ強化週間、3日目。本日は柏原がお送りいたします。

デベロッパーキャンプや展示会、セミナー等でお会いさせていただいている方もいらっしゃいますが、記事内で名前を名乗 って投稿するのは、実は初めてなので、今回は簡単な自己紹介からはじめることにいたします。

自己紹介

はじめまして!ではない方もいらっしゃいますが、エンバカデロでマーケティングを担当しております柏原です。元々は営業畑におりました。ERPパッケージや、クラウド型人事給与システムなどの販売経験(そして、FPを学びたく、保険も少し)があります。そして、夏に2歳になるわ・ん・ぱ・くな娘がおります。営業出身なので、育児と同じく?マーケティング も試行錯誤ではありましたが、営業の視点をどう活かせるか、が私の勝負どころかなと思っております。そして本日のお話ですが・・・

「経験」に翻弄される!?

「マーケティングは高速道路で走っている車と同じだ。瞬時に判断して行く方向を決めないといけない。降り忘れたら通過してしまうんだ」。

エンバカデロに入社したてのころ、そんな言葉をいただきました。何歳になっても、人は学ぶ生き物であり、自分を探求しています。しかし、それとは反して、経験にひきづられることも多々あります。私の場合「考えて考えて、リスクを想定しつくして、行動する」ということを教えこまれてきた経験が仕事のベースにあったため、考え込んでいたのですね。しかし、時には瞬時の判断とアクションも必要。この言葉は、そんな時に、私に送られた言葉でした。要は、状況に応じて、柔軟に、ということなのですが。

「柔軟」とは?

エンバカデロの最近の話題の1つに「柔軟なシステムの構築」があります。「柔軟なシステム」って何だろう、って思いま すよね。ここでは既存システムを例にお話します。

改めて言葉にするまでも無いのですが、多くの企業ではシステムを利用しています。今利用している、既存のアプリケーション。今のところ使い続けられるが、スマホ対応が必要、保守が切れる、Windows 10に対応しなくては、などの外部要因により、システム拡張・再構築の必要に迫られるという話を聞きます。その際、既存アプリケーションを使い続けるのか、再構築なのか、1か0か、という選択に迫れることがあるのではないでしょうか。しかし”経験”と同じく、別の手段、つまり既存のアプリケーションを活かす、という選択ももちろんあります。テクノロジーは日々ものすごい速度で進化しているので、進化した技術、ツール、テクノロジーを使えば、1か0かではない「柔軟」なシステムを構築できるということです。マイグレーションやモダナイゼーションとも、呼べるのではないでしょうか。

例えば、先日エンバカデロに加わった、Webアプリケーション開発フレームワークのSencha。Senchaを用いると、既存のDelphi / C++アプリケーションのWeb化することが可能です。特に、Delphi / C++ユーザーの方には、Senchaの買収、そして、既存のネイティブアプリケーションをWeb化できるということ、驚きだったのではないかと想像します。本題とずれてしまうので、Senchaに関する詳細は本日は割愛いたしますが・・・「柔軟」なシステムについて、何となくでも、伝わりましたでしょうか。

ちなみに、「柔軟性」「既存システムのWeb化」というワードに少しでも興味がありましたら、今年3月に開催されたデベロッパーキャンプの情報を参考にしてみてください。

第35回エンバカデロ・デベロッパーキャンプ・イン東京 開催資料公開

最新の情報を踏まえた情報ですと、直近では、来月5月16日に「Delphi / C++ C/SアプリをWeb化! Sencha活用セミナー」を予定しています。残席が少なくなってきましたので、情報をキャッチしておきたい方はお早めに。

セミナー「Delphi / C++ C/SアプリをWeb化! Sencha活用セミナー」詳細はこちら

それでは、最後までお読みいただきありがとうございました。今朝は豪雨でしたが、帰りは小雨になっているといいな・・・つぶやきでした。

 

2018年4月23日~5月4日までの月~金曜に毎日ブログを更新。Delphi / C++Builderに関する技術記事からエンジニアの日常まで、さまざまな話題を投稿します。お楽しみに!

日本人スタッフブログを一覧表示できる、こちらのページをブックマークしてください。


Read More
Viewing all 1683 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>