並び順

ブックマーク数

期間指定

  • から
  • まで

561 - 600 件 / 3131件

新着順 人気順

goの検索結果561 - 600 件 / 3131件

  • Wantedly における Go 導入にまつわる技術背景 | Wantedly Engineer Blog

    (本記事は Go Conference 2019 Autumn にて無料配布した冊子『WANTEDLY TECHBOOK GoCon Edition vol.2』からの掲載です) 配布した冊子の前半では Go の導入にあたってどのような工夫をしてきたのかを紹介しました。そこに書かれていたように、新しいプログラミング言語を導入するにはそれなりの整備コストがかかります。それではなぜそこまでして Go を導入したのでしょうか。本記事では Go を導入した背景について説明していきたいと思います。 なぜ Go か技術的・事業的背景どのプログラミング言語を採用するかや、どのようなアーキテクチャを選定するかというようなことは非常に影響範囲の大きい決断になるため、会社全体の技術的・事業的なコンテキストと切り離しては語れません。そこでまずは Wantedly の技術的・事業的な背景について、この後の話をする

      Wantedly における Go 導入にまつわる技術背景 | Wantedly Engineer Blog
    • Go言語を採用して開発をしている会社一覧 - Qiita

      日本ではRubyが流行り、ほとんどの会社がRubyを採用しています。現在は開発言語は拘らずサービスやリソースに合わせて開発言語・環境を決めますが、一部のエンジニアの中では言語に強いこだわりを持つ方もいるのと、グローバルエンジニアを目指すにあたりRubyは世界で使われていないため、GoやPythonを学ぶ方も一定数いらっしゃいます。 最近Go言語の人気も出てきたため、今回は上記のような方やGo言語にチャレンジをしたい方向けにGo言語をメインに取り入れている企業様一覧を紹介します。 ■Gunosy 言わずと知れてキュレーションアプリの先駆者です。解析とアルゴリズムで情報過多な現代において、最適な情報をユーザーに届ける事をミッションとし、情報の非対称さを正す企業です。 メインサービス「グノシー」はDL数2000万を超え、それ以外にもKDDIとの共同開発サービス「ニュースパス」女性向けバーティカル

        Go言語を採用して開発をしている会社一覧 - Qiita
      • ガードレールを整備して、安心・安全な「Go」ライフを コードをセキュアに保つために解決すべき3つの課題

        Go Conferenceは半年に1回行われるプログラミング言語Goに関するカンファレンスです。米内氏は、Goを使用するときにセキュリティを高める仕組み作りについて発表しました。 日々コードを書く中で起こり得るインセキュアなコード 米内貴志氏:米内です。今日は「Goをセキュアに書き進めるための『ガードレール』を整備しよう」という題で、組織としてGoを使うときにセキュリティを底上げするための仕組み作りについて話をしようと思います。よろしくお願いします。 まず簡単に自己紹介をさせてください。私は米内貴志と申します。株式会社Flatt Securityでセキュリティプロダクトの開発、今は特にeラーニング事業の開発をしています。社内でもけっこうGoを使っています。 もともとWebブラウザーとセキュリティが好きで、最近『Webブラウザセキュリティ』という本をラムダノートさんから出版しました。気になる

          ガードレールを整備して、安心・安全な「Go」ライフを コードをセキュアに保つために解決すべき3つの課題
        • GolangとRustを使い分けるとしたらどのような観点で使い分けますか?

          回答 (2件中の1件目) Go は GC を使う言語ですので、そもそも利用用途は絞られます。例えばハードウェアのドライバを書くのにはあまり向いていません。以下ではそれ以外の点についてお話します。 プログラムを作る時、完成形に向かって一度もそれることなくコードを書ける人はほぼいません。小さい断片のコードを書き、仮で動かしてみて、それを繋げてプログラムにすると思います。そういった場合の手数がどちらの方が大きいかという点で見るのも良いと思います。 例えば実装途中のコードにパフォーマンス上の問題が見つかり、並行処理をさせたいと思った時に多くのプログラミング言語ですと構造自体を大きく変更しない...

            GolangとRustを使い分けるとしたらどのような観点で使い分けますか?
          • Faster MySQL with HTTP/3

            Most of what I will be discussing is not publicly documented and is entirely experimental. The background# As a part of some of our infrastructure initiatives, we demanded new APIs and connectivity features for our database. To support features that weren’t available over the MySQL protocol, we decided to start bolting on a publicly accessible HTTP API. This API is not documented for public consum

              Faster MySQL with HTTP/3
            • GitHub - francoismichel/ssh3: SSH3: faster and rich secure shell using HTTP/3, checkout our article here: https://arxiv.org/abs/2312.08396 and our Internet-Draft: https://datatracker.ietf.org/doc/draft-michel-ssh3/

              SSH3 is a complete revisit of the SSH protocol, mapping its semantics on top of the HTTP mechanisms. It comes from our research work and we (researchers) recently proposed it as an Internet-Draft (draft-michel-ssh3-00). In a nutshell, SSH3 uses QUIC+TLS1.3 for secure channel establishment and the HTTP Authorization mechanisms for user authentication. Among others, SSH3 allows the following improve

                GitHub - francoismichel/ssh3: SSH3: faster and rich secure shell using HTTP/3, checkout our article here: https://arxiv.org/abs/2312.08396 and our Internet-Draft: https://datatracker.ietf.org/doc/draft-michel-ssh3/
              • GoとJSON

                GoとJSON merpay Architect goccy 2021/8/20 Go 1.17 Release Party

                  GoとJSON
                • Gopher道場の動画コンテンツを完全に公開しました

                  はじめに Gopher道場は、tenntennがメルペイ在職時に始まったGoを学ぶ人のための学習の場です。tenntennがメルペイを退職後、著作権周りの整理などが行われ、Go Conferenceなどを運営する一般社団法人Gophers Japanに運営が移管されました。メルペイのみなさまありがとうございました。 動画コンテンツを完全に公開しました 移管にあたり、Gopher道場のSlackに入った方にだけ公開していた動画コンテンツを一般公開することにしました。以下の再生リストからご覧いただけます。 なお、資料はこちらの古いスライドではなく、プログラミング言語Go完全入門をご覧ください。 古い資料はアップデートされませんが、プログラミング言語Go完全入門は今後もアップデートをしていきます。 動画は10時間以上あり、以下の内容を扱っています。 Goに触れる 基本構文 型と関数 パッケージ

                    Gopher道場の動画コンテンツを完全に公開しました
                  • Amazon Linux 2 の Dockerイメージから開発環境を作り Visual Studio Codeで接続してみる | DevelopersIO

                    Amazon Linux 2 の Dockerイメージから開発環境を作り Visual Studio Codeで接続してみる Amazon Linux 2のDockerイメージから開発環境として使うコンテナを作り、Visual Studio Codeで接続してみました。 コンテナは以下をインストール or 可能としてみました。 AWS CLIをインストールする。かつクレデンシャルはローカルのものをコンテナ内でも使えるようにする。 (開発言語として)Go言語をインストールする。 ローカルマシンとコンテナで共有できるフォルダを作成する。 以下、今回作成した「docker-compose.yml」と「Dockerfile」について書いていきたいと思います。 作成したもの ローカル環境について 本作業はMacで行いました。docker-composeとDockerがインストールされているものとしま

                      Amazon Linux 2 の Dockerイメージから開発環境を作り Visual Studio Codeで接続してみる | DevelopersIO
                    • Go Slice Tricks Cheat Sheet

                      Web site created using create-react-app

                        Go Slice Tricks Cheat Sheet
                      • Goの新しい構造化ロガーを体験しよう | gihyo.jp

                        logパッケージ Goには標準ライブラリとしてlogパッケージが提供されています。logパッケージで行えることはそう多くはありません。たとえば、デフォルトではログは標準エラー出力に出力されますが、log.SetOutput関数で出力先を変更できます。また、利用する関数によってログを出力した後の挙動をコントロールできます。たとえば、log.Print関数はログを出力するだけですが、log.Fatal関数はログ出力後にos.Exit(1)を呼び出します。log.Panicはログ出力後に出力したログと同じ文言を引数としてパニックを発生させます。 logパッケージでは、ログとともに関連するデータを出力したい場合は、log.Printf関数を用います。次のように、書式を指定して出力します。 log.Printf("request_url=%s request_method=%s", r.URL, r

                          Goの新しい構造化ロガーを体験しよう | gihyo.jp
                        • Go の命名規則

                          本記事は Go Advent Calendar 2019 11 日目の記事です。 Go はシンプルな言語機能・シンタックスが特徴であり、命名規則にもそのシンプルさが表れています。 本記事では、公式や著名な Go エンジニア、OSS などから見られる Go らしい命名規則を紹介します。 今更なテーマかもしれませんが、意外にも公私共々で命名規則が意識されていないコードを時折見かけるので、自戒も込めて記します。 誤った内容があれば Twitter でご指摘いただければと思います。 パッケージ名簡潔にするEffective Go では、short, concise, evocative なパッケージ名が望ましいとされます。 これはパッケージ名に限らずほとんどあらゆる命名において役立つ指針だと思います。 また、「パッケージ名は一言で何をするかを表すエレベーターピッチだ」という Dave Cheney

                          • 絶対に落とせない!友人の結婚式の余興用アプリケーションをエラーゼロで突破した - エムスリーテックブログ

                            エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。 今回は友人の結婚式の余興用に作ったアプリケーションの実装とエラーゼロで突破するための工夫などを紹介します。 どんな余興をしたの? アーキテクチャ 結婚式で使う回答システム実装のポイント 本番直前1ヶ月は動作確認ができないことを考慮したスケジューリング 本番以外の時間はなるべく料金を安く済ます。 絶対に落とせないアプリケーションのための負荷試験、Fuzz testing 負荷試験 Fuzz testing 結果 まとめ We are Hiring! どんな余興をしたの? 友人とは毎年夏の旅行で「格付けチェック」をやっていて、高い肉や酒を当てられるかなどのゲームをしているので、今回の友人の結婚式の余興では「格付けチェック」と題して、新婦はプロに混じった新

                              絶対に落とせない!友人の結婚式の余興用アプリケーションをエラーゼロで突破した - エムスリーテックブログ
                            • ジュニアエンジニアとして入社してからの1年半を振り返る

                              こんにちは。Finatextでエンジニアをしている塚本です。 証券プラットフォーム「BaaS」や、それを利用して開発されたアプリケーションのフロントエンドを担当しつつ、現在はバックエンドの実装も行っています。 Finatextに入る前は大手メーカーでSEを3年ほど、その後フリーランスを1年ほどしておりました。フリーランスになってからエンジニアを目指すことを決め、独学でコーディングの勉強を始めています。 ジュニアエンジニアとしてFinatextに入社した私が、約1年半でどの程度成長したのかを振り返りたいと思います。 まず入社当時と現在でどう変わったかがこちらです。 Finatext入社当時コーディングは1人でするのは到底無理。。デベロッパーツールどうやって開くの?rebaseって何?Laravelなら少しだけ知っているVue.js, Go(弊社使用言語)書いたことない ↓1年半経った現在ヘル

                                ジュニアエンジニアとして入社してからの1年半を振り返る
                              • クエリログを使ったAurora MySQLの負荷テスト - クックパッド開発者ブログ

                                最近はZX-25Rが気になっている菅原です。4気筒250ccといえば、以前バリオス2に乗っていたんですが、あれもよく回るよいバイクでした。足つきの良さが懐かしいです。 この記事では、クエリログを使ったAurora MySQLの負荷テストの話を書きます。 MySQLの負荷テスト サービスに使われているデータベースは、Webサーバと比べて自動的なスケールアップ・スケールアウトが簡単ではないためキャパシティプランニングは非常に重要です。サービスへのアクセス増による負荷増大の結果、急激に性能が低下するためなるべく事前にキャパシティを把握しておきたいところです。 クックパッドではサービスのデータベースとして主にAurora MySQLを利用しているのですが、キャパシティを把握するための負荷テストには以前から苦労してきました。 1. シナリオを書くのが大変 サービスで使われているデータベースの負荷テス

                                  クエリログを使ったAurora MySQLの負荷テスト - クックパッド開発者ブログ
                                • GitHub - ImVexed/muon: GPU based Electron on a diet

                                  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 - ImVexed/muon: GPU based Electron on a diet
                                  • 『週末レイトレーシング』を読んだ - a.out

                                    以前からレイトレーシングをやってみたいと思っていたので、正月の連休を使って『週末レイトレーシング』という本を読んだ。 C++ を使ってフルスクラッチでレイトレーサーを実装していくという内容で、タイトルの通り週末にやりきれる分量にまとめられている。 tatsu-zine.com レイトレーシングのついでに Go の練習もしたかったので、C++ のコードを参考に Go で実装した。 最後まで実装できる確証もないまま始めてしまったが、interface など必要な機能が一通り揃っていたおかげで問題なく実装できた。 ただ、C++ と違って演算子のオーバーロードができないため、ベクトル計算の部分は記述量が多くなってしまい少しつらかった。 以下はレイトレーサーが実装されていく過程。 画像 説明 まずは画像の出力。この本では PPM 形式の画像を扱う。 中身はプレーンテキストなのでプログラムで簡単に生成

                                      『週末レイトレーシング』を読んだ - a.out
                                    • Go言語の開発環境セットアップとサンプルプロジェクト作成 | DevelopersIO

                                      Javaのエンジニアだった私がGo言語を始める上で学んだ開発環境のセットアップ方法についてまとめていきたいと思います。 Go言語をインストール後サンプルプロジェクトを作成し、Goのプロブラムの実行/ビルド方法や各種周辺ツールをご紹介していきます。 はじめに Javaのエンジニアだった私がGo言語を始める上で学んだ開発環境のセットアップ方法についてまとめていきたいと思います。 Go言語をインストール後サンプルプロジェクトを作成し、Goのプロブラムの実行/ビルド方法や各種周辺ツールをご紹介していきます。 この記事がこれからGo言語で開発を始めたい方のとっかかりになれば幸いです。 ※他言語で開発経験がある方を想定しております。 動作環境 今回使用した動作環境は以下のとおりです。 PC : Mac M1(Apple Silicon)チップ OS : macOS Big Sir 11.5.2 Go

                                        Go言語の開発環境セットアップとサンプルプロジェクト作成 | DevelopersIO
                                      • golangで作るTLS1.2プロトコル

                                        はじめに 前回自作でTCPIP+HTTPを実装して動作を確認することができました。 しかしご覧頂いた方はおわかりのように、通信はHTTP=平文でやり取りされておりパスワードなど機密情報が用意に見れてしまう状態です。 普段我々がブラウザに安心してパスワードを入力しているのは通信がTLSで暗号化されているからです。ではそのTLSの仕組みはどうなっているのでしょう? 恥ずかしい限りですが僕はわかりません。😇😇😇 ということで以下を読みながらTLSプロトコルを自作してみてその仕組みを学ぶことにします。 マスタリングTCP/IP情報セキュリティ編 RFC5246 プロフェッショナルSSL/TLS 今回の実装方針です。 TLS1.2プロトコルを自作する 暗号化などの処理はcryptパッケージの関数を適時利用する tcp接続にはconnectを使う 鍵交換はまずRSAで作成する TLS_RSA_W

                                          golangで作るTLS1.2プロトコル
                                        • Protocol BuffersでgRPCとGraphQL両対応のコードを生成するプラグイン書いた - blog::wnotes.net

                                          gRPC、あるいはGraphQL 昨今のAPI開発にgRPC、またはGraphQLを採用するケースは増えてきていて、ドメインロジックをgRPCで実装して、フロントエンド(BFF)はGraphQL経由のHTTP一本で取得するのはベストプラクティスの一つだと思っています。 とはいえ人的リソースや管理の問題から、ProtobufとGraphQLスキーマを両方メンテナンスしていくのはとてもつらくて、 他のエントリでも結果としてどちらかに寄せました、というケースをよく目にしました。 実際自分もやってはみたものの、両方のメンテナンスをしていくのは相当辛くて、Protobufを直してgRPCのI/Fを変更、合わせてGraphQLのSchemaにも手を入れてフロントに渡して…というのは管理コストに見合わないな、ってことで諦めました(今は grpc/grpc-web 、または grpc-ecosystem/

                                          • Goのなぜ問答

                                            はじめに Goはできるだけ冗長な機能セットを増やさずに応用の効くシンプルで強力な機能セットに絞り込んだ設計であることを目指した言語処理系です。なのでリッチな機能を持つ言語処理系経験者からするとたくさんの「なぜ?」を感じると思います。 しかし、Goの開発者たちは他の言語処理系にある機能だからGoにも採用しようとは一切考えません。あくまで大きなゲイン(デメリットをメリットが大きく上回る)を示されるまでは採用しません。特に言語仕様についてはより変更を嫌う傾向があります。「Go1の約束」というものがあり、Go1.0向けに書かれたコードはGo1.xでも動くもしくは機械的にコードにパッチを当てることで移行可能にするということをずっと守っています(約9年?)。 最近になりGo2プロポーザルがたくさん書かれ、それらの提案のうち言語仕様に関するものは最終的に2〜3個に絞り込まれ順次採用されていくという計画で

                                              Goのなぜ問答
                                            • Go1.21 New Features

                                              Go1.21 が 2023年8月9日(JST) にリリースされ、そのリリースノートやブログが公開されています。この記事では前回の Go1.20 New Features に引き続き、Go1.21 の新機能の中から気になった機能を解説していきます。 spec Go1.20 までは、メジャーリリースの一番最初のバージョンの末尾にパッチバージョンが付いておらず、次のバージョンからはパッチバージョンが付くようになっていました。 例えば Go1.20 の最初のバージョンは go1.20 で、次のバージョンからは go1.20.1, go1.20.2, ... のようにパッチバージョンがついていました。 Go1.21 からは、一番最初のバージョンが go1.21.0 のようにパッチバージョンの .0 が付くようになります。 import している package を初期化する順序が Spec に明記さ

                                                Go1.21 New Features
                                              • SNAKE(EKANS)ランサムウェアの内部構造を紐解く | 技術者ブログ | 三井物産セキュアディレクション株式会社

                                                ここ数日ホンダがサイバー攻撃を受けたというニュースが世界各国で報じられています。 本記事では、一部で関連性が指摘されているVirusTotalにアップロードされたSNAKEランサムウェアの検体(※)について解析を行い、現時点までに判明した内容を簡単ですが共有します。海外ではすでにいくらか情報は出ているものの、日本語での解析記事はあまりないと思われるため何かの参考になれば幸いです。 ※ハッシュ値:d4da69e424241c291c173c8b3756639c654432706e7def5025a649730868c4a1 なお弊社では、本検体がホンダに対するサイバー攻撃と関連があるかどうかは把握しておらず、本記事はあくまで上記ハッシュ値の検体の解析結果に終始している点をご了承ください。 ■検体調査 まず、当該検体は以下の通り、日本国内から6/8頃にVirusTotalにアップロードされてい

                                                  SNAKE(EKANS)ランサムウェアの内部構造を紐解く | 技術者ブログ | 三井物産セキュアディレクション株式会社
                                                • GitHub - conwnet/github1s: One second to read GitHub code with VS 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 - conwnet/github1s: One second to read GitHub code with VS Code.
                                                  • ポートが閉じてることを外部から監視するポートスキャナー(slack通知付き) - Code Day's Night

                                                    IP制限しているTCP 22(sshd)や3306(MySQL)のようなポートが空いていないかチェックするツールを作りました。 たとえば設定ミスで22番ポートがすべてのIPを許可している状態になってしまっていたというケースがありそうで、サーバ台数が数百台になってくるといちいち気にしているのが面倒なのでチェックする簡易ポートスキャナーを作りました。 github.com 外部監視ツールだとポートが空いてるか、任意の文字列が返るかなどのチェックはできますが、ポートが閉じられてることというのを簡単に管理するのが意外と手間だと感じたのがきっかけです。 Go言語で作ってるのでバイナリにして実行もできます。 使い方 goが動く環境を用意して、 echo "example.com\nexample.net" | go run aite9 -tcp 22,3306 のようにすると次のように一気にポートをス

                                                      ポートが閉じてることを外部から監視するポートスキャナー(slack通知付き) - Code Day's Night
                                                    • Goのカバレッジツールを使いこなす | gihyo.jp

                                                      はじめに テストでコード品質を担保していくことは、継続的インテグレーションの観点などで必要不可欠です。そして、十分なテストコードが書かれているかどうかの指標として、よく使われるものといえばテストカバレッジがあります。 Goではgo testコマンドと、go tool coverコマンドがカバレッジ計測の機能を担っています。今回は、これらのツールをより深く使い込んでいくために、既存機能の一歩進んだ使い方や最新機能について紹介します。 なお、本記事で紹介しているコマンドなどはmacOSで実行した場合の例となります。 オリジナルのカバレッジ統計データを集計する まずは既存のカバレッジの統計データを取得する方法を振り返り、より詳細な情報を集計するアプローチについて紹介します。 Goのカバレッジツールで出力できる統計データ 既存のgo testコマンドおよびgo tool coverコマンドで出力で

                                                        Goのカバレッジツールを使いこなす | gihyo.jp
                                                      • DNS改ざん検知ツール(Slack通知付き)で検知速度を爆速にした - Code Day's Night

                                                        暑い夏2020、DNSと戯れていました。 レジストラの脆弱性でDNSが改竄されてサイトがハッキングされる事件を見て、これを防ぐ方法がなかったので7月末にDNS改ざん検知ツール NSchecker を作って公開しました。 blog.ichikaway.com 結論 忙しい方のために結論だけ先に。NSchecker Ver0.03ではDNS改竄検知速度が60秒程度に大幅改善しました!(Ver0.01では最大48時間の検知遅延) NScheckerのソースコードはこちら。 github.com 詳細 このツールはDNSのNSレコードが改竄されるとSlackで通知できる(slack以外も可能)ため便利だったのですが、NSレコードの参照がDNSキャッシュサーバだったため検知が最大で48時間ぐらいかかる問題がありました。(NSchecker Ver 0.01) 無いよりはマシなツール程度になってしまっ

                                                          DNS改ざん検知ツール(Slack通知付き)で検知速度を爆速にした - Code Day's Night
                                                        • What it was like working for GitLab

                                                          I joined GitLab in October 2015, and left in December 2021 after working there for a little more than six years. While I previously wrote about leaving GitLab to work on Inko, I never discussed what it was like working for GitLab between 2015 and 2021. There are two reasons for this: I was suffering from burnout, and didn't have the energy to revisit the last six years of my life (at that time)I w

                                                          • A new Go API for Protocol Buffers - The Go Programming Language

                                                            Joe Tsai, Damien Neil, and Herbie Ong 2 March 2020 Introduction We are pleased to announce the release of a major revision of the Go API for protocol buffers, Google’s language-neutral data interchange format. Motivations for a new API The first protocol buffer bindings for Go were announced by Rob Pike in March of 2010. Go 1 would not be released for another two years. In the decade since that fi

                                                              A new Go API for Protocol Buffers - The Go Programming Language
                                                            • フィーチャーフラグを管理するためのOpenFeature | フューチャー技術ブログ

                                                              はじめにTIG DXユニット真野です。 CNCF連載の2本目はクラウドネイティブなフィーチャーフラグの標準とAPI、SDKを提供するOpenFeatureについてです。 フィーチャーフラグとはフィーチャーフラグとはコードを変更せずに、フラグを使って機能を有効/無効化する開発/デプロイ手法のことです。一般的なユースケースとしては、特定のユーザーに対して再起動とか再デプロイをせずに、新機能を有効化したいといった場合に役立ちます。信頼度が高くなったらより段階的に広範囲に対象を広げていくと安心ですね。この使い方だけであれば、カナリアリリースを想像しますが、他にも次のようなユースケースが考えられます。 初期から契約している特別な顧客(あるいはプレミアムプランに契約している顧客)に向けて開発した機能を提供する バグが見つかったので、該当機能を無効化してアプリの振る舞いをロールバックする 繁忙期にシステ

                                                                フィーチャーフラグを管理するためのOpenFeature | フューチャー技術ブログ
                                                              • Zigで簡単クロスコンパイル 2022 - k0kubun's blog

                                                                僕は以下の3つのツールを複数プラットフォーム向けにクロスコンパイルしてバイナリ配布しており、以下のように全て異なる言語で開発している。 Go: sqldef Rust: xremap mruby: mitamae クロスコンパイルに苦労している話をするとZigを使ってみたらいいんじゃないかと言われることがあり、周りでもZigが何となく流行り始めた気がするので、これらのツールに実際自分で使ってみてどうだったかという事例を紹介したい。 Zigとは Zigはそもそもプログラミング言語なのだが、C/C++とのinteropがやりやすい言語なようで、おそらくそれに必要でLLVMベースのC/C++ツールチェインが同梱されていて、しかもそれをDrop-In Replacement for GCC/Clangとして売りにしている。 僕はZig言語そのものにはそれほど興味はないのだが、クロスコンパイラとして

                                                                  Zigで簡単クロスコンパイル 2022 - k0kubun's blog
                                                                • Goアセンブリ入門 - Qiita

                                                                  この記事は Chapter I: A Primer on Go Assembly を翻訳、加筆したものです。 この記事では以下のような人を想定しています。 Go言語の文法を理解している サブルーチンコール時の一般的なスタックの挙動を理解している 環境 擬似アセンブリ Goコンパイラが出力するアセンブリは、抽象化されたものであり、実際のハードウェアにマッピングされていません。 Goアセンブラはこの擬似アセンブリを対象のハードウェアに沿った機械語に変換します。 Javaのバイトコードのようなものを想像するとわかりやすいかもしれません。 このような中間層を設けることの最大の利点は新しいアーキテクチャに対応するのが楽になることです。 詳細を知りたい場合は、Rob Pike氏著の The Design of the Go Assemblerを見てください。 Goアセンブリを知るためにもっとも重要なこ

                                                                    Goアセンブリ入門 - Qiita
                                                                  • 軽量版Googleアプリ「Google Go」、日本を含む世界で公開 音声読み上げ機能も

                                                                    米Googleは8月20日(現地時間)、主に新興国市場向けに展開している「Android Go」の軽量検索アプリ「Google Go」を世界で公開したと発表した。日本でもGoogle Playストアからダウンロードできる。 Google Goは、2017年12月に発表したローエンド端末向けOS「Android Oreo(Go edition)」のGoogleアプリとして登場した。アプリ容量が約7MBと軽量で、ネットワークが不安定な環境でも検索が可能という。通常のGoogleアプリでも可能な、オフラインでの検索をネットに接続できてから表示する機能も備える。 Google Goには検索の他に、音声検索、画像およびGIFの検索、翻訳、「Google Lens」、Webページの読み上げ機能もある。Google Lensについては、Google I/O 2019で予告されていた。 Webページの読み

                                                                      軽量版Googleアプリ「Google Go」、日本を含む世界で公開 音声読み上げ機能も
                                                                    • GitHub Actions 上での Go の Docker ビルドを高速化する

                                                                      どうも GitHub Actions 上で Docker ビルドを行うと時間がかかるなぁと感じていました。 かなり軽量の Go の Web アプリケーションを Docker イメージにしてプッシュするプロセスなのですが、全体で 3 分ほどかかっています。 今回はその速度改善を行ったので、得た知見を記事にしたいと思います。 最終的に、ケース次第では以下のような結果を出すことができました。 ※ケース = go のソースコードのほんの一部を変更してワークフローを実行する。 go.mod など依存関係に変化はない。 go build: 60秒 → 1秒 docker/build-push-action ステップ: 2分30秒 → 30秒 ワークフロー: 3分 → 1分 前提 go build は Dockerfile のステップで行っており、イメージとして以下のような内容になっています。 FROM

                                                                        GitHub Actions 上での Go の Docker ビルドを高速化する
                                                                      • Visual Studio Codeで使えるリモート環境のdevcontainerが意外と便利そうだったのでまとめ

                                                                        試してたらたまたまVisual Studio Code(vscode)のdevcontainer(Remote Container)が、Remote SSH経由でリモート環境でも使えることを知ったので、devcontainer用の環境構築方法やdevcontainerの構築方法についてまとめてみた 今まではローカル環境のdockerか、codespaceでしか利用できないのかなと思っていたのだけど、リモート含めて利用できるとかなり便利そうな印象だったので一通り試してみました 最近はRemote SSHでリモート環境を利用するケースが多いのでリモート環境で使えないならそんなに使えないかなと思ってたんだけど、普通にRemote SSH経由でdevcontainer使えたのでかなり便利そうだった devcontainerについてはこちらを参照してもらえればと はじめに 結論から言うと以下のような

                                                                          Visual Studio Codeで使えるリモート環境のdevcontainerが意外と便利そうだったのでまとめ
                                                                        • Don't write clean code, write CRISP code — Bitfield Consulting

                                                                          I’m sure we’re all in favour of “clean code”, but it’s one of those motherhood-and-apple-pie things that no one can reasonably disagree with. Who wants to write dirty code, unless maybe it’s for a porn site? The problem, of course, is that few of us can agree on what “clean code” means, and how to get there. A rule like “methods should only do one thing”, looks great on a T-shirt, but it’s not so

                                                                            Don't write clean code, write CRISP code — Bitfield Consulting
                                                                          • Testcontainersを用いてテスト実行前の docker compose up を無くし、Goで並列テストする | フューチャー技術ブログ

                                                                            春の入門祭り2024の1記事目です。 はじめにTIG真野です。 Testcontainers を用いて、単体テスト実行前に docker compose up -d 無しで、PostgreSQLにアクセスする単体テストを行う、入門記事です。 恩恵は次のような開発者体感の向上が個人的にあります。 テストを実行するうえで、別プロセスのサービスを起動しておく必要があるといった前提条件を考えなくても済むため、テストを行うビジネスロジックに集中できるdocker compose up -d 打たないだけだが、テストに必要なコンテナを考慮しなくても済む停止し忘れて、別のリポジトリの開発するときに混乱しなくても済む並列テストしやすくなるので、テストの実行速度が向上するGoにおいて、複数のパッケージを同時にテストするとき、 -p 1 で絞らずに済むTestcontainers とはhttps://test

                                                                              Testcontainersを用いてテスト実行前の docker compose up を無くし、Goで並列テストする | フューチャー技術ブログ
                                                                            • Goで作ったロジックにWebUIをつけてGitHubページに公開する | フューチャー技術ブログ

                                                                              ちょっとしたツールをGoで作ってみたのですが、わざわざインストールしなくてもいいようにWebのUIをつけてブラウザで使えるようにしてみました。作ってみたのは以下のツールで、Markdownのリスト形式でざっと下書きしたテーブルの設計をSQLとか、PlantUMLとかMermaid.js形式のERDの図にします。 https://shibukawa.github.io/md2sql/ ウェブフロントエンド部分はNext.jsの静的サイトで、GoはWASMにしてロードして実行しています。WASMを使うのは初めてなのであえて選んでみました。 GoをWASM化するもともとCLIツールは作っておりました。CLIのメインはcmd/md2sql/main.goで作っていました。この中でやっていることは kingpin.v2のオプションパース 指定されたファイルを読み込み(あるいは標準入力) パース 指定

                                                                              • フロントエンドエンジニアが3ヶ月で Go を覚えてバックエンド開発に参画するまで

                                                                                Magic Moment の @aqlwah です。 2021年10月に入社してから1年ほどの間は、フロントエンドエンジニアとして React や Redux を用いた SPA の開発に主に従事していました。 それが昨年10月に行われたチーム体制再編をきっかけとして、バックエンドの開発にも参画するようになりました。 この記事では、フルスタックエンジニア見習いとなった私が Go をキャッチアップしてバックエンド開発を始めるまでに取り組んだ学習の経緯(ほぼ書評)をご紹介します。 余談ですが、この記事は先日にチーム内で開催した LT 会での発表をブログ向けの文章として書き起こしたものです。 私たち Tech チームでは、不定期で自由参加の LT 会を実施しており、業務内外で得た様々な知見を共有しています。 LT 会についての詳細もいずれこのブログでご紹介できればと思っています。ご期待ください。

                                                                                  フロントエンドエンジニアが3ヶ月で Go を覚えてバックエンド開発に参画するまで
                                                                                • Working with Errors in Go 1.13 - The Go Programming Language

                                                                                  Damien Neil and Jonathan Amsterdam 17 October 2019 Introduction Go’s treatment of errors as values has served us well over the last decade. Although the standard library’s support for errors has been minimal—just the errors.New and fmt.Errorf functions, which produce errors that contain only a message—the built-in error interface allows Go programmers to add whatever information they desire. All i

                                                                                    Working with Errors in Go 1.13 - The Go Programming Language