20200704のGoに関する記事は6件です。

fatal error: newproc: function arguments too large for new goroutine

※メモです

問題

fatal error: newproc: function arguments too large for new goroutine

goroutineを実行している部分でエラー

go hogehoge()

解決策

ポインタレシーバを使う
go func() {
    go hogehoge()
}() 

参考

https://www.coder.work/article/204560

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Golang】GCP用のフォーマットでログ出力する

概要

GCPにはログ管理用プロダクトCloud Logging(旧Stackdriver Logging)があります。
GKEやCloud Runを使う場合、標準出力で出したログを自動で収集してくれてとても便利です。

“” 2020-07-04 18.28.16.jpg

これだけでも全然嬉しいのですが、GCPの定義しているフォーマットで構造化したログを出力すればもう少しいい感じに出来るので試してみます。

GCPのログについて

https://cloud.google.com/logging/docs/agent/configuration#special-fields
GCPのfluentdではこの「構造化ペイロード」のJSONフォーマットで出力すれば、
Cloud Loggingのログ構造であるLogEntryに対応付けてくれます。

LogEntry

https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry
今回は以下3点のfieldを意識します。

  • severity
    • ログレベル
    • INFOやERROR、FATALなどが定義してある
    • Cloud Logging上ではUIでログレベルによる絞り込みが容易に可能
  • timestamp
    • おそらくtimestampを定義していない場合はfluentdがログを検出したタイミングやCloud LoggingにLogEntryが登録されたタイミングのログがtimestampに登録されるはず
    • timestampを出力に含めておけばログ出力したタイミングを残せる
  • jsonPayload
    • ログ出力したいメッセージ
    • 前途の構造化ペイロードのmessageに対応付けられる

HttpRequest

https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#httprequest
HTTPのリクエストはこの構造で出力するとCloud Loggingでかなりいい感じに表示してくれます。

(背景色が灰色なログ)
“” 2020-07-04 19.15.47.jpg

Error Reporting

https://cloud.google.com/error-reporting
GCPではリアルタイムにエラーを管理するのにError Reportingの使用を推奨しています。
エラー発生時の通知はもちろん、エラー発生頻度や発生したコード位置なども表示してくれます。
“” 2020-07-04 19.18.42.jpg

このError Reportingへのエラー報告はクライアントライブラリを使う方法がありますが、
特定フォーマットのログを標準出力しCloud Logging経由で報告する方法もあります。
https://cloud.google.com/error-reporting/docs/formatting-error-messages

特定フォーマットは以下のReportedErrorEventになります。
https://cloud.google.com/error-reporting/reference/rest/v1beta1/projects.events/report?hl=ja#ReportedErrorEvent

ただし、埋めるところが多いので...
@typefieldでtype.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEventをvalueに持ったJSONフォーマットのログを出力することでもOKです。
https://cloud.google.com/error-reporting/docs/formatting-error-messages#@type

実際に出力

logrusとechoをカスタマイズしてみる

コード
https://github.com/suecideTech/sample-codes/tree/master/go-gcp-logging/logrusLogging

出力
“” 2020-07-04 19.38.33.jpg

severityによるログマークの違い、HttpRequestによるリクエスト情報の可視化が出来ているかなと思います。

zap(zapdriver)を使ってみる

爆速ロギングパッケージzapをcloud logging用にカスタマイズしたパッケージ、zapdriverが既にあるためそれを利用してみます。
https://github.com/blendle/zapdriver

コード
https://github.com/suecideTech/sample-codes/tree/master/go-gcp-logging/zapLogging

出力
“” 2020-07-04 19.38.33.jpg

ちなみにzapdriverはちゃんとReportedErrorEventでErrorReporting報告をしているみたいです。

所感

クラウドではログ管理や解析ツールが揃っているので...
何も考えずにただの文字列を出力しちゃうよりは、早い段階でログ設計をして構造化したログを出したほうがいいのかなと感じました。

参考にした記事

https://future-architect.github.io/articles/20200205/
https://note.com/_yoshioka/n/n513cbf9fd5ad
https://k11i.biz/blog/2018/10/03/stackdriver-logging-friendly-layout-java/

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【MacOS】Golangで自作のパッケージをインポートしてHello Worldする

自作のパッケージをインポートするのにハマったのでメモ

Go: v1.14.4
goenv: v2.0.0beta11

最初のディレクトリ構成

Users
└── hoge ← ここは自分のユーザー名(ここではhogeとする)
    └── go
        └── 1.14.4
            └── src
                └── github.com
                    └── username ← ここは自分のGithubのユーザー名(ここではusernameとする。ローカルで開発する分にはとりあえずなんでもいいのかな?)
                        └── app
                            ├── src
                            |   ├── main.go ← このファイルの中からhello/say.goの関数を呼び出したい
                            |   ├── hello
                            |       └── say.go
                            └── .go-version ←(ターミナルでapp直下に移動して「goenv local 1.14.4」を実行しておくこと)

go mod init <任意の名前>でモジュールの初期化を行う

$ cd /Users/hoge/go/1.14.4/src/github.com/username/app/src
$ go mod init app_sample

go.modファイルができる

Users
└── hoge
    └── go
        └── 1.14.4
            └── src
                └── github.com
                    └── username
                        └── app
                            ├── src
                            |   ├── main.go
                            |   ├── hello
                            |   |   └── say.go
                            |   └── go.mod ← ## src直下でgo mod initしたので、ココにできる
                            |
                            └── .go-version

中身

/Users/hoge/go/1.14.4/src/github.com/username/app/src/go.mod
module app

go 1.14

main.goからhello/say.goをインポート

app/src/hello/say.go
package hello

import(
    "fmt"
)

func SayHello() {
    fmt.Print("Hello World!!!")
}
app/src/main.go
package main

import (
    "app_sample/hello"  // インポート
)

func main() {
    hello.SayHello()
}

実行

$ go run src/main.go
Hello World!!!

呼び出せてはいるものの、import文にエラーがついてしまうのはvscodeの設定かなあ(; ω ;)
image.png

【オマケ】goenv導入編

goenvをbrewインストール

$ brew update
$ brew install --HEAD goenv

環境変数追記

$ echo 'eval "$(goenv init -)"' >> ~/.bash_profile

反映を忘れずに

$ source ~/.bash_profile

brewインストールしたgoenvを最新バージョンに更新する

$ brew upgrade --fetch-HEAD goenv

Goインストール

$ goenv install 1.14.4

仮想環境適用 

プロジェクトルートまで移動して、goenv localで仮想環境を適用する

$ cd /path/to/プロジェクトルート (例: /User/hoge/go/1.14.4/src/github.com/username/app)
$ goenv local 1.14.4
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

名古屋で定期開催されいている技術イベント・勉強会

はじめに

この度、名古屋を離れ、関東へ引っ越すことになりました。名古屋(東海圏)エンジニアを増やして地元を盛り上げていくという夢が叶わなくなってしまいました。

名古屋でもエンジニアコミュニティを盛り上げようと頑張っている企業さんや、エンジニアさんがたくさんいることを多くの人に共有したくこの記事を書いています。

名古屋へのUターンを考えていたり、リモートができるようになり都心を離れようかなぁと考えている人は、ぜひ次の拠点として名古屋を選択に入れる参考にしてみてください。

定期開催編

以下、定期開催されている勉強会です。

フロントエンドもくもく会

主催:Nagoya Frontend User Group
概要:フロントエンドを中心にしたもくもく会。名古屋の企業・団体からの会場提供を受けている。

名古屋アジャイル勉強会

概要:アジャイルの考え方や方法を体験的に学び、職場で活かすことを応援する、誰でも参加できるグループ。

Mobile Act

主催:フェンリル
概要:モバイルアプリ開発関連の情報共有や参加者同士の交流を目的とした勉強会。

Nagoya.Swift+

概要:技術者としての好奇心や向上心を満たすために技術的な挑戦をするふりをして遊びます。

nagoya.go

概要:名古屋のGoコミュニティ。もくもく会やGo勉強会が開催されている。

OthloTech

主催:OthloTech
概要:OthloTech<オスロテック>は東海圏の学生エンジニア・デザイナーによる学校を超えたコミュニティ。 月に1〜2回、学生限定の勉強会やハッカソンを開催。

MISO MOKU

主催:Misoca Developer Meetup
概要:毎週ベースで行われていた、エンジニア・デザイナー向けのもくもく会。弥生株式会社と合併したため、2020年7月以降の開催は未定。

番外編

開催頻度が低いけど大規模だったり、面白い試みをしているイベントを書いていきます。

NGK2020S

概要:NGK2020Sは、東海地方IT系コミュニティ合同の大新年会。普段から東海地方の勉強会に参加している人、今まで参加したことがない人、他地域の人など、 誰にとっても、さまざまなコミュニティとつながりを広げ、深める良い機会になることを目指すイベント。

みそかつウェブ

概要:名古屋という土地を生かし、エンジニア&デザイナーコミュニティを盛り上げるため、 IT業界に関わる人同士の交流の場として似た境遇の仲間を探したり、相談できる友人を作ったりできるコミュニティです。

*イベント情報の概要はリンクページから一部引用させていただいています。

最後に

思いついたイベントをばっと書いているので、どんどん追記していきます。他もあるよ~みたいなご意見ありましたら是非いただけますと嬉しいです。

コミュニティも盛り上がっているので、ぜひ色々参加してみてください。
割とアットホームな土地(外からはそう思われていないかもしれないが)なので、いいですよ~。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

名古屋で開催されている技術イベント・勉強会

はじめに

この度、名古屋を離れ、関東へ引っ越すことになりました。名古屋(東海圏)エンジニアを増やして地元を盛り上げていくという夢が叶わなくなってしまいました。

名古屋でもエンジニアコミュニティを盛り上げようと頑張っている企業さんや、エンジニアさんがたくさんいることを多くの人に共有したくこの記事を書いています。

名古屋へのUターンを考えていたり、リモートができるようになり都心を離れようかなぁと考えている人は、ぜひ次の拠点として名古屋を選択に入れる参考にしてみてください。

*以下イベント情報の概要はリンクページから一部引用させていただいています。

定期開催編

以下、定期開催されている勉強会です。

Yahoo! JAPAN Nagoya

主催:Yahoo! JAPAN
概要:ヤフー株式会社の名古屋オフィスで開催するクリエイター向け勉強会コミュニティ。 多種多様なクリエイター同士が交流できる場所として、開発スキルやノウハウについて学びながら、社内外のクリエイターがアウトプット/インプットできる機会になるべく、2019年3月にスタート。

Mobile Act

主催:フェンリル
概要:モバイルアプリ開発関連の情報共有や参加者同士の交流を目的とした勉強会。

OthloTech

主催:OthloTech
概要:OthloTech<オスロテック>は東海圏の学生エンジニア・デザイナーによる学校を超えたコミュニティ。 月に1〜2回、学生限定の勉強会やハッカソンを開催。

nagoya.go

概要:名古屋のGoコミュニティ。もくもく会やGo勉強会が開催されている。

Nagoya.php

概要:名古屋のPHPユーザーのコミュニティで、隔月で勉強会をやっています。(現在コロナ
のため休止中)

Nagoya.unity

概要:名古屋を中心に活動を行うUnityユーザのコミュニティで、主に勉強会などの開催を行っています。

Nagoya.Swift+

概要:技術者としての好奇心や向上心を満たすために技術的な挑戦をするふりをして遊びます。

よちよちAndroidサンデープログラミングの会

主催:よちよちAndroid名古屋支部
概要:趣味でAndroidアプリを開発している(これから始める)初心者の方たちが、近所のカフェなどに集まって各々アプリ開発をし、分からないことがあれば、その場で他の参加者に尋ねて解決しようという、ゆるいオフラインコミュニティ(もくもく会)。

JAWS-UG名古屋

主催:JAWS-UG名古屋支部
概要:Amazon Web Services(AWS)のユーザグループ、JAWS-UGの名古屋支部のイベント。
AWSに興味があるんだけど周りに知ってる人がいない、がっつり勉強したい!という人たちが集い、一緒に勉強する場を企画。

フロントエンドもくもく会

主催:Nagoya Frontend User Group
概要:フロントエンドを中心にしたもくもく会。名古屋の企業・団体からの会場提供を受けている。

MISO MOKU

主催:Misoca Developer Meetup
概要:毎週ベースで行われていた、エンジニア・デザイナー向けのもくもく会。弥生株式会社と合併したため、2020年7月以降の開催は未定。

OWASP Nagoya

主催:OWASP Nagoya Chapter
概要:Webをはじめとするソフトウェアのセキュリティ環境の現状、またセキュアなソフトウェア開発を促進する技術・プロセスに関する情報共有と普及啓発を目的としたプロフェッショナルの集まる、オープンソース・ソフトウェアコミュニティ。

Center CLR

概要:Center CLRは中部圏で活動する、.NET, C#, F#, ASP.NET, IoT, Microsoft Azureなどの技術を扱うコミュニティ。

機械学習 名古屋

概要:「機械学習を勉強したい!でも難しそう…」「勉強を始めた!でも挫折しそう…」「仲間が欲しい…」そういった仲間のための、「使える」機械学習を「基本から」勉強していこう! という勉強会。

名古屋CV・PRML勉強会

概要:名古屋で開催しているコンピュータビジョンに関する勉強会。

Code for AICHI

概要:愛知県で市民の課題を考え、テクノロジーで解決に導くことを目指した団体。

Qt 勉強会

主催:日本Qtユーザー会
概要:クロスプラットフォームのアプリケーション開発フレームワーク Qt で色々なものを開発しながら Qt の様々な機能を学んでいく勉強会。

xR Tech Nagoya

概要:xR Tech Nagoyaは、「VR / AR / MRの最新情報、イベント、知見の共有」「名古屋にいる同じ興味を持った人達との出会い」「VR機器を用いての体験会、ハンズオン」「自他が取り掛かる作業等の成果発表」などの体験が得られるイベント。

PMI日本支部 中部ブランチ

概要:PMI日本支部 中部ブランチ(PMIJ中部)は、名古屋を拠点に活動する、プロジェクト・マネジメントのコミュニティ。

名古屋ギークバー

概要:技術的なものから、アナログゲーム、LT大会、生ハムを食べるなど、幅広くイベントを開催され、名古屋のギークな人達に会える。

名古屋アジャイル勉強会

概要:アジャイルの考え方や方法を体験的に学び、職場で活かすことを応援する、誰でも参加できるグループ。

番外編

開催頻度が低いけど大規模だったり、面白い試みをしているイベントを書いていきます。

NGK(NGK2020S

概要:NGKは、東海地方IT系コミュニティの合同懇親会(2020年は新年会)。普段から東海地方の勉強会に参加している人、今まで参加したことがない人、他地域の人など、 誰にとっても、さまざまなコミュニティとつながりを広げ、深める良い機会になることを目指すイベント。

【中の人註:2020年は新年会でしたが、それまでは忘年会イベントが多かったです → NGK2018B, NGK2017B, …】

みそかつウェブ

概要:名古屋という土地を生かし、エンジニア&デザイナーコミュニティを盛り上げるため、 IT業界に関わる人同士の交流の場として似た境遇の仲間を探したり、相談できる友人を作ったりできるコミュニティです。

名古屋Ruby会議

概要:名古屋で行われる地域Ruby会議

オープンソースカンファレンス Nagoya

概要:オープンソースの今を伝える、入場無料のイベント。エンジニアとして活躍している社会人から、テクノロジーを学ぶ学生さんまで、幅広い層の方が参加。

最後に

思いついたイベントをばっと書いているので、どんどん追記していきます。他もあるよ~みたいなご意見ありましたら是非いただけますと嬉しいです。

コミュニティも盛り上がっているので、ぜひ色々参加してみてください。
割とアットホームな土地(外からはそう思われていないかもしれないが)なので、いいですよ~。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

名古屋で開催されいている技術イベント・勉強会

はじめに

この度、名古屋を離れ、関東へ引っ越すことになりました。名古屋(東海圏)エンジニアを増やして地元を盛り上げていくという夢が叶わなくなってしまいました。

名古屋でもエンジニアコミュニティを盛り上げようと頑張っている企業さんや、エンジニアさんがたくさんいることを多くの人に共有したくこの記事を書いています。

名古屋へのUターンを考えていたり、リモートができるようになり都心を離れようかなぁと考えている人は、ぜひ次の拠点として名古屋を選択に入れる参考にしてみてください。

*以下イベント情報の概要はリンクページから一部引用させていただいています。

定期開催編

以下、定期開催されている勉強会です。

Yahoo! JAPAN Nagoya

主催:Yahoo! JAPAN
概要:ヤフー株式会社の名古屋オフィスで開催するクリエイター向け勉強会コミュニティ。 多種多様なクリエイター同士が交流できる場所として、開発スキルやノウハウについて学びながら、社内外のクリエイターがアウトプット/インプットできる機会になるべく、2019年3月にスタート。

フロントエンドもくもく会

主催:Nagoya Frontend User Group
概要:フロントエンドを中心にしたもくもく会。名古屋の企業・団体からの会場提供を受けている。

名古屋アジャイル勉強会

概要:アジャイルの考え方や方法を体験的に学び、職場で活かすことを応援する、誰でも参加できるグループ。

Mobile Act

主催:フェンリル
概要:モバイルアプリ開発関連の情報共有や参加者同士の交流を目的とした勉強会。

Nagoya.Swift+

概要:技術者としての好奇心や向上心を満たすために技術的な挑戦をするふりをして遊びます。

nagoya.go

概要:名古屋のGoコミュニティ。もくもく会やGo勉強会が開催されている。

OthloTech

主催:OthloTech
概要:OthloTech<オスロテック>は東海圏の学生エンジニア・デザイナーによる学校を超えたコミュニティ。 月に1〜2回、学生限定の勉強会やハッカソンを開催。

JAWS-UG名古屋

主催:JAWS-UG名古屋支部
概要:Amazon Web Services(AWS)のユーザグループ、JAWS-UGの名古屋支部のイベント。
AWSに興味があるんだけど周りに知ってる人がいない、がっつり勉強したい!という人たちが集い、一緒に勉強する場を企画。

MISO MOKU

主催:Misoca Developer Meetup
概要:毎週ベースで行われていた、エンジニア・デザイナー向けのもくもく会。弥生株式会社と合併したため、2020年7月以降の開催は未定。

Nagoya.unity

概要:名古屋を中心に活動を行うUnityユーザのコミュニティで、主に勉強会などの開催を行っています。

OWASP Nagoya

主催:OWASP Nagoya Chapter
概要:Webをはじめとするソフトウェアのセキュリティ環境の現状、またセキュアなソフトウェア開発を促進する技術・プロセスに関する情報共有と普及啓発を目的としたプロフェッショナルの集まる、オープンソース・ソフトウェアコミュニティ。

名古屋ギークバー

概要:技術的なものから、アナログゲーム、LT大会、生ハムを食べるなど、幅広くイベントを開催され、名古屋のギークな人達に会える。

Nagoya.php

概要:名古屋のPHPユーザーのコミュニティで、隔月で勉強会をやっています。(現在コロナのため休止中)

番外編

開催頻度が低いけど大規模だったり、面白い試みをしているイベントを書いていきます。

NGK

概要:NGKは、東海地方IT系コミュニティ合同の大新年会。普段から東海地方の勉強会に参加している人、今まで参加したことがない人、他地域の人など、 誰にとっても、さまざまなコミュニティとつながりを広げ、深める良い機会になることを目指すイベント。

東海のエンジニアはみんな参加しているのではないか?と思うぐらい大規模なイベント。

みそかつウェブ

概要:名古屋という土地を生かし、エンジニア&デザイナーコミュニティを盛り上げるため、 IT業界に関わる人同士の交流の場として似た境遇の仲間を探したり、相談できる友人を作ったりできるコミュニティです。

最後に

思いついたイベントをばっと書いているので、どんどん追記していきます。他もあるよ~みたいなご意見ありましたら是非いただけますと嬉しいです。

コミュニティも盛り上がっているので、ぜひ色々参加してみてください。
割とアットホームな土地(外からはそう思われていないかもしれないが)なので、いいですよ~。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む