前提

  • Debian 11 Bullseye
  • x86_64 (おそらくアーキテクチャに依存しないと思われる)

課題

  • 日本語ファイル名のファイルをShift-JISエンコードで作成されたZIPファイルをunzipで解凍すると日本語ファイル名が文字化けする。

unzipを使う場合

Linuxの場合

1
unzip -O sjis archive.zip

確かにこれは動く… Ubuntuなら。
Debian Bullseyeのunzipはバージョンが古く(6.00)このオプションが実装されていない。testingとかから持ってくれば更新されるかもしれないが、正直面倒。
ようするに、unzipを使う限り解決策がなさそう。

macOSの場合

macOS venturaの場合も、同様にunzipのバージョンが古いが、Homebrewで新しいものをインストールできる。

1
2
3
4
brew install unzip
(ここで、OSに含まれているユーティリティなので優先して使われるようにはしません。みたいな警告がでる)

/usr/local/opt/unzip/bin/unzip -O sjis archive.zip

p7zipを使う

別案として、p7zip(7zip)を使用するという手段がある。
p7zipとp7zip-fullがあるが、特に何も考えずにp7zip-fullを選択すれば良い。

1
2
sudo apt install p7zip-full
7z x archive.zip

当方の環境では、localeに en_US.UTF-8 を指定しているが、Shift−JISを自動判定して展開してくれた。7zコマンドのバージョン等は以下の通り

1
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz (306A9),ASM,AES-NI)

ちなみに、macOSの場合も Homebrewで p7zip をインストールすることができる。(-fullはないが、おそらくfull相当と思われる)

それはなに?

  • ZabbixからSlackにWebhookを送る時に書くJavascriptで使えるオブジェクト。
  • その名の通りhttp(s) にリクエストを投げる。

代替は?

  • HttpRequest

変更点は?

  • CurlHttpRequestでは、 AddHeader のようなメソッド名だったが、HttpRequestでは、addHeader のように小文字始まりに変更されている
  • CurlHttpRequestでは、 Status で結果が取得出来たが、 getStatus() に変更になった。

対象バージョン

  • Zabbix 6.0 で廃止、5.4でdeprecated だった模様。

資料

教訓

  • Zabbixをバージョンアップした後は、通知が飛ぶかテストした方が良い。
  • むしろ、シェルスクリプトからcurlを呼んだ方が安定するのでは…と思ったがdockerコンテナだったりするとそれはそれで面倒なことになるので悩みどころ(なお、公式のdockerイメージにはwgetはあるが、curlはない)
  • なお、うちは… アラートが飛ばないことに気が付かずに数ヶ月経過していました。

TL;DR;

何ができるの

  • ポモドーロタイマー
  • Philips Hueと連動して色を変える

メニューにある機能が全てなので画像にします。
メニュー

どう使ってほしいか

  • そのまま使えるならとても嬉しい。
  • 人によって必要なものは違うので部品取りして再構成して使ってほしい。
  • ちなみに、アイコンは別ライセンスなので注意(フリーアイコンなので宣伝表記を入れれば無料で使用可能)

裏側

動機

  • 本当は、TickTickのアプリのポモドーロタイマーをそのまま使いたかった。それ使えば自動的にログが記録されるし、時間も記録されるし良いこと尽くめ。
  • だけれども、なんとなくPhilips Hueの色をポモドーロ中とかゾーン入った時は色を変えたくなって、自動的に連動するアプリを作りたくなった。
  • ステータスバーに常駐するアプリって作るのが大変(と昔見た)が、rumpsを使えばあっという間に作れるということがわかって試したくなった。

今後

  • rumpsはとてもかんたんだが、コレ以上の発展性がない
  • 例えば、設定画面のUIを作るみたいな機能はおそらく無理。ウィンドウに入力項目を2つ以上持てなそう。
  • 設定画面を出すのを別途tkinterとかwxPythonを使って作ってそれを呼び出す。という手を使えば良い気がするけれども…
  • メニューバーのアイコンをクリックするといい感じな画面が出る。みたいなのは本当に無理
  • もっとリッチなUIを表示するためにFlutterに移行するつもり。Flutter触ったことないけど、とりあえず最低限のコードを見てみたら、Dartは割とJavaっぽくて馴染めそうだったので頑張る。

実装予定

  • 普段、マルチモニタで作業しているが、再起動等をするとウィンドウの配置がめちゃくちゃになってしまって辛いので、ウィンドウの配置を復元する機能をつけたい。
  • ウィンドウの配置等を保存、復元するのはPythonではなんとかできそうだけれどもFlutterだとどうするの?になりそうなので、pythonスクリプトにできるように今のアプリに機能追加してしまおうと考えている。

蛇足

  • python app.py だと動くのに、py2appすると動かないというのに悩んだ。
  • 作られた.appを見るとなんかpythonのライブラリ足りてないような…?
  • ということで https://github.com/yakumo-saki/worktools/blob/main/setup.py setup.pyでゴニョゴニョ頑張った。

蛇足:具体的な機能

Start Pomo / Stop Pomo

ポモドーロタイマーの開始・停止。一時停止は停止したまま忘れがちなので実装していない。
Hue Bridgeに接続されていて、Set Light color on Pomo/Zone が有効なら自動的にHueライトの色が変更される。

Start Zone / Stop Zone

Zoneは無制限な集中モード。ポモドーロと違って時間のカウントはしない。(本当はカウントアップタイマーにしようと思っていた)
その他はポモドーロタイマーと同じ。

Hue Override

強制的にHueライトの色を変更する。Set meetingTurn off 以外は特に使う必要はないはず。

Others

Show lights

設定ファイルに指定するライトのIDを調べるための機能。

Preferences

作り直しが必要になったキッカケ。 何の機能もない。

About

(今見たらバグっていた)いわゆる普通のAbout画面。

まえがき

  • 今回の話は nginxinc/nginx-ingress の方
  • Nginx Ingress Controllerには nginxinc/nginx-ingress 版 と k8s版があり、どちらも同じベースだが結構違う(のではっきりさせておかないと混乱する)
  • helmを使ってインストールしている
  • nginxinc/nginx-ingressのバージョンは 3.0.1。2.4でも同じだと思うが新し目の機能なようなので新しいバージョンを使った方がよい
  • SSL証明書はcert-managerと連携してcert-managerに取得してもらう(なのでcert-managerは先に設定されている必要がある)

完成形

とやかく言う前に完成形はこちら。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
name: nicename
spec:
host: nice.example.com
tls:
secret: nicename-tls
cert-manager:
cluster-issuer: "letsencrypt-prod"
common-name: "nice.example.com"
redirect:
enable: true
upstreams:
- name: web
service: niceservice
port: 8080
routes:
- path: /
action:
pass: web

ハマったポイント

enableCertmanager=falseのときのエラーメッセージ

1
VirtualServer default/virtualservername was rejected with error: spec.tls.cert-manager: Forbidden: field requires cert-manager enablement

nginx-ingressのdeploymentの起動オプションに --enable-certmanager=false が指定されている(デフォルト値)

解決方法

helmを使っている場合は以下のコマンドで変更可能。
手動でdeploymentを投入しているのであればそれを修正すればOK

1
helm upgrade prod nginx-stable/nginx-ingress --set controller.enableCertManager=true

蛇足

設定できる設定値

https://github.com/nginxinc/kubernetes-ingress/blob/main/deployments/helm-chart/values.yaml

ドキュメント

https://docs.nginx.com/nginx-ingress-controller/configuration/virtualserver-and-virtualserverroute-resources/#virtualservertlscertmanager

helmによるアップグレードの方法

知らなくてぐぐったのでメモ

1
2
3
4
(以前にこれをやっていない場合に限る。ローカルのPCに対する設定なので何度やっても問題はない)
helm repo add nginx-stable https://helm.nginx.com/stable
helm repo update
helm upgrade prod nginx-stable/nginx-ingress --set controller.enableCertManager=true

VirtualServerにするとなにか良いことがあるの?

Ingressでも同じことは可能なはず。しかし、文法的に厳しい部分がある(annotationに無理やり指定するのでエラーがよくわからない感じになるなど)
が、VirtualServerならわざわざCRDを作っただけあって割と自然である。

前提

  • 2023/1/27現在

準備

これを書いている時点ではプロジェクトトークンは不可という記述がある。

1
現在 API v2 でサポートされているのは パーソナル API トークン のみです。 プロジェクトトークン は、現在 API v2 ではサポートされていません。

https://circleci.com/docs/ja/api-developers-guide/

curl

1
2
3
4
5
CIRCLE_TOKEN=1234567890abcd
curl -f -Ss -u $CIRCLE_TOKEN: --request POST \
--url https://circleci.com/api/v2/project/github/username/projectname/pipeline \
--header 'content-type: application/json' \
--data '{"branch":"master"}'

ポイント1
-u $CIRCLE_TOKEN: の最後の : を忘れない(忘れると、パスワードを聞かれる)
-u はBASIC認証のユーザー名とパスワードを username:password 形式で指定するため。

ポイント2
APIのURLは、Webでプロジェクトを開いたときのURLを見ながら入れる(ex: https://app.circleci.com/pipelines/github/username/projectname)
ドキュメントに従うと、githubの部分がghと略されているので注意

ポイント3
CircleCIのAPI結果はステータスコードで成否判定ができるので curlに -f をつけておくとリターンコードが変わってくれて便利。応答のJSONにmessageが入っているので理由が知りたければそこも見る必要がある。

蛇足

https://circleci.com/docs/api/v2/index.html#operation/triggerPipeline

上記にあるcurlの例がどうも正しくないようで動作しなかったので書いた。

更新履歴

  • 20230221 Alfred削除
  • 20230216 Rectangle追加。WindowsでいうAeroSnap機能。
  • 20230202 Vanilla削除。メニューバーのアイコンを消す必要はないかなと思った
  • 20230226 Raycast追加。単位変換とかが便利でSpotlightから乗り換え。
  • 20230315 Hidden Bar追加。結局メニューバーのアイコンを隠したくなった。

環境

  • macOS Monterey (12.6.2) → Ventura (13.2.1)
  • Intel mac (iMac 2015 Late)
  • 本記事は使いながら更新している

アプリのインストール

手動で入れるもの

MacBookを使っていた時はメニューバーのアイコンが多いのが嫌だと感じていたがiMacだとそうでもないのでVanillaはやめた Hidden Barを入れた。アイコンが増えてきてやっぱりちょっと邪魔だった。
Alfredを使わなくてもSpotlightの検索対象から不要なものを削除することで十分使えるのでAlfredはやめた。(20230315 Raycastを入れた)

App Store から入手

  • Runcat (App Storeにログインするのも兼ねてApp Storeから入手)

フォント

Homebrewで入れるもの

コマンド

  1. brew install mas
  2. brew install chezmoi
  3. brew install git
  4. brew install fish
  5. brew install python
  6. brew install openjdk@17
  7. brew install golang
  8. brew install direnv
  9. brew install gnu-sed
  10. brew install kubectl kustomize k9s
  11. brew install rectangle
  12. brew install discord
  13. brew install raycast
  14. brew install 1password

解説

  1. Mac AppStore-cli でmas。これでMas App Storeのアプリをコマンドラインからインストールできる。
  2. .configを管理するツール。 chezmoi init リポジトリ -> chezmoi apply で展開
  3. git
  4. fish shell
  5. python
  6. openjdk 17 を指定しているがこれはVSCodeのJava拡張が要求しているため
  7. Golang
  8. direnv ディレクトリに.envファイルがあると自動的に環境変数が展開される
  9. Gnu sed. macosのsedはBSD系なので想定と異なる動作をすることがある。
  10. kubernetes周りのCLIや管理ツール。
  11. Rectangleは、WindowsのAero Snap機能のmac版。Magnetと同じ
  12. あまり使わないが使うときもあるので念の為
  13. Raycast Alfredのようなランチャー
  14. 1password パスワードマネージャ

masで入れるもの

数字はただの記述順。(コマンドとそれに対応するアプリ名は一致する)

コマンド

  1. mas install 1295203466
  2. mas install 803453959
  3. mas install 1352778147
  4. mas install 425424353
  5. mas install 600925318
  6. mas install 1452453066

アプリ名

  1. MicrosoftRemoteDesktop シャットダウン時にこれが原因でキャンセルされるので取りやめ
  2. Slack
  3. Bitwarden (これは無料アイテム用のパスワードが保存されていないと失敗する。その場合はGUIで入れる)。(20230315) 1passwordに乗り換えた。
  4. The unarchiver
  5. Parallels Client。RDP接続を行うアプリ
  6. (20230315)Hidden Bar。メニューバーのアイコンを隠す。

アプリ&システム設定

XDG_CONFIG_HOMEの設定

macOSではデフォルトで ~/Library/Application\ Support/ というなかなか厳しいパスに設定されている。一部のアプリケーションはXDG_CONFIG_HOME環境変数を見てくれるので set -Ux XDG_CONFIG_HOME ~/.config(fishの場合) をセットする

シェルの変更

brewでインストールしたfishを標準シェルにするためにシェル一覧に追記

1
echo $(which fish) | sudo tee /etc/shells

シェルを変更

1
chsh -s $(which fish) $(whoami)

マウスポインタのサイズ

標準では小さすぎるので大きくする。
設定→アクセシビリティ→→ディスプレイ

画面写真

キーリピート周りの調整

画面写真

標準の時計に秒表示を追加

システム環境設定→Dockとメニューバー→時計

  • 日付を表示: 常に (これをしないとVanillaの表示に無駄なスペースができる)^1
  • 24時間表示にする
  • 時刻内の : を点滅させる
  • 秒を表示

:::details defaultsコマンドを使った手順(GUIからできるので不要)

この表示形式で 1月23日(月) 0:12:34 とはならない気がするが、なぜかこれで期待した表示形式になる。本当によくわからない。

1
defaults write com.apple.menuextra.clock "DateFormat" -string "\"EEE d MMM HH:mm:ss\""

他のアプリを入れて表示形式をいじるなら…

Day-O 3 とか timestamp とか を入れるなら
以下のコマンドで時計をアナログ形式にできる(とても小さくなるので、時計が邪魔になりにくい。Big Sur以降、完全に消すことはできない模様)

1
defaults write com.apple.menuextra.clock.plist IsAnalog -bool true

:::

iTerm2 の設定

プルダウンコンソールとは

こんな感じでホットキーを押すと画面下からターミナルが出てくる。大変便利で、個人的にどのOSでも手放せない。LinuxならGuake、Yakuake。WindowsならWindows Terminalが対応している。

プルダウンコンソールの設定

Preferences -> Keys -> Hotkeys -> Create a Dedicated Hotkey Window…
Hotkey: F1

  • Pin Hotkey window
  • Animate showing/Hiding (アニメーションするより一瞬でパッと表示されてほしい)
  • Floating window

これを行うとProfilesにHotkey WindowというProfileが作成される。
Hotkey Window(というProfile)のWindowタブ

Transparency: 20
Style: Full-Width bottom of screen (画面上ではなく画面下に出るようにする)
Screen: Screen with cursor

普通のターミナルにショートカットキー割り当て

(20230315) この設定をすると同じウィンドウが再利用されるので使用をやめた。

Preferences -> Profiles -> default

Keysタブの一番下、

  • A hotkey opens a dedicated window with this profile
    Configure Hotkey Window

Hotkey: Opt+Return

  • Pin hotkey window
  • Automatically reopen
  • Animate showing and hiding
  • Floating window

ショートカット

iTerm2を起動するグローバルショートカット

アプリケーション一覧にある、ショートカット(標準搭載) というアプリを使って Opt+Enter にiTerm2を起動するショートカットを割り当てる。
VSCodeなど一部のアプリがフォアグラウンドになっているとこのショートカットは効かないことがあるが、とりあえずこれで妥協している。

最初に

  • これはポエムです
  • WindowsのOSだけでなく開発に使うツールも含む

前提

  • Windowsを開発用のOSとして使用する
  • 開発ターゲットはWebアプリであったりPlatformIOであったりはするが、どれも非Windows。

けったいなところ

ファイル名の大文字小文字が区別されない

  • MyLib.h というファイルがあったとして #include "mylib.h" と書いてしまっても通ってしまう。
  • MyLib.h と mylib.h ファイルがあるとどちらが読み込まれるかわからない

ちなみに… fsutil を使うとフォルダ単位で大文字小文字を区別させることができるようになりますが、ドライブまるごと大文字小文字区別して欲しい。というのはできません。

※ これはmacOSも同様です。が、ボリューム単位で大文字小文字を区別させることができます。

powershell/cmd.exe の文字コードがUTF-8ではない

UTF-8にすることも可能らしいですが互換性の問題でデフォルトでは各国の文字コードです。
そのせいでクロスプラットフォームなアプリが文字コードの問題で落ちたりします。
具体例は、PlatformIOは執筆時点ではEncoding Errorを出してコンパイルがコケます。
正直、UTF-8にしても良いような気がします
類似のけったいポイントとして改行コードがCRLFである。というのもあります。
以前はmacOSがCRだったのでまだ意識されていましたが、LFに変更されたので割と意識されにくくなっているような気がします。
git config --global core.autocrlf false を忘れると自動変換されしまうかも)

ファイルの属性が他OSと互換性がない

非WindowsなOSで touch test.sh && chmod +x test.sh したファイルをgit commit / push して、そのリポジトリをWindows環境で git clone すると何もしていないのにファイルに差分がある。と表示されてしまう。(gitは実行可能属性を保持するが、Windowsに該当する属性がないので無視されてしまう)
解決策は git update-index --add --chmod=+x test.sh をcloneするたびにする必要があります。これはgitが対応してくれれば良い気もしますが、大変けったいな仕様だと思います。

なにより、この現象を知らないとgit diff しても差分は一切ない。という表示がされるのでわけがわかりません。

パスの形式が他OSと互換性がない

運用でどうにかこうにかできる部分ではありますし、Windows側もだいぶ歩み寄りをしてくれている部分ではありますが、C:\ のような表記はなかなか
解決策としては / 区切りでパスを書いても通るのでそれを使えば違和感は減りますが、ドライブレターは指定できなそうです。

蛇足

実のところ書いてきた話はすべて、クライアントもサーバーもWindowsだったら全て問題になりません。サーバーはたいていの場合Linuxだろう。と言える時代になってしまったので顕在化しただけ。と言えます。
なので、良いGUIを持ち、Linuxとの親和性も高いmacOSのシェアが(少なくとも開発用途で)増えるのは当然だよねーと思いました。
Linuxデスクトップであれば、完全にターゲットと同じ環境になるので最高なんですが、どうしても動くも八卦動かぬも八卦みたいなところがあり、人には勧めにくいなぁと。
(動いちゃえば結構快適ですよ、そこまでに少し苦労はあるかもですが)

Windows、これからどうするんだろうなぁ… 互換性を維持しながら開発体験をより良くするってかなり難題なように思えますが、そろそろある程度バッサリ行ったほうが良い気がするのですが…

まえがき

  • Linuxで開発していたが諸事情で環境をWindowsにしたときのメモ
  • すべての記述は 2023/01/12現在

ハマったポイント

ビルドが通らない

症状:
ビルド中に UnicodeDecodeError: 'cp932' codec can't decode byte 0x83 in position 568: illegal multibyte sequence: がでてビルドに失敗する。

解決策:
環境変数に PYTHONUTF8=1 を追加する。方法はシステム環境変数に追加してもいいし、platformioを呼び出すときに設定してもいい(方法は色々あると思うので)

LinuxでビルドできたのにWindowsではできない

症状:
タイトルの通り。コンパイルエラーになった

解決策:
独自に wifi.h というヘッダファイルを作っていたが、これがESP32標準のWire.hと同一視されてしまっていた。(Windowsはファイル名の大文字小文字を区別しないため)
回避するには、ディレクトリ単位で大文字小文字を区別するようにするか、ファイル名が重複しないように変更する必要がある。

https://learn.microsoft.com/ja-jp/windows/wsl/case-sensitivity

git cloneしただけなのに差分が表示される

症状:
git clone しただけの何も変更していない状態なのに、変更があると表示される。diffをとっても何も変更されていない。

解決策:
Windows以外の環境で chmod +x した場合、git上でも記憶されるが、Windowsには実行可能属性がないのでchmod +x されていないものとして扱うが、それをdiffとして検知はする。
git update-index --add --chmod=+x filename とすることでセットは可能な模様。ただ、もしWindows機が混ざるのであれば実行可能属性に頼らないほうが良いかもしれない。不意に属性が外れてしまった時にトラブりそうな気がする。

前書き

2年くらいLinuxで暮らしてきたが、あまりにWindowsの使い方を忘れてしまったのでWindowsで環境構築をしようとしてみたメモ。最初はWindows11で設定しはじめて途中からWindows10に変更したので多少細かい部分の表記が異なる場合がある。

アプリ・ツール類のインストール

Microsoft Storeからインストール

  • Windows Subsystem for Linux (WSL)
  • winget

どちらもStore版が最新となっているのでインストールする。

手動インストール

ここでFirefoxを入れたあと、一度起動してデフォルトのブラウザに設定しておく。
後々、ブラウザを使用してログインするアプリをedgeで開かれると面倒なのでここで設定しておく。
Tclockの書式は "UL"NSSK___x"KB/s CPU"CU__x"%" mm/dd ddd\n"DL"NRSK___x"KB/s GPU"GU__x"% " hh:nn:ss

wingetでインストールするもの

この下のコードブロックはそのままPowerShellに貼り付けると途中で止まったりするので
数行ごとにやったほうがいいかもしれない。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
winget install slacktechnologies.slack
winget install git.git
winget install VSCodium.VSCodium
winget install Microsoft.VisualStudioCode
winget install RescueTime.DesktopApp
winget install Bitwarden.Bitwarden
winget install python.python.3.11
winget install oracle.JDK.17
winget install Dropbox.Dropbox
winget install 7zip.7zip
winget install GoLang.Go.1.19
winget install Greenshot.Greenshot
winget install Adobe.Acrobat.Reader.32-bit
winget install Betterbird.Betterbird
winget install Biscuit.Biscuit
winget install XP89DCGQ3K6VLD
winget install Eugeny.Tabby
winget install Microsoft.WindowsTerminal
winget install Brave.Brave

備考がいりそうなアプリ

  • Betterbird.Betterbird メーラー。thunderbirdにパッチを当てたもの
  • Biscuit.Biscuit (SNSなど専用ブラウザ)
  • XP89DCGQ3K6VLD PowerToys
  • Eugeny.Tabby Guake LikeにWSLを使うためのターミナル
  • Microsoft.WindowsTerminal Win11なら不要かもしれないが入れても問題にはならないはず

アプリ設定

Little Big Mouse

Little Big Mouse https://github.com/mgth/LittleBigMouse (これはWingetにない

Little Big Mouseの設定は左上の3番目、Locationアイコンをクリックして
表示されたディスプレイの小さいほうの縦幅の方の%表記をよしなにいじって大きいほうと似た感じにすればOK

PowerToys

PowerToysの設定はドキュメント\PowerToysに保存されていそう。

Keyboard Manager

キーの再マップ

1
2
CapsLock    IME Kanji
Apps/Menu Caps Lock (右側Ctrlの左にあるキー。コンテキストメニューキー)

OKボタンを押すと Apps/Menuキーが割当られていないという警告が出るが無視する。

ショートカットの再マップ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 音量・再生周りをmac風にする
WIN+F7 Previous Track
WIN+F8 Play/Pause Media
WIN+F9 Next Track
WIN+F10 Volume Mute
WIN+F11 Volume Down
WIN+F12 Volume Up

WIN+Pause Sleep

WIN+Q ALT+F4

# CAPSLOCKを半角/全角キー扱いの副作用(VK 240はCAPSLOCKを押したときのコード)
Shift+VK 240 CapsLock

PowerToys Run

  • 起動キー ctrl+shift+enter

tabbyの設定

tabby.sh に同期しておけば復元できるっぽい。

  • ショートカットキー toggle window F1
  • デフォルトの環境 Arch
  • Font HackGen35 Console 16
  • Color Scheme -> Dark Pastel
  • Terminal -> Sound -> Terminal bell Audible
  • Terminal -> Mouse -> Right Click Context Menu

Windows terminalの設定

  • スタートアップ→規定のプロファイル Arch
  • 以下の設定を追加。(本当はWIN+Enterに割り当てたいがWIN+`以外だと効かない?模様)
1
2
3
4
5
6
7
8
9
10
"command": 
{
"action": "globalSummon",
"desktop": "toCurrent",
"dropdownDuration": 1,
"monitor": "toMouse",
"name": "_global",
"toggleVisibility": true
},
"keys": "win+`"

Biscuit

  • フォントが指定されていないので指定する
  • メニューは右上アドレスバーの並びの … から
  • 標準、Sans-Serifは VL Pゴシック
  • Serifは適当、固定幅フォントは Hack Console 35

git

改行コードの自動変換を無効に

1
git config --global core.autocrlf false

betterbird (thunderbird)

  • 一度、 "C:\Program Files\Betterbird\betterbird.exe" -p で起動する
  • profileをよしななディレクトリに作成する (私の設定は c:/usr/betterbird

フォント

フォントのインストール時は、アドレスバーに shell:fonts と入れると楽
yuru7氏のフォントは無印、非NerdFont版(ただの好み)

Windows設定変更

環境変数

PythonのデフォルトのエンコーディングをUTF-8にする

これをしないとPlatformIOのコンパイルがコケる。
どのみち、cp-932を指定されて嬉しいことなんて一つもないのでUTF-8にしておくほうが幸せだと思われる。

1
PYTHONUTF8=1

出典
https://qiita.com/methane/items/9a19ddf615089b071e71

電源設定

ノートPCをふたを閉めた状態で使うための設定。これをやるまでの間、クラムシェルモード(蓋を閉じた状態で使う)はできない。スリープしてしまうので。
もちろんデスクトップPCならスキップ

  • コントロールパネル(control.exe) → 電源オプション
  • 電源ボタンの動作 電源接続時 シャットダウン
  • カバーを閉じたときの動作 電源接続時 なにもしない (蓋を閉じたまま使うので)
  • 高速スタートアップを有効にする 無効

個人用設定→色→モードを選ぶ→カスタム
既定のWindowsモード ダーク
既定のアプリモード ライト

WSLを入れる

ネットワーク通信が通ることまで確認したほうがいいかもしれない。

ArchWSLのほうが人気っぽいが、ArchWSL2のほうが初期設定が親切&systemdが動いているので個人的にはおすすめ。key周りでエラーが出たら(GPG Signatureなんたら~)とりあえず
pacman -S archlinux-keyring でキーだけ更新すると良い。(タイミングによっては起きる)

1
2
3
git clone https://aur.archlinux.org/yay-bin
cd yay-bin
makepkg -si

MS-IME

  • 設定→時刻と言語→言語と地域→Microsoft IME→全般→互換性>以前のバージョンのMS-IMEを使う
  • MS-IMEの設定でキーバインドをATOKに変更

キーボードレイアウトが間違えていた時

  • 設定→時刻と言語→言語と地域→優先する言語→日本語をクリック
  • オプションボタンを押す→ハードウェアキーボードレイアウト

ネットワークをプライベート接続に

エクスプローラーのネットワーク をクリックして画面上部にでてくる
ファイル共有が無効です(略
のメッセージからネットワーク探索とファイル共有を有効に を選んで、
いいえ、接続しているネットワークをプライベートネットワークにします。 を選択

ウィンドウスナップの無効化

Windows11のみ

ウィンドウを動かしているときに上から出てくるメニューをオフにする

  • 設定→システム→マルチタスク→ウィンドウを画面の上部にドラッグしたときにスナップレイアウトを表示する 無効

エクスプローラーのコンテキストーメニューを10の頃に戻す

Windows11のみ

  • レジストリ変更→再起動
  • 変更されるといけないので調べて(変更後は再起動が必要)

BitLocker ON

  • Home EditionでもBitLockerは使える。
  • デバイスの暗号化。みたいな名前になっているので探す

まえがき

Wyse 3040て何者?

  • Atom x5 Z8350 1.44GHz (4C4T) 2GB RAM 8G eMMC
  • 有線LAN, 5GHz対応のWiFi , Bluetooth
  • USB 3.0 x1 , USB 2.0 x 2
  • Raspberry Pi 4 と比べるとプロセッサがちょびっと弱い代わりに省電力
  • 企業向けなだけあって筐体は作りが良い感じ。
  • 最初から入ってるシンクライアント用OSでRDP接続ができる(びっくり)。もちろん無線LANも可。

Linuxのインストール

  • 内蔵のeMMCには触らないようにインストールする。^1
  • eMMCにOSを入れてもよいが、8GBしかないのでさすがに足りない。

必要なもの

  • USBキーボード
  • USBメモリ (インストールするOSを書き込んだもの)
  • USB-HDD(SSD) (OSインストール先)
  • Displayポートのケーブルとモニタ

手順

これを買う人はある程度わかっていると思うのでかんたんに記述する

OSの選択

  • Ubuntu系だと楽ができる模様(後述)
  • ISOをダウンロードして Balena Etcher等でUSBメモリに書き込むだけなので省略。
  • Debianを使う場合は、 non-free ISOを使わないとWiFiが使えない

BIOS設定の変更

ちなみに、じゃんぱらで購入した個体はこの設定がされていた。

  • 起動時にF2を押すと入れる。ちなみに、F12でブートメニュー。ここからもBIOSに入れる
  • System Configuration -> USB Configuration -> Enable USB Boot
  • Secure Boot -> Secure Boot Disable
  • 失念 -> Fast Boot -> Fast Boot Through (minimumだとUSBブートできない)

Linuxインストール

インストール用のUSBメモリとインストール先のUSB-SSDを接続する。
USB-SSDを3.0のポートに刺したほうが早く終わる。

  • 起動時に F12 を押してブートメニューからUSBメモリを選択
  • インストール自体は割愛。 インストール先はeMMCではなくUSB-SSD

Ubuntu以外を選択した人向け

ここが一番書きたかったところ

この機種は、インストール後のEFIシステムパーティションに
/EFI/BOOT/BOOTX64.EFI というファイルがないと起動可能デバイスだと思ってくれません。
touch /EFI/BOOT/BOOTX64.EFI 等で空のファイルを作る必要があります。(/EFI/BOOTも存在しないので、mkdir -p /EFI/BOOT
ちなみに、この場合の / は EFIシステムパーティションの / ですのでご注意を。

Ubuntuはこのファイルを作成してくれるようです。多分Windowsも作ってくれると思います。

https://qubitsandbytes.co.uk/install-a-new-os-on-a-dell-wyse-3040/


蛇足

正直、思った以上に普通のイマドキPCだった。UEFIブートしてくるし。
ちなみに、私はdebianを選んだのでBOOTX64の罠にハマって起動してこない… と3時間悩みました。
thinOSが普通のRDPに対応していて、軽くRDPで触ってみた限りではレスポンスもよかったので、普通にシンクライアントとして使っても割とイケるんじゃないか?という感じです。

こんなん使うよりRaspbery Pi使ったほうがいいんじゃないかという件ですが…
ラズパイはまず1980円で手に入らないです。 それでなくても、2022年11月現在、ラズパイ4 2GBの新品はこんなめちゃくちゃな値段なので大変助かりました。とりあえずzabbixのサーバーとして活用していく予定です。
18980円