2024-2
2024-11-30
- 気になる言語
- borgo
- shplait
- zenn scrapsが上限を超えてコメントできなくなった (2024)
- Chat AIというかLLMのAPI関係
- chatgptのAPIは無料枠が無さそう (切れた)
- geminiはありそう (TODO: link)
- denoでweb APIを呼ぶときのコードについて考えた (クラス不要説)
上限を超えてコメントできなくなった
なるほど400
denoでweb APIを呼ぶときのコードについて考えた(クラス不要説)
denoでwebAPIを呼ぶときのコードを考えてみた。
ポイントとしては
- debugし辛いコードは避けたい -> traceしたい
- 環境変数などでいい感じにapikeyを読み込みたい
- 個別のケース用のfetchを作りたい
- クラスは本当に必要?
たぶん最終的にはこんなコードを書くかも? APIDoc的なinterfaceをやるかはわかんない。
request/responseの形状はどっかから拝借してくるかも?
- streamingへの対応はどうするんだろう?
- geminiのapiの方はどうなるんだろう?
- deno経由ではなくブラウザ経由で呼び出せるようにするにはどうするんだろう?
意外と考える事が多いのでscrapにした
2024-12-01
- 昨日のやつをGeminiでも試す
- with-helpでchoicesで補完を効かせたい
with-helpでchoicesで補完を効かせたい
// parseArgs()の引数ではないので補完が効かない。
const options = {
"boolean": ["verbose"]
} as const;
const args = parseArgs(Deno.args, options);
// ここでoptionsを渡したくなる
const restricition = new Restriction(options);
とはいえ安易に値にメソッドを生やしたくない気もする。
結局無理やり値を埋め込んでしまった。まぁでも大体使うのはchoicesくらいなので const choices = mostStrict(args)
してしまえばrestrictionというオブジェクトが現れるよりマシかも?
昨日のやつをGeminiでも試す
denoでのweb API呼び出しのGemini版
(実際にはこれによってmoreStrict()のchoicesのやつを直そうと思ったのだった)
ついでにサブコマンドを自前で定義してみた
- switchで分岐する?if-elseで分岐する? (breakの代わりにreturnを使えば1行)
- 同一のコマンドオプションをbase側のコマンドで吸収するべきか?(繰り返しになる)
対応した
2024-12-02
2024-12-02
- bskyへpostしてみる
- this is undefinedのbindの対応
- webでもcosole.logを
bskyへpostしてみる
単に投稿するだけでなく改変した結果をpostしたい。例えば翻訳した結果を併記するだとか。
しかしふつうにやると文字数制限に引っかかる。例えばgistなどの別の場所に追加の内容を投稿してそれへのリンクを付与するとかの方が良いかも?
🔑 パスワードはマスクした感じで表示したくなった。
あと1ファイルに収めるにはnamespaceが便利。
this is undefinedのbindの対応
これをTypeScriptの型チェックをすり抜ける。eslintの出番とかだとやだな…
対応方法
- constructorでbindする
- メソッドをアロー関数で定義する
webでもconsole.logを
2024-12-03
- mac + kitty + screen で改行を含んだ文字列のクリップボードからのペーストが効かない
- denoでgistに投稿してみる
mac + kitty + screen で改行を含んだ文字列のクリップボードからのペーストが効かない
かなり特殊な事例かも。。
homebrewで諸々updateしてから「改行を含んだコピペ」がうまくできないっぽい。
kittyかscreenの問題そう。。なんだろ。copy modeと認識されてしまう(screen)
.screenrcでCtrl+jをエスケープキーにしてたせいっぽい。
# エスケープキー
escape ^Jj
ブラケットペーストモードを無効(off)にする – イー・フロンティア・システムズ
.inputrcでbracketed-pasteを無効にして、kittyのpaste anywayを使えばまぁ動きそう。
echo "set enable-bracketed-paste off" >> ~/.inputrc
bracketed paste の制御文字はコピーの開始と終了用の \e[200~
と \e[201~
で囲むやつ。
denoでgistに投稿してみる
方法は2つあるかも?
- subprocess経由で
gh gist create
を呼ぶ -
gh auth token
で渡してweb APIを直接叩く
.envに入れておけば使えるし、後者のほうが嬉しいかもしれない(main2.ts)
💭こうやって前提条件が増えてくると自分用のdoctor
的なコマンドが欲しくなるかもしれない。
あとはいろんな環境変数が見えるのも微妙なのでやっぱりマスクしたくなるかも?
💫関係ないけれどsnapでインストールしてたghが古くてgh auth tokenが存在しなくてびっくりしてた。結局雑にghqでcli/cliをcloneしてきてビルドしてしまった。go installで入れても良かったのでは?と思ったりもした。
2024/12/04
- fetch()のbuild helperを作りたくなった
- denoで試したいもの
2024-12-11
- console.dirの代替
2024-12-12
- githubのissueのsub issueを集めたい
githubのissueのsub issueを集めたい
こんなbashの関数を書いておく?
# $1: repo, $2: issue number
function gh-linked-issues() {
gh api -X GET --paginate /repos/$1/issues/$2/comments -f per_page=100 --jq '.[] | .body' | ggrep -Po "https://github.com/$1/issues[^\n >'\"\)]+" | sed 's/^/- /g' | sort -u
}
- 📝逆参照の自動で付与されたリンクには対応していない
- ghコマンドの
--paginate
がうまく機能しているかわからない