WPP
VS Code の設定がおかしくなった時

気に入って数年使っている VS Code ですが、たまに1つのプラグインのロードに失敗したっきり他のプラグインもアクティブにならないという困った状態になることがあります。

『設定』の Sync 機能で最新の状態を各 PC で同期できるようにしているのですが、最新状態にしても復帰できないことがありました。

アプリを再インストールしても状況が改善しません。

『設定』を同期している前提ですが、一度PC の設定データを削除すると正しいデータが降ってきて機能が復帰する場合がありあます。

設定の場所

Macの場合:
/Users/ログインID/Library/Application\ Support/Code/User

Winの場合:
%appdata%\code\User
または
C:\Users\ログインID\AppData\Roaming\Code\User

回復方法

通常は、上記フォルダの settings.json を消すと正しい settings.json がダウンロードされて正しく動きますが、user フォルダのいずれかのデータがおかしくなっている時はこの方法では解決しないので、User フォルダごと削除します。

前提にも書いていますが、同期していない場合はそもそも設定のダウンロードができないのでご注意下さい。

簡単にいうとクリーンインストールの方法に近いことをすることになります。

android端末をRTSPカメラサーバにするアプリ

仕事の関係でRTSPサーバをいくつか調べたので、リストアップしておく。

監視カメラ、NVR に関連するシステム周りを調べる必要があったのですが、RTSP は監視カメラと NVR間のストリーミングを流すプロトコルとして使われているようです。

つまり、Android 端末が RTSP を吐ければ監視カメラとして使用できるわけです。

世の中には 2 台のスマホに同じアプリを入れて一台はカメラ、一台はレコーダとするものが沢山ありますが、これらも内部では RTSP を実装しているものが多いと思います。

今回は、agentDVR とか frigate を NVR として使いたいのでアプリにロックインされるタイプのものは不可です。世間ではその手のものの紹介は沢山あり自分が調査に手間取ったのでさらします。

  • IP Webcam
    黒いレンズの円形アイコン
  • NT RTSP Onvif
    水色のガン型監視カメラアイコン
  • IP Camera
    オレンジの監視カメラアイコン、結構いい感じ
  • RTSP Security Camera
    犬のアイコン試した限りでは速度が出ないかも
  • RTSP Camera Server Pro
    試用モードだと数分のみと制限がきついからあまり試していない

あくまで個人的な感覚ですが、単純に上から順に好印象な順です。

アイコン貼るの面倒なので、説明で茶を濁していますがどうしても似たような名前が多いのでアイコンの説明を入れています。

これらは全部 agentDVR に接続できました。長時間稼働とかスタビリティとかはご自身でご判断してください。

Alfred は UI も素敵だし使いやすいが同アプリ間に閉じてるんだよね。

拡張版ls: exa から eza へ

python 環境がおかしくなって、brew doctor してみるとexa がメンテナンスされてないからリプレースしろとのお達しがあり、eza をインストールした話。

exa はざっくりいうと、いい感じの ls ってとこでしょうか。

実際の brew のメッセージはこんな感じです。

$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: Some installed formulae are deprecated or disabled.
You should find replacements for the following formulae:
  exa
  ..... その他もろもも

“exa replacement” とか “exa alternative” とかで検索すると見つかったのが eza。

$ brew install eza でインストールしてみましたが、exa とあんまり変わらないっぽい。

exa は “A modern replacement for ls.” を標榜しているのですが
他方、新しい eza は “A modern, maintained replacement for ls.” とメンテナンスされていることを協調しています。修正を待てなかったユーザーたちの渇望感が伝わってきます。

eXa の2つ先だから eZa なんだろうけど、ちょっと覚えにくい。

参考

eza-community/eza: A modern, maintained replacement for ls

Netgear スイッチを見つけるツール

自宅では netgear の PoE スイッチを使っているのですが、これは IPアドレスが振られて VLAN やらいろいろ機能があるらしいです。まあほとんど使いこなしていないのですが。。。

で、ずぼらに管理しているのでその IP アドレスを忘れてしまった時などに見つけてくれるツールが公式から出ています。

Switch Discovery Protocol | Product | Support | NETGEAR

これ使うと簡単に見つけ出すことができます。ホントをいうとルータで固定アドレス割り当てているのでそこから見つければいいのですがちょっと面倒なんですよね。

参考

Switch Discovery Protocol | Product | Support | NETGEAR

Xiaomi Mi Pad 4 に PixelExperience をインストール

何処かで中古 + カスタム ROM (LinegeOS) インストール済みで買った Mi Pad 4 がイマイチ調子悪いので、OS を入れ替えてみた。

XDA に行くと PixelExperience がオフィシャル版であるっぽいのでそれにした。オフィシャルだと多分 OTA が効くのでアップデートが楽なのでそうした。こだわりがあるならアンオフィシャルの他の ROM でももちろんいいと思う。

手順

公式通りにやればいいので簡単。

  1. Recovery ダウンロード & fastboot flash recovery
  2. リカバリーに入る
  3. Apply update から sideload を選択し
  4. PC から adb sideload を実行する

注意しなければならないのは、bootloader アンロックしなきゃいけないが、一ヶ月くらいかかる。やり方は調べて下さい。

あと、TWRP とかのサードパーティ製リカバリーだとインストールできないので注意が必要。

まあ、説明みてキーワードを拾い読みすれば十分間違えないくらい簡潔な説明になっているから大丈夫でしょう。

参考

xapk ファイルを adb でインストール

さて、相変わらずアンドロイド端末をいじる日が続いていますが、APKPure などからダウンロードした .xapk ファイルを ADB コマンドでインストールする話です。端的にいうと install-multiple っていうアクションがあるよってことです。

今扱っているアンドロイド風端末は、Google Play が入っていません少し特殊なデバイスなので余計なものが一切入っていないです。あるのはいくつかのボタンと画面くらいです。

Google Play が入っていないということはストアからアプリをインストールできないということですが、それはちょっと困るので APKPure から落としてきました。

APKPure アプリをインストールすればいいのですが、今回はパスしてインストールしたい。

方法

参考にある通り、.xapk は zip ファイルなんだそうです。(file コマンド? とかでわかりそうですね。)なので展開すればインストールできるようです。

$ unzip -d tmp original.xapk
$ cd tmp

# 展開の結果、aa.apk bb.apk cc.apk ができたとするとこんな感じになる
$ adb install-multiple aa.apk bb.apk cc.apk

余談ですが、.xapk になっているタイプのアプリを Apk Extractor でapk を抽出しても上手くきませんでした。あまり追求してないので、もしかしたらやり方があるのかもしれないですがアプリが複数の apk 構成されているという情報がとれないのかもしれません。

参考

How to install xapk, apks, or multiple-apks via adb? – Android Enthusiasts Stack Exchange
ここにずばり書いてある通りの内容です。

Android 端末と rsync する

android 端末からファイルをコピーするには adb pull でファイルを抜き取れますが、毎回全コピーするのはちょっといやです。

linux 系なら rsync コマンドが使えますが android 端末には入っていないようです。そもそも rsync はローカルファイルファイルシステムや sshfs 位しか対応していないはずで adb 経由では使えなそう。

github に Better ADB Sync というのがあり試してみる

インストール

個人的に pipenv を使っているので pipenv ベースで。readme では pip でグローバルインストールしている

$ pipenv shell
$ pipenv install BetterADBSync

実行

ほぼ adb push / pull と同じ感じなのですぐにイメージはつかめると思う。

# アンドロイド から PC へ同期
$ pipenv run adbsync pull /sdcard ./sd

# PC から アンドロイド へ同期
$ pippenv run adbsync push ./sd /sdcard

グローバルインストールするか、パスを通せば pipenv run の部分は不要になります。

参考

jb2170/better-adb-sync: Completely rewritten adbsync with –exclude

fstabを編集して再起動する前に確認する方法

タイトルまんまだが、/etc/fstab を編集してファイルシステムのマウント構成を変える前に必ずしたほうがいいことなので、自分用にメモ。

何故これをするか ? というと、fstab 内容に問題があると正常起動できなくなることがほとんどだと思う。そうなるとそこから復旧するのは結構面倒くさい。だから絶対やったほうがいい。

# fake で設定があっているか確認
$ sudo mount -fav

# 実行
$ sudo mount -a

常識だとは思いますが、毎回調べているので。。。

wordpress の投稿画面のタイトルフォントが大きすぎ

このエントリは完全な独り言です。

このブログは wordpress 使用しているのですが、投稿画面のタイトルのフォントがバカでかくていつも閉口しています。あ、多分ブロックエディタっていうの? WYSWYG っぽい画面です。普通はこんなことにならないのか ? みんなどうしているのか ?

検索してみると子テーマを作るのが王道っぽい。直接 function.php を書き換えるのが簡単だけど邪道ってことなのか。めんどくさ。

便利ではあるけどいちいち面倒なのが wordpress の嫌いなところ。なやましい。次は子テーマのメモかな。

iPhone ショートカットでPhilips Hue go を1発で on/off する

模様替えをして仕事部屋から間接照明が無くなった。夜間に蛍光灯の明るすぎる照明を使用するのが好きではないということを口実にHue go というポータブルタイプの照明とゲートウェイを買いました。

スマホアプリからゲートウェイを通じて照明のオン / オフ等できるのですが、なんていうのか 1 操作でオン / オフすることができません。(説明が下手ですがテレビリモコンの赤い電源ボタンのような操作がしたかった。)
ので iPhone のショートカットアプリでレシピを作ったという話。

手っ取り早くって方は icloud で誰でも共有にしてみたのでどうぞ。(このやり方が正しいのかはわからん。)

このショート画面をホーム画面に貼っておけば 1 タップでオン / オフを繰り返すスイッチのように操作できます。

共有リンク
hue sw: https://www.icloud.com/shortcuts/382b529dc7cd4d9595208cfbb6212f77

他のショートカット解説サイト見てても思うんですが、画像以外で説明のしようがないところが結構つらい。

さきに全容のキャプチャを貼っておきます。

01
02
03
04

画像の切替え部分で重なりがあるがそこはないものとして考えて欲しい。

やっていることは簡単で hue.txt  というテキストファイルの中に現在の点灯状態を ture (点灯) / false (消灯) として入れている。

ショートカット起動時に hue.txt  を見て現在状態の逆をしている。

ポイントは、hue.txt が存在しない時は消灯状態と判断してその後の基準にしている。

なぜこんなまどろっこしいことをしているかというと少なくとも iPhone 版の Hue アプレットでは、照明の現在状態を取得することができないみたいで
「状態の記録がない 」=> 「状態にかかわらず点灯動作」=> 「点灯状態」という処理で状態を追跡できるようにしている。

勘の良い方ならすぐに気づくかもしれませんが、プログラミングになじみのない方にはとっつきにくい考え方かもしれません。こういうつまらないテクニックの部分は将来的にどんどん AI が代わりに作ってくれるようになるのでしょうね。