散髪ガチャ

近所に安い床屋があることに気づいたのでそこで散髪をした。随分大胆に切られた気がする。1050円。順番待ちエリアにマンガがたくさん置いてあって、高校の帰りに古本屋でマンガを立ち読みしていたことを思い出した。そしてこち亀は圧倒的に面白い。

帰りにスーパーで焼きそばの材料を買ってきた。『おいしい焼きそば』を自称する焼きそばをカゴに入れながら、この商品名によって売上はどのくらい上がるのだろうかと考えていた。『おいしくない焼きそば』よりは売れるだろうか、いや、物珍しさの効果で『おいしくない』方が売れるだろうか。あるいは、おいしくない商品なら『おいしい』の方が売れるというような交互作用が存在するのだろうか。

その後は『30日でできる! OS自作入門』を読み始めた。フランクな文章で読みやすいのだが、実践を重視しているくせにWindowsでフロッピーディスクに焼いて動かすという地獄のような実行方法で、Ubuntuでやるならそこを適宜読み替えていかねばならないのが手間だ。幸い先人は多くいる。

Raspberry Pi Zero WHで温度センサPart.1―キーボード・ディスプレイなしでssh接続するまで

※この記事は『のどごしZERO』を飲んで書かれた

↑6本飲み終わったので次はどうしようか考えている。

Raspberry Piで温度を計測してひたすらネットのどこかに投げ続けるやつ作ってる。Raspberry Piにキーボードを繋げないとセットアップできないのかと思ったが、母艦PCでインストールメディアを作る段階で細工をしておけばいきなりssh接続できる。ssh接続できればなんでもできる。みんな黒い画面好きだよね?

調達

Raspberry Pi Zero WH(2000円@マルツ)はwifiがついていて何かと便利だ。ただし電源供給用のmicro USBケーブルとストレージ用のmicro SDカード(16GB480円@マルツ)、そして母艦となるPCは必要だ。micro USBケーブルの逆側はACアダプタでコンセントに繋いでもいいし(5V3A; 700円@秋月)、Type-AでPCから給電してもいい。micro SDカードに自分でOSのイメージを焼く必要があるのでmicro SDカードが挿さる母艦PCが必要だ。僕の場合はSDカードサイズのマウンタを使ってノートPCのSDカードリーダーに接続した。

母艦PCでインストール準備

Raspberry Pi向けのOSであるRaspbianのイメージをダウンロードし(NOOBSではない)、フリーソフトのEtcherでmicro SDカードに焼く。Raspbianはトラブル対処の自信がある人だけがLiteを選んで良い。Etcherはマルチプラットフォーム対応だがUbuntu16.04で使ったところmicro SDカードを認識しなかったのでWindows10で焼いた。どうしてもUbuntuでやりたい人はイメージファイルを焼く別のソフトを探す必要がある(いくらでもありそう)。焼き終わるとmicro SDカードが(論理的に)取り出されるので物理的に取り出して再挿入する。デバイス名がbootになっているはずだ。

ssh接続を有効にするためboot直下にsshという名の空のファイルを作る。Windowsのメモ帳で作ると勝手にssh.txtになってしかもエクスプローラ上ではsshと表示されるので注意。次に同じくboot直下にwpa_supplicant.confを作る。中身は参考リンクのものをコピペして編集する。これによって自動でwifiに接続するようになる。

Raspberry Piでの作業

micro SDカードを母艦PCから取り出しRaspberry Piに挿入する。その後電源をつなぐ。micro USBが刺さる端子は2つあるがPWRの方だ。緑色のランプが点灯し、Raspberry Piが起動する。

母艦PCからssh接続

母艦PCでターミナルを開きssh pi@raspberrypi.localと打つ。ここまでの手順に間違いがなければssh接続が成功し、パスワードを聞かれる。パスワードはraspberry

大抵なんか間違ってるよ

でも素人は大抵sshで名前解決ができないとか接続拒否とか出る。そのときはRaspberry Piの電源を抜き差ししたり待ったりする。それでもダメならsshファイルを作るあたりから見直す。

evdevを消してパソコンを漬物石にして直した/デジタル断捨離

※この記事は『のどごしZERO』を飲んで書かれた。

↑所詮発泡酒だが『ぐい麦』に比べればはるかにマシ。甘い香りがある。

Ubuntuでマウスやらキーボードやらを使うときはlibinputとかevdevがドライバとして動いている。それを消すとどうなるかというと、マウスもキーボードも使えないのでログイン画面で詰む。

発端はマウスの不調(体感)だ。カーソルが跳ねたり動きが鈍かったりということがなんとなく増えた気がしていたが、たまに起きるだけだから測定も原因特定もできずにいた。でも何か対策っぽいことをせずにはいられずにドライバ周りをいじっているうちにうっかりevdevを消したままrebootをかけてしまったらログインできなくて詰んだ。

sshでコマンドを実行できないかとか、リカバリーモードなら起動できないかとかいろいろ案はあったが、どれも成功せず(sshはsshdがないからだがなぜリカバリーモードに入れないのか)結局SSDをバックアップしたうえでUbuntu18.04を再インストールした。

一応バックアップはしたが設定は自力で再調整するのが楽しいし、作業用の環境なんかはほとんどクラウドにあるので何も輸送する必要はないかもしれない。いい時代だ。

処分

成り行きで学科のPCの処分作業を手伝った。意外とヤバい情報が入っていたのでしっかりと消してから捨てたかったのだが、それが難しかった。Windowsの不自由なPCはOSが入っているドライブのフォーマットができないし、コマンドプロンプトで全消去のコマンドを実行してもOSは無視される。傲慢なWindowsは自らが消去されるべき状況などあるはずがないと考えているのだ。

1台だけUbuntuがあり、念願だったsudo rm -rf / --no-preserve-rootを実行する機会に恵まれた。実際にはなんでも消えるわけではなく、/proc(プロセス?)や/devは消えない。しばらく待つとデスクトップやメニューバーのアイコンが消えていき、おそらくrmコマンドすら消去されて処理が停止する。Ctrl+Cで止めてターミナルにいろいろ打ち込んでみたが、lsbashrebootCommand not foundとなった。

念には念を入れ、電動ドリルでHDDに穴を開けた。弊学科に工作室があり、そこに旋盤やらドリルやらがあることを修了直前に知った。研究というのは同じことをやっているのが世界で数人ということも珍しくなく、デバイスを自作する必要に迫られることがある。僕のArduinoによる圧力センサなどかわいいものだ。

作業の報酬としてプレミアムモルツをもらった。パソコンチョットデキルアピールはしておくものだ。

Mastodon諦めました/Spotify諦めました

今日はコンピュータに嫌われた一日だった。悲しい。

Mastodon

再びマストドン立てようと思ったんだがメールが送れないのと他インスタンスとの通信ができないトラブルを解決できず諦めた。どちらも初めて出くわした。

前者は名前解決なんちゃらのエラー、後者はどうやらSSLと関係があるようだったが僕の知識では理解できなかった。そもそもMastodonは恐ろしく複雑だ。使いやすくする努力はされているが少しでも不具合が起きるとそれを解決するためにはとんでもない知識と労力が必要になる。

Spotify

Spotifyでローカルの音楽ファイルを再生したかったのだが、mp3にしか対応していなかった。そこで急遽音楽フォルダ内を全部掘ってmp3じゃないファイルをmp3に変えるスクリプトを書いた。

しかしそうして生成したファイルをSpotifyで再生しようとすると、再生ボタンを押した瞬間にSpotifyアプリが終了する。ターミナルからアプリを開いているとログが残るが、終了時に表示されるのはこれだ。

[0228/053947.271857:ERROR:input_method_base.cc(146)] Not implemented reached in virtual ui::InputMethodKeyboardController *ui::InputMethodBase::GetInputMethodKeyboardController()Using InputMethodKeyboardControllerStub
Segmentation fault (コアダンプ)

うーん。軽く調べてみるとChromiumのバグの疑いが強く、2018年11月辺りに報告が頻発している。しかしローカルの曲を再生するときだけこうなるのでSpotify側にも問題がありそうだ。

怪異・妖怪ゼロ食い/fish!!

学部生の授業のために作ったプログラムがどうもおかしいという話なので報告をよーく読んでみたら、0から始まる数列をExcelで読んだときに数値扱いされて左端の0が「食われる」という事件だったようだ。キレそう。Excelを許すな(俺が悪い)。なお検証の過程でJestの使い方を覚えた。でもCDNからモジュールをインポートしていることをJestが気づいてくれなくてエラーが出まくってやっぱりキレそう。

自宅のPCのシェルをfishに変えた。昆虫なので色がきれいなのは好き。欠点はググラビリティ。

モノを減らす

もし修士を取って予定通りに就職するとなると、今の家を引き払うことになる。これを機会に必要のないものを捨てるのはもちろんだが、それ以前にゴミは捨てねばならない。とは言うものの、片付けは苦手だし早朝のごみ捨てはもっと苦手だ。

月曜日は資源ごみの回収日だ。さっき缶と紙を捨ててきた。缶はだいぶ貯めてしまっていたのですごい量だった。回収場所に行ってみるとかごが既にいっぱいだったので一つずつ潰して小さくしていれなければならなかった。片付けというのは難しい。

実験募集が終わったので隠していたブログメニューを復活させ、過去の記事を見やすく戻した。ブログが異様に重いのもなんとかしたい。たぶん同じサーバー上で動かしているMastodonを落とせばいいんだけど、それをやってしまうのは寂しい。純粋に感情の問題だ。

そういえば昨日紹介した『Hand Simulator』だが、Steamの設定からSteam Playのバージョンを最新版であるProton3.16-5 Betaにしたところ問題なくプレイできた。操作が難しい。Steamで面白いゲームがあったら紹介してください。普段はDota2ばっかりやってます。

LMMSでLinuxDTM

好きな曲を耳コピして遊ぶことがある。Windowsを使っていた頃はDominoを使っていたが、Linuxでどのソフトが適任かわかりかねていた。現状の結論としてはLMMSが良い。

LMMSはaptで入る。

sudo apt install lmms

特別最新版にこだわる理由がなければこれでよい。

LMMS初心者がつまづくのは音源だ。LMMSのデフォルト音源はよくない。なぜか入力と音高がズレているし、単純に音が悪い。プラグインのsf2 Playerを使ってフリー音源を読み込む。僕はFluidSynthとSGM-V2.01を入れた。

ググればそれぞれの.sf2ファイルが見つかるので、ダウンロードして~/lmms/samples/soundfontsに置いておく。

左端のバーからInstrumental pluginsを開き、sf2 Playerをソングエディタにドラッグする。するとトラックが追加されるのでクリックしてプロパティを開く。

FILEの右にあるフォルダマークをクリックし、先ほどダウンロードした.sf2ファイルをインポートする。その後PATCHの右のスパナのマークをクリックして音色を選択する。ソングエディタの黒い四角が並んでいるエリアをダブルクリックするとピアノロールが開き、後はDominoと同じ感覚で入力する。弱点はピアノロールに複数のトラックを表示できないことだ。

WindowsでできていたことのほとんどはLinuxでもできるが、DTMだけはできていなかった。しかしLMMSはきちんと使いこなせばDominoと同等のことはできそうだ。

なんでもかんでもLinuxでやるおじさんの次の目標はSteamゲーム『Hand Simulator』をやることだ。脳による身体のコントロールはそれなりに学んできたので、その過程を全部バラして自分の体を動かすことがどれだけ難しいかを再体験するゲームとして興味を持っている。

Steam Playを有効化すれば起動は可能なのだが、おそらくフォントの問題で文字が全く表示されず、ゲームを開始できない。

あと一歩のところまで来ている感じはする。以前は起動前のオプション画面ですら文字がなかったが、今は表示されるようになっているので改善も進んでいるようだ。

Linuxの未来は明るい。

 

Ubuntu18.04はlibinput

※この記事は『本搾り オレンジ』を飲みながら書かれた。

昨日の記事の続きだ。新しいデバイス名を指定することで変換行列を指定することには成功した。しかし奇妙な現象が発生した。Kritaで絵を描くとき、細い線が引けないのだ。よく調べてみると、筆圧が5%を超えるまでクリック判定が発生していなかった。これをつぶさに調べる過程でデバイス名が変わっていた理由も判明した。

なぜUbuntu18.04にアップグレードするとデバイス名が変化していたのか。なぜ筆圧とクリックの挙動が変わってしまったのか。それはlibinputのせいだ。libinputはデバイス入力ドライバで、xinputの奥で動いているものらしい。16.04では液晶タブレットはevdevドライバで動いていた。18.04ではlibinputドライバが導入され、液晶タブレットの管理もlibinputに引き継がれたようだ。

考えるのが面倒だったのでlibinputを消したら解決した。

sudo apt purge xserver-xorg-input-libinput

libinputを消したらマウスの加速プロファイルが変わってしまって違和感があった。GNOME Tweaksから設定をFlatに戻したら直った。

今日のUI心理学

やろうと思ったんですが、ゲシュタルトの法則を一つずつ紹介していくだけだとクソつまんないのでもうちょっと面白いところまで読み進むのを待っててください。

Ubuntu18.04へのアップグレードに伴うデバイス名の変化

Ubuntu16.04で液晶タブレット(UGEE HK1560)をデュアルディスプレイで使うとき、ペンタブレットの入力を片方のディスプレイのみにマッピングするためにはxinputの”Coordinate Transformation Matrix”プロパティを使う。

私の場合は左のディスプレイ(液晶タブレット)が1920×1080で右のディスプレイが2560×1440だ。つまり液晶タブレットの入力はそのままだと2つのディスプレイをつなげた4480×1440の長方形にマッピングされる。これを左のモニターのみにマッピングするためには、x座標0~4480を0~1920に、y座標0~1440を0~1080に写像するような変換行列を用いる(3行3列の1はたぶん筆圧は無変換っていう意味だったと思う)。

さて、これを実行するコマンドは
xinput set-prop "UC-Logic TABLET MONITOR Pen" --type=float "Coordinate Transformation Matrix" 0.428571 0 0 0 0.75 0 0 0 1
だっ。Ubuntu16.04では。

Ubuntu18.04にしてからこのままのコマンドでは以下のようなエラーを吐くようになった。

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  131 (XInputExtension)
  Minor opcode of failed request:  57 ()
  Serial number of failed request:  19
  Current serial number in output stream:  2

なんだこれは?ググっても全然わからない。そもそもLinuxでペンタブレットを使おうという変態の絶対数が少ない。

xinputでデバイス名を確認したらこうなっていた

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ UC-Logic TABLET MONITOR Mouse           	id=10	[slave  pointer  (2)]
⎜   ↳ E-Signal COUGAR Minos X3                	id=11	[slave  pointer  (2)]
⎜   ↳ E-Signal COUGAR Minos X3                	id=12	[slave  pointer  (2)]
⎜   ↳ LingYao ShangHai Thumb Keyboard         	id=16	[slave  pointer  (2)]
⎜   ↳ UC-Logic TABLET MONITOR Pen Pen (0)     	id=18	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Power Button                            	id=7	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=8	[slave  keyboard (3)]
    ↳ UC-Logic TABLET MONITOR Pen             	id=9	[slave  keyboard (3)]
    ↳ Mistel MD600                            	id=13	[slave  keyboard (3)]
    ↳ Mistel MD600                            	id=14	[slave  keyboard (3)]
    ↳ LingYao ShangHai Thumb Keyboard         	id=15	[slave  keyboard (3)]
    ↳ E-Signal COUGAR Minos X3                	id=17	[slave  keyboard (3)]

理屈はわからないが、なぜかこれまで使っていたデバイス名”UC-Logic TABLET MONITOR Pen”はキーボード扱いになっていた。その代わりに”UC-Logic TABLET MONITOR Pen Pen (0)”という怪しげなデバイスが出現している。先ほどのコマンドのデバイス名をこちらに入れ替えたところ、成功した。

LinuxでHK1560は普通に使える。筆圧も取れる。ワコムの同サイズ製品は18万円するのに対してHK1560は現在4万円だ(こちらはFHDであちらは4Kだが)。ガラスの厚みによる視差は液タブの宿命として当然あるが、それはワコムだろうとゼロにはできない以上程度の問題でしかない。発色が悪いと言われている(おそらく1677万色ではない)が、僕はそもそもきちんとキャリブレーションされたモニターを一つも所有していないのでこれを問うのは無意味だ。ペン先の沈み込みもよく不安がられる要素だが、ワコムの飛び出したり引っ込んだり不安定なペン先よりは弾力のあるこちらのペンの方が描きやすく、筆圧も自然につけられる。ワコムはドライバが不安定だと言われるが、こちらはLinuxで幅広く使われているxinputで作業中のトラブルは一度もない。

描画ソフトにはKritaを使っている。非常に大きな特徴として消しゴムツールが存在しない(全てのブラシツールに消しゴムモードがあり、オンオフして使う)ことが挙げられるが、慣れればどうということはない。

実はメインマシンをUbuntuに変えるときにこの辺りの用途がきちんとこなせるか不安だったのだが、マッピングを解決するだけですぐに使えたことで僕の中でのUbuntuへの信頼が高まった。

今日のUI心理学

2.2 類同

見た目が似ているものはグループとして見える。当たり前だね。小学生がやるみたいにメニューの項目で1つずつ色を変えたりしてはいけないということだ。