pslaboが試したことの記録

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

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

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


MacOS版のESET Cyber Secutity Pro で仮想マシンの保存フォルダを検査対象から外す

VirtualBox, VMware Fusion, Parallels は次のの場所に仮想マシンを保存するので、これらのフォルダは検査対象から外しておきたい。

仮想化ソフトウェア パス
VirtualBox ${HOME}/VirtualBox VMs
VMware Fusion ${HOME}/Documents/Virtual\ Machines.localized/
Parallels ${HOME}/Parallels

設定方法は次のリンク先にありますが、シェル変数を含むパスは設定できず、絶対パス名を入力するか、またはUI上からパスを選択する必要があります。

これはちょっとめんどくさいので、ターミナルでls -d "${HOME}/VirtualBox VMs" のように入力して展開されたパス名を使用するのが良さげです。

eset-support.canon-its.jp

Linuxのディストリシューションを検出して処理を分岐する

Linuxディストリビューションを判定し、環境の違いをカバーするように実装する必要が出たので、検出方法を考えてみました。

/etc/ のファイルで検出する方法

多くのLinuxディストリビューションでは /etc/redhat-release にディストリビューション名が含まれているので、その部分だけを抜き出してみることにします。RHELの場合は実ファイルが存在しています。しかしCentOSなどの場合はcentos-relelease などへのシンボリックリンクが設定されているので、この違いによりRHELかどうかを判断できます。シンボリックリンクの場合はリンク先を readlink で確認できます。 いずれにせよ、*-release という名前が用いられていますので、-release の部分を削ることでディストリビューションを特定できます。

なおdebian, ubuntu の場合はファイル名が微妙に異なるので、これだけは別の方法で対応します。

これを次のように実装すれば、どのようなディストリビューションであっても名前は取得できます。

#!/bin/bash

# macOS などの Linux ではない環境については uname -s の結果を用いる
distro=$( uname -s )

if [ -e /etc/debian_version ] || [ -e /etc/debian_release ]; then
    if [ -e /etc/lsb-release ]; then
        distro=ubuntu
    else
        distro=debian
    fi
else
    if [ -L /etc/redhat-release ]; then
        # /etc/redhat-release がシンボリックリンクの場合は
        # readlink でリンク先ファイル名を取得
        cd /etc
        releasefile=$( cd /etc ; readlink redhat-release )
        distro=${releasefile%*-release}
    elif [ -e /etc/redhat-release ]; then
        # /etc/redhat-release がリンクではない場合は
        # RHEL とみなす
        distro=redhat
    fi
fi

echo $distro

あとは、判定したディストリビューションごとの分岐を実装すればOKです。

apt or yum コマンドの有無を判定する

判定の目的が apt or yum のコマンドによるパッケージインストールを行うことにあるなら、つぎのように apt の有無で処理を分岐できます。

which apt 2> /dev/null

if [ $? -eq 0 ]; then
        sudo apt -y update
        sudo apt -y upgrade
        sudo apt -y autoremove
        sudo apt -y install build-essential unzip jq
else
        sudo yum -y update
        sudo yum -y upgrade
        sudo yum -y groupinstall "Development Tools"
        sudo yum -y install unzip jq
fi

MacBookでVirtualBox, Parallels, VMware上のWindow10のパフォーマンスを比較する

私用のMacBookVIrtualBox + Windows 10 + VIsual Studio 2019 Community を使っていると、ParallelsVMwareよりも仮想マシン環境の挙動が劣る気がするので、ざっくり測ってみることにしました

比較バージョン

ソフトウェア バージョン
VirtualBox 6.1.12
Parallels Desktop 15.1.4
VMware Fusion 11.5.6

Parallels については2020年8月時点でParallels 16 (macOS Big Sur対応) がリリースされていますが、macOS Catalina 10.15.x までの対応版で揃えるためにParallels 15を使用しています。

Windows10 は Version 2004 を使用しました。

物理マシンのスペック

MacBook Pro 13inch Retina 2013 Intel Core i5 2.6GHz Memory 8GB SSD 1TB(購入時の500GB構成から交換済み)

仮想マシンの環境設定

メモリ = 2GB CPU = 1プロセッサ 1コア ディスプレイ = フルスクリーン表示で 1440x900, 100%スケール(Retinaの解像度を使用しない)の構成となるように設定

VMware Tools などの仮想マシン向けドライバやツールをインストール。 VirtualBox については Extension をインストール済み。

パフォーマンス計測と比較

管理者権限で winsat.exe formal を実行し、結果を比較。

結果の画像化はこちらのサイトを利用。 webmarks.info

実行結果

結果を見ると、プロセッサとメモリ性能は大差がありません。

したがって全体的な使い勝手に影響を及ぼすのはグラフィックスとディスクI/Oです。これを比較してみましょう。

VirtualBox 6.1

f:id:pslabo:20200813093142p:plain 一見、悪くないように見えるが、ディスク性能が他より劣ります。おそらくこのために仮想マシンで重めの作業(開発ツールを実行するなど)を行うと、全体的にもっさりする感じがあります。

Parallels Desktop 15

f:id:pslabo:20200813093123p:plain VirtualBox, VMware に比べてディスクI/Oの数値がよいので、使用時のストレスが少ないと思います。

VMware Fusion 11

f:id:pslabo:20200813092859p:plain グラフィックの数値が他にくらべて少し劣りますが、派手な描画を行わないかぎり、あまり気にならないと思われます。むしろ、ディスクI/OがParallelsより遅いことが使い勝手に影響が出そう。

結論

開発環境を実行する場合は VirtualBox ではディスクI/Oが力不足のように感じますので、Parallels or VMware Fusion を選んだほうがよいようです。

ParallelsAmazonでライセンスのダウンロード購入が可能ですね。macOS Big Sur 対応の Parallels 16 は2020/8/21から発売開始。 amzn.to amzn.to

VMware FusionVMware社のオンラインストアから直接購入となるようです。ただし macOS Big Sur 対応版は未リリース。 www.vmware.com

iPhone/AppleWatch向けのモバイルPASMOがリリースされる時期を推測してみる

なんとなく思うのは、モバイルPASMOiPhone向けサービス開始時期は2020年9月~10月あたりですかねえ。

PASMO協議会によるとモバイルPASMOは2020年内に対応、というリリースが出ました。 https://www.pasmo.co.jp/pressrelease/pdf/apple_PressRelease_August6%2C2020.pdf

日付に関する情報が全くないのは、iOS14またはiOS14.1のリリースに合わせてサービスインするからではないかと推測しています。

モバイルSuicaのケースを例示すると、2016年にiPhoneで利用できるようになったときは、iOS10のリリースから1カ月遅れた2016年10月25日にサービス開始しました。そしてこの日はiOS10.1のリリース日でもあります。Apple PayもiOS10.1から利用できるようになりました。

つまりSuica相当の決済機能をiOSに追加するにはiOS側のアップデートが必須であり、モバイルPASMOiOS向けにリリースするためには、単にアプリを作ればよい訳ではなく、iOS側の対応も必要になるだろう、と推測されます。

iOS14は過去のリリースと同様のスケジュールだと2020年9月中頃にリリースされると思いますので、もっともはやいタイミングの場合に、iOS14のリリース日からモバイルPASMOもサービス開始。ただしiOS14.0で確認された問題を修正したiOS14.1に合わせてモバイルPASMOが開始されるという推測も十分に成り立つ。

そんなわけで、2020年9月~10月ごろに来るのではないかと思われるモバイルPASMOのサービスインを温かく見守る感じです。

DelphiのWindows API向けユニットからAPI名を抽出する

古いDelphiアプリケーションでWindows APIを直接実行している箇所を調べる必要が出てきたので、Windows API向けのユニットから function または procedure として宣言されている箇所をとりあえず抜き出してみることにした

ユニットファイルの場所

ここらへんにあります

C:\Program Files (x86)\Embarcadero\Studio\??.??\source\rtl\win

抽出方法

awk の下記スクリプトを、

#!/usr/bin/awk -f 

BEGIN {
    FS="[ \t(;:]"
}

$1 == "function" || $1 == "procedure" {
    apiname[$2]++
}

END {
    for (key in apiname) print key | "sort"
}

つぎのように実行すると、Windows API を含むリストが生成される

$./searchWinAPI.awk *.pas
ARGBToColorRef
AbortDoc
AbortPath
AbortPrinter
AbortSystemShutdown
AbortSystemShutdownA
AbortSystemShutdownW
AcceptEx
AccessCheck
AccessCheckAndAuditAlarm
AccessCheckAndAuditAlarmA
AccessCheckAndAuditAlarmW
AccessCheckByType
.
.
.

既存のプロジェクトに対して、このリストのキーワードが含まれるかどうかでAPIの利用状況を推測できるだろうと考えているところです。

Microsoft All-in-One Media Keyboardのドライバダウンロードが分かりづらい

Raspberry Piや小型PCの設定時にはキーボード+トラックパッドの一体型キーボードであるMicrosoft All-in-One Media Keyboardを使っています。 amzn.to

しかしWindows向けの「マウス キーボード センター」をダウンロードしようとしたところ、ちょっと分かりづらかったのでメモとして残します。

わかりづらい理由

Google検索で "All-in-One Media Keyboard ドライバ" で探すと、次のようなページがリストアップされます。

https://www.microsoft.com/accessories/ja-jp/d/all-in-one-media-keyboard

https://support.microsoft.com/ja-jp/help/4034170/which-devices-are-supported-by-microsoft-mouse-and-keyboard-center

ところが、1つめのページでWindows 10向けの日本語ドライバをダウンロードしようとしても、404 Not Found のページが表示されてしまい、ダウンロードできません。

2つめのページから辿ると 2014年リリースの Mouse and Keyboard Center 2.3 のダウンロードページにたどり着きます。ちょっと古すぎるので、おそらくこれではない。

ではどうすればダウンロードできるのか?

1つめのページでドライバの言語は「英語」を選択すると、なぜか日本語版のドライバがダウンロードできます。しかもダウンロードページに表示されていた、バージョン11ではなく、バージョン12がダウンロードされます。

または、"マウス キーボード センター ダウンロード" でリストアップされる、こちらのページからもバージョン12がダウンロードできます。

https://support.microsoft.com/ja-jp/help/4051843/accessories-mouse-keyboard-center-download

Windows XPをいまさらインストールした時の記録

普段使用する作業環境とは別のPC上の仮想マシンで古い環境のテストを行うことになったので、Windows XP仮想マシンにインストールしたら、意外に手間取ったので、手順をログとして残します。

  1. Windows XP with Service Pack2 のisoから新規インストール(Visual Studio Subscriptionでダウンロード)
  2. Windows XP Service Pack 3 の iso からサービスパックをインストール(Visual Studio Subscriptionでダウンロード)
  3. Windows XP向け Internet Explorer 8 をインストール(Visual Studio Subscriptionでダウンロード)
  4. Windows Updateの手動実行を試みるが、これは失敗(信頼済みドメインhttp://*.microsoft.com/を追加したり、信頼済みドメインのセキュリティ設定を「低」にしても状況変わらず
  5. セキュリティセンターかWindows Updateを自動更新に設定し、確認時刻を直近の時刻に変更して放置すると、何かがアップデートされた(記録をとり忘れました)
  6. Windows Update の手動実行を再度試みると、今度は実行できるようになったので「高速」を選択して実行すると、"Windows Update" がアップデートされた
  7. さらにWindows Updateを実施しようとすと「正規Windowsの検証」が表示され、先に進めない。
  8. ライセンス認証を電話認証で実施
  9. 再度Windows Updateを実行すると、問題なく進めることができるようである(ここから先は現在作業中)