タグ

ブックマーク / hakobe932.hatenablog.com (12)

  • grpc-gateway と使われてるProtocolBuffer周辺技術メモ - はこべにっき ♨

    grpc-gatewayはHTTP2+ProtocolBuffer をプロトコルに用いるgRPCのサービスを、HTTP/1.1のRESTfulな JSON APIとして利用できるようにするリバースプロキシを生成してくれるツールだ。 厳密にはProtocolBuffersを処理するコマンドであるprotocのプラグインとして動作し、protocに読み込んだgRPCのサービス定義をもとにGoで記述されたコードを生成する。生成されたコードはHTTPサーバのハンドラになっていて、net/httpに登録して使えるようになっている。 ハンドラはHTTP/1.1でリクエストを受け取ると、リクエストに含まれるJSONを対応するProtocolBufferのメッセージに変換し、プロキシ先のgRPCサービスのメソッドを呼び出す。このgRPCサービスは、元にしたスキーマが同じであればGo以外の言語で実装されてい

    grpc-gateway と使われてるProtocolBuffer周辺技術メモ - はこべにっき ♨
  • GoでWebアプリケーション作る練習をした - はこべにっき ♨

    GoでWebアプリケーションを書いてみる練習として RequestBin ぽいものを試しに作ってみた。gomibakoという名前であまりひねりはない。以下のURLで試せます。 https://gomibako.douzemille.net/ ソースコードもGitHubに公開してある。 github.com 何ができるか HTTPリクエストを受け付ける用のURLを作ることができて、そのURLに対するHTTPリクエストのログをWeb上で確認することができる。ちょっとしたWebHookの動きのチェックとかリバースプロキシの設定確認とかに使えて便利。 具体的には以下の様にして使える https://gomibako.douzemille.net/ にアクセスして "New Gomibako" ボタンを押す https://gomibako.douzemille.net/g/deadbeaf123/

    GoでWebアプリケーション作る練習をした - はこべにっき ♨
  • ISUCON6 に参加して無事洗礼をうけてきた - はこべにっき ♨

    id:hitode909 くんと id:hatz48 さんの三人のチーム「C0-100%」としてISUCON6に参加した。初参加者のみのチームで言語はPerl。普段会社では良い設計考えたり開発フローいい感じにしていこうみたいなのが得意なメンバーで、今回もテスト書いたりCIまわしたりするいつも通りの開発でやっていくぞというテーマで参加した。 結果としては、最高38000点くらいまでいったものの予選敗退。最終スコア計算の時点ではほとんどFAILしてる感じで、300点くらいだった。トホホ。 我がチームの様子はhitodeくんのエントリが詳しい。 blog.sushi.money 担当 自分はサーバオペレーションを担当した。わりとすぐやることがなくなってきたので、アプリケーションコードを書いていた。 チームメンバーはみなアプリケーションエンジニアで、普段からインフラ的な仕事をしている人がチームにい

    ISUCON6 に参加して無事洗礼をうけてきた - はこべにっき ♨
  • アクターによる並行処理アーキテクチャの解説 - はこべにっき ♨

    社内勉強会でアクターによる並行処理アーキテクチャについて解説した時の資料です。しれっと公開してあった資料に思いの外ブクマがついていたのに気付いたので、せっかくなのでこちらにも掲載しておきます。 既存技術の解説なのでアクターについて知っている人にとって新しい情報はないと思います! 特に何ベントカレンダーでもないです。 今後Erlang使うの? Erlang VMの運用ノウハウなさすぎるので、すぐ使おうという機運はなさそう。ScalaのAkka Actorが十分実用的なアクターシステムらしいし、Scalaは導入済みなのでそちらのほうが有力な選択肢になるか。アクターシステムではないが、goでも近いことはできるのでさくっと並行処理システムを構築するには良いと思う。趣味ならElixirつかいたい。 参考文献 良い資料がいろいろあって、多分に参考にさせていただいています。ながめると理解が深まるかもしれ

    アクターによる並行処理アーキテクチャの解説 - はこべにっき ♨
  • golangで書かれたSlack bot でエンジニアに話題提供しよう - はこべにっき ♨

    こんにちは、id:hakobe932 です。はてなエンジニアアドベントカレンダーの18日目として、はてな社内で導入をためしている話題提供Slack botの機能と実装について紹介します。昨日はid:astj による Herokuとwerckerによる継続的インテグレーション・自動デプロイでperlのwebアプリケーションを開発するでした。 #enginnerで技術交換 はてなではメインのチャットツールとしてSlackを活用しています。チームや職種などの単位のたくさんのチャンネルがあり、それぞれのチャンネルでコミュニケーションが行われているのですが、もっぱら技術的な議論を行っているのが #enginner というチャンネルです。#engineer では、チームをまたいだ技術的な相談のほか、新技術や勉強会の紹介など、技術に関わるさまざまな話題で情報交換しています。 もっと技術の話題でわいわいし

    golangで書かれたSlack bot でエンジニアに話題提供しよう - はこべにっき ♨
  • 社内技術勉強会でScalaのおすすめポイント解説した - はこべにっき ♨

    はてなでは週に一回、社内技術勉強会というのをしています。今週は僕の当番だったのでScalaの入門的な話をしました。 普段使いの言語として、Scalaの便利なところをまとめたというつもりです。とはいえ、他の言語にもある特徴もわりと紹介してるので、もうちょっとScala独自の内容にフォーカスしてもよかった... むずかしい。時間の都合で全部話きれなくて、会が終わった後でimplicitまわりの話とか数人にご紹介したら一番おもしろかったと言う話になったので無念。 あの機能を紹介してないとはけしからんみたいなのがあったら教えて下さい。そうはいってもとりあえず Scalaスケーラブルプログラミング第2版を読むといいです。 ↓ 資料はgist形式でembedしてあります ↓ https://gist.github.com/hakobe/e1aa2501a64e7f801b55 こちらもおすすめ Sca

    社内技術勉強会でScalaのおすすめポイント解説した - はこべにっき ♨
  • Scala in Perl Company という内容で発表しました #yapcasia【YAPC::Asia Tokyo 2014】 - はこべにっき ♨

    Scala In Perl Company : Hatena - YAPC::Asia Tokyo 2014 Scala in Perl Company という内容で発表しました。はてなではPerlを10年近く利用していますが、最近作っているMackerelというサービスの開発ではScalaを利用しています。この発表では、Perlによるソフトウェア進化の困難さと、Scalaでその課題がどのように解決できるかについて解説しました。 発表時間がたりず、ScalaでのWebアプリケーション開発についてはくわしく紹介できなかったのですが、資料にはその部分も含めています。雰囲気でもつたわればうれしいです。話しきれないところがいろいろあったので、まだ会場にいる方はぜひ声をかけてください!

    Scala in Perl Company という内容で発表しました #yapcasia【YAPC::Asia Tokyo 2014】 - はこべにっき ♨
  • golangで書かれたプログラムのメモリ使用状況を見る - はこべにっき ♨

    golangにはpprof用のプロファイルデータを出力できるライブラリが標準でついてくるので、それらを使うことでメモリの使用状況を調べることができる。中でも、net/http/pprofが手軽で便利だった。 net/http/pprofをプログラムに組み込むことでダイナミックなプロファイル情報をWebブラウザで表示してみることができる。使い方は、ライブラリの解説ページにあるとおりなんだけど、プロファイルを取りたいプログラムで import _ "net/http/pprof" とimportしたあと、main関数などで go func() { log.Println(http.ListenAndServe("localhost:6060", nil)) }() と書いておくと良い。 この状態でプログラムをbuildして実行する。プログラムの実行中に、http://localhost:606

    golangで書かれたプログラムのメモリ使用状況を見る - はこべにっき ♨
  • Dockerでgoのテストを実行する環境をつくる - はこべにっき ♨

    1つのJenkinsの環境で複数のプロジェクトのテストが実行されることは、ままあると思う。Jenkins上で動作するすべてのプロジェクトが同時に動作するようにJenkins環境を整えるのは難しいことがある。あるプロジェクトのためにライブラリのバージョンを更新したことで、別のプロジェクトのテストが落ちるとか。 Ruby なら Bundler やrbenvを使って環境を切り替えるとだいたい解決するけど、libhogeみたいな共有ライブラリやBundlerやrbenv自体の更新とか、どうしても共有される部分はあって、だいたい普段は問題はないが、まれに困ると言う感じだと思う。 そこで、テストごとにDockerのコンテナを立ち上げてその中でテストを実行するようにすれば、環境を独立させることができるので、環境をこわさないように丁寧に設定するみたいなことに気を使わなくてよくなるので便利。 miyagaw

    Dockerでgoのテストを実行する環境をつくる - はこべにっき ♨
  • 作ってみたものの飽きそうなWebアプリはherokuで動かしておく - はこべにっき ♨

    合宿で heroku 使ってたチームがあって、とても便利そうだった。昔、Node.jsで画像アップローダをつくったんだけど(node.jsでtrayという画像アップローダを作った - はこべブログ ♨) 自分のVPSで雑に動かしていて、飽きてしまうとあんまり気にしなくなって、止まっても放置したりしてた。それくらいであれば、herokuで一旦動かすようにしておけば、可用性は担保されるだろうと思い立ち、herokuで動作させることにした。 動いている様子はこちら: http://imagetray.herokuapp.com/ 左上のマスに画像をドラッグ・アンド・ドロップすると画像がアップロードされる。誰かがアップロードするとリアルタイムに更新される。コードを更新したり、しばらくだれも使ってなかったりして、herokuホストがrestartされると、アップロードされた画像は消えてしまう、刹那

    作ってみたものの飽きそうなWebアプリはherokuで動かしておく - はこべにっき ♨
  • なるほどUnixプロセス読んだ - デーモン化のためのdouble fork - はこべにっき ♨

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎を読みました。UNIXプロセスの話、特に実用的なforkの利用方法についての話がコンパクトにまとまっていてわかりやすかったです。あまり詳細に踏みこんでいるという感じではないけど、とっかかりにこのにあるような知識があるのは良いと思いました。(シェルスクリプトから"foreman start"したときにCtrl-Cで終了できない現象の解説 - はこべブログ ♨ではまる前に読んでおいたら、もっとはやく問題解決できたと思います。) 第18章 デーモンプロセスに関係して二回目のforkについていろいろ調べたので、せっかくなのでメモを残しておきます。*1 第18章 デーモンプロセス では、プロセスをデーモン化するために必要な手順が丁寧に説明されています。その中で、プロセスを制御端末から切り離す手順として以下のようなコードが紹介されていました。

    なるほどUnixプロセス読んだ - デーモン化のためのdouble fork - はこべにっき ♨
  • クライアントサイドMVCには何が必須? - はこべにっき ♨

    最近何度かクライアントサイドMVCフレームワークであるところの、Backbone.jsを使ってコードをかいたりしていたので、その時に感じたことをまとめて Kyoto.js で話してみました。 発表資料 "何がMVCをつなげているのか" Backbone.jsではMVCの各層をつなげるために、Backbone.Eventsというオブジェクトが用意されています。Backbone.jsのModelとViewのインタラクションは、ベースになっているBackbone.EventsによるObserverパターンによって実現されています。実際にBackbone.jsでコードを書いてみると、便利な機能はいろいろあるもののBackbone.Eventsの存在がMVCを実現するのに重要であることがわかります。 そこつきつめると、Backbone.EventsのようなObserverパターンを簡単に実現できるよ

    クライアントサイドMVCには何が必須? - はこべにっき ♨
  • 1