モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

NSEG勉強会 #106

コロナで中断していたNSEG勉強会が2年ぶりくらいに開催されたので、最近触っているオープンソースのリアルタイムボイスチェンジャー、MMVCとそのエンジン部分VITSについて紹介てきました。

NSEG + JAWS-UG 長野支部 合同勉強会 - connpass

speakerdeck.com

やっぱり勉強会みたいなのはリモートで聞くだけではあんまり意味なくて、その場にいってコミュニケーション込みで成り立つものだな、とあらためて思った次第です。

chrome上のWebアプリでCtrl+nを使いたい

Scrapboxがいいと聞いて試しに使っているのですが、確かになかなか良い感じです。

で編集に簡易Emacs bindingが使えるらしく設定してみたのですが、Ctrl+pすると印刷画面が出てきてしまい悲しくなりました。
調べてみると「shortkeys」というエクステンションを入れると解決するらしく、入れてみていくつか設定してみました。

chrome.google.com

すると、Ctrl+pやCtrl+hは問題ないのですが、Ctrl+nだけはどうしても新しくウィンドウが開いてしまうのです。

これ何とかできないの??と思って検索してみるとどうも、Ctrl+N/T/Wだけは設定変更できないようになってるとのことでした。

javascript - Any way to override Ctrl+N to open a new window in Chrome? - Stack Overflow


これはダメだ… と思ったんですが、実は回避策が。

kazhat.seesaa.net

Chromeを「アプリケーションモード」で動かしている場合だと、ショートカットは全部無効にされるんだそうです。

というわけでScrapboxだけアプリケーションモード用のアイコンを作成してそちら経由で起動することで対応しました。

Windows11で共有ファイルサーバが見れない

Windows11にしてから結構何ヶ月か経ったのに、今頃になって家のファイルサーバが見えないことに気が付きました。

普通にpingとか通るのでファイル共有だけが通らない状況。
ぐぐってみると一番ありそうなSMBがオフになってるのが出てきました。

docs.microsoft.com

早速確認してみるとやはりSMB1.0がオフになっていました。

前は見えてたからたぶんWindows11にした時に勝手にSMB1.0オフにされたんだと思う。
これってセキュリティリスクがあるからなのだろうけど、やっぱ勝手にするのはやめて欲しいなあ、と思いました。

ColabやJupyterのノートをgitで管理するための設定

ColabやJupyterのノートをgitで管理しようとすると、1行のJSONになっているためgitとは相性が悪いです。
また、出力部分はgitで管理したくない場合が多いと思います。(Colabの場合は出力を保存しない設定があるのでそれを使ってもよい)

そこで下記エントリにしたがい、jqを使ってgitのfilter設定をすると、JSONを適宜改行して、出力部分は削除してくれるため、gitでの管理に向いた形にしてくれます。

ni66ling.hatenadiary.jp

で、そこまではよかったのですが、Windows上のSourcetreeで使っていると時々、修正を行っていなくても

\ No newline at end of file

というエラーがでてしまって困っていました。
これはファイルの最終行が改行で終わっていないことで出るエラーなのですが、jqが処理した後の出力の最終行に改行がないことで出ています。

でどうしたものかと思ったのですが、jqでこれ対策用の設定がありました。

jq Manual (development version)

--binary / -b:
Windows users using WSL, MSYS2, or Cygwin, should use this option when using a native jq.exe, otherwise jq will turn newlines (LFs) into carriage-return-then-newline (CRLF).

ということで「binary」オプションをつけてやるとちゃんと最後に改行つけて吐き出してくれるようでした。

ので上記エントリの「clean=jq …」のところの呼び出しに、下記のように「-b」つけてやることで解決しました。

  clean = jq -b --indent 2 --monochrome-output '. + if .metadata.git.suppress_outputs | not then { cells: [.cells[] | . + if .cell_type == \"code\" then { outputs: [],  execution_count: null } else {} end ] } else {} end'

Windowsのpython3.10にpythonnetを入れようとしてエラーがでる

Windowsのpython3.10にpipでpythonnetをいれようとしたらエラーがでてインストール出来ませんでした。

色々と調べて古いバージョンのBuild Toolsとか入れたりしたんですがダメ。

さらに調べると、実はpythonnetは公式では3.8までしか対応しておらず、3.9用もそれ用のwhlファイルをダウンロードしてきて入れないと入らないのだとのこと。

python - How to fix error during pythonnet installation - Stack Overflow
https://stackoverflow.com/questions/67418533/how-to-fix-error-during-pythonnet-installation

でも、3.9 のanacondaは対応しているようで、anacondaの環境下では pip でさっくり入りました。
で一度anacondaで入れると、このwhlファイルがダウンロードされてきてキャッシュされているため、Windowspythonを3.9にしてやると、そちらでもそのままpipで入れることができました。

ちょっと不思議な気もしますがそういうもんなんですねえ。

numpyのバージョンが合わない問題

とあるツールを動かそうとしたらこんなエラーが出ました。

RuntimeError: module compiled against API version 0xf but this version of numpy is 0xe

どうもnumpyのバージョンが想定されているものと合っていないらしかった。
こういう場合、pipでnumpyのバージョンを上げれば解決するらしいのだが

$ pip install numpy --upgrade

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
numba 0.55.1 requires numpy<1.22,>=1.18, but you have numpy 1.22.3 which is incompatible.

と言われてしまい解決せず。

ただ、下記エントリに同様の件が上がっていました。

pipの厳格な依存関係チェックにハマってしまった時の解決方法備忘録メモ - Qiita https://qiita.com/y-vectorfield/items/effed435c42d8bad42ac

numbaのバージョンを上げればよい模様

pip install numba --upgrade

これで解決できました。
ありがたい。

…と思ったらそんなことなかったのです。

numbaはすでにupgradeされており、pip installしたらnumpyのバージョンを1.21に下げてくれました。
というわけで結局元の問題は解決せず…

どうやらnumbaはまだnumpyは1.21じゃないと動かないため、ここは必須要件のようでした。
さてさて困ったね。

どうもmatplotlibがこのエラー吐いているため確認すると matplotlib-3.1.0 でした。

$ pip show matplotlib
Name: matplotlib
Version: 3.1.0

ほかの環境では matplotlib-3.1.1 だったので、もうちょいバージョンを上げてみることにする。

$ pip install matplotlib==3.1.2

これで解決できました!

うーん、しかしいったいどういうことなんだろう…
anacondaの3.1.0のイメージがコンパイル時のnumpyバージョンが高かったってことなんだろうか?

印刷スプーラーの脆弱性(PrintNightmare)対策パッチ(KB5005565)から始まる悪夢

あるWindowsサーバの再起動をしたところ、共有プリンタが使えなくなるという障害が発生したということで、調査対応しました。


Windowsサーバにプリンタが接続されており、そのサーバ上からはテストプリントなど通るものの、既に設定されていた共有プリンタからのアクセスはできなくなっていました。

ネットワークプリンタにアクセスしようとすると

0x0000011bエラー

が発生してアクセスできないことがわかりました。


これで調べてみると、去年の秋2021年9月頃に出た印刷スプーラーの脆弱性(PrintNightmare)という脆弱性に対する対策パッチKB5005565が当たると、共有プリンタが使えなくなるという問題が起きていたことがわかりました。


servercan.net


Windowsセキュリティ更新プログラム(2021年9月14日公開)のKB5005565、(2021年10月12日公開)のKB500670などを適用したら、共有プリンターに対して印刷出来なくなりました
https://faq2.epson.jp/web/Detail.aspx?id=52608


このサーバOSはWindows Server 2012だったのですが、結構長くWindows Updateが掛かっていなかったものが、再起動のタイミングでWindows Updateがかかっていたことがわかりました。


それでWindows Updateで当たったパッチを調べると

  • 5009624
  • 5008870
  • 5008868
  • 5008263
  • 5007247

の5件が当たっていました。


ここでは問題の5005565は出てきていなかったのですが、調べていくとどうも5007247が関係しているっぽい?という感じだったため、消して試してみることにしました。
が、パッチを消すと
5007247 -> 5006714 -> 5005613 -> 5005076
という感じに対応する古いパッチが順に当たってしまう… という状況になりました。


とりあえずそこまで全部消してみたのですがエラーの起きる状況は変わらずでした。
また、5009624は色々と問題が出ているパッチのようでした。

Windows 8.1 および Windows Server 2012 R2 | Microsoft Docs
https://docs.microsoft.com/ja-jp/windows/release-health/status-windows-8.1-and-windows-server-2012-r2


そのため一旦この時に入った上記パッチを全部削除することで試してみることにしました。


すると…

無事にどのPCからも共有プリンタへアクセスできるようになりました!!

サーバPCが古いこともあって、パッチを一つ一つ外しては動くようになっているか試すのにもんのすごい時間がかかって、この件でまるまる2日近くも消費してしまいました。もう勘弁して… という感じです。

aws-ec2-sshのインストールではまった点

aws-ec2-ssh という、AWSのIAMで登録しているユーザでそのままLinuxのユーザ管理と同期できるツールがあります。

でこれをインストールしたんですが、ちょっとだけはまったのでメモ。


基本的には下記エントリーの内容そのままやればよいです。

qiita.com

最初、aws-ec2-ssh の公式ページ見て、先に出ていたrpmのほうで入れたのですが、install.shで入れるほうが問題が少ないような感触です。
一旦rpmで入れたのですがやめて再度install.shで入れなおしました。

それでよい感じと思ったんですが、/etc/passwd は更新されてるのに入れない…となりました。


実は /etc/ssh/sshd_config が変更されているため、sshdの再起動をしてやる必要があります。
公式ページにはそのこと書いてなくて、再起動しなかったのではまったのでした。

Goofys のインストール

仕事で ec2 から S3 をマウントできる Goofys というのを入れてたんですが、インストール時にエラーが出てはまったのでメモ。

Goofysはgoが入ってれば普通は

 go get github.com/kahing/goofys

だけでインストールできるのですが

go/src/github.com/kahing/goofys/api/common/conf_azure.go:272:34: accountsRes.Value undefined (type storage.AccountListResultPage has no field or method Value)
go/src/github.com/kahing/goofys/api/common/conf_azure.go:373:35: not enough arguments in call to client.ListKeys
    have (context.Context, string, string)
    want (context.Context, string, string, storage.ListKeyExpand)

のようにエラーが出て素直に入れれませんでした。

で、調べてみると一旦ダウンロードしてからinstallにすれば通るといったエントリーもあったのですが、自分はそれではうまくいきませんでした。

goofys入れるのてこずった。 – 楽にしてください。

こちらのエントリーからgithubのissueを参照しました。

github.com

結局 git clone でソース持ってきて、git submodule update してから go install するというものでした。
これで無事に入ったんですが、なんでこの環境だとこうなるんだろう?というのは謎です。

ちなみにAWS上のRHEL8.5でした。

VSCodeでPHP-5.4のコーディングをする設定

今関わっている開発案件がPHP-5.4のソースで、VSCodeのIntelephenseが「mysql_query」とかのメソッドをそんなのねえよ!と赤線引いてくる問題が出ていました。
まあ無視すればいいのですが、ほんとのエラーと見分けがつかなくて困るのでなんとかしたい。

これを検索するとだいたい、VSCodeの設定を開いてIntelephenseの設定項目「Intelephense > Environment: PHP Version」か、setting.jsonに「intelephense.environment.phpVersion」の項目作って、バージョン指定で「5.4.0」とか入れればよい、と書いてあります。
ところがいくらやってもそれでは赤線が消えてくれませんでした。

Why is intelephense not recognizing mysql_pconnect when aimed at php v5.3? - Stack Overflow
ここに、デフォルトのスタブリストから「mysql」が消えてるから追加しろと書いてありました。

VSCodeの設定開いて、上の「設定の検索」のところに「stubs」といれてやるとintelephenseのstubsの設定項目が出てくるため、その一覧の一番下に「項目の追加」というのがあるのでそこを押すとセレクターになり、「mysql」があるので選択して「OK」にしてやります。
これで無事にmysql_queryとかの赤線が消えてくれました。