並び順

ブックマーク数

期間指定

  • から
  • まで

201 - 240 件 / 3246件

新着順 人気順

goの検索結果201 - 240 件 / 3246件

  • Goはクリーンアーキテクチャの思想を活かせるか? DMMのゲームプラットフォームにGo言語を選んだ理由

    DMM GroupのGoの勉強会「DMM.go」。DMM Groupのエンジニアが現場で培った技術やトレンドについて発表していきます。 2回目の開催となる今回登壇するのは、合同会社EXNOA プラットフォーム開発本部の PFシステム部に所属する岡崎翔悟氏。「Goとクリーンアーキテクチャ」の内容で、実際の現場にいるからわかるGoの開発やクリーンアーキテクチャについて話していきます。関連資料はこちら。 合同会社EXNOAとは 岡崎翔悟氏:今回「Goとクリーンアーキテクチャ」と題しまして、EXNOAの岡崎が発表いたします。 「EXNOAって何だ?」と思われた方が多数いらっしゃると思うので、まずはそちらの説明から。DMM GAMESは2020年4月10日付でEXNOAに社名を変更しました。ただし、一般作品のブランド名として「DMM GAMES」は残っています。一般作品の「DMM GAMES」とR1

      Goはクリーンアーキテクチャの思想を活かせるか? DMMのゲームプラットフォームにGo言語を選んだ理由
    • 文科省のPython教材、改訂版が出ました!指摘に対して直したり直さなかったりと面白いです! - パパ教員の戯れ言日記

      5月に出た文科省の研修用教材に対して、micro:bitが出たぞ!やった!と浮かれていたら、修造botを完全に修造本人のTwitterとして紹介しているというデカいミスをやらかしているということを記事にしましたが、今回その改訂版が出ました。 blog.edunote.jp ちょっと見てみましょう。 改訂版はこちらから。 www.mext.go.jp ワードクラウドの紹介にはやはり修造は出てこなかった 前回更新後に訂正されたまま、走れメロスのワードクラウドでした。 では、他の場所はどうなったのでしょうか。 Qiitaで指摘されていた部分 Qiitaでは@nagataaaasさんが記事をまとめ、指摘していらっしゃいました。 qiita.com 私が見た感じ、この記事からは数点の修正が見られます。 以下、改訂前は http://www.mext.go.jp/component/a_menu/ed

        文科省のPython教材、改訂版が出ました!指摘に対して直したり直さなかったりと面白いです! - パパ教員の戯れ言日記
      • Deep Dive into The Go's Web Server

        Goのnet/httpパッケージはとてもよくできており、Webサーバーを動かすのに必要になる「httpコネクションを確立してリクエストを読んでルーティングして……」という手続き的な処理を気にせずとも誰でも簡単にWebサーバーを立てられるようになっています。 ですが、そのnet/httpが代わりにやってくれている「裏側の処理」の部分が気になる、何やっているんだろう?と不思議に思っている方はいませんか? この本では、実際に筆者がnet/httpパッケージのソースコードを読み込んだうえで、「GoのWebサーバーがどのような仕組みで起動・動いているのか」というところについて、図を使いながら解説しています。

          Deep Dive into The Go's Web Server
        • 米ホワイトハウス「将来のソフトウェアはメモリ安全になるべき」と声明発表。ソフトウェアコミュニティに呼びかけ

          米ホワイトハウス「将来のソフトウェアはメモリ安全になるべき」と声明発表。ソフトウェアコミュニティに呼びかけ 米ホワイトハウスの国家サイバー局長室(The White House Office of the National Cyber Director:ONCD)は、サイバー空間における攻撃対象領域を積極的に削減する目的で、テクノロジーコミュニティやソフトウェアコミュニティに対してメモリ安全(Memory Safe)なソフトウェアの実現を積極的に呼びかけるプレスリリース「Future Software Should Be Memory Safe」(将来のソフトウェアはメモリ安全になるべき)を発表しました。 プレスリリースの中で、国家サイバー局長Harry Coker氏は「私たちは国家として、サイバースペースにおける攻撃対象領域を減らし、あらゆる種類のセキュリティバグがデジタルエコシステムに

            米ホワイトハウス「将来のソフトウェアはメモリ安全になるべき」と声明発表。ソフトウェアコミュニティに呼びかけ
          • Gormにおける「仕様通り」なSQLインジェクションの恐れのある実装についての注意喚起 - ANDPAD Tech Blog

            ANDPADボードチームの原田(tomtwinkle)です。 Node.jsの mysqljs/mysql の仕様に起因するSQLインジェクションが話題に上がっていたので、それGolangのORMであるGormでも同じような「仕様」があるよ! という注意喚起の意味も込めて筆を執りました。 ※ 2022/02/21追記 コードレビューを自動化して指摘してもらう記事を公開しました! tech.andpad.co.jp Node.jsのMySQLパッケージにおけるエスケープ処理だけでは防げない「隠れた」SQLインジェクション | 株式会社Flatt Security TL;DR GormのQuery Conditions関数に関する危険な仕様 対策 締め TL;DR GormのConditions関数(Find, First, Delete...)を使用する際、第2引数の値にStringを引き渡

              Gormにおける「仕様通り」なSQLインジェクションの恐れのある実装についての注意喚起 - ANDPAD Tech Blog
            • Goで軽量なデスクトップアプリ作成

              Lorca+SvelteKitでやってみる! https://github.com/zserge/lorca https://github.com/sveltejs/kit あらかじめ必要なもの go(version 1.17.2以降) nodejs(16.9.0以降),npm(7.21.1以降) Chrome/Chromium/Edgeのいずれか プロジェクトの開始 mkdir sample-gui cd sample-gui go mod init sample-gui npm init svelte@next frontend // Choice "Svelte app template" is "Skelton Project". // Choice "Use TypeScript" is No. // Choice "ESLint" is No. // Choice "Prett

                Goで軽量なデスクトップアプリ作成
              • Go Secure Coding Practice の日本語翻訳を公開します - Techtouch Developers Blog

                はじめに Go Secure Coding Practice とは コンテンツ一覧 良かったところ 注意すべきところ 最後に はじめに こんにちは。SRE の izzii です。 テックタッチのエンジニア規模もそれなりに拡大し、若手の採用も進んできたため、セキュアコーディングを徹底していきたいという思いがあり、まずは意識改革ということで勉強会を実施しました。セキュアコーディングを目的とした場合には教育だけでなく Static application security testing (SAST) の導入といった方法もあるのですが、まずは自分を含めた開発メンバーにノウハウをインストールすることにしました。セキュアコーディングへの意識が高まれば、いづれ SAST の導入の際に抵抗感も少ないだろうと考えています。いきなり SAST を導入しても、誤検知が煩くて浸透しないリスクもありうると考えてい

                  Go Secure Coding Practice の日本語翻訳を公開します - Techtouch Developers Blog
                • Go言語のジェネリクス入門

                  Go1.18は2022年3月にリリースされました。このリリースはGo言語へのジェネリクスの実装を含んでいます。 この記事ではできるだけ最新の仕様と用語法にもとづいてジェネリクスの言語仕様について解説していきます。 更新履歴 2024/01/03: Go1.21(2023-08-08)でcmpパッケージが標準ライブラリに追加されたことに対応しました。 2023/02/23: Go1.20(2023-02-01)のcomparableの仕様変更に対応しました。 次の関連資料があります: The Go Blog - All your comparable types Griesemer氏によるGo公式ブログです。 Go言語のBasic Interfaceはcomparableを満たすようになる(でも実装するようにはならない) 上記の内容に対する筆者の解説記事です。Go1.20リリース前に書いたの

                    Go言語のジェネリクス入門
                  • JavaScriptからGo言語に乗り換えた感想 - 新しいことにはウェルカム

                    JavaScript(TypeScript)で書かれたプログラムを、Go言語で書き直しました。 その動機や、書き換えた結果などを書こうと思います。 また、今回Go言語が初めてだったので、Go言語とはどういったものかや、Go言語をやってみた感想なども合わせて書こうと思います。 動機 メンテナンスしづらい 移植したプログラムは、JavaScript(TypeScript)で書かれた、データ処理関連のプログラムで、サーバーで動かしていました。 JavaScriptはポピューラーな言語ですが、フロントエンドをやらない人にはあまり馴染みがないようで、扱える人が限られていて何かあった時の対応が不安でした。 どのプログラム言語にも似たような文法があり、ちょこっと修正するくらいなら、一通り文法書に目を通せば何とかなりそうな気もするのですが、PromiseなどのJavaScriptの非同期プログラミング文法

                      JavaScriptからGo言語に乗り換えた感想 - 新しいことにはウェルカム
                    • golangで作るTCPIPプロトコル

                      はじめに とりあえずIT業界に入ったら読んでおけという名著はいろいろありますが、その中の1冊がマスタリングTCP/IP入門編でしょう。 僕も買ってはいたものの読むのを途中で挫折していたので、今回しっかり読んでTCP/IPを再勉強してみたいと思います。 マスタリングTCP/IPを読みながらその他わからんことはググりつつ、golangでTCPIPプロトコルそのものを自作してみます。 方針は以下のようにします。 ethernetから作る データのやり取りにnetパッケージは一切使わない (訂正、PCのIPやMacアドレスを取るのにだけ使用しますた) データのやり取りに使うのはsyscallのsendtoとrecvfromだけ socketはRAW_SOCKETを使う golangやネットワークについても初心者の駆け出しですので間違えや実装ミス、変なコードがあるかもですが、生暖かい目でよろしゅうお

                        golangで作るTCPIPプロトコル
                      • Go で使う Makefile の育て方

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

                          Go で使う Makefile の育て方
                        • 今までにGoでよく聞かれた質問とその参考リンク - ぷらすのブログ

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

                            今までにGoでよく聞かれた質問とその参考リンク - ぷらすのブログ
                          • おうち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 - ぽよメモ
                            • ぼくが囲碁を完全に”理解(わか)る”まで

                              はてなで囲碁関連のブクマやトラバを見ていると必ず 囲碁は理解できない、どう打ったらいいかわからないというコメントが散見される そこで自分が囲碁を完全に理解するまでにどのような過程・経緯を辿ったのか、経験を記したいと思う なおここでいう"理解"とは神の如き視点ではなく プロの対局などを見て狙いや見どころがなんとなくわかって楽しめる という定義とする 自分は田舎ゆえに教室も師匠もなくほぼ独学だけで上達したので、独学で上達したい人には参考になるはずだ もちろん教えてもらう環境にある人はどんどん教えを請うのもありだ 囲碁との出会い囲碁との本当の意味での出会いは唐突だった。 NHKで対局シーンを見たことはあったが、何をやってるのかわからないし 白と黒を使っててオセロっぽいのにどうやらオセロじゃない、盤面が木の定規みたい、とても奇妙なゲームに思えていた。 そしてそのわからなさは自分にとって不愉快だった

                                ぼくが囲碁を完全に”理解(わか)る”まで
                              • Goエラーハンドリング戦略

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

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

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

                                    Go のエラーハンドリング
                                  • 科学技術情報分析の面白さ

                                    下記のイベントで講演した資料です。私はDay 1に「科学技術情報分析の面白さ」というテーマで発表しました。 データ可視化ショーケースイベント Data Visualization meetup 2021 https://peatix.com/event/3120368 「データ可視化研究の可視化」を始め、テキストマイニングやネットワーク分析を用いた事例を紹介しつつ、特許や論文・学術文献といった科学技術情報の面白さや動向をお話しました。データ可視化・分析に係る方々の参考になれば幸いです。 Day 1 https://www.youtube.com/watch?v=VxaZR55H9dE Day 2 https://www.youtube.com/watch?v=ZFxLzngdN_c

                                      科学技術情報分析の面白さ
                                    • コンパイラをつくってみよう / How to make a compiler

                                      Builderscon 2019 の発表資料です。 ライブコーディングでフルスクラッチでコンパイラを書くというのをやりました。 コンパイラのソースコードはこちらです https://github.com/DQNEO/HowToWriteACompiler

                                        コンパイラをつくってみよう / How to make a compiler
                                      • Goを学ぶときに参照した学習リソースまとめ

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

                                          Goを学ぶときに参照した学習リソースまとめ
                                        • 実務で役立つTCPクライアントの作り方

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

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

                                            How to Lead? Testimonial of a Lead Android Engineer

                                              最速のJSONライブラリを求めて
                                            • 我が家の 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言語で実装するプラグイン機構

                                                      ソフトウェアに拡張性を持たせる時にプラグイン機構を持たせる事は一般的ですが、それを実現する方法は結構バラバラなのかなと思います。例えば、 C言語等の.so/.dllを読み込む方法 Nodejsのような言語での単なるimport TCPやUnixソケットを利用してRPC通信を行う方法 などが有るのかなと思います。1番目・2番目は、関数の呼び出し速度等のオーバーヘッドが少なく高速ですが、言語等の制約が大きくなる・メモリを共有することによるセキュリティリスクが発生します。そこで、提供するインターフェースを制約出来る場合は、3番目の手法が多く使われるようです。 Go言語で開発されている、hashicorp/terraform cloudfoundry/cli は共に3番目のRPC通信でプラグイン機構を実装しています。その中でもterraformで使用されているプラグイン機構は、言語への依存が低いと

                                                        Go言語で実装するプラグイン機構
                                                      • Goのメモリ管理 / Memory management in Go

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

                                                          Goのメモリ管理 / Memory management in Go
                                                        • 睡眠アプリ『ポケモン スリープ』この夏配信。ポケモンGO Plus+は7月14日発売 | テクノエッジ TechnoEdge

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

                                                            睡眠アプリ『ポケモン スリープ』この夏配信。ポケモンGO Plus+は7月14日発売 | テクノエッジ TechnoEdge
                                                          • 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
                                                            • ソフトウェアを完成させる - 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で開発していたが、途中で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 - 並行プログラミング編
                                                                    • Shopifyに入社しました | suusan2go blog

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

                                                                      • アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)

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

                                                                          アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
                                                                        • Why Go and not Rust?

                                                                          What's the role of Go in a universe where Rust exists? Imagine you’re a developer who mainly works with Go. You go to an event and, while chatting with some people, you decide to share with them the news that you wrote a small tool that does something. You claim that since you wrote it in Go, it’s fairly fast, it’s a single binary, etc. The group seems pleased with your recount and you start feeli

                                                                            Why Go and not Rust?
                                                                          • 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億回のリクエスト処理を支えるキーバリューストアをオープンソース化
                                                                            • 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 ダウンロード処理で知っておくと良いこと - バックエンドパフォーマンス改善
                                                                              • なぜ 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 してはならないのか
                                                                                • 個人で開発していた上場企業の情報サイトをOSSにした

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

                                                                                    個人で開発していた上場企業の情報サイトをOSSにした