pslaboが試したことの記録

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

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

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


Chrome, Firefox, Safari, Edge のリリース日とバージョンのリストがほしいけど見当たらない

それぞれのブラウザの各バージョンのリリース日が一覧でまとめられているようなページがないかと思ったけど、どうも、なさげ。

仕方がないのでとりあえずの忘備録として Wikipedia 英語ページへのリンクをまとめておく。

最新版の状況だけならここらへんからのリンクを見ておけばよいのだが。

https://qiita.com/p1nk5p1der/items/e2225d9097a996c62bf8

Windows 10 で言語設定を PowerShell で切り替える

海外のスタッフに日本語入力で起きる問題を再現してもらうのに、OSを日本語入力可能な状態にしたいという状況が出た。

その設定方法を手短に伝えるとしたら、きっと PowerShell だろうと思って調べてみたら、Set-WinUserLanguageList というのがあった。

docs.microsoft.com

こうすると日本語になり、

Set-WinUserLanguageList ja-JP

こうすると英語にもどる。

Set-WinUserLanguageList en-US

こうやると、英語と日本語の両方をセットアップできる。

$UserLanguageList = New-WinUserLanguageList -Language "en-US"
$UserLanguageList.Add("ja-JP")
Set-WinUserLanguageList -LanguageList $UserLanguageList

Windows 7 には Set-WinUserLanguageList が見当たらないんだけど、この場合はどうすればいいんだろうか。

Windowsにインストール済みのパッチ一覧を取得する

Windowsにインストール済みのアプリ一覧を取得する、というのは昨日の記事で書きましたが、アプリ一覧だけではなく、パッチの一覧も知りたくなったので、それを取得する方法をしらべてみました。

方法的には3種類あるようです。

そのうち2つの方法は、単に実行するだけ。

  1. コマンドプロンプトで wmic qfe で取得する
  2. powershell で get-hotfix する

ただし、この方法だと個別インストールしたものがリストアップできないようなので、それをリストアップするためには PowerShell で以下のように実行すれば良いようです。

$mySession = New-Object -ComObject Microsoft.Update.Session 
$mySearcher = $mySession.CreateUpdateSearcher() 
$mySearcher.Search("IsInstalled=1").Updates | sort -property LastDeploymentChangeTime | ft -a LastDeploymentChangeTime,Title,SupportUrl

内容は下記ページに掲載のものをベースにしつつ、ft (Format-Table) で切り出す内容をすこし変えています。

tooljp.com

Windowsにインストール済みのアプリケーション一覧をコマンドで取得する

自分の管理下にないPCにインストール済みアプリの一覧をメールで教えてもらう必要が出てきたので、方法をしらべてみました。

確認方法(32-bit Windows

結果から言うと、32-bit Windows では、コマンドプロンプトから次のコマンドを実行するのがシンプルでした。

reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall" /s | find "DisplayName"

確認方法(64-bit Windows

64-bit Windows の場合は、さらにこちらのコマンドも実行します。

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall" /s | find "DisplayName"
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /s | find "DisplayName"

これで出力されたリストをもらえばよい。

Windows のビット数によらず結果を取得するバッチファイル

これらのコマンド実行を自動的に行ってくれるバッチファイルを作るとしたら次のような実装例になります。この実装は https://qiita.com/Marukaziler/items/3f64a77b3ccef31e6536 を参考に作りました。

@echo off
if "%PROCESSOR_ARCHITECTURE%" EQU "x86"   goto :ARCH_X86
if "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" goto :ARCH_X64
echo 未対応環境です & goto :EOF

:ARCH_X64
echo x64環境です
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall" /s | find "DisplayName"
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /s | find "DisplayName"

:ARCH_X86
reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall" /s | find "DisplayName"

:EOF

注意点

レジストリに情報がないアプリケーション(インストーラを使用せずにインストールしたもの)は、この方法でリストアップすることはできません。

また出力結果にはアプリケーションだけではなく、セキュリティアップデートの情報も含みます。それが不要な場合は KBxxxxx を除外するなどしてご利用ください。

中古で購入したdocomo版iPadがSIMロック解除できるようになったのでやってみた

2019年2月20日以降、中古端末のdocomoiPadSIMロック解除できる

こういうニュースリリースが出ました。

www.nttdocomo.co.jp

これはとてもありがたい話ですよ。2015年5月以降の端末なら、中古で譲り受けた場合やリサイクルショップで購入した場合でも、オンラインで無料でSIMロック解除できるのですから。

これまでは、端末を新品で購入したユーザだけがSIMロック解除できましたので、他のキャリアのSIMを使いたい場合は端末を手放す前にSIMロック解除していることが必要でした。

しかし多くのケースではSIMロック解除されることもなく、そのまま販売されていたと思います。これからはこういうことを気にしなくても済むのですから。

どういう方にメリットがあるのか?

au / SoftBank 回線の方は、手持ちのキャリア以外に、docomo版も選択肢になりますね。選択肢が単純に2倍になるのだから、とても選びやすくなりますね。

IIJmio(みおふぉん)でタイプD(ドコモ回線)のSIMをdocomoiPadを使っている方は、SIMロック解除すればタイプAで運用できます 。これは通信回線を冗長化できることを意味します。たとえば、もしもdocomo回線で何かの障害が起きた場合でもau版回線は生きている可能性が高いので、スマートフォンタブレットでタイプDとタイプAを混在させておけば、そのような運用ができます。

実際にやってみるためにIMEIを確認する

SIMロック解除ではIMEI番号が必要です。これは次のどちらかの方法で確認できます。

iPad で確認する

iPadの設定アプリで「一般」を開くと、IMEIが表示されています。ここを長押しするとコピーできます。 f:id:pslabo:20190223092446p:plain

iTunes で確認する

iPadをパソコンにつないでiTunesを開くと、接続したデバイスが確認できます。 f:id:pslabo:20190223092544p:plain

「シリアル番号」と表示されている箇所を複数回クリックするとIMEIが表示されます。ここを右クリックするとコピーできます。 f:id:pslabo:20190223092553p:plain

実際にやってみる

IMEI番号が確認できたら手続きを進めます。

docomoでのSIMロック解除手続きはMy docomoで行いますが、My docomo のアカウントはdocomo回線を持っていなくても作成できます。

ここでは既に My docomo アカウントがある、という前提で説明を進めますので、アカウントがない場合は先に作成しておいてください。

My docomo にログインし、「その他のお手続きはこちらから」に進む

ログインして画面をすこしスクロールすると、こういう表示が確認できるはずです。ここから「その他のお手続きはこちらから」を選んで次の画面に進みます。

f:id:pslabo:20190223093228p:plain

SIMロック解除」のメニューを探す

「その他」のカテゴリーの中に「SIMロック解除」がありますので、これを選んで先に進みます。 f:id:pslabo:20190223093349p:plain

2段階認証を行う

My docomoでの各種手続きは2段階認証が必須のようです。docomo契約がない場合は登録メールアドレスにセキュリティコードが送信されます。 f:id:pslabo:20190223093458p:plain

届いたセキュリティコードを入力して先に進みます。 f:id:pslabo:20190223093510p:plain

IMEI番号を指定してSIMロック解除を申し込む

あらかじめ確認しておいたIMEI番号をここに貼り付けます。

f:id:pslabo:20190223093643p:plain

これで手続き完了!

手続き完了の通知が画面に表示されます。またメールで送られてきます。これで完了です。

f:id:pslabo:20190223094055p:plain

完了したらどうすれば良いのか?

別キャリアのSIMがある場合は、それを挿して再度のアクティベーションを実施すればよい。

別キャリアのSIMが無い場合は、 iPadを初期化してアクティベーションし直します。iPadを事前にバックアップしておきましょう。

より正確な手順はこちらで説明されています。

support.apple.com

Delphi / C++Builder 向けパッチの自己流管理方法

Delphi / C++Builder に限らず、ソフトウェア製品はかならずパッチやアップデートがリリースされますので、適切に適用することが大切ですね。

しかし、Delphi / C++Builder のパッチインストールはおせじにも簡単とはいいがたく、インストールがめんどくさいと思います。

たとえば 10.2 Tokyp Subscription Update 3 向けのパッチはこれだけあります。これらは個別のzipファイルで提供されることが多く、Delphi / C++Builder のインストールパスに手作業で展開する必要があります。(例外的に一部のパッチは実行形式で提供されることがあるようですけど。)

パッチ名 ダウンロードページ
30831_rad_studio_10.2.3_android_push_notification_patch https://cc.embarcadero.com/item/30831
30832_rad_studio_10.2.3_ems_package_wizard_patch https://cc.embarcadero.com/item/30832
30833_RAD_Studio_10.2.3_Context_Help_Patch https://cc.embarcadero.com/item/30833
30834_C++Builder_10.2.3_C++_Compiler_4k_Stack_Allocation_Patch https://cc.embarcadero.com/item/30834
30835_RAD_Studio?_10.2.3_iOS 11.3_Patch https://cc.embarcadero.com/item/30835
30836_delphi_10.2.3_rad_server_linux_apache_patch https://cc.embarcadero.com/item/30836
30837_rad_studio_10.2.3_ios_11.3_and_codeinsight_patch https://cc.embarcadero.com/item/30837
30838_rad_server_10.2.3_performance_patch https://cc.embarcadero.com/item/30838

こういう仕組みはシンプルだから嫌いではありませんが、それそれのパッチの適用状況がわかりづらいです。

そこで、こういう方法でパッチのインストール状況を管理することにしました。

RAD Studio のインストールフォルダに "HotFix" というフォルダを作って適用済みホットフィクスの情報を記録しておく

ツール側にパッチの適用状況を管理する仕組みがないなら、どうにかしよう、ということで、それを管理するためのフォルダを作成します。

ここには、以下のルールでファイルをパッチ単位で作っておきます。

  1. ファイル名は、パッチの番号および名前にしておく。拡張子は txt にする。
  2. ファイルの内容は、パッチが公開されているページのURLにする。

このようにしておくだけで、パッチのインストール状況が一目でわかりますし、そのパッチを他の機材に適用したい場合には、そのファイルをひらけばURLがわかるので内容の確認やダウンロードも簡単です。

どうせなら、パッチをひとまとめにしたアーカイブを作ってしまおう

とはいいつつも、複数の作業マシンを使い分けている場合は、それらに同一のパッチを入れる作業は案外めんどくさい。

また、環境をゼロから作り直す場合も同様にめんどくさい。

そこで、前述の構成をとりつつ、複数のパッチをマージしたアーカイブを作ってしまえば、すべてのパッチを一括で導入できますし、何を適用しているかもわかります。

では、そのアーカイブはどんな形式で作るのがよいのか?

普通に考えれば zip 形式一択なのですけど、zip 形式は圧縮率がさほど高くないという印象があります。そこで、複数の圧縮フォーマットでファイルサイズがどれくらい変わるかを比較してみました。なお、作業の都合上、これは macOS 上で実施しております。また、処理時間は1回だけ実行した時の実測値なので処理時間の絶対値を見るのではなく、相対的に速い、遅いという観点での比較にご利用いただけます。

アーカイブ ファイルサイズ 作成方法 処理時間
R10.2.3.30831-30838.tar 1583243776 tar cvf R10.2.3.30831-30838.tar R10.2.3.30831-30838 3秒
R10.2.3.30831-30838.zip 907663024 zip -r R10.2.3.30831-30838.zip R10.2.3.30831-30838 2分45秒
R10.2.3.30831-30838.tar.gz 907840100 cat R10.2.3.30831-30838.tar | gzip -c -9 > R10.2.3.30831-30838.tar.gz 2分35秒
R10.2.3.30831-30838.tar.bz2 874491124 cat R10.2.3.30831-30838.tar | bzip2 -c -9 > R10.2.3.30831-30838.tar.bz2 2分49秒
R10.2.3.30831-30838.tar.xz 598725872 cat R10.2.3.30831-30838.tar | xz -c -9 > R10.2.3.30831-30838.tar.xz 15分32秒

*上記の処理で cat を pv (pipe viewer) に置き換えて実行すると、処理状況が可視化され、実行終了予測時間も表示されますので、私が実際に作業するときには cat ではなく pv を使います。

こうやって比べてみると、zipとgzipはファイルサイズに極端な差はありませんが、bzip2はそれよりも小さく、xzはさらに小さいことがよくわかります。圧縮のためにそれなりに時間はかかりますが、xz が取り扱えるなら基本的には xz 一択で良いと思います。

ちなみに、この xz のアーカイブを展開するためにかかる時間は、約10秒でした。圧縮には時間がかかるけれど、展開で10秒なら全く問題ないレベルです。

では、xz は Windows でどうやって扱えるか?

GUI 指向の方は 7-zip を入れておけば扱えるようですが、私は Windows 向けのGUIツールでアーカイブを扱うことを基本的にしないので、使い勝手はよく知りません。

CUI 操作に不都合がない方は、Windows Subsystem for Linux をセットアップしておけば、普通に xz や tar コマンドで扱えます。

ちなみに、Windows 側の特定のフォルダで bash で作業するのに cd コマンドで移動、とかする必要はありません。エクスプローラでそのフォルダを開いた状態で、アドレスバーから "bash" と入力するだけでよいのです。

Sufrace Go 64GB のSSD性能をベンチマークしてみる

Surface Go 64GB を一時的に使うことになったので、SSD性能をベンチマークしてみました。

計測に試用したのは CrystalDiskMark のストアアプリ版です。

Surface Go 上位モデルのベンチマーク結果はいろんなところで記事化されているのでそちらと比較してみると、こんな感じになりました。

  • 読み込み性能は1/3くらいに遅い
  • 書き込み性能は上位モデルよりちょっと速い

f:id:pslabo:20190129084335p:plain

なお、この Surface Go には RAD Studio 10.3 Rio Enterprise をフルインストールするという無茶振りをしてみたので、ストレージの空き容量がだいぶ減ってます。

この状態で iOS/macOS/LinuxSDKをPAServer経由で開発環境側にコピーすると、さらに足りなくなりそうなので、RAD StudioのインストールフォルダなどをNTFS圧縮しようかと考え中。