タグ

2020年11月27日のブックマーク (12件)

  • grpc-gateway機能ひとめぐり - 世界線航跡蔵

    @vvakame さんが TechBooster の新刊"JavaScriptoon"の中でgRPCを解説していて、その中で grpc-gateway にも触れている。これはとてもよい記事だったので、みんなこの電子書籍版を買えば良いと思う。 ただし、grpc-gatewayは記事中で使われているだけで主題ではないので、すべてのトピックをカバーしてくれているわけではない。それは仕方が無いが、そろそろgrpc-gatewayの機能を見渡す日語記事が欲しいと思ったので自分で書くことにする。 grpc-gatewayとは gRPC (HTTP/2 + ProtocolBuffers)をwrapして古典的なJSON API (HTTP 1.1 + JSON)を提供するリバースプロキシを生成するコード生成機だ。 別記事 にも書いた。 何ができるのか gRPCで使うサービス定義(IDLみたいなやつ

    grpc-gateway機能ひとめぐり - 世界線航跡蔵
    Akineko
    Akineko 2020/11/27
  • Real Unreal Engine C++ 2017-12 (part-5/5) - C++ ときどき ごはん、わりとてぃーぶれいく☆

    はてなブログの記事あたりの容量制限のため前の部分 §1.10. までは前の記事でどうぞ→Real Unreal Engine C++ 2017-12 (part-4/5) - C++ ときどき ごはん、わりとてぃーぶれいく☆) 1.11. UE4/C++ における入門的な「スレッド」ライブラリーの std 互換性 std UE4 promise TPromise future TFuture thread FRunnableThread PRIMISE-FUTURE-THERAD の std と UE4 の 比較は以前書いた記事がちょうどこのセクションに相当する。 C++ 標準の promise / future / thread に対応する UE4 標準の TPromise / TFuture / FRunnableThread の使い方 - C++ ときどき ごはん、わりとてぃーぶれ

    Real Unreal Engine C++ 2017-12 (part-5/5) - C++ ときどき ごはん、わりとてぃーぶれいく☆
  • 【LT参加レポート】GoによるGraphQL実装 - カミナシ エンジニアブログ

    はじめまして。株式会社カミナシでアプリケーションエンジニアをやってる keinuma です。 カミナシではAPIの開発にGo言語を使用しています。自分はGraphQLが好きなのですがこれまでGoのライブラリを利用してGraphQLランタイムを実装したことがありませんでした。なのでGoのライブラリの一つであるgqlgenを利用してサンプルアプリケーションを実装してみました。 今回は勉強会で発表した内容を編集して書いていきます。 speakerdeck.com ※ただし書き カミナシのプロダクトではGraphQLを使っていません。 サービスサイトではGatsbyを使っていてこちらについてのまとめは後日公開予定です。 GraphQLの実装手段 BaaS GraphQLはクライアントの柔軟性が高い分、ランタイムが複雑になりがちです。 そのため実装するときはGraphQLランタイムをBackend

    【LT参加レポート】GoによるGraphQL実装 - カミナシ エンジニアブログ
  • moq - gomockを使わないMock生成 - oinume journal

    Goでよく使われるMockの生成ツールとしてgomockがある。個人的にはgomockが生成したコードでモックを書くのが好きではないので、代替としてmoqを使うやり方を取り上げてみようと思う。 TL;DR moqは、mockしたいinterfaceで定義されているメソッドと同じシグネチャのメソッドを生成し、そのメソッドを実装することでmockが作れる 純粋にメソッドのモック実装のコードを書けばいいだけなので、gomockのようにライブラリとしての使い方を覚える必要はない 生成されるコードもtype safeであり、gomockのようにanyは登場しない moqには、mock化したメソッドが呼び出された回数を取得するなど、最低限のことはできるようになっている。 それ以上のことをやりたければ自分で実装する 題材 GitHubAPIを使い指定したリポジトリのブランチを出力するServiceを考

    moq - gomockを使わないMock生成 - oinume journal
  • Golangのnet/httpでCORSを全許可するときにつけるヘッダー - Qiita

    func handler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Headers", "*") w.Header().Set("Access-Control-Allow-Origin", "*") w.Header().Set( "Access-Control-Allow-Methods","GET, POST, PUT, DELETE, OPTIONS" )

    Golangのnet/httpでCORSを全許可するときにつけるヘッダー - Qiita
  • Goのヌル安全について

    「ヌル参照の考案は10億ドル単位の過ち」と語ったホーア氏(Goの並列処理モデルCSPの考案者でもあります)。そしてモダンな言語処理系は「ヌル安全」を持つのが流行です。しかし、Goには完全な「ヌル安全」の仕組みを持ちません。 Goのメモリ安全機能 もちろんGoは完全なヌル安全とは言えないまでもヌルポ参照対策や不正なメモリ参照を防ぐいくつか考慮した仕組みや慣習を持っています。 ポインタの算術移動を許さない言語仕様 確保するメモリは全てゼロ値で初期化済み エラーがnilなら有効な値を返すという慣習 必須のエラーチェックがヌルチェックを兼ねている これらによりGoは完全に「メモリ安全」であり、「ヌル安全まであと一歩」までの仕組みを持っています。それでもヌルポ参照は「ランタイムパニック」という形で現れます。 ランタイムパニック Goでは「ランタイムパニック=コードの不備の通知」です。 多くのコードの

    Goのヌル安全について
  • GoのスライスとRustのスライス | Wantedly Engineer Blog

    こんにちは、WantedlyDX Squadでエンジニアをしている原です。 (DXはDeveloper Experienceの略で、開発者が心地よくプロダクトを作れる環境を作ることを目標に頑張る部門です) 稿は、WANTEDLY TECH BOOK 9 から「GoのスライスとRustのスライス」という章を抜粋し加筆修正を加えたものです。ウォンテッドリーでは WANTEDLY TECH BOOK のうち最新版を除いた電子版を無料で配布しています。ぜひ読んでみてください。 過去の WANTEDLY TECH BOOK を入手する 以下、文です。 GoのスライスとRustのスライスは大枠では似ていますが、スライスの共有に関する振舞いが微妙に異なり、GoRustの設計の違いが垣間見られます。記事ではこの違いを説明します。 配列型とスライス型Go/Rustにおいて「配列」は固定長でスタッ

    GoのスライスとRustのスライス | Wantedly Engineer Blog
  • なぜ WebAssembly 生成を Go にしたのか

    オンラインイベントで聞かれて、ツイッターにつぶやいたら思った以上に反響があったので、もう少し詳細に書いてみます。 思ったより反響があったまとめ信頼できる暗号ライブラリがある自分が TypeScript より Go のほうが書けるGoWasm バイナリサイズを気にする必要がないWebCrypto にない暗号が必要自社の WebRTC SFU において End to End Encryption (E2EE) をブラウザ上で実現するためにはいくつかの壁がありました。 一つは WebCrypto が提供していない暗号を利用したいというものです。 今回 E2EE を実装するにあたり採用した Signal プロトコルでは公開鍵暗号に Curve25519 を採用しています。残念ながら WebCrypto では Curve25519 に対応していません。この時点で「暗号ライブラリをどこからもって

  • Googleが開発する最新ビルドツール「Bazel」を使ってみよう | さくらのナレッジ

    Bazelの特徴2:ビルドによってディレクトリを汚染しない Bazelでは、ソースコードやテストデータなどが格納されているディレクトリとは別のディレクトリでビルドやテストなどを行う仕組みになっている。makeコマンドでは意図的に設定や操作を行わない限りソースコードと生成物が同じディレクトリに混在する事態になることが多いが、Bazelではこういった問題が発生しない。 また、ビルドやテストはデフォルトではサンドボックス化された環境で行われるため、ビルドやテストがそれを実行しているシステムに影響を及ぼす可能性が最小限に抑えられている。 Bazelの特徴3:並列ビルド 大規模なソフトウェアではビルド対象が増えるため、ビルドにかかる時間も増える傾向がある。Bazelでは生成物どうしの依存性を自動的に把握し、可能な限り並列でビルドを実行する仕組みになっている。これにより、ビルド時間の短縮が期待できる。

    Googleが開発する最新ビルドツール「Bazel」を使ってみよう | さくらのナレッジ
  • フロントエンドに型の秩序を与えるGraphQLとTypeScript | Wantedly Engineer Blog

    こんにちは。Wantedly Visit の Product Squad で Frontend Engineer をしている原 (chloe463)です。 Product Squad では主に Wantedly Visit の Web 版の新規機能開発やリニューアルを行っています。 記事では、つい先日リリースされた募集作成画面の開発で導入したGraphQLサーバーの開発について紹介します。 ・より集中して作成しやすく:作成ステップを分割・より完成形をイメージしながら作成しやすく:ステップごとにモバイル版プレビュー画面が表示・カバー画像設定をより手軽に:アップロード後にガイドラインに合うようにトリミング可能に。また、モバイルアプリ、デスクトップ、ソーシャルで表示された際のプレビューが可能に・募集作成のTipsが閲覧可能に:一部作成ステップに対応したサポートコンテンツへのリンクが表示 TL;

    フロントエンドに型の秩序を与えるGraphQLとTypeScript | Wantedly Engineer Blog
  • スキーマ定義言語 Protocol Buffers と protoc-gen-swagger を使って Web API のスキマを埋めよう - VOYAGE GROUP techlog

    VOYAGE Lighthouse Studio の海老原 (@co3k) です。先日 30 歳になった記念としてタイトルはオヤジギャグです。 さて、普段は 神ゲー攻略 というゲーム攻略サイトを運営しているのですが、とある派生サービスを立ち上げるにあたり、 Web API スキーマ定義を gRPC に基づく形式の Protocol Buffers で書き、 protoc-gen-swagger プラグインを介して OpenAPI 定義ファイルとして生成する、というアプローチを採りました。 yugui さんの素晴らしい記事、「今さらProtocol Buffersと、手に馴染む道具の話」によってスキーマ定義言語としての Protocol Buffers がにわかに注目を浴びて以降、似たようなことをやりたいという方もいらっしゃるのではないでしょうか。 ところが、おそらく単体で protoc-g

    スキーマ定義言語 Protocol Buffers と protoc-gen-swagger を使って Web API のスキマを埋めよう - VOYAGE GROUP techlog
  • 本番運用まで行かなかったgRPCの知見をまとめておく - suusan2号の戯れ

    会社のブログに書こうと思ったんだけど、ちょっとマイナスイメージを持つ人もいそうな気がしたので、個人ブログに書くことにした。 この3ヶ月くらい、システムのリニューアル(アプリ間で分散したロジックを集約するバックエンドサーバと、用途に応じたフロントエンドサーバを立てるみたいなマイクロサービス構成)をやっていて、そこでサーバ間のやりとりにgRPCを使っていた。すごーく雑な絵を書くとこんな感じです。 しかし、最近になってプロジェクトのスコープについて見直しが入りました。マイクロサービス化ではなく単純にレガシーJavaで独自FWなアプリをリプレースするだけになり、必要なのはSPAとSpringBootのAPIサーバだけに(要するにRails側のロジックをなんとかするのがスコープ外になった)。 で、SPAに提供するAPIのためにgRPC(+ grpc-gateway)を使うのはちょっとオーバースペック

    本番運用まで行かなかったgRPCの知見をまとめておく - suusan2号の戯れ
    Akineko
    Akineko 2020/11/27