ludwig125のブログ

頑張りすぎずに頑張る父

go言語で複数のgoroutineのleakを検出する(goleak使用)

関連 ludwig125.hatenablog.com ludwig125.hatenablog.com 概要 goleakパッケージでのgoroutine leakを検出してみました。 goroutine数の確認 runtime package - runtime - Go Packages 上のパッケージを使って、goroutineの数を調べてみます。 何もしないma…

github pages でWASMを使ったGoのWebツールを動かす【その1】(github pages導入)

目的 WebAssembly 略称 WASM に興味があったので、Go で Web ツールを作成しました。 Web ページを無料で作れるところを探したところ、 github pages が良さそうだったのでこれを使ってみました。 ページの構成 github pages でWASMを使ったGoのWebツールを…

github pages でWASMを使ったGoのWebツールを動かす【その2】(WebAssembly導入)

ページの構成 github pages でWASMを使ったGoのWebツールを動かす【その1】(github pages導入) - ludwig125のブログ github pages でWASMを使ったGoのWebツールを動かす【その2】(WebAssembly導入) - ludwig125のブログ github pages でWASMを使ったGo…

github pages でWASMを使ったGoのWebツールを動かす【その3】(WebAssemblyでの計算機)

ページの構成 github pages でWASMを使ったGoのWebツールを動かす【その1】(github pages導入) - ludwig125のブログ github pages でWASMを使ったGoのWebツールを動かす【その2】(WebAssembly導入) - ludwig125のブログ github pages でWASMを使ったGo…

github pages でWASMを使ったGoのWebツールを動かす 【その4】(WebAssemblyでのUnixTime変換ツール作成)

ページの構成 github pages でWASMを使ったGoのWebツールを動かす【その1】(github pages導入) - ludwig125のブログ github pages でWASMを使ったGoのWebツールを動かす【その2】(WebAssembly導入) - ludwig125のブログ github pages でWASMを使ったGo…

github pages でWASMを使ったGoのWebツールを動かす 【その6】(WASM の Web ツールを github pages で公開する)

ページの構成 github pages でWASMを使ったGoのWebツールを動かす【その1】(github pages導入) - ludwig125のブログ github pages でWASMを使ったGoのWebツールを動かす【その2】(WebAssembly導入) - ludwig125のブログ github pages でWASMを使ったGo…

github pages でWASMを使ったGoのWebツールを動かす 【その5】(UnixTime変換ツールのTinyGoへの置き換え)

ページの構成 github pages でWASMを使ったGoのWebツールを動かす【その1】(github pages導入) - ludwig125のブログ github pages でWASMを使ったGoのWebツールを動かす【その2】(WebAssembly導入) - ludwig125のブログ github pages でWASMを使ったGo…

TinyGo のInstallとWASMでの使い方メモ

概要 TinyGoに興味があったのでInstallしてSampleを実行してみました TinyGo の Overview https://tinygo.org/getting-started/overview/ The TinyGo project implements the exact same programming language. However, TinyGo uses a different compiler a…

VS Codeを使っていてGoの定義が見つからなくなった

問題 これまでは、VSCodeでGoを使うとき、関数や変数の上にマウスのカーソルを置くと(マウスオーバーすると)定義がみられました が、あるとき突然何も出なくなりました。 F12キーで定義もとにジャンプしようとしても、「定義が見つかりません」と出て困っ…

Pushgatewayを使ってみる

概要 Pushgateway の使い方について理解するためにサンプルを書きました 最初に通常の Server のメトリクスを Prometheus から取得する場合を確認して、 その後 Batch の場合の Pushgateway の利用方法を見てみました。 コードは以下に置きました https://gi…

golangのappendでBenchmark時にアロケーション数が0と測定される場合について

概要 ludwig125.hatenablog.com この記事のsync.PoolでのSlice操作の高速化で取り上げた、 BenchmarkReplicateStrNTimesWithPool 関数でメモリアロケーションが0になる理由が解せなかったので自分なりに調べたことをまとめます appendを使った方法でアロケー…

golangのsync.Poolで速度改善したい

golangのsync.Pool Go言語のsync.Poolをうまく使えば性能改善できる、という話を見たので自分の理解を深めつついろいろ検証してみました 整理できていませんがコードはこちらに置きました https://github.com/ludwig125/sync-pool どういった処理に対してど…

Windowsで特定のアプリがすでに動いていたら最前面に、動いていなかったら起動させるショートカットキー

概要 ただの小ネタ Windows Terminalをショートカットキーで最前面に持ってきたかった 背景 Macのターミナルアプリ iTerm2には HotKeyという機能があって、任意の指定したショートカットキーを打つだけで、ターミナルを最前面に持ってくることができる。 最…

WSLからHTMLファイルをChromeで開く

概要 WSL上で、HTMLファイルをChromeで開く方法がすぐ見つからなかったのでエイリアスを定義して簡単にできるようにした 結論 .zshrcまたは.bashrcに以下のようなエイリアスを書いておけばいい alias chrome='(){/mnt/c/Program\ Files\ \(x86\)/Google/Chro…

MySQLのデータをgrafanaで表示させてみた

概要 MySQLのデータをgrafanaで表示させてみた 環境 WSL2 Ubuntu: 18.04.4 LTS MySQL: 5.7.30-0ubuntu0.18.04.1 前提 MySQL自体はインストール済みの前提で書く grafana install https://grafana.com/docs/grafana/latest/installation/debian/ latest OSS r…

Docker for Windowsのインストールとトラブル対応

参考 WSL(Bash on Windows)でDockerを使用する - Qiita Docker for Windows を始めよう — Docker-docs-ja 19.03 ドキュメント Windows に Docker Desktop をインストール — Docker-docs-ja 19.03 ドキュメント この辺を参考にDocker for Windowsをインストー…

circleciのworking_directoryにルートディレクトリを指定したらcheckoutで失敗するようになった

概要 タイトルのとおり、circleciのworking_directoryにルートディレクトリ以下のパスを指定したらcheckoutで失敗するようになった 経緯 自分はもともとはworking_directoryに以下のように設定していた working_directory: /go/src/github.com/ludwig125/ こ…

GKEクラスタを作成するときに--no-enable-cloud-loggingオプションが使えなくなったっぽい

前提 自分は格安でGKEを使うために、g1-smallで運用している GKEでデフォルトのクラスタを作成すると、ログ転送用にfluentdなどのPodが立ち上がってしまう。 このうちfluentdが結構なCPUとMemoryを使用してしまうので、自分は以下にあるような方法で --no-en…

WSLで gcloud components updateをして [Errno 13] Permission deniedが出た

WSLのgcloud components updateをして [Errno 13] Permission deniedが出たはなし 完全にはまった問題があったので書く 環境: Windows10 WSL2 Ubuntu 18.04.4 LTS 起きたこと gcloud components updateをして [Errno 13] Permission deniedが出た [~] $gclo…

ローカルPCでGoでserverを立ち上げたときにファイアウォールを出なくさせる

困ってたこと Goのサンプルプログラムで作ったサーバをローカルPCで起動させたいときに、 毎回ポップアップがでて うっとうしくて困っていた。 サーバ 例えばこういうの package main import ( "fmt" "log" "net/http" ) func main() { helloHandler := func…

4kディスプレイで仮想マシンのUbuntuの文字サイズを大きくする

ディスプレイをフルHDから4kディスプレイに変えた結果、 仮想マシンのUbuntu(18.04.2 LTS)を立ち上げたら何もかもめちゃめちゃ小さくて使い物にならないので調べた設定 文字サイズを変更する方法 設定前 隣のYahooの画面は比較用に並べたホスト側(Windows…

vscodeメモ

エディタとコンソールのフォーカスを切り替える 参考 - VSCodeでエディタ画面とターミナル間のフォーカスを楽して移動したい - Qiita - Switch focus between editor and integrated terminal in Visual Studio Code - Stack Overflow トラブル Undeclared n…

vmware playerとホストのWindowsの間のフォーカスを切り替える

vmware player -> Windows Ctrl + Alt Windows -> vmware player Ctrl + g

VMwareplayerのトラブル

トラブル 「vmxファイルが壊れています」と出てVmwarePlayerが起動しない VMware player(正式名称はVMware Workstation Player)を15.5.1にアップデートしたあとで、なぜか既存のUbuntuが開かなくなってあせった 「VMXファイルが壊れています」と出て起動し…

GKE を格安で使うためにやったこと

GKE を格安で使うためにやったこと 目的 やりたいこと ここで紹介する方法でできないこと 料金の確認 一か月の使用料金について 【実例】n1-standard-1でHello Worldを表示するだけのサーバを動かした時の費用 なんでこんなに高いの? SKUについて 料金の内…

Go言語で作ったプログラムをKubernetes のコンテナにおいて実行する(デバッグ用)

概要 Kubernetes(またはDocker)のコンテナ内でGoのプログラムをデバッグする時に使う方法の自分用のメモ 活用ケース Kubernetesにデプロイしたけど、Goのプログラムが予想通り動いていない! というときに、またDocker ImageのbuildしてからKubernetes deplo…

go言語のBenchmarkTestメモ

概要 いろいろとベンチマークを取った時のメモ 参考: An Overview of Go's Tooling - Alex Edwards ← 超イイ High Performance Go Workshop ← 神 Effective Go - The Go Programming Language ← 公式 Go slice ベストプラクティス - Qiita 【題材1】slice…

go言語のpipeline、fan-in、fan-out

関連 ludwig125.hatenablog.com pipeline(パイプライン) Go言語による並行処理を読んでパイプラインやファンイン、ファンアウトについて自分なりに理解したので具体例とともに挙動を書く O'Reilly Japan - Go言語による並行処理 pipelineや、fan-in(ファ…

go言語で複数のgoroutineのエラーハンドリングをする

関連 ludwig125.hatenablog.com 複数のgoroutineの結果の取得 複数のgoroutineの結果の取得1(エラーが起きると中断する例) 第5章 並行プログラミング―ゴルーチンとチャネルを使いこなす:はじめてのGo―シンプルな言語仕様,型システム,並行処理|gihyo.j…

go言語で同時並列数を制御する

関連 ludwig125.hatenablog.com 同時並列数の制御 【同時並列数の制御】1. 並列数を制限しない場合 並列数を制限しない場合はこの通り単純 複数のgoroutineを起動する場合は、WaitGroupで待ち合わせをする ※time.Sleep(1 * time.Second)は処理の様子をわかり…