並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 67 件 / 67件

新着順 人気順

golangの検索結果41 - 67 件 / 67件

  • GoのBunでFunctional Option patternで少しだけクエリを書きやすくした

    GoのORMライブラリBunを使用する際、複雑なリレーションを持つモデルを扱うと、 以下のように同じようなリレーションを持つクエリを繰り返し書くことがあります。 // 例:特定のチームメンバーをチーム・メンバー情報・チームの作成者を一緒に持ってくるクエリ func (d *MemberDriver) FindTeamMembers(ctx context.Context, exec bun.IDB, memberID string) ([]*models.TeamMember, error) { var ms []*models.TeamMember err := exec.NewSelect(). Model(&ms). Relation("Team"). Relation("Team.Detail"). Relation("Team.CreatedBy"). Relation("Tea

      GoのBunでFunctional Option patternで少しだけクエリを書きやすくした
    • JVM言語未経験者向けの Scala 入門

      JS, Ruby, Python や golang など他の言語をそれなりに書いているけれど Scala(や JVM)を触ったことのない人向けの Scala のはじめかた. 最低限のセットアップ Java 8 以上をインストール Scala のアプリケーション・ライブラリは Java (JRE) があれば実行することができます. brew なり apt なりで所望の Java をインスコしましょう. VCS で管理する必要のないファイル 次のファイル、ディレクトリはビルド時に生成されるものやLSPの設定ファイルなのでVCS で管理する必要はありません. コードリーディングにオススメのプロジェクト ある程度コードを書いたことがあるなら制御構文などはすぐに頭に入るはずなので、まずはコードリーディングからはじめてみるといいかもしれません. Scala のライブラリの中でも cats 系のライブラ

        JVM言語未経験者向けの Scala 入門
      • [Golang]defined typeのメリット・デメリット

        はじめに goで作ってるAPIサーバの文字列情報がすべてstring管理でしんどみを感じていたので、defined typeを使い始めた。 使い方について説明してるところはあるけどメリット・デメリットについて書いてるページはなさそうだったので書いていくよ。 この記事を読んで欲しい人 defined typeが気になってるけどイマイチ踏み込めない人 defined typeをなぜ使うのかよくわからない人 defined typeってなぁに? 端的に言うと「型に任意の型名をつける機能」。 type UserID string func main() { var userID UserID = "abcd123" fmt.Printf("UserID : %s", userID) } // 【出力】 // UserID : abcd123

          [Golang]defined typeのメリット・デメリット
        • [gomock] 新しく追加されていたCondが便利だった件

          gomockとは? gomockは、Go言語用のモッキング・フレームワークです。 元々はGoogleのgolang/mockとして開発されていましたが、2023年の6月頃にプロジェクトがアーカイブされ、現在はUber社がフォークして保守しています。 基本的な使い方はこちらの記事をご参照ください。 本記事ではUber社によってフォークされたのちに追加された便利Matcherのうち、特に活用頻度が高いCondMatcherについて紹介していきます。 Cond以外のMatcherについては下記スライドやGithubのreleasesをご参照ください。 Condの使い方 Cond は、モック関数のパラメータとして渡された関数が true を返した場合にマッチするMatherを返します。 特にカスタム構造体のフィールドに対してマッチさせたい場合に便利です。 func main() { type us

            [gomock] 新しく追加されていたCondが便利だった件
          • go generate 入門

            Go で構造体を書く際に Getter を手で書くのは面倒だなと感じました。 普段は Rust で開発していて、derive-getters クレートが便利なので、Go でも同じようなことができないかなと調べたところ go generate で実現できることがわかったので試してみました。 go generate とは 概要 Go 1.14 で導入された機能で、コードを自動生成するための仕組み コード内に //go:generate ディレクティブを記述することで、指定されたコマンドを実行し、その出力をコードとして取り込むことが可能 利点 コードの冗長性を削減し、可読性を向上させることができる コード生成を自動化することで、開発者の負担を軽減できる テンプレートエンジンやコードジェネレータなどのツールと連携することで、より複雑なコード生成を行うことができる 使い方 コード内に //go:ge

              go generate 入門
            • ゼロから作る!HTTPルーター:進捗ゼミナール

              Go言語でWebサーバーの基礎をゼロから実装してみましょう!Webサーバーの基礎となるアルゴリズムおよび最適化を完全に理解することを目指します。Go言語製のOSSであるHttpRouterを再実装することができます。普段使っているWebフレームワークの裏側を覗いてみませんか? この本を最後まで読めば、自作のルーターでWebアプリが動かせます! ★こんな人におすすめ! ・バックエンドアプリケーションを書いた経験がある ・物事の仕組みを知るのが好き ★こんな人にはおすすめじゃないかも… ・Go言語で実用的なWebアプリを作る方法を学びたい ・ネットワーク層で使われているルーターの実装方法を知りたい ※ネットワークのルーターについて学びたい方は、「Golangで作るソフトウェアルータ(https://techbookfest.org/product/3XvNV4jUJZH1HwNsRxaJdf)

                ゼロから作る!HTTPルーター:進捗ゼミナール
              • 【golang】slogを雑に使ってみる

                golang1.21から標準パッケージに追加されたslogを雑に使ってみたメモ 今やっているPJに合わせて作ったものなので汎用性は無い。(contextから値取り出してログのパラメータに設定するとか) slogを直接呼び出す package logger import ( "log/slog" "os" ) func InitLogger(logLevel string, format string) { logger := newSlogLogger(logLevel, format) slog.SetDefault(logger) } func newSlogLogger(logLevel string, format string) *slog.Logger { handler := newJSONHandler(logLevel, format) return slog.New(h

                  【golang】slogを雑に使ってみる
                • 開発環境管理はとりあえずmiseで

                  Mac限定です(Windowsサポート外) 開発しているとpython, nodejs, ruby, perl, golang...といろいろな言語の実行環境が必要になると思います。 それぞれの言語環境に閉じて見れば、pyenvとかrbenvとか、色々な管理ツールがありますが、それぞれ当然別個のものなのでだんだん混乱してきます。 そしてそれすら使っていない場合は brew install で乱暴にインストールしてもはやカオスなローカル環境ができがちでした... 半年前くらいにasdfという開発環境管理ツールを見つけて適当に使っていたのですが、最近ではさらにasdfの課題も解消したmiseというのが出てきて、これを使っています。 メリット 複数の言語の複数のバージョンを一つのツールmiseだけで管理、切り替えできる。 利用方法がシンプルで簡単。 miseについて 読み方は「ミーズ」(pron

                    開発環境管理はとりあえずmiseで
                  • CELで独自のオブジェクトをprotobufを使って変数定義する - Carpe Diem

                    概要 CELでは評価式で扱う変数をEnvironment内で定義しますが、既存のデータモデルを使いたい場合は 同じ定義を都度作らないといけない 変更があった際の追従漏れが発生する といった手間が発生してしまいます。 しかしそのデータモデルがprotobufで定義されていれば再利用することが可能です。 今回はその方法を紹介します。 環境 go v1.22.1 cel-go v0.20.1 実装 外部protoの例 cel.Typesで型を読み込み、cel.ObjectTypeでその型を指定してcel.Variableで自分の変数として定義します。 import ( ... "github.com/google/cel-go/cel" rpcpb "google.golang.org/genproto/googleapis/rpc/context/attribute_context" "goo

                      CELで独自のオブジェクトをprotobufを使って変数定義する - Carpe Diem
                    • [golang] 言語仕様から見るunittestとClean Architectue - Qiita

                      概要 GolangでServiceを作る中で感じたunittestおよびClean Architectureという壁についてまとめてみた。 Golangにおけるテストとモック 『Unittestのために、モジュール間参照はインターフェースを使わなければならない』 Golangでunittestを書こうと思ったとき、困るのがモックだ。 例えばJavaであれば、どんなClassもそれを継承したClassを(無理やり)作る事ができるので、対象のコードの中の依存オブジェクトをモックに差し替える事ができる。 例えばPythonやJavaScriptであれば、そもそも型がないので自由にモックに差し替える事ができる。 ところが、Golangでは、

                        [golang] 言語仕様から見るunittestとClean Architectue - Qiita
                      • VSCodeで生産性を上げる

                        はじめに こんなツイートを見て執筆をしようと思いました。 実際に、VSCodeは機能の追加や拡張機能の開発が活発に行われており、かつUIもユーザーフレンドリーであるため人気のエディターだと思います。VSCodeを使いこなせるのとそうでないのではエンジニアリングの生産性に大きな差が出てしまうと思います。 パンくずの設定 '>' を入力します。 '>' preferences: Open User Settings (JSON)を入力します。 僕のsettings.jsonは以下です。 { "workbench.colorTheme": "GitHub Dark", "terminal.integrated.fontFamily": "MesloLGM Nerd Font", "terminal.integrated.profiles.osx": { "fish": { "path": "/o

                          VSCodeで生産性を上げる
                        • [Go] 構造体に特定のメソッドが定義されていれば呼び出す

                          発端 Go のアプリケーションでエラーを Sentry に送っているのだが、スタックトレースが表示されなくて調査が困ったときがあった。 どうすればスタックトレースを送れるのだろうと気になって調べたところ、sentry-go では次の 3 つのパッケージを使って errors を扱っている場合にのみ、スタックトレースを取得できるらしい。 https://github.com/pingcap/errors https://github.com/pkg/errors https://github.com/go-errors/errors これらのパッケージはスタックトレースを保持する仕組みを持っており(errors.WithStack() など)、sentry-go でそれを取得している。 これはどうやって実装しているのだろうと気になったので読んでみたところ、reflect パッケージでメソッド

                            [Go] 構造体に特定のメソッドが定義されていれば呼び出す
                          • SWTPM と Docker ではじめる TPM アプリケーション開発

                            TPM を使ったアプリケーションを作ってみたい、でも、学習コスト...お高いんでしょう? 全宇宙で 3 名くらいの方が抱えていそうな気がするお悩みに応えるクリスマススペシャル小ネタレシピを公開します🍰 TPM ムズカシイ TPM(Trusted Platform Module)の学習は沼です。 TPM なんぞや、どんな使い方デキル、どうやって使う、どうやって開発、どうやってデバッグ、テスト...。 浦島太郎が亀に乗って元の浜に帰ると、地上では 700 年もの年月が経過しておりましたとさ🐢。 ・・・と、まではいかなくともムズカシイのは確かです。 本稿は『TPM 完全に理解した』と勘違い出来る程度の理解を促す手助けをします。 なお本稿の対象とする TPM は TPM 2.0 デバイスのみで、TPM 1.2 は一切触れません。 まず、TPM なんぞや 〜 どうやって使うまでをサクっと学習する

                              SWTPM と Docker ではじめる TPM アプリケーション開発
                            • [API技術選定2] コンテナレジストリ, コンテナオーケストレーションツール周りの技術選定

                              概要 API作るものと構成 の環境構築のために、GitHub ActionsでGolang ApplicationのdockerビルドとEC2デプロイするCI/CDの技術選定を行う。 技術選定,調査 前提:使うサーバはAWS(AWSの何かは未決定) 前提として今までの開発や今後の仕事から、使うサーバはAWSのものと決めている。 3大クラウド(Azure, AWS, GCP)の中でAWSを使う、と言う話。 ここはほぼ趣味なので比較はなし。 なので最終的にEC2, ECS, EKSなどにデプロイする。 コンテナレジストリ選定(Docker Hub, ECR, Github Packages, Artifactry Registryの比較) コンテナイメージを本番環境にデプロイする際に利用するコンテナレジストリを選定する。 以下の理由でECR(公開リポジトリ)を利用にする。 docker ima

                                [API技術選定2] コンテナレジストリ, コンテナオーケストレーションツール周りの技術選定
                              • flutterでSVGが正しく表示されない問題解決した

                                *この問題はflutter_svgのライブラリについてです。 問題の箇所 SVGの形式によっては、以下のように正しく表示されない問題があります。 正しく表示できているものは正しい形式のもの。 問題の原因 問題は以下で言われている通り、対応していないタグのstyleタグが入ってしまっているからだと思います。 対応してくれたら良いのにと思いましたが、 「全体の仕様を変えないといけないし、これ以上複雑になる」 と作者が発言していることから対応は期待できないでしょう。 問題の解決 根本的な解決にはなっていないですが、Figmaの場合、出力形式のColor profileを「sRGB」にすることで解決しました。 この形式にすることでstyleタグが挿入されないようです。 Figmaじゃない方はstyleタグが挿入されない出力形式にすることで対応できそうです。 さいごに 👋 主にFlutter使って

                                  flutterでSVGが正しく表示されない問題解決した
                                • Podmanを始めたい - Qiita

                                  はじめに この記事はDocker経験者がPodmanを使ってみる記事です。主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)誤りなどがあれば書き直していく予定です。 Podmanってなんですか? PodmanとはLinuxのディストリビューションで有名なRed HatさんところのエンジニアがOSSとして開発したコンテナオーケストレーションツールです。 公式では以下のように説明されています。 Podman (POD マネージャー) は、Linux® システム上でコンテナを開発、管理、実行するための オープンソースツールです。Red Hat® のエンジニアがオープンソース・コミュニティと共に開発した Podman は、libpod ライブラリを使用してコンテナエコシステム全体を管理します。 アーキテクチャがデーモンレスで包括的であることから、Podman はコンテナ管理

                                    Podmanを始めたい - Qiita
                                  • 個人開発のアプリを1ヶ月AWSでホスティングした際の利用料金 - Qiita

                                    個人開発したアプリケーションを1ヶ月AWSでホスティングした際の、おおよその金額感について整理していく。 AWS使用料金 データは2024年4月のもの。 日本円で6947円である。 コストの割合 ALB, ECS, VPC の3つが主なコスト発生源となっている。 サービス毎の利用料金について 上記で発生しているコストについて、東京リージョンのケースで試算してみる。 ALB ほぼトラフィックは発生していないため、時間単位での課金が99.98% を占める。 料金 - Elastic Load Balancing | AWS 時間単位での課金 USD 0.0243 / per hour 👉 0.0243 * 720 = 17.496 使用量に応じた課金 USD 0.008 / LCU 時間 計算方法は複雑なため、詳細を知りたければ↓↓を参照 AWS ALB LCUコスト確認まとめ - Qiit

                                      個人開発のアプリを1ヶ月AWSでホスティングした際の利用料金 - Qiita
                                    • HTB Business CTF 2024の参加レポート・writeup(Web&Misc編) - ラック・セキュリティごった煮ブログ

                                      こんにちは、デジタルペンテスト部(DP部)のst98です。 2024年5月18日(土)から2024年5月22日(水)にかけて、HTB Business CTF 2024という世界中の企業が競い合うオンラインのCTF(Capture The Flag)が開催されました。ラック社内のCTFプレイヤーに声をかけ、14名のメンバーからなるチーム「LAC SeaParadise」*1を結成し、943チームが参加する中で国内2位/世界8位という成績を収めました。 本記事では、HTB Business CTFとはどのような大会だったかを説明した後に、このCTFでWebやMiscのカテゴリから出題された問題について、我々がどのようなアプローチで解いたかを紹介していきます。 参加レポート HTB Business CTFについて LAC SeaParadiseについて 大会の結果 writeup TL;DR

                                        HTB Business CTF 2024の参加レポート・writeup(Web&Misc編) - ラック・セキュリティごった煮ブログ
                                      • Istioによるトラフィック制御で仮想待合室システムを目指すけどもやな - じゃあ、おうちで学べる

                                        この記事では仮想待合室システムを目指すけども結局はできておらずIstioのトラフィック制御までがメインです。方針は決まったが睡魔に負けたのでこの記事はここまで はじめに 登壇で抽象度の高いことを人前で喋ってとても心が疲れたので技術者として手を動かしたいです。深夜ノリなのでガバガバである。今回は、Istio を用いて仮想待合室が作りたくなってたのでKubernetes環境でIstioを使用してトラフィック制御を実装する方法について、解説します。この記事では、将来的な仮想待合室システムの構築を視野に入れつつ、まずはトラフィック制御の基本的な実装に焦点を当てます。Kindを使用したローカル開発環境の構築から、Istioによるトラフィック管理の設定、そして実際のテストを実行します。 Istio in Action (English Edition) 作者:Posta, Christian E.,M

                                          Istioによるトラフィック制御で仮想待合室システムを目指すけどもやな - じゃあ、おうちで学べる
                                        • Go Conference 2024でGo package guessrをしました - OPTiM TECH BLOG

                                          こんにちは、プラットフォームサービス開発部の中村です。 最近はマネージャーとしてOPTiM Cloud IoT OSや新規プロダクトのオーナー・技術サポートをしつつ、カンファレンス等の技術イベント周りにも関わっている毎日を過ごしています。先月のTSKaigi 2024に協賛・参加してきました - OPTiM TECH BLOG に引き続き、Go Conference 2024ではシルバースポンサーとして協賛を行いました。そのレポートを弊社のブースを中心にお届けしたいと思います。 その前にお知らせを1つ挟みます。7/2(火)にGoの勉強会を開催する予定です。 オプティムのエンジニアも参加しますので、オフライン限定となりますがGolangに関しての情報共有ができればと思いますので、ぜひご参加ください。 optim.connpass.com Go Conference 2024 公式ページ にも

                                            Go Conference 2024でGo package guessrをしました - OPTiM TECH BLOG
                                          • AWS Lambda関数をGolangで実装し、Github Actionsで構築自動化してみた - Qiita

                                            1. はじめに この記事では、AWS Lambda関数をGolangで実装し、その更新を手動および自動化する方法について解説します。特に、GitHub Actionsを用いた構築自動化の手法に焦点を当てます。 2. AWS Lambdaとは AWS Lambdaは、イベント駆動型のサーバーレスコンピューティングサービスです。ユーザーはインフラストラクチャを管理することなくコードを実行できます。 https://aws.amazon.com/jp/lambda/ 3. GolangでのLambda関数実装 3.1 Golangの環境構築 ※他記事を参考にしてください。 3.2 簡単なLambda関数の作成 今回、Lambdaはコンテナイメージで実装しています。 コンテナイメージにする利点や具体的な実装詳細についてはエムスリーさんのテックブログを参考にしました。 以下は要点です: Golang

                                              AWS Lambda関数をGolangで実装し、Github Actionsで構築自動化してみた - Qiita
                                            • golangではswitchのdefaultが先頭に書ける

                                              2014-01-14 / Go 今日からプログラミング言語 Go ドキュメントを読み始めた。 switchのところを読んで気づいたけど、switch文でdefaultが先頭に書かれている。 switch t := interfaceValue.(type) { default: fmt.Printf("unexpected type %T", type); // %T prints type case bool: fmt.Printf("boolean %t\n", t); case int: fmt.Printf("integer %d\n", t); case *bool: fmt.Printf("pointer to boolean %t\n", *t); case *int: fmt.Printf("pointer to integer %d\n", *t); } golangでは

                                                golangではswitchのdefaultが先頭に書ける
                                              • Go言語でgRPCを使ってHello Worldしてみよう - とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

                                                Go言語でgRPCをやることになったので、勉強を兼ねてHello Worldレベルの簡単なものを作ってみます。 gRPCとは リモートプロシージャコール(RPC)用のフレームワークで、Googleによって次世代版として開発されたものです。 gRPCのgはGoogleのことを指していたという説もあるようですが、現在では何も意味していないそうです。 grpc.io プロシージャコールとは gRPCの前にRPCやプロシージャコール(PC)というものがありますが、まずはプロシージャコールについて説明します。 プロシージャコールと聞くと、何か難しいことをしているように聞こえますが、簡単に言ってしまうと以下のプログラムような関数を呼び出すことです。 package main import "fmt" func add(a int, b int) int { return a + b } func ma

                                                  Go言語でgRPCを使ってHello Worldしてみよう - とことんDevOps | 日本仮想化技術のDevOps技術情報メディア
                                                • インターン生として半年間ENECHANGEで働いてみて - ENECHANGE Developer Blog

                                                  はじめに 初めまして! 2024年2月からWebエンジニアとしてENECHANGEの就業型インターンに参加している植月です。 現在は大学院修士2年生で計量経済学系の研究室に所属しており、普段は主に一人、チーム問わずWeb開発をしています。 約半年間、インターン生としてENECHANGEで働くことで学んだことや感じたことを書いていこうと思います。 参加したきっかけ ENECHANGEさんと初めて接点を持ったのは、とある面談イベントでCTOの有田さんとお話しをさせていただいた時です。いきなりCTOの方と話すのはとても緊張したのですが、滅多にない機会、かつ就活中だったということもありいろんな人の話を聞いておいたほうがいいだろうと思い参加させていただきました。 面談ではChatGPTがソフトウェア開発をどのように変えていくか、今後ENECHANGEをどうしていきたいかといったお話を熱く語っていただ

                                                    インターン生として半年間ENECHANGEで働いてみて - ENECHANGE Developer Blog
                                                  • Golangでbyte表現と、ASCIIに少し詳しくなった話

                                                    golangでstringとbyte間で勝手に変換される「あれ」について、「あれ」というよりはマシな解像度で理解できる様にまとめました。 tl:dr Golangの言語仕様から、stringとbyteの話をするよ 筆者は文字コード周りについて詳しくなかったので、その辺が学びになったよ byte表現することで何が嬉しいの?に関する話はしてないよ Golangはstringをbyteシーケンスとして表現する 下記は、ハードコードしたstringから一文字目を抽出しようとしたコードです。 import "fmt" func main() { original := "aaabbbcccaaa" result := original[0] fmt.Println("result: ", result) }

                                                      Golangでbyte表現と、ASCIIに少し詳しくなった話
                                                    • Goで開発して3年のプラクティスまとめ(1/4): プロジェクトを始めるまで編

                                                      Goで開発して3年のプラクティスまとめ(1/4): プロジェクトを始めるまで編 yet another入門記事です。 part1 プロジェクトを始めるまで編: これ part2 cliアプリをつくれるところまで編 part3 concurrent GO編 part4 HTTP Server/logger編 はじめに 筆者はGoを触りだして3年ぐらいたったので、触りだしてからもっと早く知りたかったこととかをまとめて置くことで筆者の知識の整理を行います。 元は社内向けに軽いイントロダクションのドキュメントは作っていたんですが、成果が社内に限られるのはいまいちに感じたので私的な時間を使って新規に作り直しています。 比べてみるとファイルサイズで5倍以上になっていました。多分最初に書いたものよりは役に立つと思います。 なるだけワンストップでたくさんの話題を扱うようにして、 読んだ人(会社の同僚)がな

                                                        Goで開発して3年のプラクティスまとめ(1/4): プロジェクトを始めるまで編
                                                      • GitHub ActionsでCI/CDを実験してみる - GMOインターネットグループ グループ研究開発本部

                                                        こんにちは。次世代システム研究室のK.X.D.です。 はじめに ソースコード管理といえば、今ではGithubがすぐに思い浮かぶでしょう。 GitHub上でCI/CD実現できる機能はGithub Actionsです。 ソースコード管理しながら、外部サービス連携しなくても、CI/CD運用するのはとても便利と思いますので、 Github Actionsの実験を積んで、もっと自由に活用したいと思います。 やりたいこと: Githubのアクティビティ(PR作成、PRマージなど)により、CI/CDを自動化にしたいと思います。 具体的に、下記のような作業が実施したいです。 Docker ContainerでGolangのRevelアプリケーションを動かす Githubでソースコード管理して、PRを作成すると自動テスト実行(CIワークフロー実現) PRをMainへマージすると、自動でContainerイメ

                                                          GitHub ActionsでCI/CDを実験してみる - GMOインターネットグループ グループ研究開発本部