Go
fyne-io/fyne: Cross platform GUI in Go based on Material Design サンプルを自分の WIndows10 でビルド・実行した時の表示: ちょっとフォントがアレかな?(設定かオプションで直るかな?) 実行ファイルのサイズ $ ls -ltr -rw-a-- 369 Jan 1 2019 fyne…
とある slack で reflect のよい使用例についての話題が出てました。 reflect を使用したいというケースは、encoding とか O/R mapper 以外となると、ほとんどの場合「interface で済むんじゃね?さもなければプログラマがよく Go 言語を理解していないんじ…
最近の Windows はファイルのコピーがたいへんだ。 以下のバッチファイルはビルドしたファイルを C:\Program Files\xxxxx にコピーするだけの代物。だが… C:\Program Files\xxxxx に書き込むには管理者権限が必要 PowerShell で管理者モードに昇格 管理者モ…
zetamatta/go-windows-osversion 仕様は簡単で、readme にあるように osversion.Query() を呼べば、OS のバージョン情報を格納した構造体へのポインタが帰ってきます。 ( Windows 以外の OS だと、バージョンナンバーはどれもゼロになります) どういうこと…
go-windows10-ansi Enable Windows10's native ansi-escape-sequences Windows10 ネイティブのエスケープシーケンスを有効にする go-windows-shortcut Make or read shortcut-files on Windows Windows のショートカット(*.lnk)を作る go-windows-consolei…
現在のコマンドプロンプトでの文字列のピクセルサイズを測る API(gdi.dll のGetTextExtentPoint32W)を呼ぶパッケージを作成した。 zetamatta/go-windows-consolefontpixel これを使って、引数のテキストの長さを測るプログラムを書いた。 package main imp…
以下はどこかの記事を読んで知った方法なのだが、どこだったかわからなくなってしまったので、改めてここに記す(つまり、自分が考えついた方法ではない) *_test.go を使わないテストコードとかサンプルコードを書きたい時どうするか。 普通は別フォルダー…
型が違っても nil 判定ができる関数を作ってみた。 package main import ( "fmt" "reflect" ) func IsNil(p interface{}) bool { if p == nil { return true } value := reflect.ValueOf(p) switch value.Kind() { case reflect.Ptr, reflect.Map, reflect.S…
(追記)最終的には strings.Builder の優勝です。最後まで読みましょう 「1 byte ずつ」というのは今まで何回も計測されてきて、 append > strings.Builder > 文字列の加算 というのが定説になっている。が、「1 rune ずつ」の場合はどうだろうか? とい…
本文書は コマンドプロンプトの文字幅をキャリブレーションして、崩れない TUI 画面を作ろう - Qiitaよりの転載です。 最近、コマンドプロンプトで動作する CSVビューア とか、ツイッタクライアント を書いてます。 この手のツールを書く時、本格的なフレー…
GOOS=windows or linux、GOARCH=amd64 or 386 という組み合わせで、(フォルダー名)-(年月日)-(GOOS)-(GOARCH).zip という zip ファイルを作ります。 go-package.cmd @echo off setlocal set "PROMPT=$ " for %%I in (%CD%) do set "NAME=%%~nI" for %%I in (…
仕事でプログラム間の連携を TSV ファイルで行うことが多く、しかも Excel とか仮想マシン上に入ってなかったりすることが多い(し、あっても重くて使いたくない)ので、意を決して CSV ビューアを作りました。 先日のツイッタークライアントは、一応自分で…
20年くらい前にOS/2で eff , ell という「テキストビューア」群を作ってましたが、それと同じような感じのものできないかなーと思って、Go言語で簡単なフレームワーク go-twopane を作ってみました。 コンソール画面を2分割して、上に件名一覧、下に詳細を…
Big Sky :: Go で大文字小文字無視の文字列比較ベンチマーク strings.EqualFold について言及がなかったので、測ってみました。 追加行: func isDevNull4(name string) bool { return strings.EqualFold(name,"nul") } func BenchmarkS4(b *testing.B) { te…
今更だけど、PCがクラッシュしたら忘れるかもしれないので アーカイブの展開 MSI はインストーラーが意外と遅いので、アーカイブは *.zip ファイルを使う。 % cd / % ren go go.bak % unzip ~/go1.12.7.windows-amd64.zip vim の設定 *.go を開いた時、デフ…
UNCパスの補完機能の強化のためにコンピューター名一覧を出したいんだが、違うそうじゃない - 標準愚痴出力 記事を書いたら、自己解決する法則でもあるのかなぁ。 // +build run package main import ( "fmt" "unsafe" "golang.org/x/sys/windows" ) const R…
前回 → Windows でジャンクション作れない - 標準愚痴出力 完成品→ https://github.com/nyaosorg/go-windows-junction 「DeviceIoControl用の構造体」を作るのに、Microsoft ご本家の Go 言語パッケージ Microsoft/go-winio: Win32 IO-related utilities for…
【次回】 | 【完成品】 junction_go.run: package main import ( "os" "unsafe" "errors" "golang.org/x/sys/windows" "golang.org/x/xerrors" ) const ( _MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384 _FSCTL_SET_REPARSE_POINT = 589988 _INVALID_HANDLE_VAL…
もうパッケージの多くが、Go 1.12 名指しになってるのに! go.mod を騙し騙しで調整し、Go 1.12 で追加された関数の使用を我慢しつづけてきたが、さすがにもう待てん! というわけで、Go 1.12 をビルド時にダウンロードさせるようにした(→ appveyer.yml: do…
自分のプロダクトが依存しているパッケージ T についてプルリクエストが来ているようですが、まだマージされていません。 その修正の影響がどの程度こちらに影響にあるかあらかじめ検証したいと思いますが、go.mod にその修正をどう書くのが正解か、よくわか…
Go 1.12 で、実行したプロセスの ERRORLEVEL を得るためのメソッド:"os".ProcessState.ExitCode() が追加されたので、対応の準備をすすめていて気づいたのだけれども… 昔の Go言語だと、0 以外の ERRORLEVEL を受け取ると、"os/exec".Cmd.Run() で fmt.Erro…
現在のコードページの文字形式ではなくて、本当に ShiftJIS 固定となるので、日本語特化のアプリとなるが package main import ( "fmt" "os" "path/filepath" "golang.org/x/text/encoding/japanese" ) const fname = "search.lst" func main1() error { fd,…
Go で Cygterm っぽいことをやりたいので、ソケットサーバーを書いている(勉強中) - 標準愚痴出力 アドバイスをいただきました(ありがとうございます) enter しないと文字が送られないのは、たぶん tera term のオプションで local echo を off にすると…
a = a[:0] は領域のサイズをリセットするが、a = make([]T,0,cap(a)) と違って、使っていたメモリブロックを再利用するため、allocation 回数を削減できる。 だが、旧a の領域が他で使われていないかを気にせず、無頓着に使うと append でおかしいことになる…
(続きの記事 あり) serv.go : package main import ( "fmt" "net" "os" "strings" ) func handler(conn net.Conn) { defer conn.Close() var buffer [255]byte for { n, err := conn.Read(buffer[:]) if err != nil { fmt.Fprintln(os.Stderr, err) return …
go mod -m github.com/<USER>/<REPOSITORY>@<COMMIT-HASH> でいいようです。</commit-hash></repository></user>
違い ("bufio".Reader) ReadString('\n') 改行をカットしない ("bufio".Scanner) Scan() 改行をカットする 改行コードのない最終行の扱い 最後の行が abcd(EOF) というテキストの場合 ("bufio".Reader) ReadString('\n') "abcd",io.EOF という戻り値となる (…
我々Gopher人類は「Genericsは不要」と強調しすぎたのかもしれないな。「GenericsないからGoはダメ」に対する反論だけど、実際は「7~8割のケースではGenericsは要らないけど、2~3割やはりGenerics欲しい」というところだ。そこをつかれて「おまいら矛盾し…
秘密鍵書けないので、呼び出し元の main 関数は省略するが、下記のようなコードで出来た。 package main import ( "bufio" "bytes" "encoding/json" "fmt" "net/http" "os" ) type Message struct { Text string `json:"text"` Channel string `json:"channe…
syscall - The Go Programming Language Deprecated: this package is locked down. Callers should use the corresponding package in the golang.org/x/sys repository instead. (雑な訳)非推奨:このパッケージ(syscall)は凍結(?)しとります。ユーザ…