キーボードがおかしい
PC に久し振りに Emacs を入れたら、キーボード配列がおかしい。 どうすれば直るんだろう。
ここ最近はエディタに VSCode ばかり使ってたけど、 C のソースを追っかけるのにどうも便利じゃないもんで wsl2 のうえに久し振りに Emacs を入れた。
最近の wsl2 は便利になったもんで、 Windows 側に X サーバ入れなくても X のアプリが動く。 Emacs を "-nw" オプションなしで開くなんて何年ぶりか。
ただ、どういうわけかこの Emacs、Shift-2 で "@" が出る。 いわゆる英語キーボードだ。 ぐぐってみると、WSL2 の X アプリで割とあることみたい。
割とあるし割とみんなさくっと直せてるみたいなんだけど、 なんでか直らないんだよなあ。どうすりゃ直るんだろう。
まずは WSLのキーボードが英語配列になってしまふ - Qiita と emacsやgnome-terminal上でキーボードが英語配列になってしまうとき を参考にしてみた。
環境変数
ターミナルで動かすアプリは日本語化できているので、 以下はそもそも完了していた。
sudo apt instal language-pack-ja sudo update-locale LANG=ja_JP.UTF-8
dpkg の設定
sudo dpkg-configure keyboard-configuration
すればよいという。
これをやるとインストーラみたいなテキスト GUI が出てきて、
キーボード設定ができるという。
そこでこのコマンドを唱えてみた。しかし何も起きなかった。
wsl2$ sudo dpkg-reconfigure keyboard-configuration Your console font configuration will be updated the next time your system boots. If you want to update it now, run 'setupcon' from a virtual console. wsl2$
なんでフォントがどうとか言われてるのか知らないけど、 本来ならこの "Your console font configuration will be ..." は設定を完了させたあとに出てくるものらしい。 コマンド実行したら即これが出てきて終わるのは、なんでだろう。
そして、これで解決したっぽい記事の、なんと多いことか。(うらやましい)
X の設定 1
/etc/default/keyboard にキーボードを指定する必要があるらしいので、
sudo vi /etc/default/keyboard
する。
XKBMODEL="pc105" XKBLAYOUT="us"
と記載されていたので、ここに jp106 キーボードを書く。
XKBMODEL="jp106" XKBLAYOUT="jp"
そして Emacs を起動。だめだから wsl2 を再起動して Emacs を起動、Windows を再起動して Emacs を起動。だめ。
この方法もだめか。
X の設定 2
fcitx-configtool
というツールで設定できるらしい。
fcitx は Linux 用の多言語文字入力ツールだったような。
このコマンドはインストールされていなかったが、fcitx-tools というパッケージに入っていたので、
sudo apt install fcitx-tools
でインストールして実行してみた。
日本語も英語もなんも選択できんし、検索もできんから追加もできん。
現在の対策
いっしょーけんめい思い出しながら使っています、us 配列。
学生の頃 us 配列と jp 配列が混在してる環境でよかった。
写真を整理したい (2/n)
昨日の記事 の続き。 おうち NAS にある大量の写真から、キャプチャやコピーとそのオリジナルを探そうとしています。
昨日はファイルぜんぶ列挙してたので、今日は画像ファイルに絞り込んで、その数を数えてみました。 画像ファイルに絞り込むのは、mimetypes というライブラリで確認できそうです。 目標としては動画ファイルのキャプチャもあるんだけど、今日のところは静止画に絞りました。
#!/usr/bin/env python3 import mimetypes from pathlib import Path from typing import Generator def iterfile(path: Path) -> Generator[Path, None, None]: first = "" if path.name == "" else path.name[0] if first == "." or first == "@" or first == "_": return if path.is_file(): yield path if path.is_dir(): for child in path.iterdir(): for item in iterfile(child): yield item count : int = 0 for file in iterfile(Path(".")): filetype = mimetypes.guess_type(file)[0] if filetype and filetype[:6] == "image/": print(file) count += 1 print(count)
うえ半分は昨日のままですね、import が増えてる程度。 した半分でファイル種別を判断しています。
さてこの結果、80888個の静止画ファイルが見つかりました。
キャプチャやコピーとそのオリジナルを探すとなると、
80,887 * 80,886 = 6,542,625,882
って 65億回のマッチングが必要になるので、
マッチング 1 回に 1 秒かかるとして、200年かかりそうです。
まじか。どうしたもんかなあ、これ。
写真を整理したい
2000年代半ばにフィルムカメラからデジカメに乗り換えて、ビデオカメラも DV テープから HDD, SD カードと変遷し、今では気軽に何でもスマホで撮るようになりました。おうち NAS には気付いたら 1Tbyte 弱ものデータがあります。
普通にカシャっと撮った写真とビデオが中心ですが、誰かにシェアするとかいった目的でコピーした写真や、キャプチャ画像なんかもいっぱいあります。そういった写真は、あとでたまに目にした時に「これいつ頃のだっけ?」「覚えはあるんだよね、どこだっけ?」「アレの時でしょアレのとき」「アレって?」「ほらーアレだよアレ」ということに陥りがちで、困っていました。
そんな折に、OpenCV を使えば、写真のなかから断片をマッチングできるらしい、と聞きました。画像から切り取った断片がどこにあるか、見つけてくれるそうです。これを使えば、キャプチャ元の写真や動画を特定できるかもしれません。
そんなわけで目標は、おうち NAS に入っている写真から、キャプチャとコピーとその元画像・元動画を見つけることにしました。見つけたら、どう見せるようにしようかな。今はひとまず、シンボリックリンクでも置いとけばいいかな。あとでいいアイデア出てきたら変えよう。
さて、そもそも対象ファイルをぐるっと巡る必要があるんだけど、いくつあるんだろう。OpenCV は python から呼んでる事例が多いので、WSL2 から NAS をマウントして、python でぐるっと巡ってみることにしました。python 何年ぶりだろ。覚えてないくらい昔なので、文法とかぐぐり直しながらになります。
まずはその前に、NAS 上のフォルダ構成を観察してみます。
u939b$ cd とあるフォルダ u939b$ ls -CFla 合計 4648 drwxrwxrwx 3 kashima users 4096 9月 6 2020 ./ drwxr-xr-x 33 kashima users 4096 4月 10 14:13 ../ drwxrwxrwx 3 kashima users 4096 9月 6 2020 '.@__thumb'/ -rw-rw-rw- 1 kashima users 1095488 9月 6 2020 IMG_0001.jpg -rw-rw-rw- 1 kashima users 1076122 9月 6 2020 IMG_0002.jpg -rw-rw-rw- 1 kashima users 791437 9月 6 2020 IMG_0003.jpg -rw-rw-rw- 1 kashima users 845503 9月 6 2020 IMG_0004.jpg -rw-rw-rw- 1 kashima users 897136 9月 6 2020 IMG_0006.jpg
ファイル名が "." から始まるディレクトリがあるのね。Windows 絡みらしい。こういうのは除こう。もうひとつ、pathlib の Path クラスを使うと、ディレクトリ内のファイルをぐるっと for で巡れるらしい。
#!/usr/bin/env python3 from pathlib import Path for file in Path(".").iterdir(): if file.name[0] != ".": print(file)
あぁ、サブディレクトリに対応してないや。あと、"." 以外にもいくつかの文字で始まるファイル名は、取り除いたほうがいいな。
#!/usr/bin/env python3 from pathlib import Path from typing import Generator def iterfile(path: Path) -> Generator[Path, None, None]: first = "" if path.name == "" else path.name[0] if first == "." or first == "@" or first == "_": return if path.is_file(): yield path if path.is_dir(): for child in path.iterdir(): for item in iterfile(child): yield item for file in iterfile(Path(".")): print(file)
よしこれでサブディレクトリ対応 OK。次は写真ファイルだけを for で巡れるようにしてみよう。
検証可能な証明書(VC)を使ってみた
会社ブログ書いたのが公開されました。
検証可能な資格情報って、最近だとワクチン接種証明アプリなんかでも使われてて、少しづつ普及し始めてた規格です。
とはいえ信頼の根拠はどこにあるんだ? とかいろいろとクリアになってないところがあって、そういうところが、いま進行しつつある最先端技術っていう感じ。
プラットフォームもいろいろあるけど、そのなかのひとつ Microsoft の Azure を使ってみたら、うまく使えそうですよ、といった感じのことを書きました。
見てね~
かな漢字変換とエディタと
これまでずっと、エディタは Emacs を使っていました。
学生の頃に nemacs を使い始めたのが最初で、そこから Mule に移行して、就職してからも XEmacs が出れば移行し、Windows でも xyzzy をしばらく使っていました。
今では Windows にも Linux にも必ず Emacs を入れています。
むかしは nemacs か Mule のなかで日本語を書いてたんだよなあ。
(vi 派のひとたちはどうしてたんだっけ)
今じゃ Emacs の中で日本語を書こうとしたら skkfep とバッティングしてしまう。
minibuffer にコマンド書いてるつもりが変なひらがなになってエラーになると、
けっこうイラッときちゃうんだよな。
Emacs は Ctrl と Alt キーのおかげで、指をホームポジションから動かさなくて済む最強のエディターと今でも思ってるけど、
HHKB を買ったら大抵のアプリで、指をホームポジションから動かさなくて済むようになった。
おかげで最近は、TypeScript 系のサポートが強い VSCode ばっかり使ってる。
Emacs 人生 25 年、ついに Emacs にお別れか?
余談。HHKB でマウスまで操作できたら最強なんだけどな。
新しい書き方
ここ最近、新しい資料の書き方について学んでいる。なにに向けた資料かというと、特許。
いざ書こうとすると、部署で色々テンプレとか用意してくれてたりしてて、それを使えば書けるよ、ということになってるんだけど、テンプレだけで万事解決ってわけにはいかない。
仲間内なら通じる言葉とは違って、弁理士さんみたいに全くの分野違いの人に読んで理解してもらわなくちゃならない。いままでずっと、開発仲間とばかり話をしてたから、共通理解が多くてラクしてたんだなあと思う。ハイコンテクスト・ローコンテキストってやつ。
今はひたすら、ローコンテキストで伝わる資料の書き方の指導を受けてる。今までわりと、何かを提案しても「よーわからん」って言われてしまうことが多かったけど、この訓練で改善するといいな。