ざつだ ん。 (2014/04/01~)
2014/04/11
OpenSSL の Heartbleed (脆弱性) と Indy
まずは以下をご覧ください。
この脆弱性が存在するのは 2012/04 リリースの OpenSSL 1.0.1 ~ 2014/01 リリースの 1.0.1f なので、OpenSSL 1.0.1g 以降を使えばいい事になります。
心当たりのある方は、Indy ビルドの OpenSSL (DLL) を差し替えてください。
QC#103139 の Workaround (回避方法)
TProxyObject に TModel3D を指定しても何も表示されないという QC です。
Delphi XE2 の時からある問題ですが、設計時はともかく、"実行時にはどうにかする方法" を中山さん (a.k.a. luxidea) に教えて頂きました。
[uProxyObjectFix.pas] |
unit uProxyObjectFix;
interface
uses
System.Types, FMX.Controls3D, FMX.Types;
type
TControl3Dhelper = class Helper for TControl3D
private
// Access Methods
function Get_Size: TPoint3D;
procedure Set_Size(const Value: TPoint3D);
function GetAbsolMatrix: TMatrix3D;
procedure SetAbsoluteMatrix(const Value: TMatrix3D);
// Methods
procedure RecalcChildrenAbsolute;
procedure RenderTree;
public
// Properties
property _Size: TPoint3D read Get_Size write Set_Size;
property AbsoluteMatrix: TMatrix3D read GetAbsolMatrix write SetAbsoluteMatrix;
end;
TProxyObject = class(FMX.Controls3D.TProxyObject)
protected
{ protected }
procedure Render; override;
end;
implementation
{ TControl3Dhelper }
function TControl3Dhelper.GetAbsolMatrix: TMatrix3D;
begin
result := Self.GetAbsoluteMatrix;
end;
function TControl3Dhelper.Get_Size: TPoint3D;
begin
result.X := FWidth;
result.Y := FHeight;
result.Z := FDepth;
end;
procedure TControl3Dhelper.RecalcChildrenAbsolute;
var
F: TFmxObject;
begin
if Assigned(Children) then
for F in Children do
if (F is TControl3D) then
(F as TControl3D).RecalcAbsolute;
end;
procedure TControl3Dhelper.RenderTree;
begin
RenderInternal;
end;
procedure TControl3Dhelper.SetAbsoluteMatrix(const Value: TMatrix3D);
begin
FAbsoluteMatrix := Value;
FRecalcAbsolute := False;
RecalcChildrenAbsolute;
end;
procedure TControl3Dhelper.Set_Size(const Value: TPoint3D);
begin
FWidth := Value.X;
FHeight := Value.Y;
FDepth := Value.Z;
end;
{ TProxyObject }
procedure TProxyObject.Render;
var
M: TMatrix3D;
S: TPoint3D;
begin
if Assigned(SourceObject) then
with SourceObject do
begin
M := AbsoluteMatrix;
S := _Size;
AbsoluteMatrix := Self.AbsoluteMatrix;
_Size := Self._Size;
SourceObject.RenderTree;
AbsoluteMatrix := M;
_Size := S;
end;
end;
end.
|
使い方は簡単です。
- 上記 uProxyObjectFix.pas をプロジェクトに追加
- TProxyObject を使っているユニットの uses に uProxyObjectFix を追加。
TProxyObject に TModel3D を簡単に指定できるようになると表現の幅が広がってステキです。
vcl-styles-utils
VCL スタイル用のユーティリティイロイロ。既存の VCL スタイルの HLS をいじって、新しいスタイルみたいにみせたりとかできます。
意外な (?) ネットワークの不調の原因
お客さんに、
- 「模様替えしたらネットワークが遅くなった」
- 「お前がハブ変えてからネットワークが遅くなった」
- 「ハブの電源入れなおさないと LAN がおかしくなる」
- 「お前が LAN ケーブル変えてからネットワークが遅くなった」
- 「お前が LAN ケーブル変えてからインターネットが遅くなった」
- 「お前が LAN ケーブル変えてから FAX が通信エラーになる」
- 「一部の区画だけ LAN がいきなり繋がらなくなる」
- 「DB が頻繁にデッドロックロックする」
- 「サーバのデーモンががやたらと落ちる」
- 「お前んトコが入れた PC (デスクトップ) がよく壊れる」
等のクレームで調査を依頼され、ハブやケーブルを変えても状況が改善しない場合には、次のアクションを起こす前に「原因がウチのせいじゃなかったらこれまでに掛かった費用はキッチリ請求しますよ?」 と断っておきましょう。
…で、調査すべきは複合機や冷蔵庫等、"常時稼働している機器のアース" です。稼働している機器で "アースを取らなければならないのにアース線が接続されていないもの" があったら一時的に止めてみましょう…そしてネットワークの速度を計測してみましょう。
ping 打って戻ってくるのが 4 回に 2 回とかだったのが 4 回とも返ってきたり、レスポンスがよくなったりしたらアースをちゃんと取っていなかったせいです。この調査はそんなに手間や費用が掛かるものじゃないので、やってみても損はないと思います。
アースが原因だと判明したら、高いものじゃないのでホームセンターからアース線を買ってきて接続してあげましょう。あらぬ疑いを掛けられて激しく叱責されたからといって、鬼の首を取ったように責め立てる必要はありません。淡々と作業報告書を書いて請求書を提出しましょう…「では、これでお願いしますね」。
意外な (?) ネットワークの不調の原因の原因
お客さんが模様替えとかで勝手に複合機を移動して、アース口のないタップや延長コードに接続していたりすると現象に遭遇します。そして模様替えの後で LAN 配線の関係で呼ばれるので「お前がいじってからおかしくなった!」と、あらぬ疑いを掛けられる、と。
…自社の環境にも心当たりがありませんか?
2014/04/15
RAD Studio XE6 リリース
もう出たの?
RAD Studio XE6 の新機能及び変更点
RAD Studio XE6 の新機能は以下の通り (改善点は含まない)。
- FMX: C++ Android ARM コンパイラ
- FMX: Android 用 C++ コマンドラインツールチェイン (bccaarm)
- FMX: iOS および Android 上のボタンおよびツールバーのための色合いのサポート(コントロールサーフェイスおよびコントロールアイコン用)
- FMX: Google Glass 固有のスタイル、デザインのサポート
- FMX: Android KitKat スタイル
- FMX: iOS および Android 用のアプリ内購入コンポーネント (TInAppPurchase)
- FMX: iOS および Android 用の広告コンポーネント (TBannedAd)
- FMX: モバイルプラットフォーム用のプッシュ通知サポート
- FMX: デスクトップ/モバイルアプリケーション間でのアップテザリングの FireMonkey サポート
- FMX: Android 上での TabControl タブアイコンのサポート
- FMX: SelectDirectory() - デスクトップ向け
- VCL: Windows タブレット向けの VCL センサーコンポーネント (FireMonkey と共用になった)
- VCL: デスクトップ/モバイルアプリケーション間でのアップテザリングの VCL サポート
- VCL: タスクバーボタン、プログレスバー、オーバーレイアイコン、カスタムボタン、複数のプレビューサポートを含むタスクバーコンポーネント (TTaskBar)
- VCL: メインメニュー、ポップアップメニュー、システムメニューのスタイルサポート
- VCL: Windows タッチタブレットに最適化されたスタイルを含む新しい VCL スタイル (Grossy / TabletDark)
- 64-bit Windows アプリケーション向け C++ パッケージサポート
- C++ RTL for Android
- Windows 上での DirectX 11 サポート
- Clang ベースの C++ コンパイラ(C++ Indexer)における定義と参照の検索
- 新しい FieldOptions および FieldLifeCycle 機能によるフィールドの自動制御と永続化サポート
- Informix データベース向け Windows/Mac ネイティブドライバ
- Apache HTTP サーバーモジュール向けの WebBroker サポート
- WebBroker アーキテクチャにより DataSnap サーバーを Apache HTTP サーバー(HTTP または HTTPS を使用)に配置
- FireDAC データセットのエクスポーズと差分を使った変更調停のための固有の DataSnap サポート
- データエクスプローラの FireDAC サポート-データベース接続の追加と管理、データベーススキーマの表示を最適化
- ユーザー管理、ファイルストレージ、オブジェクトストレージ、通知サポートなど、最も共通の操作のための統一インターフェイスを備えた BAAS (Backend as a Service) アーキテクチャ
- Kinvey 向け BaaS サポートの統合 (TKinveyProvider)
- Parse 向け BaaS サポートの統合 (TParseProvider)
RAD Studio XE6 の変更点で目に付いたものをピックアップ
- IDE のツールバーアイコンが AppMethod と同じフラットデザインになっている。
- iOS 開発用の OS X が Mountain Lion (10.8) 以降となった。
- 不正なヘッダの Bitmap 画像を読み込ませると Delphi 製アプリケーションや Delphi そのものが落ちる問題が解決されている。
- FireMonkey で TabOrder が有効になった。
- FireMonkey で IMEMode が有効になった。
- トライアル版の実行に EDN アカウントが不要になった。
- XE6 は %ProgramFiles%\Embarcadero\Studio\14.0 にインストールされる。"Embarcadero\RAD Studio\14.0" ではない。
C++Buider の修正ばっかりだと思っていましたが、今回は気合が入っている印象を受けます…XE5 からそんなに時間が経っていないのに。
2014/04/16
RAD Studio XE6 で修正された QC と当サイトの記事
ネタにしていた件が直ってますね。
IMEMode と TabOrder が普通に使えるようになったのは朗報です。そういえば、センサーコンポーネントも VCL / FMX 両用になりましたね。
TWebBrowser も IE 最新版を使うようになったんでしたっけ。
2014/04/23
業務アプリ開発で活かせる Delphi プログラミングテクニック - Reprise -
はっじまるよー♪
Chapter 1
特にありませんが、セッション全体の検証ソースコードとバイナリのアーカイブは以下から DL できます。
Chapter 2
Hyper-V は以下から DL できます。
リモートデバッガについては以下の記事を参考にしてください。
Chapter 3
名指ししてしまった "山本 (ネタ殺し) 隆さん" の記事。デブキャン前日にこの記事が書かれているという…。
SynTaskDialog 改 と InkEdit。SynTaskDialog 改は XP 対応のためでもあるのですが、2007 とかの TaskDialog には様々な制約があるのです (XE6 とかだと大丈夫だと思いますが…)。詳細はリンク先の記事をお読みください。
細川さんの過去のセッション。ジャンプリストに関する情報があります。TTaskBar は XE6 で追加されていますが、セッション資料にはタスクバーボタンに関する情報も載っています。
タッチとジェスチャの話。それ自体はともかく、FireMonkey の有り難みが解る記事となっています。
Chapter 4
Manifest Ex コンポーネントとアプリケーションマニフェストについてはこちら。
アーカイブの中に評価コードがあります。
Chapter 5
ツールバーの "配置、間隔、位置合わせ" の件の詳細は DocWiki を確認してみてください。
Value Calc プロパティエディタはこちら。
らいなさんも名指ししちゃいましたが、その節はお世話になりました。開発の経緯は記事中に書かれています。
Delphi 2010 以降だと、コンポーネントを複数選択して実行した場合、TabOrder の評価は個々のコンポーネントに対して行われます。
アーカイブの中に丸いボタンのデモがありますが、XE4 で作ったものなので、環境によってはエラーで実行できないかもしれません。FireMonkey では簡単に丸いボタンが作れるのですが、作り方がわからない方はこちらを御覧ください。
TCustomEdit に AsInteger とかのプロパティを追加するクラスヘルパについては以下を参照してください。
Chapter 6
Excel 関連です。
Chapter 7
SHFileOperation() が遅い件の評価コードは アーカイブの中にあります。
「TFile / TDirectory / TPath にもう少しだけ機能が欲しい」と言っていましたが、実際に作ったものがこちらになります (^^;A
SUBST や net use 同等の事をコードでやるための TDriveEx も含まれています。
Chapter 8
FireMonkey 用の数値入力コンポーネントはこちら。
FireMonkey コンポーネントの簡単な紹介は以下を参照してください。XE6 で追加されたコンポーネントも網羅してあります。
Chapter 9
ProgressBar の評価コードはアーカイブの中にあります。
未対策だと、プログレスバーが最後に到達する前に ShowMessage() のダイアログが表示されてしまいます。この件と速度低下の件を解消するためのユニットは以下にあります (デブキャン資料に書いたコード+αです)。
End of Chapter
以上が昨日のエンバカデロ・デベロッパーキャンプ【C2】セッションの補足記事となります。何の事だか解らない方は資料やビデオが公開されるのをお待ちください。暫定資料でよければ事前ダウンロードページからまだ DL できたと思います ("全資料をダウンロード" から個別に DL できます)。
振り返ってみると、よくもまぁ 95P もやったな、と思います (^^;A
2014/04/25
AppMethod 発売
デブキャン前日の 21 日に正式発売になりましたが、まだ国内の各ショップでは取り扱いがないようですね。
デブキャンで明らかになったのは、無償版はあるにはあるけれど 6 月の公開で、しかも "言語は C++ しかない" という事。これはかなり残念です。
Windows 7 のデスクトップアイコンが消える件
これはあちこちで書かれているので、改めてここで書く必要もないと思いましたが、一応。
これの根本的な原因は "破損したショートカットが 5 個以上デスクトップに存在すると保守タスクが走ってそれらを削除してくれやがる" というものです。
つまり、実際には破損していなくても、破損しているとみなされたショートカットが 5 個以上あると保守タスクによりキレイにしてくれるというありがた迷惑な話なのです。
ネットワークドライブへのショートカットや USB メモリ等のショートカットはデスクトップに直接作らない方がいいという事ですね。それより何よりこの保守タスクはお節介にも程があるので停止した方がいいと思います。
ただ、[コントロール パネル | すべてのコントロール パネル項目 | トラブルシューティング | 設定の変更] を辿るのはとても面倒で、コントロールパネルの表示を変更していると迷子になってしまうと思います。そんな時は、[ファイル名を指定して実行] あるいはコマンドプロンプトから以下を実行しましょう。
control.exe /name Microsoft.Troubleshooting /page settingPage
|
これで一発で開けるハズです。この現象は Windows Update の際に発生する事が多い気がしますね。
Windows XP 用のアンチウィルスソフト
黒翼猫さんに教えて頂いたのですが、
この2つをインストールするといいかもです。何で2つなのかと言うと、ClamWin 自体はリアルタイムスキャン機能がないのだそうです。Clam Sentinel はリアルタイムスキャンを行い、ClamWin に処理を投げるような仕組みになっています。
なお、ClamWin と Clam Sentinel は、Windows 98 や 2000 も動作対象となっており、加えて言えば Clam Sentinel は Delphi 6 製だとの事。
この記事はっ!
Twitter の TL に流れてきたこの記事。
ん?この主張と文体には見覚えが…"Yusuke Konno"?…って、totoやんやーん (^o^)/
Delphi ユーザの方は "第16回デベロッパーキャンプ【1E】Delphi での文字コードのハンドリングについて" も読んでみてくださいね。