Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

【読書メモ】言語はこうして生まれる  「即興する脳」とジェスチャーゲーム

ChatGPT-4の驚異的結果から、実は人間ってパターンマッチで会話しており文脈など理解していないのではないか……という疑念をもった方を見かけた事があります。

じゃあ言語って何やねんという事で、リベラルアーツな方々は日々議論を戦わせています。
で、この本は人間の言葉は「生成文法」や「パターンマッチ」などではなく、意志疎通の連続から言語が生まれたという仮説をたて本書で検証しています。
バベルの塔の説話のような統一言語があった訳ではなくジェスチャーや呻き声のようなものからボンヤリとしたパターンの空気感が形成され、それが言語になったというわけです。

これは知らなかったのですが、今知られている7000近い言語のうちの大半は赤道周辺に密集しているそうです。
食料確保が比較的簡単な地域では群れが固まる傾向にあるため交流が少なくなり言語が生まれる。
一方、現在の欧州のような痩せた地域では周辺の群れと交流しない事には生活を維持できないので言語が集約する傾向にある……そうです。
そういえば、中国の特に南部は山一つ隔てるとマトモに会話が成立しないと聞きますが、これはやっぱり南部は米所なのが影響しているんでしょうかね。

冒頭のGPTの話題についても著者の考えが示されています。
GPT-3時代に書かれた本である事もあるでしょうが……即興を伴うコミュニケーション能力が備わっておらず、またLLMの構造上そうはならない以上、AIに社会を乗っ取られるリスクは当面捨て置けるというのが著者の見解です。

読む切っ掛けになったツイート(死語)

「人は言語のルールを知らなくても会話している。物理法則を知らないままテニスをしたり、音楽理論を知らないまま歌をうたったりするのと同じである」──クリスチャンセン&チェイター『言語はこうして生まれる』p12

Ubuntu 22LTS on RaspberryPi4B(8G)にxArm for ROS2 humble

Raspberry Pi 4B (8Gbyte) に Ubuntu 22.04 LTSの環境を組んだ状態で、そこに ROS2 humbleとxArm ROS2の環境を構築します。

実際のところ

前提

作業

リポジトリをアップデートし、必要なソフトウェア類を追加

$ sudo apt update && sudo apt install curl software-properties-common -y

リポジトリに"universe"を追加、ROS2用の鍵ファイルを導入

$ sudo add-apt-repository universe
$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
$ sudo apt update && sudo apt install -y \
  python3-flake8-docstrings \
  python3-pip \
  python3-pytest-cov \
  python3-flake8-blind-except \
  python3-flake8-builtins \
  python3-flake8-class-newline \
  python3-flake8-comprehensions \
  python3-flake8-deprecated \
  python3-flake8-import-order \
  python3-flake8-quotes \
  python3-pytest-repeat \
  python3-pytest-rerunfailures \
  python3-rosdep2 \
  python3-colcon-common-extensions
$ cd ~
$ mkdir -p dev_ws/src
$ cd ~/dev_ws/src
$ git clone https://github.com/xArm-Developer/xarm_ros2.git --recursive -b $ROS_DISTRO

xArm SDKの環境を構築していない場合

$ cd ~/dev_ws/src/xarm_ros2
$ git pull
$ git submodule sync
$ git submodule update --init --remote

rosdepで必要な外部パッケージをいれます
初回想定なのでrosdep initを入れれますが、構築済みなら飛ばしてください

$ cd ~/dev_ws/src/
$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y

ここでgazebo周りのインストールに失敗しますが……今回は一旦捨て置きます。(多分Qtまわりかなと)

shuzo-kino.hateblo.jp
でやったように、都合の悪いパッケージ群は一旦すっ飛ばします。
おそらくarm用のGazebo系がダメかと思われるのですっ飛ばしてしまいました。

$ cd ~/dev_ws
$ colcon build  --symlink-install --packages-skip realsense_gazebo_plugin xarm_gazebo xarm_planner

LUKSでパスワードではなくキーファイルで送る

実際のところ

キーファイルの生成

一旦ランダムで。

$ dd if=/dev/urandom of=/path/to/keyfile bs=512 count=4

キーファイル対応の暗号化

$ cryptsetup luksAddKey /dev/sdX /path/to/keyfile

対応させた暗号ストレージのデコード

$ cryptsetup luksOpen /dev/sdX crypt-name --key-file /path/to/keyfile

物理キー化は考えもの

USBストレージみたいなモンに入れておけば、気分的にもセキュアに……とも思いますが。
有名どころのYubikeyを皮肉った、こんなミーム

LUKSで暗号化したディスク2台を同期してバックアップする

実際のところ

まずは暗号化したディスクを二系統用意しておきます。

$ sudo cryptsetup luksOpen /dev/sdX storageA
$ sudo mount /dev/mapper/storageA /mnt/storageA

$ sudo cryptsetup luksOpen /dev/sdY storageB
$ sudo mount /dev/mapper/storageB /mnt/storageB

これらを以下のrsyncコマンドで、AとBを同期します。

$ sudo rsync -av --delete /mnt/storageA/ /mnt/storageB/

vはお馴染みの詳細表示オプション。
aはアーカイブモード、つまりはファイルの権限やらディレクトリ構成やらを丸ごと同期できるオプション。
これにdeleteオプションを加えると、「BにあってAにないものをBから取り除く」事ができます。
Bの事情は一切加味せず、Aに寄せるので……原則Bは弄らない事を前提にする必要がありますね。