標準愚痴出力

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

jj の GitHub 認証まわりの最近の挙動

jj

Git互換バージョン管理システム jj が GitHub へコミットを push する時などに行う認証方法ですが、かつてはパスフレーズ入力を必要としない方式しかサポートしていませんでした。それが、いつの間にかフルサポートになっていた模様です。 いいわけになりま…

Git互換分散バージョン管理システム jj で「jj git push --allow-new」が非推奨となった

jj

従来はゼロコミット状態の GitHub へ jj から初回 push する場合 $ jj git init --colocate $ gh repo create --public 20251226 ✓ Created repository hymkor/20251226 on github.com https://github.com/hymkor/20251226 $ jj git remote add origin git@g…

jj にタグ関連のサブコマンドが実装されていた

jj

今まで jj にはタグ操作のサブコマンドが jj tag list くらいしか実装されていなかったため、リリースのためのタグを作成する際: git tag v1.19.0 git push --tag と git を併用しなければいけなかった。 だが、jj があずかり知らぬところで git コマンドが…

ソフトウェア命名論争についてのポエム

cat alternative とされるコマンド群がある。 sharkdp/bat: A cat(1) clone with wings. koki-develop/gat: cat alternative written in Go. 個人的な感覚だと、cat はファイルを連結するコマンドで、見るのは more や less のお仕事だから more alternativ…

テキストファイルの行処理のイディオム

Go

テキストファイルなどを扱う時: データ読み取り時にエラーが発生した時はただちに終わる ただし、そのエラーが EOF の場合は、有効データがある可能性があるため、それを処理してから終わる という定番処理がある。 これを素直に実装すると次のようになる。…

Windows版 goawk v1.30.0 でLF 改行を出力できるようになった

(前回記事)Windows 版 goawk は LF 改行を扱えない (プルリクエスト)Add -N option to control CRLF newline conversion (#254) by hymkor · Pull Request #255 · benhoyt/goawk (リリース)Release v1.30.0: -N crlf mode, leftmost-longest regexes ·…

GNU AWK for Windows 5.3.2 が assertion failed で落ちる

awk

とある OSS のテスト中に確認。なんだかなぁ > echo 17379 mel | gawk "match($NF,$1)>0{ print }" Assertion failed: s[len] == '\0', file re.c, line 57 > gawk --version GNU Awk 5.3.2, API 4.0, (GNU MPFR 4.0.2, GNU MP 6.1.2) Copyright (C) 1989, 1…

Goの構造体タグによるコマンドラインオプション・設定ファイル・環境変数の一元管理

go

いわゆるクリーンアーキテクチャでコマンドラインツールを作る時、標準の "flag" パッケージのオプションを全部構造体へ転記するのが面倒です。 そこで、次のようにタグにオプション名と Usage を書いておけば、flag.Parse が構造体へ直接フラグ値を代入して…

Unicode の曖昧幅の文字は2セルか1セルか?

Unicode では各コードに対応する文字がターミナルで、どれだけの幅をとるかという補助情報を扱う「East Asian Width」というプロパティを定義しています。 値 意味 表示幅 F (Fullwidth) 全角文字 2 桁 H (Halfwidth) 半角文字 1 桁 W (Wide) 通常全角扱い 2…

環境変数から得る端末情報おぼえがき

昔は TERMCAP/TERMINFO でターミナルで使うべき制御コードが得られた。現在の端末はほぼ VT100 互換なので、その役割は薄れている。 一方、まだ自動では判別できない端末情報があり、一部のライブラリ・アプリケーションは次の環境変数からそれを取得してい…

5DB x Go言語 "database/sql" プレースホルダーまとめ

(2025-10-25更新) SQLite3, MySQL でのバインド変数の利用について追記 DB プレースホルダーor バインド変数 SQLite3 ? $VARNAME, :VARNAME, @VARNAME SQL Server @VARNAME Oracle :VARNAME PostgreSQL $1 $2... MySQL ? (@VARNAME) プレースホルダー・バイ…

PowerShell で (Go言語のように) リダイレクトされてたら、標準出力を UTF8 化する

注意:PowerShell 7 でしか検証してません $saveEncode = $null if ([Console]::IsOutputRedirected) { $saveEncode = [System.Console]::OutputEncoding [System.Console]::OutputEncoding=[System.Text.Encoding]::UTF8 } # ... 中略 ... if ( $saveEncode…

Go言語で、コンパイラのバージョンによって import 先を切り替える

go

"log/slog" の出力をS式化するアドオン sxlog-go というパッケージを開発しています。 Release v0.2.0 · hymkor/sxlog-go "log/slog" は Go 1.21 で実装された標準ライブラリですが、ちょうど 1.21 で Windows 7, 8, Server 2008 R2 へのサポートは切られて…

Windows 版 goawk は LF 改行を扱えない (続報リンク追記)

(続報あり→Windows版 goawk v1.30.0 でLF 改行を出力できるようになった) Go言語でツールを書いていると、Windows でも LF 改行のテキストファイルを扱うことがめずらしくない。だが、goawk で加工しようとすると、LF が CRLF に変換されてしまう。これを…

PowerShell でのワイルドカード展開のソート順が難儀

リリースノートに記載された最初のバージョン部分の記載を日英それぞれについて引用するツールを PowerShell で作っている。基本的には英語の方を先に出るようにしたいので、読む順番は: release_note.md release_note_en.md release_note_ja.md としたい。…

もう一つの《Go で「予期せぬエラー」(panic)をファイルに記録する方法》

Go

Goで「予期せぬエラー」(panic)をファイルに記録する方法 この方法だと、panic が起らない場合もゼロバイトのファイルが作成されてしまう。 panic が起きてから、"runtime/debug".Stack() で、スタックトレースを得るという方法もある。 この方法は Go 1.20 …

Go言語の構造体からのS式のエンコーダー・デコーダーを作りました。

Go言語の構造体からのS式のエンコーダー・デコーダーを作りました。 hymkor/sxencode-go: Go library that encodes arbitrary Go values into Lisp-style S-expressions type Foo struct { Bar string `sxpr:"bar"` Baz float64 `sxpr:"baz"` Qux []int `sxp…

単品ファイルをコマンドラインから gist 管理するための補助スクリプトを書いた

自分は %USERPROFILE%\Share\cmds というディレクトリにバッチファイルやスクリプトを置いているんだけど、直接このディレクトリのファイルを編集してしまうことも多いので、git で管理するとなると作業フォルダーと実行ファイルとの同期がわずらわしくなる…

gmnlisp で、ユーザ関数を定義する

Go言語側で、割り算関数を定義する。gmnlisp においての割り算には整数割り算の (div) と、浮動小数点型実数による割り算の(quotient) が存在する。今回は (div) のオリジナル版を作成する。 割り算を取り上げたのは、割り算ではゼロ除算というエラーケース…

gmnlisp の ISLisp 検証システムのスコアが 96% に逹しました

gmnlisp とは、自分が Go言語で開発している ISLisp 規格準拠の Lisp インタープリタです。自作の Go言語アプリケーションを Lisp にてカスタマイズするために作成しました。 そして、ついにやりましたよ。 Release v0.7.19 · hymkor/gmnlisp Verified using…

新PCに Go 言語用の Linux 検証環境(Ubuntu)を用意した

基本的には 自分の CLI の動作確認用なので、WSL 1 でも十分と考えている 「Windows の機能の有効化または無効化」 の「Linux 用の Windows サブシステム」にチェックを打つ Microsoft Store で「Ubuntu」と検索。Ubuntu を「インストール 」 GUI でインスト…

AIM Toolkit で RAM DISK をセットアップ

前回:Windows で RAM DISK ソフトウェアの選定 2025 - 標準愚痴出力 AIM Toolkit download | SourceForge.net より、AIMtk.zip をダウンロード。unzip するとインストーラーが展開される > unzip ~/Downloads/AIMtk.zip Archive: C:/Users/hymko/Downloads/…

Windows で RAM DISK ソフトウェアの選定 2025

最近、PC を新調した。旧PCは SSD の書き込み回数が限界に来ていたため、最近では IME での漢字変換ですら、数十秒凍ることが多々あった1。これがなかなかつらかったことがもあり、新PCは書き込み回数にはかなり余裕があるものの、それでも SSD への無駄な書…

rclone で Windows のドライブ文字に DropBox をマウントする

rclone を scoop でインストール scoop install rclone rclone に DropBox の設定を追加 rclone config No remotes found, make a new one? →n) New remote を選択 Enter name for new remote. →dropbox を入力 Storage> →13 (dropbox) を入力 client_id> → …

gmnlisp v0.7.10 と lispect 0.6.0 を公開しました

きっかけとしては自作のコマンドラインの自動化ツール Lispect でプルリクエストをいただいたことです。 内容としては、ユーザのGoアプリケーション内からコマンドラインの自動化ができるよう、単体実行ファイル形式だけでなく、ライブラリパッケージとして…

nyagos 4.4.17_0 を先行公開しました

nyagos 4.4.17_0 を先行公開しました。2025年度上期版という位置付けです。 Release 4.4.17_0 · nyaosorg/nyagos 大きな変更は次のとおりです。 OS のクリップボードと「デフォルトでは」連動しないようにした (連動するよう設定することも可能) 入力予測…

regexp.Regexp になかった ReplaceAllStringSubmatchFunc を書いた

go

wifky の文法のパーサーを Go で書くにあたって、Perl にあった。 sub unverb{ ${$_[0]} =~ s/\a\((\d+)\)/&unverb_sub($1)/ge; } という書き方がネックになっていた。置換コマンド s は e というオプションを指定することで、置換結果をコードで指定するこ…

GitHub (Pages)で昔の静的ウェブコンテンツを保全する

終活の一環として、昔、大学のサーバーとか、レンタルサーバーに UP していた自分のホームページを、GitHub で保全する作業を進めている。 (※ ここでは既にローカルにとってあるバックアップをウェブに保全し、閲覧可能にするところまで記す) (1) GitHu…

golang․org/x/sys が Go 1.20 では使えなくなっていた

コマンドプロンプトの実行中のウインドウの左上のアイコンを差し替えるパッケージ:go-windows-consoleicon で という警告が来ていたので、ライブラリをアップデートしようとしたのだけれども > go1.20.14.exe get -u go: upgraded golang.org/x/sys v0.0.0-…

Windows用のGoアプリに複数のアイコンを持たせよう

WindowsTerminal v1.22.10352.0 上で vim 9.1 上の日本語表示が乱れる - 標準愚痴出力 で書いたように、WindowsTerminal は現状 v1.21 を使っているのだけれども、新バージョンが出たら、そちらも試してみたい。だが、アイコンを両方ともタスクバーにピン止…