あれか?これか?

プログラミングのこととかを書いたりするかもしれない。

弐寺とBMSで精神崩壊してカウンセリング通いまでになった話

筆者のスペック

弐寺皆伝(CBで初取得)、BMS発狂十段

f:id:winzu44:20210306205906j:plain
今作(BISTROVER)も何とか皆伝 相変わらず皿がゴミである

音ゲーとの出会い

確か始めたのは小学六年生のころ、ポップンを始めたのがきっかけだった。
小学生のころから音MADをずっと聞いていて、音ゲー曲にあこがれのようなものを持っていた。(当時はEvansとか流行ってたね)
なのでポップンを始めてもいなかったのにサントラだけ買っていたりした。初めて買ったのはサニパのサントラだったかな。(リメンバーリメンバーは名曲。中学生のころ登校前に絶対聞いていた気がする。)

弐寺との出会い

弐寺を始めたきっかけはポップンが開いていなかった時の暇つぶしとして」だった。
当時(SPADA)のころは消費税がまだ5%で100パセリで四曲できるってコスパいいじゃん!って思ってた。
ちなみに経歴としては

中学1年生 十段(PEN) → 中学2年生 十段(COP) → 中学3年生 十段(SINO)

いや、中学の間ずっと饅頭*1かよ。
なおSINOの途中で受験のため半年程度できない時期があった。

f:id:winzu44:20210306210504j:plain
手元のある最古のリザルト 確か高専受かった後ぐらいのはず

悪魔の力(BMSとDAOコン)と出会う

高専に受かった記念でDAOコンを買った。これが精神崩壊へのきっかけだったのかもしれない。
BMS自体は中学生のころからやっていた。当時はノートパソコンでシコシコやっていた。
ちなみにお気に入りはfragile crystal
名曲です。
www.nicovideo.jp

高専に入学すると同時に、DAOコンを手に入れた私はそれは文字通り猿のようにBMSをしていた。
多分高専1年生のころが一番やっていたと思う。

起床→身支度→BMS→学校→帰宅→夕食、入浴→BMS→就寝

といった感じであった。
ともあれBMS猿になっていたため、着実に鍵盤力はついていった。
それで中伝も取り、あとは皆伝を目指すのみ、というところまではすんなりいった。

皿ができない悪夢、灼熱で落とされる毎日

察しの良い方は気づいているかもしれないが、皆伝には一人問題児(僕からして)がいた。
そう、灼熱である。
着実に鍵盤力はついているのに皿力が崩壊していたため、皆伝は灼熱で落とされる一方であった。
BMS発狂八段まで取得、本家も当時のハード地力Sが全部埋まっていたレベルであった。
穴冥はBP70程度だし、卑弥呼はノマゲもついている。なのに灼熱一曲のために受からなかった。

ここらへんで精神的にやられてきた。
灼熱で落ちるたびに自分の髪を引きちぎったり、顔をビンタしていた。いわゆる自傷行為に近いことをしていた。
今思えばゲーセンでこんなことしてるのやばいでしょ。もし見ていて不快になった方がいたら大変申し訳ない。
当時のゲーセンには弐寺が二階に設置されていたので、灼熱で落ちるたびに飛び降りようかと思った。
とにかく自分を追い込んでいた。

皆伝取得、だが終わらない苦しみ

高専2年生のころ、CBのころやっと皆伝をとることができた。

f:id:winzu44:20210306214148j:plain
クリアレートからわかる灼熱のだめっぷり というか卑弥呼と冥今よりうまくて笑う

だがこのゲームは皆伝をとってからが本番、皆伝まではチュートリアル、と呼ばれるほどの修羅の道である。
いわゆる全白を目指して地力を上げていった。BMSもずっとやっていた。
ただ、成長に限界を感じていたころ、また自分を追い込み始めた。
アゴ*2が少しでもうまく押せなかったら台パン、顔を殴る、髪を引き抜く。
あまりにもイライラしすぎてモニターを割ってしまった。

f:id:winzu44:20210306213738j:plain
当時は段ボールにモニターを置いて立ち環境にしていた

毎日泣きながらBMSをやっていた。
少しでもうまく押せなかったらだめ。なぜ昨日できたことが今日はできないんだ。
そんな考えでずっと鍵盤を叩いていた。
毎日やらないと地力が落ちるかもしれない。地力を落としたら取り返すのに時間がかかる。
そんな強迫的な考えでプレイしていた。
当時は楽しくなかったと思う。いいリザルトが出ても次の日にはできなくなっているのではないか、そういう恐怖に襲われていた。
親から何度もやめろと言われた。でもやめたら地力が下がるからやめられなかった。

あまりのおかしさにカウンセリング行に

毎日奇声を発しながらBMSをやっていたため、さすがに親が心配してカウンセリングに連れていかれた。
毎日机の下で泣きながら髪をむしってるようなことしてたらそうなるわ。

ただ、正直カウンセリングを受けて得られたものはそんなになかったと思う。
記憶にあるのは担当の先生に
「うーん、自閉症じゃない?(笑)」
みたいに言われたことだけだ。
そういわれたらなんなあほくさくなって通うのをやめた。
後ついでにこのころ弐寺BMSも離れるようになった。

現在

今はもう弐寺BMSもあまりやらなくなった。
せいぜい弐寺を月に二回ぐらいするだけになった。
今はAPEXしてVRゲーやってプログラム書くようになった。

もし弐寺BMS、それに限らず音ゲーで苦しい思いをしている人がいたら言いたいのは
何かほかに夢中になれるものを作ったほうがいい
ということである。ありきたりすぎるが。音ゲーがうまくなることだけが人生じゃない。
苦しい思いをしてまで音ゲーをやるのは、音ゲー以外に自信のあるものがないということだと思う。
だからいろいろなものに手を出してみたほうがいい。
何か一つのものだけを心のよりどころにすると、それが崩れた時苦しむことになる。
音ゲーから完全に離れられなくても、そこから派生して何かを始めるといい。
僕は弐寺のリザルトを自動で管理しようと思って、Pythonと画像認識で遊んでいたりしていた。
そこからプログラミング面白いなーってなったりした。
とにかく、プレイすることだけにとらわれてはいけないと思う。

やめたくても地力が落ちるのが怖くてやめられない、という考えは絶対にやめたほうがいい。
僕はそれで精神をかなりすり減らしてしまった。
ちなみに自傷行為に走るようであったら完全にアウトだと思う。
早急にカウンセリングとか誰かに相談したほうがいい。

音ゲーは楽しいけど、うまく付き合おうという話。

追記(2021/08/27)

音ゲー辞められていません。というかモチベが上がってきた。
DAOコンを台パンしてぶっ壊してしまったので、キーボードでBMSやってるが、これがなかなか面白い。
自作キーボードでやってるので台パンもする気が起きない。(愛着が沸いたし。)

f:id:winzu44:20210827224542j:plain
約5年間、お世話になった。何やってんだろ俺。

BMS効果かわからないが、ファーフルダリアエクハできた。

f:id:winzu44:20210827224747j:plain
エクハ難易度10何もついてないけどついた

頑張ってキレないように発狂皆伝を目指したい。

自作キーボードでBMSはいいぞ。(いつか配置についてとか書くかも。)

*1:万年十段のこと。今は中伝あるからあんまり言わないかも

*2:発狂BMSAir GODのこと

Jetson Nanoにpyxelをインストールするときの ”fatal error: filesystem: No such file or directory #include <filesystem>”を解決する

最近買ったJetson Nanoで2Dゲームでも作ってみようかと思い、見つけたのがpyxelであった。
github.com
メインPCのUbuntu環境ではサクッとインストールできたが、Jetson上では少し手間取ったのでメモ。

結論:gccとg++のバージョンを上げればいい(バージョン9以降?)

結論から言うとこうなる。ソースからビルドする必要があるがこのとき

fatal error: filesystem: No such file or directory
 #include 

などと言われてMakeが通らなかった。
とりあえずgccとg++のバージョンを確認してみる

$ gcc --version
gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0

とのことでこのバージョンではfilesystemが実装されていないようであった。(詳しくは分からないが…)
新しいバージョンのgccとg++をインストールする。

$ sudo apt-get install gcc-9
$ sudo apt-get install g++-9

デフォルトで読み込まれるバージョンを変更する

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9
 
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

これでgcc --versionコマンドを実行してバージョンが上がっていたらOK。
あとは手順にしたがってMakeすれば良い。

ちなみにgccとg++のバージョンを8にしていたときは

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

といったエラーを吐かれてpip install が通らなかった。
そこでgccとg++のバージョンを9にしてMakeし直し、pip installを行ったら成功した。

PCを新調したらUbuntuのイーサネットが使えなくなった話

昨年12月、CPUをRyzen5 3600からcore i-7 10700KFにし、それに伴ってPC を新調した。
その時、メインで使っているwindows10はクリーンインストールし直したが、SATASSDに入っていたUbuntuはそのままにしておいた。(いわゆるデュアルブート環境であった。)
そして久しぶりにUbuntuを使おうと思いBIOSから起動したところ、タイトルのようにLANケーブルでネットワークに接続することができなくなった。

環境

MB Z490 MPG Gaming Plus
Ubuntu 20.04.1



どのイーサネットドライバーを使えばいいか確認する

とりあえず使っているマザボのページを見てどのドライバーかを確認する。
https://jp.msi.com/Motherboard/support/MPG-Z490-GAMING-PLUS#down-driver&Win10%2064
今回はRealtekのドライバーであったが、マザボによってはIntelのドライバーだったりするかもしれないのでそこは要確認である。



ドライバーをダウンロードする

Realtek PCIe FE / GBE / 2.5G / Gaming Ethernet Family Controller Software - リアルテック
今回の場合はこちらからダウンロードした。
選んだのは 2.5G Ethernet LINUX driver r8125 for kernel up to 5.6 (よくわからなかったので一番新しいので)
サブ機であるノートpcでダウンロードしUSBメモリに入れた。



ドライバーをインストールする

ダウンロードしたファイルをUbuntu上で解凍し、そのディレクトリまで移動する。
その上で以下のようにコマンドを実行する

~/デスクトップ/r8125-9.005.01$ sudo ./autorun.sh 

詳細な方法は同梱されているテキストファイルに書いてある。
これで自動的にドライバーが適用され、イーサネットが使えるようになる。

Steam版のApexでFPS制限を解除する

OriginからSteam版に移行したところ、なぜか強制的に垂直同期のようになっていた。
解決方法は簡単で、Origin版でも使っていた起動設定を追加すればよい。

Steamのライブラリ→Apexにカーソルを合わせて右クリック→プロパティで画像の画面を開く。
f:id:winzu44:20201107163909p:plain

起動オプションを設定 をクリックし +fps_max 0 と入力。これでFPS制限が排除されるはずである。
f:id:winzu44:20201107163958p:plain

確認していないが、ほかの起動オプションも使えるかもしれない。

steamのアップデートで少し表示が変わったのでこちらでも。
やることは変わらずここに引数を入力すれば良い
f:id:winzu44:20210228004400p:plain

RealforceからFILCO Majestouch MINILA-R Convertibleに乗り換えた話

タイトルのまま。ちなみにこの記事もMajestouchのほうで書いている。
www.amazon.co.jp

買ったのは赤軸タイプ。色はグレー。ちなみにダイヤテック公式の方では、他のカラーもある。
Majestouch MINILA-R Convertibleのご紹介 | ダイヤテック株式会社
(正直ASAGIが好みだったが、その時赤軸は在庫がなかった。)

乗り換えた理由

Realforceが大きすぎる
テンキーレスの方ではなく、フルキーのほうを買ってしまったのもあるがとにかく大きすぎた。

f:id:winzu44:20201105212732j:plain
二つのキーボードを並べてみた こうしてみるとMajestouchの小ささが分かる


・ネイティブにFnキーと組み合わせることでカーソル移動ができる
Realforceを使っていたころも、AutoHotKeyを使ってカーソル移動をしていた。(無変換キーとIJKLキーでカーソル移動をするようにしていた。)ただ、ソフトウェア側で対応するよりもハードウェアからできる方がいいと思った。HHKBも考えたが、あちらはホームポジションから離さないといけないこともあり断念した。正直あっちの方がプロ感あって好きだった。特に無刻印タイプ。


・無接点静電容量方式に飽きた
地元のパソコン工房で赤軸のキーボードを試し打ちしたところ、なかなか気に入ったのもある。飽きたというよりかは無接点静電容量のタクタイル感が嫌になってきたというのもある。

良かったところ

・OSにとらわれずカーソル移動ができる
買った理由はほとんどこれな感じがするが最近はLinuxをよくいじるためAutoHotKeyが使えない。しかしこのキーボードなら、ソフトに関わらず、ホームポジションをキープしたままカーソル移動ができる。  …もしかしたらカーネルとかいじったらキーボードマクロってできるのですかね?ワタシリナックスワカラナイ…
というかホムポジのままカーソル移動できるのって最高に便利だからもっと増えてほしいのだが…。プログラムもりもり書く人なら絶対やるべきだと思う。…こんなこと言ってたらそろそろ自作キーボードに手を出してしまいそうだが。

・省スペース&ケーブルレス
パソコンが机の下にある都合上、ケーブルが机の上を這ってしまうのを回避できた。ちなみに接続はBluetooth。うちのパソコンにはそんな高級なものはついていなかったので、レシーバーを買った。

f:id:winzu44:20201105215048j:plain
とりあえずアマゾンで人気一位だったので買った

www.amazon.co.jp


特に問題なく接続できた。遅延等もそこまで気にならない。
Bluetoothキーボードなのでスマホタブレット等とも接続ができる。こんなギークなキーボード買う人はほとんどパソコンで作業する気がするが。

・赤軸が気持ちいい
これはキーボードの感想というよりかは、キーの感想だが…。Realforce偏荷重と体感的な重さを比べると
Realforce30g(AとかQキー当たりの小指で押すキー)<= 赤軸 << Realforce45g(FとかJキー当たりの大体のキー)<<<<< Realforce55g(Enterキーとか)
といった感じ。偏荷重で一番軽いキーよりかは少し重いが、大体のキーよりかは軽い、といった感じ。最初の30分ぐらいは慣れずに苦戦したが、今では打っていて気持ちがいい押し心地である。
全体的に言えば軽くなったと思える。Realforceで少し重いかな、と思っている人にはいいかも。(全30g使っていてそういうこと言うのはちょっとよくわからないです。多分音声入力とか使った方が幸せになれると思う。)
ぼくはRealforceのタクタイル感が気に入らなかったので赤軸を買ったが、あちらからメカニカルキーボードに移行するときは茶軸のほうが無難かもしれない。(間違っても青軸はいけない。キーが重すぎて投げ出したくなります。)

気になったところ

マザボのUSBポートとは接続が不安定?
最初、Realforceをつないでいたポートに接続したところ動作しなかった。ケースのフロントにあるUSB3.0, 2.0とは接続できた。今はBluetoothで接続しているため関係ないが、とりあえずつなぐだけで動くようになっていて欲しかった。

・Insertいる?
完全に個人的な感想であるが、Insertキー(Fn+Jキー)はどう使っていいのかわからない。今まで無変換+IJKLでカーソル移動をしていたため、無意識のうちにFn+Jを打ってしまいそうになった。あとはFn+Iでスクショが撮られてしまう事故が多発した。
フルサイズのキーボードに合わせた配置なのだろうが、あまり需要のないキーはEnterやBSに割り当てできたらうれしかったのだが…。…もしかしてAutoHotKey使えば解決する?(本末転倒)

・大きさの合ったパームレストをつけないと不格好
このキーボードは相当高さがあるため、パームレストを使う方が快適にタイピングできる。ただ、サイズの合ったパームレストを使わないと、せっかくの小さいキーボードの意味を持たなくなってしまう。
というわけで急遽FILCO純正のものを購入。

f:id:winzu44:20201106202137j:plain
かなりシンプルなパッケージで届いた

www.amazon.co.jp
これのSサイズでちょうどいい。ウッドパームレストより手ごろな価格で良い。色も六色から選べるので、机やキーボードにあった色を選べる。ぱっと見でラベンダーがグレーに見えてしまって購入したのは内緒、今度色覚異常のことでも書こうかしら。

f:id:winzu44:20201106202140j:plain
下のパームレストiiyamaのもの Realforceと一緒に使っていた

総評

買って一週間経っていないが、今のところは買ってよかったと思う。Realforceを一年近く使っていて、すんなり移行できるか不安であったが、すぐ慣れた。
ホームポジションをキープしたまま、カーソル移動ができるのは非常に快適なのでおすすめしたい。
無線接続が、Bluetoothではなく専用のレシーバーがあったら最高だったのだが…。
ギークでコンパクトなキーボードを求めている人にはお勧めである。こちらのほうがHHKBより慣れやすいだろうし。(ガチガチにギークを目指すのならHHKB無刻印英語配列か自作キーボードをどうぞ。ぼくはまだいいです…。)

Darknetをmakeするときに発生した "error while loading shared libraries: libopencv_highgui.so.4.5: cannot open shared object file: No such file or directory"の解決方法

Darknetを用いてYOLOを動かそうと思い、発生したのがこのエラーである。
なお筆者はLinux歴一週間もないため予めご了承いただきたい。

環境

Ubuntu 20.04
AlexeyAB/darknet
github.com

前提

makeしたあと./darknetを用いて実行しようとするとタイトルのエラーが出る

目的のライブラリ自体が存在しているかどうか確かめる

find /usr | grep libopencv_highgui.so.4.5

自分の環境だとこのように出力された

/usr/local/lib/libopencv_highgui.so.4.5
/usr/local/lib/libopencv_highgui.so.4.5.0

これができていなければそもそもmake時にエラーを吐かれると思われる。

環境変数に追加する

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

追加後の実行結果

./darknet
usage: ./darknet <function>

バックグラウンドでキー入力を読み取る Pythonライブラリ「keyboard」を使いキーロガーを作る

Pythonを使ってバックグラウンドで稼働するキーロガーを作った。

具体的には、「一秒間に特定のキーを押した回数をBB背景上に表示する」といったものである。



f:id:winzu44:20200409204052g:plain
画面左、やや上のところで 〇KPS と表示しているのが今回作ったプログラムである。キャプチャする際に、ブルーバックを切り抜いている。
はじめは「PyHooked」を使おうと思っていたが

ATTENTION: pyhooked has been deprecated in favor of keyboard for new projects. This library is will no longer be supported. Please use one keyboard or one of the alternatives listed in Alternatives.

 

 とあるのでライブラリ「keyboard」を使うことにした。

インストール

pip install keyboard

 プロンプトから実行してインストール。


キーボードイベントを読み取る

if keyboard.read_event().event_type == keyboard.KEY_DOWN: 

 このように記述すれば、キーが押されている状態を読み取ることができる。(厳密には、キーが押されるまでプログラムが待機する。)

バックグラウンドでキーの状態を読み取りたいだけならこれでOKだが、今回はキー入力を読み取ると同時にGUIの更新も行わないといけないため、少し工夫をしてやらないといけなかった。単純にこれだけだと、キー入力がないとき、この文でコードが止まってしまうためGUIがフリーズしてしまう。
そこで、

keyboard.is_pressed(key)
     # return bool

を使う。
引数で渡したキーが押されていたらTrueを返す。
入力検知対象のキーをリストにしておき、各キーが押されていることを確認したうえで、キーボードイベントを読み取らせている。

target_key = ['x', 'e', 'f', 'j', 'space', 'k', 'l', 'a', ';']        
while True:                                                                                         
      for key in target_key:
            if keyboard.is_pressed(key):
                   if keyboard.read_event().event_type == keyboard.KEY_DOWN:
                        key_counter += 1
      ....
      # この下にGUIの処理

こうすることで、キーの入力がない場合でもコードを止めないで済み、GUIの更新ができる。

全コード

参考

github.com