タグ

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

  • gRPCを学んでいる - はこべにっき ♨

    マイクロサービスや自作ミドルウェアのAPIをメンテナブルにしたいよねっていう文脈で、OpenAPIGraphQLgRPCといった技術が採用されるのを最近よく目にする。 バックエンドを実装しているWebエンジニアとしては、こういう仕組みが整備されつつあるのはありがたい。APIをシステムの外に公開しようとすると、ドキュメンテーション/バリデーション/クライアントの実装など、意外と副次的な作業が必要なので、、汎用化されたツールに頼れるのは助かる。マイクロサービスを用いたアーキテクチャを考えるにあたっても、システム間のアダプタをイメージしやすくなる。 そういう背景で、最近家ではgRPCを調べている。このあとはgRPCについて調べたことのメモや感想のコーナーになっているので、興味があったらどうぞ。 主な情報源 だいたいこのへんを眺めておくと、gRPCの基については抑えることができる。 grpc

    gRPCを学んでいる - はこべにっき ♨
    toshiwo
    toshiwo 2018/04/04
  • 次に何を勉強するかを決めるための作戦 - はこべにっき ♨

    Webエンジニアが学ぶべき技術範囲はとても広く、いったい何をどこから勉強していくかは難しい問題です。僕も試行錯誤を繰り返しています。 そんな試行錯誤の中で、新しく何を勉強するか決めるときに使ってる作戦がいくつかありそうだなと思うようになりました。そこでこの記事では、僕が次に勉強すべきテーマに困ったときに使っている作戦を紹介してみようと思います。 各作戦の例のコーナーでは実際に僕がその作戦を使って勉強したトピックなどを紹介しています。 このエントリは、はてなエンジニアアドベントカレンダー2016の20日目の記事で、担当はid:hakobe932です。昨日の担当は id:masayoshi さんでLinuxのARPとL2スイッチのお話という記事でした。 作戦1: 新しいプログラミング言語を学ぶ 新しいプログラミング言語を学ぶのは、比較的手を出しやすい作戦です。プログラミング言語を学ぶことで自分

    次に何を勉強するかを決めるための作戦 - はこべにっき ♨
    toshiwo
    toshiwo 2016/12/20
  • 今季見るべきアニメを機械学習で推薦する - はこべにっき ♨

    Coursera で機械学習に入門成功できたので応用に挑戦してみました。ちょうど季節の変わり目ということで、過去に見て気にいったアニメの特徴を学習して、未知のアニメを、気にいりそうなアニメと気にいらなそうなアニメに分類するツールを作って、ソフトウェアに今季見るべきアニメを推薦してもらいたいと思います。 アニメの特徴量 あるアニメを気にいるかどうかは、話のおもしろさや、絵柄の感じ、キャラクターの魅力などによって決まりそうです。ただ、話のおもしろさや、絵の美しさ、キャラクターの魅力を特徴量として数値化するのはむずかしいので、アニメの映像を制作しているスタッフや会社、声を当てているキャストにフォーカスすることにしました。 Courseraの機械学習のコースでは、特徴として妥当かどうかを判断するのに、人間が同じ特徴を与えられて分類といったタスクが可能かを考えてみよとアドバイスしていました。アニメ作

    今季見るべきアニメを機械学習で推薦する - はこべにっき ♨
    toshiwo
    toshiwo 2016/04/15
  • Goによるプライベートネットワークへのアクセスを禁止するHTTPクライアントの実装 - はこべにっき ♨

    クローラのように、ユーザからの入力に応じて任意のURLにHTTPリクエストを発行するソフトウェアは、誤ってプライベートネットワークへのリクエストを処理しないようにする必要があります。悪意のあるユーザが故意にプライベートなネットワークに対してリクエストして、内部情報にアクセスするといった攻撃を行う可能性があるからです。 PerlではLWPx::ParanoidAgentやLWPx::ParanoidHandlerといったモジュールが便利です。これらのモジュールは、リクエスト先のURLをチェックしてプライベートネットワークへのリクエストを禁止してくれます。単にIPアドレスをチェックするだけでなく、ホスト名をDNSで解決して得られたIPアドレスをチェックしたり、リダイレクト先のURLをチェックしたりしてくれます。まさに偏執的です。 このLWPx::ParanoidAgentと同様の機能をもったG

    Goによるプライベートネットワークへのアクセスを禁止するHTTPクライアントの実装 - はこべにっき ♨
    toshiwo
    toshiwo 2015/08/05
  • golangで書かれたSlack bot でエンジニアに話題提供しよう - はこべにっき ♨

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

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

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

    社内技術勉強会でScalaのおすすめポイント解説した - はこべにっき ♨
  • プログラミング言語の基礎概念を学んでる - はこべにっき ♨

    プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト) 作者: 五十嵐淳出版社/メーカー: サイエンス社発売日: 2011/07メディア: 単行購入: 6人 クリック: 60回この商品を含むブログ (12件) を見る このを読んで学んでる。まだ半分くらいで関数の定義とかについて勉強してる。 プログラミング言語の動作を数学的に厳密に記述する方法を順番に教えてくれるという内容で、記述には導出システムが用いられてる。基的な算術式からはじまって、変数の定義や関数の定義、パターンマッチや型システムなど、様々な言語の機能を推論規則によって定義する方法を教えてくれる。与えられた規則が意味的に意図したものを表しているかの証明だけでなく、証明のやり方もくわしく説明されていて丁寧でたすかる。 おもしろいのはこののためのオンラインの演習システムというのがあって、の中で与えられた導出システムに

    プログラミング言語の基礎概念を学んでる - はこべにっき ♨
    toshiwo
    toshiwo 2014/07/14
  • Dockerでgoのテストを実行する環境をつくる - はこべにっき ♨

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

    Dockerでgoのテストを実行する環境をつくる - はこべにっき ♨
  • テストをどこまで書くか - はこべにっき ♨

    CROSS2014で以下の2つのセッションにお招きいただきお話をさせていただいた。ありがとうございました。 http://www.cross-party.com/programs/testcidevops/ はてなクックパッドの開発現場で、CIやテストはどう行われているのか?(前編)。CROSS 2014 - Publickey 2014/1/17 #cross2014 現場に聞く!テスト/CI/DevOps、実際のところどうなの - Togetterまとめ http://www.cross-party.com/programs/butsukari/ 2014/1/17 #cross2014 コードレビューCROSS 〜ぶつかり稽古 2014初場所〜 - Togetterまとめ セッション中はもちろん、その後の懇親会でもいろいろな方におはなしを伺えてかなり勉強になった。テストやコードレビ

    テストをどこまで書くか - はこべにっき ♨
    toshiwo
    toshiwo 2014/01/19
  • ソフトウェアにうまい前提を与える - はこべにっき ♨

    ソフトウェア機能が、普通はユーザはこういう利用方法はしないだろう、という前提にもとづいて作られていることがある。 先日の経験を例に上げると、ちょっと理由があって自分のGmailの全メール一度にアーカイブ操作をしてみようとしたことがある。メールは8万件くらいあった。普通のユーザは一度に8万件もアーカイブ操作をしたりしないと思う。 実際に操作を実行してみたところ、「実行しています」というようなメッセージがしばらく表示された後、「リクエストの実行に問題が出ているようです」というようなメッセージが表示されてしまった。メッセージの内容は不安に感じるところがあったが、結果としては、すべてのメールがちゃんとアーカイブされため、大きな不満はなかった。 ユーザがこういうめちゃくちゃなことをすることは稀であり、一般的なリクエストのタイムアウトを過ぎたために、UIが問題を報告したのだと思う。実際にソフトウェアを

    ソフトウェアにうまい前提を与える - はこべにっき ♨
    toshiwo
    toshiwo 2014/01/07
  • Team Geek読んだ - はこべにっき ♨

    Team Geek ―Googleのギークたちはいかにしてチームを作るのか 作者: Brian W. Fitzpatrick,Ben Collins-Sussman,及川卓也,角征典出版社/メーカー: オライリージャパン発売日: 2013/07/20メディア: 単行(ソフトカバー)この商品を含むブログ (20件) を見る Team Geekを読んだ。チームの生産性を上げるために、どうやって人間関係やコミュニケーションの問題に取り組めばよいかという、実践的なテクニックがいろいろ詰まっていておもしろい。謙虚・尊敬・信頼という信条を中心に、個人、チーム、組織そしてユーザ、それぞれとどのように付き合えばいいか、いろいろな例を使って教えてくれる。おもしろい感想エントリもたくさんあるので、内容が気になる人は読むと良さそう。 L'eclat des jours(2013-07-21) Jun Muka

    Team Geek読んだ - はこべにっき ♨
    toshiwo
    toshiwo 2014/01/04
  • Go言語の気に入ったところ/気に入らなかったところ - はこべにっき ♨

    二日間ほど集中してgo言語でコード書いたので、その間に感じたことをまとめてみます。普段はだいたいPerlJavaScriptでWebアプリケーションを書いています。 まとめの要約 go言語良い Webアプリケーション書くならPerlとかRubyが良い PerlとかRuby書ける人がミドルウェア書くならgo言語良い 気に入ったところ コンパイルエラーが親切 たとえば気楽な気持ちで以下のようなコードを書くと package main import ("fmt"; "net/http"; "log") func main() { resp := http.Get("http://hatenablog.com/") fmt.Println(math.Pi) } 以下のように丁寧に問題箇所を教えてくれます。 ./hoge.go:6: imported and not used: "log" ./h

    Go言語の気に入ったところ/気に入らなかったところ - はこべにっき ♨
  • go言語によるhtmlcat実装 htmlcatgo の紹介 - はこべにっき ♨

    go言語の勉強に、motemenさんが作ったhtmlcat(標準入力をブラウザで tail -f できる htmlcat というのを書いた - NaN days - subtech)をgoで実装してみました。この記事ではhtmlcatgoの紹介と実装の見どころについて解説します。 htmlcatgoの紹介 htmlcatgo は、標準入力をブラウザ上でtail -fできるソフトウェアです。元祖htmlcatの使い方とほぼ一緒です。 $ tail -f /var/log/messages | htmlcatgo のように実行すると、 2013/12/16 08:15:02 htmlcatgo: http://localhost:45273のようにURLが表示されます。これをブラウザで表示すると、画面にtail -fの結果がリアルタイムで流れてきます。元祖htmlcatにある --execオプ

    go言語によるhtmlcat実装 htmlcatgo の紹介 - はこべにっき ♨
  • POSTリクエストをリダイレクトするとGETされる?POSTされる? - はこべにっき ♨

    あるURLにPOSTでリクエストを発行した結果リダイレクトされたとき,そのリダイレクトのリクエストはGETなのでしょうか?POSTなのでしょうか? なんとなくGETっぽいけど… そこんとこどうなのか気になったので調べてみました.HTTPとかにはあんまりくわしくないので,おかしかったら指摘していただきたいです. 準備 リダイレクトが発生するレスポンスコードは以下の4つです. 301 MOVED PERMANENTLY 302 FOUND 303 SEE OTHER 307 TEMPORARY REDIRECT HTTP1.1のRFCやその解説によると,POSTリクエストした結果,レスポンスコードが302か307だった場合は,POSTでリダイレクトしたほうが良いようです.でも,ほとんどのクライアントはその決まりを守らずGETでリダイレクトしているとも書いてあります. そこで,Firefox/S

    POSTリクエストをリダイレクトするとGETされる?POSTされる? - はこべにっき ♨
    toshiwo
    toshiwo 2009/09/18
  • 1