Go

アプリケーションが終了するときに、子プロセスも終了させる方法

Go

とある実行プロセス内で実行した別プロセスを親プロセスが死んだ段階で子プロセスも終了させたいというユースケースは結構あるかと思います。 Linuxではプロセスグループというものがあって、そのグループに属しているプロセスは親プロセスが死んだら子プロ…

Windowsファイルパスを標準添付ライブラリで生成/パースする時の言語ごとの違い

Ruby 、 C# 、 Go の標準添付ライブラリで file:///c:\temp\doc.txt のようなパスを生成・パースした時の違いを示します。Ruby だけは標準ライブラリの仕様上少し手を加えてあげないと動きませんでした。そのあたり少しフェアじゃないかもしれません。 参考…

JenkinsのジョブをキューイングするGoアプリ作った

概要 トリガとなるジョブと実行の遅いジョブとを連結させた場合に全体の実行が遅いジョブに依存してしまう問題を解決する為に、実行の遅いジョブの前にジョブキュー用のGoアプリを挟むことで問題を解決しました。 問題点1 ジョブキューにどんどんジョブが溜…

相対パスでimportできない場合は go.mod に module 名を書こう

Go

今まで、$GOPATHの外でgoを書いているときにサブパッケージを作って、それをインポートするときに、以下のように指定していた。 import "./hoge" だけど、最近はこの書き方は推奨されていないらしい。というかエラーになる。 Go Moduleでローカルパッケージ…

Windows XP でファイルの更新日付やサイズが欲しい場合は syscall.GetFileInformationByHandle() を使おう

Go

はじめに ひょんなことから Windows XP で ファイルの更新日付やサイズを取得して一覧で表示しないといけないミッションがありました。Windows 10 でそのようなプログラムをGoで書いていたので、それを使えばXPでも動くだろうと高をくくっていたら、File.Sta…