Insomnia

ページ間のリンク図1

概要

このドキュメントはプログラム関連の文書シリーズである。この文書の目的は主に3つある。

  1. プログラマとして直面した雑事を記録して未来の問題解決に利用すること

    過去詰まったのと同じ問題にあたることはよくあるので、記録しておくとすぐ辿り着いて解決できる可能性が高まる。ググるだけだと、検索順位が変わったり検索ワードを忘れて、二度とたどりつけなくなることが多かった。また、よりよい方法を思いついたときにすでにベースがあると少しつづ改良する基盤にできる。

  2. 得たことを 大量に 収集する保存場所

    人は大量に集まったものをすごい、熱意があると考える傾向がある。自身の行動も例外でなく、量を前にして自分はそれが好きなのだと錯覚していく。熱意は生まれ持ったものでなく、自分から迎えに行くものだと考えている。量はさらなるモチベーションを生み出し、より収集し、より好きになる循環が生まれる。そうして徐々に錯覚でなく本物になっていく。だから集める。大量に収集するにはそれなりに構造化し、整理した状態を保つ必要がある。

  3. 新しいアイデア・洞察を得る

    ものごとを整理し、着想を得る基盤にする。新しいアイデアといっても、組み合わせにすぎない。しかし組み合わせるためには既存のものを整理し本質をよく理解しておくことが必要であり、そのための準備をする。

すべて自分のためである。しかし未来の自分は他人なので、文脈を共有しない他人が見て理解できるように書く。

作成者の情報。

氏名 貴島 大悟 Kijima Daigo
生年月日 1998-03-28
居住地 東京
最終学歴 鹿児島大学 法文学部
GitHub kijimaD

関連リンク。

KDOC

ナンバリングした、1エントリで完結する文章。

⌨ コード

コードのメモ。1つのアイデアを表現する。

✏ エッセイ

日々考えたこと。1つのアイデアを表現する。

📚 すべて

すべて。

構成

このドキュメントはツェッテルカステンライクな方法で構成する。あとで組み合わせてアイデアを得られるように、取り出しやすい形で整理しておく。

Sorry, your browser does not support SVG.

Figure 1: 構成

  • 永続メモ

    永続するメモ。後で見て単独で意味がわかるように、完全に文脈を備えた、整理された短い文章。他の永続メモとリンクさせて書く。後からリンクをたどらず見る用にゆるやかなカテゴリ構造を持つ。1つのメモにカテゴリは複数つくことがある。

  • 文献メモ

    文献のメモ。残す。本から得られたことを自分の言葉で書き直す。得たアイデアは永続メモにリンクさせる。

  • 一時メモ

    一時的なメモ。時間が経つか永続メモに清書したら消す。

Org-roam部分はwiki的な感じで、単なる巨大なメモとスケジュール管理になっている。ファイルはカテゴリごとに分かれているが、両方に含まれるような項目もあったりして、どうにかしたい。

参考。

Slides

(require 'cl)
(setq urls (mapcar #'file-name-nondirectory (directory-files "./pdfs" t "\\.pdf$"))  )
(loop for x in urls
      do (princ (format "<li><a href='./pdfs/index.html?file=%s'>%s</a></li>\n" x x)))
  • 20240530-slide.pdf.drawio.pdf
  • Repository stat

    この文書はkijimaD/roamでバージョン管理されている。リポジトリの統計を図示した。

    ↓期間ごとで、リポジトリのファイル数を示す2

    Number of files image

    Figure 2: Number of files(.org only)

    ↓期間ごとで、リポジトリの行数を示す。

    Number of lines image

    Figure 3: Number of lines(.org only)

    実際の数字を数える。この数字を目的にすることはなく、単に客観的に把握するためのメトリクスとして使う。

    file_changed_count_day() {
        datestr_past=$1
        datestr_future=$2
    
        count=`git whatchanged --diff-filter=A --since="$datestr_past" --until="$datestr_future"--format=oneline --name-only --pretty=format: | grep -e ".*org" | sort -u | wc -l`
        printf "%s %s " `date --date "$datestr_past" "+%Y-%m-%d"` $count
        for (( i = 0; i < $count; i++ )); do
            printf "%s" "+"
        done
        echo
    }
    
    echo ビルド時刻 `TZ=JST-9 date "+%F+%T"`
    echo .orgファイル数 `find . -maxdepth 1 -type f -name "*.org" | grep -c "\.org$"`
    echo .orgファイルサイズ `du -h -c ./*.org | tail -n 1 | sed 's/\ttotal//'`
    echo 画像ファイル数 `find ./images -type f -name "*.png" -o -name "*.svg" | wc -l`
    echo 画像ファイルサイズ `du -h -c ./images/* | tail -n 1 | sed 's/\ttotal//'`
    
    total_multi_count=0
    total_line_count=0
    
    for file in ./*.org ; do
        if [ -f "$file" ]; then
            multi_count=$(wc -m < "$file") # マルチバイト
            line_count=$(wc -l < "$file")
        fi
        total_multi_count=$((total_multi_count + multi_count))
        total_line_count=$((total_line_count + line_count))
    done
    echo
    echo 文字数 ${total_multi_count}文字
    echo 1ページ600文字とすると $((total_multi_count / 600))ページ
    echo 本1冊300ページとすると $((total_multi_count / 600 / 300))冊
    echo 本1冊10万文字とすると $((total_multi_count / 100000))冊
    echo 本1冊2cmとすると $((total_multi_count / 100000 * 2))cm
    echo
    echo 行数 ${total_line_count}行
    echo 60行入るディスプレイだと $((total_line_count / 60))枚分
    echo 14インチディスプレイだと $((total_line_count / 60 * 17 / 100))メートル
    echo
    echo "句点の数" `grep -rohE '。' ./*.org | wc -l`
    echo "読点の数" `grep -rohE '、' ./*.org | wc -l`
    echo "改行の数" `grep -rohE '\n' ./*.org | wc -l`
    echo
    echo "外部リンクの数" `grep -rohE 'https?://' ./*.org | wc -l`
    echo "内部リンクの数" `grep -rohE '\[\[id:.+?\]' ./*.org | wc -l`
    echo "見出し1の数" `grep -rohE '^\*\s+[^\s]' ./*.org | wc -l`
    echo "見出し2の数" `grep -rohE '^\*\*\s+[^\s]' ./*.org | wc -l`
    echo "見出し3の数" `grep -rohE '^\*\*\*\s+[^\s]' ./*.org | wc -l`
    echo "リストの数" `grep -rohE '^-\s+[^\s]' ./*.org | wc -l`
    echo "脚注の数" `grep -rohE '\[fn:.+?\]' ./*.org | wc -l`
    echo "挿入画像の数" `grep -rohE '^\[\[file:.+?\]\]' ./*.org | wc -l`
    echo
    echo "TODOの数" `grep -rohE '^\*.+?\sTODO' ./*.org | wc -l`
    echo "DONEの数" `grep -rohE '^\*.+?\sDONE' ./*.org | wc -l`
    echo "WAITの数" `grep -rohE '^\*.+?\sWAIT' ./*.org | wc -l`
    echo "WIPの数" `grep -rohE '\*.+?\sWIP' ./*.org | wc -l`
    echo "ステータスの数" `grep -rohE '^\*.+?\s(TODO|DONE|WAIT|WIP)' ./*.org | wc -l`
    echo
    echo "KDOCの数" `ls | grep "\-kdoc\-" | wc -l`
    echo "メモの数" `ls | grep -E "\-kdoc\-.+?_memo" | wc -l`
    echo "本の数" `ls | grep -E "\-kdoc\-.+?_book" | wc -l`
    echo "ドラフトの数" `ls | grep -E "\-kdoc\-.+?_draft" | wc -l`
    echo "エッセイの数" `ls | grep -E "\-kdoc\-.+?_essay" | wc -l`
    echo "コードの数" `ls | grep -E "\-kdoc\-.+?_code" | wc -l`
    echo
    echo "コミット数" `git rev-list --count HEAD`
    echo "最初のコミット" `git log --date=iso --date=format:"%Y-%m-%d+%H:%M:%S" --pretty=format:"%ad" --reverse | head -n 1`
    echo "最新のコミット" `git log --date=iso --date=format:"%Y-%m-%d+%H:%M:%S" --pretty=format:"%ad" | head -n 1`
    echo
    echo "追加ファイル"
    echo "2年間" `git whatchanged --diff-filter=A --since="2 year ago" --format=oneline --name-only --pretty=format: | grep -e ".*org" | sort -u | wc -l`
    echo "1年間" `git whatchanged --diff-filter=A --since="1 year ago" --format=oneline --name-only --pretty=format: | grep -e ".*org" | sort -u | wc -l`
    echo "1ヶ月間" `git whatchanged --diff-filter=A --since="1 month ago" --format=oneline --name-only --pretty=format: | grep -e ".*org" | sort -u | wc -l`
    echo "1週間" `git whatchanged --diff-filter=A --since="1 week ago" --format=oneline --name-only --pretty=format: | grep -e ".*org" | sort -u | wc -l`
    file_changed_count_day "1 day ago" "0 day ago"
    file_changed_count_day "2 days ago" "1 day ago"
    file_changed_count_day "3 days ago" "2 days ago"
    file_changed_count_day "4 days ago" "3 days ago"
    file_changed_count_day "5 days ago" "4 days ago"
    file_changed_count_day "6 days ago" "5 days ago"
    file_changed_count_day "7 days ago" "6 days ago"
    echo
    echo "MDNの引用数" `grep -rohE 'https://developer\.mozilla\.org' ./*.org | wc -l`
    echo "RFCの引用数" `grep -rohE 'https://www.rfc-editor\.org' ./*.org | wc -l`
    
    ビルド時刻 2024-04-16+23:54:22
    .orgファイル数 291
    .orgファイルサイズ 3.4M 合計
    画像ファイル数 29
    画像ファイルサイズ 768K 合計
    
    文字数 1927219文字
    1ページ600文字とすると 3212ページ
    本1冊300ページとすると 10冊
    本1冊10万文字とすると 19冊
    本1冊2cmとすると 38cm
    
    行数 59930行
    60行入るディスプレイだと 998枚分
    14インチディスプレイだと 169メートル
    
    句点の数 12449
    読点の数 7719
    改行の数 38722
    
    外部リンクの数 2390
    内部リンクの数 671
    見出し1の数 1228
    見出し2の数 3334
    見出し3の数 210
    リストの数 4423
    脚注の数 102
    挿入画像の数 29
    
    TODOの数 560
    DONEの数 681
    WAITの数 0
    WIPの数 2
    ステータスの数 1243
    
    KDOCの数 136
    メモの数 21
    本の数 16
    ドラフトの数 10
    エッセイの数 59
    コードの数 40
    
    コミット数 1246
    最初のコミット 2021-05-09+00:22:00
    最新のコミット 2024-04-16+23:50:22
    
    追加ファイル
    2年間 225
    1年間 161
    1ヶ月間 26
    1週間 0
    2024-04-15 0 
    2024-04-14 0 
    2024-04-13 0 
    2024-04-12 0 
    2024-04-11 0 
    2024-04-10 0 
    2024-04-09 0 
    
    MDNの引用数 17
    RFCの引用数 7
    
    (format "Built with: %s" (emacs-version))
    
    Built with: GNU Emacs 27.2 (build 1, x86_64-koji-linux-gnu, GTK+ Version 3.22.30, cairo version 1.15.12)
     of 2023-04-04
    
    (format "Built with: Org version %s" (org-version))
    
    Built with: Org version 9.4.4
    

    Recent activity

    Emacsorg-modeにより時刻記録して、clock-tableとorg-agendaで出力した結果を示す。

    Pomodoro

    ポモドーロ統計の図。

    This Week by Day

    今週の記録。

    Daily report: [2024-04-15 月]

    File Timestamp Tags Headline Time  
      ALL   Total time 0:31  
    20231128T074518–kdoc-59-ecsを使ってサンプルゲームを作る__memo.org     File time 0:31  
        memo Tasks 0:31  
        memo   戦闘部分の設計   0:31

    This Month

    今月の記録。

    Monthly report starting on: [2024-04-01 月]

    File Timestamp Tags Headline Time    
      ALL   Total time 1d 18:01    
    20210904124352-workflow.org     File time 0:50    
        Habit RepeatTasks 0:50    
        Habit, Train   Write Entry   0:50  
    20211127103849-design_doc.org     File time 7:05    
          Tasks 7:05    
            ライティングソフトウェア(Juval Löwy…   7:05  
    20220108110637-linux.org     File time 11:36    
          Tasks 10:01    
            低レベルプログラミング(Igor Zhirkov 吉川 邦夫 吉川…   5:26  
            [[20220108110637-linux.html::*\[\[https://gihyo.jp/dp/ebook/2022/978-4-297-13149-4\]\[Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】 Gihyo Digital Publishing … 技術評論社の電子書籍\]\]][Linuxのしくみ…]]   4:35
          Archives 1:35    
            [[20220108110637-linux.html::*\[\[https://gihyo.jp/dp/ebook/2013/978-4-7741-5517-3\]\[はじめてのOSコードリーディング ――UNIX V6で学ぶカーネルのしくみ Gihyo Digital Publishing … 技術評論社の電子書籍\]\]][はじめてのOSコードリーディング ――UNIX V6で学ぶカーネルのしくみ…]]   1:35
    20231128T074518–kdoc-59-ecsを使ってサンプルゲームを作る__memo.org     File time 22:30    
        memo Tasks 1:40    
        memo   戦闘部分の設計   1:40  
        memo Archives 20:50    
        memo   カメラ追加   2:05  
        memo   UIと分離したい   2:30  
        memo   装備画面のリファクタ   2:55  
        memo   ステータスを追加する   0:50  
        memo   装備でステータスを変更する   7:05  
        memo   説明図を書く   0:25  
        memo   回復薬を割合回復にする   5:00  

    Node Analysis

    Page Rank Title Char Count Commit Percent Last Changed
    61 Emacs 64916 139 3.02 3 weeks ago
    44 Go 206775 139 9.63 3 weeks ago
    38 Rails 56679 69 2.64 1 month ago
    36 Programming Language 29509 47 1.37 2 months ago
    33 Docker 58315 84 2.72 3 weeks ago
    27 Ruby 59766 84 2.78 11 months ago
    23 GitHub Actions 10971 15 0.51 5 months ago
    22 Linux 54326 74 2.53 yesterday
    19 JavaScript 26017 27 1.21 10 months ago
    19 GitHub 5929 15 0.28 8 months ago
    17 Git 6228 23 0.29 5 months ago
    16 C language 17923 24 0.83 2 months ago
    13 org-mode 13915 44 0.65 2 months ago
    12 OSS 10111 17 0.47 1 year ago
    12 Java 1303 6 0.06 11 months ago
    11 SQL 6051 20 0.28 1 year ago
    9 OpenAPI 6599 12 0.31 4 months ago
    9 Rust 57340 45 2.67 2 months ago
    9 TypeScript 12147 23 0.57 1 year ago
    8 System Crafters 2322 11 0.11 1 year ago
    8 Python 4109 12 0.19 11 months ago
    8 CI 990 4 0.05 1 year ago
    7 LSP 1116 3 0.05 9 months ago
    7 RSpec 4270 10 0.2 1 year ago
    7 Emacs Lisp 55114 35 2.57 1 year ago
    7 Nginx 3088 6 0.14 1 year ago
    7 React 10827 16 0.5 7 months ago
    7 MySQL 644 3 0.03 1 year ago
    7 Redis 1312 2 0.06 1 year ago
    7 LISP 2429 26 0.11 1 year ago
    6 TextLint 11189 20 0.52 1 year ago
    6 Org-roam 17869 44 0.83 6 months ago
    5 Simutrans 11253 15 0.52 6 days ago
    5 Shell 17323 45 0.81 4 months ago
    5 game 6535 21 0.3 2 months ago
    5 GNU Guix 17009 49 0.79 5 months ago
    5 EXWM 5779 12 0.27 1 year ago
    5 PostgreSQL 1286 4 0.06 8 months ago
    5 RFC 1837 6 0.09 2 months ago
    4 Windows 685 1 0.03 1 year ago
    4 Scheme 955 9 0.04 2 months ago
    4 AWS 2482 7 0.12 1 year ago
    4 CD 277 2 0.01 2 years ago
    4 Scala 38844 11 1.81 9 months ago
    4 magit 3344 16 0.16 1 year ago
    4 Apache 2779 1 0.13 1 year ago
    4 PHP 2733 11 0.13 5 months ago
    4 HTML 878 5 0.04 2 years ago
    3 Regular Expression 1383 7 0.06 5 months ago
    3 digger 122596 81 5.71 6 months ago
    3 Unicode 652 2 0.03 8 months ago
    3 curl 2356 1 0.11 2 months ago
    3 Kubernetes 8426 18 0.39 1 year ago
    3 parser generator 614 1 0.03 1 year ago
    3 Yacc 330 1 0.02 1 year ago
    3 OAuth 4766 8 0.22 1 year ago
    3 projectile 6509 8 0.3 2 years ago
    3 communication 2884 8 0.13 2 years ago
    2 HTTP 16292 2 0.76 6 months ago
    2 Insomnia 62529 157 2.91 2 weeks ago
    2 assembly language 27663 25 1.29 2 weeks ago
    2 roguelike 1901 6 0.09 1 year ago
    2 Ebitengine 2841 2 0.13 7 months ago
    2 Test 4682 7 0.22 7 months ago
    2 Linter 11314 8 0.53 1 year ago
    2 dotfiles 19081 31 0.89 5 months ago
    2 deploy 3746 6 0.17 1 year ago
    2 Wikipedia 28729 49 1.34 3 weeks ago
    2 GraphQL 15383 15 0.72 1 year ago
    2 C# 312 1 0.01 2 months ago
    2 Make 1789 6 0.08 1 year ago
    2 compiler 2033 3 0.09 3 weeks ago
    2 documentation 3439 8 0.16 2 months ago
    2 Design doc 13071 9 0.61 6 days ago
    2 Terraform 1805 8 0.08 1 year ago
    2 Web Server 10889 15 0.51 2 months ago
    2 Conventional Commits 2113 1 0.1 2 years ago
    2 Common Lisp 50491 22 2.35 1 year ago
    2 GNU 1155 3 0.05 2 years ago
    1 development 6571 16 0.31 9 months ago
    1 Phaser 504 2 0.02 2 years ago
    1 ECS 3200 3 0.15 1 year ago
    1 ej-dict 642 5 0.03 1 year ago
    1 Money 14847 8 0.69 7 months ago
    1 Heroku 1454 5 0.07 2 years ago
    1 Bison 594 2 0.03 1 year ago
    1 Computer Science 14944 21 0.7 2 months ago
    1 Mermaid 4285 7 0.2 1 year ago
    1 GRPC 377 1 0.02 1 year ago
    1 magit-forge 3924 11 0.18 1 year ago
    1 current-word-highlight 856 8 0.04 1 year ago
    1 Smalltalk 241 1 0.01 2 years ago
    1 Haskell 67855 26 3.16 1 year ago
    1 Math 16661 15 0.78 3 months ago
    1 network 5966 15 0.28 1 month ago
    1 qutebrowser 379 4 0.02 1 year ago
    1 Dart 1001 1 0.05 1 year ago
    1 Erlang 238 1 0.01 2 years ago
    1 CSS 1963 7 0.09 2 months ago
    1 create-link 9776 23 0.46 1 year ago
    1 startup 1805 4 0.08 3 weeks ago
    1 Web Browser 1524 8 0.07 2 months ago
    1 EntityComponentSystem 2141 2 0.1 4 months ago
    1 DB Design 10883 13 0.51 1 year ago
    1 memcached 567 2 0.03 1 year ago
    1 Clojure 69839 12 3.25 1 year ago
    1 Flutter 1157 3 0.05 1 year ago
    1 History 20449 88 0.95 yesterday
    1 Surveillance 471 2 0.02 2 years ago
    1 RDBMS 2662 5 0.12 1 year ago
    1 Zig 569 3 0.03 1 year ago
    0 character encoding 4072 2 0.19 6 months ago
    0 CodeIgniter 2474 4 0.12 1 year ago
    0 Learning 24736 31 1.15 9 months ago
    0 100knocks 24512 7 1.14 1 year ago
    0 FORTRAN 374 1 0.02 1 year ago
    0 WebAssembly 375 1 0.02 1 year ago
    0 garbanzo 25831 9 1.2 2 months ago
    0 Raspberry Pi 2521 7 0.12 1 year ago
    0 Julia 468 1 0.02 1 year ago
    0 workflow 32031 321 1.49 yesterday
    0 GeoServer 671 2 0.03 2 months ago
    0 OpenID Connect 4629 4 0.22 1 year ago
    0 Management 2324 2 0.11 9 months ago
    0 gemat 4735 4 0.22 2 years ago
    0 Debugger 2375 2 0.11 8 months ago
    0 Inbox 5405 129 0.25 yesterday
    0 Elixir 528 1 0.02 2 years ago
    0 fish 645 2 0.03 1 year ago
    0 bracket-lib 2326 2 0.11 1 year ago
    0 Cpp 966 1 0.04 6 months ago
    0 template 10454 15 0.49 5 months ago
    0 image processing 1300 1 0.06 3 months ago
    0 Lua 491 1 0.02 2 years ago
    0 bookmarks 155681 98 7.25 3 weeks ago
    0 Elm 323 1 0.02 2 years ago
    0 OBS 866 6 0.04 1 year ago
    0 Archive 27511 15 1.28 1 year ago
    0 Web API 11699 15 0.54 4 months ago
    0 risp 2896 5 0.13 1 year ago
    0 Denote Links 24189 17 1.13 1 week ago
    0 Novel Game 5897 9 0.27 1 year ago
    0 protocol 4759 3 0.22 3 weeks ago
    0 Racket 358 1 0.02 2 years ago
    0 Machine Learning 1150 3 0.05 1 year ago
    0 Simula 399 1 0.02 2 years ago
    0 career 11410 27 0.53 8 months ago
    0 ML 227 1 0.01 11 months ago
    0 Bootstrap 672 2 0.03 1 month ago
    0 project 90549 120 4.22 2 weeks ago
    0 Bucket List 6889 9 0.32 11 months ago
    0 chore 10647 41 0.5 3 months ago
    0 AtCoder 799 2 0.04 1 year ago
    0 nushell 680 3 0.03 2 years ago
    0 WebP 678 1 0.03 10 months ago

    Footnotes:

    1
    1. org-roamが各orgファイルを解釈して、sqliteデータベースを作成する。(Emacs)
    2. 出力したsqliteデータベースのノード・エッジ情報をjsonに加工する。(Python)
    3. d3.jsにデータを入れて、無向グラフを描画する。(JavaScript)
    2

    Gitリポジトリをコミットごとに調査するスクリプトでデータ取得。GNU Plotでグラフ画像を描画している。