とりあえずの記録

はじめは同学科の人向けのナレッジまとめでした

マイナンバーカード更新後,iPhoneに新しいカード情報が入らないときは

操作を完了できませんでした。(iPhoneMyNumberCardClient.iPhoneMyNumberCardClientError エラー1)と表示されている方へ.

イナポータルアプリから,「iPhoneマイナンバーカード」を「削除」しましたね?
実はそれ,消えていません.revoke(無効化)されただけで,普通にWalletの中に居座っています

  1. Walletアプリを開きます
  2. マイナンバーカードを選択し,「カードを削除」をタップ
  3. 再度,マイナポータルアプリからカードの登録を試みる
    と,問題なく進むはずです.

マイナンバーカードを更新した後,更新前のカードで登録していた「iPhoneマイナンバーカード」をどうすべきかについての案内ってどこにあるんでしょうか.私は見つけられず,なんとなく進めてこのトラップにハマってしまいました.

特定のクライアントでのみ,todoistが正常に同期してくれないときは

たまに,内容が古いままであるにも関わらず「同期:n秒前」とさも最新であるかのように振る舞うことがあります.

ほとんどの場合「⌘+R」のリロードで解決していましたが今回は治らず,再インストールしても治らず,困りました.
最終的に,

  1. ユーザーアイコンをクリック
  2. 「ログアウト」をクリック
  3. 再度ログイン

であっさり解消しました.

これでもだめなら,メニューバーの「Todoist」→「Clear application data」を試すといいのかも.

キャッシュコヒーレンシに関する仮まとめ

まだ詳しく理解できていない領域についてのまとめです.誤りを含んでいる/適切とは言えない記述がある可能性が相応に高いです.予めご了承ください.

キャッシュコヒーレンシ:CPUキャッシュとメモリ内のデータを同期させる仕組み.
これがうまく機能していないと,キャッシュとメモリ,異なるキャッシュレイヤ間でデータが一致しなくなってしまう.(→キャッシュコヒーレンシ問題)

基本的には,プロセッサがハードウェアレベルでうまくやる.
(Intel CPUだと,BIOS設定からスヌープモードを切り替えることで動作を少し変更できる.)

OS・ソフトウェアレベルで直接介入することは困難.次のような策を取る.

  • メモリバリア(メモリフェンス)を用いて命令の実行順序を制御することによって,明示的にキャッシュの内容を同期させる
  • mutexやspin-lock,semaphoreなどの同期機構を使用して,共有データへのアクセスを制御する
    • 同期機構の実装にはアトミック命令が使用される.
      アトミック命令の実装上,メモリフェンスの働きを有していることが多い(?).
      よって,副次的にメモリとキャッシュで整合性をもたせられることが多い?
  • RTOSなどの組み込み系環境では,特殊なCPU命令を実行してキャッシュのフラッシュや無効化を行えることも

x86系CPUにおけるメモリバリア命令の1つとして,mfenceがある.
それまでに行われたすべてのメモリ書き込みが完了するまで,後続のメモリ書き込みは開始されない.
C言語でmfenceを実行するには,GCCやclangが組み込み関数として提供している__sync_synchronize()を用いることが多い.

なお,読み込みのみ保証するlfenceや書き込みのみ保証するsfenceを使用することでパフォーマンスへの影響を抑えることが可能.ただしコンパイラによる組み込み関数としては用意されていないため,インラインアセンブラで記すか,emmintrin.hをincludeして各関数を記すかして用いる.

Invisalign Go 治療レポート Vol. 2

本稿は,以下の投稿の続きです.

tamasan238.hatenablog.com

早くも折り返しとなり,インビザラインアライナーをつけたままの生活にも慣れてきました.というわけで,中間報告です.

歯並びについて

  • 目に見えて整っていくのが嬉しいです
    • 1枚のアライナーでは最大0.25mmしか動かせないようですが,ちゃんと0.25mmずつ動いてくれてるな...!と分かります.
  • 歯磨きがすごく楽になりました
    • 実は一番驚いたのがこれです.歯並びが整っているとこんなに磨きやすいんですね.

日常生活について

  • 痛みはほぼなくなりました
    • 1,2枚目のアライナーで感じていた,装着中・つけ外しの痛みはほぼなくなりました.
    • 次第に,歯に変な力をかけない外し方が分かってきます.
  • それでも,硬いものを食べるのは避けたい
    • 特に新しいアライナーに替えてすぐの場合,「やわらかめ」のお食事でないと辛いです.
    • 意外に感じたのが,パン.一見やわらかそうに思えますが,こいつはなかなかの強敵です.可能なら食べる前に1口サイズにカットしたい.いつもの調子でトーストにガブッといくと,「アガガガガ」ってなりますのでご注意を.
  • 爪切り注意
    • 親指の爪を切りすぎると,取り外し用のパーツ(プラー,リムーバー)がないと外せなくなっちゃいます.親指だけは白い部分が若干残るようにするのがおすすめ.
  • 外食 / 間食は減ります → 伴って,支出 / 体重も減ります
    • 食事の前後でいちいちお手洗いに行くのはやはり面倒です.ある程度自由の効く環境で始めるのが良いですね.入学/入社してすぐ,などは大変そう.
    • 「ちょっと気分転換がてらカフェで休憩 / 作業」の難易度が爆上がりします.水だけで滞在するわけにもいかず,コーヒーがぶ飲みしてすぐアライナーつけに行くのもつらく.......「ドライブスルーでスタバの新作買ってくか」もほぼ無理です.
    • 機内のドリンクサービスでは「お水ください」としか言えません.空でいただくJALのアイスコーヒーが大好きなので,飲めないのはつらい.
    • 集中して作業に取り組みたいときのカフェインブースト・ブドウ糖ブーストも気軽には使えません.小中学生の頃を思い出して,自分のplainな力で頑張ることになります.

メンテナンスについて

  • アライナーの内側,特に咬合面に接する部分はよくブラッシングする
    • 唾液がほとんどいかないので,丁寧に歯磨きしていても虫歯になりやすいようです.歯だけでなく,アライナーも忘れずきれいにすることが重要ですね.
  • 毎日,夕飯を食べている間に洗浄剤を使っています
  • たまに,一部分が鋭利なアライナーがあります
    • 一番奥の歯の歯茎近くにバリがあり,舌の側面が痛むアライナーが数枚ありました.
    • さほど大きくなかったので親指の爪でなんとかしましたが,なんともならなければ担当の歯科医に相談して削ってもらう必要があり,少々厄介です.

次の投稿はおそらく完了時ですかね.引き続き,頑張ります.

Vol. 1 はこちら

tamasan238.hatenablog.com

IPフラグメンテーションとTCPセグメンテーション,UDPの場合,TSO/LRO/UFO/GSO/GRO

巨大なペイロードTCP/UDPで送信するとき,

  • TCP
    • TCPセグメンテーションが機能する.これにより,送出側ホストでペイロードを分割して複数のTCPパケットで送出する.
    • ただし,何らかの理由でこれが十分に機能しない場合,IPフラグメンテーションが作動する.これにより,1つのTCPパケットが複数のIPパケットに分割されて送信される.
  • UDP
    • UDPには,TCPセグメンテーションのような機能がない.
      したがって,送出するアプリケーション側できちんとペイロードサイズを制御する必要がある.
    • これが十分でない場合には,TCPと同様にIPフラグメンテーションが作動し,1つのUDPパケットが複数のIPパケットに分割して送信される.

IPフラグメンテーションについて

IPフラグメンテーションの過程で,リアセンブル(再組み立て)できるよう次の処理が行われる.

  • 分割したすべてのパケットのIPヘッダ内Identificationフィールドに対し,元のIPヘッダの同フィールド値を記す.これによって,リアセンブル時に元のパケットを区別する.
  • 最後を除く各パケットのIPヘッダでMFビット(More Fragment bit)が立ち,別途届く他のパケットを組み合わせる必要があることを示す.
  • IPヘッダ内Fragment Offsetフィールドに,このパケットのペイロードが元のパケットのどの位置からを担っているのかを示す.これによって,同一IDを有する複数の分割済みIPパケットを,どの順番でリアセンブルすればよいのかを識別する.

ただし,

  • アセンブル時にフラグメント後のIPパケットが一部欠損している場合,リアセンブルは失敗し同一IdentificationをもつすべてのIPパケットは破棄される.
  • IPヘッダのDFビットが立っている場合,IPフラグメンテーションは行われない.したがって,対応できない場合にはそのパケットは破棄される.
    • Path MTU Discovery(ICMPで動作)を行う際や,多くのケースでTCPパケット送出時にDFビットが建てられる.
      • TCPでDFビットを立てるのは,TCP使用時にIPフラグメンテーションが発生すると,分割後のパケットが1つでも欠落した場合にはじめから送り直すこととなり効率が大変悪いため.(TCPセグメンテーションで完璧に分割すべき)
    • 一部のケースでは,DFビットを無視してフラグメントするケースもある.
      例:Ethernet over IP機能 : FAQ : UNIVERGE IXシリーズ | NEC

実機で確認

$ netperf -H TARGET_HOST_IP -t TCP_STREAM -- -m 65477
$ netperf -H TARGET_HOST_IP -t UDP_STREAM -- -m 65489

のように,netperfでメッセージサイズを大きくした状態でスループット測定を走らせた.

経路上のL2 SWでミラーポート設定を行い,Wiresharkで見てみると次のようになった.

  • TCP
    • MTU(1514 bytes)と同サイズのEthernetフレームが多数.各パケットのペイロードサイズがきちんと小さくなっていた.
    • DFビットOn.
  • UDP
    • MTU(1514 bytes)と同サイズのEthernetフレームが多数
    • Wiresharkでリアセンブルに成功し[Reassembled in xxxxx]と表示されるパケット群と,パケットが一部欠落しリアセンブルできず,当該表記のないパケット群が見受けられた.
    • DFビットOff.

関連技術

CarPlayが正しく機能しなくなったときは (Pioneer PVH-9300DVSZS)

スズキの純正ディスプレイオーディオPVH-9300DVSZS(Pioneer製)を使用していて,あるときCarPlayが正常に機能しなくなった.同様の事例はありそうなので,今回の解決策を記しておく.

  1. ケーブルの断線
    1. 最も可能性が高いのはケーブルの破損.他のケーブルで試してみる.
  2. iPhoneの問題
    1. 強制再起動でだいたいの問題は解決する.
      1. 音量ボタン上 を押して離す
      2. 音量ボタン下 を押して離す
      3. 電源ボタンを長押しし続け,りんごマークが出てきたら離す
    2. もしiOSのアップデートが来ていれば,適用する
    3. 本体がとても熱いようであれば,しばらく接続を解除して冷ます.
    4. 他の人のiPhoneを繋いで確認することで,問題の原因がiPhoneなのかを切り分けられる.
      1. ただし,iOSにバグがあった場合を除く.
      2. 他のiPhoneでは正しく動作するのであれば,Appleサポートへ.
  3. ディスプレイオーディオ/カーナビの問題
    1. とりあえず再起動 (エンジンを切って,しばらく放置して再度エンジンをかける)
    2. ファームウェアのアップデートが来ていないか確認
      1. Pioneer PVH-9300DVSZSの場合,ここ
      2. 最新バージョンは28.04なので,これになっていなければアップデートを行う.
  4. 車両側の問題
    1. 特に後付けした電装品によって,電圧が不安定になったり激しいノイズが出ていたりすることが稀にある.
    2. 電装品をつけてすぐ or 長らく使用しておかしくなった場合には,外してみると解決するかもしれない.

なお,Pioneer製品(carrozzeriaブランド含む)では,使用できるUSBメモリにいろいろと制約があるので注意.今回の場合,FAT16またはFAT32でフォーマットする必要があった.

メーカーが非対応と示しているMacでは,ディスクユーティリティでFAT32を指定してフォーマットしても,Terminalからコマンドで同様にフォーマットしても,読み込まなかった.

Windowsの場合も,64GB以上のUSBメモリではフォーマット時にFAT16/FAT32選択肢に現れない.I-O DATAが提供するハードディスクフォーマッタを入手し,これによってフォーマットすることで正常に認識してくれた.

私の場合,

  1. 接続の怪しかったUSBケーブルを交換しても認識せず,
    (充電はされる)
  2. iPhoneを強制再起動しても正常に動作せず,
    (充電・認識はするが,楽曲を再生するとCarPlayが落ちる.ナビ音源は再生できる)
  3. ファームウェアもアップデートすることでようやく正常に使えるようになった.

昨日までは正常に使用できていたためとうとう壊れたかと思ったが,もうしばらくは使えそうで一安心.

脳内をターゲットとしたデフラグ実行について

思考↔タイピングを繰り返すうちに,頭の中で断片化が発生してallocation costが高くなっているかもしれない.自分の中で効果的だと感じている手法をここに残しておく.ただ,総じてうまく言語化できているとは言えない.

  • 筆記用具を用いて頭の中をdumpする
    • e.g.) for ホワイトボード,紙
    • 人間側のI/Oとしてキーボードや音声ではなく,手書き/手描きを用いることでどこか違う領域が働いてくれる感覚がある
  • 人とディスカッションする
    • 成功すると非常に効果的だが,成功する確率はそう高くない 
    • AIチャットよりも,人と話している方が効果が高い気がしている
      • 現時点ではAIモデルに実装されていない,人間ならではの無意識的な要素が有効に働く?(セレンディピティというやつ?)
      • これが事実であるかは一旦置いておいて,これがある限り,教職は無くならないのだと思う.
        • AIファースト時代における教職の存在意義,というのは言い過ぎか.
    • in-personかonlineか
      • 頭の中の普段使わない領域を活性化させるという観点では,おそらくin-personのほうがよい
      • 一方,できるだけ使わなくともよい領域でのリソース消費を抑えて集中するためには,電話/onlineのほうがよい
      • 一概にin-person/onlineのどちらが優れていると言えるものではないため,両方自由に選択できる状況が望ましい?

あとは,旅行や食事などで非日常的な体験を生活に取り入れるのもよいと聞いたことがあるが,これはデフラグというより不要なファイルの削除による空き領域の増加であるように感じる.

ここまで書いて思ったことが1つ.もしかしてデフラグと同じくらい,脳内全体を使って考える(いろんな領域を活性化させる)ことが重要だったりするのだろうか.人工知能領域でない,医学的な意味でのニューラルネットワークについて学ぶ意欲が高まった.脳科学領域のOCW/MOOCコンテンツを見つけたので,空き時間で勉強してみることにした.

人間脳科学入門 – 東北大学オープンオンライン教育開発推進センター

せっかく大学院生なのだから弊学内で勉強できるとなおよかったのだけれど,うちはそもそも単科大であり関連する講義がほとんど無い & 授業のオンライン化によりそう簡単には潜り込めなくなってしまった.

情報工学領域における情報処理学会/電子情報通信学会の立ち位置と似ているような,脳科学領域の国内学会ってどこなんだろう.

久しぶりに「ブログ感」のある記事を書いた気がする.