標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

2024-01-01から1年間の記事一覧

【解説】ターミナル用データベースクライアント SQL-Bless で CSVI をページャとして使うようにしてみました

もともと SQL-Bless って、SELECT 結果を CSV 形式で出力するようになっているんですよね。 で、CSVI はファイルだけでなく、標準入力から CSV データを読み込むことができるようになっている。 これは連結すると便利じゃね?ということで、SQL-Bless に CSV…

csvi 以外の最近の活動(2024年4月)

go

go-readline-ny v1.3.1 サブパッケージ completion で、空状態で補完するとクラッシュする不具合を修正するプルリクエストをいただきました。ありがたい あと、csvi でやった一文字キー入力の仮想化をこっちでもやりました。前から ITty という interface で…

【解説】 CSVI v1.8.1 【これで完成?】

Release v1.8.1 · hymkor/csvi v1.8.0 まだ全行読み切っていないとき、ステータスラインの読み込み済み行数欄を毎秒4回更新するようにした 今まではキー入力直後にしか更新していなかったので「なんか全行数が少なく見えるな」と誤解することがあったわけで…

Windows Terminal の内部的なコードページがおかしくなる現象

Windows Terminal、プロファイル「コマンドプロンプト」を開き、CMD.EXE のコマンドラインの中から手動で wsl.exe を起動するなりして、一度でも Linux ターミナルとして使用すると、そのあと exit で CMD.EXE に戻ってきても、どうもどこかコードページの設…

【解説】 CSVI v1.7.1 をリリースしました。

Release v1.7.1 · hymkor/csvi 前に説明したのは v1.5.0 だったので、v1.6.0, v1.7.0 の変更点も合わせて CSView → CSVI と名前を変えました View という単語が名前に入ってると読み取り専用ビューアという印象があるが、今は編集可能になっている 同カテゴ…

今更だけど、Go では (具体的なレシーバー.メソッド名) を「関数ポインタ」扱い出来た件

たぶん、有識者では常識なんだろうけれども、最近まで認識できていなかった件についてのポエム type T struct { // : } func (t *T) Method(){ // : } var t T と定義されている場合、 var f func() = t.Method という代入が可能。これの何が嬉しいのかとい…

最近、更新したプロダクト

CSView v1.5.0 文字コードとして UTF16 をサポートしました。 最初の2バイトが \xFE\xFF、もしくは最初の1バイトが \0 の時 → UTF16BE 最初の2バイトが \xFF\xFF、もしくは二番目の1バイトが \0 の時 → UTF16LE と判断するようにしました。今どき、UTF16 な…

Git 互換DVCS、jj(jujutsu) でのテキストエディター指定における空白の扱い

基本は Settings - Jujutsu docs に記載のとおり 環境変数 JJ_EDITOR 設定ファイルの ui.editor 環境変数 VISUAL 環境変数 EDITOR の順で参照される。この時、1,3,4 について空白は引数の絶対的な区切リ文字として機能する。つまり set "EDITOR=C:/Program F…

make-scoop-manifest の引数仕様をシンプルにした

Release v0.10.0 · hymkor/make-scoop-manifest GitHub のレポジトリから scoop 用の manifest を生成するツール: make-scoop-manifest。使い方として次の3種類があると説明をしていたが、分かりにくかった。 レポジトリの場所は git remote show -n で取得…

SAKURA Pocket を FTP over tls/rclone/restic 経由でバックアップストレージにする

コストパフォーマンス 100GB あたり プラン 金額 月額 OneDrive(月契約) ¥260-/月 ¥260- OneDrive(年契約) 2,440/年 ¥204 さくらのレンタルサーバー(ライトプラン) ¥1,571-/年 ¥131 なので、FTP しか使わないなら十分安い。 自分の場合、CGIサーバを一…

vim 9.1 (stable) の scoop installer 用の暫定的な manifest を作った

vim の manifest は scoop-installer の Main bucket に登録されているが、ずっと vim 9.0 のままで、最新版の 9.1 にあがる様子が一向にない。マニフェスト: vim.json が参照しているページ: https://ftp.nluug.nl/pub/vim/pc/ の vim がずっと 9.0 のまま…

1ファイルなスクリプトはインストール方法で、scoop よりcurl を案内した方がいいかも

hymkor/Download-Count.ps1: A PowerShell script that reports how many assets on GitHub's Releases page have been downloaded. にあるとおり: scoop bucket add hymkor https://github.com/hymkor/scoop-bucket scoop install Download-Count.ps1 より…

葛󠄀城市の「葛󠄀」の字

【ゆっくり解説】海外で恐れられる日本のクレイジープラント…「葛」の恐ろしさとは?を解説/海外では侵略的外来種「kudzu」の脅威 - YouTube この動画で葛󠄀城市の「葛󠄀」の字がややこしいことになってしまったことを知った。 葛󠄀城の字体について - 葛城市 -…

rangefunc の練習:Yet Another Scanner

go

既存のライブラリに bufio.Scanner があるが、改行をカットしてしまう 改行を含めて読み取りたいときは (*bufio.Reader) ReadString('\n') を使う EOF を検出した時の処理が面倒だが、雑に書くと最終行が失われてしまう 面倒なく、ありのままに読み込むコー…

もう一つだけ、小さな optional パッケージを作った

以前: hymkor/go-minimal-optional: The minimal optional package for golang Go言語で必要最小限の optional パッケージを実装したものの、安全性と使い勝手の両立は難しい - 標準愚痴出力 というパッケージを作ったが、別の方式で、もう一つ作ってみた。…

URL をスクランブルする

「とほほのJavaScriptリファレンス - とほほのWWW入門」を読みながら、URL文字列を前後ひっくりかえして、リンク元を検索しづらくする JavaScript を書いた (JavaScript を書くの、20年ぶりくらいかな?) URL Scamble テキストボックスに適当な URL、たとえ…

Go で適当な btree を検討していたけど、tidwall/btree がいいかもしれないなぁ

tidwall/btree: B-tree implementation for Go 既存のメソッド Scan の仕様が range から呼ばれた関数の要求仕様にちょうどマッチしてた。 package main import ( "fmt" "github.com/tidwall/btree" ) func main() { var users btree.Map[string, string] //…

twitter、もとい、X にバッチファイルのコードの類を貼る時にリンク化されないテク

echo off を示す @ マークが mention 扱いされてしまう @setlocal set "TARGET=%1" set "TARGET=%TARGET:\\?\=%" "%EDITOR%" "%TARGET%" @exit /b %ERRORLEVEL% これを twitter へ貼ると、@exit が exit さんへの mention になってしまう @ の後に空白を入れ…

(解決編) jujutsu v0.15.1 で、コミットログを gvim.exe で編集できなくなってしまった

(前回) → jujutsu v0.15.1 で、コミットログを gvim.exe で編集できなくなってしまった。 - 標準愚痴出力 どうやら、\\?\C:\… 形式のパスに含まれるクエスチョンマークを、gvim がワイルドカードと誤認してしまったらしい。自前展開にトライした結果、失敗し…

jujutsu v0.15.1 で、コミットログを gvim.exe で編集できなくなってしまった。

(注意:本件、解決したので、後日、対応方法をまとめます → (解決編) jujutsu v0.15.1 で、コミットログを gvim.exe で編集できなくなってしまった - 標準愚痴出力 ) jj commit を実行すると、gvim.exe がファイルを開かずに起動してしまう。:q で終了すると…

DVCS jujutsu (jj) v0.15.0 出てた

※ 追記あり Release v0.15.0 · martinvonz/jj とりあえず scoop update jj で、v0.14.0 → v0.15.0 への upgrade はしたものの、まだあまり使えていない。個人的に目ぼしいところなど jj move --from/--to can now be abbreviated to jj move -f/-t move は、…

$GOEXPERIMENT を定義すると、runtime.Version() の値がかわる

package main import ( "runtime" ) func main(){ println(runtime.Version()) } 未定義の時: C:> go run foo.go go1.22.0 $GOEXPERIMENT に rangefunc を設定した時: C:> env.exe GOEXPERIMENT=rangefunc go run foo.go go1.22.0 X:rangefunc 余談 これの…

何回、多重に nyagos が起動しているかをプロンプトで表示させる

Lua のテストで nyagos を起動すると、 exit が要るかどうか、よく分からなくなるので。 次のようなコードを .nyagos へ追加した。 nyagos.env.NYAGOS_RECURSE = tostring( tonumber( nyagos.env.NYAGOS_RECURSE or "0") + 1 ) nyagos.env.prompt = '[' .. n…

nyagos 向けに jj のサブコマンドの補完関数を書いてみる

既に nyagos.d/category/subcomplete.lua というフレームワークがあるけれども、今回はそれを使わず新規に作ってみた1 。jj (jujutsu) と nyagos 両方のユーザは自分だけだと思うので、当面、nyagos に添付はしない。 用いるAPI API は nyagos.complete_for[…

(解説) The unbreakabe CSV editor - "CSView" v1.2.0

Release v1.2.0 · hymkor/csview 今回 本番の業務データの手直し 俺の家計簿のインポート用データ作成 に耐えうる CSV エディターという謎コンセプトのもと、大幅改修を行った。 Unbreakable CSV よくある CSV エディターでは "A1","B1","C1" "A2","B2","C2"…

go-lazy 二値対応 ("sync".OnceValues 相当品)

Go で遅延初期化を実現するパッケージ:go-lazy を更新した。 Release v0.5.0 · hymkor/go-lazy このパッケージと同様のものは Go 1.21.0 で導入された遅延初期化関数 sync.OnceValue でも記載したとおり、Go 1.21 で実装された("sync".OnceValue)。ゆえに …

Go言語で必要最小限の optional パッケージを実装したものの、安全性と使い勝手の両立は難しい

hymkor/go-minimal-optional: The minimum optional package for golang 安全性を担保するためには値を保持していても直接アクセスさせず、コールバック関数経由でしか参照できなくする。 func f(x optional.Value[int]) { x.IfSome(func(v int) { println("…

nyagos を jj 管理にしたところ、jj log がすごく長くなってしまった

太古のブランチのコミットが出てる jj log -h によると、 $ jj log -h Show commit history :(中略) Options: -r, --revisions <REVISIONS> Which revisions to show. Defaults to the `revsets.log` setting, or `@ | ancestors(immutable_heads().., 2) | heads(immut</revisions>…

既存パッケージ(uncozip) を Go1.22 の rangefunc 対応に

go

意外と簡単でした(Lua に慣れてる人は、コールバック関数を戻り値として返すというやり方はおなじみかも) uncozip のパッケージは、ZIPファイルの各ファイルをリストアップする関数として (*CorruptedZip) Scan() bool というメソッドがあります。この実装…

GNU Cash で家計簿をつけてるつもりが、ただのライフログになってた

よく間違えて「GNU Cache」と typo しがちな「GNU Cash」で家計簿つけてるけど、いまいちうまくいかない。 手入力するためのフィールドがもっと欲しいなー レシートについている現時点での電子マネーの残額(検算用) インボイスの登録番号(働いていない今…