いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

golang

Goメモ-135 (embedパッケージを使ってバージョン情報などを埋め込み)

概要 サンプル それぞれ別々のファイルにしておいて埋め込む 一つのファイルにバージョンとかをまとめておいて埋め込む 概要 前回、ビルド時に -ldflags を使ってパッケージ情報を埋め込むサンプルを記載しました。 devlights.hatenablog.com Go 1.16 から e…

Goメモ-134 (go build 時にバージョン情報などを埋め込み)(ldflags, -X)

概要 git からビルド番号などを取得して go のビルド時に埋め込む サンプル 参考情報 概要 前回、git でビルド番号とかを取得する記事を書いたのでついでに。 devlights.hatenablog.com Go では、ビルド時に -ldflags オプションをつかって、プログラム内の…

Goメモ-133 (PowerShell環境でビルド時にGOOSとGOARCHの指定の仕方)

概要 参考情報 概要 いつも忘れるので、ここにメモ。 PowerShell 環境で、クロスコンパイルしたい場合、以下のように GOOS と GOARCH を指定する。 $ $env:GOOS="linux"; $env:GOARCH="amd64"; go build -o xxx 参考情報 stackoverflow.com docs.microsoft.c…

Goメモ-132 (Go 1.16で追加された signal.NotifyContext())

概要 サンプル signal.Notify 何もせずに5秒経過した場合 5秒以内にCtrl-Cで割り込み入れた場合 signal.NotifyContext 何もせずに5秒経過した場合 5秒以内にCtrl-Cで割り込み入れた場合 参考情報 概要 Go 1.16 のリリース自体については以下の記事を参照くだ…

Goメモ-131 (Go 1.16 リリースで気になったところメモ)

概要 参考情報 概要 Go 1.16 のリリースノート見て、気になったところを自分用にメモメモ。 golang.org Go 1.16 のリリース自体については前回の記事を参照ください。 devlights.hatenablog.com 1.15から6ヶ月後にリリース 言語の変更なし Mac上の64ビット A…

Goメモ-130 (Go 1.16 リリース)

概要 Go 1.16 をダウンロードしてインストール (Linux)(Gitpod) 参考情報 概要 Go 1.16 がリリースされましたね。 今回は、embed パッケージが追加されていたりとちょっと楽しみなリリースです。 以下、リリースに関しての自分用の参考情報です。 blog.golan…

Goメモ-129 (ファイルのパーミッションを取得)

概要 サンプル 概要 よく忘れるので、ここにメモメモ。 os.Stat() から取得した os.FileInfo から Mode().Perm() で取得 https://golang.org/pkg/os/#Stat https://golang.org/pkg/os/#FileInfo 後は、それに調べたいパーミッションをANDして判定。例えば、…

Goメモ-128 (Go 1.16から io/ioutil パッケージが Deprecated な方向になっていく)

概要 概要 知らなかったので、メモメモ。 io/ioutil パッケージが Go 1.16 から deprecated な予定になっていくみたいですね www.srcbeat.com github.com もともと ioutil に存在していた関数とかは、それぞれ io や os パッケージ側に移動されるみたいです…

Gitpod で GUI アプリを動作 (gitpod-full-vnc)

概要 Dockerfileを用意 (.gitpod.Dockerfile) gitpod.yml を用意 サンプルアプリを用意 Makefileを用意 確認! 今回作ったサンプルリポジトリ 参考情報 概要 Gitpod で VNC を使って、GUIアプリを動作できるとのことなので、試してみました。 www.gitpod.io …

Goメモ-127 (データをバッファリングして吐き出すチャネル, Buffer)

概要 サンプル 概要 小ネタ。せっかくサンプル作ったので、ここにメモメモ。 何らかのデータシーケンスがあるとして、それを一定数貯めてから処理するというのはよくあるシチュエーションですね。 個人的には、fan-outさせる際に各非同期処理に処理してもら…

Goメモ-126 (全部完了したら完了するコンテキスト, WhenAll)

概要 サンプル 概要 以前チャネルで同じような動きするものを記事にしました。 devlights.hatenablog.com context.Contextを受けるバージョンもついでに作成。中で上の記事で作った関数を呼んでいるだけですがw サンプル package ctxs import ( "context" "…

Goメモ-125 (どれか一つが完了したら完了するコンテキスト, WhenAny)

概要 サンプル 概要 以前チャネルで同じような動きするものを記事にしました。 devlights.hatenablog.com context.Contextを受けるバージョンもついでに作成。中で上の記事で作った関数を呼んでいるだけですがw サンプル package ctxs import ( "context" "…

Goメモ-124 (画像ファイルをExcelに挿入する)

概要 サンプル 概要 小ネタ。 仕事によっては、試験のエビデンスを画像で取得しておいて、それを後からExcelに一個一個貼り付けたりするような場面もあったりしますよね。。。。 対象のファイルが5個とかそれくらいなら、まだ手でやってもいいと思いますが…

rpmのファイル名からパッケージとかバージョンとかを抽出

概要 yumのソースコードにていい関数発見 ついでなので Go で移植 ついでにプチツール作った 概要 ちょっと興味が湧いたので、調べてみました。自分用のメモ書きです。 rpm のパッケージ名って apt のやつと違って、一見どこがパッケージ名でどこがバージョ…

Goメモ-123 (selectでのチャネル選択の有効無効を切り替える)

概要 サンプル チャネルを nil にして無効にするサンプル nilなチャネルをnon-nilにして出力を切り替えていくサンプル おすすめ書籍 概要 小ネタ。select ステートメントと チャネル はよく利用される組み合わせです。 このときに、チャネルの値を nil にし…

Goメモ-122 (別ファイルのExcelシートをコピーしてもってくる)

概要 シートコピーする関数がない GoはやめてPythonでスクリプト書いちゃおう 自前ライブラリにシートコピー関数を追加する サンプル おすすめ書籍 概要 以下、自分用メモも兼ねています。 以前にExcel関連の処理をGoからいろいろ操作したりした記事を何個か…

Goメモ-121 (ゴルーチンの完了検知方法あれこれ)

概要 投げっぱなし(完了検知なし) doneチャネルを使って完了検知 sync.WaitGroup を使って完了検知 context.Context を用いて完了検知(context.Context.WithCancel) context.Context を用いてタイムアウト付きで完了検知(context.Context.WithTimeout) …

Goメモ-120 (play-with-go.dev)(インタラクティブにGoの勉強が出来るサイト)

概要 おすすめ書籍 概要 勉強になりそうなサイトだったので忘れないうちにメモメモ。。。 play-with-go.dev こんな感じのものです。 A series of hands-on, interactive, browser-based guides that introduce the tools required to work with the Go progr…

Goメモ-119 (time.Tickとtime.NewTickerの使い分け)

概要 time.Tickは goroutine leak する サンプル おすすめ書籍 概要 小ネタ。知らなかったので忘れないうちにメモメモ。 time.Tick は、特定のインターバルで処理をする場合にとても便利。 指定時間の間、特定のインターバルで処理を繰り返すようなものが書…

Goメモ-118 (go list でビルド対象ファイルとテストファイルを出力)

概要 -f オプション 試してみる おすすめ書籍 概要 小ネタ。前回「外部テストパッケージ」について書きましたが devlights.hatenablog.com ついでに、go list でビルド対象のファイルとテスト対象ファイルを出力してみます。 -f オプション go list コマンド…

Goメモ-117 (外部テストパッケージについて)(External Test Package)

概要 Example作るときに謎だったこと 外部テストパッケージという仕組み 先のExample関数を外部テストパッケージにする export_test.go というトリック サンプル 今回のサンプルリポジトリ 参考情報 おすすめ書籍 概要 ずっと謎だったことがやっと理解できた…

Goメモ-116 (文字列末尾の改行を除去)(strings.TrimRight)

概要 サンプル おすすめ書籍 概要 よく忘れるので、ついでにメモメモ。 文字列末尾の改行コードを除去したいときがたまにあるのですが、Goの場合は正規表現を使うよりも strings パッケージの関数を使った方が楽なときが多いです。 以下のような感じ。Unix系…

Goメモ-115 (VSCode(Gitpod)でGoプログラムのデバッグ時に標準入力がサポートされない?)

概要 で、自分の場合 参考情報 おすすめ書籍 概要 忘れないうちにメモメモ。 最近、ちょっとVSCodeちゃんと使おうと思って、Goのプログラムをデバッグしてみたりしてたのですが 標準入力を受けて、動作するプログラムをデバッグ実行してみたところ、デバッグ…

Goメモ-114 (WSL1だとVSCodeでGoのデバッグが出来ない)

概要 参考情報 おすすめ書籍 概要 忘れないうちにメモメモ。 たまたま、WSL1の環境でVSCodeを Visual Studio Code Remote - WSL 拡張機能経由で起動してGoのプログラムをデバッグしようとしてたのですが デバッガが動かない という事態になりました。他の環…

Goメモ-113 (tealeg/xlsx にて1セルに複数行テキストを設定した場合のメモ)

概要 サンプル 実行してみる 参考情報 おすすめ書籍 概要 たまに使った時に忘れているので、ここにメモメモ。 個人的に、Excel処理する場合は tealeg/xlsx を使わせてもらっています。使いやすいので重宝しています。 github.com んで、1つのセルの中に複数…

Goメモ-112 (配下の全パッケージに対してgolint と go vet する)

概要 おすすめ書籍 概要 最近は、golangci-lint があるので、golint と go vet を直接利用することはあまり無いかもしれませんが、よく忘れるのでメモメモ。 go list ./... とすると配下のパッケージ全部を出力してくれます。 なので、それを golint に食べ…

Goメモ-111 (ビルド時にデバッグ情報とかを消してサイズを小さくする, ldflags, trimpath, upx)

概要 サンプル ビルド対象とするソース 普通にビルド ldflags オプションを付けてビルド trimpath オプションを付けてビルド ldflags と trimpath を両方指定してビルド ビルドしたものに upx で圧縮かける 実行速度は? 全部の実行結果まとめ 参考情報 おす…

TCPソケットがclose状態の時の挙動についての情報メモ (Writing to a closed, local TCP socket not failing)

概要 追記 概要 とても、有益な情報があったので、忘れないようにメモメモ。 この知識は、使っているプログラミング言語関係なく有用。 qiita.com qiita.com 記事書いてくださった方に感謝です。 一つ目の記事の冒頭にある サーバがコネクションをclose後し…

Goメモ-110 (フォーマット書式の %*s について)

概要 サンプル 参考情報 おすすめ書籍 概要 忘れそうなのでメモメモ。 書籍「プログラミング言語Go」を見てたら、以下のようなフォーマット書式が記載されていました。 fmt.Printf("%*s<%s>\n", depth*2, "", .n.Data) 説明の部分には以下のように記載されて…

Learn X in Y minutes (いろんなプログラミング言語の特徴とかを載せてくれているサイト)

概要 概要 面白いサイト見つけたので、忘れないうちにメモメモ。 learnxinyminutes.com 各言語の特徴とか機能を1ページ分で一気に説明してくれています。 たいていの言語はあるので、ざっくり掴むのにちょうどいいかもしれません。 過去の記事については、…