pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


znaps届いた。ただしkickstarterの出資分ではなくamazonでの購入ですが何か?

optyさんがAmazonでZNAPS購入された話を見ていたら、やはりこれは試さにゃイカンかなあと思いますね。
yokamachi.jp

そんなわけで買ってしまいましたよ。出資分は1つ10ドルくらいだったから、倍の金額をかけて買う罰ゲームや。

なお、これが本物かどうかは知らんです。確かめる方法もないだろうし。

さて、とりあえず手元のiPhone7Plusにつないでみた。使っているケーブルは Anker のですけど、ZNAPSのアダプタのほうが小ぶりなのがわかるでしょうか。
f:id:pslabo:20161124131416j:plain

これならケースやカバーを選ばずに使えることでしょう。

細かいレビューは個別の記事として改めて書いていこうと思いますけど、ファーストインプレッションはこんな感じ。

磁力はあまり強くない。

このことをどう評価するかは利用者の求めるものによって変わる。個人的にはケーブルを傷めないことを重視したいので、磁力が強すぎないことはありがたい。

ただし充電中にスマホを使っていたり、あるいはケーブルが固かったりすると、ケーブルや接続部分にかかる力の向きによって、はずれてしまうことがある。そもそも通常のLightningケーブルに後付けする時点でテコの原理によって接続部分にかかる力が強くなるのだから、これはやむを得ないとは思う。なので、そういう使い方には向かないかも。

プロモーションムービーに出でいたような感じで、卓上にスマホを置いて、その上方向からケーブルを落とすとつながる、みたいなのがあったけど、ああいうのは多分無理。

MacbookのMagSafeですら、そういう風には繋がない。ちゃんとコネクタを持って本体につなぎます。だから、プロモーションムービーで出ていたような「めっちゃカンタンにつながるぜー」ということはない。

端子のショートに注意 ⇒ これは勘違いでした。


ケーブル側のアダプタに磁石が付いているので、USB充電器にこれを付けたケーブルを常時繋いでいる方は周囲にクリップなどの金属物を置かないように注意すべきです。万が一金物がくっついてしまうとショートして火災の恐れがあります。この点はZNAPSだけではなく、マグネット式のLightning/microUSBケーブルはすべて該当することだと思われます。


ZNAPSの場合はスマホ側の端子が磁石のようですから、このことを過剰に心配する必要は無いかもです。

再度訂正。本体側、ケーブル側の両方とも磁石っぽいので、あとでもう一度再検証しよう。

組み合わせるUSB充電器はインテリジェントなものを使うべき

通電状態に合わせて供給電力量を自動的に調整するタイプなら、万が一ショートしても安全なはず。100均を含む安物の充電器との組み合わせは極力避けるべきです。もっとも、これもZNAPS以外のケーブルやアダプタを使う場合にも言えることですね。

100均の充電専用片面ケーブルにつけると両面仕様に早変わり。

これは意外な発見でした。これはそのうち写真付きで説明したほうが良さげかも?

充電時間はおそらく長くなる。

充電時の電流量を測ってみると、ZNAPS装着後は電流量が下がったような気がしました。どのくらい下がったかを厳密にはチェックしていませんけど、これは充電時間が長くかかる可能性があるということです。これもZNAPSだけに限った話ではなく、この手のアダプタは程度の差はあれども同様の事象が出る可能性があります。

ケーブル側アダプタは複数欲しくなる

ケーブル側アダプタが1つだけだと、そのケーブルまたはアダプタを常時持ち歩くことになり、メンドクサイです。ケーブル側アダプタが2つなら、1本は自宅または職場に置きっぱなし、もう1本は持ち歩き用にできるわけです。理想を言えばケーブル側アダプタは3本(自宅、職場、持ち歩き) 欲しいかも。


というわけで、kickstarterのbackerにはなかなか届かないZNAPSですが、Amazonでは買えますよ。おひとついかがですか?

私は自分の backer の分も Lightning と microUSB で5セット分くらいあるから、さすがにこれ以上は多分買わず、kickstarterの分を待つことにすると思います。(もう1セットほしいけど)


MacBook Pro(Late 2016)でDisplayPort接続したい場合はUSB-C → DisplayPortケーブルを用意する。

仕事用のMacBookを Pro Retina 13inch Late 2013 から Pro Retina 13inch Late 2016 に変えることになったのですが、AppleThunderbolt ポートおよびディスプレイについて - Apple サポートには、以下のように書いてあるそうです。

Thunderbolt 3 (USB-C) - Thunderbolt 2 アダプタは Mini DisplayPort コネクタを採用していますが、Mini DisplayPort ディスプレイの接続には対応していません。

仕事用のMacBookは自宅に持ち帰って使うこともあるのですが、自宅のモニタは DisplayPort なのでこれは困ります。しかしいろいろ調べてみると、こちらの方の記事にて「USB-C - DisplayPortケーブルでイケた」という話が出ていました。

itstrike.biz


というわけで、DisplayPortにつなぐには、こういう類のケーブルを入手すれば良さげですね。

znapsの日本代理店だと?

znaps のことは諦めているつもりだったけど、こういうのを見つけるとイラッとするなあ。

znaps自身が日本で直販するのではなくチャネルリセラーですね。
znaps-jp.net

あ、タイトルには「日本代理店」と書きましたけど、これは上記サイトのフッタに "Official ZNAPS Distributor" という表記があることからそのように書いてみました。ただし本当に代理店かどうかは知らん。


さて、上記の業者は自社サイトでの販売に加えて、Amazon でも売ってるようだ。

実際にここでブツを手にいれた方はいるのだろうか。

ZNAPSの本社にはどうなっているのかと小一時間問い詰めたい感じですな。

Delphi と C++Builder の Starter Edition をインストールした環境を再インストールするときは両方が一発でインストールできる

タイトルだけだと何を言っているのか分からないネタですよね。。。

エンバカデロ・テクノロジーズのアプリケーション開発製品である DelphiC++Builder は複数のエディションがあるのですが、DelphiC++Builder をパックにしたものを "RAD Studio" としてリリースしています。

しかし、Starter エディションには RAD Studio の設定が無いので、DelphiC++Builder の両方をインストールしようとすると別々にインストールするか、またはインストール時にライセンスマネージャを別途実行して2つのライセンスを有効化するなどの小細工が必要です。


ですが、一度アンインストールして再インストールすると、ライセンスアクティベーション情報だけは引き継がれます。このときに両方のライセンスを検出してくれるため、再インストール時は両方を一度にインストールできるわけですね。


実際にやってみると一度アンインストールした後のインストーラ実行では、以下のスクリーンショットのように DelphiC++ の両方が特別な作業を行わずとも選択可能となっています。
f:id:pslabo:20161118161646p:plain

インストール後のスタートメニューの中身はこんな感じ。ライセンスマネージャのライセンス表示も見えるようにスクリーンショットとりました。
f:id:pslabo:20161118161830p:plain

スタートメニューには、Starter Edition には存在しないはずの "RAD Studio 10.1 Berlin" の表示が見えます。

なお、この作業は単に再インストールをしたかったのではなく、今週リリースされた Update 2 を試してみるための作業のついでに検証しました。

Delphi/C++Builder 10.1 Berlin Update 2 がリリースされたようです。

昨日11/15付でDelphi/C++Builder 10.1 Berlin Update 2 がリリースされたようです。

昨日からのCodeRageにギリギリ間に合わせたのでしょうけれど、肝心の機能や安定性のほうはどうなんでしょ。

今回の目玉機能の一つはWindows10アプリストア向けのパッケージングである AppX の出力に対応したことです。AppXの生成で使うコードサイニング証明書は自己署名証明書IDEで行えるし、ビルドターゲットを「Windowsアプリケーションストア」に設定してビルドするだけで確かに AppX が生成できました。

ちょいと惜しいのは、AppX が出力されたパスの情報がメッセージボックス的なシロモノで表示されるだけ、ということ。できればコピペ可能な TEdit とか、あるいはそもそもエクスプローラで対象パスを開いてくれるとベターやなあ。

DelphiでiOSデバイスのバッテリ残量を取得する

DelphiiOSバイスのバッテリ残量を取得する例はググるといくつか出て来るのですけど、分かる人が見れば分かるくらいのサラリとした内容が多いようで、比較的最近になってRAD Studioを使い始めた方が読むと案外難儀します。

そこでソースコードをまるごと載せてみることにしました。なお、キモになる部分(Button1Click) の内容は、やましょうさんのブログからいただきました。

このコードは、新規の「マルチデバイスアプリケーションプロジェクト」に対して、TMemoとTButtonを一つづつ配置すれば動作します。

ここから引用する場合の注意点は下記3点です。

  • ビルドのターゲットプラットフォームは iOS 系にすること。
  • uses に iOSapi.UIKit を追加すること。
  • procedure TForm1.Button1Click() の内容はそのままコピペすること。

特に案外大事なのは、ビルドのターゲットプラットフォームです。これを先に変えておかないと、uses iOSapi.UIKit する時点でエラーが出まくりです。

Delphi の FireMonkey フレームワークでは、モバイルデバイスのバッテリ残量取得に対応したクラスが実装されていないのですが、そのような場合はネイティブのAPIを呼ぶことで値が取得できます。

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo, iOSapi.UIKit,
  FMX.StdCtrls, FMX.Layouts;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private 錾 }
  public
    { public 錾 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
var
  device : UIDevice;
begin
  device := TUIDevice.Wrap(TUIDevice.OCClass.currentDevice);
  Device.setBatteryMonitoringEnabled( True );
  Memo1.Lines.Insert(0,floattostr(Device.batteryLevel * 100));
  Device.setBatteryMonitoringEnabled( false );
end;

end.

VMwareを利用する機材でディスクパフォーマンスが悪い場合は vmx の設定をカスタマイズする

設定を忘れてしまうので自分用のメモとして残す。

本件の元ネタは以下のナレッジベース。

https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2092664


仮想マシンの電源を Off にした状態で vmx ファイルに以下の設定を記述すればディスクパフォーマンスを改善できる。

MemTrimRate = "0"
mainMem.useNamedFile = "FALSE"
sched.mem.pshare.enable = "FALSE"
prefvmx.useRecommendedLockedMemSize = "TRUE"

ただし本設定を利用する場合は実メモリが十分に搭載されていることが必要。


その他、いくつかのウェブページでは以下の設定も追加するという話が出ているけれど、これの出典がよくわからない。

MemAllowAutoScaleDown = "FALSE"