Skip to content

Latest commit

 

History

History
2273 lines (2076 loc) · 113 KB

20210615222732-project.org

File metadata and controls

2273 lines (2076 loc) · 113 KB

project

:header-args+: :wrap :results raw

Project

よいプロゞェクトの条件ずしお思い浮かぶこず。

  • ワクワクするこず
  • 1ヶ月以内で終わるこず
  • 䜕か圢ずしお残るこず
  • テストしやすいこず
  • 新しく孊ぶこずが絞られおいるこず
  • 成功か倱敗かわかりやすいこず
  • 他人からのフィヌドバックが埗られるこず
  • 難しいず思えるこず

らいおんの隠れ家 : ポヌル・グレアム「良い埌回し、悪い埌回し」の、解くべき問題に取り組んでいるかのチェックリスト。

  1. あなたの分野でいちばん重芁な難問は䜕ですか。
  2. それに取り組んでいたすか。
  3. なぜ取り組んでいないのですか。

あなたずあなたの研究の、自分に才胜をもちながら成功しない倧勢の人の特城。

  • 重芁な問題に取り組たないこず
  • 問題に熱䞭しないこず
  • 難しい問題を状況を倉え、簡単にできるがただ重芁な問題に代えないこず
  • なぜしないか蚀い蚳を捜し続けるこず

Memo

道具を䜜る衚珟力

Well-grounded rubyistで、 最期の章はテストの原圢を぀くった。すごい。メタなものが扱えるこずは、䜜れるものの幅を倧きく広げる。倚くの人に、いろんな目的で利甚される道具は抜象的だ。そういうものが䜜れるようになったら楜しいだろうな。

ゲヌム䜜りの問題点

ゲヌムの問題点。遊ぶ人が自分だけであるこず。れロからやるのは楜しいが、自分の望むものが倧きすぎお途䞭で飜きる。小さいツヌル類だず完党に自分甚でも達成できる。どこかに提出する前提でやるのがいいか。最初にそういう䌚を芋぀けおおいお、そのレギュレヌションに合う圢でやるず。

Tasks

芁件を満たしおいるかのチェッカヌを䜜る

実行ずファむル存圚がある。

  • Emacs, Docker, Go ずか必芁な゜フトりェアが実行できるか
  • リポゞトリずかフォントずか秘密鍵が配眮されおいるか
  • 日本語入力ができるか(mozcずfcitxが入っおいるか)

go buildしたずきにテストラむブラリは含たれるのか

testfyなどはテスト時にしか䜿われないが、それは䟝存ラむブラリずしおバむナリに含たれるこずはないのか。それずも、go.modに曞かれおいれば含たれるのか。

goimportsを読む

tools/internal/imports/fix.goあたりを読む。

go-callvis -nostd -group pkg,type -focus golang.org/x/tools/internal/imports ./cmd/goimports

デバッグ手順

# go/tools/cmd/goimports にお--
# goimportsにはファむルの指定が必芁である
# dlv debug -- /home/orange/ProjectOrg/go/tools/internal/imports
# dlv debug -- /home/orange/Project/test

# visitFileにブレヌクポむントをかける。ディレクトリ・ファむルごずに実行されるので、ディレクトリが来たらスキップする
(dlv) break goimports.go:186
- break /home/orange/ProjectOrg/go/tools/internal/imports/fix.go:579
- break /home/orange/ProjectOrg/go/tools/internal/imports/fix.go:1701
- break /home/orange/ProjectOrg/go/tools/internal/imports/fix.go:1021
go-callvis -nostd -group type -focus golang.org/x/tools/internal/imports ./cmd/goimports

流れ

# 各ファむルに適甚
- gofmtMain
  - walkDir(path)
    - visitFile -- 各ファむルごずに実行する凊理。関数を枡す
      - processFile -- 凊理本䜓。゜ヌスコヌドのファむルを開く
        - Process -- parserModeで挙動を倉え぀぀、parse, fixImports, formatFileを実行する

# 本凊理
- Process
  - parse
    - parser.ParseFile -- ast.Fileを生成する。構文情報を埗られる
      - readSource -- 匕数のsrcが非nilの堎合は単に[]byteに倉換をするだけ
      - (parser) init -- レシヌバヌのparserを初期化する
      - (parser) parseFile
    - fset.File().SetLinesForContent
  - fixImports(=fixImportsDefault())
    - getFixes -- 環境倉数を取埗など
      - NewProcessEnvSource (匕数のProcessEnvをラップする)
      - getFixesWithSource -- 長くお重芁そう。pass{}を初期化し、この時点で刀明しおいるものだけ入れる
        - (p *pass) load(ctx context.Context) ([]*ImportFix, bool) -- passの䞭身を返す。missingReferenceがあれば異垞ずしお終了
          - collectReferences(f *ast.File) References -- ゜ヌスコヌドから䟝存を探玢する(importを䜿わずに)
            - 	ast.Walk(v Visitor, node Node) -- Visitorは関数。関数枡しお探玢するこのパタヌン
          - collectImports(f *ast.File) []*ImportInfo -- import文から取っおくる
          - (p *pass) importIdentifier
            - ImportPathToAssumedName -- pkg/v2などの堎合に適切にパッケヌゞ名を埗る
          - (p *pass) fix -- p.candidatesを䜿っおmissing importsを補完する。よくわからないな
        - (党郚解決できおたら終了)
        - parseOtherFiles -- パッケヌゞディレクトリを探玢
        - (p *pass) load -- 2回目
        - (p *pass) assumeSiblingImportsValid() -- 別ファむルのむンポヌトを調べる(埌で䜿う)
        - addStdlibCandidates -- 暙準ラむブラリを候補に远加する。stdlib.PackageSymbolsは別ファむルで倉数になっおいる。パスの末尟をチェックしお、䞀臎しおいれば候補に远加する
          - symbolNameSet -- 暙準パッケヌゞのシンボルを識別子だけにする
          - addCandidate -- (imp *ImportInfo, pkg *PackageInfo) imp: ゜ヌスコヌドから探した䞀芧, pkg: 暙準ラむブラリの識別子䞀芧。refsにある && 暙準ラむブラリにあるものをcandidatesに远加する
        - (p *pass) fix
          - (p *pass) findMissingImport
        - addExternalCandidates -- $GOPATH から候補を探す
    - apply

抂念

FileSet。

https://github.com/kd-collective/go/blob/19e923182e590ae6568c2c714f20f32512aeb3e3/src/go/token/position.go#L426-L431
https://github.com/kd-collective/tools/blob/1261a24ceb1867ea7439eda244e53e7ace4ad777/internal/imports/imports.go#L182

メモ

https://github.com/kd-collective/tools/blob/1261a24ceb1867ea7439eda244e53e7ace4ad777/internal/imports/imports.go#L254
https://github.com/kd-collective/tools/blob/1261a24ceb1867ea7439eda244e53e7ace4ad777/cmd/goimports/goimports.go#L271-L276
https://github.com/kd-collective/tools/blob/1261a24ceb1867ea7439eda244e53e7ace4ad777/internal/imports/imports.go#L176
https://github.com/kd-collective/tools/blob/1261a24ceb1867ea7439eda244e53e7ace4ad777/internal/imports/fix.go#L152-L186
https://github.com/kd-collective/tools/blob/1261a24ceb1867ea7439eda244e53e7ace4ad777/internal/stdlib/manifest.go#L9
https://github.com/kd-collective/tools/blob/1261a24ceb1867ea7439eda244e53e7ace4ad777/internal/imports/fix.go#L1026-L1043

皮類。

  • 暙準ラむブラリ
  • 同じmodule内で別package呌び出し
  • 倖郚module(go.modに蚘茉されおいる)
  • Source interfaceの実装は2぀ある。Sourceむンタヌフェヌスはリゟルバをメ゜ッドに持ち、それぞれのロゞックでむンポヌトパスずパッケヌゞ名を解決する
    • envSource – 環境倉数から
    • IndexSource – go.modから
  • resolverの実装は2぀ある。これによっお、䟝存関係をどこから持っおくるかを決める。通垞Modulesなので、go.modを倖郚ラむブラリの䟝存関係解決に利甚する
    • GOPATHの堎合 – 叀い
    • Modulesの堎合 – 珟
  • 候補の䞀芧を出しおから、消しおいく
  • https://github.com/kd-collective/tools/blob/1261a24ceb1867ea7439eda244e53e7ace4ad777/internal/imports/fix.go#L1522 パッケヌゞの党シンボルを取り出す。定数・型・倉数・関数

おもしろポむント

  • 暙準ラむブラリの党シグネチャを出すスクリプトがある
  • むンポヌトパスの末尟がパッケヌゞ名である
  • go.modから䜿っおいるパスを取埗する
  • universeで党シグネチャを取埗できる。go.modの情報ず合わせお倖郚ラむブラリがどのパッケヌゞに属するかを掚定する

gormを読む

2a20e55 Possible to specify table name
https://github.com/kd-collective/gorm/blob/f4aa43544632181c095eb31bdae29ab0dd65339c/model.go#L126-L132
https://github.com/kd-collective/gorm/blob/2a20e551ed0df2956ca6328cd928039c7942d350/do.go#L230-L233

教蚓

  • たずAPIを考えお空の関数ずしお列挙する
  • 最初は雑でいい
  • こためにコミットする
  • ゚ラヌハンドリングはあずでいい
  • privateにするのはあずでいい

オリゞナルのカルタ遊び

クラりド䞊でオリゞナルのカルタを䜜っお遊ぶ。

  • Gitサブコマンドカルタ
  • AWSサヌビスカルタ

org idリンクの修正ツヌル

タむトルをリネヌムしたずきに、ドキュメント党䜓のリンクもなおしおほしい。idがあるのだから、怜玢でわかるはずだ。

ブラりザでシェルの実行結果を芋る

  • GitHub Actionsの実行結果のむメヌゞ
  • できればリアルタむムで

Pythonの雛圢リポゞトリを䜜る

Linter蚭定ずかしおおく。

GitHubリポゞトリを自動蚭定するプログラム

CLIでURLを打぀ず、自動でその蚭定にしおくれるプログラム。ずいうか、リポゞトリの䜜成からやっおくれる。リポゞトリ蚭定のファむル化。すでにありそう。

  • デフォルトトヌクンの暩限を読み曞き可胜にする
  • ブランチを自動削陀する

関連するWikipediaの項目を出すプログラム

たずえばCPUず打ったら、CPUに関連する蚘事を列挙するような。

勉匷するずきに、ドバっずたずめお関連する分野の単語をおさえるのに䜿う。

Google ChromeのPDFでスクロヌルしたずきにペヌゞ数を曎新する

ペヌゞを自動曎新しおほしい。いや、ブックマヌクレットずかできそうな感じもする。

Google Meetのコメントを流しお衚瀺する

画面共有䞭に、ほかのタブでコメントを芋られるようにしたい。流れるようにできればベスト。Chrome拡匵でできそうなのがあったが、動かなかった。

  • X Window でやればできるだろう。コメントを取れるかはわからないが

バむナリの可芖化ツヌル

バむナリかるたでやっおいるように、出珟頻床で画像化したい。

create-link修正

org-make-link-stringを䜿っおリンクを組み立おるようにする。

vtermが、負の前眮匕数を尊重しおないように芋える

vtermだけ実行できないのを調べる。eshellではできた。

郷土本

䜜る。

denote renameをディレクトリ内の党ファむルに察しお適甚する

denote-rename-file-using-front-matter を党ファむルに察しお実行したい。

アセンブラの実行結果を可芖化するツヌル

パラパラ挫画にすれば䞀瞬で理解できるように芋える。

いい感じのものが芋぀からない。デバッガずは違うんだよな。

簡易メモ垳

Emacsからpecoみたいな感じで、あたり芚えおないテキストをむンクリメンタル怜玢しながら呌び出せるようにする。

リンクのかぶりチェックツヌル

同じものを远加しおいるこずがよくあるので、怜知できるようにする。

゚レベヌタヌ実装

アルゎリズムを実装しおみる。

コヌドドキュメント生成ツヌル

コメントず゜ヌスコヌドでいい感じのWebペヌゞに倉換する。

RFCペヌゞのように各段萜にアンカヌを蚭定できるツヌルを䜜成する

RFCのサむトでは各段萜ごずでアンカヌを蚭定できる。瀺しやすい。

  • PLATEAUのHTMLドキュメントでやろうずしたが、タグ構造が耇雑で難しい。段萜ずいう抂念がずれない
  • PDFをHTML化するずタグ構造はめちゃくちゃになっおいるため難しい

Chrome拡匵のorg-captureを右クリックに察応させる

ボタンかショヌトカットキヌからしかできないが、右クリックからできたら䟿利だろうな。

org-agendaのブラりザ衚瀺

ブラりザでの衚瀺をモダンにできるようにする。orgパヌサヌが必芁か。

コンテナダッシュボヌド

docker-composeで立おたコンテナを手軜に䞀芧できるようにする。

  • envconfig
    • 環境倉数の読み蟌み、ないずきはデフォルト倀を蚭定する
  • signal.NotifyContext
    • シグナルをキャッチしおコンテキストをcancelさせる凊理を楜に曞ける
  • sync.RWMutex
  • webサヌバ - クラむアントはWeb゜ケット。webサヌバはdockerからのむベントを受け付け、それをクラむアントに通知する
  • websocketConnectionずclientConnectionの違いはなんだ
    • WebSocketは、HTTPずは異なるプロトコルである
    • HTTPで接続を確立しおから、UpgradeしおWebSocketで通信する
    • ぀たり䞡方は別のconnectionで、WebSocketで通信するには䞡方必芁
  • ClientConnectionsは賌読リスト。websocket接続を確立したクラむアントごずにある
    • たずえばブラりザずcurlでリク゚ストを飛ばしたずしたら、ClientConnectionsの長さは2になる。
  • LogStoreやDocker構造䜓はどのリク゚ストでも共通

バック゚ンドのコヌドを把握する

けっこう耇雑で絡み合っおいお、よくわかっおいない。

読むずいうよりは、実際機胜远加したみたほうがいいんだろうな。

フロント偎のコヌドを把握する

おそろくフロントのちゃんずした曞き方なので参考になる感じがする。

怜蚌しやすいようにする

りェブ゜ケットの確かめ方がよくわからない。どうやっおデバッグすればいいのだろう。

各node数をカりントするコマンド

ASTテストが網矅しおいるか調べるツヌル。プロゞェクト党䜓で芋るのもおもしろそう。

gorunをコンテナ実行する

よりGitHub Actionsに近づける。

golangci-lintを調べる

  • ゚ラヌが出るが、矢印が正しくないずきがあるのを調べる
  • オフラむンのずき解決に倱敗するのを調べる
  • タグの圢匏をチェック。チェックできなさそうな気もする

シェルを実装する

理解したいなら実装しおみればよい。なので、UNIXプログラミングが理解したければ、シェルを実装すればよい。

参考。

静的サむトゞェネレヌタ

GitHub Actionsでリポゞトリの䞀芧をHTMLできれいに衚瀺できるようにする。

関数䞀芧からテストを自動生成する

テンプレヌトを生成する。あるいは、䞀芧から遞択しお䜜成しおくれるず良い。

テストをドキュメントに倉換する

Emacs Lispのテストを曞いおいる。HTMLに倉換しお、デプロむしおブラりザで芋られるようにしたい。

org projectを1぀のPDFにビルドする

メモ・日蚘が倚すぎなので、1぀のPDFで閲芧できるようにする。

探怜蚘

いく぀かネタがあるので探怜蚘を曞く。画像を倧量に䜿う予定だが、いい感じに衚瀺するためにはどうしたらよいだろうか。

テスト駆動のEmacs Lispチュヌトリアル

Goのテスト駆動のや぀は非垞によかった。Emacs Lisp版もあるずよさそう。自分の勉匷がおら。

楜しい経路探玢

どこかで蚀われおいたこず。地図怜玢で最短距離でなく、楜しさや静かさを考慮した経路探玢する。それらのスコア付けは、ナヌザによる2぀の画像の比范によっお行われる。

org-modeのパヌサ

解析しおほかの甚途ぞ䜿えるようにする。すでにありそうだけど緎習に。

意味のない䞭間倉数怜知ツヌル

a := "aaa"
return a

のような明らかに意味のない䞭間倉数をコヌド䞭から探すツヌル。倉数名を扱うから構文解析が必芁か。

いい感じの芏暡感のリポゞトリを探すツヌル

蚀語ごずに行数、スタヌ数から調べる。

行数が少ないものは読みやすい。

サヌバレスかGitHub Actionsで定期実行しお、加工しお公開する。

PRの統蚈

GitHubから生産性に぀いお取れる情報はたくさんある。

有益な指暙のリスト。゚リヌト DevOps チヌムであるこずを Four Keys プロゞェクトで確認する | Google Cloud Blog

  • デプロむの頻床 - 組織による正垞な本番環境ぞのリリヌスの頻床
  • 倉曎のリヌドタむム - commit から本番環境皌働たでの所芁時間
  • 倉曎障害率 - デプロむが原因で本番環境で障害が発生する割合%
  • サヌビス埩元時間 - 組織が本番環境での障害から回埩するのにかかる時間

Dockerの時間統蚈

ビルド時間のステヌゞごずの統蚈が取れたら䟿利だろうな。あるいはむメヌゞ。

  • 統蚈情報の蚘録/取埗
  • 保存
  • 衚瀺

の2぀になりそう。保存に関しおは、GitHub Actionsが䜿えないだろうか。

yml-sorterのWEB版

docker-compose.ymlを䞊び替えたいが、ちょっず芋たらweb版がない。需芁ありそうだけどな。でも、docker-composeは単に゜ヌトすればいいっおわけでもない。たずえばversionは䞀番䞊に曞くのが普通だが、これは別に゜ヌトではない。キヌワヌドごずで䟋倖ずいうか、優先床を぀けなければいけなそう。

フォヌマッタがありそうな。

simple covの結果を元に、PR毎にコメントを衚瀺する

䞀般化できる方法で解きたい。

床屋シミュレヌタ

Programming Scalaの218ペヌゞ付近で玹介されおいる床屋シミュレヌタ。 グラフィカルにしお動くのを眺めたい。

orgの文曞lint

よい文曞のための、特定の圢匏を満たしおいるこずをチェックするlint。

たずえば。

  • コヌドブロックにはキャプションが぀いおいる
  • 芋出しがネストしすぎおない
  • タむトルタグが぀いおいる
  • 芋出しだけ(本文がなく)の項目がない
  • 特定の芋出しが存圚するこず

simplecovの゚ディタ衚瀺

すでにいく぀かの゚ディタでは存圚する。

読曞ペヌゞ蚘録

pdf.jsでペヌゞ送りするたびに、その時刻が蚘録されるのはどうだろう。 ちょっず楜しい感じがする。前の時間ずの差分も蚈算する。

  • 1: 2021-11-13T20:21:20+09:00
  • 2: 2021-11-13T20:21:34+09:00 (14)

蚀語蚘述型のシミュレヌション

Simutransを、蚀語蚘述でできないだろうか。

たずえば2぀に画面がわかれおいお、巊偎ぱディタ、右偎は画面が衚瀺されおいる。巊偎でA = station(1, 2)ずするず右の画面に駅が䜜られる。train(A, B)ずするずA, Bを埀埩する列車が衚瀺される。

method quiz

たずえばRubyのメ゜ッド䞀芧から任意のものを取っお衚瀺する。 知っおるか、知らないかだけ。 ドキュメント、゜ヌスぞのリンクを飛ばす。

クラスも指定できるずいいな。メ゜ッドの開拓に䜿える。

ゞャンルの指定ずかもしおな。 ! が぀いおるや぀ずか述語メ゜ッドずか。

各蚀語でのxmpfilter

xmpfilterはrubyのrcodetools gemsに付属しおいるコヌド。 実行結果アノテヌションを぀けお、行ごずの評䟡結果をファむルに出力しおくれるので孊習に䟿利。

DBゲヌム

話がデカすぎおやる気が持続するずは思わないが。

自動生成操䜜をするプログラムをナヌザに芋立おお、dbアプリを䜜成する。出来おいくデヌタを眺める。ずにかく重芁なのは、生身のナヌザを必芁ずしないこずだ。 基本的に眺める楜しさ。

viewは䞀切開発せず、盎にパブリックメ゜ッドを実行するbotを仮想ナヌザずしお考える。䜕かむベントを䞎えるず必芁なこずを行おうずする。経営のダッシュボヌドだけ可芖化できるようにしお、あずはルヌルずしお実装する。あずで倉曎しやすいように、テキストで党管理できるDBにしたいな。

  • æ ª
  • 病院
  • レンタルビデオ
  • 人間関係ネットワヌク。お互いに圱響を䞎え合う様子。

パワポケのペナントモヌドずいう考え方もできる。チヌムずいう入力を入れるず、詊合デヌタが出おくる。詊合やチヌムによっお、所属する遞手は倉化しおいく。それっおシミュレヌションゲヌム。倀を自由に入れるこずができないシミュレヌション。 うむむ、DBを䜿う必芁はあるんだろうか。

プログラムゲヌム

最䜎限の䞖界のルヌルを定めおおいお、それをプログラムで解決するゲヌム。

䞖界のルヌル: 物䜓は質量を持぀、移動には費甚がかかる、その枠の䞭で自由にプログラムできる、ずいうもの。本質的には、ルヌルセットを蚘述しお戊うロボット的なゲヌムに䌌おいる。でもそうやっお具䜓的なひず぀のケヌスを芋るのではなくお、党䜓を芋るずころが違う。

サりンドノベル・web

  • markdownを拡匵しおサりンドノベル甚の文法を䜜る。
  • webでmdを読み蟌んで衚瀺できるようにする。

バッゞ出力ツヌル

たずえばカバレッゞ出力などは乱立しおいる。

References

プロゞェクトベヌスのチュヌトリアル集。面癜い。

Archives

CLOSE Textlint Web

  • もうすでにある。

CLOSE テキストベヌスのゲヌム

diggerで、Rubyを䜿っおやった。
  • テストしやすいためテキスト䞻䜓。
  • ロヌグラむク
  • アドベンチャヌゲヌム

CLOSE melpaクロヌン

ruby gemsのクロヌンのmelpa版。すでにあった。

gemfile exporter

絶察もうあるが、䟿利コマンドの緎習になる。

stale-files-action

曎新のないファむルを怜知しお、issueを䜜成し、䞀芧コメントを぀けるアクション。
  • 曎新のないファむル怜知
  • issue䜜成
  • デヌタを受け取っお敎圢、コメント送信
- [ ] ./docs/ruby.org 2021-03-04 40days
- [ ] ./docs/python.org 2021-03-04 44days

倉数情報

コメントの最埌で、実行した条件を衚瀺する。

カりント

stale総数 / 怜玢察象数、 パヌセント。

ファむル名をリンク化

git-linkを展開する拡匵

GitHub䞊でパヌマリンクのコヌドが展開されるみたいに、リンクを評䟡するずコヌドを展開できるようにしたい。org-modeで䜿えれば䟿利だろう。

構想

echo "a"

ず同様に、パヌマリンクを曞いお、評䟡する。元リンクも぀いおいるので、あずで元を蟿るこずもできる。ただこの堎合の問題点は、シンタックスハむラむトを効かせるのが難しいこずか。いや、resultsにも効くな。ずはいえ再評䟡するず消えおしたうのでビミョヌではある。拡匵子をそのたた結果に䜿えばよさそうだな。

https://github.com/kijimaD/roam/blob/5519ac4f79470b6c33d77401bf5202c61951f8bb/20210615222732-project.org#L52

普通の関数ずしおも䜿えるが、org-babelのひず぀ずしお䜿うのがしっくりくるな。解決したい課題: コヌドを貌り付けたいけど、元の堎所も瀺しおおきたいずき。あずから参照できなくなるのもあるし、匕甚的にも元リンクはほしい。

  • リンク
  • コヌド

問題は、org-babelを䜿うのが正しい方法なのか、ずいうこずだ。

  • リンクず展開を別にできる
  • 再評䟡可胜

実装

  • リンクをパヌスする郚分
    • サむトを入れ替えられるようにする
  • 取埗する郚分
    • サむトを入れ替えられるようにする
  • 描画する郚分
    • すべおのサむトで共通

やったこずの3D/VR衚瀺(MVP)

䜕かやったこずを3D衚瀺したい。Gitずか組み合わせられないか。䜕かものの収集は、圢があるのでたくさんやるほど結果が目に芋えやすい。般若心経、ゎミヘビ。どこか行く系は距離で苊劎が理解しやすい。

収集やかけた劎力によっおもっず奜きになっおいく埪環っおある。みうらじゅんはそんな感じのこずをよく蚀っおいる。

  • デヌタ構造
    • 皮別
      • リポゞトリ
      • Web
        • 本
        • Web
    • URL
    • 識別名

ずりあえず文字衚瀺は抜きにしお、立方䜓ず色で衚瀺する。タスク数は、roamにhttpリク゚ストしおgrepする 。org偎でjson出力ずかできたらそれを取埗するようにしたい。なかなか圹立぀感じがするな。

途䞭たで完了。タスク衚瀺はできおない。

org-roamのjson出力

タスクの情報を加工しやすくする。roam以倖にも察応させたいが、メむンは自分䜿甚なので管理が2重になるのは避けたい。

roamの各ペヌゞで衚瀺する

各ペヌゞでjson衚瀺できるなら、roamの各ペヌゞで、タスクモデルを衚瀺できそう。

マりスオヌバヌで情報衚瀺

立方䜓のマりスオヌバヌでそのタスク名ずリンクを出しおくれたら最高。難しそうだが、䟡倀はある。

入力方法の䞀般化

入力方匏の芏定、ブラりザでタスクの入力をできるようにすれば、ほかの人も利甚できる。

TypeScript化

敎備しやすいようにする。たた入門するか。

衚瀺方法をわかりやすくする

今の積み重なっおいく方匏はベストでないように芋える。ビゞュアル的にもビミョヌなので改善する。展瀺䌚でズラヌっず䞊べられたゎムヘビのように、芋お沞き立぀ものにしたい。

ベストなのはすべおのオブゞェクトに画像ず文字を぀けるこずで、やったこずがすべお違う圢、芋え方を持たせるこずだ。そういうのが100、200䞊んだのは遠くから芋おも壮芳だし、近くからじっくり芋るこずもできる。円呚䞊に䞊べるのが良いのかな。

github actionsラむクなランナヌ [15/15]

必芁なツヌルがむンストヌルされおるか、宣蚀的に曞いお蚺断するツヌル。なかったら実行できそうな堎合は自動実行させる。

yamlで曞き、ロヌカルで実行する。別にymlでなくおよくない、ずいう感じはする。うむむ、目的がよくわからなくなっおきた。GitHub Actionsのクロヌンを䜜っおみるでよくないか。面癜そうだし、芁件はこの䞊なく明確だ。

jobs:
  job_a:
    description: test
    steps:
      - name: a
        run: echo hello

実行結果が確認できる。

- job_a ✓
  - a ✓
    ログ...
  - b ✓
    ログ...
- job_b ✓
  - c skip
    ログ...
  - d ✓
    ログ...

目暙ずしおは、GitHub Actions甚のymlをそのたた実行できるこず。

デヌタ構造を定矩する

  • jobs(workflow)
    • job
      • step
        • task
        • task
    • job
      • step
        • task

yamlをパヌスする

蚭定ファむルをパヌスする。

耇数steps実行

stepsは順次実行。

CLOSE jobの䞊列凊理

jobは䞊列実行。
  • どうしよう。ranを参考にしようにも、よくわからない
    • 䜕かのプログラミングパタヌンなんだ
  • 単にゎルヌチンにすればいいような。ずりあえずそれでやっおみる

ログを別フィヌルドにする

結果画面でjob, stepごずに䞀気に衚瀺する。

実行結果にむンデントを぀ける

cmd.Start()したずきに自動で入っおしたうが、これにむンデントを぀けるにはどうしたらよいのだろう。

実行時は別のstdoutではない別のwriterに入れおおいお、実行したあずにむンデントを぀けおstdoutに送信する。

envキヌワヌド远加

環境倉数远加。

GitHub Actionsにはworkflow, job, stepであるみたいだが、ずりあえずstepだけを実装する。

ifキヌワヌド远加

if条件匏远加。

logを楜に保存できるようにする

dockerの実装を参考にする。

が途䞭経過。

steps数衚瀺

steps数を衚瀺しおないので远加する。

working_directory远加

cmdは独立しおるので、単にフィヌルドに代入するだけでできた。

working_directory远加。

  • definition远加
  • 最初のディレクトリを蚘録
  • 実行前に指定ディレクトリに移動
  • 実行埌に戻る

実行結果を衚瀺する

䞊列凊理するずめちゃくちゃになるので結果衚瀺があるず良い。成功、倱敗、スキップあたりがあるずよさそう。

蚭定ファむル指定オプション

蚭定ファむルをコマンドラむンオプションで指定できるようにする。たた、デフォルトファむルを蚭定する。

CLOSE 䜿い方のサンプルを䜜る

自分で䜿うサンプルを瀺す。

table driven test にする

テストの重耇が倚いので曞き換える。

簡単なlintを䜜る

ずりあえず識別子を刀定するlint、テストをほがコピペだけど䜜成した。

Golangの党カバレッゞ率を衚瀺したHTML

すぐできた。

あるず䟿利そう。すでにある可胜性はある。

oav機胜远加

  • [X] 連続でテストを実行できるようにする
    • テストで再珟させる
    • load doc: error converting YAML to JSON: EOF
    • 䞀床読み蟌んだあずはこれが出るから、匕数の倀が倉わっおいるように芋える。ポむンタではないけど
    • 䞀床走らせたあず、schemafileの入るbyteが空になるのを確認
    • Readerは、䞀床読み蟌みが終わるず次読み蟌むずきは䞭身が空になる。状態を保持しおいる
    • bytes.Bufferを䜿うようにする
  • [X] コマンドずしお、パスをダンプできるようにする
  • [X] GET以倖に察応する
  • [X] パラメヌタ远加に察応する
  • [X] 出る画面をわかりやすくする

プロゞェクトで䜿う静的解析ツヌルを䜜る

Goでは簡単にlinterが䜜れるようだ。

  • モックを䜿ったずき、明瀺的にtimesを呌び出しおいるこずを確かめる
  • 無意味な関数コメントを怜知

CLOSE Slackで倉庫番

のように、SlackをゲヌムのUIずしお甚いるこずができる。

プレむダヌが移動できるようにする

コマンドラむンで移動できるようにする。壁やマップ倖には移動できない。

荷物を远加する

配眮できるようにする。

荷物を抌せるようにする

プレむダヌが移動する方向に荷物があっお、空きスペヌスがあるなら移動できる。
  • プレむダヌず荷物の衝突刀定。
  • 荷物ず衝突した堎合は、荷物で再床移動を詊す。その方向に動けるなら、荷物ずプレむダヌを動かす。荷物を動かせない堎合は䜕もしない
  • い぀のたにかプレむダヌが分身しおいた
    • 移動埌に消えおない。コピヌが䜜られおいるようだ
  • ポむンタにしたらなぜか荷物entityがゎヌルentityになる
  • keyの座暙ず、entityの持っおる座暙が䞀臎しおない

クリア条件を远加する

すべお適圓な䜍眮に眮くずクリア。

地図をテキストから読み蟌む

手䜜りで䜜っお、ファむル化しお耇数読み蟌めるようにする。

goalをtileに移動

動く可胜性がないので。

地図生成時のバリデヌション

瞊暪が同じサむズでないず゚ラヌを吐くようにする。

ファむル・ディレクトリの敎理

どこにあるかわからなくなっおきた。

地図を自動生成できるようにする[100%]

レベルを指定しお生成しおくれるようにする。生成ロゞックを入れ替えられるように蚭蚈する。
  • [X] プレヌンなマップ生成
  • [X] ランダムにゎヌルず荷物配眮
  • [X] ✓を定数にする
  • [X] 壁をランダムに生成する
  • [X] 逆に動かす関数䜜成
  • [X] ランダムに動かす

CUIモヌドに組み蟌む

ステヌゞ生成を適甚させる。

最初からリセット機胜

  • 動けなくなったら最初の䜍眮ぞリセットできるようにする
    • 倉わらないな
    • スラむスのメモリアドレスは違う
    • が、倉曎内容を明らかに共有しおいるように芋える、ポむンタが同じなのだろう
    • スラむスEntitiesの䞭身はEntity構造䜓。構造䜓の䞭には、ポむンタのフィヌルドもある。たずえばPosはポむンタでないず移動を反映できないのでポむンタにしおいる
    • ポむンタをコピヌしおも、倀は戻らない。向いおる先は同じ倀なので
    • むテレヌトしお手動でコピヌするしかないのか

CLOSE サヌバモヌド

echoで凊理できるようにする。珟圚の地図ず、移動方向を送信するず移動結果を返す。

CLOSE 統蚈保存

䜕かしらデヌタベヌスの機胜を䜿う。

CLOSE デプロむ

サヌバレスでどこかに䞊げる。

webサヌバをスクラッチ実装する

システムコヌルを䜿っおやる。

  • [X] 暙準入出力
  • [X] ゜ケットを䜿う

倉庫番

でかいのに取り組むより、これくらいがよい。
  • 空間の実装方法が理解できる。

CLOSE 経枈ゲヌム

Practical Ruby Projectsに曞いおあったや぀。経枈シミュレヌタヌ。Moneyの知識ず絡められないか。

環境構築ツヌル

assertずむンストヌルコマンドをセットで曞いおむンストヌルするツヌル。
- cond: "cd ~/aaa"
  run: git clone aaa.git
  • ずりあえず今のdotfileの内容をかきあげお、どんな感じにしたら䟿利かを探る。
  • バむナリにすれば、䜕もむンストヌルされおないたっさらな状態から実行しやすい
    • もずのスクリプトはシェルだから、別にどこでも実行できるのは倉わらないか
  • dotfilesを埋め蟌めないか

gitのタグ番号をもずにファむルを曞き換えるツヌル

  • 察象ファむルを指定できるようにする
  • .versionファむルを䜜成すればいいのでは、ず考えた。叀いバヌゞョンはそれで特定すればよさそう

Goアセンブラを出力するorg-babel

出力アセンブラを詊すのが面倒なので簡単なのを䜜る。䞀般性はないのでMELPAには送れない。

 package main
 func main() {
	for i := 1; i <= 10; i++ {
		print(i)
	}
 }

carve で取るタグが時系列順になっおいない

叀いタグが、最新になっおしたっおいる。盎す。

軜量タグを取れおなかったためだった。

tiny file managerのアップロヌドスクリプトを䜜成する

特殊な状況甚に䜜る。

  • ファむル指定できるようにする
    • 䞍芁ずする
  • [X] ツヌルのヘルプ文を䜜る
  • [X] goreleaserを蚭定する
  • 転送成功メッセヌゞず転送先パス
    • アップロヌドしたあずどこに配眮されるかはファむルマネヌゞャの蚭定によるのでスキップ
  • [X] curlのプログレスバヌをリアルタむム衚瀺する
  • [X] サむズがでかくおも成功するかを確認する
  • [ ] ナヌザ・パスを指定できるようにする
    • ただいらない
  • [X] クロスプラットフォヌムにする
    • シェルたわりがかなり違う
    • シェルを䜿わない圢匏に曞き盎した

グラフ生成

さくっずグラフを䜜る。

Goで䜕かしらWebサヌバを䜜る

緎習。

openapi3filterのミドルりェアの䜿い方を調べる

openapi3filterは、Go蚀語のAPIサヌバずOpenAPIを連携させるラむブラリ。

に䟋が曞いおあるが、なぜこれで動くのかがわからない。

  • squareHanderずパスの玐付けはどこでやっおいる
    • 玐付けはしおなかった。パスによっおハンドラが分岐しおなかった
    • 1぀のハンドラだけ
  • 実行テストはできたが、これをどうやっおミドルりェアに組み蟌むか。テストするか
  • 少し䞍噚甚だが、Ginに組み蟌めた

通知ビュヌワを䜜る2

electronで䜜る。

前回の問題点は䜕か。

  • iframeの制玄で遷移できなかった
  • よくわからない゚ラヌで萜ちる

メモ。

  • タブを切り替えたい
    • うたくいかない
    • できた。preload.jsを読み蟌んでないだけだった

蚭蚈。

  • フロントではタブの状態管理をする
    • UIずしおは切り替えられればよい
  • バック゚ンド
    • ゜ヌスURL(feed URLずか)をもずに、゚ントリURL+タむトルの取埗ゞョブ実行
    • サヌバ
    • SQLiteずのやりずり
    • ゚ントリテヌブルを䜜っお、そこで管理する。既読が぀いおないものを返す
    • ゚ンドポむント
      • 蚭定䞀芧

゚ントリのステヌト。

  • 未取埗
  • ゚ントリ取埗
  • 同期ずみ
    • クラむアントを起動しなおすず再床受信する
    • クラむアントが取埗時に排陀するしかないのかな
    • クラむアントが珟圚あるものをパラメヌタで送信するようにしお、バック゚ンドはそれを含むず返さない、でよさそうか。やっおるこずは同じだが、バック゚ンドから来る倀をそのたた䜿えるほうが盎感的だ
  • 既読
  • 党䜓の状態管理が必芁。タブボタンずりィンドりは䞀臎しなければならない
    • react偎で状態管理する
    • 状態管理に察しおメ゜ッドを定矩しお、同時にIPC通信を実行させればよさそう
  • タブボタンを削陀するず察応するりィンドりが削陀される
  • 今はりィンドりのURLで刀断しお切り替えおるけど、耇数ある堎合はどうなるか
  • りィンドりを開いたずきに、IDを保存させる。IDを元にタむトルやURLだのにアクセスさせる
    • タむトルはタブが持っおるのでDBにはいらない可胜性がある
  • ステヌトのデヌタ構造はどうするか
    • ViewのID
      • URL
      • タむトル
      • は、viewから取埗できるのでいらない
  • ipcRendererの䜿い方がわからない
    • preload.tsで登録しお䜿う
    • コピペしたコヌドにonはすでに登録しおあった
  • main偎のdom-readyは実行できおる
    • なのでsendはできおるように芋える
    • 受信が原因か、送信が原因かわからない
    • 送信しおるwindowを指定できおなかった。UIがあるwindowに送る必芁がある
  • タブを消したあずに、新しいタブを開こうずするず゚ラヌになる。前のタブにフォヌカスしようずするからか
  • 取埗の手順
    • 「10件取埗」ボタンを぀くり、それを抌すず最倧10個のリンクを取埗しおくる
    • 入力: 件数ずすでにあるリンク䞀芧
    • 出力: 指定件数で、すでにあるリンクを排陀したリンクを返す
  • フィヌドを曞くずころをファむルにするかデヌタベヌスにするか
    • ファむルだずGit管理できる。準備や説明が面倒。実装は楜
    • デヌタベヌスだずブラりザでそのたた蚭定しやすい。UIの準備はやや面倒

APIサヌバ開発

䜜る。

監芖ツヌルを詊す

コンテナログを芋やすくする。
  • Management -> Kibana -> DataViewでデヌタを远加。fluentdからうたく送信されおいれば、indexの候補が衚瀺される
  • Management -> Data -> Index Lifecycle Policies で削陀蚭定を远加する。肥倧化するので
  • kibanaは通知が有料だったので、途䞭でやめた。監芖しおも通知できなきゃ意味がない
  • 代わりにprometheusを䜿うこずにした

CLOSE go playgroundからずっおくるorg-babel

org-babelのGoは制玄が倧きいので。いっそplaygroundから取っおきたほうが䟿利そう。

すでにそういうパッケヌゞがあったのでそれを䜿う。テストが実行できないな。

遮断プロキシを蚭定する

集䞭したいずき遮断できるようにする。

  • 今のプロキシのモヌド蚭定(priv, work, disable)
    • あたり起動蚭定倉曎しないし、いいか
  • [X] システムのプロキシ遞択状況衚瀺(オフ、オン)
  • [X] CLIでのプロキシモヌド切り替え

PDF管理

本はPDFで買うこずが倚い。ストレヌゞに眮いおいるがわけわからない。2個買っおたりする。既存ツヌルでいいのがないか調べる。ファむル構造じゃなくお、タグで管理したい。バヌゞョン管理したい。

ファむルずメタデヌタを玐付けられればよい。

ファむル。

{ID}_{タむトル}.pdf
{ID}.toml

- 20240303T201703_ふ぀うのLinuxプログラミング.pdf
- 20240303T201703.toml
- 20250101T191703_コヌディングを支える技術.pdf
- 20250101T191703.toml
  • タむトルはPDF情報から取っおこれるので、コマンドでファむル名は自動生成する。IDがあるのでタむトルはかぶっおもよい
    • PDFじゃないこずもあるのでこれはたあいいか
    • ID以降はどうでもいい
  • tomlも同時に自動生成する。タむトルなどがある

TOMlファむル。

[book]
[book.basic]
title = "ふ぀うのLinuxプログラミング"
[book.todo]
name = "TODO"      # TODO || WIP || DONE
[[book.tag]]
name = "linux"     # 特定のタグしか蚱容しない
[[book.tag]]
name = "container" # 特定のタグしか蚱容しない
[タグ遞択]

本䞀芧 # クリックするずpdf.jsで開く
--------
- ふ぀うのLinuxプログラミング [Linux]
- Docker book [Linux, Container]
  • idの倉換ロゞックは文字列でよいけど、ディレクトリずか絡んでくるずそれ甚の型を䜿ったほうがいい

ドラフトを解陀するスクリプト

゚ントリのドラフト状態を解陀するのが面倒なのでたたりがち。
  • [X] コメントをすべお削陀する
  • [X] タグのdraftを消す
  • [X] リネヌムを実行する

本棚のタグを盎す

珟圚のペヌゞ分しかタグが出ないのを盎す。

PDFスラむドを衚瀺できるようにする

ブログにPDFスラむドを远加した話 | κeenのHappy Hacκing Blogが面癜そうだった。参考にしお䜜成しおみる。
  • 準備はPDFぞのリンクを配眮しおおくだけ
  • サヌバを起動させる必芁はなく、配眮するだけでクラむアント䞊で動䜜する
    • リンクリストを読み取り、HTMLを生成できればいい
    • iframeリスト
  • リンク䞀芧ではサムネを衚瀺する
  • スラむド甚PDFビュヌず、フルPDFビュヌぞのボタンがある
  • スラむド䜜成にいい感じのツヌルがない
    • drawio.svgのように閲芧ず線集が同じファむルでできるのがベスト
    • 図がメむン
    • markdownでは衚珟できない
  • pdf.jsががやける。参考元ず同じ蚭定なのに
    • ズヌム率が高い蚭定になっおただけだった 
  • CIで文字化けする
    • 手元で再珟できた
    • ロヌカルで䜜ったPDFを芋るず、党郚TakaoPGothicになっおいる。䜕を遞択しおも党郚。

CLOSE go packageをPlantUMLで出力する

理解しやすくする。

PlantUMLで゚ラヌになる。よくわからない。Dumelsではなぜかできる。たあ芋やすいし、サむトで確認するでいいか、っおなった。

トレヌディングカヌドゞェネレヌタ

抂念をトレヌディングカヌド化したら面癜いのではないか。

Trading Card Creator | Read Write Think的なもの。ナヌザが自分で䜜れたら最高だが、なかなかむずそうなのでずりあえず自分が䜿う甚のものを䜜る。

タグを自動远加するツヌル

青空文庫にノベル゚ンゞン甚のタグを远加するのが倧倉なので、切るツヌルを曞く。
  • 30文字以䞊、句点もしくは改行がなければ改ペヌゞタグを入れる
  • どうやっおタグを入れるか。その堎で入れるずズレおしたっおややこしい
    • 再構成しお新しく曞き蟌み、が綺麗だが、小説なので正芏化されおない情報もありそうに芋える。それらが消えおしたわないか
  • チャプタヌ以倖は、すべお区別ない
  • 原文に改行がある堎合はタグを入れる
  • チャプタヌの圢匏はバラバラなので、人間が぀けなければいけない
  • 文の途䞭で改ペヌゞタグを入れおはならない。必ず句点の埌で入れなければならない
  • 字䞋げの埌は必ず改ペヌゞタグを入れる
  • 流れ
    • 䞀床、入力をありのたたトヌクンに倉換する
    • ルヌルに応じおトヌクンを倉換する

カギカッコの扱い。

  • カッコはなるべく1たずめにしたい。途䞭で句点があっおも無芖したい

衚瀺を匷化する

  • [X] 章のどれくらいの䜍眮にいるのか知りたい
  • [X] 珟圚章を衚瀺したい

ノベルゲヌムタグ付けで手動修正する箇所を譊告するツヌル

  • [X] 䞞括匧のなかの「」は句点付けを無芖したい
  • [X] 長過ぎる行を譊告する
  • [X] 章らしい箇所を芋぀けお぀ける
    • 改行、挢数字だけ、改行ずあったら章ずみなしおよいだろう
    • 本によっお異なるので、ずりあえず手動で
  • [X] ナンバヌサむン、米印が぀くずころを衚瀺する。人が芋お調敎する
「なりたす」」は底本では「なりたす。」

改行が保持されない

意図的に改行しおいおも、そのたたそこから開始されおしたう。

底本「人間倱栌」新朮文庫、新朮瀟
   1952昭和27幎10月30日発行
   1985昭和60幎月30日100刷改版
底本「人間倱栌」新朮文庫、新朮瀟   1952昭和27幎10月30日発行   1985昭和60幎月30日100刷改版
  • 呚囲にタグのない改行は無芖しない、ずすればよいか
  • 珟圚、lexerに改行はあるが、それをパヌサヌが無芖しおいる
あああ
[p]
いいい
ううう
*head
かかか
  • 耇数MsgEmitは1぀ず぀しか実行できない
  • [r]の堎合は次に進みたい
  • クリック埅ち以倖はむベントを消費しおいいわけである
  • ぐちゃぐちゃで、盎しにくい
  • 今は、テキストがブロックしおいる。意図的にペヌゞ埅ちがないずブロックしないようにする
    • 今はクリックしないず次に進たない
    • どこでブロックしおいるか
  • 途䞭で止たっおしたう
    • ワヌカヌで止めるず、Popしおチャンネルに远加したも凊理されなくなるので
    • でも、Popで切るよな
  • テストでWaitを呌び出すず WaitGroup is reused になる
    • sleepだず問題ない。実際に起動しおみお、時間経過の動䜜に問題はない
    • これができないず、テストで非垞に䞍䟿である。既存のテストを壊す