pslaboが試したことの記録

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

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

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


Windows PCから Active Directory で管理するユーザ情報などを検索する

手元のWindows PCからドメインユーザーの情報を確認する必要が出たので、いくつかの方法をメモしておきます。

GUI で行う方法

rundll32 経由で次のコマンドを実行すれば、ユーザ、連絡先、グループを検索するウィンドウが表示される

rundll32 dsquery.dll,OpenQueryWindow

コマンドで行う方法

net user ユーザ名 /DOMAIN のように実行すると、アカウントに関する情報を確認できる

日本語文字列に含まれるカタカナをひらがなに変換したい

単なるメモです。

アプリケーション内にロジックを組み込むなら、基本的に正規表現を使用しつつ、一部の文字はマッピングで対応させる必要がありそうです。このページにはJavaScriptの実装例があります。とりあえず参考になりそうなので例示していますが、内容をきっちり確認したわけではありません。 qiita.com

コマンドラインツールでやるならkakasi が使えます。 manpages.debian.org

文字コードは自動判定するようですが、文字列長が短いと判定を間違える場合があるので、明示的に指定しておくのがよいようです。

$ echo "漢字カタカナひらがな" | kakasi -KH -i utf-8
漢字かたかなひらがな

Excelに貼り付けた画像の背景色を透明にする

新型コロナウイルス感染防止対策としてテレワーク体制になっているのですが、形式上、印鑑を押印して作成しなければならない書類がいくつかあります。

しかし印鑑といいつつ実際には印鑑画像を押印欄に貼り付けるという運用が許容されたため、画像を貼ることにしました。

認印画像はこういうサービスで作れますが、背景が白で設定されているようなので、透過設定にして使う方法を調べました。 www.hakusyu.com

Excel に貼り付けた画像の任意の色を透明色にできる

  • Excel に貼り付けた画像を選択する
  • 「書式」⇒「色」⇒「透明色を指定」を選択し、対象画像で背景色にしたい箇所をクリックすると、透過画像になる。

macOSでZoomやSkypeを使おうとしたらカメラへのアクセス許可ができない状態になっていたので、強制的になんとかする

macOSではアプリケーションがカメラやマイクなどのデバイスにアクセスする際に、明示的にアクセス許可を与えることを必要としています。

この設定は「システム環境設定」の「セキュリティとプライバシー」から設定できます。 f:id:pslabo:20200610202505p:plain

たとえばカメラへのアクセスを行おうとしたアプリ一覧が表示されており、チェックされている項目はアクセスを許可したアプリです。 f:id:pslabo:20200610202343p:plain

しかし、あるときから、アプリ側がカメラアクセスを求めても、このリストに追加されなくなりました。本来ならば、このスクリーンショットで示すように、カメラアクセスが必要なアプリがこのように表示されていて、ここで権限をコントロールできます。しかしここに対象にアプリが表示されない限り権限を割り当てることができません。

本質的には、発生している問題を適切に修正して、システム環境設定のアプリから権限をコントロールできる状態に戻すべきですが、なにをどうしたら元どおりになるのか分かりません。

しかし、権限を管理する設定ファイルに関する情報はいくつかのページに書かれていましたので、これを参考にファイルを編集し、Webミーティングで必要なカメラアクセス、マイクアクセスを行えるようにしようと思います。

とりあえずZoomとSkypeのマイクアクセスとカメラアクセスを許可する。

これらの設定は ~/Library/Application\ Support/com.apple.TCC/TCC.db で管理されており、このファイルは sqlite3 形式のデータベースです。

したがって、このデータベースにSkypeやZoomのマイクアクセスやカメラアクセス情報を追加すればよいわけです。

sqlite3 でデータファイルを開く

sqlite3 でいきなりひらくことはできません。このファイルはSIP (System Integrity Protection) で保護されているため、編集するにはSIPを無効化する必要があります。

SIPについては Appleの開発者向けサイトのConfiguring System Integrity Protectionというページで説明されています。

SIPを無効化したら sqlite3 を次のように実行すると、対話的にSQLを入力可能なモードになります。

$ sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db

抜けるときは ctrl + D で抜けられます。実際に書き換えを行う前に TCC.db のバックアップをとっておき、問題があれば元にもどせるようにしておいたほうがよいと思います。

Skype や Zoom のカメラアクセス、マイクアクセスを許可する設定を追加する

Zoomの設定は下記2行のSQLを実行してください。

INSERT INTO access VALUES('kTCCServiceCamera','us.zoom.xos',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);
INSERT INTO access VALUES('kTCCServiceMicrophone','us.zoom.xos',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);

Skypeの設定はこちらです。

INSERT INTO access VALUES('kTCCServiceCamera','com.skype.skype',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);
INSERT INTO access VALUES('kTCCServiceMicrophone','com.skype.skype',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);

他のアプリでカメラアクセスやマイクアクセスを許可する

Zoom や SkypeSQL には、それぞれ us.zoom.xos や com.skype.skype というアプリ固有の識別子を指定していますが、これを対象アプリの識別子に置き換えてください。

この識別子はアプリ内のInfo.plistファイルに含まれる CFBundleIdentifier で確認できます。この情報は mdls コマンドで抽出できます。以下は LICEcap アプリのCFBundleIdentifierを取得する例です。

$ mdls -name kMDItemCFBundleIdentifier /Applications/LICEcap.app/ 
kMDItemCFBundleIdentifier = "com.cockos.LICEcap"

Zoomの場合は /Applications/zoom.us.app/ にインストールされており、次のように確認できます。

$ mdls -name kMDItemCFBundleIdentifier /Applications/zoom.us.app
kMDItemCFBundleIdentifier = "us.zoom.xos"

他のパーミッションを許可したい場合は?

こちらの記事とか見ていただくと、他のサービス名を調べられると思います。

qiita.com

ただし、サービスによっては、OS全体のTTC.dbに設定を追加する必要があります。

例えば、画面収録の権限はkTCCServiceScreenCapture で設定できますが、これは /Library/Application Support/com.apple.TCC/TCC.db に設定します。

これには管理者権限が必要なので、sudo 経由で sqlie3 を次のように実行します。

sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db"

以下の SQL は、Chrome , Skype, Zoom, DuetDisplay で画面録画を許可する設定です。これにより画面共有が行えるはずです。

INSERT INTO access VALUES('kTCCServiceScreenCapture','com.google.Chrome',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);
INSERT INTO access VALUES('kTCCServiceScreenCapture','us.zoom.xos',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);
INSERT INTO access VALUES('kTCCServiceScreenCapture','com.skype.skype',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);
INSERT INTO access VALUES('kTCCServiceScreenCapture','com.kairos.duetMac',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);
INSERT INTO access VALUES('kTCCServiceScreenCapture','com.cockos.LICEcap',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);

VMware WorkstationがHyper-Vと同居できるようになったので、Windows Subsystem for Linuxをアップデートする

ちょっと古い話ですが、2020/05/28にリリースされたVMware Workstation 15.5.5 からは、Hyper-Vと同居できるようになりました。

リリースノートの新機能の項目には、次の説明があります。

Windows 10 ホスト VBS のサポート: VMware Workstation 15.5.5 は、Hyper-V 機能(仮想化ベースのセキュリティなど)が有効になっている Windows ホストで実行するようになりました。

以下に、Hyper-V を有効にしたホストで VMware Workstation を実行するための最小要件を示します。

docs.vmware.com

Windows 10 2004 でWindows Subsystem for Linux 2 (WSL2) を利用するにはHyper-Vが必須ですし、Docker for WindowsHyper-V や WSL2 が必要なので、このアップデートはとてもありがたい。

ちなみに、現在の VMware Workstationの最新版は 15.5.6です。2020/06/09付けでリリースされています。

docs.vmware.com

WSL2への移行にあたり、行ったことは次のとおりです。

Linux カーネル更新プログラムをインストールする

docs.microsoft.com

仮想マシンプラットフォームの機能を有効化する

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

WSLの現在のバージョンを確認し、WSL2に移行する

wsl -l -v
wsl --set-version Ubuntu 2

デフォルトの WSL の設定を WSL2 にする

wsl --set-default-version 2

CSVファイルをExcelで読み込む際の文字化けに対処する

さまざまなシステムやアプリケーションのデータをCSV形式でエクスポートしてExcelで使用したいケースがありますが、Excelで開くと日本語が文字化けするケースがあります。

そこで文字化けの原因と対処方法を整理してみました。

文字化けする原因

CSVファイルをダブルクリックしてExcelで開く場合、CSVファイルの日本語がShift-JISであるという前提でファイルを開きます。

しかし最近のシステムやアプリケーションの中にはCSVファイルをUTF-8などの別の文字コードで出力しているケースがあります。そうすると文字コードのミスマッチが起きてしまい、UTF-8などの部分が文字化けします。

文字化けを回避する方法

CSVファイルを直接ダブルクリックして開きたい場合は「UTF-8(BOM付き)」のフォーマットにしておけば、Excelがファイルを開くときにShift-JISではなくUTF-8と判断するため、ダブルクリックで開いても文字化けしなくなります。

また、Excelを起動後に都度の操作での対応でもかまわない場合は、「データ」メニュー「外部データ読み込み」で読み込めば、元ファイルの文字コードを指定してファイルを開くことができます。

Windows で「UTF-8(BOM付き)」にする方法

「メモ帳」アプリでの保存時に「名前を付けて保存」を実行し、「文字コード」を「UTF-8(BOM付き)」にできます。

f:id:pslabo:20200608103051p:plain

macOS で「UTF-8(BOM付き)」にする方法

Visual Studio Code をインストールしている場合は、「エンコード付きで保存」を選択し、「UTF-8 with BOM」で保存できます。

その他のmacOS標準アプリケーションでは「UTF-8(BOM付き)」に対応していないと思います(調査不十分です)

データの出力側で考慮する方法

データを出力するアプリケーション側で「UTF-8(BOM付き)」で出力しておけば、クライアント側で何か操作する必要はなくなります。

出力時のフォーマットがUTF-8の場合はファイルの先頭に "0xEF0xBB0xBF" をつけるのが最も容易ですし、文字コード不定のデータを扱う場合は nkf --overwrite --oc=UTF-8-BOM のような方法で「UTF-8(BOM付き)」に変換する方法もあります。

発送状況が追跡できる安価な発送手段をしらべる

ちょっとした書類を送るときに、通常の手紙だと安く送れるかわりに配送中の追跡ができません。 しかし宅配便だと少々割高なので、もうちょっと安価に送れる方法を調べておきたいと思いました。

とりあえず郵便局のサービスだけまとめています。

種類 サイズ制限 重さ 金額 注意事項
クリックポスト 25cm x 34cm x 3cm以内 1kg以内 198円 ラベルは自前のプリンタで印刷が必要
ゆうパケット 幅、高さ、厚さの合計が60cm以内, 長辺34cm以内、厚さ3cm以内 1kg以内 250円 - 360円 郵便局で専用ラベルを買う
レターパック 専用封筒のみ 4kg以内 370円, 520円 専用の封筒を郵便局かコンビニで買う

他の運送業者だと、ヤマト運輸には宅急便コンパクト | ヤマト運輸 というサービスがありますが、郵便局のサービスに比べると少し割高感があります。

配送状況の追跡サービス付きで安価に発送するとしたら、郵便局のサービス一択になる感じですね。