You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
tcpdpのprobeモードで、CPUが100%に張り付くという問題(結果、原因としてはしょうもないミス)がありました。 機能としては正しく動いているので、単純にテストケースを増やしてもどうにもならず、pprofを使って原因となっている箇所を絞り込んでみました。 本エントリはその記録です。なお、原因特定の問題としてはおそらく初級レベルだと思います(わからない)。 現状把握 tcpdp probe は tcpdump のようにインターフェースに流れるパケットをキャプチャするコマンドです。 ところが、以下のように実行したら、まだパケットを流していないのにCPUが100%に張り付きます。 $ sudo tcpdp probe -c t.toml Password: 2018-09-30T00:40:42.199+0900 info Starting probe. interface: lo0,
As part of the Go 2 design process, we’ve published these draft designs to start community discussions about three topics: generics, error handling, and error value semantics. These draft designs are not proposals in the sense of the Go proposal process. They are starting points for discussion, with an eventual goal of producing designs good enough to be turned into actual proposals. Each of the d
「ghqを使ったローカルリポジトリの統一的・効率的な管理について」というエントリで書かれているように、 ghq.root と $GOPATH/src を一緒にする運用で長年やってきて、goimports が遅いことに少し困っていたのだが、以下でめちゃくちゃ快適になった。 .goimportsignore を使う goimports-update-ignore で自動生成をする 最新の dragon-imports を使う どれくらい快適になったかというと、エディタの保存時に goimports を気兼ねなく実行させられるようになったくらい。以下解説。 .goimportsignoreを使う 最近の goimports には $GOPATH/src/.goimportsignore という除外リスト機能がある。ここにインポート対象外にしたいディレクトリを $GOPATH/src 以下の相対パ
The document discusses testing HTTP request handlers in Go. It provides examples of testing an HTTP handler function using httptest, testing code that makes outgoing HTTP requests using a mocking library called gock, and injecting dependencies like the system clock for consistent test results. The examples demonstrate best practices for testing HTTP request handling in Go like using interfaces and
エンジニアHub > 記事一覧 > 「Go言語らしさ」とは何か? Simplicityの哲学を理解し、Go Wayに沿った開発を進めることの良さ 「Go言語らしさ」とは何か? Simplicityの哲学を理解し、Go Wayに沿った開発を進めることの良さ プログラミング言語には作者の設計思想が強く現れますが、Go言語もまた後発であることを生かし、しっかりとした思想に基づいて開発されています。公式のドキュメント等で語られているSimplicityの哲学を理解し、Go言語らしさ、Go Wayに従って開発する良さについて、はてなチーフエンジニアの松木雅幸(Songmu)さんが解説します。 id:Songmuと申します。はてな東京オフィスでチーフエンジニアを務め、Mackerelというサーバー監視のSaaS開発においてプロダクトマネージャーを担当しています。 筆者が勤めている株式会社はてなでは、2
今回やりたかったこと 会社の同僚から以前作成していたアプリを配布するためのサイトをDocker上でリバースプロキシで接続できるようにしてくれ。ということで、なんとかサーバーを起動するまではできたのですが、Docker上でデバッグすることにはどうすればいいかわかりませんでした。 ということで、今回やりたかったことは、docker-composeでechoサーバーをDockerに立ち上げて、Remote Debugすることです。 docker-composeで複数のコンテナを管理したかったのですが、GolandのブログではDockerfileのRemote Debugの方法しかなかったので苦戦しました。 (成果物はGithubにアップしています。) ディレクトリ構成 echo+MySQL+Nginx(リバースプロキシサーバー)の構築を想定しています。 docker-compose.ymlの設定
Software Engineering, Decentralisation, GoLang, P2P, Psychology, Starcraft, Protein, Women && Motorbikes addict. My GoLang background 3 months ago I joined Lightstreams to develop together with the team an authorisation protocol to manage programmable file permission access to protected content in decentralised networks in order to bring privacy and confidentiality into the peer to peer ecosystem.
SQS から AWS Lambda をトリガーできるようになりましたね! ワーカーを AWS Lambda で動かせるので、これは嬉しいリリースです。 aws.amazon.com en9sqs こういった機能を試すには、SQS にメッセージをエンキューする必要があるわけで、 パフォーマンスを見たい時は大量にメッセージを投下したい場合もあったりします。 そんな時に便利なのが、en9sqs というツールです。 golang で書いており、並列にメッセージをエンキューできます。 github.com インストール インストールするには、go get を使うか、64bit macOS 用ならバイナリが releases にあるので、これをダウンロードするのが良いでしょう。 $ go get -u github.com/shin1x1/en9sqs Releases · shin1x1/en9sq
Release Go projects as fast and easily as possible! With GoReleaser, you can: Cross-compile your Go project Release to GitHub, GitLab and Gitea Create nightly builds Create Docker images and manifests Create Linux packages and Homebrew taps Sign artifacts, checksums and container images Announce new releases on Twitter, Slack, Discord and others Generate SBOMs (Software Bill of Materials) for bina
Go は goroutine という非同期の仕組みを提供していますが、使い方次第では色々なパターンが実装できる為、初めて goroutine を見た人はどの様な物が正解なのか分からない事があります。以前、このブログでも紹介した事がありますが Go の非同期の仕組みは一見単純な様に見えて実はとても奥深いのです。 Big Sky :: golang の channel を使ったテクニックあれこれ golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量になったり、慣れていない人であればど... https://mattn.kaoriya.net/software/lang/go/20160706165757.htm 2012 年に Rob Pike 氏が Google I/O で「Go
UPDATE: You can watch a video of me giving this talk at Gophercon 2019:
We recently upgraded from PHP to Go for our Face Recognition API architecture. In this article we share why we made the move, how it’s radically improved performance, and some lessons learned along the way. As we strive to be the premier Face Recognition partner to businesses across the world, we constantly improve our platform to upgrade our products and enhance customer experience. And while und
https://github.com/Songmu/timeout 使い方はSynopsisに書いてますが、以下の様な感じです。 tio := &Timeout{ Cmd: exec.Command("perl", "-E", "say 'Hello'"), Duration: 10 * time.Second, KillAfter: 5 * time.Second, // Optional } exitStatus, stdout, stderr, err := tio.Run() コマンド実行に時間がかかった場合は、Duration後にSignalが送られて、それでも終了しない場合には、KillAfterの指定があれば、KillAfter後にSIGKILLが送られるという具合です。 インターフェースは、coreutilsのtimeoutになんとなくあわせている感じです。go-timeo
リリースしました https://github.com/Songmu/horenso cron等、バッチジョブを走らせた場合にその結果通知やエラーレポートをどうするかは悩ましい問題です。ラッパースクリプトを統一的に噛ますのが常套手段ですが、そのためのツールとして、horenso というものをGoで作りました。報・連・相。その名の通り、実行ジョブの報告をつかさどってくれる君です。以下のようにして使います。 % horenso -r reporter.pl -- /path/to/job args... -- 以降に指定したコマンドが実行され、その結果がJSONとして標準入力経由でreporterに渡されます。reporterは実行可能なファイル、もしくはコマンドライン文字列であり、記述言語は任意です。reporterに渡されるJSONは以下の様なものです。 { "command": "per
Essential Go is a free book about Go programming language. It's part of Essential Programming Books. It's written to provide clear and concise explanation of topics for both beginner and advanced programmers. Most examples are linked to online playground that allows you to change the code and re-run it. You can also quickly navigate to desired content using table of content on the left and search
At Cloudflare we like Go. We use it in many in-house software projects as well as parts of bigger pipeline systems. But can we take Go to the next level and use it as a scripting language for our favourite operating system, Linux? gopher image CC BY 3.0 Renee French Tux image CC0 BY OpenClipart-Vectors Why consider Go as a scripting language Short answer: why not? Go is relatively easy to learn, n
ネストの深いプログラムを書くとき、 プログラム全体で共有したいオブジェクトをどうやって引き回すかというのはいつも悩む問題です。 グローバル変数 小さなプログラムの場合は雑にグローバル変数に入れてしまうのも悪くはないですが、 プログラムが大きくなるにつれ、このやりかたはつらくなります。 シングルトン シングルトンは基本的にはグローバル変数と同じことです。 ただしファクトリ関数をうまく使えばグローバル変数をそのままつかうより柔軟な取り回しが可能になるかもしれませんが。 グローバル変数にせよシングルトンにせよプログラム全体で状態を共有しますが、 そうではなく関数ごとに引数としてサービスを渡していく方がテスタビリティも高いし好ましいと思います。 コンテキスト APIサーバをたてるときによくやってしまいますよね。 リクエスト処理全体で共有したいような変数をミドルウェア経由でコンテキストにセットすると
この記事は Gunosy Advent Calendar 2017の5日目の記事です。前回の記事はGunosyのパーソナライズを支える技術 -ワークフロー編-でした。 GoでAPIを書くときの問題僕の在籍するGunosyはGoを昔(?)から本番採用しておりまして、ノウハウも潤沢に溜まっている企業だと言えます。 しかし、contextの扱いやベストなパッケージ構成、テスト、net/httpでAPIを書くノウハウなどなど、迷うことは多々あります。 これは弊社特有の事情ではなく、Goのサーバーサイドエンジニア全員にとっての問題です。中でも、パッケージ構成をどうすればいいのか(相互参照せずに快適に開発を進められるパッケージ構成とは)を見つけるのは結構難しく、各々のチームにお任せ、という状況です。 今回は上記の問題のうち、パッケージ構成に踏みこんで見たいとおもいます。会社でもよくパッケージ構成をどう
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く