標準愚痴出力

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

Rust で panic なしに雑にエラーを扱いたいとき

Go だと、errors.New, fmt.Errorf で、簡単にエラーオブジェクトを作れる。 Rust のエラー処理のサンプルをいろいろ見てみたが、panic で終わらせるものが多いが、panic を使った時点で関数の汎用性がほとんどなくなってしまう。 エラーを返す場合、ほとんど…

awk 関連もろもろメモ

awk

awkが新しくなる!? 本家AwkがUnicode (UTF-8)とCSV対応に! #ShellScript - Qiita なるほどなぁ。以下、自分的要約: One True AWK (nawk) が UTF8 と CSV (by --csv オプション)に対応 1 UTF8 専用になってしまっており、LC_ALL=C への対応が一時的になく…

htnblog.exe v0.3.1 を公開しました

Release v0.3.1 · hymkor/go-htnblog 変更点は以下のとおり ドラフトのテキストが空だった時、投稿をキャンセルするようにした htnblog.exe edit で、ドラフトフラグが no になってしまう不具合を修正 XML定義の構造体の中で IsDraft string `xml:"app:contr…

Rustでゴミ箱コマンドを作ったり

nyagos には、ファイルをゴミ箱へ移動させる trash というコマンドがあります。 実装は Lua で、こんな感じで COM オブジェクトで実現してました。 nyagos.d/trash.lua : if not nyagos then print("This is a script for nyagos not lua.exe") os.exit() en…

Goで WriteRune を持たない io.Writer で最速で1文字出力するには

Go

WriteRune を持たない io.Writer 相手に 1-rune を出力するのに、fmt.Fprintf(〜,"%c",r) を使いがちだが、utf8.EncodeRune を使ってやった方が速いのではないかと思い検証してみた。 hymkor/study-go-write-rune: Goで WriteRune を持たない io.Writer で最…

Google IME を使ってると、Windows Terminal が起動時に IME が有効になって困る件

twitter で見た回避策 なるほど、Windows Terminal の時だけ、MS-IME を使用するようにするわけですか Windows Terminal起動時にGoogle日本語入力が英数モード "_A" にならないようにしたい人生はいまだ未達なんですが、ストレスを軽減する方策はあります。1…

htnblog.exe: 最新~過去10件分くらいの記事を編集できるようにしました

Release v0.3.0 · hymkor/go-htnblog (1)最新~過去10件分くらいの記事を編集できるようにしました まず、htnblog list $ htnblog list @0 6801883189051607309 go-readline-ny のカスタマイズ方法を Wiki にまとめました @1 6801883189051604508 Rustで …

go-readline-ny のカスタマイズ方法を Wiki にまとめました

Go

レポジトリの README.md からの導線が分かりづらくて、なかなか気付いてもらいにくいのですが、go-readline-ny のカスタマイズ方法を Wiki にまとめました1 Home · nyaosorg/go-readline-ny Wiki 記載内容は 日本語目次 にあるとおりですが、次のとおりです…

Rustで Windows10,11 の端末拡張機能を有効にするライブラリを書きました

作ってから ちょっと間があいてしまいましたが、次のようなライブラリを習作をかねて、Rust で書きました。 hymkor/windows1x-virtualterminal-rs: Enable virtual terminal of Windows1x 標準出力、標準エラー出力でエスケープシーケンスを有効にする Enter…

はてなブログの記事を作成・編集するGoのライブラリ・コマンドラインツールを作りました

hymkor/go-htnblog: はてなブログ投稿Goライブラリ いい加減ウェブブラウザで、markdown を編集するのはしんどくて、vim で編集するために作りました1。 ※ (2023-10-17 追記) 記事公開後、不具合が見付かり、v0.1.1 → v0.2.0 と更新しているので、ご注意くだ…

メソッドの引数がレシーバーと同じ型となっている型群を等価に扱いたい

Go

(2023/9/13)コードが分かりづらかったので、全面的に書き直しました (x1 *X) Add(x2 *X) *Xというメソッドを持つ型(X) (y1 *Y) Add(y2 *Y) *Yというメソッドを持つ型(Y) これを等価に扱いたい。 引数がその固定の型であれば普通の interface で済むところ…

go-multiline-ny / SQL-Bless:Enterキー+指定の条件で入力終結モード

Release v0.12.0 · hymkor/go-multiline-ny Enter だけを入力した時にそれを入力終結と判断する「条件」を関数で指定できるようになりました。 たとえば、SQL Bless v0.9.0 では、Enter を入力したとき、最終行の行末がセミコロンで終わっていたら入力を終結…

勉強メモ:Rust で日本語を一文字ずつ列挙する

文字列でUTF-8でエンコードされたテキストを保持する - The Rust Programming Language 日本語版 for c in "नमस्ते".chars() { println!("{}", c); } これだと文字列の長さ分の配列的なメモリ領域が確保されるそうなのので、あまり望ましくない(ヒープの乱…

Windows 8.1 , Server2008 向けの Go ツールの保守環境の維持

nyagos というツールをメンテナンスしているが、このツールはまだ当分 Windows8.1 や WindowsServer2008 をサポートしたい。 だが、最新の Go 1.21.0 はそれらの OS のサポートを切ってしまっているので、Go 1.20.7 でビルドしたバイナリを引き続き提供する…

最新 master 版 Go の導入

Go

YouTube 動画で、新しい for range をデモってる人が gotip というコマンドを使っているので、go1.20.7.exe とかと同じかなと思って、 go install golang.org/dl/gotip@latest gotip download してみたところ、 Cannot find C:\Users\hymkor\Go1.4\bin\go.ex…

Go 1.21.0 の遅延初期化

Go

Go 1.21.0 のマイナーなライブラリ修正の中に、sync.OnceValue という関数が追加されていた。1 sync The new OnceFunc, OnceValue, and OnceValues functions capture a common use of Once to lazily initialize a value on first use. どうやら、これは遅…

SQL-Bless 製作中に把握が必要になった各DBの違い(随時更新)

hymkor/sqlbless: The Command-line Database Client 共通 型名は DB ごとにばらばらだが、ANSI SQL の型がエイリアスになっている模様 可変長文字列型 → CHARACTER VARYING(n) 数値型 → NUMERIC[(n)] Oracle Database 21 Express Edition コマンドラインク…

go-readline-ny:カラー化の手引き

Go

(2023/04/14:追記) v0.10.0 にて非互換性を含む修正を行ったため、その変更点を反映しました。 go-readline-ny は v0.6.1 から文字ごとに色を変更できるようになりました。 この配色は固定ではなく、readline.Editor のフィールド Coloring に設定された…

go-readline-ny でマルチライン編集

Go

go-readline-ny で Enterで改行挿入だけ Ctrl-Enter or Ctrl-J で入力内容確定(送信) が出来たらいいなぁと思ったので、トライしてみました。 当初はパッケージの改造がいるかなぁと思ってたんですが、キーマップへのコールバック関数のアサインだけでなん…

S式で Makefile を書く make を作ったよ!

zenn.dev に投稿しようかと思って書き始めたけど、結局、塩漬けのままになってしまったのを再利用シリーズ第二弾 Go言語で ISLisp のサブセットを作ってる hymkor/gmnlisp: gmnlisp - the subset of ISLisp でも、単に規格書に載ってる標準関数を一つずつ実…

💩口に出せない ZIP ファイルのひみつ(主に名前のせい)

(当文書は zenn.dev あたりに投稿しようかなと思って書き始めたんですが、書いているうちに文書量の割に役立つ内容がないのでボツにしたものです。もったいないのでブログの方に残しておきます) きっかけ twitter の先行きがいろいろ不安なので自分の全ツ…

tar のチェックサム

tar - Wikipedia セクション「ヘッダー」より オフセット サイズ 内容 0 100 ファイル名 100 8 ファイルモード 108 8 所有者 User ID 116 8 グループ User ID 124 12 ファイルサイズ(Byte) 136 12 最終更新時刻(UNIX時間) 148 8 チェックサム 156 1 リン…

古い VC++ でコンパイルエラーになったが、gcc 11.2.0 だと普通に動いてしまった unique\_ptr を使ったコード

C++

map から map へ要素を移動するのに、unique_ptr を使いたかったが、当時使っていた VC++ 2010 か 20151 では、コンパイルエラーになってしまった。 その時は結局、shared_ptr を使って回避した。 今、gcc 11.2.0 で試してみると問題は再現しない。コンパイ…

defer による戻り値の差し替え

Go

(先日、gist に書いたものをこちらへ移動) package main func sub() (rc int) { defer func() { println("defer func():", rc) rc *= 2 }() rc = 1 return 2 } func main() { rc := sub() println("main:", rc) } $ go run defer.go defer func(): 2 main:…

バッチファイル: exit コマンドの引数

$ type exit1.cmd @echo off setlocal call :a echo a=%ERRORLEVEL% call :b echo b=%ERRORLEVEL% endlocal exit /b :a exit /b "1" :b exit /b 1 結果 $ exit1 a=0 b=1 なんでやねん

scoop のマニフェストファイルを作るツールを公開しました

Go

github.com 本記事は https://twitter.com/NyaosOrg/status/1612296206193143809 以下のスレッドの転載になります。 scoop のマニフェストファイルとは何かについては、以下もご覧ください(本記事の記載内容と若干重複していますが) scoop の野良パッケー…

Oracle のダンプファイルから、インポートせずに SQL のみを抽出する

imp ユーティリティーの SHOW=Y オプションを使うとインポートは行わず、インポート時に発行される SQL のみが標準エラー出力に出力される。 imp システムユーザ名/パスワード file=ダンプファイル名 fromuser=(エクスポート時のユーザ) touser=(インポート…

WindowsTerminal で起動時にフォントエラー

別に設定を変えたわけでもないのに発生する。アプリケーションが自動更新した時によく起きる。 Windows の「設定」→「アプリ」→「アプリと機能」→「ターミナル」→「詳細オプション」より「修復」(アプリのデータが消えない方の選択肢)を選ぶと直る。

続・GitHub のアカウントの名前を変更したら起きること 〈AppVeyor編〉

GitHub のアカウントの名前を変更したら起きること - 標準愚痴出力 AppVeyor ログインできなくなってる。GitHub のアカウントを変えたせいか?メールアドレスはすでに使われているみたいに言われる GitHub のアカウント名を変えたらログインできなかった件、…

Gitレポジトリを初期化+アルファをするサブコマンドを書いた

Git

git-xxx という名前の実行ファイルを %PATH% の中に書いておくと git xxx いう風に git のサブコマンドとして呼び出すことが出来る。Windows の場合は、拡張子の解釈の都合でバッチファイルは使えないが、そのかわり git付属のbashスクリプトが使える。 で、…