タグ

関連タグで絞り込む (213)

タグの絞り込みを解除

goに関するlax34のブックマーク (218)

  • Go製アプリケーションのコンテナ化にはkoを推したい - YAMAGUCHI::weblog

    はじめに こんにちは、Google Cloudでオブザーバビリティを担当しているものです。Cloud Operations suiteをよろしくおねがいします。(宣伝終わり) この記事はGo Advent Calendar 2021 その1の22日目の記事です。昨日は @sago35tk さんの「ESP32 向けに TinyGo をセットアップする」でした。TinyGoのコアな情報を日語で教えてくれるtakasagoさんには当にいつも感謝しています。 さて、今日はGo製のアプリケーションをdockerlessでコンテナ化できるkoの紹介をします。koは当にイチオシのツールで、みんなに使ってもらいたいのでぜひ使ってください。 github.com DockerによるGo製アプリのコンテナ化 まず最もポピュラーと思われるDockerを用いた場合のGo製アプリケーションのコンテナ化の方法に

    Go製アプリケーションのコンテナ化にはkoを推したい - YAMAGUCHI::weblog
  • io.CopyにはなるべくWriteTo関数を渡してあげた方が良さそう - Qiita

    io.Readerのファイルタイプを判定する を拝見してちょっと気になったので調べました。 io.MultiReaderではWrite関数しか実装されておらず、 WriteTo(w Writer) (n int64, err error)関数が存在しません。 そのため、みんな大好きio.Copyで積極利用されるWriteTo(w Writer) (n int64, err error)関数が働かず少し残念な気持ちがありました。 もしかすると気持ちだけの問題かもしれないのでBenchmarkしてみました。 bufio.Readerには WriteToが実装されいたので、こちらを元のReaderに被せてる事にしました。そうすると都合よくまさにリード位置を進めず先頭から指定バイト数だけ読むbufio.Peek関数が用意されていたのでそちらを利用しました。 元のisGzip関数を書き直したのが以下

    io.CopyにはなるべくWriteTo関数を渡してあげた方が良さそう - Qiita
  • Google Cloud CLI を使用して Cloud Functions の関数を作成する  |  Cloud Functions Documentation

    Google Cloud CLI を使用して Cloud Functions の関数を作成する このページでは、Google Cloud CLI を使用し、Cloud Functions(第 2 世代)を作成してデプロイする方法について説明します。 始める前に Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads. Google Cloud Console の [プロジェクト セレクタ] ページ

    Google Cloud CLI を使用して Cloud Functions の関数を作成する  |  Cloud Functions Documentation
  • Go ランタイム  |  Cloud Functions Documentation  |  Google Cloud

    Go ランタイム 概要 Cloud Functions は、オペレーティング システムのバージョンに加えて、アドオン パッケージ、言語サポート、お使いの関数をサポートして呼び出す Functions Framework ライブラリで構成される環境で実行されます。この環境は言語バージョンで識別され、ランタイムとして知られています。 ランタイムに関する一般的な情報と、各 Go ランタイムが使用する Ubuntu のバージョンについては、Cloud Functions 実行環境をご覧ください。 ランタイムの選択 Cloud Functions は、ランタイム サポートのページに記載されている複数のバージョンの Go をサポートしています。デプロイ時に、関数に使用する Go ランタイムを選択できます。 gcloudGoogle Cloud CLI を使用している場合は、目的の Go ランタイムで

    Go ランタイム  |  Cloud Functions Documentation  |  Google Cloud
  • go.modとgo.sumの読み方

    go.mod 主にモジュールのインポートパスとバージョン情報を書いておくためのファイルで、いくつかのディレクティブを使ってアプリケーションがどのような依存関係を持っているか記述しておきます。 go mod tidy等を実行するとこのファイルを元に依存先を取得し次項で解説するgo.sumを生成します。 サンプル module github.com/ryo-yamaoka/sample-lib go 1.17 require github.com/ryo-yamaoka/direct-dependent-lib v0.0.2 require github.com/ryo-yamaoka/indirect-dependent-lib v0.0.4 // indirect exclude github.com/ryo-yamaoka/direct-dependent-lib v0.0.1 repl

    go.modとgo.sumの読み方
  • go:embed 詳解 - 使用編 - - Qiita

    go1.16rc1 以降は 👉コチラ で更新していきます。 この記事は Go Advent Calendar 2020 23日目 と CyberAgent Developers Advent Calendar 2020 24日目 の記事です。 はじめに 来年の2月にリリース予定の Go1.16 にはいつものリリースと同じように興味深い新機能が多数追加される。その中でも特に注目されている機能として、Go のビルド済みバイナリに読み込み専用の静的ファイルを埋め込む go:embed ディレクティブがある。これまで静的ファイルをバイナリに埋め込むアプローチは種々提案されてきたが1、ツールやOSごとに埋め込み方がバラバラで、それぞれ使い方を覚えたり、特定ツールへの依存がどうしても避けられなかった。今回このディレクティブの導入により Go 公式として統一される形となる。 このディレクティブ導入が注

    go:embed 詳解 - 使用編 - - Qiita
    lax34
    lax34 2021/09/26
  • Go言語で基本的なCRUD操作を行うREST APIを作成 | DevelopersIO

    Javaエンジニアだった私がGo言語でREST APIを作る上で学んだことをまとめています。 プロジェクト構成、単体テスト、Dockerイメージの作成など実際にREST APIを開発する上で必要だと思われる要素を盛り込みつつサンプルプロジェクトを作成していきます。 はじめに Javaエンジニアだった私がGo言語でREST APIを作る上で学んだことをまとめています。 プロジェクト構成、単体テスト、Dockerイメージの作成など実際にREST APIを開発する上で必要だと思われる要素を盛り込みつつサンプルプロジェクトを作成していきます。 今回はできるだけ外部ライブラリやフレームワークを使わずにGo言語の標準機能のみで開発しました。 これからバックエンドにGo言語を使用することを検討されている方の参考になれば幸いです。 ※この記事は既にGo言語の開発環境をセットアップ済みで基的な文法を学

    Go言語で基本的なCRUD操作を行うREST APIを作成 | DevelopersIO
  • Big Sky :: Go に Fuzz testing が入った。

    みなさん Fuzz testing ってご存じでしょうか。 人間が作る物は必ずといっていいほどバグが存在します。そしてそのコードをテストする人間も必ずバグを見逃します。 想定していなかった境界値テスト等、人間には先入観という物があり、それが邪魔をして簡単にバグを見逃します。昨今、この様な誰も気付かなかったバグの隙間を突く様な脆弱性が沢山見つかっています。 物によっては重大インシデントに発展する物まであります。 こういった人間では想定できない様なバグを見付けてくれるのが Fuzz testing です。Fuzz testing を実施する事で、ソフトウェアは頑丈になり安全にもなりえます。 日、Go の master ブランチに Fuzz testing の機能が入りました。 [dev.fuzz] Merge remote-tracking branch 'origin/dev.fuzz'

    Big Sky :: Go に Fuzz testing が入った。
  • Go言語でメタプログラミング|デロイト トーマツ ウェブサービス株式会社(DWS)公式ブログ

    YouTubeのプレミアム会員に入ってしまい、動画を見る時間がますます増えてしまいました。エンジニアの内山です。 最近の業務では、Go言語を書いています。言語の機能については物足りなさを感じることもありますが、それよりもシンプルさが結構気に入っています。 今回は、Go言語のメタプログラミングについて、ご紹介します。 メタプログラミングとは 開発業務では、似たような単純なプログラムを何度も書く必要がある場合があります。ボイラープレートと呼ばれるようなプログラムです。 そのようなプログラムを自動生成するプログラムを書いて、効率化することはよくあると思います。 この 「プログラムを生成するプログラムを書くこと」 を メタプログラミングと呼びます。 筆者が参加しているプロジェクトでは、実際に以下のようなことを行っています。 AWS LambdaのHandlerとなるプログラムと呼び出し関数を自動生

  • YAML+Mustache+go-generate で go の メタプログラミング をする - Qiita

    ※この記事は、CyberAgent PTA Advent Calendar 2020の24日目の記事です。 株式会社AbemaTV ビジネス開発部 で広告システムのエンジニアをしています @shunta-furukawa です。 今日はクリスマスイブですね。メリークリスマスイブ!! はじめに さて、AJA SSPとその技術について、でも触れられていましたが、サイバーエージェントで作られるシステムで Go言語が用いられることは多いです。 Go言語は、他の言語と比べて 言語仕様がシンプルなためハイパフォーマンスを出しつつも 扱いやすいために人気がある言語だと思います。反面、抽象化された賢い記法などがなく、記述量が多い言語でもあると思います。 書いていると気付いたらもう夜に... どうにか実装スピードをあげたい... そんな時に、go generate と Mustacheと YAML を使っ

    YAML+Mustache+go-generate で go の メタプログラミング をする - Qiita
  • 筋肉によるGoコードジェネレーション

    github.com/lestrrat/go-slackを主軸として、筋肉(fmt.Fprintf)を使ったコードジェネレーションを紹介Read less

    筋肉によるGoコードジェネレーション
  • GoとGinをプロジェクトで使ってみて思ったこと - Qiita

    はじめに k.s.ロジャースの西谷です。 今回はGo言語とGinを使ってプロジェクトの開発を行いました。 実務利用は初めてで、このときに感じた便利な機能や躓いた箇所について書いてみようと思います。 もし、間違いやより良い実装があればコメントにて教えて頂けたらと思います。 開発環境 言語: Go 1.13.3 フレームワーク: Gin 便利だと思った所 リクエストのバリデーション Ginではリクエストオブジェクトの定義にbindingを書くことでバリデーションを実施できます。 特殊パターン以外はリクエストに直接書くことができるので、直感的だと思います。 以下のように書くと、reqはIDの値は必ず存在し、Ageは0以上となります。 type CreateUser struct { ID string `json:"id" binding:"required"` Name string `jso

    GoとGinをプロジェクトで使ってみて思ったこと - Qiita
    lax34
    lax34 2021/07/30
  • ドキュメント

    Gin ってなに?Gin は Golang で書かれた Web アプリケーションフレームワークです。martini に似たAPIを持ちながら、httprouter のおかげでそれより40倍以上も速いパフォーマンスがあります。良いパフォーマンスと生産性が必要であれば、Gin が好きになれるでしょう。 Gin はどうやって使うの?APIの使い方のサンプルと、公開されている gin を利用しているプロダクトのリストを提供しています。 Gin にコントリビュートするには?議論の場で人々を助けてあげてくださいGin を利用した成功事例を教えてくださいGin を良くするにはどうすればいいか教えてください既に存在するライブラリにコントリビュートしてください

  • Goにはディレクトリ構成のスタンダードがあるらしい。 - Qiita

    参考URL 上記リポジトリにはGOプロジェクトでのスタンダードとなるディレクトリ構成の説明が書いてある。一つずつ見ていくことにします。 /cmd 一番メインとなるディレクトリ。このディレクトリの中にアプリケーションのエントリーポイントを作る。 注意点としてはmain.goに多くのことをさせないことである。各処理は基的に後述する/pkgなどで実装していくのでそれをインポートする形を取るべきだとある。 /internal /cmdで作ったエントリポイントで使いたいライブラリをおく。だが、このライブラリは各アプリケーション毎に書かれるものとなるので他のアプリケーションと共有するライブラリは置かない。そうゆうのをおくとすれば、後述の/pkgに置く。

    Goにはディレクトリ構成のスタンダードがあるらしい。 - Qiita
  • GoはいつGCするのか?

    TL;DR Go(のランタイム)は以下のタイミングで自動的にGCを実行する 前回のGC後に占有していたメモリと同量を新たに確保したとき 前回のGCから2分後 cgroupなどでメモリ制限しているときは、メモリ使用量が制限の50%以上になったらruntime.GC()を呼び手動でGCすべきである 前置き: GoとOOMのこれまで 以下はGo 1.16での調査結果です。Goのバージョンが異なった場合は事情が異なる可能性があります。 Goでプログラムを書く際に、使用メモリ量を気にしなければならないシーンはGCのおかげでそう多くはありません。実際それは間違いではないのですが、運用まで視野に入れるとそうは言ってられないことがあるのもまた現実です。昨今はコンテナの利用が当たり前になったことに伴い、OOMによりプロセスが強制的に終了させられることもあり、それを避けるために一定量以下のメモリで動くことが重

    GoはいつGCするのか?
  • 【8/26開催】Gopher道場 昇段審査説明会 〜 自分のGo力を可視化しよう 〜 (2021/08/26 19:30〜)

    イベント概要 イベントでは、Gopher道場 昇段審査の参加方法や解答にあたってのコツや注意点を解説するイベントです。ご自身のGoのスキルレベルを客観的に評価したい方、ステップアップのためのきっかけが欲しい方はぜひ説明会に参加して昇段審査にチャレンジしてみてください。 Gopher道場 昇段審査について 概要 Gopher道場では昇段審査と称してGoのスキルレベル(Go力)を図るテストを行う予定です(このイベントでは説明のみです)。出題される課題は白帯(Low)、茶帯(Middle)、黒帯(High)の3つのレベルに分けて出題されます。各レベルは次のように定義して作成しています。 白帯:Goの基礎が理解できている。標準パッケージを扱うことができる 茶帯:抽象化や単体テスト、エラー処理が行える 黒帯:難しい課題に挑戦することができ、Goエンジニアとして企業で活躍できる 解答を提出して頂いた

    【8/26開催】Gopher道場 昇段審査説明会 〜 自分のGo力を可視化しよう 〜 (2021/08/26 19:30〜)
  • ginを最速でマスターしよう - Qiita

    初めに ginとは何でしょうか ginはGoGolang)で書かれたWebフレームワークです。 httprouterのおかげで、最大40倍高速なパフォーマンスを備えたmartiniのようなAPIを備えています。パフォーマンスと優れた生産性が必要な場合は、Ginを好きになるでしょう。--公式ドキュメント パフォーマンスが良いのが売りらしいですが、他のGo言語のwebフレームワークと比較してみます。 人気ランキング githubのスターの多い順 Name Stars Forks Issues Open Issues Closed Birth Year Latest Update Author

    ginを最速でマスターしよう - Qiita
  • GitHub - go-sql-driver/mysql: Go MySQL Driver is a MySQL driver for Go's (golang) database/sql package

    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

    GitHub - go-sql-driver/mysql: Go MySQL Driver is a MySQL driver for Go's (golang) database/sql package
  • マスター・オブ・goパッケージ

    1. The Go gopher was designed by Renée French. The gopher stickers was made by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license. マスター・オブ・goパッケージ @会津大Go言語+仮想通貨勉強会 2017年12月10日 1 ※ この資料はGolangUK 2017の発表資料を改良したものです 3. ソウゾウ エキスパートチーム 技術アウトプットするところに技術は集まる ■ エキスパートチームとは? ● 50%以上の時間を技術コミュニティへの貢献に充てる ■ エキスパートチームの役割 ● 社内に新しい技術を取り取り込む ● 社外のコミュニティなどを通じて社会へ還元する ■ エキスパートチームの活動 ● カンファレン

    マスター・オブ・goパッケージ
  • Goの抽象構文木(AST)を手入力してHello, Worldを作る #golang - Qiita

    はじめに タイトルを見て、「はて?何を言ってるんだろう」と思った方もいるでしょう。 その通りです。通常、抽象構文木(AST)を取得するには、「ASTを取得する方法を調べる」で解説したように、go/parserパッケージの関数を使ってソースコードをパースする必要があります。 しかし、この記事では温かみのある手入力をすることで、日頃なんとなく取得しているASTがどういうノードで構築されているのか、最低限必要なフィールドは何なのかということを改めて知ることを目的としています。 なお、この記事を書いた時のGoの最新バージョンは1.7.4です。 今回作るコード 今回はかのプログラム言語Cやプログラミング言語Goで有名なHello, Worldを出力するプログラムを作りたいと思います。 具体的には、以下のようなコードです。 なお、せっかくなので、ここではGoっぽく、Hello, 世界としています。 p

    Goの抽象構文木(AST)を手入力してHello, Worldを作る #golang - Qiita