From 7ba0a81bdf47b2f2bf016818141f49f64b5697a2 Mon Sep 17 00:00:00 2001 From: falsycat Date: Wed, 28 Jun 2023 23:29:10 +0000 Subject: [PATCH] deploy: b4fa8f0689681664f48781ad1fd738e7486823c3 --- 404.html | 2 +- blog/2023/0301-fukue-island/index.html | 2 +- blog/2023/0303-fukue-island/index.html | 2 +- blog/2023/0304-fukue-island/index.html | 2 +- blog/2023/0319-moving/index.html | 2 +- blog/2023/0618-sarushima-island/index.html | 2 +- blog/index.html | 2 +- categories/index.html | 4 +- index.html | 4 +- index.xml | 2 +- ....96d88c45d4b9d6ef032ea270a2730733.min.json | 1 - ....97d78cb70e55c67800694f3a27cfe0ce.min.json | 1 + ....1536ace533d46c5e6ba5603af477ff2f.min.json | 1 + ....b5280e8bbb1751fc9b140e6147b1b336.min.json | 1 - linkmap | 35 +++++------ .../cooking-rice-with-saucepan/index.html | 2 +- note/chores/one-hand-egg-cracking/index.html | 2 +- note/essay/effective-presentation/index.html | 4 +- note/index.html | 4 +- note/index.xml | 2 +- note/info-tech/c-cpp-sanitizer/index.html | 4 +- note/info-tech/dart/index.html | 4 +- note/info-tech/flutter/index.html | 57 ++++++------------ note/info-tech/install-archlinux/index.html | 4 +- .../install-flutter-on-archlinux/index.html | 58 +++++++++++++++++++ note/info-tech/obsidian/index.html | 2 +- note/info-tech/pleroma/index.html | 4 +- .../publish-obsidian-by-quartz/index.html | 4 +- note/info-tech/qemu/index.html | 4 +- note/page/2/index.html | 4 +- .../hypothesis-test-multiplicity/index.html | 2 +- .../hypothesis-test-parametric/index.html | 2 +- .../statistics/hypothesis-test/index.html | 2 +- .../japanese-text-all-stars/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- sitemap.xml | 2 +- tags/blog/index.html | 2 +- tags/cat/index.html | 2 +- tags/chores/index.html | 2 +- tags/cooking/index.html | 2 +- tags/development/index.html | 4 +- tags/development/index.xml | 2 +- tags/essay/index.html | 2 +- tags/gourmet/index.html | 2 +- tags/howto/index.html | 4 +- tags/howto/index.xml | 2 +- tags/index.html | 4 +- tags/index.xml | 2 +- tags/info-tech/index.html | 4 +- tags/info-tech/index.xml | 2 +- tags/library/index.html | 4 +- tags/library/index.xml | 2 +- tags/lifehack/index.html | 2 +- tags/linux/index.html | 2 +- tags/mountain/index.html | 2 +- tags/note/index.html | 4 +- tags/note/index.xml | 2 +- tags/note/page/2/index.html | 4 +- tags/photo/index.html | 2 +- tags/programming-language/index.html | 2 +- tags/software/index.html | 18 ------ tags/software/index.xml | 1 - tags/software/page/1/index.html | 1 - tags/statistics/index.html | 2 +- tags/study/index.html | 2 +- tags/tool/index.html | 2 +- tags/travel/index.html | 2 +- tags/virtualization/index.html | 2 +- tags/web/index.html | 2 +- tags/word-play/index.html | 2 +- 71 files changed, 176 insertions(+), 156 deletions(-) delete mode 100644 indices/contentIndex.96d88c45d4b9d6ef032ea270a2730733.min.json create mode 100644 indices/contentIndex.97d78cb70e55c67800694f3a27cfe0ce.min.json create mode 100644 indices/linkIndex.1536ace533d46c5e6ba5603af477ff2f.min.json delete mode 100644 indices/linkIndex.b5280e8bbb1751fc9b140e6147b1b336.min.json create mode 100644 note/info-tech/install-flutter-on-archlinux/index.html delete mode 100644 tags/software/index.html delete mode 100644 tags/software/index.xml delete mode 100644 tags/software/page/1/index.html diff --git a/404.html b/404.html index 352a706..233ecdc 100644 --- a/404.html +++ b/404.html @@ -9,7 +9,7 @@ - diff --git a/blog/2023/0301-fukue-island/index.html b/blog/2023/0301-fukue-island/index.html index 4c09d7a..61ef31d 100644 --- a/blog/2023/0301-fukue-island/index.html +++ b/blog/2023/0301-fukue-island/index.html @@ -9,7 +9,7 @@ - diff --git a/blog/2023/0303-fukue-island/index.html b/blog/2023/0303-fukue-island/index.html index ec3c05d..c3f5438 100644 --- a/blog/2023/0303-fukue-island/index.html +++ b/blog/2023/0303-fukue-island/index.html @@ -9,7 +9,7 @@ - diff --git a/blog/2023/0304-fukue-island/index.html b/blog/2023/0304-fukue-island/index.html index 32678c8..44ab9d0 100644 --- a/blog/2023/0304-fukue-island/index.html +++ b/blog/2023/0304-fukue-island/index.html @@ -9,7 +9,7 @@ - diff --git a/blog/2023/0319-moving/index.html b/blog/2023/0319-moving/index.html index f5c418d..aca4926 100644 --- a/blog/2023/0319-moving/index.html +++ b/blog/2023/0319-moving/index.html @@ -9,7 +9,7 @@ - diff --git a/blog/2023/0618-sarushima-island/index.html b/blog/2023/0618-sarushima-island/index.html index 3e815cb..dd0a53f 100644 --- a/blog/2023/0618-sarushima-island/index.html +++ b/blog/2023/0618-sarushima-island/index.html @@ -9,7 +9,7 @@ - diff --git a/blog/index.html b/blog/index.html index a5191d5..5b411bb 100644 --- a/blog/index.html +++ b/blog/index.html @@ -9,7 +9,7 @@ - diff --git a/categories/index.html b/categories/index.html index 24284d3..83de249 100644 --- a/categories/index.html +++ b/categories/index.html @@ -9,10 +9,10 @@ -

ar.falsy.cat

Search

Search IconIcon to open search
-

All Categories

Note

17 notes with this tag (showing first 10 results)

Info tech

8 notes with this tag

Blog

5 notes with this tag

Photo

5 notes with this tag

Lifehack

4 notes with this tag

Travel

4 notes with this tag

Cat

3 notes with this tag

Development

3 notes with this tag

Howto

3 notes with this tag

Statistics

3 notes with this tag

Study

3 notes with this tag

Tool

3 notes with this tag

Word play

3 notes with this tag

Chores

2 notes with this tag

Cooking

2 notes with this tag

Gourmet

2 notes with this tag

Programming language

2 notes with this tag

Web

2 notes with this tag

Essay

1 notes with this tag

Library

1 notes with this tag

Linux

1 notes with this tag

Mountain

1 notes with this tag

Software

1 notes with this tag

Virtualization

1 notes with this tag

\ No newline at end of file +

All Categories

Note

18 notes with this tag (showing first 10 results)

Info tech

9 notes with this tag

Blog

5 notes with this tag

Photo

5 notes with this tag

Development

4 notes with this tag

Howto

4 notes with this tag

Lifehack

4 notes with this tag

Travel

4 notes with this tag

Cat

3 notes with this tag

Statistics

3 notes with this tag

Study

3 notes with this tag

Tool

3 notes with this tag

Word play

3 notes with this tag

Chores

2 notes with this tag

Cooking

2 notes with this tag

Gourmet

2 notes with this tag

Programming language

2 notes with this tag

Web

2 notes with this tag

Essay

1 notes with this tag

Library

1 notes with this tag

Linux

1 notes with this tag

Mountain

1 notes with this tag

Virtualization

1 notes with this tag

\ No newline at end of file diff --git a/index.html b/index.html index 1b74373..d2009c5 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,7 @@ - @@ -17,4 +17,4 @@

ar.falsy.cat

Search

Search IconIcon to open search

ブログ備忘録.arはarchiveの略. -著者

\ No newline at end of file +著者

Recent Notes

\ No newline at end of file diff --git a/index.xml b/index.xml index 54b3ea5..8308033 100644 --- a/index.xml +++ b/index.xml @@ -1,4 +1,4 @@ -HOME onhttps://ar.falsy.cat/Recent content in HOME onHugo -- gohugo.ioen-us2人の幼女と悪魔とチェス盤https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/概要 「2人の幼女とチェス盤の部屋」という次のような論理問題を解説する 以下の手順の後,幼女Bが任意の整数$x\left(0\leq x&lt;64\right)$を求められるようにするには,幼女Aはどのような操作を行うべきか 悪魔が8x8チェス盤の各マスに1個ずつ,合計0個以上64個以下のポーンをランダムに配置する 悪魔は幼女Aにチェス盤を見せ,任意の数字$x\left(0\leq x&lt;64\right)$を伝える 幼女Aは,チェス盤に対して次のいずれかの操作のうち可能であるものを1回だけ必ず行う 任意のマスからポーンを1個だけ取り除く 任意のマスにポーンを1個だけ追加する 悪魔は幼女Bにチェス盤を見せる 問題の簡潔化 $f(g(b,x))=x$とできるような写像$f,g$を求めよ $B=\left\{0,1\right\}$ $b\in B^{64}$ $x\in B^6$ $f: B^{64} \rightarrow B^6$ $g: B^{64} \times B^6\rightarrow B^{64}$ $b$と$g(b,x)$は1ビットだけ異なる 解答 $f(b)=f_0\oplus f_1\oplus f_2 \oplus \dots \oplus f_{63} \quad\left(f_i=i b_i\right)$ $b&rsquo;=g(b,x) \implies b&rsquo;_m \neq b_m\quad\left(m=x\oplus f(b)\right)$ チェス盤が16x16の場合のプログラム 解説 $x=f(b)\oplus m$となるような$m\in B^6$は必ず存在する 盤面の各マスに$m$の値を割り当てることで,1マスの操作だけで$m$を表現できる 盤面のマス目の数も,$m$がとりうる値の数も64 $f(g(b,x))=f(b)\oplus m=f(b)\oplus f_m\oplus m(1-b_m)$ 応用 長さ$2^N$の任意のビット列について,任意の1ビットだけを反転させることで,長さ$N$のビット列を表現できる 参考文献 # 超難問論理クイズ「2人の幼女とチェス盤の部屋」が本当に難しすぎた - 明日は未来だ! 幼女問題まとめ - GItHub Gist Impossible Escape?ArchLinuxのインストールhttps://ar.falsy.cat/note/info-tech/install-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-archlinux/概要 ArchLinuxのインストール手順を記録する Live Environmentの起動方法については触れない 前提 qemu上の仮想マシン BIOS GPT x86_64 デュアルブートなし できるだけシンプル,ミニマリスティックに 手順 1. 事前準備 1 2 3 loadkeys jp106 # キーボード設定 ping google.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.dart言語https://ar.falsy.cat/note/info-tech/dart/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/dart/概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark &amp; sweep)搭載 デストラクタは無さそう,そもそもmark &amp; sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?flutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 マルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語はDart インストール Arch Linux install-archlinuxの直後から,flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 依存のインストール 1 2 3 4 5 6 7 8 9 10 11 12 13 14 pacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium visudo # いい感じに設定 &amp; リログ git clone https://aur.ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/<h2 id="概要">概要</h2> +HOME onhttps://ar.falsy.cat/Recent content in HOME onHugo -- gohugo.ioen-us2人の幼女と悪魔とチェス盤https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/概要 「2人の幼女とチェス盤の部屋」という次のような論理問題を解説する 以下の手順の後,幼女Bが任意の整数$x\left(0\leq x&lt;64\right)$を求められるようにするには,幼女Aはどのような操作を行うべきか 悪魔が8x8チェス盤の各マスに1個ずつ,合計0個以上64個以下のポーンをランダムに配置する 悪魔は幼女Aにチェス盤を見せ,任意の数字$x\left(0\leq x&lt;64\right)$を伝える 幼女Aは,チェス盤に対して次のいずれかの操作のうち可能であるものを1回だけ必ず行う 任意のマスからポーンを1個だけ取り除く 任意のマスにポーンを1個だけ追加する 悪魔は幼女Bにチェス盤を見せる 問題の簡潔化 $f(g(b,x))=x$とできるような写像$f,g$を求めよ $B=\left\{0,1\right\}$ $b\in B^{64}$ $x\in B^6$ $f: B^{64} \rightarrow B^6$ $g: B^{64} \times B^6\rightarrow B^{64}$ $b$と$g(b,x)$は1ビットだけ異なる 解答 $f(b)=f_0\oplus f_1\oplus f_2 \oplus \dots \oplus f_{63} \quad\left(f_i=i b_i\right)$ $b&rsquo;=g(b,x) \implies b&rsquo;_m \neq b_m\quad\left(m=x\oplus f(b)\right)$ チェス盤が16x16の場合のプログラム 解説 $x=f(b)\oplus m$となるような$m\in B^6$は必ず存在する 盤面の各マスに$m$の値を割り当てることで,1マスの操作だけで$m$を表現できる 盤面のマス目の数も,$m$がとりうる値の数も64 $f(g(b,x))=f(b)\oplus m=f(b)\oplus f_m\oplus m(1-b_m)$ 応用 長さ$2^N$の任意のビット列について,任意の1ビットだけを反転させることで,長さ$N$のビット列を表現できる 参考文献 # 超難問論理クイズ「2人の幼女とチェス盤の部屋」が本当に難しすぎた - 明日は未来だ! 幼女問題まとめ - GItHub Gist Impossible Escape?ArchLinuxのインストールhttps://ar.falsy.cat/note/info-tech/install-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-archlinux/概要 ArchLinuxのインストール手順を記録する Live Environmentの起動方法については触れない 前提 qemu上の仮想マシン BIOS GPT x86_64 デュアルブートなし できるだけシンプル,ミニマリスティックに 手順 1. 事前準備 1 2 3 loadkeys jp106 # キーボード設定 ping google.ArchLinuxへflutterをインストールhttps://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/初めに install-archlinuxの直後から, flutterのインストール方法を説明 flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 1.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.dart言語https://ar.falsy.cat/note/info-tech/dart/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/dart/概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark &amp; sweep)搭載 デストラクタは無さそう,そもそもmark &amp; sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?flutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 flutterはマルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語は Dart 環境構築 dart + flutterをインストール VSCodeにflutter用の拡張機能を追加 豆知識 ウィジェットツリー main関数からrunAppにウィジェットツリーを渡すことでメインループが始まる ウィジェットはStatelessなものとStatefullなものに大別できる Statefullなウィジェットが更新(setState)されると,そのウィジェットとその子孫のツリーが全て再構成(build)される パフォーマンス悪そうに見えるけれど,ウィジェットツリーの変更部分のみをシステム内部のエレメントツリーに反映することで画面更新を行なっているので,最適化はされている HTMLレンダラみたいな感じ 画面遷移 Navigatorが現在の画面の状態スタックを持つ pushで画面遷移 コルーチンのawaitで,遷移先がpopされた時の値を受け取れる popで前の画面に戻る ユーザーからの戻るボタン押下でも勝手にpopされ得る 呼び出し元へ返す値を引数に設定できる 1 2 3 4 5 6 7 8 9 // push (遷移後の画面がpopされるまでyield) final ret = await Navigator.ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/<h2 id="概要">概要</h2> <ul> <li> <a href="https://github.com/jackyzha0/quartz" rel="noopener">Quartz</a>で diff --git a/indices/contentIndex.96d88c45d4b9d6ef032ea270a2730733.min.json b/indices/contentIndex.96d88c45d4b9d6ef032ea270a2730733.min.json deleted file mode 100644 index 1288dfa..0000000 --- a/indices/contentIndex.96d88c45d4b9d6ef032ea270a2730733.min.json +++ /dev/null @@ -1 +0,0 @@ -{"/":{"title":"HOME","content":"\n[ブログ](blog)兼[備忘録](note).arはarchiveの略.[著者](https://falsy.cat/)\n","lastmodified":"2023-06-26T13:50:32.137726382Z","tags":[]},"/blog/2023/0301-fukue-island":{"title":"福江島 1日目","content":"\n## 概要\n- 用事があって,東京から福江島へ行った\n- 宿が神\n- 3泊4日で3/4に東京へ帰還する予定\n\n## 移動\n- 出発地は東京\n- 家→羽田空港→長崎空港→五島福江空港→宿\n- 早朝に家を出て,昼に到着した\n\t- 別に昼に到着するためにわざわざ早朝に家を出たのではなく,\n\t- 1ヶ月前に航空機の予約を取ったので,安い便はほとんど早朝だっただけ\n\n### 家→羽田空港\n- 電車\n- 遅延も事故もなかったので良かった\n\n### 羽田空港→長崎空港\n- ANA\n\t- メーデーでよくLCCが堕ちている感じがある(個人的に)\n\n### 長崎空港→五島福江空港\n- 小型のプロペラ機に乗った\n\t- 到着地が雨で視界が悪かったため,条件付き(もしかしたら出発地に戻るかもしれない)運行だった\n\t- 運良く到着地に無事着陸できた\n\n### 五島福江空港→宿\n- 宿の人が車で迎えに来てくれた\n\t- 空港に着いてからタクシーを呼ぶ予定だった\n\t\t- タクシー代が浮いた\n\t\t- とてもありがたい\n\t\t- 神\n- 本当は今日までに免許を取っていたかったのだけど,2月にそんなスムーズに取れるはずもなかった\n\t- 免許取れてたらレンタカーを借りる予定だった\n\n## 宿\n- 一日一組限定の一棟貸を一人で3泊借りるという暴挙に出たけれど,嫌な顔ひとつされなかった\n\t- 上で言った通り,空港に向かえに来てさえくれた\n- ほとんど素泊まり\n\t- ご飯なし\n\t- チェックアウトまで清掃もしてくれる感じではなさそう?\n- 今のところ神\n\t- アメニティ,設備が揃ってる\n\t\t- 最初はただの民家の鍵を渡されるだけかと思ってた\n\t\t- ドライヤー,ヘアアイロン,髪につけるジェル,髭剃り,スキンケア関係も一通り揃ってた\n\t\t- ボディスポンジが,舞浜のディズニーランド近くのホテルより性能良かった\n\t- 水周りが綺麗\n\t\t- 外見は築年数が経った民家っぽかったのであまり期待してなかった\n\t\t- 想像以上に綺麗だった\n\t- キッチンが使える\n\t\t- まだ使ってないし使う予定はないけど,自炊もできる\n\t\t- 魚釣って捌いて食べるってこともできるらしい\n\t\t\t- 捌くのは外でやれって張り紙があった\n\n## 食事\n### 昼\n- [Slow Cafe たゆたう](https://tayutau510.com)\n- 鬼岳バーガー\n\t- 鬼岳は315m,バーガーは315gらしい\n- 美味しかったけど綺麗な食べ方がわからない\n- カフェラテがムンクの叫びになった\n\n![](blog/2023/0301-fukue-island/20230301_135616501..webp)\n![](blog/2023/0301-fukue-island/20230301_141621536..webp)\n\n### 夜\n- [Cafe EARTH](http://goto-earth.com)\n- 美味しかった\n- 写真は撮ってない\n\n## 猫\n- 夜歩いてたらめっちゃ足にまとわりついてくる猫がいた\n- 首輪してなかったので多分野良\n- 暗かったのでうまく撮れなかった\n\n![](blog/2023/0301-fukue-island/20230301_201257214..webp)\n![](blog/2023/0301-fukue-island/20230301_201322690..webp)","lastmodified":"2023-06-26T13:50:32.137726382Z","tags":["blog","travel","photo","gourmet","cat"]},"/blog/2023/0303-fukue-island":{"title":"福江島 3日目","content":"\n## 概要\n- 用事があって,東京から福江島へ行った\n- 3泊4日の3日目 ([1日目](blog/2023/0301-fukue-island))\n- 2日目は用事がメインで特に何もなかったので割愛\n\n## 観光\n### 五島観光歴史資料館\n- 入場料300円\n- 石器時代レベルの遺物から戦時中に将校が携帯していた刀まで展示してあった\n\n![五島観光歴史資料館](blog/2023/0303-fukue-island/20230303_144823.webp)\n\n### 堂崎教会\n- タクシーで行った\n\t- 定期観光バスで予約なし乗車しようと思ったら,予約いっぱいでダメだった\n\t- 運転手の人が他の教会にも連れて行ってくれた\n- 入場料300円\n- 中にはキリスト教に関係する資料や像が展示されていた\n\t- 聖典の装丁が厨二っぽくてカッコよかった\n\t- 館内は撮影禁止\n\n![堂崎教会](blog/2023/0303-fukue-island/20230303_155200.webp)\n\n![堂崎教会までの道](blog/2023/0303-fukue-island/20230303_155613.webp)\n\n## 食事\n### 昼\n- 1日目と同じく[Slow Cafe たゆたう](https://tayutau510.com)にて\n- 鬼岳マグマチーズバーガー\n\t- 相変わらず綺麗な食べ方がわからなかった\n\n![鬼岳マグマチーズバーガー](blog/2023/0303-fukue-island/20230303_130355783.webp)\n\n### 夜\n- [キッチン さゆり](https://goto.nagasaki-tabinet.com/restaurant/61866)\n- 五島牛焼肉定食\n\n![](blog/2023/0303-fukue-island/20230303_183608430.webp)\n\n## 猫\n- 福江港を散歩してたら野良猫の集団に出会った\n- ちょっと近づいても全然逃げない\n- [1日目](blog/2023/0301-fukue-island)の猫といい,島の猫は人間に馴れている\n\n![](blog/2023/0303-fukue-island/20230303_180521.webp)","lastmodified":"2023-06-26T13:50:32.14172643Z","tags":["blog","travel","photo","gourmet","cat"]},"/blog/2023/0304-fukue-island":{"title":"福江島 4日目 最終日","content":"\n## 概要\n- 用事があって,東京から福江島へ行った\n- 3泊4日の4日目 最終日 ([1日目](blog/2023/0301-fukue-island)/[3日目](blog/2023/0303-fukue-island))\n- 朝一で鬼岳に行って,その後帰投した\n- 帰りはほとんど行きの行程の逆を踏んだだけなので割愛\n\n## 鬼岳\n- 朝7時半にタクシーを呼んで鬼岳まで行った\n\t- 当初,鬼岳の大きさを過大評価しており,登るのは時間的に無理だろうと思い,行くのは諦めてた\n\t- しかし,[昨日](blog/2023/0303-fukue-island)のタクシーの運転手の人に「飛行機11時出発でも,朝で鬼岳は十分回れるよ」と言われたので早起きした\n- 1時間後にタクシーを予約して鬼岳を登った\n\t- さすがに全部の道を辿る時間はなかった\n\t- 無事1時間で下山できた\n- 多分夏に行ったらWindows XP\n- やっと[1日目](blog/2023/0301-fukue-island)と[3日目](blog/2023/0303-fukue-island)の昼食に食べたバーガーのモチーフとなった山に登ることができた\n\n![](blog/2023/0304-fukue-island/20230304_080357.webp)\n![](blog/2023/0304-fukue-island/20230304_080248.webp)\n![](blog/2023/0304-fukue-island/20230304_074625.webp)\n![](blog/2023/0304-fukue-island/20230304_074605.webp)\n\n## 飛行機\n- 自分が搭乗してる飛行機が地上で転回するという経験は初めてだったので滑走路の写真を撮った\n\t- 最初加速したと思ったら減速し始めて,離陸失敗かと思った\n\t- 転回のために滑走路端まで進んでただけだった\n- タクシーの運転手曰く\n\t- 五島福江の空港は滑走路が短いため大型機は離着陸ができない\n\t- 故に東京直行便を作るのも難しいらしい\n\t- 一応現地の議員が東京直行便を作ろうと頑張ってるらしい\n\n![](blog/2023/0304-fukue-island/20230304_111407.webp)\n\n## 猫\n- 空港への帰り際にまた野良猫に会った\n\n![](blog/2023/0304-fukue-island/20230304_094006.webp)\n\n終\n","lastmodified":"2023-06-26T13:50:32.145726478Z","tags":["blog","travel","photo","mountain","cat"]},"/blog/2023/0319-moving":{"title":"引っ越しをした","content":"\n- 4月から色々あるので引っ越しをした\n- 立地も治安も壁の厚さもとても良いところだった\n\n![旧自宅](blog/2023/0319-moving/room.webp)","lastmodified":"2023-06-26T13:50:32.145726478Z","tags":["blog","photo"]},"/blog/2023/0618-sarushima-island":{"title":"猿島へ行った","content":"\n## 概要\n- 猿島へ日帰り観光に行った\n- 人が多かった\n- 廃墟目当てだったが,そこまで廃墟はなかった\n\n## 行程\n- 京急線の横須賀中央駅から三笠ターミナルへ徒歩で15分\n- フェリーで猿島へ(10分)\n- 島内を観光\n- 島内で昼食\n- フェリー,電車で帰宅\n\n## フェリー(行き)\n- 土曜日午前11時台の便に乗った\n- 並んでる人が多かった\n\t- 次の便に乗れるのか不安になるぐらい\n\t- 並んでた人全員がギリギリ乗れた\n- 乗船時間は10分程度なので酔うこともなく無事到着\n\n![](blog/2023/0618-sarushima-island/DSC_0069.webp)\n\n![](blog/2023/0618-sarushima-island/DSC_0070.webp)\n\n## 観光\n- 写真を撮りながら適当に周った\n- フェリーの到着直後は入り口付近に人が多い\n\t- 写真を撮りたいなら時間をずらしたほうがいい\n\n![](blog/2023/0618-sarushima-island/DSC01320.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01327.webp)\n\n\n### 廃墟\n- もっと廃墟があるのかと思っていたけれど,廃墟4,自然6ぐらいだった\n- 廃墟単体のクオリティは高かった\n\t- 苔が良い\n\t\t- 壁面の苔を削って文字を書く💩がいるらしく,名前がところどころに彫られていた\n\n![](blog/2023/0618-sarushima-island/DSC01392.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01393.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01324.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01323.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01371.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01395.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01396.webp)\n\n### クイズ\n- QuizKnockとのコラボで,島内を探索することで解けるクイズ企画をやっていた\n- クイズが書かれている紙は三笠ターミナルで500円で売っていた\n- 自分は買わなかったが,友達が買ったので一緒に解いた\n\t- 5問中3問は僕が解いたので感謝してほしい\n- ちなみにクイズを解いても,達成感以外に特に得られるものはない\n- 猿島に行かないと解けないが,クイズの内容自体は猿島とはそこまで関係なかった\n\n## 昼食\n- カレーは重いなと思ったので,一人分を友人と分けた\n- 追加でプライドポテト(フライドポテト)と唐揚げを買った\n- 正直,味は普通\n- 離島なので物価は高め\n\n![](blog/2023/0618-sarushima-island/IMG_20230618_152924_584.webp)\n\n## フェリー(帰り)\n- ダイヤ関係なく,着いたら客を乗せて出港のサイクルを30分間隔ぐらいで繰り返していた\n- 後方で並んでる人が次の便で乗れないぐらいには人が多かった\n\n## まとめ\n- クオリティの高い廃墟が見れた\n- もっと廃墟が密集してると思ってた\n- 人が多かった\n\t- BBQ目当ての大学生大所帯とか","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["blog","photo","travel"]},"/note/chores/cooking-rice-with-saucepan":{"title":"片手鍋で米を炊く","content":"\n## 概要\n- 炊飯器が無くても米は炊ける\n- ただし火を使う間,22分程度拘束される\n\n## 手順\n1. 片手鍋で米(3合)を研ぐ\n2. 水(500ml)を入れる\n3. 蓋をして鍋ごと冷蔵庫で30分冷やす\n4. 蓋をしたまま中火で13分\n5. 弱火で3分\n6. とろ火で6分\n7. 火を消して蓋をしたまま10分放置\n\n## 補足\n- 冷やす時間は15分程度まで短縮しても良い\n\t- 短縮した場合は中火の時間も12分程度に縮める\n- 最後の放置が結構重要\n\t- 火を消した直後はまだべちゃべちゃしてる","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","chores","cooking","lifehack"]},"/note/chores/one-hand-egg-cracking":{"title":"卵を片手で割る手法の提案","content":"\n## Abstract\n- This paper proposes a method to crack eggs by one hand\n- The method can reduce cooking time and promote multi-tasking\n- No special appliance is needed\n- However accuracy of action is necessary to keep yolk unbroken\n\n## 概要\n- 調理の時短とマルチタスク促進のために卵を片手で割る手法を提案する\n- 本手法は一般家庭にある既存の器具のみで実行が可能\n- ただし黄身を割らないためには繊細な動作が要求される\n\n## 背景\n- 左手でゴミ袋を持ちながら右手で卵を割ると非常に時短になる\n- 特に調理プロセスのなかで一度に複数の卵が関与する場合に著しい時短効果が得られる\n- [先行研究](https://gourmet-note.jp/posts/15029)の手法では調理対象に殻が混入してしまうことが多い\n\n## 手法\n1. 卵をフォークボールを投げる時のように持つ\n\t- 鋭端が人差し指と中指の間に来るように持つ\n\t- 鈍端を親指と薬指で支える\n2. 皿の淵で卵の殻に割れ目を作る\n\t- 卵の鋭端と鈍端を結ぶ線分の垂直二等分線が皿の淵と重なるように腕を何回か振り下ろす\n\t- 皿を卵の直径の$\\frac{1}{4}$程度まで食い込ませる\n\t- 卵を皿に押し付けて真っ二つにするイメージ\n\t- ここで皿を食い込ませすぎると黄身が割れる原因になる\n3. 人差し指の付け根で割れ目の裏側を押し出す\n\t- 人差し指,中指,親指,薬指で卵をしっかりと支えておく\n\n## 評価実験\n- 本手法を用いて鶏卵2個を割った\n- 1個は黄身が割れたが,1個は割れなかった\n- 卵の殻が調理対象に混入することはなかった\n\n## まとめ\n- 卵を片手で割る手法を提案した\n- 本手法では50%の確率で黄身が割れる\n- [先行研究](https://gourmet-note.jp/posts/15029)の手法と異なり,卵の殻が混入する確率は低い\n- 今後の課題として,黄身が割れる確率を抑えることが挙げられる\n- 理論上,左右両方の手で同時に2個の卵を割ることでさらなる効率化を図れる","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","chores","cooking","lifehack"]},"/note/essay/effective-presentation":{"title":"大臣賞を取れるプレゼンの作り方","content":"\nこのページでは,私がU22プログラミングコンテスト2022の最終審査回で発表したプレゼンについて,準備するときに考えたことを紹介します.このプレゼンは大臣賞を取れた1つの要因だと思っているので,今後もしプレゼンをする機会があれば参考にしてみて下さい.\n\n実際のプレゼンの様子は[YouTube](https://youtu.be/Br0RlSKFaCE)で公開されています.よければご覧ください.\n\n## 背景\nU22プログラミングコンテストとは,毎年開催されている作品応募型のプログラミングコンテストで,40年以上の歴史があります.期限(8/31)までに作品を完成させ,応募することでエントリーすることができますが,U22の名前の通り22歳以下の人しか参加できません.\n\n応募された作品は総勢20名程度の審査員に選考され,この選考を突破した16作品の製作者だけが最終審査会に参加できます.審査員の一覧には東京大学の名誉教授やIT企業の役員の方々が並んでおり,また,応募総数は毎年300を上回っているため,最終審査会へ参加することは非常に難しいです.\n\n最終審査会では,参加者が1人ずつ,制作した作品について10分程度の発表を対面で審査員に向けて行います.2022年の場合は一般向けにニコ生配信もされており,同接は1万人程度でした.\n\n全員の発表が終わると,審査員によって各16作品が審査され,経済産業省大臣賞,局長賞やスポンサーの企業賞などが応募者に授与されます.ここで私は経済産業省大臣賞(副賞50万円)とPCAクラウド賞(副賞:M2 Macbook Pro)をいただきました.余談ですが,実は2020年にも参加しており,その時は経済産業省の商務情報政策局長賞(副賞5万円)を頂きました.~~金額が微妙~~\n\nこのページでは,そんな大臣賞をとれるようなプレゼンを作るときに考えたことを紹介します.\n\n## スライドを作る前に・・・\n### 勝利条件を決める\nまずは,スライドを作る前に,最終審査会に参加して得たい結果,満たすべき条件である勝利条件を決めました.勝利条件というとゲームのように聞こえますが,実際のゲームのように明確なルールがあれば自分が取るべき最善手を見つけやすくなります.だからこそ,このステップではルールを明確に決定し,発表そのものをゲームとして捉えられるようにしました.\n\nここでは,勝利条件を「大臣賞を取る」に定めました.2020年の最終審査会に無策で挑んで微妙な結果を取ってしまったのが悔しかった,というのが理由です.\n\n### 戦略を考える\n次に,発表の方向性,言い換えれば戦略を決めました.勝利条件を満たすためには,受賞者の決定権がある審査員の方々に,何らかの影響を与えなければなりません.物理的,金銭的なものを除けば,私が審査員に与えられる影響は精神的なものだけです.そのためこのステップでは,審査員の記憶,感情に発表を通してどのような影響を与えるかを決定しました.\n\n結論として,戦略を「ほかのどの発表よりも,自分の発表を審査員全員の記憶に残す(いい意味で)」に定めました.以下ではその経緯を説明します.\n\n#### ターゲットの調査\n戦略を決定するにはターゲット,つまり審査員の方々について,よく知る必要があります.特に,どのような専門知識を持っているのか,何に興味があるのかという情報は非常に重要です.いくら高度で技術的な話をしたところで,相手に理解されなければ,相手に興味を持たれなければ,ただただ貴重な発表時間を失うだけだからです.\n\n実際に審査委員について調査した結果,次のことが判明しました.\n- 構成員の属性は幅広い(文系,理系,事務職,技術職,教授,CTOなど)\n\t- 企業所属の人が多め\n- 審査委員長は東京大学の名誉教授\n\nこの調査結果から,効果的な発表の条件は次のように絞られます.\n- 企業所属の人に対して,社会における実用性,利益の可能性を提示できる\n- 技術職の人に対して,技術的実用性,技術的工夫を提示できる\n- 教授などの研究職の人に対して,数学的美を提示できる\n- 文系,事務職の人に対して,実際的な応用例を提示できる\n\n以上の条件より,戦略レベルで発表の話題を絞ることは難しいことがわかります.これら4つの条件を全て満たすような1つの話題は存在するのかもしれませんが,存在があやふやなものを探すことに時間を割きたくありません.\n\n#### そもそも評価対象は作品である\n最終審査会において何を審査するのかといえば,それは発表ではなく作品です.スライドを作ろうとしているこの時点で作品はすでに審査員に提出しているため,作品自体の価値や評価を大幅に増加させることは難しいです.(最終審査会直前までのブラッシュアップは可能)\n\nつまり,戦略の条件としては,作品単体が審査員に与える影響を増幅できるものである必要があります.\n\n#### 審査員の立場になってみる\n効果的な影響を審査員に与えるためには,審査員の立場になって戦略を考えることが必要です.私の発表の直前に,審査員は何を期待するでしょうか.発表を通じて,この期待に応えたり,あるいは裏切ったりすることで審査員への影響はより強くなります.また,発表直後から審査結果の決定までの時間も無視できません.私はこの時間に審査員に干渉することはできませんが,他の作品の発表が審査員に影響を与え得るからです.\n\nところで,あなたは,複数人の発表を聞き,評価するような発表会に参加したことがあるでしょうか.おそらく多くの人が学生時代に経験していることだと思います.そして発表会の終了後に全ての発表を覚えていられた人はかなり稀なのではないでしょうか.\n\n戦略を「審査員全員の記憶に残す」に定めた理由は,最終審査時の審査員も同様に一部の発表しか覚えていない可能性が高く,より多くの審査員のその一部に含まれることで,勝利条件を満たす確率が高くなると考えたからです.もちろん審査員も審査のために全ての発表のメモを取るとは思いますが,もしあなたが審査員だった場合に,メモには残っているけれど記憶には残っていない発表を高く評価するでしょうか.\n\n### 戦術を考える\n戦術は言うなれば小細工です.戦術を組み合わせて作戦を立案します.\n\n今回の場合,戦略は「いい意味で記憶に残す」ですから,ここでは,何かを相手の記憶に強く焼き付けられるような小細工を3つ紹介します.特に脳についての研究をしていたわけでもないので,全部個人的な経験から学んだものです.全人類に効くかは知りませんが,実際に大臣賞という結果を残しています.\n\n#### 発表内容を普遍的なアンカーに関連させる\nアンカーとは,何かの行為の後に最初に思い浮かべる事柄です.例えば,鎌倉幕府の創設年を聞かれた時に「いいくに作ろう鎌倉幕府→1192」という連想をした場合,「いいくに作ろう鎌倉幕府」という言葉がアンカーです.ちなみにこの場合,「鎌倉幕府の創設年を聞く」は,アンカーを想起させるための行為であり,トリガーと呼ばれます.(神経言語プログラミングで使われている言葉らしい?)\n\n事前にアンカーを1つに定め,伝えたい内容をそのアンカーに関連させることで,発表内容を不特定多数の記憶に残しやすくなります.はっきりとしたアンカーを定めなかった場合,聞き手が発表内容を思い出すというトリガーに対するアンカーは聞く人によって異なり,必然的にアンカーから連想されるものもあやふやで十人十色に変化します.そのため,どうでもいいことを覚えられてしまったり,本当に覚えてほしいことを覚えてもらえなかったりする可能性が高くなります.\n\nアンカーは発表内容に関係している必要はなく,誰もが知っている事柄である方が良いです.猫と量子力学は無関係ですが,シュレディンガーの猫という言葉は多くの人に覚えられています.これは猫が良いアンカーになっているのではないでしょうか.\n\n#### 忘れた頃に繰り返す\nあの忘却曲線を提唱したエビ🦐ングハウスさんに依れば,忘れた頃に復習をすれば記憶定着率を上げられます.エビ🦐ングハウスさんの実験とは時間スケールも記憶する対象も違いますが,何回も同じことを繰り返せば脳は勝手に覚えてくれるというのは,誰しも経験から理解できるはずです.\n\n#### 音声思考型には言葉,イメージ思考型には視覚\n脳内の独り言で思考するタイプ(音声思考型)の人には言葉による情報が,イメージで思考するタイプ(イメージ思考型)の人には視覚による情報が理解されやすいらしいです.理系は大体音声思考型のため(偏見),専門的な話は文字や口頭で,それ以外の話はスライド上の画像を使うことが有効です.\n\n### 作戦を考える\n戦術が列挙できたら,そられを取捨選択し,組み合わせて作戦を練ります.実際の発表内容の計画は,大まかに次の図のようになりました.本番の発表は9分ぐらいでしたが,流れと時間配分は大体計画通りでした.この作戦のいくつかのポイントを説明します.\n\n![](note/essay/effective-presentation/plan.png)\n\n#### 情報に合わせた表現方法の選択+繰り返し\n最初のポイントは,開発コンセプトを言葉で,利用例を映像で簡潔に表現する点です.Nf7の開発コンセプト自体は理解に専門性が必要なため,このコンセプトを伝える対象は技術者です.一方で,Nf7を使って作れるアウトプット自体は音声,画像,映像データが主ですので,利用例は技術者でなくても理解ができます.音声思考型の多そうな技術者に伝えたい情報は文字を使って,その他の人に伝えたい情報は視覚を使って伝えることで,より大きい影響を与えることを狙います.\n\nまた,開発コンセプトについては,時間をあけて同じ話題を2回登場させることで記憶への定着を図ります.\n\n#### 利用例で猫をアンカーにする+繰り返し\n次のポイントは,利用例の紹介の中で猫をアンカーにすることです.Nf7で作れるアウトプットの例として,虹色に光る猫や大量の猫を描画することで,猫の印象を強烈に植え付けます.これにより,最も重要な問い「この作品は何ができるのか」に対するアンサーをアンカーに結びつけることができます.(駄洒落じゃないよ)\n\nまた,このアンカー植え付けも,1回目と2回目の利用例紹介のどちらともで行うことで,アンカーの効果をより高めています.動画をご覧いただいた方にはわかるかもしれないですが,2回目に至っては盛大な振りまでしているので,私がいかにこのアンカーが重要だと考えていたかがわかるかと思います.\n\n#### 話題の専門性に波を持たせる\n最後の注目すべきポイントは,話題の専門性を上げた後は必ずすぐに下げるということです.施した工夫や技術力をアピールするためにはどうしても技術的な話をする必要がありますが,その話の直後には必ず,専門性を下げるような話題を持ってきます.誰一人として聞き手を取り残さないための作戦です.\n\nさらに,専門性を一気に0に下げることで,ギャップによるある種の感動を作り出します.理解できない話をされると誰しもストレスを感じますが,理解できた瞬間には喜びや達成感が得られます.なんかすごそうなことばかり言っている頭の良さそうな人が,急に「りんごたべたい」とか言い出したら印象に残るのではないでしょうか.このギャップを意図的に作り出すのです.\n\n## スライドを作る\n正直ここではあまり工夫をしていないですが,強いて言うならば「simple is best」を心がけました.背景は白,文字は黒,アニメーションは無し.元映像クリエーター(自称)としてアドバイスをするならば,センスに自信がないならば白と黒だけで画面を作った方がいいと思います.あとMSゴシックやめろ.\n\n## 発表をする(本番)\n動画では思いっきりPC画面見ながら話してますが,当時試験期間真っ最中だったために練習時間が取れなかったのが原因です.詰まったり,吃ったりするぐらいなら原稿見て話したほうが伝わるだろうと考えている派なので,ガン見しました.ただし,ページ切り替えなどで間を取る時はできるだけ聞き手を見るようにはしました.\n\n## 参加した感想\n戦略,戦術,作戦を立てて本番に臨み,計画通りの発表ができたと思っています.この計画が功を奏したのかは「神のみぞ知る」ですが,勝利条件は達成できたためそこはどうでもいいことです.ここまでこの長い文章を読んでいただきありがとうございました.\n\nちなみに,抽象的な戦術(tactics)の列挙とそれらの融合による作戦立案の手法は,チェスでの経験をもとにしています.みんなもチェスやろう.","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","essay"]},"/note/info-tech/c-cpp-sanitizer":{"title":"C/C++のsanitizerの使い方","content":"\n## 概要\n- バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある\n- このページではsanitizerの使い方を説明する\n\n## 使い方\n\n### コンパイル時にsanitizerを埋め込む\n- 種類ごとにオプションが異なる\n- XXXにはSanitizer名をカンマ区切りで羅列する\n\t- 代表的なSanitizer名については後述\n\n```bash\ng++ -fsanitizer=XXX a.cc\ngcc -fsanitizer=XXX a.c\n```\n\n#### 代表的なSanitizer\n- [ここ](https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html)で`-fsanitizer=`を検索すると一覧が見れる\n- `thread`は`address`や`undefined`と同居できない\n\n|名前|説明|\n|:--|:--|\n|`address`|[Address Sanitizer](https://github.com/google/sanitizers/wiki/AddressSanitizer)|\n|`undefined`|[Undefined Behavior Sanitizer](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html)|\n|`thread`|[Thread Sanitizer](https://github.com/google/sanitizers/wiki#threadsanitizer)|\n\n### 実行時にsanitizerの挙動を指定する\n- sanitizerが埋め込まれたバイナリに対して,実行時に,sanitizerの挙動を環境変数で指定することができる\n- 詳細は各sanitizerの説明ページを参照\n\n## 所感\n- `thread`が強すぎる\n\t- `thread`は実際に[Nf7](https://git.falsy.cat/nf7/nf7)のデバッグで使ってる\n\t\t- sanitizerがなければ気づけなかったcondition raceがかなりあった\n\t\t\t- 格好つけてロックフリーで書いたせい\n- `thread`が`address`や`undefined`と一緒に使えないのが痛い\n\t- どちらともを使うには,`thread`でビルド,テストした後に,オプションを変えてビルドし直し,同じテストを実行しなければならない","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","info-tech","development","programming-language","howto"]},"/note/info-tech/dart":{"title":"dart言語","content":"\n## 概要\n- Google製プログラミング言語\n- [flutter](note/info-tech/flutter.md)のための言語\n- 日本語資料少なめ\n- オブジェクト指向\n\n## 特徴\n- undefined behaviorは無い\n- Null safety\n\t- 型名に?を付ければNull許容型になる\n\t- Null許容型に対してはNullチェックをしないとコンパイラがキレる\n- 整数値以外は参照型\n- GC(mark \u0026 sweep)搭載\n\t- デストラクタは無さそう,そもそもmark \u0026 sweepでデストラクタは信頼できない\n- コンストラクタが書きやすい\n\t- わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい\n- 静的解析が強め\n\n## 文法\n- 大体は既存のやつと同じ\n- 文末セミコロン必須\n- 関数呼び出しの実引数リストでもケツカンマ許容\n\n### 変数修飾子\n- 型が自明な場合,型名は省略できる\n\t- 省略できる場合は省略することが推奨される\n\n```dart\n// コンパイル時定数\nconst int x = 0;\nconst x = 0;\n\n// 再代入不可能変数\nfinal int x = 0;\nfinal x = 0;\n\n// 再代入可能変数\nvar int x = 0;\nvar x = 0;\n\n// 遅延初期化変数\nlate int x;\nlate final int x;\n```\n\n#### final: 再代入不可能変数\n- 値型の変数に対しては,値の変更を禁止する\n- 参照型の変数に対しては,参照先の変更のみを禁止する\n- dartでは,参照先のオブジェクトの変更を禁止することはできない\n\n#### late: 遅延初期化\n- 変数の初期化を遅延させることができる\n- 実質的にはNull safetyの無いNull許容型\n- `late final`修飾子によって複数回の代入をコンパイルエラーにできる\n\t- ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない\n\n### Null safety\n- Null許容型に対しては,Nullを扱いやすくするための演算子が使える\n- 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える\n```dart\n(T? x) {\n x ?? T(); // x が null ならば 0 それ以外ならば T()\n x?.method(); // x が null ならば methodを呼ばずnullを返す それ以外ならば methodを呼ぶ\n x!.method(); // x が nullでない ことを前提として methodを呼ぶ(実行時にnullだった場合runtime error)\n};\n(T? x) {\n if (x == null) {\n return;\n }\n x.method(); // x!.method(); とする必要がない\n};\n(T? x) {\n x.method(); // Nullチェックしてないのでコンパイルエラー\n};\n```\n\n### コンストラクタ\n- C++と比べてかなり書きやすい\n\n```dart\nclass A {\n final int x;\n final int y;\n final int z;\n\n A(this.x, this.y, this.z);\n A(this.x, {required this.y, this.z = 1});\n A.empty() :\n this.x = 0, this.y = 0, this.z = 0;\n}\n\nvoid main() {\n final a1 = A(0, 1, 2);\n final a2 = A(0, y: 1);\n final a3 = A.empty();\n}\n```\n","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","info-tech","development","programming-language"]},"/note/info-tech/flutter":{"title":"flutter","content":"\n## 概要\n- マルチプラットフォーム GUIアプリケーション フレームワーク\n\t- iOS/Android,Web,Windows/Linux/Mac,組み込み\n- Google製\n- 使用言語はDart\n\n## インストール\n### Arch Linux\n\n- [install-archlinux](note/info-tech/install-archlinux.md)の直後から,`flutter doctor`がオールグリーンになるまで\n- 1時間ぐらいは覚悟したほうがいい\n- 特にandroid-studioがクソでかいので[qemu](note/info-tech/qemu)イメージのリサイズをする羽目になった\n- [参考文献](https://dev.to/nabbisen/flutter-3-on-arch-linux-shi-mefang-1m2j)\n- 追記: [qemu](note/info-tech/qemu)上だとパフォーマンスがゴミすぎてまともに使えなかった X(\n\t- ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた\n\n#### 手順\n1. 依存のインストール\n```bash\npacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium\nvisudo # いい感じに設定 \u0026 リログ\n\ngit clone https://aur.archlinux.org/flutter.git\ncd flutter\nmakepkg -sci # JDKはデフォルトを選択\ncd ..\n\ngit clone https://aur.archlinux.org/android-studio.git\ncd android-studio\nmakepkg -sci\ncd ..\n\nusermod -aG flutterusers user # 設定後にリログ\n```\n\n2. Android Studioの設定\n\t1. 初期設定は適当に\n\t2. Android StudioからFlutterプラグインをインストール&再起動\n\t3. Flutterプロジェクトを作成\n\t\t- flutter SDKのパス設定を忘れずに (`/opt/flutter`)\n\t4. `Android SDK Command line tools`をインストール\n\n3. flutter doctor\n```bash\nexport CHROME_EXECUTABLE=chromium # 必要なら永続化する\ngit config --global --add safe.directory /opt/flutter\nflutter doctor --android-licenses\nflutter doctor # 完了\n```\n\n\n## 感想\n- メジャーバージョンが同じでも後方互換性は乏しい\n\t- 過去のプロジェクトをビルドしようとしてもよくわからないエラーが大量に出てくる","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","info-tech","development","software","library"]},"/note/info-tech/install-archlinux":{"title":"ArchLinuxのインストール","content":"\n## 概要\n- [ArchLinux](https://archlinux.org)のインストール手順を記録する\n- Live Environmentの起動方法については触れない\n\n\u003c!-- more --\u003e\n\n## 前提\n- [qemu](note/info-tech/qemu.md)上の仮想マシン\n- BIOS\n- GPT\n- x86_64\n- デュアルブートなし\n- できるだけシンプル,ミニマリスティックに\n\n## 手順\n### 1. 事前準備\n\n```bash\nloadkeys jp106 # キーボード設定\nping google.com # インターネット疎通確認\ntimedatectl status # 時間の確認 (この時点ではUTC)\n```\n\n### 2. パーティショニング\n```bash\ncfdisk /dev/sda # 先頭1MiBをBIOS bootに,残りをLinuxに設定\nmkfs.ext4 /dev/sda1 # フォーマット\nmount /dev/sda1 /mnt # /mntへマウント\n```\n\n### 3. インストール\n```bash\nvim /etc/pacman.d/mirrorlist # 日本のmirrorを指定しておく\npacstrap -K /mnt base linux linux-firmware vim grub dhcpcd # Wi-Fiで10分くらい\n```\n\n- 執筆時点で有効な日本のmirror\n\t- `http://mirrors.cat.net/archlinux/$repo/os/$arch`\n\t- `https://mirrors.cat.net/archlinux/$repo/os/$arch`\n\n### 4. 初期設定\n```bash\ngenfstab -U /mnt \u003e\u003e /mnt/etc/fstab\narch-chroot /mnt # 以下仮想rootで作業\n```\n#### 時計関係\n```bash\nln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # TZを東京に\nhwclock --systohc\n```\n\n#### 言語関係\n- `/etc/locale.gen`を編集して,`en_US.UTF-8 UTF-8`をアンコメント\n- `locale-gen`\n- `/etc/locale.conf`を作成して`LANG=en_US.UTF-8`を追記-\n- `/etc/vconsole.conf`を作成して`KEYMAP=jp106`を追記\n\n#### カスタマイズ\n- `/etc/hostname`にホスト名を設定\n- `passwd`でrootパスワードを設定\n- `systemctl enable dhcpcd`\n\n#### ブートローダのインストール\n```bash\ngrub-install --target=i386-pc /dev/sda\ngrub-mkconfig -o /boot/grub/grub.cfg\n```\n\n以上.","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","info-tech","linux","howto"]},"/note/info-tech/obsidian":{"title":"Obsidianについて","content":"\n[公式サイト](https://obsidian.md)\n\n## 概要\n- オフラインのwikiっぽいもの(=Vault)\n- 記法はmarkdown\n- Vaultは全てローカルに保存される\n\n## インストール\n- [公式サイト](https://obsidian.md)に各OSのインストーラが揃ってる\n- Macでは`brew install obsidian`ができる\n\n## いいところ\n- シンプルでスタイリッシュなデザイン\n- 完全ローカルなので高セキュリティ\n- 数式が使える $E=mc^2$\n\n## わるいところ\n- 完全ローカルなので同期が課題\n\t- Vaultが巨大になるほど同期コストも増加\n- Macにて,エディタ上のリアルタイムプレビューとIMEが競合して日本語が正常に入力できないことがある\n\n## 所感\n- ar.falsy.catの記事書くのに使っている\n- WebDAVなどのファイルサーバー上にあるVaultを,全体をダウンロードせずに開けるようになれば素晴らしい","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","info-tech","tool"]},"/note/info-tech/pleroma":{"title":"Pleroma","content":"\n## 概要\n- ActivityPubに対応したlightweight(自称)なSNS\n- 単体で見るとlightweightには思えないけど,mastodonと比べたら確かにlightweight\n\n## DB肥大化問題\n- 長期間Pleromaを稼働させ続けると,DBのレコード数がやばいことになる\n- DBのレスポンスがくそ長くなり,最終的にタイムアウトで500になる\n- オブジェクトの寿命とか設定してみたけど特に意味はなかった\n\n### 解決法\n- ローカルアカウントそれ自体の情報以外の情報を削除する\n- pleromaを停止して,postgresで次のSQLを実行する\n\t- 自動化しても良いかもしれない\n- 追記: **フォロー/フォロワー情報も削除されてしまったので改善が必要!!!**\n```SQL\nTRUNCATE TABLE activities CASCADE; # 全アクティビティの削除\nDELETE FROM users WHERE not local; # 全リモートユーザーの削除\nVACUUM FULL;\nVACUUM ANALYZE;\n```","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","info-tech","web"]},"/note/info-tech/publish-obsidian-by-quartz":{"title":"ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築","content":"\n## 概要\n- [Quartz](https://github.com/jackyzha0/quartz)で[Obsidian](note/info-tech/obsidian.md)のVaultを公開する\n- 「*セカンドブレインデジタルガーデン*」という御大層な言葉は[Quartz](https://github.com/jackyzha0/quartz)の紹介文からの引用\n\n\u003c!--more--\u003e\n\n## 初期設定\n1. [Quartz](https://github.com/jackyzha0/quartz)をforkする\n2. GitHub Actionsを有効化\n3. repoの設定で`workflow permission`を`read and write permissions`へ変更\n\t- これしないとdeployに失敗する\n4. repoをローカルにclone\n5. `data/config.yaml`をいい感じに編集\n\t- `author`など\n6. `config.toml`をいい感じに編集\n\t- `baseURL`など\n7. pushする\n8. deployが終わったらGitHub Pagesのドメイン設定をする\n\n## 記事の執筆\n1. ローカルrepoの`content/`ディレクトリをVaultとしてObisidianで開く\n\t- `content/templates/`は弄ってはいけない\n2. 記事を書く\n3. pushする\n\n## ローカルプレビュー\n- dockerがあれば,リポジトリrootで`make docker`すれば`localhost:1313`にアクセスできる\n- `Makefile`の`docker`ターゲットのコマンドを下のように置き換えることで次の問題が解決できる\n\t- Ctrl+Cでサーバーが終了しない\n\t- `make docker`する度にゴミコンテナが残る\n```bash\ndocker run -it --init --name quartz-preview --volume=$(shell pwd):/quartz -p 1313:1313 ghcr.io/jackyzha0/quartz:hugo; docker rm quartz-preview\n```\n\n## カスタマイズ\n\n### Recent Notesの表示数を変更する\n1. `layouts/partials/recent.html`の`first 3 $notes`を変更する\n\n### トップページにグローバルグラフを表示する\n1. `data/graphConfig.yaml`の`enableGlobalGraph`を`true`にする\n\n### 記事にRelated Notesを表示する\n1. `layouts/partials/recent.html`を作成\n2. `layouts/_default/single.html`の好きな位置に`{{partial \"related.html\" .}}`を挿入\n3. `i18n/en.toml`に`related_notes`の翻訳を追加\n\nlayouts/partials/recent.html\n```html\n\u003cdiv class=\"content-list\"\u003e\n \u003ch2\u003e{{ i18n \"related_notes\" }}\u003c/h2\u003e\n {{$notes := .Site.RegularPages.Related .}}\n {{partial \"page-list.html\" (first 3 $notes)}}\n\u003c/div\u003e\n```\n\n## 所感\n- 扱いやすい[Obsidian](note/info-tech/obsidian.md)で執筆して,[Quartz](https://github.com/jackyzha0/quartz)でいい感じに公開ができた\n- 執筆のためにリポジトリをcloneしなければならないため,記事数が増えた時の複数PCの同期コストが問題になりそう\n\t- ブランチ分けてPullRequest活用すれば解決する?\n\t\t- 記事書くたびにPR作るのはクソめんどくさそう","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","info-tech","web","tool","howto"]},"/note/info-tech/qemu":{"title":"qemu","content":"\n## 概要\n- コマンドラインベースのVirtualBoxと思っている\n- 今のところM2チップのMacbook ProでLinuxを使うための最善手\n\t- M1/M2向けVirtualBoxはまだ開発者プレビューしかなく,まともに使えなかった\n\n\u003c!--more--\u003e\n\n## インストール\n\n### Mac\n```bash\n$ brew install qemu\n```\n- ハードウェアアクセラレーションが有効化されている他のビルドもあるらしいが未検証\n\t- 今後GPU使いたくなったら検証予定\n\n## コマンド逆引き\n\n### ディスクイメージの作成\n```bash\nqemu-img create -f qcow2 sda.qcow2 16G\n```\n\n### ディスクイメージのリサイズ\n```bash\n# ホストOSで実行\nqemu-img resize sda.qcow2 +16G\n\n# ゲストで実行\ncfdisk /dev/sda # いい感じに\ne2fsck -f /dev/sda2\nresize2fs /dev/sda2\n```\n\n### archのlive cdを起動\n```bash\nqemu-system-x86_64 \\\n -m 4G \\\n -cdrom ../iso/archlinux-2023.02.01-x86_64.iso \\\n sda.qcow2\n```\n- [関連: ArchLinuxのインストール方法](note/info-tech/install-archlinux.md)","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","info-tech","tool","virtualization"]},"/note/study/statistics/hypothesis-test":{"title":"仮説検定","content":"\n## 概要\n- 仮説検定とは,母集団の母数に関する帰無仮説について,棄却/受容を標本から客観的に判定する手続き\n- 有意確率とは,帰無仮説が真だった場合に誤って棄却する確率である\n- 仮説検定において,有意確率が事前に定めた有意水準よりも小さかった場合,帰無仮説を棄却する\n\n## 検定手順\n1. 帰無仮説を仮定する\n2. 帰無仮説のもとで検定したい事象が発生する確率$p$を求める\n3. $p$が事前に定めた有意水準よりも小さいならば,帰無仮説を棄却する\n\n## 結論に生じうる誤り\n- 第一種の誤り: 帰無仮説が正しい,かつ,帰無仮説を棄却してしまう\n\t- 発生確率=有意確率\n\t- 発生確率を設定できる\n- 第二種の誤り: 帰無仮説が誤っている,かつ,帰無仮説を受容してしまう\n\t- 発生確率は不明\n\t- 発生確率を設定できない\n- 有意水準を小さくすることで第一種の誤りは起こりにくくなるが,第二種の誤りが起こりやすくなる(トレードオフ)\n\t- 大体の場合で5%\n\t- 第一種の誤りが許されない場面(医療など)では1%\n\n## 例\n- コイントスを10回やって7回表が出た.コイントスは公平か?\n\t- 7回表が出る確率は$\\frac{1}{2^{10}} \\cdot {}_{10} \\mathrm{C}_7=0.12$\n\t- $0.12\u003e0.10$より有意水準10%で帰無仮説は棄却されない\n\t\t- コイントスは**公平である**\n\t\t- 12%で起こりうることが起きた,帰無仮説が正しい場合は普通のこと,つまり,帰無仮説は正しい\n\t\t- この結論は第二種の誤りである可能性がある\n\t- $0.12\u003c0.15$より有意水準15%で帰無仮説は棄却される\n\t\t- コイントスは**公平でない**\n\t\t- 12%で起こりうることが起きた,帰無仮説が正しい場合は奇跡に近い,つまり,帰無仮説は間違いだ\n\t\t- この結論は12%の確率で第一種の誤りである可能性がある\n\n## 注意点\n- 自分の望む結果を得るために,検定の途中で有意水準を作為的に操作してはならない\n\t- 有意水準は必ず有意確率を求める前に定めなければならない","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","study","statistics"]},"/note/study/statistics/hypothesis-test-multiplicity":{"title":"仮説検定の多重性問題","content":"\n## 概要\n- 結論に複数の[仮説検定](note/study/statistics/hypothesis-test.md)の結果が影響している時,その結論は検定の多重性問題を孕んでいる可能性がある\n- 問題を回避するためには,Holm法などで有意水準を下げる必要があるが,完璧ではない\n\n## 不確実な情報による結論の不確実性\n- **第一種の過誤のみを考慮した場合**,有意水準$x$で得られた検定の結果$n$個から導き出された結論は,最大で確率$1-(1-x)^n$で誤りである\n\t- $P_1\\cup P_2\\cup \\dots \\cup P_n\\implies Q$であるとき,$P_i$それぞれについて偽である確率が$e$ならば,$\\overline{Q}$である確率は$1-(1-e)^n$である\n\t- 故に有意水準を小さくすることで,結論が誤りである可能性を小さくすることができる\n- ただし,実際には**第二種の過誤も存在する**\n\t- 有意水準を小さくすれば結論が第二種の過誤である確率は増加する\n- 以上より,多重検定は非常によろしくない\n\t- 有意水準を何らかの方法で小さくした上で,全ての検定の帰無仮説が棄却であった場合のみ,統計的に有意な結論を導ける\n\t\t- 帰無仮説が棄却された場合,それが第二種の過誤であることはありえないから\n\n## Holm法による有意水準の調整\n多重検定を構成する一つ一つの検定の有意水準を小さくする方法の一つがHolm法である.他の方法も存在するが,Holmが一番バランスがとれてる(棄却/受容しすぎない)方法だと思う.\n\n### 手法\n$N$個の検定による多重検定の有意水準を$\\alpha$としたとき,Holm法による有意水準の調整を次のように行う.\n\n1. 各検定の有意確率をソート\n2. $i=0$とする\n3. 結論が未確定の検定のうち,最も有意確率が小さいものについて,その有意確率を$x$としたとき,\n\t- $x \u003c \\frac{\\alpha}{N-i}$ ならば,その検定を棄却\n\t- $x \u003e p$ ならば,結論が未確定の検定すべて(その検定を含む)を受容し,終了\n4. $i$に1を足して,\n\t- $i\u003cN$ ならば,3へ戻る\n\t- それ以外ならば,終了\n\n## まとめ\n- 多重検定は避けるべき\n- どうしても必要なら有意水準の補正が必要\n- 有意水準の補正にはHolm法が有効","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","study","statistics"]},"/note/study/statistics/hypothesis-test-parametric":{"title":"パラメトリック検定とノンパラメトリック検定","content":"\n## 概要\n- [仮説検定](note/study/statistics/hypothesis-test.md)におけるパラメトリック検定とは,母集団のサンプルに対する検定のうち,母集団の分布を事前に仮定する検定である\n- 母集団のサンプルに対する検定のうち,パラメトリック検定でないものはノンパラメトリック検定である\n\n## パラメトリック検定\n- 母集団がある特定の分布であると事前に仮定する検定\n\t- ノンパラメトリック検定に比べて,計算が楽\n\t\t- 手計算はこっちの方が嬉しい\n\t- 母集団が仮定と異なる分布を持つ場合,検定の結論に意味は無い\n- 事前検定で母集団の仮定を検証するのはやめた方がいい(後述)\n\n## ノンパラメトリック検定\n- 母集団の分布を仮定しない検定\n\t- 計算がめんどくさい\n\t\t- サンプルサイズが頭おかしいほど大きくない限り,コンピュータなら一瞬\n\t- 仮定に沿うパラメトリック検定が存在する場合,それよりも精度は落ちるが,実用的な問題はない\n\n## 事前検定\n- 欲しい結果を得る検定の前に行われる検定のこと\n\t- [多重検定](note/study/statistics/hypothesis-test-multiplicity.md)の問題を孕む\n\t\t- 個人的には,大抵の場合において事前検定は愚行だと思っている\n- 母集団の正規性を仮定するパラメトリック検定を使いたいがために,事前検定として正規性の検定(Shapiro-wilk test)をする人がいる\n\t- 個人的には多重検定問題沼に足を突っ込むぐらいなら,そこまでしてパラメトリック検定を使う必要はないと思う\n\t- 大人しくノンパラメトリック検定を使うべき\n\t- そもそもコンピュータ使えば計算コストは無視できる\n\n## まとめ\n- 仮説検定は2つに分けられる\n\t- パラメトリック検定: 母集団の分布になんらかの仮定が必要な検定\n\t- ノンパラメトリック検定: それ以外の検定\n- パラメトリック検定をしたいがために多重検定を使うぐらいならば,ノンパラメトリック検定を使うべき","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","study","statistics"]},"/note/word-play/japanese-text-all-stars":{"title":"国語教科書オールスターズ","content":"\n## 概要\n- 今までの国語の教科書に出てきた忘れられない奴等を忘れないために記録しておく\n\n\u003c!--more--\u003e\n\n## 小学校\n- さるのだいじなかぎのたば\n\t- 小学一年生の一番最初の単元だった気がする\n- *タイトル不明 要調査*\n\t- 木を描くやつ\n- アップとルーズで捉える\n\n## 中学校\n- かまきりりゅうじ\n\t- 「おれはかまきり」\n- いろは歌\n\t- 「いろはにほへと ちりぬるを わかよたれそ つねならむ ういのおくやま けふこえて あさきゆめみし えひもせすん」\n\t\t- 未だに空で書けた\n\t\t- 一人ずつ立って暗唱させられた記憶がある\n- *タイトル不明 要調査*\n\t- 「えんびふらい」\n- *タイトル不明 要調査*\n\t- 月の起源についての説明文\n- *タイトル不明 要調査*\n\t- ルロイ修道士「問題の細分化」\n\t- 月月火水木金金\n- 少年の日の思い出\n\t- エーミール「そうかそうか,つまりきみはそういうやつなんだな」","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","word-play","lifehack"]},"/note/word-play/proof-of-reality-using-lucid-dream":{"title":"明晰夢を利用した現実の証明","content":"\n## 概要\n- 今の意識が現実であることを証明する手法を論理的に導く\n- ただの言葉遊びなので哲学的な何かは期待しないでほしい\n\n## 前提\n- ここでは次の前提のもと議論を進める\n\t- 夢を見ていることを自覚している夢を見ている,ならばかつその時に限り,明晰夢を見ている\n\t- 明晰夢を見ている,ならば,全てが思い通りになる\n\t- 夢でないならば現実である\n- 証明は次の定義の元で行う\n\t- 状況$A$: 夢を見ている\n\t- 状況$B$: 夢を見ていることを自覚している\n\t- 状況$C$: 明晰夢を見ている\n\t- 状況$D$: 全てが思い通りである\n- 証明の最終的な目標は$X\\implies \\overline{A}$を導くことである\n\n## 証明\n1. 前提より\n\t- $P_1: A\\cap B\\iff C$\n\t- $P_2: C \\implies D$\n2. $P_1,P_2$より,三段論法を用いて\n\t- $P_3: A \\cap B \\implies D$\n3. $P_3$の対偶より\n\t- $P_4: \\overline{D}\\implies \\overline{A\\cap B}$\n4. $P_4$より,ド・モルガンの公式を用いて\n\t- $P_5: \\overline{D}\\implies \\overline{A} \\cup \\overline{B}$\n5. $B$は意図的に真にできるため,$P_5$より\n\t- $\\overline{D}\\cap B \\implies \\overline{A}$\n\n## 結論\n- 事前に夢を見ていることを自覚している,かつ,思い通りにならないことが存在する,ならば,それは現実である\n- ただし,この手法では全ての現実を証明できるとは言えないことに留意されたい","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","word-play","lifehack"]},"/note/word-play/two-lolita-devils-and-chess-board":{"title":"2人の幼女と悪魔とチェス盤","content":"\n## 概要\n- 「2人の幼女とチェス盤の部屋」という次のような論理問題を解説する\n\t- 以下の手順の後,幼女Bが任意の整数$x\\left(0\\leq x\u003c64\\right)$を求められるようにするには,幼女Aはどのような操作を行うべきか\n\t\t1. 悪魔が8x8チェス盤の各マスに1個ずつ,合計0個以上64個以下のポーンをランダムに配置する\n\t\t2. 悪魔は幼女Aにチェス盤を見せ,任意の数字$x\\left(0\\leq x\u003c64\\right)$を伝える\n\t\t3. 幼女Aは,チェス盤に対して次のいずれかの操作のうち可能であるものを1回だけ必ず行う\n\t\t\t- 任意のマスからポーンを1個だけ取り除く\n\t\t\t- 任意のマスにポーンを1個だけ追加する\n\t\t4. 悪魔は幼女Bにチェス盤を見せる\n\n## 問題の簡潔化\n- $f(g(b,x))=x$とできるような写像$f,g$を求めよ\n\t- $B=\\left\\\\{0,1\\right\\\\}$\n\t- $b\\in B^{64}$\n\t- $x\\in B^6$\n\t- $f: B^{64} \\rightarrow B^6$\n\t- $g: B^{64} \\times B^6\\rightarrow B^{64}$\n\t\t- $b$と$g(b,x)$は1ビットだけ異なる\n\n## 解答\n- $f(b)=f_0\\oplus f_1\\oplus f_2 \\oplus \\dots \\oplus f_{63} \\quad\\left(f_i=i b_i\\right)$\n- $b'=g(b,x) \\implies b'_m \\neq b_m\\quad\\left(m=x\\oplus f(b)\\right)$\n- [チェス盤が16x16の場合のプログラム](https://wandbox.org/permlink/XLo1pGURvrU4Y4Jj)\n\n## 解説\n- $x=f(b)\\oplus m$となるような$m\\in B^6$は必ず存在する\n- 盤面の各マスに$m$の値を割り当てることで,1マスの操作だけで$m$を表現できる\n\t- 盤面のマス目の数も,$m$がとりうる値の数も64\n\t- $f(g(b,x))=f(b)\\oplus m=f(b)\\oplus f\\_m\\oplus m(1-b\\_m)$\n\n## 応用\n- 長さ$2^N$の任意のビット列について,任意の1ビットだけを反転させることで,長さ$N$のビット列を表現できる\n\n## 参考文献\n- [# 超難問論理クイズ「2人の幼女とチェス盤の部屋」が本当に難しすぎた - 明日は未来だ!](https://sist8.com/chess2you)\n- [幼女問題まとめ - GItHub Gist](https://gist.github.com/catupper/5678658)\n- [Impossible Escape? - DataGenetics](http://datagenetics.com/blog/december12014/index.html)","lastmodified":"2023-06-26T13:50:32.149726527Z","tags":["note","word-play"]}} \ No newline at end of file diff --git a/indices/contentIndex.97d78cb70e55c67800694f3a27cfe0ce.min.json b/indices/contentIndex.97d78cb70e55c67800694f3a27cfe0ce.min.json new file mode 100644 index 0000000..5790867 --- /dev/null +++ b/indices/contentIndex.97d78cb70e55c67800694f3a27cfe0ce.min.json @@ -0,0 +1 @@ +{"/":{"title":"HOME","content":"\n[ブログ](blog)兼[備忘録](note).arはarchiveの略.[著者](https://falsy.cat/)\n","lastmodified":"2023-06-28T23:29:07.981696333Z","tags":[]},"/blog/2023/0301-fukue-island":{"title":"福江島 1日目","content":"\n## 概要\n- 用事があって,東京から福江島へ行った\n- 宿が神\n- 3泊4日で3/4に東京へ帰還する予定\n\n## 移動\n- 出発地は東京\n- 家→羽田空港→長崎空港→五島福江空港→宿\n- 早朝に家を出て,昼に到着した\n\t- 別に昼に到着するためにわざわざ早朝に家を出たのではなく,\n\t- 1ヶ月前に航空機の予約を取ったので,安い便はほとんど早朝だっただけ\n\n### 家→羽田空港\n- 電車\n- 遅延も事故もなかったので良かった\n\n### 羽田空港→長崎空港\n- ANA\n\t- メーデーでよくLCCが堕ちている感じがある(個人的に)\n\n### 長崎空港→五島福江空港\n- 小型のプロペラ機に乗った\n\t- 到着地が雨で視界が悪かったため,条件付き(もしかしたら出発地に戻るかもしれない)運行だった\n\t- 運良く到着地に無事着陸できた\n\n### 五島福江空港→宿\n- 宿の人が車で迎えに来てくれた\n\t- 空港に着いてからタクシーを呼ぶ予定だった\n\t\t- タクシー代が浮いた\n\t\t- とてもありがたい\n\t\t- 神\n- 本当は今日までに免許を取っていたかったのだけど,2月にそんなスムーズに取れるはずもなかった\n\t- 免許取れてたらレンタカーを借りる予定だった\n\n## 宿\n- 一日一組限定の一棟貸を一人で3泊借りるという暴挙に出たけれど,嫌な顔ひとつされなかった\n\t- 上で言った通り,空港に向かえに来てさえくれた\n- ほとんど素泊まり\n\t- ご飯なし\n\t- チェックアウトまで清掃もしてくれる感じではなさそう?\n- 今のところ神\n\t- アメニティ,設備が揃ってる\n\t\t- 最初はただの民家の鍵を渡されるだけかと思ってた\n\t\t- ドライヤー,ヘアアイロン,髪につけるジェル,髭剃り,スキンケア関係も一通り揃ってた\n\t\t- ボディスポンジが,舞浜のディズニーランド近くのホテルより性能良かった\n\t- 水周りが綺麗\n\t\t- 外見は築年数が経った民家っぽかったのであまり期待してなかった\n\t\t- 想像以上に綺麗だった\n\t- キッチンが使える\n\t\t- まだ使ってないし使う予定はないけど,自炊もできる\n\t\t- 魚釣って捌いて食べるってこともできるらしい\n\t\t\t- 捌くのは外でやれって張り紙があった\n\n## 食事\n### 昼\n- [Slow Cafe たゆたう](https://tayutau510.com)\n- 鬼岳バーガー\n\t- 鬼岳は315m,バーガーは315gらしい\n- 美味しかったけど綺麗な食べ方がわからない\n- カフェラテがムンクの叫びになった\n\n![](blog/2023/0301-fukue-island/20230301_135616501..webp)\n![](blog/2023/0301-fukue-island/20230301_141621536..webp)\n\n### 夜\n- [Cafe EARTH](http://goto-earth.com)\n- 美味しかった\n- 写真は撮ってない\n\n## 猫\n- 夜歩いてたらめっちゃ足にまとわりついてくる猫がいた\n- 首輪してなかったので多分野良\n- 暗かったのでうまく撮れなかった\n\n![](blog/2023/0301-fukue-island/20230301_201257214..webp)\n![](blog/2023/0301-fukue-island/20230301_201322690..webp)","lastmodified":"2023-06-28T23:29:07.981696333Z","tags":["blog","travel","photo","gourmet","cat"]},"/blog/2023/0303-fukue-island":{"title":"福江島 3日目","content":"\n## 概要\n- 用事があって,東京から福江島へ行った\n- 3泊4日の3日目 ([1日目](blog/2023/0301-fukue-island))\n- 2日目は用事がメインで特に何もなかったので割愛\n\n## 観光\n### 五島観光歴史資料館\n- 入場料300円\n- 石器時代レベルの遺物から戦時中に将校が携帯していた刀まで展示してあった\n\n![五島観光歴史資料館](blog/2023/0303-fukue-island/20230303_144823.webp)\n\n### 堂崎教会\n- タクシーで行った\n\t- 定期観光バスで予約なし乗車しようと思ったら,予約いっぱいでダメだった\n\t- 運転手の人が他の教会にも連れて行ってくれた\n- 入場料300円\n- 中にはキリスト教に関係する資料や像が展示されていた\n\t- 聖典の装丁が厨二っぽくてカッコよかった\n\t- 館内は撮影禁止\n\n![堂崎教会](blog/2023/0303-fukue-island/20230303_155200.webp)\n\n![堂崎教会までの道](blog/2023/0303-fukue-island/20230303_155613.webp)\n\n## 食事\n### 昼\n- 1日目と同じく[Slow Cafe たゆたう](https://tayutau510.com)にて\n- 鬼岳マグマチーズバーガー\n\t- 相変わらず綺麗な食べ方がわからなかった\n\n![鬼岳マグマチーズバーガー](blog/2023/0303-fukue-island/20230303_130355783.webp)\n\n### 夜\n- [キッチン さゆり](https://goto.nagasaki-tabinet.com/restaurant/61866)\n- 五島牛焼肉定食\n\n![](blog/2023/0303-fukue-island/20230303_183608430.webp)\n\n## 猫\n- 福江港を散歩してたら野良猫の集団に出会った\n- ちょっと近づいても全然逃げない\n- [1日目](blog/2023/0301-fukue-island)の猫といい,島の猫は人間に馴れている\n\n![](blog/2023/0303-fukue-island/20230303_180521.webp)","lastmodified":"2023-06-28T23:29:07.985696635Z","tags":["blog","travel","photo","gourmet","cat"]},"/blog/2023/0304-fukue-island":{"title":"福江島 4日目 最終日","content":"\n## 概要\n- 用事があって,東京から福江島へ行った\n- 3泊4日の4日目 最終日 ([1日目](blog/2023/0301-fukue-island)/[3日目](blog/2023/0303-fukue-island))\n- 朝一で鬼岳に行って,その後帰投した\n- 帰りはほとんど行きの行程の逆を踏んだだけなので割愛\n\n## 鬼岳\n- 朝7時半にタクシーを呼んで鬼岳まで行った\n\t- 当初,鬼岳の大きさを過大評価しており,登るのは時間的に無理だろうと思い,行くのは諦めてた\n\t- しかし,[昨日](blog/2023/0303-fukue-island)のタクシーの運転手の人に「飛行機11時出発でも,朝で鬼岳は十分回れるよ」と言われたので早起きした\n- 1時間後にタクシーを予約して鬼岳を登った\n\t- さすがに全部の道を辿る時間はなかった\n\t- 無事1時間で下山できた\n- 多分夏に行ったらWindows XP\n- やっと[1日目](blog/2023/0301-fukue-island)と[3日目](blog/2023/0303-fukue-island)の昼食に食べたバーガーのモチーフとなった山に登ることができた\n\n![](blog/2023/0304-fukue-island/20230304_080357.webp)\n![](blog/2023/0304-fukue-island/20230304_080248.webp)\n![](blog/2023/0304-fukue-island/20230304_074625.webp)\n![](blog/2023/0304-fukue-island/20230304_074605.webp)\n\n## 飛行機\n- 自分が搭乗してる飛行機が地上で転回するという経験は初めてだったので滑走路の写真を撮った\n\t- 最初加速したと思ったら減速し始めて,離陸失敗かと思った\n\t- 転回のために滑走路端まで進んでただけだった\n- タクシーの運転手曰く\n\t- 五島福江の空港は滑走路が短いため大型機は離着陸ができない\n\t- 故に東京直行便を作るのも難しいらしい\n\t- 一応現地の議員が東京直行便を作ろうと頑張ってるらしい\n\n![](blog/2023/0304-fukue-island/20230304_111407.webp)\n\n## 猫\n- 空港への帰り際にまた野良猫に会った\n\n![](blog/2023/0304-fukue-island/20230304_094006.webp)\n\n終\n","lastmodified":"2023-06-28T23:29:07.989696936Z","tags":["blog","travel","photo","mountain","cat"]},"/blog/2023/0319-moving":{"title":"引っ越しをした","content":"\n- 4月から色々あるので引っ越しをした\n- 立地も治安も壁の厚さもとても良いところだった\n\n![旧自宅](blog/2023/0319-moving/room.webp)","lastmodified":"2023-06-28T23:29:07.989696936Z","tags":["blog","photo"]},"/blog/2023/0618-sarushima-island":{"title":"猿島へ行った","content":"\n## 概要\n- 猿島へ日帰り観光に行った\n- 人が多かった\n- 廃墟目当てだったが,そこまで廃墟はなかった\n\n## 行程\n- 京急線の横須賀中央駅から三笠ターミナルへ徒歩で15分\n- フェリーで猿島へ(10分)\n- 島内を観光\n- 島内で昼食\n- フェリー,電車で帰宅\n\n## フェリー(行き)\n- 土曜日午前11時台の便に乗った\n- 並んでる人が多かった\n\t- 次の便に乗れるのか不安になるぐらい\n\t- 並んでた人全員がギリギリ乗れた\n- 乗船時間は10分程度なので酔うこともなく無事到着\n\n![](blog/2023/0618-sarushima-island/DSC_0069.webp)\n\n![](blog/2023/0618-sarushima-island/DSC_0070.webp)\n\n## 観光\n- 写真を撮りながら適当に周った\n- フェリーの到着直後は入り口付近に人が多い\n\t- 写真を撮りたいなら時間をずらしたほうがいい\n\n![](blog/2023/0618-sarushima-island/DSC01320.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01327.webp)\n\n\n### 廃墟\n- もっと廃墟があるのかと思っていたけれど,廃墟4,自然6ぐらいだった\n- 廃墟単体のクオリティは高かった\n\t- 苔が良い\n\t\t- 壁面の苔を削って文字を書く💩がいるらしく,名前がところどころに彫られていた\n\n![](blog/2023/0618-sarushima-island/DSC01392.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01393.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01324.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01323.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01371.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01395.webp)\n\n![](blog/2023/0618-sarushima-island/DSC01396.webp)\n\n### クイズ\n- QuizKnockとのコラボで,島内を探索することで解けるクイズ企画をやっていた\n- クイズが書かれている紙は三笠ターミナルで500円で売っていた\n- 自分は買わなかったが,友達が買ったので一緒に解いた\n\t- 5問中3問は僕が解いたので感謝してほしい\n- ちなみにクイズを解いても,達成感以外に特に得られるものはない\n- 猿島に行かないと解けないが,クイズの内容自体は猿島とはそこまで関係なかった\n\n## 昼食\n- カレーは重いなと思ったので,一人分を友人と分けた\n- 追加でプライドポテト(フライドポテト)と唐揚げを買った\n- 正直,味は普通\n- 離島なので物価は高め\n\n![](blog/2023/0618-sarushima-island/IMG_20230618_152924_584.webp)\n\n## フェリー(帰り)\n- ダイヤ関係なく,着いたら客を乗せて出港のサイクルを30分間隔ぐらいで繰り返していた\n- 後方で並んでる人が次の便で乗れないぐらいには人が多かった\n\n## まとめ\n- クオリティの高い廃墟が見れた\n- もっと廃墟が密集してると思ってた\n- 人が多かった\n\t- BBQ目当ての大学生大所帯とか","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["blog","photo","travel"]},"/note/chores/cooking-rice-with-saucepan":{"title":"片手鍋で米を炊く","content":"\n## 概要\n- 炊飯器が無くても米は炊ける\n- ただし火を使う間,22分程度拘束される\n\n## 手順\n1. 片手鍋で米(3合)を研ぐ\n2. 水(500ml)を入れる\n3. 蓋をして鍋ごと冷蔵庫で30分冷やす\n4. 蓋をしたまま中火で13分\n5. 弱火で3分\n6. とろ火で6分\n7. 火を消して蓋をしたまま10分放置\n\n## 補足\n- 冷やす時間は15分程度まで短縮しても良い\n\t- 短縮した場合は中火の時間も12分程度に縮める\n- 最後の放置が結構重要\n\t- 火を消した直後はまだべちゃべちゃしてる","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","chores","cooking","lifehack"]},"/note/chores/one-hand-egg-cracking":{"title":"卵を片手で割る手法の提案","content":"\n## Abstract\n- This paper proposes a method to crack eggs by one hand\n- The method can reduce cooking time and promote multi-tasking\n- No special appliance is needed\n- However accuracy of action is necessary to keep yolk unbroken\n\n## 概要\n- 調理の時短とマルチタスク促進のために卵を片手で割る手法を提案する\n- 本手法は一般家庭にある既存の器具のみで実行が可能\n- ただし黄身を割らないためには繊細な動作が要求される\n\n## 背景\n- 左手でゴミ袋を持ちながら右手で卵を割ると非常に時短になる\n- 特に調理プロセスのなかで一度に複数の卵が関与する場合に著しい時短効果が得られる\n- [先行研究](https://gourmet-note.jp/posts/15029)の手法では調理対象に殻が混入してしまうことが多い\n\n## 手法\n1. 卵をフォークボールを投げる時のように持つ\n\t- 鋭端が人差し指と中指の間に来るように持つ\n\t- 鈍端を親指と薬指で支える\n2. 皿の淵で卵の殻に割れ目を作る\n\t- 卵の鋭端と鈍端を結ぶ線分の垂直二等分線が皿の淵と重なるように腕を何回か振り下ろす\n\t- 皿を卵の直径の$\\frac{1}{4}$程度まで食い込ませる\n\t- 卵を皿に押し付けて真っ二つにするイメージ\n\t- ここで皿を食い込ませすぎると黄身が割れる原因になる\n3. 人差し指の付け根で割れ目の裏側を押し出す\n\t- 人差し指,中指,親指,薬指で卵をしっかりと支えておく\n\n## 評価実験\n- 本手法を用いて鶏卵2個を割った\n- 1個は黄身が割れたが,1個は割れなかった\n- 卵の殻が調理対象に混入することはなかった\n\n## まとめ\n- 卵を片手で割る手法を提案した\n- 本手法では50%の確率で黄身が割れる\n- [先行研究](https://gourmet-note.jp/posts/15029)の手法と異なり,卵の殻が混入する確率は低い\n- 今後の課題として,黄身が割れる確率を抑えることが挙げられる\n- 理論上,左右両方の手で同時に2個の卵を割ることでさらなる効率化を図れる","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","chores","cooking","lifehack"]},"/note/essay/effective-presentation":{"title":"大臣賞を取れるプレゼンの作り方","content":"\nこのページでは,私がU22プログラミングコンテスト2022の最終審査回で発表したプレゼンについて,準備するときに考えたことを紹介します.このプレゼンは大臣賞を取れた1つの要因だと思っているので,今後もしプレゼンをする機会があれば参考にしてみて下さい.\n\n実際のプレゼンの様子は[YouTube](https://youtu.be/Br0RlSKFaCE)で公開されています.よければご覧ください.\n\n## 背景\nU22プログラミングコンテストとは,毎年開催されている作品応募型のプログラミングコンテストで,40年以上の歴史があります.期限(8/31)までに作品を完成させ,応募することでエントリーすることができますが,U22の名前の通り22歳以下の人しか参加できません.\n\n応募された作品は総勢20名程度の審査員に選考され,この選考を突破した16作品の製作者だけが最終審査会に参加できます.審査員の一覧には東京大学の名誉教授やIT企業の役員の方々が並んでおり,また,応募総数は毎年300を上回っているため,最終審査会へ参加することは非常に難しいです.\n\n最終審査会では,参加者が1人ずつ,制作した作品について10分程度の発表を対面で審査員に向けて行います.2022年の場合は一般向けにニコ生配信もされており,同接は1万人程度でした.\n\n全員の発表が終わると,審査員によって各16作品が審査され,経済産業省大臣賞,局長賞やスポンサーの企業賞などが応募者に授与されます.ここで私は経済産業省大臣賞(副賞50万円)とPCAクラウド賞(副賞:M2 Macbook Pro)をいただきました.余談ですが,実は2020年にも参加しており,その時は経済産業省の商務情報政策局長賞(副賞5万円)を頂きました.~~金額が微妙~~\n\nこのページでは,そんな大臣賞をとれるようなプレゼンを作るときに考えたことを紹介します.\n\n## スライドを作る前に・・・\n### 勝利条件を決める\nまずは,スライドを作る前に,最終審査会に参加して得たい結果,満たすべき条件である勝利条件を決めました.勝利条件というとゲームのように聞こえますが,実際のゲームのように明確なルールがあれば自分が取るべき最善手を見つけやすくなります.だからこそ,このステップではルールを明確に決定し,発表そのものをゲームとして捉えられるようにしました.\n\nここでは,勝利条件を「大臣賞を取る」に定めました.2020年の最終審査会に無策で挑んで微妙な結果を取ってしまったのが悔しかった,というのが理由です.\n\n### 戦略を考える\n次に,発表の方向性,言い換えれば戦略を決めました.勝利条件を満たすためには,受賞者の決定権がある審査員の方々に,何らかの影響を与えなければなりません.物理的,金銭的なものを除けば,私が審査員に与えられる影響は精神的なものだけです.そのためこのステップでは,審査員の記憶,感情に発表を通してどのような影響を与えるかを決定しました.\n\n結論として,戦略を「ほかのどの発表よりも,自分の発表を審査員全員の記憶に残す(いい意味で)」に定めました.以下ではその経緯を説明します.\n\n#### ターゲットの調査\n戦略を決定するにはターゲット,つまり審査員の方々について,よく知る必要があります.特に,どのような専門知識を持っているのか,何に興味があるのかという情報は非常に重要です.いくら高度で技術的な話をしたところで,相手に理解されなければ,相手に興味を持たれなければ,ただただ貴重な発表時間を失うだけだからです.\n\n実際に審査委員について調査した結果,次のことが判明しました.\n- 構成員の属性は幅広い(文系,理系,事務職,技術職,教授,CTOなど)\n\t- 企業所属の人が多め\n- 審査委員長は東京大学の名誉教授\n\nこの調査結果から,効果的な発表の条件は次のように絞られます.\n- 企業所属の人に対して,社会における実用性,利益の可能性を提示できる\n- 技術職の人に対して,技術的実用性,技術的工夫を提示できる\n- 教授などの研究職の人に対して,数学的美を提示できる\n- 文系,事務職の人に対して,実際的な応用例を提示できる\n\n以上の条件より,戦略レベルで発表の話題を絞ることは難しいことがわかります.これら4つの条件を全て満たすような1つの話題は存在するのかもしれませんが,存在があやふやなものを探すことに時間を割きたくありません.\n\n#### そもそも評価対象は作品である\n最終審査会において何を審査するのかといえば,それは発表ではなく作品です.スライドを作ろうとしているこの時点で作品はすでに審査員に提出しているため,作品自体の価値や評価を大幅に増加させることは難しいです.(最終審査会直前までのブラッシュアップは可能)\n\nつまり,戦略の条件としては,作品単体が審査員に与える影響を増幅できるものである必要があります.\n\n#### 審査員の立場になってみる\n効果的な影響を審査員に与えるためには,審査員の立場になって戦略を考えることが必要です.私の発表の直前に,審査員は何を期待するでしょうか.発表を通じて,この期待に応えたり,あるいは裏切ったりすることで審査員への影響はより強くなります.また,発表直後から審査結果の決定までの時間も無視できません.私はこの時間に審査員に干渉することはできませんが,他の作品の発表が審査員に影響を与え得るからです.\n\nところで,あなたは,複数人の発表を聞き,評価するような発表会に参加したことがあるでしょうか.おそらく多くの人が学生時代に経験していることだと思います.そして発表会の終了後に全ての発表を覚えていられた人はかなり稀なのではないでしょうか.\n\n戦略を「審査員全員の記憶に残す」に定めた理由は,最終審査時の審査員も同様に一部の発表しか覚えていない可能性が高く,より多くの審査員のその一部に含まれることで,勝利条件を満たす確率が高くなると考えたからです.もちろん審査員も審査のために全ての発表のメモを取るとは思いますが,もしあなたが審査員だった場合に,メモには残っているけれど記憶には残っていない発表を高く評価するでしょうか.\n\n### 戦術を考える\n戦術は言うなれば小細工です.戦術を組み合わせて作戦を立案します.\n\n今回の場合,戦略は「いい意味で記憶に残す」ですから,ここでは,何かを相手の記憶に強く焼き付けられるような小細工を3つ紹介します.特に脳についての研究をしていたわけでもないので,全部個人的な経験から学んだものです.全人類に効くかは知りませんが,実際に大臣賞という結果を残しています.\n\n#### 発表内容を普遍的なアンカーに関連させる\nアンカーとは,何かの行為の後に最初に思い浮かべる事柄です.例えば,鎌倉幕府の創設年を聞かれた時に「いいくに作ろう鎌倉幕府→1192」という連想をした場合,「いいくに作ろう鎌倉幕府」という言葉がアンカーです.ちなみにこの場合,「鎌倉幕府の創設年を聞く」は,アンカーを想起させるための行為であり,トリガーと呼ばれます.(神経言語プログラミングで使われている言葉らしい?)\n\n事前にアンカーを1つに定め,伝えたい内容をそのアンカーに関連させることで,発表内容を不特定多数の記憶に残しやすくなります.はっきりとしたアンカーを定めなかった場合,聞き手が発表内容を思い出すというトリガーに対するアンカーは聞く人によって異なり,必然的にアンカーから連想されるものもあやふやで十人十色に変化します.そのため,どうでもいいことを覚えられてしまったり,本当に覚えてほしいことを覚えてもらえなかったりする可能性が高くなります.\n\nアンカーは発表内容に関係している必要はなく,誰もが知っている事柄である方が良いです.猫と量子力学は無関係ですが,シュレディンガーの猫という言葉は多くの人に覚えられています.これは猫が良いアンカーになっているのではないでしょうか.\n\n#### 忘れた頃に繰り返す\nあの忘却曲線を提唱したエビ🦐ングハウスさんに依れば,忘れた頃に復習をすれば記憶定着率を上げられます.エビ🦐ングハウスさんの実験とは時間スケールも記憶する対象も違いますが,何回も同じことを繰り返せば脳は勝手に覚えてくれるというのは,誰しも経験から理解できるはずです.\n\n#### 音声思考型には言葉,イメージ思考型には視覚\n脳内の独り言で思考するタイプ(音声思考型)の人には言葉による情報が,イメージで思考するタイプ(イメージ思考型)の人には視覚による情報が理解されやすいらしいです.理系は大体音声思考型のため(偏見),専門的な話は文字や口頭で,それ以外の話はスライド上の画像を使うことが有効です.\n\n### 作戦を考える\n戦術が列挙できたら,そられを取捨選択し,組み合わせて作戦を練ります.実際の発表内容の計画は,大まかに次の図のようになりました.本番の発表は9分ぐらいでしたが,流れと時間配分は大体計画通りでした.この作戦のいくつかのポイントを説明します.\n\n![](note/essay/effective-presentation/plan.png)\n\n#### 情報に合わせた表現方法の選択+繰り返し\n最初のポイントは,開発コンセプトを言葉で,利用例を映像で簡潔に表現する点です.Nf7の開発コンセプト自体は理解に専門性が必要なため,このコンセプトを伝える対象は技術者です.一方で,Nf7を使って作れるアウトプット自体は音声,画像,映像データが主ですので,利用例は技術者でなくても理解ができます.音声思考型の多そうな技術者に伝えたい情報は文字を使って,その他の人に伝えたい情報は視覚を使って伝えることで,より大きい影響を与えることを狙います.\n\nまた,開発コンセプトについては,時間をあけて同じ話題を2回登場させることで記憶への定着を図ります.\n\n#### 利用例で猫をアンカーにする+繰り返し\n次のポイントは,利用例の紹介の中で猫をアンカーにすることです.Nf7で作れるアウトプットの例として,虹色に光る猫や大量の猫を描画することで,猫の印象を強烈に植え付けます.これにより,最も重要な問い「この作品は何ができるのか」に対するアンサーをアンカーに結びつけることができます.(駄洒落じゃないよ)\n\nまた,このアンカー植え付けも,1回目と2回目の利用例紹介のどちらともで行うことで,アンカーの効果をより高めています.動画をご覧いただいた方にはわかるかもしれないですが,2回目に至っては盛大な振りまでしているので,私がいかにこのアンカーが重要だと考えていたかがわかるかと思います.\n\n#### 話題の専門性に波を持たせる\n最後の注目すべきポイントは,話題の専門性を上げた後は必ずすぐに下げるということです.施した工夫や技術力をアピールするためにはどうしても技術的な話をする必要がありますが,その話の直後には必ず,専門性を下げるような話題を持ってきます.誰一人として聞き手を取り残さないための作戦です.\n\nさらに,専門性を一気に0に下げることで,ギャップによるある種の感動を作り出します.理解できない話をされると誰しもストレスを感じますが,理解できた瞬間には喜びや達成感が得られます.なんかすごそうなことばかり言っている頭の良さそうな人が,急に「りんごたべたい」とか言い出したら印象に残るのではないでしょうか.このギャップを意図的に作り出すのです.\n\n## スライドを作る\n正直ここではあまり工夫をしていないですが,強いて言うならば「simple is best」を心がけました.背景は白,文字は黒,アニメーションは無し.元映像クリエーター(自称)としてアドバイスをするならば,センスに自信がないならば白と黒だけで画面を作った方がいいと思います.あとMSゴシックやめろ.\n\n## 発表をする(本番)\n動画では思いっきりPC画面見ながら話してますが,当時試験期間真っ最中だったために練習時間が取れなかったのが原因です.詰まったり,吃ったりするぐらいなら原稿見て話したほうが伝わるだろうと考えている派なので,ガン見しました.ただし,ページ切り替えなどで間を取る時はできるだけ聞き手を見るようにはしました.\n\n## 参加した感想\n戦略,戦術,作戦を立てて本番に臨み,計画通りの発表ができたと思っています.この計画が功を奏したのかは「神のみぞ知る」ですが,勝利条件は達成できたためそこはどうでもいいことです.ここまでこの長い文章を読んでいただきありがとうございました.\n\nちなみに,抽象的な戦術(tactics)の列挙とそれらの融合による作戦立案の手法は,チェスでの経験をもとにしています.みんなもチェスやろう.","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","essay"]},"/note/info-tech/c-cpp-sanitizer":{"title":"C/C++のsanitizerの使い方","content":"\n## 概要\n- バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある\n- このページではsanitizerの使い方を説明する\n\n## 使い方\n\n### コンパイル時にsanitizerを埋め込む\n- 種類ごとにオプションが異なる\n- XXXにはSanitizer名をカンマ区切りで羅列する\n\t- 代表的なSanitizer名については後述\n\n```bash\ng++ -fsanitizer=XXX a.cc\ngcc -fsanitizer=XXX a.c\n```\n\n#### 代表的なSanitizer\n- [ここ](https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html)で`-fsanitizer=`を検索すると一覧が見れる\n- `thread`は`address`や`undefined`と同居できない\n\n|名前|説明|\n|:--|:--|\n|`address`|[Address Sanitizer](https://github.com/google/sanitizers/wiki/AddressSanitizer)|\n|`undefined`|[Undefined Behavior Sanitizer](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html)|\n|`thread`|[Thread Sanitizer](https://github.com/google/sanitizers/wiki#threadsanitizer)|\n\n### 実行時にsanitizerの挙動を指定する\n- sanitizerが埋め込まれたバイナリに対して,実行時に,sanitizerの挙動を環境変数で指定することができる\n- 詳細は各sanitizerの説明ページを参照\n\n## 所感\n- `thread`が強すぎる\n\t- `thread`は実際に[Nf7](https://git.falsy.cat/nf7/nf7)のデバッグで使ってる\n\t\t- sanitizerがなければ気づけなかったcondition raceがかなりあった\n\t\t\t- 格好つけてロックフリーで書いたせい\n- `thread`が`address`や`undefined`と一緒に使えないのが痛い\n\t- どちらともを使うには,`thread`でビルド,テストした後に,オプションを変えてビルドし直し,同じテストを実行しなければならない","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","info-tech","development","programming-language","howto"]},"/note/info-tech/dart":{"title":"dart言語","content":"\n## 概要\n- Google製プログラミング言語\n- [flutter](note/info-tech/flutter.md)のための言語\n- 日本語資料少なめ\n- オブジェクト指向\n\n## 特徴\n- undefined behaviorは無い\n- Null safety\n\t- 型名に?を付ければNull許容型になる\n\t- Null許容型に対してはNullチェックをしないとコンパイラがキレる\n- 整数値以外は参照型\n- GC(mark \u0026 sweep)搭載\n\t- デストラクタは無さそう,そもそもmark \u0026 sweepでデストラクタは信頼できない\n- コンストラクタが書きやすい\n\t- わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい\n- 静的解析が強め\n\n## 文法\n- 大体は既存のやつと同じ\n- 文末セミコロン必須\n- 関数呼び出しの実引数リストでもケツカンマ許容\n\n### 変数修飾子\n- 型が自明な場合,型名は省略できる\n\t- 省略できる場合は省略することが推奨される\n\n```dart\n// コンパイル時定数\nconst int x = 0;\nconst x = 0;\n\n// 再代入不可能変数\nfinal int x = 0;\nfinal x = 0;\n\n// 再代入可能変数\nvar int x = 0;\nvar x = 0;\n\n// 遅延初期化変数\nlate int x;\nlate final int x;\n```\n\n#### final: 再代入不可能変数\n- 値型の変数に対しては,値の変更を禁止する\n- 参照型の変数に対しては,参照先の変更のみを禁止する\n- dartでは,参照先のオブジェクトの変更を禁止することはできない\n\n#### late: 遅延初期化\n- 変数の初期化を遅延させることができる\n- 実質的にはNull safetyの無いNull許容型\n- `late final`修飾子によって複数回の代入をコンパイルエラーにできる\n\t- ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない\n\n### Null safety\n- Null許容型に対しては,Nullを扱いやすくするための演算子が使える\n- 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える\n```dart\n(T? x) {\n x ?? T(); // x が null ならば 0 それ以外ならば T()\n x?.method(); // x が null ならば methodを呼ばずnullを返す それ以外ならば methodを呼ぶ\n x!.method(); // x が nullでない ことを前提として methodを呼ぶ(実行時にnullだった場合runtime error)\n};\n(T? x) {\n if (x == null) {\n return;\n }\n x.method(); // x!.method(); とする必要がない\n};\n(T? x) {\n x.method(); // Nullチェックしてないのでコンパイルエラー\n};\n```\n\n### コンストラクタ\n- C++と比べてかなり書きやすい\n\n```dart\nclass A {\n final int x;\n final int y;\n final int z;\n\n A(this.x, this.y, this.z);\n A(this.x, {required this.y, this.z = 1});\n A.empty() :\n this.x = 0, this.y = 0, this.z = 0;\n}\n\nvoid main() {\n final a1 = A(0, 1, 2);\n final a2 = A(0, y: 1);\n final a3 = A.empty();\n}\n```\n","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","info-tech","development","programming-language"]},"/note/info-tech/flutter":{"title":"flutter","content":"\n## 概要\n- flutterはマルチプラットフォーム GUIアプリケーション フレームワーク\n\t- iOS/Android,Web,Windows/Linux/Mac,組み込み\n- Google製\n- 使用言語は[Dart](note/info-tech/dart.md)\n\n## 環境構築\n- dart + flutterをインストール\n- VSCodeにflutter用の拡張機能を追加\n\n## 豆知識\n### ウィジェットツリー\n- `main`関数から`runApp`にウィジェットツリーを渡すことでメインループが始まる\n- ウィジェットはStatelessなものとStatefullなものに大別できる\n- Statefullなウィジェットが更新(`setState`)されると,そのウィジェットとその子孫のツリーが全て再構成(`build`)される\n\t- パフォーマンス悪そうに見えるけれど,ウィジェットツリーの変更部分のみをシステム内部のエレメントツリーに反映することで画面更新を行なっているので,最適化はされている\n\t- HTMLレンダラみたいな感じ\n\n### 画面遷移\n- Navigatorが現在の画面の状態スタックを持つ\n\t- pushで画面遷移\n\t\t- コルーチンのawaitで,遷移先がpopされた時の値を受け取れる\n\t- popで前の画面に戻る\n\t\t- ユーザーからの戻るボタン押下でも勝手にpopされ得る\n\t\t- 呼び出し元へ返す値を引数に設定できる\n```dart\n// push (遷移後の画面がpopされるまでyield)\nfinal ret = await Navigator.of(context).push(\n MaterialPageRoute(\n builder: (context) =\u003e Widget(),\n ),\n);\n\n// pop\nNavigator.of(context).pop(\"hello\");\n```","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","info-tech","development","library"]},"/note/info-tech/install-archlinux":{"title":"ArchLinuxのインストール","content":"\n## 概要\n- [ArchLinux](https://archlinux.org)のインストール手順を記録する\n- Live Environmentの起動方法については触れない\n\n\u003c!-- more --\u003e\n\n## 前提\n- [qemu](note/info-tech/qemu.md)上の仮想マシン\n- BIOS\n- GPT\n- x86_64\n- デュアルブートなし\n- できるだけシンプル,ミニマリスティックに\n\n## 手順\n### 1. 事前準備\n\n```bash\nloadkeys jp106 # キーボード設定\nping google.com # インターネット疎通確認\ntimedatectl status # 時間の確認 (この時点ではUTC)\n```\n\n### 2. パーティショニング\n```bash\ncfdisk /dev/sda # 先頭1MiBをBIOS bootに,残りをLinuxに設定\nmkfs.ext4 /dev/sda1 # フォーマット\nmount /dev/sda1 /mnt # /mntへマウント\n```\n\n### 3. インストール\n```bash\nvim /etc/pacman.d/mirrorlist # 日本のmirrorを指定しておく\npacstrap -K /mnt base linux linux-firmware vim grub dhcpcd # Wi-Fiで10分くらい\n```\n\n- 執筆時点で有効な日本のmirror\n\t- `http://mirrors.cat.net/archlinux/$repo/os/$arch`\n\t- `https://mirrors.cat.net/archlinux/$repo/os/$arch`\n\n### 4. 初期設定\n```bash\ngenfstab -U /mnt \u003e\u003e /mnt/etc/fstab\narch-chroot /mnt # 以下仮想rootで作業\n```\n#### 時計関係\n```bash\nln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # TZを東京に\nhwclock --systohc\n```\n\n#### 言語関係\n- `/etc/locale.gen`を編集して,`en_US.UTF-8 UTF-8`をアンコメント\n- `locale-gen`\n- `/etc/locale.conf`を作成して`LANG=en_US.UTF-8`を追記-\n- `/etc/vconsole.conf`を作成して`KEYMAP=jp106`を追記\n\n#### カスタマイズ\n- `/etc/hostname`にホスト名を設定\n- `passwd`でrootパスワードを設定\n- `systemctl enable dhcpcd`\n\n#### ブートローダのインストール\n```bash\ngrub-install --target=i386-pc /dev/sda\ngrub-mkconfig -o /boot/grub/grub.cfg\n```\n\n以上.","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","info-tech","linux","howto"]},"/note/info-tech/install-flutter-on-archlinux":{"title":"ArchLinuxへflutterをインストール","content":"\n## 初めに\n- [install-archlinux](note/info-tech/install-archlinux.md)の直後から,[flutter](note/info-tech/flutter.md)のインストール方法を説明\n\t- `flutter doctor`がオールグリーンになるまで\n- 1時間ぐらいは覚悟したほうがいい\n- 特にandroid-studioがクソでかいので[qemu](note/info-tech/qemu)イメージのリサイズをする羽目になった\n- [参考文献](https://dev.to/nabbisen/flutter-3-on-arch-linux-shi-mefang-1m2j)\n- 追記: [qemu](note/info-tech/qemu)上だとパフォーマンスがゴミすぎてまともに使えなかった X(\n\t- ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた\n\n## 手順\n\n### 1. 依存のインストール\n```bash\npacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium\nvisudo # いい感じに設定 \u0026 リログ\n\ngit clone https://aur.archlinux.org/flutter.git\ncd flutter\nmakepkg -sci # JDKはデフォルトを選択\ncd ..\n\ngit clone https://aur.archlinux.org/android-studio.git\ncd android-studio\nmakepkg -sci\ncd ..\n\nusermod -aG flutterusers user # 設定後にリログ\n```\n\n### 2. Android Studioの設定\n1. 初期設定は適当に\n2. Android StudioからFlutterプラグインをインストール&再起動\n3. Flutterプロジェクトを作成\n\t- flutter SDKのパス設定を忘れずに (`/opt/flutter`)\n4. `Android SDK Command line tools`をインストール\n\n### 3. flutter doctor\n```bash\nexport CHROME_EXECUTABLE=chromium # 必要なら永続化する\ngit config --global --add safe.directory /opt/flutter\nflutter doctor --android-licenses\nflutter doctor # 完了\n```","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","info-tech","development","howto"]},"/note/info-tech/obsidian":{"title":"Obsidianについて","content":"\n[公式サイト](https://obsidian.md)\n\n## 概要\n- オフラインのwikiっぽいもの(=Vault)\n- 記法はmarkdown\n- Vaultは全てローカルに保存される\n\n## インストール\n- [公式サイト](https://obsidian.md)に各OSのインストーラが揃ってる\n- Macでは`brew install obsidian`ができる\n\n## いいところ\n- シンプルでスタイリッシュなデザイン\n- 完全ローカルなので高セキュリティ\n- 数式が使える $E=mc^2$\n\n## わるいところ\n- 完全ローカルなので同期が課題\n\t- Vaultが巨大になるほど同期コストも増加\n- Macにて,エディタ上のリアルタイムプレビューとIMEが競合して日本語が正常に入力できないことがある\n\n## 所感\n- ar.falsy.catの記事書くのに使っている\n- WebDAVなどのファイルサーバー上にあるVaultを,全体をダウンロードせずに開けるようになれば素晴らしい","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","info-tech","tool"]},"/note/info-tech/pleroma":{"title":"Pleroma","content":"\n## 概要\n- ActivityPubに対応したlightweight(自称)なSNS\n- 単体で見るとlightweightには思えないけど,mastodonと比べたら確かにlightweight\n\n## DB肥大化問題\n- 長期間Pleromaを稼働させ続けると,DBのレコード数がやばいことになる\n- DBのレスポンスがくそ長くなり,最終的にタイムアウトで500になる\n- オブジェクトの寿命とか設定してみたけど特に意味はなかった\n\n### 解決法\n- ローカルアカウントそれ自体の情報以外の情報を削除する\n- pleromaを停止して,postgresで次のSQLを実行する\n\t- 自動化しても良いかもしれない\n- 追記: **フォロー/フォロワー情報も削除されてしまったので改善が必要!!!**\n```SQL\nTRUNCATE TABLE activities CASCADE; # 全アクティビティの削除\nDELETE FROM users WHERE not local; # 全リモートユーザーの削除\nVACUUM FULL;\nVACUUM ANALYZE;\n```","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","info-tech","web"]},"/note/info-tech/publish-obsidian-by-quartz":{"title":"ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築","content":"\n## 概要\n- [Quartz](https://github.com/jackyzha0/quartz)で[Obsidian](note/info-tech/obsidian.md)のVaultを公開する\n- 「*セカンドブレインデジタルガーデン*」という御大層な言葉は[Quartz](https://github.com/jackyzha0/quartz)の紹介文からの引用\n\n\u003c!--more--\u003e\n\n## 初期設定\n1. [Quartz](https://github.com/jackyzha0/quartz)をforkする\n2. GitHub Actionsを有効化\n3. repoの設定で`workflow permission`を`read and write permissions`へ変更\n\t- これしないとdeployに失敗する\n4. repoをローカルにclone\n5. `data/config.yaml`をいい感じに編集\n\t- `author`など\n6. `config.toml`をいい感じに編集\n\t- `baseURL`など\n7. pushする\n8. deployが終わったらGitHub Pagesのドメイン設定をする\n\n## 記事の執筆\n1. ローカルrepoの`content/`ディレクトリをVaultとしてObisidianで開く\n\t- `content/templates/`は弄ってはいけない\n2. 記事を書く\n3. pushする\n\n## ローカルプレビュー\n- dockerがあれば,リポジトリrootで`make docker`すれば`localhost:1313`にアクセスできる\n- `Makefile`の`docker`ターゲットのコマンドを下のように置き換えることで次の問題が解決できる\n\t- Ctrl+Cでサーバーが終了しない\n\t- `make docker`する度にゴミコンテナが残る\n```bash\ndocker run -it --init --name quartz-preview --volume=$(shell pwd):/quartz -p 1313:1313 ghcr.io/jackyzha0/quartz:hugo; docker rm quartz-preview\n```\n\n## カスタマイズ\n\n### Recent Notesの表示数を変更する\n1. `layouts/partials/recent.html`の`first 3 $notes`を変更する\n\n### トップページにグローバルグラフを表示する\n1. `data/graphConfig.yaml`の`enableGlobalGraph`を`true`にする\n\n### 記事にRelated Notesを表示する\n1. `layouts/partials/recent.html`を作成\n2. `layouts/_default/single.html`の好きな位置に`{{partial \"related.html\" .}}`を挿入\n3. `i18n/en.toml`に`related_notes`の翻訳を追加\n\nlayouts/partials/recent.html\n```html\n\u003cdiv class=\"content-list\"\u003e\n \u003ch2\u003e{{ i18n \"related_notes\" }}\u003c/h2\u003e\n {{$notes := .Site.RegularPages.Related .}}\n {{partial \"page-list.html\" (first 3 $notes)}}\n\u003c/div\u003e\n```\n\n## 所感\n- 扱いやすい[Obsidian](note/info-tech/obsidian.md)で執筆して,[Quartz](https://github.com/jackyzha0/quartz)でいい感じに公開ができた\n- 執筆のためにリポジトリをcloneしなければならないため,記事数が増えた時の複数PCの同期コストが問題になりそう\n\t- ブランチ分けてPullRequest活用すれば解決する?\n\t\t- 記事書くたびにPR作るのはクソめんどくさそう","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","info-tech","web","tool","howto"]},"/note/info-tech/qemu":{"title":"qemu","content":"\n## 概要\n- コマンドラインベースのVirtualBoxと思っている\n- 今のところM2チップのMacbook ProでLinuxを使うための最善手\n\t- M1/M2向けVirtualBoxはまだ開発者プレビューしかなく,まともに使えなかった\n\n\u003c!--more--\u003e\n\n## インストール\n\n### Mac\n```bash\n$ brew install qemu\n```\n- ハードウェアアクセラレーションが有効化されている他のビルドもあるらしいが未検証\n\t- 今後GPU使いたくなったら検証予定\n\n## コマンド逆引き\n\n### ディスクイメージの作成\n```bash\nqemu-img create -f qcow2 sda.qcow2 16G\n```\n\n### ディスクイメージのリサイズ\n```bash\n# ホストOSで実行\nqemu-img resize sda.qcow2 +16G\n\n# ゲストで実行\ncfdisk /dev/sda # いい感じに\ne2fsck -f /dev/sda2\nresize2fs /dev/sda2\n```\n\n### archのlive cdを起動\n```bash\nqemu-system-x86_64 \\\n -m 4G \\\n -cdrom ../iso/archlinux-2023.02.01-x86_64.iso \\\n sda.qcow2\n```\n- [関連: ArchLinuxのインストール方法](note/info-tech/install-archlinux.md)","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","info-tech","tool","virtualization"]},"/note/study/statistics/hypothesis-test":{"title":"仮説検定","content":"\n## 概要\n- 仮説検定とは,母集団の母数に関する帰無仮説について,棄却/受容を標本から客観的に判定する手続き\n- 有意確率とは,帰無仮説が真だった場合に誤って棄却する確率である\n- 仮説検定において,有意確率が事前に定めた有意水準よりも小さかった場合,帰無仮説を棄却する\n\n## 検定手順\n1. 帰無仮説を仮定する\n2. 帰無仮説のもとで検定したい事象が発生する確率$p$を求める\n3. $p$が事前に定めた有意水準よりも小さいならば,帰無仮説を棄却する\n\n## 結論に生じうる誤り\n- 第一種の誤り: 帰無仮説が正しい,かつ,帰無仮説を棄却してしまう\n\t- 発生確率=有意確率\n\t- 発生確率を設定できる\n- 第二種の誤り: 帰無仮説が誤っている,かつ,帰無仮説を受容してしまう\n\t- 発生確率は不明\n\t- 発生確率を設定できない\n- 有意水準を小さくすることで第一種の誤りは起こりにくくなるが,第二種の誤りが起こりやすくなる(トレードオフ)\n\t- 大体の場合で5%\n\t- 第一種の誤りが許されない場面(医療など)では1%\n\n## 例\n- コイントスを10回やって7回表が出た.コイントスは公平か?\n\t- 7回表が出る確率は$\\frac{1}{2^{10}} \\cdot {}_{10} \\mathrm{C}_7=0.12$\n\t- $0.12\u003e0.10$より有意水準10%で帰無仮説は棄却されない\n\t\t- コイントスは**公平である**\n\t\t- 12%で起こりうることが起きた,帰無仮説が正しい場合は普通のこと,つまり,帰無仮説は正しい\n\t\t- この結論は第二種の誤りである可能性がある\n\t- $0.12\u003c0.15$より有意水準15%で帰無仮説は棄却される\n\t\t- コイントスは**公平でない**\n\t\t- 12%で起こりうることが起きた,帰無仮説が正しい場合は奇跡に近い,つまり,帰無仮説は間違いだ\n\t\t- この結論は12%の確率で第一種の誤りである可能性がある\n\n## 注意点\n- 自分の望む結果を得るために,検定の途中で有意水準を作為的に操作してはならない\n\t- 有意水準は必ず有意確率を求める前に定めなければならない","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","study","statistics"]},"/note/study/statistics/hypothesis-test-multiplicity":{"title":"仮説検定の多重性問題","content":"\n## 概要\n- 結論に複数の[仮説検定](note/study/statistics/hypothesis-test.md)の結果が影響している時,その結論は検定の多重性問題を孕んでいる可能性がある\n- 問題を回避するためには,Holm法などで有意水準を下げる必要があるが,完璧ではない\n\n## 不確実な情報による結論の不確実性\n- **第一種の過誤のみを考慮した場合**,有意水準$x$で得られた検定の結果$n$個から導き出された結論は,最大で確率$1-(1-x)^n$で誤りである\n\t- $P_1\\cup P_2\\cup \\dots \\cup P_n\\implies Q$であるとき,$P_i$それぞれについて偽である確率が$e$ならば,$\\overline{Q}$である確率は$1-(1-e)^n$である\n\t- 故に有意水準を小さくすることで,結論が誤りである可能性を小さくすることができる\n- ただし,実際には**第二種の過誤も存在する**\n\t- 有意水準を小さくすれば結論が第二種の過誤である確率は増加する\n- 以上より,多重検定は非常によろしくない\n\t- 有意水準を何らかの方法で小さくした上で,全ての検定の帰無仮説が棄却であった場合のみ,統計的に有意な結論を導ける\n\t\t- 帰無仮説が棄却された場合,それが第二種の過誤であることはありえないから\n\n## Holm法による有意水準の調整\n多重検定を構成する一つ一つの検定の有意水準を小さくする方法の一つがHolm法である.他の方法も存在するが,Holmが一番バランスがとれてる(棄却/受容しすぎない)方法だと思う.\n\n### 手法\n$N$個の検定による多重検定の有意水準を$\\alpha$としたとき,Holm法による有意水準の調整を次のように行う.\n\n1. 各検定の有意確率をソート\n2. $i=0$とする\n3. 結論が未確定の検定のうち,最も有意確率が小さいものについて,その有意確率を$x$としたとき,\n\t- $x \u003c \\frac{\\alpha}{N-i}$ ならば,その検定を棄却\n\t- $x \u003e p$ ならば,結論が未確定の検定すべて(その検定を含む)を受容し,終了\n4. $i$に1を足して,\n\t- $i\u003cN$ ならば,3へ戻る\n\t- それ以外ならば,終了\n\n## まとめ\n- 多重検定は避けるべき\n- どうしても必要なら有意水準の補正が必要\n- 有意水準の補正にはHolm法が有効","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","study","statistics"]},"/note/study/statistics/hypothesis-test-parametric":{"title":"パラメトリック検定とノンパラメトリック検定","content":"\n## 概要\n- [仮説検定](note/study/statistics/hypothesis-test.md)におけるパラメトリック検定とは,母集団のサンプルに対する検定のうち,母集団の分布を事前に仮定する検定である\n- 母集団のサンプルに対する検定のうち,パラメトリック検定でないものはノンパラメトリック検定である\n\n## パラメトリック検定\n- 母集団がある特定の分布であると事前に仮定する検定\n\t- ノンパラメトリック検定に比べて,計算が楽\n\t\t- 手計算はこっちの方が嬉しい\n\t- 母集団が仮定と異なる分布を持つ場合,検定の結論に意味は無い\n- 事前検定で母集団の仮定を検証するのはやめた方がいい(後述)\n\n## ノンパラメトリック検定\n- 母集団の分布を仮定しない検定\n\t- 計算がめんどくさい\n\t\t- サンプルサイズが頭おかしいほど大きくない限り,コンピュータなら一瞬\n\t- 仮定に沿うパラメトリック検定が存在する場合,それよりも精度は落ちるが,実用的な問題はない\n\n## 事前検定\n- 欲しい結果を得る検定の前に行われる検定のこと\n\t- [多重検定](note/study/statistics/hypothesis-test-multiplicity.md)の問題を孕む\n\t\t- 個人的には,大抵の場合において事前検定は愚行だと思っている\n- 母集団の正規性を仮定するパラメトリック検定を使いたいがために,事前検定として正規性の検定(Shapiro-wilk test)をする人がいる\n\t- 個人的には多重検定問題沼に足を突っ込むぐらいなら,そこまでしてパラメトリック検定を使う必要はないと思う\n\t- 大人しくノンパラメトリック検定を使うべき\n\t- そもそもコンピュータ使えば計算コストは無視できる\n\n## まとめ\n- 仮説検定は2つに分けられる\n\t- パラメトリック検定: 母集団の分布になんらかの仮定が必要な検定\n\t- ノンパラメトリック検定: それ以外の検定\n- パラメトリック検定をしたいがために多重検定を使うぐらいならば,ノンパラメトリック検定を使うべき","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","study","statistics"]},"/note/word-play/japanese-text-all-stars":{"title":"国語教科書オールスターズ","content":"\n## 概要\n- 今までの国語の教科書に出てきた忘れられない奴等を忘れないために記録しておく\n\n\u003c!--more--\u003e\n\n## 小学校\n- さるのだいじなかぎのたば\n\t- 小学一年生の一番最初の単元だった気がする\n- *タイトル不明 要調査*\n\t- 木を描くやつ\n- アップとルーズで捉える\n\n## 中学校\n- かまきりりゅうじ\n\t- 「おれはかまきり」\n- いろは歌\n\t- 「いろはにほへと ちりぬるを わかよたれそ つねならむ ういのおくやま けふこえて あさきゆめみし えひもせすん」\n\t\t- 未だに空で書けた\n\t\t- 一人ずつ立って暗唱させられた記憶がある\n- *タイトル不明 要調査*\n\t- 「えんびふらい」\n- *タイトル不明 要調査*\n\t- 月の起源についての説明文\n- *タイトル不明 要調査*\n\t- ルロイ修道士「問題の細分化」\n\t- 月月火水木金金\n- 少年の日の思い出\n\t- エーミール「そうかそうか,つまりきみはそういうやつなんだな」","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","word-play","lifehack"]},"/note/word-play/proof-of-reality-using-lucid-dream":{"title":"明晰夢を利用した現実の証明","content":"\n## 概要\n- 今の意識が現実であることを証明する手法を論理的に導く\n- ただの言葉遊びなので哲学的な何かは期待しないでほしい\n\n## 前提\n- ここでは次の前提のもと議論を進める\n\t- 夢を見ていることを自覚している夢を見ている,ならばかつその時に限り,明晰夢を見ている\n\t- 明晰夢を見ている,ならば,全てが思い通りになる\n\t- 夢でないならば現実である\n- 証明は次の定義の元で行う\n\t- 状況$A$: 夢を見ている\n\t- 状況$B$: 夢を見ていることを自覚している\n\t- 状況$C$: 明晰夢を見ている\n\t- 状況$D$: 全てが思い通りである\n- 証明の最終的な目標は$X\\implies \\overline{A}$を導くことである\n\n## 証明\n1. 前提より\n\t- $P_1: A\\cap B\\iff C$\n\t- $P_2: C \\implies D$\n2. $P_1,P_2$より,三段論法を用いて\n\t- $P_3: A \\cap B \\implies D$\n3. $P_3$の対偶より\n\t- $P_4: \\overline{D}\\implies \\overline{A\\cap B}$\n4. $P_4$より,ド・モルガンの公式を用いて\n\t- $P_5: \\overline{D}\\implies \\overline{A} \\cup \\overline{B}$\n5. $B$は意図的に真にできるため,$P_5$より\n\t- $\\overline{D}\\cap B \\implies \\overline{A}$\n\n## 結論\n- 事前に夢を見ていることを自覚している,かつ,思い通りにならないことが存在する,ならば,それは現実である\n- ただし,この手法では全ての現実を証明できるとは言えないことに留意されたい","lastmodified":"2023-06-28T23:29:07.993697238Z","tags":["note","word-play","lifehack"]},"/note/word-play/two-lolita-devils-and-chess-board":{"title":"2人の幼女と悪魔とチェス盤","content":"\n## 概要\n- 「2人の幼女とチェス盤の部屋」という次のような論理問題を解説する\n\t- 以下の手順の後,幼女Bが任意の整数$x\\left(0\\leq x\u003c64\\right)$を求められるようにするには,幼女Aはどのような操作を行うべきか\n\t\t1. 悪魔が8x8チェス盤の各マスに1個ずつ,合計0個以上64個以下のポーンをランダムに配置する\n\t\t2. 悪魔は幼女Aにチェス盤を見せ,任意の数字$x\\left(0\\leq x\u003c64\\right)$を伝える\n\t\t3. 幼女Aは,チェス盤に対して次のいずれかの操作のうち可能であるものを1回だけ必ず行う\n\t\t\t- 任意のマスからポーンを1個だけ取り除く\n\t\t\t- 任意のマスにポーンを1個だけ追加する\n\t\t4. 悪魔は幼女Bにチェス盤を見せる\n\n## 問題の簡潔化\n- $f(g(b,x))=x$とできるような写像$f,g$を求めよ\n\t- $B=\\left\\\\{0,1\\right\\\\}$\n\t- $b\\in B^{64}$\n\t- $x\\in B^6$\n\t- $f: B^{64} \\rightarrow B^6$\n\t- $g: B^{64} \\times B^6\\rightarrow B^{64}$\n\t\t- $b$と$g(b,x)$は1ビットだけ異なる\n\n## 解答\n- $f(b)=f_0\\oplus f_1\\oplus f_2 \\oplus \\dots \\oplus f_{63} \\quad\\left(f_i=i b_i\\right)$\n- $b'=g(b,x) \\implies b'_m \\neq b_m\\quad\\left(m=x\\oplus f(b)\\right)$\n- [チェス盤が16x16の場合のプログラム](https://wandbox.org/permlink/XLo1pGURvrU4Y4Jj)\n\n## 解説\n- $x=f(b)\\oplus m$となるような$m\\in B^6$は必ず存在する\n- 盤面の各マスに$m$の値を割り当てることで,1マスの操作だけで$m$を表現できる\n\t- 盤面のマス目の数も,$m$がとりうる値の数も64\n\t- $f(g(b,x))=f(b)\\oplus m=f(b)\\oplus f\\_m\\oplus m(1-b\\_m)$\n\n## 応用\n- 長さ$2^N$の任意のビット列について,任意の1ビットだけを反転させることで,長さ$N$のビット列を表現できる\n\n## 参考文献\n- [# 超難問論理クイズ「2人の幼女とチェス盤の部屋」が本当に難しすぎた - 明日は未来だ!](https://sist8.com/chess2you)\n- [幼女問題まとめ - GItHub Gist](https://gist.github.com/catupper/5678658)\n- [Impossible Escape? - DataGenetics](http://datagenetics.com/blog/december12014/index.html)","lastmodified":"2023-06-28T23:29:07.997697539Z","tags":["note","word-play"]}} \ No newline at end of file diff --git a/indices/linkIndex.1536ace533d46c5e6ba5603af477ff2f.min.json b/indices/linkIndex.1536ace533d46c5e6ba5603af477ff2f.min.json new file mode 100644 index 0000000..b1428a1 --- /dev/null +++ b/indices/linkIndex.1536ace533d46c5e6ba5603af477ff2f.min.json @@ -0,0 +1 @@ +{"index":{"links":{"/":[{"source":"/","target":"/blog","text":"ブログ"},{"source":"/","target":"/note","text":"備忘録"}],"/blog/2023/0303-fukue-island":[{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"}],"/blog/2023/0304-fukue-island":[{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"昨日"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"}],"/note/info-tech/dart":[{"source":"/note/info-tech/dart","target":"/note/info-tech/flutter","text":"flutter"}],"/note/info-tech/flutter":[{"source":"/note/info-tech/flutter","target":"/note/info-tech/dart","text":"Dart"}],"/note/info-tech/install-archlinux":[{"source":"/note/info-tech/install-archlinux","target":"/note/info-tech/qemu","text":"qemu"}],"/note/info-tech/install-flutter-on-archlinux":[{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/install-archlinux","text":"install-archlinux"},{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/flutter","text":"flutter"},{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/qemu","text":"qemu"}],"/note/info-tech/publish-obsidian-by-quartz":[{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"},{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"}],"/note/info-tech/qemu":[{"source":"/note/info-tech/qemu","target":"/note/info-tech/install-archlinux","text":"関連: ArchLinuxのインストール方法"}],"/note/study/statistics/hypothesis-test-multiplicity":[{"source":"/note/study/statistics/hypothesis-test-multiplicity","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"}],"/note/study/statistics/hypothesis-test-parametric":[{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"},{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test-multiplicity","text":"多重検定"}]},"backlinks":{"/blog":[{"source":"/","target":"/blog","text":"ブログ"}],"/blog/2023/0301-fukue-island":[{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"}],"/blog/2023/0303-fukue-island":[{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"昨日"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"}],"/note":[{"source":"/","target":"/note","text":"備忘録"}],"/note/info-tech/dart":[{"source":"/note/info-tech/flutter","target":"/note/info-tech/dart","text":"Dart"}],"/note/info-tech/flutter":[{"source":"/note/info-tech/dart","target":"/note/info-tech/flutter","text":"flutter"},{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/flutter","text":"flutter"}],"/note/info-tech/install-archlinux":[{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/install-archlinux","text":"install-archlinux"},{"source":"/note/info-tech/qemu","target":"/note/info-tech/install-archlinux","text":"関連: ArchLinuxのインストール方法"}],"/note/info-tech/obsidian":[{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"},{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"}],"/note/info-tech/qemu":[{"source":"/note/info-tech/install-archlinux","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/qemu","text":"qemu"}],"/note/study/statistics/hypothesis-test":[{"source":"/note/study/statistics/hypothesis-test-multiplicity","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"},{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"}],"/note/study/statistics/hypothesis-test-multiplicity":[{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test-multiplicity","text":"多重検定"}]}},"links":[{"source":"/","target":"/blog","text":"ブログ"},{"source":"/","target":"/note","text":"備忘録"},{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"昨日"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"},{"source":"/note/info-tech/dart","target":"/note/info-tech/flutter","text":"flutter"},{"source":"/note/info-tech/flutter","target":"/note/info-tech/dart","text":"Dart"},{"source":"/note/info-tech/install-archlinux","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/install-archlinux","text":"install-archlinux"},{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/flutter","text":"flutter"},{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/install-flutter-on-archlinux","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"},{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"},{"source":"/note/info-tech/qemu","target":"/note/info-tech/install-archlinux","text":"関連: ArchLinuxのインストール方法"},{"source":"/note/study/statistics/hypothesis-test-multiplicity","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"},{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"},{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test-multiplicity","text":"多重検定"}]} \ No newline at end of file diff --git a/indices/linkIndex.b5280e8bbb1751fc9b140e6147b1b336.min.json b/indices/linkIndex.b5280e8bbb1751fc9b140e6147b1b336.min.json deleted file mode 100644 index 9db7769..0000000 --- a/indices/linkIndex.b5280e8bbb1751fc9b140e6147b1b336.min.json +++ /dev/null @@ -1 +0,0 @@ -{"index":{"links":{"/":[{"source":"/","target":"/blog","text":"ブログ"},{"source":"/","target":"/note","text":"備忘録"}],"/blog/2023/0303-fukue-island":[{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"}],"/blog/2023/0304-fukue-island":[{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"昨日"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"}],"/note/info-tech/dart":[{"source":"/note/info-tech/dart","target":"/note/info-tech/flutter","text":"flutter"}],"/note/info-tech/flutter":[{"source":"/note/info-tech/flutter","target":"/note/info-tech/install-archlinux","text":"install-archlinux"},{"source":"/note/info-tech/flutter","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/flutter","target":"/note/info-tech/qemu","text":"qemu"}],"/note/info-tech/install-archlinux":[{"source":"/note/info-tech/install-archlinux","target":"/note/info-tech/qemu","text":"qemu"}],"/note/info-tech/publish-obsidian-by-quartz":[{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"},{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"}],"/note/info-tech/qemu":[{"source":"/note/info-tech/qemu","target":"/note/info-tech/install-archlinux","text":"関連: ArchLinuxのインストール方法"}],"/note/study/statistics/hypothesis-test-multiplicity":[{"source":"/note/study/statistics/hypothesis-test-multiplicity","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"}],"/note/study/statistics/hypothesis-test-parametric":[{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"},{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test-multiplicity","text":"多重検定"}]},"backlinks":{"/blog":[{"source":"/","target":"/blog","text":"ブログ"}],"/blog/2023/0301-fukue-island":[{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"}],"/blog/2023/0303-fukue-island":[{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"昨日"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"}],"/note":[{"source":"/","target":"/note","text":"備忘録"}],"/note/info-tech/flutter":[{"source":"/note/info-tech/dart","target":"/note/info-tech/flutter","text":"flutter"}],"/note/info-tech/install-archlinux":[{"source":"/note/info-tech/flutter","target":"/note/info-tech/install-archlinux","text":"install-archlinux"},{"source":"/note/info-tech/qemu","target":"/note/info-tech/install-archlinux","text":"関連: ArchLinuxのインストール方法"}],"/note/info-tech/obsidian":[{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"},{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"}],"/note/info-tech/qemu":[{"source":"/note/info-tech/flutter","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/flutter","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/install-archlinux","target":"/note/info-tech/qemu","text":"qemu"}],"/note/study/statistics/hypothesis-test":[{"source":"/note/study/statistics/hypothesis-test-multiplicity","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"},{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"}],"/note/study/statistics/hypothesis-test-multiplicity":[{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test-multiplicity","text":"多重検定"}]}},"links":[{"source":"/","target":"/blog","text":"ブログ"},{"source":"/","target":"/note","text":"備忘録"},{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0303-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"昨日"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0301-fukue-island","text":"1日目"},{"source":"/blog/2023/0304-fukue-island","target":"/blog/2023/0303-fukue-island","text":"3日目"},{"source":"/note/info-tech/dart","target":"/note/info-tech/flutter","text":"flutter"},{"source":"/note/info-tech/flutter","target":"/note/info-tech/install-archlinux","text":"install-archlinux"},{"source":"/note/info-tech/flutter","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/flutter","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/install-archlinux","target":"/note/info-tech/qemu","text":"qemu"},{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"},{"source":"/note/info-tech/publish-obsidian-by-quartz","target":"/note/info-tech/obsidian","text":"Obsidian"},{"source":"/note/info-tech/qemu","target":"/note/info-tech/install-archlinux","text":"関連: ArchLinuxのインストール方法"},{"source":"/note/study/statistics/hypothesis-test-multiplicity","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"},{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test","text":"仮説検定"},{"source":"/note/study/statistics/hypothesis-test-parametric","target":"/note/study/statistics/hypothesis-test-multiplicity","text":"多重検定"}]} \ No newline at end of file diff --git a/linkmap b/linkmap index 64628c2..9634ef3 100644 --- a/linkmap +++ b/linkmap @@ -1,23 +1,24 @@ -/blog/2023/0304-fukue-island/index.{html} /blog/2023/0304-fukue-island/ -/note/info-tech/flutter/index.{html} /note/info-tech/flutter/ -/note/info-tech/install-archlinux/index.{html} /note/info-tech/install-archlinux/ -/note/word-play/japanese-text-all-stars/index.{html} /note/word-play/japanese-text-all-stars/ -/note/study/statistics/hypothesis-test-parametric/index.{html} /note/study/statistics/hypothesis-test-parametric/ -/note/study/statistics/hypothesis-test/index.{html} /note/study/statistics/hypothesis-test/ -/index.html / -/blog/2023/0303-fukue-island/index.{html} /blog/2023/0303-fukue-island/ -/blog/2023/0319-moving/index.{html} /blog/2023/0319-moving/ -/note/info-tech/c-cpp-sanitizer/index.{html} /note/info-tech/c-cpp-sanitizer/ -/note/info-tech/dart/index.{html} /note/info-tech/dart/ -/note/word-play/two-lolita-devils-and-chess-board/index.{html} /note/word-play/two-lolita-devils-and-chess-board/ -/blog/2023/0618-sarushima-island/index.{html} /blog/2023/0618-sarushima-island/ -/note/chores/one-hand-egg-cracking/index.{html} /note/chores/one-hand-egg-cracking/ -/note/essay/effective-presentation/index.{html} /note/essay/effective-presentation/ -/note/info-tech/pleroma/index.{html} /note/info-tech/pleroma/ -/note/info-tech/publish-obsidian-by-quartz/index.{html} /note/info-tech/publish-obsidian-by-quartz/ /note/word-play/proof-of-reality-using-lucid-dream/index.{html} /note/word-play/proof-of-reality-using-lucid-dream/ /blog/2023/0301-fukue-island/index.{html} /blog/2023/0301-fukue-island/ +/blog/2023/0319-moving/index.{html} /blog/2023/0319-moving/ /note/chores/cooking-rice-with-saucepan/index.{html} /note/chores/cooking-rice-with-saucepan/ +/note/chores/one-hand-egg-cracking/index.{html} /note/chores/one-hand-egg-cracking/ +/note/info-tech/c-cpp-sanitizer/index.{html} /note/info-tech/c-cpp-sanitizer/ +/note/info-tech/install-archlinux/index.{html} /note/info-tech/install-archlinux/ /note/info-tech/obsidian/index.{html} /note/info-tech/obsidian/ +/note/essay/effective-presentation/index.{html} /note/essay/effective-presentation/ +/note/info-tech/dart/index.{html} /note/info-tech/dart/ +/note/info-tech/flutter/index.{html} /note/info-tech/flutter/ +/note/info-tech/pleroma/index.{html} /note/info-tech/pleroma/ /note/info-tech/qemu/index.{html} /note/info-tech/qemu/ +/note/study/statistics/hypothesis-test-parametric/index.{html} /note/study/statistics/hypothesis-test-parametric/ +/note/study/statistics/hypothesis-test/index.{html} /note/study/statistics/hypothesis-test/ +/blog/2023/0303-fukue-island/index.{html} /blog/2023/0303-fukue-island/ +/blog/2023/0304-fukue-island/index.{html} /blog/2023/0304-fukue-island/ +/blog/2023/0618-sarushima-island/index.{html} /blog/2023/0618-sarushima-island/ +/note/info-tech/publish-obsidian-by-quartz/index.{html} /note/info-tech/publish-obsidian-by-quartz/ /note/study/statistics/hypothesis-test-multiplicity/index.{html} /note/study/statistics/hypothesis-test-multiplicity/ +/note/word-play/two-lolita-devils-and-chess-board/index.{html} /note/word-play/two-lolita-devils-and-chess-board/ +/index.html / +/note/info-tech/install-flutter-on-archlinux/index.{html} /note/info-tech/install-flutter-on-archlinux/ +/note/word-play/japanese-text-all-stars/index.{html} /note/word-play/japanese-text-all-stars/ diff --git a/note/chores/cooking-rice-with-saucepan/index.html b/note/chores/cooking-rice-with-saucepan/index.html index 54345fe..90d3eed 100644 --- a/note/chores/cooking-rice-with-saucepan/index.html +++ b/note/chores/cooking-rice-with-saucepan/index.html @@ -9,7 +9,7 @@ - diff --git a/note/chores/one-hand-egg-cracking/index.html b/note/chores/one-hand-egg-cracking/index.html index 42def93..85e0c18 100644 --- a/note/chores/one-hand-egg-cracking/index.html +++ b/note/chores/one-hand-egg-cracking/index.html @@ -9,7 +9,7 @@ - diff --git a/note/essay/effective-presentation/index.html b/note/essay/effective-presentation/index.html index 131d8b0..4e5fd7b 100644 --- a/note/essay/effective-presentation/index.html +++ b/note/essay/effective-presentation/index.html @@ -42,7 +42,7 @@ - @@ -50,4 +50,4 @@

ar.falsy.cat

Search

Search IconIcon to open search

大臣賞を取れるプレゼンの作り方

Last updated Jun 26, 2023

このページでは,私がU22プログラミングコンテスト2022の最終審査回で発表したプレゼンについて,準備するときに考えたことを紹介します.このプレゼンは大臣賞を取れた1つの要因だと思っているので,今後もしプレゼンをする機会があれば参考にしてみて下さい.

実際のプレゼンの様子は -YouTubeで公開されています.よければご覧ください.

# 背景

U22プログラミングコンテストとは,毎年開催されている作品応募型のプログラミングコンテストで,40年以上の歴史があります.期限(8/31)までに作品を完成させ,応募することでエントリーすることができますが,U22の名前の通り22歳以下の人しか参加できません.

応募された作品は総勢20名程度の審査員に選考され,この選考を突破した16作品の製作者だけが最終審査会に参加できます.審査員の一覧には東京大学の名誉教授やIT企業の役員の方々が並んでおり,また,応募総数は毎年300を上回っているため,最終審査会へ参加することは非常に難しいです.

最終審査会では,参加者が1人ずつ,制作した作品について10分程度の発表を対面で審査員に向けて行います.2022年の場合は一般向けにニコ生配信もされており,同接は1万人程度でした.

全員の発表が終わると,審査員によって各16作品が審査され,経済産業省大臣賞,局長賞やスポンサーの企業賞などが応募者に授与されます.ここで私は経済産業省大臣賞(副賞50万円)とPCAクラウド賞(副賞:M2 Macbook Pro)をいただきました.余談ですが,実は2020年にも参加しており,その時は経済産業省の商務情報政策局長賞(副賞5万円)を頂きました.金額が微妙

このページでは,そんな大臣賞をとれるようなプレゼンを作るときに考えたことを紹介します.

# スライドを作る前に・・・

# 勝利条件を決める

まずは,スライドを作る前に,最終審査会に参加して得たい結果,満たすべき条件である勝利条件を決めました.勝利条件というとゲームのように聞こえますが,実際のゲームのように明確なルールがあれば自分が取るべき最善手を見つけやすくなります.だからこそ,このステップではルールを明確に決定し,発表そのものをゲームとして捉えられるようにしました.

ここでは,勝利条件を「大臣賞を取る」に定めました.2020年の最終審査会に無策で挑んで微妙な結果を取ってしまったのが悔しかった,というのが理由です.

# 戦略を考える

次に,発表の方向性,言い換えれば戦略を決めました.勝利条件を満たすためには,受賞者の決定権がある審査員の方々に,何らかの影響を与えなければなりません.物理的,金銭的なものを除けば,私が審査員に与えられる影響は精神的なものだけです.そのためこのステップでは,審査員の記憶,感情に発表を通してどのような影響を与えるかを決定しました.

結論として,戦略を「ほかのどの発表よりも,自分の発表を審査員全員の記憶に残す(いい意味で)」に定めました.以下ではその経緯を説明します.

# ターゲットの調査

戦略を決定するにはターゲット,つまり審査員の方々について,よく知る必要があります.特に,どのような専門知識を持っているのか,何に興味があるのかという情報は非常に重要です.いくら高度で技術的な話をしたところで,相手に理解されなければ,相手に興味を持たれなければ,ただただ貴重な発表時間を失うだけだからです.

実際に審査委員について調査した結果,次のことが判明しました.

  • 構成員の属性は幅広い(文系,理系,事務職,技術職,教授,CTOなど)
    • 企業所属の人が多め
  • 審査委員長は東京大学の名誉教授

この調査結果から,効果的な発表の条件は次のように絞られます.

  • 企業所属の人に対して,社会における実用性,利益の可能性を提示できる
  • 技術職の人に対して,技術的実用性,技術的工夫を提示できる
  • 教授などの研究職の人に対して,数学的美を提示できる
  • 文系,事務職の人に対して,実際的な応用例を提示できる

以上の条件より,戦略レベルで発表の話題を絞ることは難しいことがわかります.これら4つの条件を全て満たすような1つの話題は存在するのかもしれませんが,存在があやふやなものを探すことに時間を割きたくありません.

# そもそも評価対象は作品である

最終審査会において何を審査するのかといえば,それは発表ではなく作品です.スライドを作ろうとしているこの時点で作品はすでに審査員に提出しているため,作品自体の価値や評価を大幅に増加させることは難しいです.(最終審査会直前までのブラッシュアップは可能)

つまり,戦略の条件としては,作品単体が審査員に与える影響を増幅できるものである必要があります.

# 審査員の立場になってみる

効果的な影響を審査員に与えるためには,審査員の立場になって戦略を考えることが必要です.私の発表の直前に,審査員は何を期待するでしょうか.発表を通じて,この期待に応えたり,あるいは裏切ったりすることで審査員への影響はより強くなります.また,発表直後から審査結果の決定までの時間も無視できません.私はこの時間に審査員に干渉することはできませんが,他の作品の発表が審査員に影響を与え得るからです.

ところで,あなたは,複数人の発表を聞き,評価するような発表会に参加したことがあるでしょうか.おそらく多くの人が学生時代に経験していることだと思います.そして発表会の終了後に全ての発表を覚えていられた人はかなり稀なのではないでしょうか.

戦略を「審査員全員の記憶に残す」に定めた理由は,最終審査時の審査員も同様に一部の発表しか覚えていない可能性が高く,より多くの審査員のその一部に含まれることで,勝利条件を満たす確率が高くなると考えたからです.もちろん審査員も審査のために全ての発表のメモを取るとは思いますが,もしあなたが審査員だった場合に,メモには残っているけれど記憶には残っていない発表を高く評価するでしょうか.

# 戦術を考える

戦術は言うなれば小細工です.戦術を組み合わせて作戦を立案します.

今回の場合,戦略は「いい意味で記憶に残す」ですから,ここでは,何かを相手の記憶に強く焼き付けられるような小細工を3つ紹介します.特に脳についての研究をしていたわけでもないので,全部個人的な経験から学んだものです.全人類に効くかは知りませんが,実際に大臣賞という結果を残しています.

# 発表内容を普遍的なアンカーに関連させる

アンカーとは,何かの行為の後に最初に思い浮かべる事柄です.例えば,鎌倉幕府の創設年を聞かれた時に「いいくに作ろう鎌倉幕府→1192」という連想をした場合,「いいくに作ろう鎌倉幕府」という言葉がアンカーです.ちなみにこの場合,「鎌倉幕府の創設年を聞く」は,アンカーを想起させるための行為であり,トリガーと呼ばれます.(神経言語プログラミングで使われている言葉らしい?)

事前にアンカーを1つに定め,伝えたい内容をそのアンカーに関連させることで,発表内容を不特定多数の記憶に残しやすくなります.はっきりとしたアンカーを定めなかった場合,聞き手が発表内容を思い出すというトリガーに対するアンカーは聞く人によって異なり,必然的にアンカーから連想されるものもあやふやで十人十色に変化します.そのため,どうでもいいことを覚えられてしまったり,本当に覚えてほしいことを覚えてもらえなかったりする可能性が高くなります.

アンカーは発表内容に関係している必要はなく,誰もが知っている事柄である方が良いです.猫と量子力学は無関係ですが,シュレディンガーの猫という言葉は多くの人に覚えられています.これは猫が良いアンカーになっているのではないでしょうか.

# 忘れた頃に繰り返す

あの忘却曲線を提唱したエビ🦐ングハウスさんに依れば,忘れた頃に復習をすれば記憶定着率を上げられます.エビ🦐ングハウスさんの実験とは時間スケールも記憶する対象も違いますが,何回も同じことを繰り返せば脳は勝手に覚えてくれるというのは,誰しも経験から理解できるはずです.

# 音声思考型には言葉,イメージ思考型には視覚

脳内の独り言で思考するタイプ(音声思考型)の人には言葉による情報が,イメージで思考するタイプ(イメージ思考型)の人には視覚による情報が理解されやすいらしいです.理系は大体音声思考型のため(偏見),専門的な話は文字や口頭で,それ以外の話はスライド上の画像を使うことが有効です.

# 作戦を考える

戦術が列挙できたら,そられを取捨選択し,組み合わせて作戦を練ります.実際の発表内容の計画は,大まかに次の図のようになりました.本番の発表は9分ぐらいでしたが,流れと時間配分は大体計画通りでした.この作戦のいくつかのポイントを説明します.

# 情報に合わせた表現方法の選択+繰り返し

最初のポイントは,開発コンセプトを言葉で,利用例を映像で簡潔に表現する点です.Nf7の開発コンセプト自体は理解に専門性が必要なため,このコンセプトを伝える対象は技術者です.一方で,Nf7を使って作れるアウトプット自体は音声,画像,映像データが主ですので,利用例は技術者でなくても理解ができます.音声思考型の多そうな技術者に伝えたい情報は文字を使って,その他の人に伝えたい情報は視覚を使って伝えることで,より大きい影響を与えることを狙います.

また,開発コンセプトについては,時間をあけて同じ話題を2回登場させることで記憶への定着を図ります.

# 利用例で猫をアンカーにする+繰り返し

次のポイントは,利用例の紹介の中で猫をアンカーにすることです.Nf7で作れるアウトプットの例として,虹色に光る猫や大量の猫を描画することで,猫の印象を強烈に植え付けます.これにより,最も重要な問い「この作品は何ができるのか」に対するアンサーをアンカーに結びつけることができます.(駄洒落じゃないよ)

また,このアンカー植え付けも,1回目と2回目の利用例紹介のどちらともで行うことで,アンカーの効果をより高めています.動画をご覧いただいた方にはわかるかもしれないですが,2回目に至っては盛大な振りまでしているので,私がいかにこのアンカーが重要だと考えていたかがわかるかと思います.

# 話題の専門性に波を持たせる

最後の注目すべきポイントは,話題の専門性を上げた後は必ずすぐに下げるということです.施した工夫や技術力をアピールするためにはどうしても技術的な話をする必要がありますが,その話の直後には必ず,専門性を下げるような話題を持ってきます.誰一人として聞き手を取り残さないための作戦です.

さらに,専門性を一気に0に下げることで,ギャップによるある種の感動を作り出します.理解できない話をされると誰しもストレスを感じますが,理解できた瞬間には喜びや達成感が得られます.なんかすごそうなことばかり言っている頭の良さそうな人が,急に「りんごたべたい」とか言い出したら印象に残るのではないでしょうか.このギャップを意図的に作り出すのです.

# スライドを作る

正直ここではあまり工夫をしていないですが,強いて言うならば「simple is best」を心がけました.背景は白,文字は黒,アニメーションは無し.元映像クリエーター(自称)としてアドバイスをするならば,センスに自信がないならば白と黒だけで画面を作った方がいいと思います.あとMSゴシックやめろ.

# 発表をする(本番)

動画では思いっきりPC画面見ながら話してますが,当時試験期間真っ最中だったために練習時間が取れなかったのが原因です.詰まったり,吃ったりするぐらいなら原稿見て話したほうが伝わるだろうと考えている派なので,ガン見しました.ただし,ページ切り替えなどで間を取る時はできるだけ聞き手を見るようにはしました.

# 参加した感想

戦略,戦術,作戦を立てて本番に臨み,計画通りの発表ができたと思っています.この計画が功を奏したのかは「神のみぞ知る」ですが,勝利条件は達成できたためそこはどうでもいいことです.ここまでこの長い文章を読んでいただきありがとうございました.

ちなみに,抽象的な戦術(tactics)の列挙とそれらの融合による作戦立案の手法は,チェスでの経験をもとにしています.みんなもチェスやろう.


\ No newline at end of file +YouTubeで公開されています.よければご覧ください.

# 背景

U22プログラミングコンテストとは,毎年開催されている作品応募型のプログラミングコンテストで,40年以上の歴史があります.期限(8/31)までに作品を完成させ,応募することでエントリーすることができますが,U22の名前の通り22歳以下の人しか参加できません.

応募された作品は総勢20名程度の審査員に選考され,この選考を突破した16作品の製作者だけが最終審査会に参加できます.審査員の一覧には東京大学の名誉教授やIT企業の役員の方々が並んでおり,また,応募総数は毎年300を上回っているため,最終審査会へ参加することは非常に難しいです.

最終審査会では,参加者が1人ずつ,制作した作品について10分程度の発表を対面で審査員に向けて行います.2022年の場合は一般向けにニコ生配信もされており,同接は1万人程度でした.

全員の発表が終わると,審査員によって各16作品が審査され,経済産業省大臣賞,局長賞やスポンサーの企業賞などが応募者に授与されます.ここで私は経済産業省大臣賞(副賞50万円)とPCAクラウド賞(副賞:M2 Macbook Pro)をいただきました.余談ですが,実は2020年にも参加しており,その時は経済産業省の商務情報政策局長賞(副賞5万円)を頂きました.金額が微妙

このページでは,そんな大臣賞をとれるようなプレゼンを作るときに考えたことを紹介します.

# スライドを作る前に・・・

# 勝利条件を決める

まずは,スライドを作る前に,最終審査会に参加して得たい結果,満たすべき条件である勝利条件を決めました.勝利条件というとゲームのように聞こえますが,実際のゲームのように明確なルールがあれば自分が取るべき最善手を見つけやすくなります.だからこそ,このステップではルールを明確に決定し,発表そのものをゲームとして捉えられるようにしました.

ここでは,勝利条件を「大臣賞を取る」に定めました.2020年の最終審査会に無策で挑んで微妙な結果を取ってしまったのが悔しかった,というのが理由です.

# 戦略を考える

次に,発表の方向性,言い換えれば戦略を決めました.勝利条件を満たすためには,受賞者の決定権がある審査員の方々に,何らかの影響を与えなければなりません.物理的,金銭的なものを除けば,私が審査員に与えられる影響は精神的なものだけです.そのためこのステップでは,審査員の記憶,感情に発表を通してどのような影響を与えるかを決定しました.

結論として,戦略を「ほかのどの発表よりも,自分の発表を審査員全員の記憶に残す(いい意味で)」に定めました.以下ではその経緯を説明します.

# ターゲットの調査

戦略を決定するにはターゲット,つまり審査員の方々について,よく知る必要があります.特に,どのような専門知識を持っているのか,何に興味があるのかという情報は非常に重要です.いくら高度で技術的な話をしたところで,相手に理解されなければ,相手に興味を持たれなければ,ただただ貴重な発表時間を失うだけだからです.

実際に審査委員について調査した結果,次のことが判明しました.

  • 構成員の属性は幅広い(文系,理系,事務職,技術職,教授,CTOなど)
    • 企業所属の人が多め
  • 審査委員長は東京大学の名誉教授

この調査結果から,効果的な発表の条件は次のように絞られます.

  • 企業所属の人に対して,社会における実用性,利益の可能性を提示できる
  • 技術職の人に対して,技術的実用性,技術的工夫を提示できる
  • 教授などの研究職の人に対して,数学的美を提示できる
  • 文系,事務職の人に対して,実際的な応用例を提示できる

以上の条件より,戦略レベルで発表の話題を絞ることは難しいことがわかります.これら4つの条件を全て満たすような1つの話題は存在するのかもしれませんが,存在があやふやなものを探すことに時間を割きたくありません.

# そもそも評価対象は作品である

最終審査会において何を審査するのかといえば,それは発表ではなく作品です.スライドを作ろうとしているこの時点で作品はすでに審査員に提出しているため,作品自体の価値や評価を大幅に増加させることは難しいです.(最終審査会直前までのブラッシュアップは可能)

つまり,戦略の条件としては,作品単体が審査員に与える影響を増幅できるものである必要があります.

# 審査員の立場になってみる

効果的な影響を審査員に与えるためには,審査員の立場になって戦略を考えることが必要です.私の発表の直前に,審査員は何を期待するでしょうか.発表を通じて,この期待に応えたり,あるいは裏切ったりすることで審査員への影響はより強くなります.また,発表直後から審査結果の決定までの時間も無視できません.私はこの時間に審査員に干渉することはできませんが,他の作品の発表が審査員に影響を与え得るからです.

ところで,あなたは,複数人の発表を聞き,評価するような発表会に参加したことがあるでしょうか.おそらく多くの人が学生時代に経験していることだと思います.そして発表会の終了後に全ての発表を覚えていられた人はかなり稀なのではないでしょうか.

戦略を「審査員全員の記憶に残す」に定めた理由は,最終審査時の審査員も同様に一部の発表しか覚えていない可能性が高く,より多くの審査員のその一部に含まれることで,勝利条件を満たす確率が高くなると考えたからです.もちろん審査員も審査のために全ての発表のメモを取るとは思いますが,もしあなたが審査員だった場合に,メモには残っているけれど記憶には残っていない発表を高く評価するでしょうか.

# 戦術を考える

戦術は言うなれば小細工です.戦術を組み合わせて作戦を立案します.

今回の場合,戦略は「いい意味で記憶に残す」ですから,ここでは,何かを相手の記憶に強く焼き付けられるような小細工を3つ紹介します.特に脳についての研究をしていたわけでもないので,全部個人的な経験から学んだものです.全人類に効くかは知りませんが,実際に大臣賞という結果を残しています.

# 発表内容を普遍的なアンカーに関連させる

アンカーとは,何かの行為の後に最初に思い浮かべる事柄です.例えば,鎌倉幕府の創設年を聞かれた時に「いいくに作ろう鎌倉幕府→1192」という連想をした場合,「いいくに作ろう鎌倉幕府」という言葉がアンカーです.ちなみにこの場合,「鎌倉幕府の創設年を聞く」は,アンカーを想起させるための行為であり,トリガーと呼ばれます.(神経言語プログラミングで使われている言葉らしい?)

事前にアンカーを1つに定め,伝えたい内容をそのアンカーに関連させることで,発表内容を不特定多数の記憶に残しやすくなります.はっきりとしたアンカーを定めなかった場合,聞き手が発表内容を思い出すというトリガーに対するアンカーは聞く人によって異なり,必然的にアンカーから連想されるものもあやふやで十人十色に変化します.そのため,どうでもいいことを覚えられてしまったり,本当に覚えてほしいことを覚えてもらえなかったりする可能性が高くなります.

アンカーは発表内容に関係している必要はなく,誰もが知っている事柄である方が良いです.猫と量子力学は無関係ですが,シュレディンガーの猫という言葉は多くの人に覚えられています.これは猫が良いアンカーになっているのではないでしょうか.

# 忘れた頃に繰り返す

あの忘却曲線を提唱したエビ🦐ングハウスさんに依れば,忘れた頃に復習をすれば記憶定着率を上げられます.エビ🦐ングハウスさんの実験とは時間スケールも記憶する対象も違いますが,何回も同じことを繰り返せば脳は勝手に覚えてくれるというのは,誰しも経験から理解できるはずです.

# 音声思考型には言葉,イメージ思考型には視覚

脳内の独り言で思考するタイプ(音声思考型)の人には言葉による情報が,イメージで思考するタイプ(イメージ思考型)の人には視覚による情報が理解されやすいらしいです.理系は大体音声思考型のため(偏見),専門的な話は文字や口頭で,それ以外の話はスライド上の画像を使うことが有効です.

# 作戦を考える

戦術が列挙できたら,そられを取捨選択し,組み合わせて作戦を練ります.実際の発表内容の計画は,大まかに次の図のようになりました.本番の発表は9分ぐらいでしたが,流れと時間配分は大体計画通りでした.この作戦のいくつかのポイントを説明します.

# 情報に合わせた表現方法の選択+繰り返し

最初のポイントは,開発コンセプトを言葉で,利用例を映像で簡潔に表現する点です.Nf7の開発コンセプト自体は理解に専門性が必要なため,このコンセプトを伝える対象は技術者です.一方で,Nf7を使って作れるアウトプット自体は音声,画像,映像データが主ですので,利用例は技術者でなくても理解ができます.音声思考型の多そうな技術者に伝えたい情報は文字を使って,その他の人に伝えたい情報は視覚を使って伝えることで,より大きい影響を与えることを狙います.

また,開発コンセプトについては,時間をあけて同じ話題を2回登場させることで記憶への定着を図ります.

# 利用例で猫をアンカーにする+繰り返し

次のポイントは,利用例の紹介の中で猫をアンカーにすることです.Nf7で作れるアウトプットの例として,虹色に光る猫や大量の猫を描画することで,猫の印象を強烈に植え付けます.これにより,最も重要な問い「この作品は何ができるのか」に対するアンサーをアンカーに結びつけることができます.(駄洒落じゃないよ)

また,このアンカー植え付けも,1回目と2回目の利用例紹介のどちらともで行うことで,アンカーの効果をより高めています.動画をご覧いただいた方にはわかるかもしれないですが,2回目に至っては盛大な振りまでしているので,私がいかにこのアンカーが重要だと考えていたかがわかるかと思います.

# 話題の専門性に波を持たせる

最後の注目すべきポイントは,話題の専門性を上げた後は必ずすぐに下げるということです.施した工夫や技術力をアピールするためにはどうしても技術的な話をする必要がありますが,その話の直後には必ず,専門性を下げるような話題を持ってきます.誰一人として聞き手を取り残さないための作戦です.

さらに,専門性を一気に0に下げることで,ギャップによるある種の感動を作り出します.理解できない話をされると誰しもストレスを感じますが,理解できた瞬間には喜びや達成感が得られます.なんかすごそうなことばかり言っている頭の良さそうな人が,急に「りんごたべたい」とか言い出したら印象に残るのではないでしょうか.このギャップを意図的に作り出すのです.

# スライドを作る

正直ここではあまり工夫をしていないですが,強いて言うならば「simple is best」を心がけました.背景は白,文字は黒,アニメーションは無し.元映像クリエーター(自称)としてアドバイスをするならば,センスに自信がないならば白と黒だけで画面を作った方がいいと思います.あとMSゴシックやめろ.

# 発表をする(本番)

動画では思いっきりPC画面見ながら話してますが,当時試験期間真っ最中だったために練習時間が取れなかったのが原因です.詰まったり,吃ったりするぐらいなら原稿見て話したほうが伝わるだろうと考えている派なので,ガン見しました.ただし,ページ切り替えなどで間を取る時はできるだけ聞き手を見るようにはしました.

# 参加した感想

戦略,戦術,作戦を立てて本番に臨み,計画通りの発表ができたと思っています.この計画が功を奏したのかは「神のみぞ知る」ですが,勝利条件は達成できたためそこはどうでもいいことです.ここまでこの長い文章を読んでいただきありがとうございました.

ちなみに,抽象的な戦術(tactics)の列挙とそれらの融合による作戦立案の手法は,チェスでの経験をもとにしています.みんなもチェスやろう.


\ No newline at end of file diff --git a/note/index.html b/note/index.html index 134a76b..953778f 100644 --- a/note/index.html +++ b/note/index.html @@ -9,10 +9,10 @@ -
\ No newline at end of file +

All Notes

\ No newline at end of file diff --git a/note/index.xml b/note/index.xml index 18a8ca6..3381dde 100644 --- a/note/index.xml +++ b/note/index.xml @@ -1,4 +1,4 @@ -Notes onhttps://ar.falsy.cat/note/Recent content in Notes onHugo -- gohugo.ioen-us2人の幼女と悪魔とチェス盤https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/概要 「2人の幼女とチェス盤の部屋」という次のような論理問題を解説する 以下の手順の後,幼女Bが任意の整数$x\left(0\leq x&lt;64\right)$を求められるようにするには,幼女Aはどのような操作を行うべきか 悪魔が8x8チェス盤の各マスに1個ずつ,合計0個以上64個以下のポーンをランダムに配置する 悪魔は幼女Aにチェス盤を見せ,任意の数字$x\left(0\leq x&lt;64\right)$を伝える 幼女Aは,チェス盤に対して次のいずれかの操作のうち可能であるものを1回だけ必ず行う 任意のマスからポーンを1個だけ取り除く 任意のマスにポーンを1個だけ追加する 悪魔は幼女Bにチェス盤を見せる 問題の簡潔化 $f(g(b,x))=x$とできるような写像$f,g$を求めよ $B=\left\{0,1\right\}$ $b\in B^{64}$ $x\in B^6$ $f: B^{64} \rightarrow B^6$ $g: B^{64} \times B^6\rightarrow B^{64}$ $b$と$g(b,x)$は1ビットだけ異なる 解答 $f(b)=f_0\oplus f_1\oplus f_2 \oplus \dots \oplus f_{63} \quad\left(f_i=i b_i\right)$ $b&rsquo;=g(b,x) \implies b&rsquo;_m \neq b_m\quad\left(m=x\oplus f(b)\right)$ チェス盤が16x16の場合のプログラム 解説 $x=f(b)\oplus m$となるような$m\in B^6$は必ず存在する 盤面の各マスに$m$の値を割り当てることで,1マスの操作だけで$m$を表現できる 盤面のマス目の数も,$m$がとりうる値の数も64 $f(g(b,x))=f(b)\oplus m=f(b)\oplus f_m\oplus m(1-b_m)$ 応用 長さ$2^N$の任意のビット列について,任意の1ビットだけを反転させることで,長さ$N$のビット列を表現できる 参考文献 # 超難問論理クイズ「2人の幼女とチェス盤の部屋」が本当に難しすぎた - 明日は未来だ! 幼女問題まとめ - GItHub Gist Impossible Escape?ArchLinuxのインストールhttps://ar.falsy.cat/note/info-tech/install-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-archlinux/概要 ArchLinuxのインストール手順を記録する Live Environmentの起動方法については触れない 前提 qemu上の仮想マシン BIOS GPT x86_64 デュアルブートなし できるだけシンプル,ミニマリスティックに 手順 1. 事前準備 1 2 3 loadkeys jp106 # キーボード設定 ping google.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.dart言語https://ar.falsy.cat/note/info-tech/dart/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/dart/概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark &amp; sweep)搭載 デストラクタは無さそう,そもそもmark &amp; sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?flutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 マルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語はDart インストール Arch Linux install-archlinuxの直後から,flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 依存のインストール 1 2 3 4 5 6 7 8 9 10 11 12 13 14 pacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium visudo # いい感じに設定 &amp; リログ git clone https://aur.ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/<h2 id="概要">概要</h2> +Notes onhttps://ar.falsy.cat/note/Recent content in Notes onHugo -- gohugo.ioen-us2人の幼女と悪魔とチェス盤https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/概要 「2人の幼女とチェス盤の部屋」という次のような論理問題を解説する 以下の手順の後,幼女Bが任意の整数$x\left(0\leq x&lt;64\right)$を求められるようにするには,幼女Aはどのような操作を行うべきか 悪魔が8x8チェス盤の各マスに1個ずつ,合計0個以上64個以下のポーンをランダムに配置する 悪魔は幼女Aにチェス盤を見せ,任意の数字$x\left(0\leq x&lt;64\right)$を伝える 幼女Aは,チェス盤に対して次のいずれかの操作のうち可能であるものを1回だけ必ず行う 任意のマスからポーンを1個だけ取り除く 任意のマスにポーンを1個だけ追加する 悪魔は幼女Bにチェス盤を見せる 問題の簡潔化 $f(g(b,x))=x$とできるような写像$f,g$を求めよ $B=\left\{0,1\right\}$ $b\in B^{64}$ $x\in B^6$ $f: B^{64} \rightarrow B^6$ $g: B^{64} \times B^6\rightarrow B^{64}$ $b$と$g(b,x)$は1ビットだけ異なる 解答 $f(b)=f_0\oplus f_1\oplus f_2 \oplus \dots \oplus f_{63} \quad\left(f_i=i b_i\right)$ $b&rsquo;=g(b,x) \implies b&rsquo;_m \neq b_m\quad\left(m=x\oplus f(b)\right)$ チェス盤が16x16の場合のプログラム 解説 $x=f(b)\oplus m$となるような$m\in B^6$は必ず存在する 盤面の各マスに$m$の値を割り当てることで,1マスの操作だけで$m$を表現できる 盤面のマス目の数も,$m$がとりうる値の数も64 $f(g(b,x))=f(b)\oplus m=f(b)\oplus f_m\oplus m(1-b_m)$ 応用 長さ$2^N$の任意のビット列について,任意の1ビットだけを反転させることで,長さ$N$のビット列を表現できる 参考文献 # 超難問論理クイズ「2人の幼女とチェス盤の部屋」が本当に難しすぎた - 明日は未来だ! 幼女問題まとめ - GItHub Gist Impossible Escape?ArchLinuxのインストールhttps://ar.falsy.cat/note/info-tech/install-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-archlinux/概要 ArchLinuxのインストール手順を記録する Live Environmentの起動方法については触れない 前提 qemu上の仮想マシン BIOS GPT x86_64 デュアルブートなし できるだけシンプル,ミニマリスティックに 手順 1. 事前準備 1 2 3 loadkeys jp106 # キーボード設定 ping google.ArchLinuxへflutterをインストールhttps://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/初めに install-archlinuxの直後から, flutterのインストール方法を説明 flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 1.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.dart言語https://ar.falsy.cat/note/info-tech/dart/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/dart/概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark &amp; sweep)搭載 デストラクタは無さそう,そもそもmark &amp; sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?flutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 flutterはマルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語は Dart 環境構築 dart + flutterをインストール VSCodeにflutter用の拡張機能を追加 豆知識 ウィジェットツリー main関数からrunAppにウィジェットツリーを渡すことでメインループが始まる ウィジェットはStatelessなものとStatefullなものに大別できる Statefullなウィジェットが更新(setState)されると,そのウィジェットとその子孫のツリーが全て再構成(build)される パフォーマンス悪そうに見えるけれど,ウィジェットツリーの変更部分のみをシステム内部のエレメントツリーに反映することで画面更新を行なっているので,最適化はされている HTMLレンダラみたいな感じ 画面遷移 Navigatorが現在の画面の状態スタックを持つ pushで画面遷移 コルーチンのawaitで,遷移先がpopされた時の値を受け取れる popで前の画面に戻る ユーザーからの戻るボタン押下でも勝手にpopされ得る 呼び出し元へ返す値を引数に設定できる 1 2 3 4 5 6 7 8 9 // push (遷移後の画面がpopされるまでyield) final ret = await Navigator.ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/<h2 id="概要">概要</h2> <ul> <li> <a href="https://github.com/jackyzha0/quartz" rel="noopener">Quartz</a>で diff --git a/note/info-tech/c-cpp-sanitizer/index.html b/note/info-tech/c-cpp-sanitizer/index.html index fd27b50..ff1f756 100644 --- a/note/info-tech/c-cpp-sanitizer/index.html +++ b/note/info-tech/c-cpp-sanitizer/index.html @@ -9,7 +9,7 @@ - @@ -21,4 +21,4 @@ Jun 21, 2023

  • threadaddressundefinedと一緒に使えないのが痛い
    • どちらともを使うには,threadでビルド,テストした後に,オプションを変えてビルドし直し,同じテストを実行しなければならない

  • \ No newline at end of file diff --git a/note/info-tech/dart/index.html b/note/info-tech/dart/index.html index 3d32587..e633efc 100644 --- a/note/info-tech/dart/index.html +++ b/note/info-tech/dart/index.html @@ -9,7 +9,7 @@ - @@ -106,4 +106,4 @@ Jun 21, 2023

    • Note< final a2 = A(0, y: 1); final a3 = A.empty(); } -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/note/info-tech/flutter/index.html b/note/info-tech/flutter/index.html index 058eb14..494be80 100644 --- a/note/info-tech/flutter/index.html +++ b/note/info-tech/flutter/index.html @@ -1,4 +1,4 @@ -flutter +flutter @@ -9,49 +9,30 @@ -

      ar.falsy.cat

      Search

      Search IconIcon to open search

      flutter

      Last updated -Mar 20, 2023

      # 概要

      • マルチプラットフォーム GUIアプリケーション フレームワーク
        • iOS/Android,Web,Windows/Linux/Mac,組み込み
      • Google製
      • 使用言語はDart

      # インストール

      # Arch Linux

      • install-archlinuxの直後から,flutter doctorがオールグリーンになるまで
      • 1時間ぐらいは覚悟したほうがいい
      • 特にandroid-studioがクソでかいので -qemuイメージのリサイズをする羽目になった
      • 参考文献
      • 追記: -qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X(
        • ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた

      # 手順

      1. 依存のインストール
       1
      - 2
      - 3
      - 4
      - 5
      - 6
      - 7
      - 8
      - 9
      -10
      -11
      -12
      -13
      -14
      -
      pacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium
      -visudo  # いい感じに設定 & リログ
      -
      -git clone https://aur.archlinux.org/flutter.git
      -cd flutter
      -makepkg -sci  # JDKはデフォルトを選択
      -cd ..
      -
      -git clone https://aur.archlinux.org/android-studio.git
      -cd android-studio
      -makepkg -sci
      -cd ..
      -
      -usermod -aG flutterusers user  # 設定後にリログ
      -
      1. Android Studioの設定

        1. 初期設定は適当に
        2. Android StudioからFlutterプラグインをインストール&再起動
        3. Flutterプロジェクトを作成
          • flutter SDKのパス設定を忘れずに (/opt/flutter)
        4. Android SDK Command line toolsをインストール
      2. flutter doctor

      1
      +Jun 29, 2023

      # 概要

      • flutterはマルチプラットフォーム GUIアプリケーション フレームワーク
        • iOS/Android,Web,Windows/Linux/Mac,組み込み
      • Google製
      • 使用言語は +Dart

      # 環境構築

      • dart + flutterをインストール
      • VSCodeにflutter用の拡張機能を追加

      # 豆知識

      # ウィジェットツリー

      • main関数からrunAppにウィジェットツリーを渡すことでメインループが始まる
      • ウィジェットはStatelessなものとStatefullなものに大別できる
      • Statefullなウィジェットが更新(setState)されると,そのウィジェットとその子孫のツリーが全て再構成(build)される
        • パフォーマンス悪そうに見えるけれど,ウィジェットツリーの変更部分のみをシステム内部のエレメントツリーに反映することで画面更新を行なっているので,最適化はされている
        • HTMLレンダラみたいな感じ

      # 画面遷移

      • Navigatorが現在の画面の状態スタックを持つ
        • pushで画面遷移
          • コルーチンのawaitで,遷移先がpopされた時の値を受け取れる
        • popで前の画面に戻る
          • ユーザーからの戻るボタン押下でも勝手にpopされ得る
          • 呼び出し元へ返す値を引数に設定できる
      1
       2
       3
       4
      -
      export CHROME_EXECUTABLE=chromium  # 必要なら永続化する
      -git config --global --add safe.directory /opt/flutter
      -flutter doctor --android-licenses
      -flutter doctor  # 完了
      -

      # 感想

      • メジャーバージョンが同じでも後方互換性は乏しい
        • 過去のプロジェクトをビルドしようとしてもよくわからないエラーが大量に出てくる

      \ No newline at end of file +
      5 +6 +7 +8 +9 +
      // push (遷移後の画面がpopされるまでyield)
      +final ret = await Navigator.of(context).push(
      +  MaterialPageRoute(
      +    builder: (context) => Widget(),
      +  ),
      +);
      +
      +// pop
      +Navigator.of(context).pop("hello");
      +

      \ No newline at end of file diff --git a/note/info-tech/install-archlinux/index.html b/note/info-tech/install-archlinux/index.html index f85cee9..f614ebd 100644 --- a/note/info-tech/install-archlinux/index.html +++ b/note/info-tech/install-archlinux/index.html @@ -9,7 +9,7 @@ - @@ -44,4 +44,4 @@ Jun 21, 2023

      • Note< 2
        grub-install --target=i386-pc /dev/sda
         grub-mkconfig -o /boot/grub/grub.cfg
        -

        以上.


        \ No newline at end of file +

        以上.


        \ No newline at end of file diff --git a/note/info-tech/install-flutter-on-archlinux/index.html b/note/info-tech/install-flutter-on-archlinux/index.html new file mode 100644 index 0000000..432512e --- /dev/null +++ b/note/info-tech/install-flutter-on-archlinux/index.html @@ -0,0 +1,58 @@ +ArchLinuxへflutterをインストール + + + + + + + + + + + +
        +

        ar.falsy.cat

        Search

        Search IconIcon to open search
        +

        ArchLinuxへflutterをインストール

        Last updated +Jun 29, 2023

        # 初めに

        • install-archlinuxの直後から, +flutterのインストール方法を説明
          • flutter doctorがオールグリーンになるまで
        • 1時間ぐらいは覚悟したほうがいい
        • 特にandroid-studioがクソでかいので +qemuイメージのリサイズをする羽目になった
        • 参考文献
        • 追記: +qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X(
          • ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた

        # 手順

        # 1. 依存のインストール

         1
        + 2
        + 3
        + 4
        + 5
        + 6
        + 7
        + 8
        + 9
        +10
        +11
        +12
        +13
        +14
        +
        pacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium
        +visudo  # いい感じに設定 & リログ
        +
        +git clone https://aur.archlinux.org/flutter.git
        +cd flutter
        +makepkg -sci  # JDKはデフォルトを選択
        +cd ..
        +
        +git clone https://aur.archlinux.org/android-studio.git
        +cd android-studio
        +makepkg -sci
        +cd ..
        +
        +usermod -aG flutterusers user  # 設定後にリログ
        +

        # 2. Android Studioの設定

        1. 初期設定は適当に
        2. Android StudioからFlutterプラグインをインストール&再起動
        3. Flutterプロジェクトを作成
          • flutter SDKのパス設定を忘れずに (/opt/flutter)
        4. Android SDK Command line toolsをインストール

        # 3. flutter doctor

        1
        +2
        +3
        +4
        +
        export CHROME_EXECUTABLE=chromium  # 必要なら永続化する
        +git config --global --add safe.directory /opt/flutter
        +flutter doctor --android-licenses
        +flutter doctor  # 完了
        +

        \ No newline at end of file diff --git a/note/info-tech/obsidian/index.html b/note/info-tech/obsidian/index.html index 29a13de..7a7a08b 100644 --- a/note/info-tech/obsidian/index.html +++ b/note/info-tech/obsidian/index.html @@ -12,7 +12,7 @@ - diff --git a/note/info-tech/pleroma/index.html b/note/info-tech/pleroma/index.html index 66978d4..b978eb1 100644 --- a/note/info-tech/pleroma/index.html +++ b/note/info-tech/pleroma/index.html @@ -9,7 +9,7 @@ - @@ -24,4 +24,4 @@ Jun 21, 2023

        • Note< DELETE FROM users WHERE not local; # 全リモートユーザーの削除 VACUUM FULL; VACUUM ANALYZE; -
          \ No newline at end of file +
          \ No newline at end of file diff --git a/note/info-tech/publish-obsidian-by-quartz/index.html b/note/info-tech/publish-obsidian-by-quartz/index.html index d3d21d7..dac49a5 100644 --- a/note/info-tech/publish-obsidian-by-quartz/index.html +++ b/note/info-tech/publish-obsidian-by-quartz/index.html @@ -45,7 +45,7 @@ Quartzの紹介文からの引用 - @@ -68,4 +68,4 @@ Jun 21, 2023


          \ No newline at end of file diff --git a/note/info-tech/qemu/index.html b/note/info-tech/qemu/index.html index 7a2825c..b8259ff 100644 --- a/note/info-tech/qemu/index.html +++ b/note/info-tech/qemu/index.html @@ -33,7 +33,7 @@ M1/M2向けVirtualBoxはまだ開発者プレビューしかなく,まとも - @@ -66,4 +66,4 @@ Mar 18, 2023

          • Note< -m 4G \ -cdrom ../iso/archlinux-2023.02.01-x86_64.iso \ sda.qcow2 -
            \ No newline at end of file +
            \ No newline at end of file diff --git a/note/page/2/index.html b/note/page/2/index.html index 1b94cb2..28c9dff 100644 --- a/note/page/2/index.html +++ b/note/page/2/index.html @@ -9,10 +9,10 @@ -
            \ No newline at end of file +

            All Notes

            \ No newline at end of file diff --git a/note/study/statistics/hypothesis-test-multiplicity/index.html b/note/study/statistics/hypothesis-test-multiplicity/index.html index 854ed93..1e6fd89 100644 --- a/note/study/statistics/hypothesis-test-multiplicity/index.html +++ b/note/study/statistics/hypothesis-test-multiplicity/index.html @@ -9,7 +9,7 @@ - diff --git a/note/study/statistics/hypothesis-test-parametric/index.html b/note/study/statistics/hypothesis-test-parametric/index.html index 898999e..3f07061 100644 --- a/note/study/statistics/hypothesis-test-parametric/index.html +++ b/note/study/statistics/hypothesis-test-parametric/index.html @@ -9,7 +9,7 @@ - diff --git a/note/study/statistics/hypothesis-test/index.html b/note/study/statistics/hypothesis-test/index.html index e56fab6..4d1ec3e 100644 --- a/note/study/statistics/hypothesis-test/index.html +++ b/note/study/statistics/hypothesis-test/index.html @@ -9,7 +9,7 @@ - diff --git a/note/word-play/japanese-text-all-stars/index.html b/note/word-play/japanese-text-all-stars/index.html index 87e6e5a..fb96041 100644 --- a/note/word-play/japanese-text-all-stars/index.html +++ b/note/word-play/japanese-text-all-stars/index.html @@ -18,7 +18,7 @@ - diff --git a/note/word-play/proof-of-reality-using-lucid-dream/index.html b/note/word-play/proof-of-reality-using-lucid-dream/index.html index a58a5bd..a84f1ed 100644 --- a/note/word-play/proof-of-reality-using-lucid-dream/index.html +++ b/note/word-play/proof-of-reality-using-lucid-dream/index.html @@ -9,7 +9,7 @@ - diff --git a/note/word-play/two-lolita-devils-and-chess-board/index.html b/note/word-play/two-lolita-devils-and-chess-board/index.html index 8e8a29a..05991e1 100644 --- a/note/word-play/two-lolita-devils-and-chess-board/index.html +++ b/note/word-play/two-lolita-devils-and-chess-board/index.html @@ -9,7 +9,7 @@ - diff --git a/sitemap.xml b/sitemap.xml index 980bb57..c25b398 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/2023-04-23T01:11:03+09:00https://ar.falsy.cat/note/info-tech/install-archlinux/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/blog/2023-06-18T15:46:52+09:00https://ar.falsy.cat/blog/2023-06-18T15:46:52+09:00https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/2023-06-21T07:36:18+09:00https://ar.falsy.cat/tags/cat/2023-03-04T21:21:42+09:00https://ar.falsy.cat/categories/https://ar.falsy.cat/tags/chores/2023-03-07T10:46:29+09:00https://ar.falsy.cat/tags/cooking/2023-03-07T10:46:29+09:00https://ar.falsy.cat/note/info-tech/dart/2023-06-21T07:36:18+09:00https://ar.falsy.cat/tags/development/2023-06-21T07:36:18+09:00https://ar.falsy.cat/tags/essay/2023-06-26T22:42:37+09:00https://ar.falsy.cat/note/info-tech/flutter/2023-03-20T12:07:53+09:00https://ar.falsy.cat/tags/gourmet/2023-03-03T22:55:00+09:00https://ar.falsy.cat/2023-03-02T09:14:29-08:00https://ar.falsy.cat/tags/howto/2023-06-21T07:36:18+09:00https://ar.falsy.cat/tags/info-tech/2023-06-21T07:36:18+09:00https://ar.falsy.cat/tags/library/2023-03-20T12:07:53+09:00https://ar.falsy.cat/tags/lifehack/2023-03-11T23:42:40+09:00https://ar.falsy.cat/tags/linux/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/mountain/2023-03-04T21:21:42+09:00https://ar.falsy.cat/tags/note/2023-06-26T22:42:37+09:00https://ar.falsy.cat/note/2023-06-26T22:42:37+09:00https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/2023-06-21T07:35:08+09:00https://ar.falsy.cat/note/info-tech/obsidian/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/photo/2023-06-18T15:46:52+09:00https://ar.falsy.cat/note/info-tech/pleroma/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/programming-language/2023-06-21T07:36:18+09:00https://ar.falsy.cat/note/info-tech/qemu/2023-03-18T13:47:08+09:00https://ar.falsy.cat/tags/software/2023-03-20T12:07:53+09:00https://ar.falsy.cat/tags/statistics/2023-06-21T07:32:18+09:00https://ar.falsy.cat/tags/study/2023-06-21T07:32:18+09:00https://ar.falsy.cat/tags/2023-06-26T22:42:37+09:00https://ar.falsy.cat/tags/tool/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/travel/2023-06-18T15:46:52+09:00https://ar.falsy.cat/tags/virtualization/2023-03-18T13:47:08+09:00https://ar.falsy.cat/tags/web/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/word-play/2023-04-23T01:11:03+09:00https://ar.falsy.cat/note/study/statistics/hypothesis-test-parametric/2023-06-21T07:32:18+09:00https://ar.falsy.cat/note/study/statistics/hypothesis-test/2023-06-18T16:32:59+09:00https://ar.falsy.cat/note/study/statistics/hypothesis-test-multiplicity/2023-06-21T07:32:18+09:00https://ar.falsy.cat/note/chores/one-hand-egg-cracking/2023-02-23T22:52:35+09:00https://ar.falsy.cat/note/word-play/japanese-text-all-stars/2023-03-11T23:42:40+09:00https://ar.falsy.cat/note/essay/effective-presentation/2023-06-26T22:42:37+09:00https://ar.falsy.cat/blog/2023/0319-moving/2023-03-20T12:07:53+09:00https://ar.falsy.cat/note/word-play/proof-of-reality-using-lucid-dream/2023-03-11T23:42:40+09:00https://ar.falsy.cat/note/chores/cooking-rice-with-saucepan/2023-03-07T10:46:29+09:00https://ar.falsy.cat/blog/2023/0618-sarushima-island/2023-06-18T15:46:52+09:00https://ar.falsy.cat/blog/2023/0301-fukue-island/2023-03-02T00:14:02+09:00https://ar.falsy.cat/blog/2023/0303-fukue-island/2023-03-03T22:55:00+09:00https://ar.falsy.cat/blog/2023/0304-fukue-island/2023-03-04T21:21:42+09:00 \ No newline at end of file +https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/2023-04-23T01:11:03+09:00https://ar.falsy.cat/note/info-tech/install-archlinux/2023-06-21T07:35:08+09:00https://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/2023-06-29T08:28:18+09:00https://ar.falsy.cat/tags/blog/2023-06-18T15:46:52+09:00https://ar.falsy.cat/blog/2023-06-18T15:46:52+09:00https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/2023-06-21T07:36:18+09:00https://ar.falsy.cat/tags/cat/2023-03-04T21:21:42+09:00https://ar.falsy.cat/categories/https://ar.falsy.cat/tags/chores/2023-03-07T10:46:29+09:00https://ar.falsy.cat/tags/cooking/2023-03-07T10:46:29+09:00https://ar.falsy.cat/note/info-tech/dart/2023-06-21T07:36:18+09:00https://ar.falsy.cat/tags/development/2023-06-29T08:28:18+09:00https://ar.falsy.cat/tags/essay/2023-06-26T22:42:37+09:00https://ar.falsy.cat/note/info-tech/flutter/2023-06-29T08:28:18+09:00https://ar.falsy.cat/tags/gourmet/2023-03-03T22:55:00+09:00https://ar.falsy.cat/2023-03-02T09:14:29-08:00https://ar.falsy.cat/tags/howto/2023-06-29T08:28:18+09:00https://ar.falsy.cat/tags/info-tech/2023-06-29T08:28:18+09:00https://ar.falsy.cat/tags/library/2023-06-29T08:28:18+09:00https://ar.falsy.cat/tags/lifehack/2023-03-11T23:42:40+09:00https://ar.falsy.cat/tags/linux/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/mountain/2023-03-04T21:21:42+09:00https://ar.falsy.cat/tags/note/2023-06-29T08:28:18+09:00https://ar.falsy.cat/note/2023-06-29T08:28:18+09:00https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/2023-06-21T07:35:08+09:00https://ar.falsy.cat/note/info-tech/obsidian/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/photo/2023-06-18T15:46:52+09:00https://ar.falsy.cat/note/info-tech/pleroma/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/programming-language/2023-06-21T07:36:18+09:00https://ar.falsy.cat/note/info-tech/qemu/2023-03-18T13:47:08+09:00https://ar.falsy.cat/tags/statistics/2023-06-21T07:32:18+09:00https://ar.falsy.cat/tags/study/2023-06-21T07:32:18+09:00https://ar.falsy.cat/tags/2023-06-29T08:28:18+09:00https://ar.falsy.cat/tags/tool/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/travel/2023-06-18T15:46:52+09:00https://ar.falsy.cat/tags/virtualization/2023-03-18T13:47:08+09:00https://ar.falsy.cat/tags/web/2023-06-21T07:35:08+09:00https://ar.falsy.cat/tags/word-play/2023-04-23T01:11:03+09:00https://ar.falsy.cat/note/study/statistics/hypothesis-test-parametric/2023-06-21T07:32:18+09:00https://ar.falsy.cat/note/study/statistics/hypothesis-test/2023-06-18T16:32:59+09:00https://ar.falsy.cat/note/study/statistics/hypothesis-test-multiplicity/2023-06-21T07:32:18+09:00https://ar.falsy.cat/note/chores/one-hand-egg-cracking/2023-02-23T22:52:35+09:00https://ar.falsy.cat/note/word-play/japanese-text-all-stars/2023-03-11T23:42:40+09:00https://ar.falsy.cat/note/essay/effective-presentation/2023-06-26T22:42:37+09:00https://ar.falsy.cat/blog/2023/0319-moving/2023-03-20T12:07:53+09:00https://ar.falsy.cat/note/word-play/proof-of-reality-using-lucid-dream/2023-03-11T23:42:40+09:00https://ar.falsy.cat/note/chores/cooking-rice-with-saucepan/2023-03-07T10:46:29+09:00https://ar.falsy.cat/blog/2023/0618-sarushima-island/2023-06-18T15:46:52+09:00https://ar.falsy.cat/blog/2023/0301-fukue-island/2023-03-02T00:14:02+09:00https://ar.falsy.cat/blog/2023/0303-fukue-island/2023-03-03T22:55:00+09:00https://ar.falsy.cat/blog/2023/0304-fukue-island/2023-03-04T21:21:42+09:00 \ No newline at end of file diff --git a/tags/blog/index.html b/tags/blog/index.html index 256ef1e..a521375 100644 --- a/tags/blog/index.html +++ b/tags/blog/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/cat/index.html b/tags/cat/index.html index e7b2517..f9dfca4 100644 --- a/tags/cat/index.html +++ b/tags/cat/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/chores/index.html b/tags/chores/index.html index a8178f9..2860c1d 100644 --- a/tags/chores/index.html +++ b/tags/chores/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/cooking/index.html b/tags/cooking/index.html index 015d8d6..b062fea 100644 --- a/tags/cooking/index.html +++ b/tags/cooking/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/development/index.html b/tags/development/index.html index 2fac17a..eac3564 100644 --- a/tags/development/index.html +++ b/tags/development/index.html @@ -9,10 +9,10 @@ -
            \ No newline at end of file +
            \ No newline at end of file diff --git a/tags/development/index.xml b/tags/development/index.xml index fccf0d4..b963ebb 100644 --- a/tags/development/index.xml +++ b/tags/development/index.xml @@ -1 +1 @@ -development onhttps://ar.falsy.cat/tags/development/Recent content in development onHugo -- gohugo.ioen-usC/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.dart言語https://ar.falsy.cat/note/info-tech/dart/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/dart/概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark &amp; sweep)搭載 デストラクタは無さそう,そもそもmark &amp; sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?flutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 マルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語はDart インストール Arch Linux install-archlinuxの直後から,flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 依存のインストール 1 2 3 4 5 6 7 8 9 10 11 12 13 14 pacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium visudo # いい感じに設定 &amp; リログ git clone https://aur. \ No newline at end of file +development onhttps://ar.falsy.cat/tags/development/Recent content in development onHugo -- gohugo.ioen-usArchLinuxへflutterをインストールhttps://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/初めに install-archlinuxの直後から, flutterのインストール方法を説明 flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 1.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.dart言語https://ar.falsy.cat/note/info-tech/dart/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/dart/概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark &amp; sweep)搭載 デストラクタは無さそう,そもそもmark &amp; sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?flutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 flutterはマルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語は Dart 環境構築 dart + flutterをインストール VSCodeにflutter用の拡張機能を追加 豆知識 ウィジェットツリー main関数からrunAppにウィジェットツリーを渡すことでメインループが始まる ウィジェットはStatelessなものとStatefullなものに大別できる Statefullなウィジェットが更新(setState)されると,そのウィジェットとその子孫のツリーが全て再構成(build)される パフォーマンス悪そうに見えるけれど,ウィジェットツリーの変更部分のみをシステム内部のエレメントツリーに反映することで画面更新を行なっているので,最適化はされている HTMLレンダラみたいな感じ 画面遷移 Navigatorが現在の画面の状態スタックを持つ pushで画面遷移 コルーチンのawaitで,遷移先がpopされた時の値を受け取れる popで前の画面に戻る ユーザーからの戻るボタン押下でも勝手にpopされ得る 呼び出し元へ返す値を引数に設定できる 1 2 3 4 5 6 7 8 9 // push (遷移後の画面がpopされるまでyield) final ret = await Navigator. \ No newline at end of file diff --git a/tags/essay/index.html b/tags/essay/index.html index bbca7fa..5bc710a 100644 --- a/tags/essay/index.html +++ b/tags/essay/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/gourmet/index.html b/tags/gourmet/index.html index 048c0ea..9ede1ac 100644 --- a/tags/gourmet/index.html +++ b/tags/gourmet/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/howto/index.html b/tags/howto/index.html index 3f05b80..404e2e3 100644 --- a/tags/howto/index.html +++ b/tags/howto/index.html @@ -9,10 +9,10 @@ -
            \ No newline at end of file +
            \ No newline at end of file diff --git a/tags/howto/index.xml b/tags/howto/index.xml index f63dd44..86bd034 100644 --- a/tags/howto/index.xml +++ b/tags/howto/index.xml @@ -1,4 +1,4 @@ -howto onhttps://ar.falsy.cat/tags/howto/Recent content in howto onHugo -- gohugo.ioen-usArchLinuxのインストールhttps://ar.falsy.cat/note/info-tech/install-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-archlinux/概要 ArchLinuxのインストール手順を記録する Live Environmentの起動方法については触れない 前提 qemu上の仮想マシン BIOS GPT x86_64 デュアルブートなし できるだけシンプル,ミニマリスティックに 手順 1. 事前準備 1 2 3 loadkeys jp106 # キーボード設定 ping google.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/<h2 id="概要">概要</h2> +howto onhttps://ar.falsy.cat/tags/howto/Recent content in howto onHugo -- gohugo.ioen-usArchLinuxのインストールhttps://ar.falsy.cat/note/info-tech/install-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-archlinux/概要 ArchLinuxのインストール手順を記録する Live Environmentの起動方法については触れない 前提 qemu上の仮想マシン BIOS GPT x86_64 デュアルブートなし できるだけシンプル,ミニマリスティックに 手順 1. 事前準備 1 2 3 loadkeys jp106 # キーボード設定 ping google.ArchLinuxへflutterをインストールhttps://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/初めに install-archlinuxの直後から, flutterのインストール方法を説明 flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 1.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/<h2 id="概要">概要</h2> <ul> <li> <a href="https://github.com/jackyzha0/quartz" rel="noopener">Quartz</a>で diff --git a/tags/index.html b/tags/index.html index 11ca338..036e033 100644 --- a/tags/index.html +++ b/tags/index.html @@ -9,10 +9,10 @@ -

            ar.falsy.cat

            Search

            Search IconIcon to open search
            -

            All Tags

            Note

            17 notes with this tag (showing first 10 results)

            Info tech

            8 notes with this tag

            Blog

            5 notes with this tag

            Photo

            5 notes with this tag

            Lifehack

            4 notes with this tag

            Travel

            4 notes with this tag

            Cat

            3 notes with this tag

            Development

            3 notes with this tag

            Howto

            3 notes with this tag

            Statistics

            3 notes with this tag

            Study

            3 notes with this tag

            Tool

            3 notes with this tag

            Word play

            3 notes with this tag

            Chores

            2 notes with this tag

            Cooking

            2 notes with this tag

            Gourmet

            2 notes with this tag

            Programming language

            2 notes with this tag

            Web

            2 notes with this tag

            Essay

            1 notes with this tag

            Library

            1 notes with this tag

            Linux

            1 notes with this tag

            Mountain

            1 notes with this tag

            Software

            1 notes with this tag

            Virtualization

            1 notes with this tag

            \ No newline at end of file +

            All Tags

            Note

            18 notes with this tag (showing first 10 results)

            Info tech

            9 notes with this tag

            Blog

            5 notes with this tag

            Photo

            5 notes with this tag

            Development

            4 notes with this tag

            Howto

            4 notes with this tag

            Lifehack

            4 notes with this tag

            Travel

            4 notes with this tag

            Cat

            3 notes with this tag

            Statistics

            3 notes with this tag

            Study

            3 notes with this tag

            Tool

            3 notes with this tag

            Word play

            3 notes with this tag

            Chores

            2 notes with this tag

            Cooking

            2 notes with this tag

            Gourmet

            2 notes with this tag

            Programming language

            2 notes with this tag

            Web

            2 notes with this tag

            Essay

            1 notes with this tag

            Library

            1 notes with this tag

            Linux

            1 notes with this tag

            Mountain

            1 notes with this tag

            Virtualization

            1 notes with this tag

            \ No newline at end of file diff --git a/tags/index.xml b/tags/index.xml index 8857b24..78ebcfe 100644 --- a/tags/index.xml +++ b/tags/index.xml @@ -1 +1 @@ -Tags onhttps://ar.falsy.cat/tags/Recent content in Tags onHugo -- gohugo.ioen-usbloghttps://ar.falsy.cat/tags/blog/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/blog/cathttps://ar.falsy.cat/tags/cat/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/cat/choreshttps://ar.falsy.cat/tags/chores/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/chores/cookinghttps://ar.falsy.cat/tags/cooking/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/cooking/developmenthttps://ar.falsy.cat/tags/development/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/development/essayhttps://ar.falsy.cat/tags/essay/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/essay/gourmethttps://ar.falsy.cat/tags/gourmet/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/gourmet/howtohttps://ar.falsy.cat/tags/howto/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/howto/info-techhttps://ar.falsy.cat/tags/info-tech/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/info-tech/libraryhttps://ar.falsy.cat/tags/library/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/library/lifehackhttps://ar.falsy.cat/tags/lifehack/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/lifehack/linuxhttps://ar.falsy.cat/tags/linux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/linux/mountainhttps://ar.falsy.cat/tags/mountain/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/mountain/notehttps://ar.falsy.cat/tags/note/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/note/photohttps://ar.falsy.cat/tags/photo/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/photo/programming-languagehttps://ar.falsy.cat/tags/programming-language/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/programming-language/softwarehttps://ar.falsy.cat/tags/software/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/software/statisticshttps://ar.falsy.cat/tags/statistics/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/statistics/studyhttps://ar.falsy.cat/tags/study/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/study/toolhttps://ar.falsy.cat/tags/tool/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/tool/travelhttps://ar.falsy.cat/tags/travel/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/travel/virtualizationhttps://ar.falsy.cat/tags/virtualization/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/virtualization/webhttps://ar.falsy.cat/tags/web/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/web/word-playhttps://ar.falsy.cat/tags/word-play/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/word-play/ \ No newline at end of file +Tags onhttps://ar.falsy.cat/tags/Recent content in Tags onHugo -- gohugo.ioen-usbloghttps://ar.falsy.cat/tags/blog/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/blog/cathttps://ar.falsy.cat/tags/cat/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/cat/choreshttps://ar.falsy.cat/tags/chores/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/chores/cookinghttps://ar.falsy.cat/tags/cooking/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/cooking/developmenthttps://ar.falsy.cat/tags/development/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/development/essayhttps://ar.falsy.cat/tags/essay/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/essay/gourmethttps://ar.falsy.cat/tags/gourmet/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/gourmet/howtohttps://ar.falsy.cat/tags/howto/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/howto/info-techhttps://ar.falsy.cat/tags/info-tech/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/info-tech/libraryhttps://ar.falsy.cat/tags/library/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/library/lifehackhttps://ar.falsy.cat/tags/lifehack/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/lifehack/linuxhttps://ar.falsy.cat/tags/linux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/linux/mountainhttps://ar.falsy.cat/tags/mountain/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/mountain/notehttps://ar.falsy.cat/tags/note/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/note/photohttps://ar.falsy.cat/tags/photo/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/photo/programming-languagehttps://ar.falsy.cat/tags/programming-language/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/programming-language/statisticshttps://ar.falsy.cat/tags/statistics/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/statistics/studyhttps://ar.falsy.cat/tags/study/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/study/toolhttps://ar.falsy.cat/tags/tool/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/tool/travelhttps://ar.falsy.cat/tags/travel/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/travel/virtualizationhttps://ar.falsy.cat/tags/virtualization/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/virtualization/webhttps://ar.falsy.cat/tags/web/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/web/word-playhttps://ar.falsy.cat/tags/word-play/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/tags/word-play/ \ No newline at end of file diff --git a/tags/info-tech/index.html b/tags/info-tech/index.html index cc7f09e..8b2aecd 100644 --- a/tags/info-tech/index.html +++ b/tags/info-tech/index.html @@ -9,10 +9,10 @@ -
            \ No newline at end of file +

            Tag: info-tech

            \ No newline at end of file diff --git a/tags/info-tech/index.xml b/tags/info-tech/index.xml index e6ba40a..bc5ea0c 100644 --- a/tags/info-tech/index.xml +++ b/tags/info-tech/index.xml @@ -1,4 +1,4 @@ -info-tech onhttps://ar.falsy.cat/tags/info-tech/Recent content in info-tech onHugo -- gohugo.ioen-usArchLinuxのインストールhttps://ar.falsy.cat/note/info-tech/install-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-archlinux/概要 ArchLinuxのインストール手順を記録する Live Environmentの起動方法については触れない 前提 qemu上の仮想マシン BIOS GPT x86_64 デュアルブートなし できるだけシンプル,ミニマリスティックに 手順 1. 事前準備 1 2 3 loadkeys jp106 # キーボード設定 ping google.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.dart言語https://ar.falsy.cat/note/info-tech/dart/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/dart/概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark &amp; sweep)搭載 デストラクタは無さそう,そもそもmark &amp; sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?flutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 マルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語はDart インストール Arch Linux install-archlinuxの直後から,flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 依存のインストール 1 2 3 4 5 6 7 8 9 10 11 12 13 14 pacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium visudo # いい感じに設定 &amp; リログ git clone https://aur.ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/<h2 id="概要">概要</h2> +info-tech onhttps://ar.falsy.cat/tags/info-tech/Recent content in info-tech onHugo -- gohugo.ioen-usArchLinuxのインストールhttps://ar.falsy.cat/note/info-tech/install-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-archlinux/概要 ArchLinuxのインストール手順を記録する Live Environmentの起動方法については触れない 前提 qemu上の仮想マシン BIOS GPT x86_64 デュアルブートなし できるだけシンプル,ミニマリスティックに 手順 1. 事前準備 1 2 3 loadkeys jp106 # キーボード設定 ping google.ArchLinuxへflutterをインストールhttps://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/初めに install-archlinuxの直後から, flutterのインストール方法を説明 flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 1.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.dart言語https://ar.falsy.cat/note/info-tech/dart/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/dart/概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark &amp; sweep)搭載 デストラクタは無さそう,そもそもmark &amp; sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?flutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 flutterはマルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語は Dart 環境構築 dart + flutterをインストール VSCodeにflutter用の拡張機能を追加 豆知識 ウィジェットツリー main関数からrunAppにウィジェットツリーを渡すことでメインループが始まる ウィジェットはStatelessなものとStatefullなものに大別できる Statefullなウィジェットが更新(setState)されると,そのウィジェットとその子孫のツリーが全て再構成(build)される パフォーマンス悪そうに見えるけれど,ウィジェットツリーの変更部分のみをシステム内部のエレメントツリーに反映することで画面更新を行なっているので,最適化はされている HTMLレンダラみたいな感じ 画面遷移 Navigatorが現在の画面の状態スタックを持つ pushで画面遷移 コルーチンのawaitで,遷移先がpopされた時の値を受け取れる popで前の画面に戻る ユーザーからの戻るボタン押下でも勝手にpopされ得る 呼び出し元へ返す値を引数に設定できる 1 2 3 4 5 6 7 8 9 // push (遷移後の画面がpopされるまでyield) final ret = await Navigator.ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/<h2 id="概要">概要</h2> <ul> <li> <a href="https://github.com/jackyzha0/quartz" rel="noopener">Quartz</a>で diff --git a/tags/library/index.html b/tags/library/index.html index 3051eb6..5701f14 100644 --- a/tags/library/index.html +++ b/tags/library/index.html @@ -9,10 +9,10 @@ -

            ar.falsy.cat

            Search

            Search IconIcon to open search
            -
            \ No newline at end of file +
            \ No newline at end of file diff --git a/tags/library/index.xml b/tags/library/index.xml index 69746a4..e1d02dd 100644 --- a/tags/library/index.xml +++ b/tags/library/index.xml @@ -1 +1 @@ -library onhttps://ar.falsy.cat/tags/library/Recent content in library onHugo -- gohugo.ioen-usflutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 マルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語はDart インストール Arch Linux install-archlinuxの直後から,flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 依存のインストール 1 2 3 4 5 6 7 8 9 10 11 12 13 14 pacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium visudo # いい感じに設定 &amp; リログ git clone https://aur. \ No newline at end of file +library onhttps://ar.falsy.cat/tags/library/Recent content in library onHugo -- gohugo.ioen-usflutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 flutterはマルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語は Dart 環境構築 dart + flutterをインストール VSCodeにflutter用の拡張機能を追加 豆知識 ウィジェットツリー main関数からrunAppにウィジェットツリーを渡すことでメインループが始まる ウィジェットはStatelessなものとStatefullなものに大別できる Statefullなウィジェットが更新(setState)されると,そのウィジェットとその子孫のツリーが全て再構成(build)される パフォーマンス悪そうに見えるけれど,ウィジェットツリーの変更部分のみをシステム内部のエレメントツリーに反映することで画面更新を行なっているので,最適化はされている HTMLレンダラみたいな感じ 画面遷移 Navigatorが現在の画面の状態スタックを持つ pushで画面遷移 コルーチンのawaitで,遷移先がpopされた時の値を受け取れる popで前の画面に戻る ユーザーからの戻るボタン押下でも勝手にpopされ得る 呼び出し元へ返す値を引数に設定できる 1 2 3 4 5 6 7 8 9 // push (遷移後の画面がpopされるまでyield) final ret = await Navigator. \ No newline at end of file diff --git a/tags/lifehack/index.html b/tags/lifehack/index.html index 9695365..948b3d0 100644 --- a/tags/lifehack/index.html +++ b/tags/lifehack/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/linux/index.html b/tags/linux/index.html index 3b78fe4..56b5dba 100644 --- a/tags/linux/index.html +++ b/tags/linux/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/mountain/index.html b/tags/mountain/index.html index 1186924..1d97e06 100644 --- a/tags/mountain/index.html +++ b/tags/mountain/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/note/index.html b/tags/note/index.html index 53380cf..8d508f2 100644 --- a/tags/note/index.html +++ b/tags/note/index.html @@ -9,10 +9,10 @@ -
            \ No newline at end of file +

            Tag: note

            \ No newline at end of file diff --git a/tags/note/index.xml b/tags/note/index.xml index de1da81..b5a3de8 100644 --- a/tags/note/index.xml +++ b/tags/note/index.xml @@ -1,4 +1,4 @@ -note onhttps://ar.falsy.cat/tags/note/Recent content in note onHugo -- gohugo.ioen-us2人の幼女と悪魔とチェス盤https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/概要 「2人の幼女とチェス盤の部屋」という次のような論理問題を解説する 以下の手順の後,幼女Bが任意の整数$x\left(0\leq x&lt;64\right)$を求められるようにするには,幼女Aはどのような操作を行うべきか 悪魔が8x8チェス盤の各マスに1個ずつ,合計0個以上64個以下のポーンをランダムに配置する 悪魔は幼女Aにチェス盤を見せ,任意の数字$x\left(0\leq x&lt;64\right)$を伝える 幼女Aは,チェス盤に対して次のいずれかの操作のうち可能であるものを1回だけ必ず行う 任意のマスからポーンを1個だけ取り除く 任意のマスにポーンを1個だけ追加する 悪魔は幼女Bにチェス盤を見せる 問題の簡潔化 $f(g(b,x))=x$とできるような写像$f,g$を求めよ $B=\left\{0,1\right\}$ $b\in B^{64}$ $x\in B^6$ $f: B^{64} \rightarrow B^6$ $g: B^{64} \times B^6\rightarrow B^{64}$ $b$と$g(b,x)$は1ビットだけ異なる 解答 $f(b)=f_0\oplus f_1\oplus f_2 \oplus \dots \oplus f_{63} \quad\left(f_i=i b_i\right)$ $b&rsquo;=g(b,x) \implies b&rsquo;_m \neq b_m\quad\left(m=x\oplus f(b)\right)$ チェス盤が16x16の場合のプログラム 解説 $x=f(b)\oplus m$となるような$m\in B^6$は必ず存在する 盤面の各マスに$m$の値を割り当てることで,1マスの操作だけで$m$を表現できる 盤面のマス目の数も,$m$がとりうる値の数も64 $f(g(b,x))=f(b)\oplus m=f(b)\oplus f_m\oplus m(1-b_m)$ 応用 長さ$2^N$の任意のビット列について,任意の1ビットだけを反転させることで,長さ$N$のビット列を表現できる 参考文献 # 超難問論理クイズ「2人の幼女とチェス盤の部屋」が本当に難しすぎた - 明日は未来だ! 幼女問題まとめ - GItHub Gist Impossible Escape?ArchLinuxのインストールhttps://ar.falsy.cat/note/info-tech/install-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-archlinux/概要 ArchLinuxのインストール手順を記録する Live Environmentの起動方法については触れない 前提 qemu上の仮想マシン BIOS GPT x86_64 デュアルブートなし できるだけシンプル,ミニマリスティックに 手順 1. 事前準備 1 2 3 loadkeys jp106 # キーボード設定 ping google.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.dart言語https://ar.falsy.cat/note/info-tech/dart/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/dart/概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark &amp; sweep)搭載 デストラクタは無さそう,そもそもmark &amp; sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?flutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 マルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語はDart インストール Arch Linux install-archlinuxの直後から,flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 依存のインストール 1 2 3 4 5 6 7 8 9 10 11 12 13 14 pacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium visudo # いい感じに設定 &amp; リログ git clone https://aur.ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/<h2 id="概要">概要</h2> +note onhttps://ar.falsy.cat/tags/note/Recent content in note onHugo -- gohugo.ioen-us2人の幼女と悪魔とチェス盤https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/word-play/two-lolita-devils-and-chess-board/概要 「2人の幼女とチェス盤の部屋」という次のような論理問題を解説する 以下の手順の後,幼女Bが任意の整数$x\left(0\leq x&lt;64\right)$を求められるようにするには,幼女Aはどのような操作を行うべきか 悪魔が8x8チェス盤の各マスに1個ずつ,合計0個以上64個以下のポーンをランダムに配置する 悪魔は幼女Aにチェス盤を見せ,任意の数字$x\left(0\leq x&lt;64\right)$を伝える 幼女Aは,チェス盤に対して次のいずれかの操作のうち可能であるものを1回だけ必ず行う 任意のマスからポーンを1個だけ取り除く 任意のマスにポーンを1個だけ追加する 悪魔は幼女Bにチェス盤を見せる 問題の簡潔化 $f(g(b,x))=x$とできるような写像$f,g$を求めよ $B=\left\{0,1\right\}$ $b\in B^{64}$ $x\in B^6$ $f: B^{64} \rightarrow B^6$ $g: B^{64} \times B^6\rightarrow B^{64}$ $b$と$g(b,x)$は1ビットだけ異なる 解答 $f(b)=f_0\oplus f_1\oplus f_2 \oplus \dots \oplus f_{63} \quad\left(f_i=i b_i\right)$ $b&rsquo;=g(b,x) \implies b&rsquo;_m \neq b_m\quad\left(m=x\oplus f(b)\right)$ チェス盤が16x16の場合のプログラム 解説 $x=f(b)\oplus m$となるような$m\in B^6$は必ず存在する 盤面の各マスに$m$の値を割り当てることで,1マスの操作だけで$m$を表現できる 盤面のマス目の数も,$m$がとりうる値の数も64 $f(g(b,x))=f(b)\oplus m=f(b)\oplus f_m\oplus m(1-b_m)$ 応用 長さ$2^N$の任意のビット列について,任意の1ビットだけを反転させることで,長さ$N$のビット列を表現できる 参考文献 # 超難問論理クイズ「2人の幼女とチェス盤の部屋」が本当に難しすぎた - 明日は未来だ! 幼女問題まとめ - GItHub Gist Impossible Escape?ArchLinuxのインストールhttps://ar.falsy.cat/note/info-tech/install-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-archlinux/概要 ArchLinuxのインストール手順を記録する Live Environmentの起動方法については触れない 前提 qemu上の仮想マシン BIOS GPT x86_64 デュアルブートなし できるだけシンプル,ミニマリスティックに 手順 1. 事前準備 1 2 3 loadkeys jp106 # キーボード設定 ping google.ArchLinuxへflutterをインストールhttps://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/初めに install-archlinuxの直後から, flutterのインストール方法を説明 flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 1.C/C++のsanitizerの使い方https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/概要 バグを検知するコードを埋め込むための,sanitizerと呼ばれる機能がある このページではsanitizerの使い方を説明する 使い方 コンパイル時にsanitizerを埋め込む 種類ごとにオプションが異なる XXXにはSanitizer名をカンマ区切りで羅列する 代表的なSanitizer名については後述 1 2 g++ -fsanitizer=XXX a.dart言語https://ar.falsy.cat/note/info-tech/dart/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/dart/概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark &amp; sweep)搭載 デストラクタは無さそう,そもそもmark &amp; sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?flutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 flutterはマルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語は Dart 環境構築 dart + flutterをインストール VSCodeにflutter用の拡張機能を追加 豆知識 ウィジェットツリー main関数からrunAppにウィジェットツリーを渡すことでメインループが始まる ウィジェットはStatelessなものとStatefullなものに大別できる Statefullなウィジェットが更新(setState)されると,そのウィジェットとその子孫のツリーが全て再構成(build)される パフォーマンス悪そうに見えるけれど,ウィジェットツリーの変更部分のみをシステム内部のエレメントツリーに反映することで画面更新を行なっているので,最適化はされている HTMLレンダラみたいな感じ 画面遷移 Navigatorが現在の画面の状態スタックを持つ pushで画面遷移 コルーチンのawaitで,遷移先がpopされた時の値を受け取れる popで前の画面に戻る ユーザーからの戻るボタン押下でも勝手にpopされ得る 呼び出し元へ返す値を引数に設定できる 1 2 3 4 5 6 7 8 9 // push (遷移後の画面がpopされるまでyield) final ret = await Navigator.ObsidianとQuartzによるセカンドブレインデジタルガーデンの構築https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/publish-obsidian-by-quartz/<h2 id="概要">概要</h2> <ul> <li> <a href="https://github.com/jackyzha0/quartz" rel="noopener">Quartz</a>で diff --git a/tags/note/page/2/index.html b/tags/note/page/2/index.html index 5b1f184..09aeda9 100644 --- a/tags/note/page/2/index.html +++ b/tags/note/page/2/index.html @@ -9,10 +9,10 @@ -
            \ No newline at end of file +

            Tag: note

            \ No newline at end of file diff --git a/tags/photo/index.html b/tags/photo/index.html index 32444da..091bb17 100644 --- a/tags/photo/index.html +++ b/tags/photo/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/programming-language/index.html b/tags/programming-language/index.html index 8d46c9f..8912063 100644 --- a/tags/programming-language/index.html +++ b/tags/programming-language/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/software/index.html b/tags/software/index.html deleted file mode 100644 index 64929e7..0000000 --- a/tags/software/index.html +++ /dev/null @@ -1,18 +0,0 @@ -software - - - - - - - - - - - -
            -

            ar.falsy.cat

            Search

            Search IconIcon to open search
            -
            \ No newline at end of file diff --git a/tags/software/index.xml b/tags/software/index.xml deleted file mode 100644 index 68aa945..0000000 --- a/tags/software/index.xml +++ /dev/null @@ -1 +0,0 @@ -software onhttps://ar.falsy.cat/tags/software/Recent content in software onHugo -- gohugo.ioen-usflutterhttps://ar.falsy.cat/note/info-tech/flutter/Mon, 01 Jan 0001 00:00:00 +0000https://ar.falsy.cat/note/info-tech/flutter/概要 マルチプラットフォーム GUIアプリケーション フレームワーク iOS/Android,Web,Windows/Linux/Mac,組み込み Google製 使用言語はDart インストール Arch Linux install-archlinuxの直後から,flutter doctorがオールグリーンになるまで 1時間ぐらいは覚悟したほうがいい 特にandroid-studioがクソでかいので qemuイメージのリサイズをする羽目になった 参考文献 追記: qemu上だとパフォーマンスがゴミすぎてまともに使えなかった X( ハードウェアアクセラレーションとか頑張ればいけるのかもしれないけど,諦めてホストのMacbookに直接入れた 手順 依存のインストール 1 2 3 4 5 6 7 8 9 10 11 12 13 14 pacman -S base-devel xorg-server xterm i3-wm noto-fonts git clang cmake ninja chromium visudo # いい感じに設定 &amp; リログ git clone https://aur. \ No newline at end of file diff --git a/tags/software/page/1/index.html b/tags/software/page/1/index.html deleted file mode 100644 index b434069..0000000 --- a/tags/software/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -https://ar.falsy.cat/tags/software/ \ No newline at end of file diff --git a/tags/statistics/index.html b/tags/statistics/index.html index 466b69e..186a9d8 100644 --- a/tags/statistics/index.html +++ b/tags/statistics/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/study/index.html b/tags/study/index.html index f64c842..6911bfd 100644 --- a/tags/study/index.html +++ b/tags/study/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/tool/index.html b/tags/tool/index.html index 20464b5..1f170bc 100644 --- a/tags/tool/index.html +++ b/tags/tool/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/travel/index.html b/tags/travel/index.html index 3fc9a20..a5b28af 100644 --- a/tags/travel/index.html +++ b/tags/travel/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/virtualization/index.html b/tags/virtualization/index.html index 3794dbb..5b3a565 100644 --- a/tags/virtualization/index.html +++ b/tags/virtualization/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/web/index.html b/tags/web/index.html index 2e489eb..6e74125 100644 --- a/tags/web/index.html +++ b/tags/web/index.html @@ -9,7 +9,7 @@ - diff --git a/tags/word-play/index.html b/tags/word-play/index.html index 4f60c07..3f4a919 100644 --- a/tags/word-play/index.html +++ b/tags/word-play/index.html @@ -9,7 +9,7 @@ -