並び順

ブックマーク数

期間指定

  • から
  • まで

201 - 240 件 / 2316件

新着順 人気順

GOの検索結果201 - 240 件 / 2316件

  • Go で使う Makefile の育て方

    Go を使ってプロダクトを作る時、Makefile を使ってビルドを指定することが多いです。 理由としては、 バージョン情報などを埋め込むのに都合がいい 複数のバイナリを吐き出す時に都合がいい Go のビルドオプションを指定するのにいろいろあって整理しておきたい 事前にコードジェネレータで書き出す部分があり、それを考えると Makefile などで整理したい などなどです。なので今回はプロジェクトが大きくなっていく中でどういう Makefile の書き方をしているか、というのをご紹介しようと思います。 サンプルとして、今回のプロジェクトでは gRPC を使ったチャットサービスのサーバーとクライアントを作ることにします。リポジトリは https://github.com/rosylilly/gochat に置いておきました。 Step 1. バージョン情報を埋める 今回はサーバーとクライアン

      Go で使う Makefile の育て方
    • おうちKubernetes feat. cybozu-go/neco-apps - ぽよメモ

      はじめに なぜおうちKubernetes? ハードウェアの選定 クラスタのブートストラップ cybozu-go/neco-apps Metallb cert-manager Contour TopoLVM Rook SealedSecret ArgoCD GitHubアカウントでSSOする gRPC用とWeb UI用でサービスを分ける VictoriaMetrics Grafana operator moco 開発環境 今動いているもの これからやりたいこと バックアップとリストア 監視の充実 まとめ はじめに これはCybozu Advent Calendar 2021 7日目の記事です。是非他の記事も読んでみてください。 Kubernetesの名を聞くようになって久しく、皆様も業務・プライベート問わず日々YAMLを書かれていることでしょう。自分専用のプライベートクラスタが欲しいと思われ

        おうちKubernetes feat. cybozu-go/neco-apps - ぽよメモ
      • Goエラーハンドリング戦略

        Goのエラーハンドリングが採ったスタイル 多値返し 直積(関数の返値とエラーを両方返す) try-finallyをdeferという機構でカバー panicはプロセスを落とすためのもの Goはこの戦略でエラーハンドリングを行うとしましたので、「多値はなぜタプルじゃないんだ?」、「直和(返値orエラー)で十分じゃ?」「panic-recoverでtry-catchできそう?」などいう様な他の処理系の風習を持ち込むことは意味がありません。そしてそれらの提案の多くはすでに検討されリジェクトされてきた経緯があります。 「try組み込み関数」プロポーザルなんかも検討されマージ直前くらいまで進んだこともありますが、「Goのエラーハンドリング」にとって一長一短がありました。その欠点課題は解決できずに最終的にリジェクトされました。 「多値返し」は実にCPUフレンドリーな機構で、C言語の関数呼び出し規約にちょ

          Goエラーハンドリング戦略
        • Go のエラーハンドリング

          私が Go のエラーハンドリングについて最初に記事にしたのは2015年のことだが,あれから Go も少しずつ変わってるし,私も当時よりは多少なりと理解が進んだと思うので,今まで書いた駄文を「全部入り」で本の形にしてみようと思う。 主な内容: * エラー評価の基本 * エラーの階層化 * サードパーティのパッケージ * ぼくがかんがえたさいきょうのえらーろぐ * Panic と Recover 寄付(サポート)歓迎。ご笑覧のほどを。

            Go のエラーハンドリング
          • 今までにGoでよく聞かれた質問とその参考リンク - ぷらすのブログ

            こんにちは、@p1assです。 最近研修で Go を書いていて、その際にいくつか質問をされるのですが、聞いてみると前にも答えたような質問が多かったので、これを機にブログに参考リンクをまとめようと思います。 質問された際にすぐ答えられない質問も数多くあり、調べたり教えてもらったりすることで様々なことを再発見できました。 この記事では、質問に対する回答をできるだけ公式に近い文章を引用する形で書き記します。私個人の考えは別の段落になるようにして、事実と意見を区別するように心がけています。 なにか誤りを見つけた際は GitHub で PR を投げていただけると助かります。 言語仕様 関数の引数は値渡しか参照渡しか? Go はすべて値渡し (pass by value) です。 ポインタの場合は、ポインタそのものがコピーされポインタの指し示す先の値はコピーされません。 Go の多値返却はタプルか?

              今までにGoでよく聞かれた質問とその参考リンク - ぷらすのブログ
            • Goを学ぶときに参照した学習リソースまとめ

              皆さん、新しいプログラミング言語を学ぶ時、どのように学習しているでしょうか? 私は4月に新卒でエンジニアになり、業務でGoを使うことになりました。その際、とりあえず公式チュートリアルであるTour of Goをやりましたが、その後にどうやって学習を進めれば良いか迷ってしまいました。 考えてみると、新しい言語を学ぶ際、毎回学習方法に困っている気がします。ネットでサンプルを探す、動画を見る、書籍を読む、などさまざまな学習方法があると思いますが、私は手を動かしながらいろいろなパターンを学んでいくのが好きです。 そこで今回Goを学ぶ際も、手を動かしてさまざまなコーディングのパターンを学習するために、ネットや書籍でサンプルを探して実践しました。 この学習方法は私にとっては楽しみながら続けることができて、他の言語を学ぶ際も今回実装したサンプルを使って学習しようと考えています! そこで自分と同じ様な悩み

                Goを学ぶときに参照した学習リソースまとめ
              • 科学技術情報分析の面白さ

                下記のイベントで講演した資料です。私はDay 1に「科学技術情報分析の面白さ」というテーマで発表しました。 データ可視化ショーケースイベント Data Visualization meetup 2021 https://peatix.com/event/3120368 「データ可視化研究の…

                  科学技術情報分析の面白さ
                • ちょっとJavaのsynchronizedをGoに移植しようとしたはずが、なぜか1万文字の作文ができた - エムスリーテックブログ

                  AI・機械学習チームのブログリレーも9日目になりました。同チームの横本@yokomotodです。 本日はJavaとGoを題材に並行プログラミングまわりの自由研究をしたお話をしてみたいと思います。 3部構成で、パート1では発端となった「排他制御」について、パート2では「メモリの可視化」について、それぞれJavaとGoを比べてみました。 最後にパート3では、それらの動作を規定する「メモリモデル」について、わかりやすく解説されているリソースを紹介します。 長過ぎる! 3行で!! パート1: synchronized = 「排他制御」? Java synchronized vs Go sync.Mutex Goで再入可能なロック? 仮にGoで再入可能なロックを実装するなら? Javaが再入可能を選択した理由 パート2. sycnhronized = 「排他制御」+「メモリ可視性の保証」 Javaの

                    ちょっとJavaのsynchronizedをGoに移植しようとしたはずが、なぜか1万文字の作文ができた - エムスリーテックブログ
                  • 最速のJSONライブラリを求めて

                    Personal Company ( 前職 ) goccy/go-yaml knocknote/octillery goccy/go-graphviz knocknote/rapidash goccy/go-json knocknote/eevee goccy/go-reflect knocknote/vitess-sqlparser goccy/go-jit HPDDZ !HPDDZ�� � .FSQBZ� �"SDIJUFDU� ��������d .BTBBLJ�(PTIJNB� �HPDDZ�

                      最速のJSONライブラリを求めて
                    • 実務で役立つTCPクライアントの作り方

                      Go Conference 2021 Spring (A9-S) のセッションで使用した資料です。 - セッションの詳細: https://gocon.jp/sessions/session-a9-s/ - 発表者: https://twitter.com/d_tutuz 資料に誤りがあればt…

                        実務で役立つTCPクライアントの作り方
                      • 我が家の BigQuery による台所事情分析 - nownab.log

                        弊家では銀行やクレジットカードの明細を BigQuery に取り込んでダッシュボードを作ったりしています。 また、そのために作った BigQuery 向けの Go 製 ETL フレームワークを OSS として公開しました。 本記事ではざっくりどんなもんかを紹介して、どう作るのかを説明します。 Google Cloud Platform Advent Calendar 2020 の 13 日目の記事です。 Google Cloud Japan の Customer Engineer の Advent Calendar もぜひご覧ください。 TL; DR 明細が BigQuery にあると、可視化もできるしアラートも出せるし、まぁなんでもできて便利 銀行明細レベルのデータならほぼ無料で保存、ETL、分析できる ETL フレームワーク bqloader を OSS として公開したから使ってくれよ

                          我が家の BigQuery による台所事情分析 - nownab.log
                        • Hotwire を 本番環境で使ってみた感想

                          2022年のRailsの開発現場事情について語ろう! Qiita Night https://increments.connpass.com/event/241385/

                            Hotwire を 本番環境で使ってみた感想
                          • 「Go Style Guide」から学んだ可読性の高いコードの書き方

                            Go Conference 2023 ( 2023/06/02 Fri. ) https://gocon.jp/2023/ 登壇資料 株式会社アンドパッド プロダクトテックリード 小島 夏海 みなさん、Googleが公開したGo Style Guideは読みましたか? ソフトウェア開発は継続的な活動であり、一般的に複数人で行うことが多いです。 継続的に複数人で開発を行う場合、自分が書いたコードを他人が読んだり修正したりすることが非常に多いです。 そのため可読性の高いコードを書くことは開発効率やメンテナンス性の向上に役立ちます。 Goはシンプルな言語ですが、どのように書くべきか悩むことが全くないわけではなく、そのような時従来はEffective Go/Uber Go Style Guide/OSSコード等を参考にどのように書くか決めていたと思います。 これらに加え、昨年末にGoogleからG

                              「Go Style Guide」から学んだ可読性の高いコードの書き方
                            • Go製ミドルウェアのメモリリークを解決した話 - Mirrativ Tech Blog

                              インフラ・ストリーミングチームの id:udzura (@udzura)です。今回は、Goミドルウェアのメモリリークを見つけて解決する際に、どのようなプロセスを踏んでいったかを解説します。 Go製のミドルウェアの概要 ミラティブでは、Webアプリケーションのみならず、ミドルウェアに相当する部分についても必要なものは内製しています。その中の一つに、社内で「Radisha」と呼んでいる各種集計とキャッシュなどを行うためのミドルウェアがあります。Radishaは以下のような特徴を備えています。 GET、SET、SETEXなど基本的なRedis互換のコマンドを実装している。そのため、既存のRedisクライアントライブラリから操作が可能である。 ランキング集計、一定時間内のアクセス集計などが行えるよう、Redis にない独自のコマンドを実装している。 高い可用性を志向しており、オンメモリのデータは

                                Go製ミドルウェアのメモリリークを解決した話 - Mirrativ Tech Blog
                              • Goのメモリ管理 / Memory management in Go

                                継続的プロファイルによる大規模アプリケーションの性能改善 / Improving massive application clusters with continuous profiling

                                  Goのメモリ管理 / Memory management in Go
                                • 趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア 己の欲求に従い続けた「Ebitengine」開発者に迫る レバテックラボ(レバテックLAB)

                                  TOPフォーカス趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア。己の欲求に従い続けてきた「Ebitengine」開発者に迫る 趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア。己の欲求に従い続けてきた「Ebitengine」開発者に迫る 2024年5月15日 Odencat株式会社 CTO 星 一(ほし・はじめ) ソフトウェアエンジニア。2009年にドワンゴでキャリアをスタートし、ドワンゴの関連会社やGoogle Japanなどを経て、2023年より現職。趣味では大学時代から2Dゲームエンジン開発に注力し、Google時代の2013年にEbitengineに着手し始める。2015年にVer1.0をリリース。カクヨムで「オレオ」と3文字だけ書かれた小説を手がけ、週間総合ランキング1位を獲得したことがある。 X GitHub Ebitengine公式サイト Odencat

                                    趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア 己の欲求に従い続けた「Ebitengine」開発者に迫る レバテックラボ(レバテックLAB)
                                  • 睡眠アプリ『ポケモン スリープ』この夏配信。ポケモンGO Plus+は7月14日発売 | テクノエッジ TechnoEdge

                                    株式会社ポケモンが、スマートフォンアプリ Pokémon Sleep (ポケモン スリープ)を2023年夏に配信することを発表しました。 ポケモン スリープは「朝、起きることが楽しくなるゲーム」。2019年に初発表された際は2020年予定でしたが、ついに配信を迎えることになります。 基本的な遊び方は毎晩眠るだけ。「いねむりポケモンのカビゴンでポケモンの睡眠を研究するネロリ博士をプレーヤーが手伝う」設定になっており、睡眠データによってさまざまな眠りのパターンに応じたポケモンが現れたり、「寝相」を収集できます。 朝起きたときに確認できる新たなポケモンや寝顔に期待して睡眠データを計測・記録・分析する習慣がつけば、健やかな睡眠につながるかもしれない的なアプリです(「効能」的な言い方を避けて迂遠な表現になることをお許しください)。 ポケモンの寝顔収集を通じて睡眠データの計測・記録・分析の習慣につなが

                                      睡眠アプリ『ポケモン スリープ』この夏配信。ポケモンGO Plus+は7月14日発売 | テクノエッジ TechnoEdge
                                    • タクシー利用者のモラルの低下にタクシー会社から切実な「お願い」 | おたくま経済新聞

                                      この件について、X(Twitter)上で問題提起をおこなったのは、神奈川県藤沢市にある江ノ島タクシーの公式アカウント。特に「GOアプリ」を使用する人に向けて、モラルやマナーについて呼びかけています。 江ノ島タクシーの場合では、「GOアプリ」を通じて発生しているといい、こうしたキャンセル方法では「システム上、(タクシー会社側では)キャンセル料としても回収できないことになっています」とのこと。 ちなみにアプリ利用者に対しキャンセル料金が発生する場合でも、「GOアプリ」側のみに支払われ、タクシー会社には支払われない仕組みになっているそうです。 江ノ島タクシーの公式Xは「システム上出来てしまうのが悪いと言われればそれまで」と前置きしながらも、タクシー会社には人件費や燃料費がかかり、ドライバーは売上にならないので給与にも影響が出てしまうと説明。 最後に「ご利用のお客様におかれましては、モラルを守って

                                        タクシー利用者のモラルの低下にタクシー会社から切実な「お願い」 | おたくま経済新聞
                                      • LAMP 構成のシステムが抱えていた問題を Amazon API Gateway + AWS Lambda のサーバレス構成にして解消した話 - WILLGATE TECH BLOG

                                        ウィルゲートのアーキテクト兼技術広報の岡田(@okashoi)です。 今からおよそ 1 年前に取り組んだ、社内システムをリニューアルによってサーバレス化した事例についての紹介と、1 年経過したところのふりかえりや所感を書きたいと思います。 システムリニューアルの背景 利用量の増加に対してスケールしにくい サーバリソースの利用効率が悪い エラーが発生した場合の原因究明が難しい リニューアルプロジェクト発足 目的は「スケーラビリティ向上」 「コスト削減」 「信頼性向上」 メンバー3 名でおよそ半年にわたるプロジェクト 目的へのアプローチ Amazon API Gateway + AWS Lambda によるサーバレスアーキテクチャの採用 Amazon Elasticsearch Service を用いたログの可視化と運用を考えたログ設計 プロジェクトでの取り組み 機能の洗い出し Go 言語 +

                                          LAMP 構成のシステムが抱えていた問題を Amazon API Gateway + AWS Lambda のサーバレス構成にして解消した話 - WILLGATE TECH BLOG
                                        • なぜ Go ではロガーをコンストラクタ DI してはならないのか

                                          問題のある実装パターン 共通実装 以下のような applog パッケージ上のロガー実装を考えましょう。ここでは Go 標準の log.Logger をラップしていますが,様々な実装に拡張できることを想定しています。 package applog import ( "fmt" "log" "os" ) type Logger interface { Info(message string) Error(message string) } func NewLogger() Logger { return &logger{ inner: log.New(os.Stdout, "", log.LstdFlags), } } var _ Logger = (*logger)(nil) type logger struct { inner *log.Logger } func (l *logger)

                                            なぜ Go ではロガーをコンストラクタ DI してはならないのか
                                          • ソフトウェアを完成させる - blog.8-p.info

                                            Why is building the Ruby environment hard? の、 ソフトウェアは何もしないと壊れる というのは事実ではあるんだけど、それが良いことかというと、どうなのかなあと思う。ほかにも、我々プログラマはつい「ソフトウェアは完成しない」とかいってしまうし、それは雇用のためには良いことなんだろうけど、でも本当に完成しないんだろうか。 Go の logrus の README には、こんな段落がある。 Logrus is in maintenance-mode. We will not be introducing new features. It’s simply too hard to do in a way that won’t break many people’s projects, which is the last thing you want fro

                                            • Go界隈で巻き起こった go:linkname 騒動について - ANDPAD Tech Blog

                                              お久しぶりです、ANDPADボードの tomtwinkle です。 この記事はGoの go:linkname 騒動は 6/18に行われた Go Bash で話した内容を要約したものです。 そもそも go:linkname とは何かといえば internal packageやprivate var/funcなど普通はアクセスできないオブジェクトシンボルをエイリアス出来るようCompilerに指示して、アクセス可能にするcompiler directiveです。 go:linkname はprivateな変数へアクセス可能な便利なものでしたが unsafe packageのimportを必須とする通り、せっかく互換性や安全を考慮して作られているGoプログラムを簡単に破壊できる諸刃の剣でした。 詳細は発表スライドを見てください。 go:linkname 禁止騒動 Go 1.23 のリリースまで2

                                                Go界隈で巻き起こった go:linkname 騒動について - ANDPAD Tech Blog
                                              • Rustの実用性が理解できる図を作成してみた 〜C/C++/Java/JS/Python/Go/TS/Elixirとの比較〜

                                                エディタ支援 言語の公式がエディタ支援(LSP等)を提供しているかを示しています。 自動テスト 言語の公式が自動テスト(ユニットテスト等)を備えているかを示しています。 リンタ 言語の公式がリンタを提供しているかを示しています。 ビルドシステム 言語の公式がビルドシステムを提供しているかを示しています。 パッケージマネージャ 言語の公式がパッケージマネージャを提供しているかを示しています。 フォーマッタ 言語の公式がフォーマッタを提供しているかを示しています。 手続き型 言語のプログラミングパラダイムが手続き型プログラミングを強くサポートしているかどうかを示しています。 オブジェクト指向 言語のプログラミングパラダイムがオブジェクト指向プログラミングを強くサポートしているかどうかを示しています。 関数型 言語のプログラミングパラダイムが関数型プログラミングを強くサポートしているかどうかを示

                                                  Rustの実用性が理解できる図を作成してみた 〜C/C++/Java/JS/Python/Go/TS/Elixirとの比較〜
                                                • Goで開発していたが、途中でPythonに切り替えた件を振り返る。 - Qiita

                                                  イントロダクション 目下、開発中のプロダクトなので詳しいことは書けないのですが、いろいろと気付きの多い出来事だったので、 少し自分自信の振り返りも兼ねて、投稿してみたいと思います。 これは、決してGoよりPythonのほうが優れているとかそういった話ではないです。 今回、自分は開発者というよりプロジェクトマネージャー(以降、PM)という立場になります。 Goの採用 当社のコア技術はPythonなのですが、今回、開発にあたってGoを採用していました。 主な採用理由としては、「プロトコルとしてgRPCを採用するにあたって、gRPCとの組み合わせ事例が多い」からでした。 gRPCの採用理由は、「同時に企画されていた別プロダクト(Python)との連携が想定されており、異なるプログラミング言語間でも型を維持したままデータ交換が可能」なことからでした。 当初は、プロダクトのリリース時期も未定でプロト

                                                    Goで開発していたが、途中でPythonに切り替えた件を振り返る。 - 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するのか?
                                                    • GoとRust - 並行プログラミング編

                                                      はじめに こんにちはnasaちゃんです。 goroutine何も分からん!async/await何も分からん!となったのでそれぞれを比較しつつ理解を深めてみよう。という考えのもとGo, Rustの並行プログラミングの解説記事を書いてみました。 ところどころふわっとしているため、補足や指摘を貰えると大変助かります。 今回話すこと goroutineとは結局何なの Goの並行処理の仕組み goroutine(Go)とasync/await(Rust)の比較 Goのランタイム、Rustのランタイムの話 話さないこと 構文の違いについては特に触れない どちらが優れているとい言う話はしない ベースになっている思想については特に触れない TL;DR Goには標準のランタイムがあるよ、Rustではランタイムライブラリを使う必要があるよ Goはランタイムが中断再開を管理するよ、Rustではプログラマーが管

                                                        GoとRust - 並行プログラミング編
                                                      • やんないほうがいいかも、GitHub Actions の setup-xxx での依存キャッシュ保存 - 誰かの役に立てばいいブログ

                                                        GitHub Actions で CI している皆様、こんにちは。 GitHub Actions 便利ですよね。使わない日がないというくらい毎日お世話になっています。 さて、CI といえば良く問題になるのが実行時間。 長い待ち時間は開発効率を下げますし、プライベートリポジトリだと Runner の費用も嵩んでしまいます。 時間を短縮する方法は色々ありますが、一手目によく行われるのが依存パッケージのキャッシュじゃないかなと思います。 例えば Go で開発していると、依存パッケージは ~/go/pkg/mod にダウンロードして保存されます。 これを CI 実行のたびにダウンロードしてコンパイルするのは時間とお金の無駄というものです。 幸い、GitHub Actions には CI の実行間でこういった依存パッケージを保存して再利用できるキャッシュ機能があります。 詳しくは以下のドキュメントを

                                                          やんないほうがいいかも、GitHub Actions の setup-xxx での依存キャッシュ保存 - 誰かの役に立てばいいブログ
                                                        • アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)

                                                          GNU Assembler互換(サブセット)のアセンブラをGo言語でフルスクラッチで作ってみました。 開発22日目で自作Goコンパイラ(をセルフホストしたときに出力される20万行のアセンブリ)をアセンブルすることに成功しました。 どうやって作ったかというと、小さいコードを GNU Assembler (以下 as) に食わせて出力されたバイナリを観察する、を繰り返して中のロジックを推定し再現しました。as の実装は見ていません。(一瞬見たけど巨大すぎて何もわからなかった) アセンブラ自作は、やってみるとコンパイラ自作よりだいぶ簡単でハマりポイントも少ないので、学習テーマとしてはおすすめです。2箇所ほど難所(命令エンコーディングのルールを理解するのと、ジャンプ命令の最適化)がありましたがそれ以外はさくさく楽しく作れました。 作ってみた結果、アセンブリ言語の理解が深まったのはもちろんのこと、E

                                                            アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
                                                          • Shopifyに入社しました | suusan2go blog

                                                            1月にShopifyにDeveloperとして入社していました。日本からリモートで働いていますが、基本はAPACのチームの一員として働いているので今の所は深夜・早朝など変な時間に働かずに済んでいます。ShopifyというとRuby/Railsに強い会社なのでそっち方面をやるのかな〜と想像した方もいらっしゃるかもしれませんが、コミッターでも何でもないので自分は普通にDeveloperとしてアプリケーション開発をしていきます。 入社するまで Shopifyがリモートでも人を採用するぞというようなニュースをどこかで見て、Shopifyのキャリアサイトを見ていたらたまたま日本のSenior Developerの求人を発見したのがキッカケでした。 俺なんかが採用されるのかな・・・?あと英語いけるか・・・?みたいな葛藤や迷いがあり、実際には応募するのにここから一ヶ月くらいかかっています。応募を後押しし

                                                            • PayPalが1日3,500億回のリクエスト処理を支えるキーバリューストアをオープンソース化

                                                              Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

                                                                PayPalが1日3,500億回のリクエスト処理を支えるキーバリューストアをオープンソース化
                                                              • 個人で開発していた上場企業の情報サイトをOSSにした

                                                                結論 個人で開発していたWEBサービスをOSSとして公開しました。 この背景や技術環境について書いていきます。 すべてのソースコードをGitHubに公開しています。 スターやレビューをしてくださると嬉しいです! 公開したサービス: 上場企業ランキング 先日、オープンソースでWEBサービスを公開しました。 「上場企業ランキング」というサービスです。 その名の通り日本の上場企業を業界ごとに「給与」や「売上」順で閲覧することができるサービスです。 URL: https://company-ranking.net/ GitHub: https://github.com/yuki0920/company-ranking 私は2度の転職活動経験がありますが、企業を選ぶ際に知っておきたいことはいくつもありますよね。 「給与はどのくらいだろう」 「売上や利益はどの程度なのかな」 こういった情報は、求人ペー

                                                                  個人で開発していた上場企業の情報サイトをOSSにした
                                                                • GoのS3 ダウンロード処理で知っておくと良いこと - バックエンドパフォーマンス改善

                                                                  こんにちは、@igsr5 です。普段はある高専の情報科に通いながら、Wantedly, Inc. で長期インターンをしています。興味領域はフロント・バックエンド、インフラで、最近は業務でもっぱらGoを書いています。今回はGoのパフォーマンスチューニングの話です。 対象読者 aws-sdk-go(aws-sdk-go-v2)[1] で s3 ダウンロード処理のパフォーマンス改善を行いたい人 Go[2] の io パッケージの話に興味がある人 バックエンドのパフォーマンス改善に興味がある人 TL;DR 内部で s3 ダウンロードが行われるバックエンドAPI などを考えたとき、 // 1. Downloader の作成 downloader := s3manager.NewDownloader(sess, func(d *s3manager.Downloader) { // + ここを追加 d.

                                                                    GoのS3 ダウンロード処理で知っておくと良いこと - バックエンドパフォーマンス改善
                                                                  • Big Sky :: Go に go:embed が入った。

                                                                    Go 言語はシングルバイナリをウリにしたプログラミング言語です。バイナリファイルを1つポンと scp で転送すれば動くのでとても便利です。シングルバイナリとなると当然、画像や HTML といったアセットをバイナリに埋め込みたくなります。 Go 言語ではこれまで go-assets や go-bindata、statik というツールを使う事でファイルのコンテンツをバイナリ化し、変数からアクセスする様にしてきました。 しかしそれらには色々な流儀や OS 間でのまばらな動作など、ユーザにとって納得のいかない物がありました。昨日、Go 言語ではオフィシャルとしてこのファイル埋め込みをサポートする様になりました。Go 1.16 から使える様になります。 cmd/go: add //go:embed support · golang/go@25d28ec · GitHub +3 −3 src/cmd

                                                                      Big Sky :: Go に go:embed が入った。
                                                                    • GitHub - ttrace/vscode-language-japanese-novel: Visual Studio Code で小説を執筆する時に使う言語拡張です。

                                                                      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 - ttrace/vscode-language-japanese-novel: Visual Studio Code で小説を執筆する時に使う言語拡張です。
                                                                      • Go言語が成功した理由

                                                                        Go言語の作者であるRob Pike氏が「Go言語が成功した理由は何なのか?」というタイトルで2015年に発表をしてる動画を見つけたので、雑に和訳してみたいと思う ちなみに最近Go言語の好き嫌いに関する記事がいくつかバズっており、それに乗っかってるというのは言うまでもない Go言語を嫌う6個の理由 Go言語が好きな理由 良く挙げられる成功要因 Pike氏は以下がよく理由として挙げられると述べている コンパイルの速さ 実行の速さ デプロイの容易性 ツール ライブラリ しかしこれらは全て表面的であって、本質的な理由ではないとも述べている ではGo言語が成功に至った本質的な理由とは一体何なのか?彼は続いて説明している Go言語が成功に至った真の理由 彼は「Simplicity」、シンプルさがGo言語が成功に至った本質的な理由であると述べている そしてこのコンテキストにおける「シンプルさ」とは以下

                                                                          Go言語が成功した理由
                                                                        • Goにおける型によってSQLインジェクションを防ぐ方法

                                                                          はじめに 2022年のセキュリティ・キャンプ全国大会に講師として参加しました。その際に、Goにおける脆弱性への対策はどうなっているのか調べました。この記事では、github.com/google/go-safeweb/safesqlがどのようにSQLインジェクションを防いでるのかについて解説します。 なお、@rungさんの文書を多いに参考にしております。また、セキュリティ・キャンプで用いた資料はこちらから閲覧できます。 SQLインジェクションとは? 独立行政法人情報処理推進機構(IPA)が公開している安全なウェブサイトの作り方を見ると、SQLインジェクションは以下のように説明されています。 データベースと連携したウェブアプリケーションの多くは、利用者からの入力情報を基にSQL文(データベースへの命令文)を組み立てています。ここで、SQL文の組み立て方法に問題がある場合、攻撃によってデータベ

                                                                            Goにおける型によってSQLインジェクションを防ぐ方法
                                                                          • tRPCを導入したら爆速でWebサービスをリリースできた話

                                                                            この記事は 「個人開発Advent Calendar 2022」 8日目の記事です。 はじめに 先日リリースされた、SplarateというWebサービスの開発をお手伝いしています。そこで導入したtRPCが驚くほど便利だったので、実際の体験を交えてその使いやすさを紹介します。 tRPCとは? tRPC allows you to easily build & consume fully typesafe APIs without schemas or code generation. https://trpc.io/docs/ tRPCは、スキーマやコード生成なしで型安全なAPIを簡単に構築し、呼び出すことのできるライブラリです。 tRPC is for full-stack TypeScript developers. と謳われているように、TypeScriptに特化して作られており、Ty

                                                                              tRPCを導入したら爆速でWebサービスをリリースできた話
                                                                            • Go でトランザクションをフルスクラッチで実装した - kawasin73のブログ

                                                                              一歩ずつ一歩ずつ前へ進んでいく、確実に。どうも、かわしんです。 到底 1 記事に収まるような内容ではなく長いので、トランザクションの作り方に興味のない方は途中の「なぜ Go なのか」まで読んでいただければ嬉しいです。 この記事は、Go2 Advent Calendar 2019 の 7 日目と セキュリティキャンプ 修了生進捗 #seccamp OB/OG Advent Calendar 2019 の 7 日目を兼用しています。 さて、僕の興味は必要になったライブラリやミドルウェアなどを自作して、作りたいプロダクトを完成させることです。必要なコンポーネントがないからといってプロダクトを作るのを諦めたり妥協したりはしたくありません。 多くのアプリケーションではデータベースは重要なコンポーネントです。大抵のアプリケーションは MySQL や Postgres、Redis など既存のデータベース

                                                                                Go でトランザクションをフルスクラッチで実装した - kawasin73のブログ
                                                                              • 「Go言語でつくるインタプリタ」は前提知識無しで取り組める言語処理系のチュートリアル - Explore cs in depth!

                                                                                目次 目次 概要 本題 私がこの本を購入した理由 数ある言語処理系の技術書でも恐らく最も初歩的 Goは現在恐らく最も可読性が高い言語 何故オススメ? プログラミングの本質が見えるから 単純にコード量が多いのでやってて楽しい テスト駆動開発 読者の為に残された多くの課題 総評 おまけ 概要 ※注意 Go言語でつくるインタプリタ 作者: Thorsten Ball,設樂洋爾出版社/メーカー: オライリージャパン発売日: 2018/06/16メディア: 単行本(ソフトカバー)この商品を含むブログを見る こちらの本を読み終わりました(付録以外)。 言語処理系に興味を持った衝動で買った本ではありましたが、 今まで読んだ本でもトップレベルで完成度の高いものだったので、 ここで紹介しておきたいと思います。 簡単に良いところをまとめておくと、 プログラミングの抽象的な概念をより深く学べる これは言語処理系

                                                                                  「Go言語でつくるインタプリタ」は前提知識無しで取り組める言語処理系のチュートリアル - Explore cs in depth!
                                                                                • ABEJAの技術スタックを公開します (2019年11月版) - ABEJA Tech Blog

                                                                                  2021/10/22追記:最新版は下記記事になります!こちらもご一読くださいませ。 tech-blog.abeja.asia どうも、Tech Blog編集長(自称)の緒方(@conta_)です。 よくエンジニアの方にご質問いただく ABEJAってよく聞くけど、実際どんなことやってるのかよくわからない という点をクリアにするために、事業内容と技術視点でのABEJAの取り組みを紹介したいと思います。 ABEJAに興味のある方や、未来の一緒に働くメンバーに読んでいただけると嬉しいです! 割とAIコンサルの会社と思われているらしいので、ちゃんとプロダクト作ってますよ!ということを伝えていきたい ABEJAの事業紹介 ABEJAは2012年から約7年間、機械学習・ネットワークやIoTデバイスを活用したプロダクトの研究・開発・運用を行っています。 様々な産業・業種へ機械学習の適用・運用を培ってきたナ

                                                                                    ABEJAの技術スタックを公開します (2019年11月版) - ABEJA Tech Blog

                                                                                  新着記事