Gentooでeselect-repositoryを使用する

laymanがmaskされて使えなくなったので、eselect-repositoryに移行した。

laymanのアンインストール

まずeselect-repositoryのインストール前にlaymanをアンインストールした。

現在laymanに追加されているリポジトリを確認

layman -l

リポジトリを除去する

layman -d リポジトリ名

リポジトリが除去されたか確認

layman -l

laymanをアンインストール

emerge --unmerge layman

設定ファイルが残っていたので削除した。

rm /etc/portage/repos.conf/layman.conf

eselect-repositoryのインストール

emerge --ask app-eselect/eselect-repository

GitHub上の自分や他人の野良overlayを登録するには

eselect repository add リポジトリ名 git https://github.com/hoge/hoge.git

登録後はリポジトリを同期する必要がある。

emaint sync --repo リポジトリ名

ちなみにリポジトリ名はoverlay.xmlに書いたのと同じにしないと警告がでる。

reCAPTCHA v2とv3の違い

結論

殆どの場合においてreCAPTCHA v2でいい。reCAPTCHA v3では目視確認するオペレーターが事実上必須となる。

細かい処理の比較

reCAPTCHA v2

  1. reCAPTCHA v2を設置したページをユーザーが開くと画像認識クイズが出題される。
  2. クイズのトークンがフォームに埋め込まれる。
  3. ユーザーがフォーム送信すると、POSTによってトークンがバックエンドに渡る。
  4. バックエンドがトークンをGoogleに問い合わせると、ユーザーがクイズをクリアしたかどうかわかる。
  5. クイズがクリアされていれば処理を続行し、クイズがクリアされていなかったら入力画面に戻すなどする。

reCAPTCHA v3

  1. reCAPTCHA v3設置したページをユーザーが開くと、勝手に人間らしさのスコアが算出される。
  2. スコアのトークンをプログラマの好きな方法でバックエンドに渡す。 (やり方は指定されていないし、どう実装してもいいが、結局大抵はフォームに埋め込んでPOSTになると思われる。)
  3. バックエンドがトークンをGoogleに問い合わせると、スコアがわかる。
  4. スコアが高いなら処理を続行し、スコアが低いなら処理を保留するなどする。 (スコアが低い時の処理はどう実装してもいいが、ブログコメント等を一旦非表示にしておき、後からオペレーターが確認して問題なければ表示するとかになるだろう。)

qiita.com

なぜかRadeonでOculus Linkできない

Radeonドライバの設定をリセットしたらOculus Linkできるようになった。

症状は、Oculus Quest 2をUSBケーブル接続しても「Windows版Oculusアプリ」の「デバイス設定」で未接続と表示される。 「Windows版Oculusアプリ」を起動して、しばらくすると落ちて、再起動を繰り返すといったものだった。

PuTTYでSSHにログインしようとしたらエラーが出た

PuTTYSSHにログインしようとしたら

Disconnected: No supported authentication methods available (server sent: publickey)

とエラーが表示された。

この時、/var/log/auth.logには

userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

と記録されていた。

公開鍵かsshdの設定がおかしいのかと思ったが、結局PuTTYをバージョンアップしたらログインできるようになった。そういえば前もこんなことがあった気がする。PuTTYは定期的にバージョンアップしようと思った。


BlenderにFBXをインポートするとボーンの向きがおかしいことへの対処

問題

FBXをBlenderのデフォルト設定でインポートすると、ボーンの向きがおかしいことが多い。Blender以外のソフトで作成されたFBXをBlenderにインポートすると大抵こうなる。

ボーンが逆立っているユニティちゃん

ボーンの向きを修正する場合のインポート設定

調べたところ2種類あった。①がいい感じになることもあれば、②がいい感じになることもあった。好みに応じて使い分けるのがいいと思う。

①Unityユーザーの経験に基づく設定

1.「リーフボーンを無視」にチェックを入れる。

2. 好みに応じて「子を強制的に接続」にチェックを入れる。

3. プライマリボーン軸を「X軸」セカンダリボーン軸を「Y軸」にする。

xr-hub.com

y6yegami.hateblo.jp

②Maya製FBXをBlenderにインポートする設定

Unity Technologies JapanはMayaでモデルを作成しているようだ。

1.「リーフボーンを無視」「ボーン方向の自動整列」にチェックを入れる。

tsubakit1.hateblo.jp

所感

些細なことなのでどちらでもいいことなのだが、ちょっとした編集であれば、インポート時にボーンの向きを修正しないのもアリではないだろうか。がっつりBlenderで編集する場合はボーンの向きを修正した方がやりやすいだろう。

理由

インポート時にボーンの向きを修正すると、インポート前のFBXとはボーンの互換性が失われる。そうすると、Unity上でオリジナルのスキンドメッシュとBlenderで編集したスキンドメッシュを、同じボーンで動かすことができなくなってしまう。髪型やアクセサリだけ入れ替えるみたいな時にちょっと不便だったりする。

一旦ボーンの向きを修正してしまうと元に戻せない?ようだ。FBXのエクスポート時に、ボーンの向きをオリジナルと同じに戻せないかと思っていろいろ試したが無理だった。もしやり方を知っている人がいたら教えてください。

dhcpcdでdhcpサーバーにホスト名を通知して登録する

/etc/dhcpcd.confに次の記述を追加する。

# Inform the DHCP server of our hostname for DDNS.
hostname

これでDNSサーバーが名前解決できるようになる。

Gentoo Linuxの場合、以前はデフォルトでこの設定だったが、最近のアップデート以降コメントアウトされているので、手動でコメントアウトを外してやる必要がある。

WindowsのPython3の標準入出力でバイナリを扱う

Windows上のPython3では、標準入力からバイナリデータを読み込んだり、バイナリデータを標準出力に出力する方法がLinuxとは違っていたので記録しておきます。 ちなみにこのやり方でもLinuxで動きました。

import sys, os

# Read binary from stdin.
buffer_size = 1024*1024*128 # Change the buffer size as you like.
stdin_bytes = b''
while(True):
    read_data = os.read(sys.stdin.fileno(), buffer_size)  
    if len(read_data) == 0:
        break
    stdin_bytes += read_data

# Write binary to stdout.
os.write(sys.stdout.fileno(), stdin_bytes)

余談ですが、パイプって同時に一つしかデータを流せないので、入力データが2個に増えた時にちょっと困りました。普通にファイルでデータを受け渡しする方がエレガントさには欠けますが無難かもしれません。