先日、Gopls の v0.2.0 がリリースされました。 v0.2.0 https://github.com/golang/go/issues/33030#issuecomment-549629508 リリースノートに書かれていますが、このバージョンから completeUnimported に対応しています。fmt が import されていなくても fmt.Println が補完できる様になります。ただしデフォルトでは無効になっています。Visual Studio Code であれば以下を settings.json に含める事で使える様になります。 "gopls": { "completeUnimported": true }, また vim-lsp をお使いであれば以下の様に設定する事で使える様になります。 if executable('gopls') augroup LspGo
概要 write: broken pipeといったクライアント側の強制的なコネクション切断でのエラーハンドリングをする際の知見まとめ。 環境 golang/go 1.13.3 事前知識 知っておくと良い知識を先に説明します。 そもそもpipeとは pipeはプロセス間通信をするための単方向のデータチャネルです。IOストリームを扱います。 読み出し側と書き込み側それぞれのfdを経由してプロセス間の通信を可能にします。 例えば親子プロセスで通信を行いたい場合、親プロセスでpipeを開きそれをforkして子プロセスを用意します。 ref: https://inzkyk.github.io/ocamlunix-jp/pipes.html そして親プロセスの書き込みfd・子プロセスの読み出しfdをそれぞれクローズすれば、以下のように子プロセス→親プロセスへ通信することができます。 pipeはシンプル
◆初めに Visual Studio Code Remote – Containersという拡張機能を使って、前から気になってたGo言語の勉強用環境を構築しました。 ◆やってみる 使うものをダウンロードしていきましょう。 ・Visual Studio Code https://azure.microsoft.com/ja-jp/products/visual-studio-code/ ・Visual Studio Code Remote – Containers https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack ・docker https://www.docker.com/ VS Codeでフォルダーを開いて、F1 や Ctrl + Shift +
昨年Go1.10時点でのGoのテストについてまとめた。 Goのtestを理解する in 2018 #go まとめ記事を書いた後にリリースされたGo1.11からGo1.13に含まれるテスト関連の変更をまとめる。 TL;DR Go1.10までのテスト関連の機能、基本的な書き方は以下にまとめてある Goのtestを理解する in 2018 #go Goのtestingを理解する in 2018 - Examples編 #go Goのtestingを理解する in 2018 - quickサブパッケージ編 #go Goのtestingを理解する in 2018 - iotestサブパッケージ編 #go Go1.11に含まれるテスト関連の変更は以下の通り go test実行時のgo vetの挙動の修正 -memprofileオプションがデフォルトでアロケートしたメモリを記録するようになった Go1.
(株)ライトコードの笹川(ささがわ)です! 前回は、TwitterAPI を利用し、HTMLテンプレートでエゴサーチの結果を表示しました。 今回は、なんと、Goの環境やパッケージ管理を見直していきます! それでは、いってみましょう! 前回の記事はこちら 2019.10.23【第7回】Go言語(Golang)入門~HTMLテンプレート利用編~第7回~Go言語(Golang)入門~笹川先生(株)ライトコードの笹川(ささがわ)です!今回は、前回に引き続き、Twi... 環境の見直し 1回目の記事を書いた際に、弊社のメンバーから 「どうせだったら brew とか goenv で導入してみればよかったのに」 …というお言葉を頂いたので、折角なので、goenv で go の環境構築をやりなおしてみることにしました。 goenvとは goenvとは、rbenv をベースとしたGo言語(Golang)のバ
Go Conference Tokyo 2019 Autumnでの発表資料です。
The Go Cloud Development Kit The Go Cloud Development Kit (Go CDK) is an open source project building libraries and tools to improve the experience of developing for the cloud with Go. Go CDK provides commonly used, vendor-neutral generic APIs that you can deploy across cloud providers. The idea is to support hybrid cloud deployments while combining on-prem (local) and cloud tools. This project al
(株)ライトコードの笹川(ささがわ)です! 先日、Twitterでアンケートをしてみました。 今回は、そのアンケートの要望にお応えして、 TwitterAPI を利用してエゴサが出来る簡易Twitterクライアントを作成してみようかと思います! 今日入門編書いたけど、次のGolangの記事どんなのがいいかな — 笹のり (@sasa_nss_app) September 5, 2019 前回の記事はこちら 2019.10.09【第5回】Go言語(Golang)入門~REST API実装編~第5回~Go言語(Golang)入門~笹川先生(株)ライトコードの笹川(ささがわ)です!前回は、RESR APIを構築... TwitterAPIとは 「ツイート」や「タイムラインの取得」、「リツイート」や「いいね」といったTwitterのサービスを、APIから利用できるサービスです。 今回は、Twitt
(株)ライトコードの笹川(ささがわ)です! 前回は、RESR APIを構築するための機能を実装しました。 今回は、POSTで受け取った値をFirestoreへ追加し、追加されたデータをレスポンスとして返す実装をしてみたいと思います。 1func firebaseInit(ctx context.Context) (*firestore.Client, error) { 2 // Use a service account 3 sa := option.WithCredentialsFile("path/to/serviceAccount.json") 4 app, err := firebase.NewApp(ctx, nil, sa) 5 if err != nil { 6 log.Fatalln(err) 7 return nil, err 8 } 9 10 client, err :
https://github.com/Songmu/replaceablewriter 表題の通りですが、io.Writer をラップして io.WriteCloser として振る舞い、その内部に保持した io.Writer を差し替え可能にするライブラリを書いた。 例えば、Goの標準logをログローテートしたい場合には以下のようにします。 f, _ := os.OpenFile("20191001.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) w := replaceablewriter.New(f) log.SetOutput(w) // 翌日になったら差し替える f2, _ := os.OpenFile("20191002.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) w.Repl
(株)ライトコードの笹川(ささがわ)です 今回も、Go言語(Golang)を習得していきたいと思います。 引き続き、Firestoreを利用して色々とやってみようかと思います。 Firestoreをデータストレージ、GolangをAPIとした場合は、どこかにデプロイしてから使うことが想定されます。 そのため、今回はデプロイする前にREST APIとして使えるようにしたいと思います。 ちなみに、RESTにした理由は特にありません(笑) 入門編のゴールとしては、Androidアプリとの結合を目論んでいるので、「RESTでいいなぁ」と難しいこと考えずに思った次第です! 前回の記事はこちら 2019.09.26【第3回】Go言語(Golang)入門~Firestoreデータ操作編~第3回~Go言語(Golang)入門~笹川先生(株)ライトコードの笹川(ささがわ)です。今回でGo言語(Golang)
This is a basic layout for Go application projects. Note that it's basic in terms of content because it's focusing only on the general layout and not what you have inside. It's also basic because it's very high level and it doesn't go into great details in terms of how you can structure your project even further. For example, it doesn't try to cover the project structure you'd have with something
あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。
jqはとても便利なコマンドです。 JSONを返すAPIを実装するときや、SaaSのAPIから特定の情報を抜き出してシェル変数に代入するときなど、web開発や運用には欠かせないツールとなっています。 しかし、私にとってjqのクエリを一発で書くのは容易ではなく、思い通りの出力が得られないことがよくありました。 難しいエラーメッセージに悩まされて、jqで書くのを諦めて別の言語で書き直すこともありました。 jqの十八番と思える場面で使いこなせないのは、なかなか悔しいものがあります。 ツールを使うのが難しいなら、同じものを作ってしまえばよいのです。 jqの全ての機能を実装する jqを言語としてきちんと書けるようになる jqを完全に理解する jqの全ての機能を自分で実装してしまえば、jqがどういうものか、クエリがどのように処理されるのか、詳しくなれるはずです。 jqを得意な言語と言えるようになって、ク
はじめに Goの正規表現は遅いと言われていることが以前から疑問だったので調査してみました。 こちらの記事やこちらの記事を拝見する限り ① 現実的なユースケース(例えばURLのパースなど)ではGo言語の正規表現は使うべきではなく、stringsパッケージの標準の関数を利用した方がパフォーマンスとしては良い。 ② Go言語で正規表現を利用するために必要な"正規表現オブジェクト"を並行にアクセスするにはパフォーマンスが問題になるので注意が必要。 とあります。その理由は、それぞれ以下に集約できるようです。 ① Go言語標準の正規表現ライブラリは、正規表現と検査文字列の長さに対して常に$O(n^2)$のオーダーで計算量が増加する安定したアルゴリズムを採用している。 ② "正規表現オブジェクト"を用いたマッチング処理には排他制御が行われている。 調べてみる Go言語のpkg/regexpの公式ドキュメ
Introduction This post is part 2 in a series. Part 1 — Using Go Modules Part 2 — Migrating To Go Modules (this post) Part 3 — Publishing Go Modules Part 4 — Go Modules: v2 and Beyond Part 5 — Keeping Your Modules Compatible Note: For documentation, see Managing dependencies and Developing and publishing modules. Go projects use a wide variety of dependency management strategies. Vendoring tools su
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く