Open36

2024-2

podhmopodhmo

2024-11-30

  • 気になる言語
    • borgo
    • shplait
  • zenn scrapsが上限を超えてコメントできなくなった (2024)
  • Chat AIというかLLMのAPI関係
    • chatgptのAPIは無料枠が無さそう (切れた)
    • geminiはありそう (TODO: link)
  • denoでweb APIを呼ぶときのコードについて考えた (クラス不要説)
podhmopodhmo

denoでweb APIを呼ぶときのコードについて考えた(クラス不要説)

denoでwebAPIを呼ぶときのコードを考えてみた。

https://gist.github.com/podhmo/33c1452b24105a4b2123ba068d082308

ポイントとしては

  • debugし辛いコードは避けたい -> traceしたい
  • 環境変数などでいい感じにapikeyを読み込みたい
  • 個別のケース用のfetchを作りたい
  • クラスは本当に必要?
podhmopodhmo
  • streamingへの対応はどうするんだろう?
  • geminiのapiの方はどうなるんだろう?
  • deno経由ではなくブラウザ経由で呼び出せるようにするにはどうするんだろう?
podhmopodhmo

2024-12-01

  • 昨日のやつをGeminiでも試す
  • with-helpでchoicesで補完を効かせたい
podhmopodhmo

with-helpでchoicesで補完を効かせたい

// parseArgs()の引数ではないので補完が効かない。
const options = {
  "boolean": ["verbose"]
} as const;

const args = parseArgs(Deno.args, options);

// ここでoptionsを渡したくなる
const restricition = new Restriction(options);

とはいえ安易に値にメソッドを生やしたくない気もする。

podhmopodhmo

結局無理やり値を埋め込んでしまった。まぁでも大体使うのはchoicesくらいなので const choices = mostStrict(args) してしまえばrestrictionというオブジェクトが現れるよりマシかも?

podhmopodhmo

ついでにサブコマンドを自前で定義してみた

  • switchで分岐する?if-elseで分岐する? (breakの代わりにreturnを使えば1行)
  • 同一のコマンドオプションをbase側のコマンドで吸収するべきか?(繰り返しになる)
podhmopodhmo

2024-12-02

  • bskyへpostしてみる
  • this is undefinedのbindの対応
  • webでもcosole.logを
podhmopodhmo

bskyへpostしてみる

単に投稿するだけでなく改変した結果をpostしたい。例えば翻訳した結果を併記するだとか。

しかしふつうにやると文字数制限に引っかかる。例えばgistなどの別の場所に追加の内容を投稿してそれへのリンクを付与するとかの方が良いかも?

🔑 パスワードはマスクした感じで表示したくなった。

あと1ファイルに収めるにはnamespaceが便利。

podhmopodhmo

this is undefinedのbindの対応

これをTypeScriptの型チェックをすり抜ける。eslintの出番とかだとやだな…

対応方法

  • constructorでbindする
  • メソッドをアロー関数で定義する
podhmopodhmo

2024-12-03

  • mac + kitty + screen で改行を含んだ文字列のクリップボードからのペーストが効かない
  • denoでgistに投稿してみる
podhmopodhmo

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~ で囲むやつ。

podhmopodhmo

denoでgistに投稿してみる

方法は2つあるかも?

  • subprocess経由で gh gist createを呼ぶ
  • gh auth token で渡してweb APIを直接叩く

.envに入れておけば使えるし、後者のほうが嬉しいかもしれない(main2.ts)

https://gist.github.com/podhmo/210b925be733f5f4150346e9bc684d28

💭こうやって前提条件が増えてくると自分用のdoctor的なコマンドが欲しくなるかもしれない。
あとはいろんな環境変数が見えるのも微妙なのでやっぱりマスクしたくなるかも?

podhmopodhmo

💫関係ないけれどsnapでインストールしてたghが古くてgh auth tokenが存在しなくてびっくりしてた。結局雑にghqでcli/cliをcloneしてきてビルドしてしまった。go installで入れても良かったのでは?と思ったりもした。

podhmopodhmo

2024/12/04

  • fetch()のbuild helperを作りたくなった
  • denoで試したいもの
podhmopodhmo

vite必要になるのはどのタイミング?
もしかして1枚のhtmlならdenoだけでhmrできるのでは?

podhmopodhmo

2024-12-11

  • console.dirの代替
podhmopodhmo

💭ところでcliとかでapiにリクエストして投げて429になった時のresponseとかにそのままアクセスしたいのだけどpythonのpickleみたいなものは無いんだろうか?

事後的に触りたい

podhmopodhmo

2024-12-12

  • githubのissueのsub issueを集めたい
podhmopodhmo

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がうまく機能しているかわからない