並び順

ブックマーク数

期間指定

  • から
  • まで

201 - 240 件 / 4011件

新着順 人気順

golangの検索結果201 - 240 件 / 4011件

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

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

      Go のエラーハンドリング
    • 日本からアメリカのスタートアップにリモート勤務する方法|でいじ

      僕はアメリカのサンフランシスコベイエリアのスタートアップで働いています。稀に日本に住む方から「どうすればアメリカのスタートアップで働けるか」というようなことを聞かれます。まずビザの話をすることが多いのですが、そういえばリモートで働くという選択肢もあるよなと思ったので、日本からアメリカのスタートアップにリモート勤務することについて書いてみたいと思います。ソフトウェアエンジニアおよび関連する職種を想定しています。 前提として、僕は2社のスタートアップで合計6年働いています。1社目、2社目ともに採用に関わることがあり、中国、インド、ベトナム、ウクライナ、イスラエル、クロアチア、ドイツ、ブラジル、カナダ、アメリカ、アルゼンチン、日本などの国からリモートで採用したメンバーと仕事をした経験があります。 アメリカのテック企業でリモート勤務するメリットとデメリット本題に入る前に、そもそもアメリカ企業でリモ

        日本からアメリカのスタートアップにリモート勤務する方法|でいじ
      • 今までにGoでよく聞かれた質問とその参考リンク - ぷらすのブログ

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

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

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

            Goを学ぶときに参照した学習リソースまとめ
          • DB初心者が自作DBMS始めてみた - Qiita

            この記事は DeNA 24 新卒 Advent Calendar 2023 の 23 日目の記事です。 TL;DR DBMSの基本的な仕組みを知るのに有益だったリソース CMUのDBMS講義 先人の素晴らしい自作DBMSの解説記事&ソースコードリーディング 小さな小さな自作DBMSの設計と実装 最小限SELECTやINSERTなど基本的なSQLが動く この記事のゴール データベースの内部構成を超ざっくり理解するために有用なリソースを知り、そして(全開発者のロマンである)自作 DBMS に一歩踏み出すきっかけになればうれしいです。 モチベーション 自分は普段業務でアプリケーションのような割と高レイヤーな開発がメインなこともあって、ミドルウェアやOS、ネットワークと言った低めのレイヤーに憧れを持っており、この気持ちをまずは自作DBMSをやってみることによって解放してあげようと思ったことがきっか

              DB初心者が自作DBMS始めてみた - Qiita
            • 他言語ユーザがRust言語をガチめに使っての雑感 - 分散KVSを書いてみて - - Qiita

              どうも ryo_grid です。 昨年はRustを覚えたいと思い、題材としてRESTインタフェースを持った分散KVS(実質はいわゆる分散ハッシュテーブル)を書いたりしました。 FunnelKVS: Rust implementation of autonomous distributed key-value store which has REST interfaces この記事では、他言語を使ってきた私が、経験のないRustを用いてそこそこのコード規模・複雑さのシステムソフトウェアを書いてみた上で、Rustについて感じたことを、独断と偏見で述べます。 Rustってなんか流行りそうな雰囲気あるけど難しいとも聞くし、どうなんだろ?と考えている方や、Rustガチ勢の方々に、「初学者はこう感じるんだな」「ここらへんに苦労するんだな」というところを伝えることで、Rustのスムーズな普及に少しでも寄

                他言語ユーザがRust言語をガチめに使っての雑感 - 分散KVSを書いてみて - - Qiita
              • ちょっと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
                      • 「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」から学んだ可読性の高いコードの書き方
                        • 新卒で入社した合同会社DMM.comを退職しました - y-ohgi's blog

                          from: 合同会社DMM.com CTO室 to: フリーランス DMMどうだった 良かった。 なにしてたの 新卒で入社し、3年ぐらいクラウドをいい感じにするエンジニアしてました。 新規サービス立ち上げたり、リプレイスしたり、リファレンスアーキテクチャ作ったり、スクラムマスターしたり、とかとか。 あと80回ぐらい社内勉強会(勉強会・LT会・Podcast)主催したりもしました。 新卒入社 > プラットフォーム部 > CTO室 > SRE立ち上げ > CTO室 > 退職 詳しくは「転職先募集 - y-ohgi's blog」でいろいろ書きました。 なんで辞めたの 理由としては新しく入ってきた上司(x3人)と折り合いがつかなかったことと、折り合いがつかなかった結果やりたいこと(全社のクラウド活用をいい感じにすること)ができなくなったため辞めました。 特に何かが嫌になったとかではないです。 よ

                            新卒で入社した合同会社DMM.comを退職しました - y-ohgi's blog
                          • Go製ミドルウェアのメモリリークを解決した話 - Mirrativ Tech Blog

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

                              Go製ミドルウェアのメモリリークを解決した話 - Mirrativ Tech Blog
                            • 大量データの JSON serialize 処理を高速化し、レスポンスが倍速になった話 - freee Developers Hub

                              こんにちは、freee会計でワークフロー機能の開発をしている @mitubaEX です。 先日 freee会計のパフォーマンスチューニングに取り組みました。本記事では、調査の流れ、改善の事例を紹介します。 問題発覚までの流れ freee では自社の経理業務に freee会計を利用しており、その中でも経費精算の機能はほぼすべての従業員が利用しています。そのため日々多くのフィードバックをもらえます。そのフィードバックの1つで、「経費精算の一覧を開くのが遅い」という報告をもらいました。幸い表示件数を指定できるので調整すれば遅くはならないのですが、一覧性が下がってしまうため有用な解決策ではありません。 そこでワークフローを開発しているチームで、このパフォーマンスイシューの調査を始めました。 調査する まず事前調査として Datadog*1 で一覧画面を表示するリクエストの処理を確認しました。 一覧

                                大量データの JSON serialize 処理を高速化し、レスポンスが倍速になった話 - freee Developers Hub
                              • スクウェア・エニックスの"とあるシステム"のSite Reliability Engineering

                                はじめに こんにちは、情報システム部 SRE 橋本です。 普段はクラウドエンジニア(SRE)としてチームリードをしています。興味関心がインフラ、Observability、SRE、Security、Golangといった分野であり、 Japan Google Cloud Usergroup for Enterprise(Jagu’e’r ジャガーと読みます)でObservability/SRE分科会のオーナーを担当させていただいております。その縁もあって先日Innovators Hive at Cloud Next 2022でコミュニティ運営についてお話をさせていただきました。 この記事では現在チームリードをしていてビルドアップ中でもあるSREチームについて考えていることをお話したいと思います。 また、このSREチームについてのインタビュー記事も掲載いたしました。メンバーやチームの雰囲気を伝

                                  スクウェア・エニックスの"とあるシステム"のSite Reliability Engineering
                                • freee特有の風土病:エンジニアの症例と寛解について - freee Developers Hub

                                  フリー株式会社 PSIRT 多田正 Abstract フリー株式会社(東京都品川区,以下「freee社」)およびその関連会社,一部の提携先企業でのみ観察される症例が報告されている.著者はエスノグラフィー目的で当社に潜入し,2年間の観察をもってその固有性と症状をまとめた*1.本論文では特にソフトウェアエンジニアのみに見られる症状と,一定の条件下で寛解にいたる手法について報告する. Introduction freee社内において,本来「free」と記すべき文書等に「freee」と誤入力してしまう症例が数多く報告されている.入社後,比較的短期間で発症し,しかしながら人から人への感染性は認められず,退職後は徐々に症状が現れなくなるなど,freee社に特有の風土病として認識されている.症例そのものは当社が「freee」へ改名した2013年から報告されているものの*2,きわめて狭い地域内での発症であ

                                    freee特有の風土病:エンジニアの症例と寛解について - freee Developers Hub
                                  • 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)
                                      • yamlでテストシナリオを書いてそのまま実行までできるAPIテストツールの新星 “runn” を試してみた | DevelopersIO

                                        yamlでテストシナリオを書いたらそのまま実行できる……そんな夢のようなシナリオテストツール"runn"の紹介とやってみた記録です これまでのシナリオテストツールに対する課題感 シナリオテストツールといえば、 Cucumber や Gauge といったツールが有名です。 ですが、これらのツールは「シナリオファイル」とは別に、シナリオを実行するためのコードも書かないといけません。しかも、そのコードではAPIを呼び出す処理を特定のプログラミング言語を使って書かなければなりません。その中には、HTTP Clientを実際に操作するような処理も含まれます。 私は「シナリオテストがしたい」のであって、「シナリオに沿ってAPI呼び出しを行う処理を書きたい」のではありません。こういった課題感を、ここ数年ずっと抱えてきました。 そんなとき、ついに見つけたツールが "runn" でした。 APIのシナリオテ

                                          yamlでテストシナリオを書いてそのまま実行までできるAPIテストツールの新星 “runn” を試してみた | DevelopersIO
                                        • なぜ 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 してはならないのか
                                          • gRPCでインターフェースを再整理してからサービスを分割─freeeの段階的なマイクロサービス戦略 - エンジニアHub|Webエンジニアのキャリアを考える!

                                            株式会社ウルフチーフ 代表取締役。TIS株式会社にて19年半、さまざまな業種のシステムアーキテクチャ設計を担当し、2018年に退職、株式会社ウルフチーフを創業する。以降流しのアーキテクトとして、前職時代から書き溜めていたOSSプロダクトや技術記事を元に、様々な現場でアーキテクチャの設計や研修を実施している。 課題:リポジトリの肥大化に伴ってリリース頻度が低下 川島 freeeではどのような課題を解決するためにマイクロサービス化を検討されたのでしょうか? 横路 freeeのプロダクトの成り立ちからお話しすると、「会計freee」の最初のリリースが2013年で、翌年に「人事労務freee(当時の名称は給与計算freee)」をリリースしました。その段階で既に、各プロダクトや認証・認可を扱うサービス基盤などは、リポジトリやサービスを分割する形で開発・運用を行っていたんです。 しかし、プロダクトがマ

                                              gRPCでインターフェースを再整理してからサービスを分割─freeeの段階的なマイクロサービス戦略 - エンジニアHub|Webエンジニアのキャリアを考える!
                                            • C言語でSQLiteのクローンを作るチュートリアルやった - valid,invalid

                                              2019年12月の冬休みに1週間程かけて"Let's Build a Simple Database"という、C言語でSQLiteのクローンを作るチュートリアルをやりました。この存在を教えてくれた同僚に感謝 :pray: cstack.github.io チュートリアルの内容 Richard Feynman先生の“What I cannot create, I do not understand.”という言葉が掲げられているように、データベースを作ることでデータベースをより深く理解することに主眼が置かれているチュートリアルです。 これは重要事項説明かつタイトル詐欺に関する謝罪なのですが… 残念ながらこのチュートリアルは完成しておらず、Part 13が2017-11-26に公開されたのを最後に更新が止まってしまっており、以下の13章しかありません。 Part 1 - Introduction

                                                C言語でSQLiteのクローンを作るチュートリアルやった - valid,invalid
                                              • 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
                                                • 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 - 並行プログラミング編
                                                      • ヤフー株式会社を退職したのでついでに自分の半生を振り返ってみる|magurotuna

                                                        男もすなる退職エントリといふものを我もしてみむとしてするなり。 2020 年 10 月にヤフー株式会社を退職しました。退職に至るまでのあれこれと、今後のキャリアについて漠然と考えていることをまとめたいと思います。 学生時代 小・中・高は普通の公立に通い、1 年浪人して東大に入りました。 涼宮ハルヒの憂鬱からオタクになり、ニコニコ動画全盛期を経て引きこもり属性マシマシと化して、パソコンとゲームばかりしている中学・高校時代を過ごしました。 このオタク属性は大学に入って「声優おっかけ」に昇華し、声優イベントのためであれば日本国内はもちろんのこと、0 泊 2 日で台湾に弾丸で行くこともいとわないような生活を送っていました。 最終的に、大学の学園祭に声優さんを招いて自分でトークイベントを主催するというところまで行き着き、いろいろな意味で充実した学生生活を送ることができました。 電子情報工学科へ 勉強

                                                          ヤフー株式会社を退職したのでついでに自分の半生を振り返ってみる|magurotuna
                                                        • アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)

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

                                                            アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
                                                          • 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 ダウンロード処理で知っておくと良いこと - バックエンドパフォーマンス改善
                                                              • 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 が入った。
                                                                • 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インジェクションを防ぐ方法
                                                                    • 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
                                                                          • Organizing a Go module - The Go Programming Language

                                                                            A common question developers new to Go have is “How do I organize my Go project?”, in terms of the layout of files and folders. The goal of this document is to provide some guidelines that will help answer this question. To make the most of this document, make sure you’re familiar with the basics of Go modules by reading the tutorial and managing module source. Go projects can include packages, co

                                                                              Organizing a Go module - The Go Programming Language
                                                                            • GoでSQLにトレーシングコメントを埋め込んで実行する | おそらくはそれさえも平凡な日々

                                                                              アプリケーションが発行するSQLにコメントが埋め込めると便利です。例えば、 /* path/to/logic.go:334 */ SELECT ... のようにSQLに発行元の情報をコメントとして埋め込んでからExecすれば、DB側のログ(general log等)にも記録されるため、SREやDREサイドからも、負荷の高いSQLがアプリケーションのどこから発行されているかが分かりやすくなります。 Goには github.com/shogo82148/go-sql-proxy という、SQL実行をトレースし、フック処理を差し込める便利なライブラリがありますが、今回それにpull requestを送って、SQL実行前にクエリの書き換えができるようにしました。 https://github.com/shogo82148/go-sql-proxy/pull/61 https://github.co

                                                                                GoでSQLにトレーシングコメントを埋め込んで実行する | おそらくはそれさえも平凡な日々
                                                                              • How does the Linux Kernel start a Process

                                                                                ...and how to ptrace the entry point and m3ss w1th da stack. In this article, you will learn what happens inside the Linux Kernel when a process calls execve(), how the Kernel prepares the stack and how control is then passed to the userland process for execution. I had to learn this for the development of Zapper - a Linux tool to delete all command line options from any process (without needing r

                                                                                  How does the Linux Kernel start a Process
                                                                                • ドキュメントとコードが乖離しないように DMM .com のエンジニアが教えるGoaを使ったAPIサーバーの作りかた

                                                                                  DMM Groupのエンジニアが、Goを活用したプロダクト事例やトレンド、現場のリアルを話すイベント「DMM.go」。2回目の今回は、DMM.com プラットフォーム事業本部 エンジニアの本田雄亮氏が、Goaを使ってAPIサーバーを作る方法について紹介しました。関連資料はこちら。 手作業のドキュメントとコードとは乖離する 本田雄亮氏:今回、「Goaを使ってAPIサーバー開発してみた」というタイトルでお話ししたいなと思います。 まず自己紹介です。プラットフォーム部というところで基盤システムの開発をしています。バックエンドのエンジニアです。名前は本田です。興味あるのは、Goとかアーキテクチャ。DDDとかがけっこう好きなので、もし懇親会に参加される方がおられたら、Goaだけの話じゃなくて、Go全般だったりアーキテクチャ、DDDまわりでもお話できたらなと思っています。 さっそくメインテーマのGoa

                                                                                    ドキュメントとコードが乖離しないように DMM .com のエンジニアが教えるGoaを使ったAPIサーバーの作りかた