タグ

ブックマーク / blog.hifumi.info (154)

  • nginx の 308 Permanent Redirect サポート

    今日(2017/04/20)時点ではまだリリースされていないが、nginx: be5cfa918bfcで、HTTP ステータスコード 308 Permanent Redirect1 がサポートされた。おそらく nginx 1.13.0 で利用可能になるだろう。 308 については、GIGAZINE の記事『新たなHTTPステータスコード「308」とは?』が分かりやすかった。301 Moved Permanently はリダイレクト時にリクエストメソッドをGETに変えてしまう可能性があり、例えばPOSTメソッドのリクエストボディが失われる懸念があった。それに対し、308 Permanent Redirect はリクエストメソッドの不変を保証する。 幅広い用途があるとは思えないが、以下のkazuhoさんのブコメにあるように、エンドポイントの変更などに対しては有用だろう。 新たなHTTPステータ

    hfmgarden
    hfmgarden 2017/04/21
  • 『レポートの組み立て方』を読んだ

    hfmgarden
    hfmgarden 2017/03/21
  • 2017年版nginx.vim(大した話ではありません)

    2年半ほど前にnginx vim syntaxを導入したのだが、nginxも日々進化しており、syntax highlightの効かない項目が増えてきた。使える機能に色がつかないと地味に気を取られるし、いつの間にか生産性を下げていたのかもしれない(そういう意味では、syntax highlightを使わない選択は合理的なのかも。) いつものようにnginx-develメーリスを眺めていたら、Vim用のパッチが送られており、Vimの設定ファイルがメンテされていることに気づいた1 2。そしてその設定ファイルこそが、元々使っていたevanmiller/nginx-vim-syntaxの移管先だった。nginx-vim-syntaxのREADMEをよく見ると、2013年12月に移管した旨が書かれている…ずっと気づいてなかった。公式が最強だった。 早速nginx-vim-syntaxを捨てて、以下の

    hfmgarden
    hfmgarden 2017/02/23
    2017年にvimの話を書きました
  • 昇格と貢献〜2016年の省察

    2016年もあと数時間。昨年は新卒エンジニア研修に尽力していたが、今年はまた違った1年となった。 昇格 ペパボのエンジニア職位制度での承認を経て、シニアへの職位昇格が決まった。 いっそう身の引き締まる思いがする。専門職の格たるものを考え続けている。せめて、技術面でも組織面でもリーダーシップを発揮し、社の技術力を牽引し、日々の生産性向上について良い影響を及ぼせるよう研鑽していかなければならない。走りながら考えていこうと思う。 ペパボに新卒で入社し、ここに至るまで3年と半年強かかった。自己評価で鈍足。業務経験の無いところから出発し、先輩たちに色々な知識と経験を授かり、なにより会社のサービスそのものが自分を育ててくれたと思う。当にありがとうございます。 まだまだ生馴れながらも、ようやく恩返しできるような立場に近づけたような気がする。 ngx_mruby のメンテナになった 『動的証明書読み込み

    hfmgarden
    hfmgarden 2016/12/31
    2016年のふりかえりを書きました。
  • Puppet 3.6からpackageリソースでenablerepo/disablerepoが使える | blog: takahiro okumura

    yumコマンドでパッケージを入れるときに、--enablerepoや--disablerepoを使ってリポジトリを指定することが出来る。 Puppet 3.6から、この2つの機能をinstall_optionsという属性に任せることで利用可能になった。 install_optionsとenable/disablerepoの使い方 使い方は簡単で、以下のようにinstall_options属性に配列か文字列で--enablerepo--disablerepoを指定すれば良い。 package { 'the-package': ensure => installed, install_options => ['--enablerepo=rpmforge', '--disablerepo=*'], } いつから使えるようになったか タイトルにも出だしにも書いたが、Puppet 3.6.0から使え

    hfmgarden
    hfmgarden 2016/12/02
    我ながら便利なのかいてた
  • ngx_mruby の Nginx::Var クラスの実装を理解する〜変数取得編

    ngx_mruby には nginx の変数を操作するための Nginx::Var クラスがあります。対象となる変数は refs: nginx core variables の他、Alphabetical index of variables などをご参照ください。 例えば以下のようなコードで、Nginx の $date_local を参照することが出来ます。 v = Nginx::Var.new Nginx.rputs v.date_local #=> Friday, 14-Oct-2016 02:20:00 JST # ngx_http_geoip_module を使用している場合 Nginx.rputs v.geoip_country_name #=> Japan Nginx::Var クラスはこれら数多くの nginx 変数をどうやって取得しているのでしょうか。新たに変数が追加され

    hfmgarden
    hfmgarden 2016/11/07
    社内向けに書いてた文章をブログに認めました。
  • 『みんなのGo言語 現場で使える実践テクニック』

    『みんなのGo言語 現場で使える実践テクニック』を著者のひとりである中島大一さんよりご恵贈に与りました。ありがとうございます。書評経験に乏しく、頂いてからずいぶん時間がかかってしまいましたが、読了の旨とその感想を書かせていただきたいと思います。 私は Go 言語にそこまで精通している者ではなく、A Tour of Go を一通り終えた後、Mackerel プラグイン開発でちまちまと書いている程度です。Mackerel プラグインは先人の書き方もあり、ひと通り文法を学んだ後なら見よう見まねでなんとかなりました。 しかし、それら見よう見まねのコードが Go らしく書けているのか、またパフォーマンスは十分なのか等、自分に足りていないものが徐々に気になってきていました。最近は C を書くことが増え、Go のソースコードを読む時間も減り、距離が出来つつあることも不安の種でした。 書は、そんな私がも

    hfmgarden
    hfmgarden 2016/10/11
    頑張って書評というものを書いてみましたm(_ _)m
  • ngx_mruby に Nginx::SSL.errlogger を実装してログを出力できるようにした

    ngx_mruby v1.18.5 から Nginx::SSL.errlogger と Nginx::SSL.log メソッドが使えるようになった。この2つのメソッドは同じはたらきで、mruby_ssl_handshake_handler ディレクティブの中でエラーログを出力するために用いる。 Implement Nginx::SSL.errlogger (and Nginx::SSL.log) by hfm · Pull Request #215 · matsumoto-r/ngx_mruby 使い方は Nginx.errlogger や Nginx::Stream.errlogger とまったく同じで、以下のように書くことができる。 events { worker_connections 1024; } http { server { listen 443 ssl http2; ser

    hfmgarden
    hfmgarden 2016/10/07
    mruby_ssl_handshake_handler につづいて、自分が実装したやつを解説してみた。
  • ngx_mruby に mruby_ssl_handshake_handler を実装した

    少し前になるが、ngx_mruby v1.18.4 がリリースされた。このリリースには私が実装した mruby_ssl_handshake_handler ディレクティブが含まれている。 Implement mruby_ssl_handshake_handler() by hfm · Pull Request #205 · matsumoto-r/ngx_mruby mruby_init_worker(_code) や mruby_content_handler(_code) といった他のハンドラでは既にあるディレクティブだったが、mruby_ssl_handshake_handler はまだ無かった。業務で欲しくなったので、慣れないC言語と格闘しながら実装した。 mruby_ssl_handshake_handler ディレクティブの使い方 mruby_ssl_handshake_han

    hfmgarden
    hfmgarden 2016/10/03
    自分で書いたコードを説明してみました。
  • mruby のテスト用に MySQL 環境を自動で構築する mruby-test-mysqld を書いた

    タイトルは『Kazuho@Cybozu Labs: Perl のテスト用に MySQL 環境を自動で構築するモジュール Test::mysqld を書いた』のオマージュです。 Test::mysqld は、テスト用に MySQL のデータディレクトリを一時ディレクトリに用意し、 mysqld サーバの立ち上げ・削除を自動実行してくれる大変便利なツールです。同じことを mruby で扱いたくなったので、見よう見まねで移植版を作ってみました。実装にあたっては miyucy/test-mysqld も大変参考になりました。 hfm/mruby-test-mysqld: Setting up a mysqld instance in tmpdir, and destroying it when a mruby program exits. TestMysqld.new をすると、DB を初期化し、

    hfmgarden
    hfmgarden 2016/09/06
    書いた
  • mruby-redis に送った HMSET, HMGET のパッチの話

    mruby-redis で Redis の HMGET と HMSET を使いたかったのでパッチを送った。 Implement Redis#HMGET and Redis#HMSET by hfm · Pull Request #58 · matsumoto-r/mruby-redis mruby も Hiredis もよくわからない状態からの出発だったので、小さいパッチの割に時間がかかってしまった。Hiredis は README.md に書かれている API の説明を読み、mruby はソースコードのコメントアウトに書かれた仕様を読み漁った。 内容の正しさは十分に保証出来ないが、調べたことを備忘録として書いておく。なお、mruby はバージョン 1.2.0 のコードを読んだ。 HMGET の実装 まず、HMGET のコードは以下の通りである。HMSET も似たような実装なので、そちらは

    mruby-redis に送った HMSET, HMGET のパッチの話
    hfmgarden
    hfmgarden 2016/08/19
    C言語初心者です。
  • プロセスは nsswitch.conf を一度しか読み込まない

    Puppet で、以下のような一連の処理を実行しようとしたところ、最後で Could not find group <group name> なエラーが出てしまい、上手くいかなかった。 libnss-stns1 インストール nsswitch.conf の group に stns 追加 あるディレクトリの group を、stns で管理されている group に chgrp する 3 の実行において、 2 の変更を無視している気がする。そう思って nsswitch.conf(5) を読んでみたところ、Notes にまさにこれ!な一節を発見した。 Within each process that uses nsswitch.conf, the entire file is read only once. If the file is later changed, the process

    hfmgarden
    hfmgarden 2016/08/03
    昨日はまってた
  • STNS の Dockerfile を Docker Hub に公開した

    STNS は TOML フォーマットの設定ファイルを用いて Linux のユーザ管理を行うことができるシステムです。Linux の名前解決や公開鍵取得、sudo 認証が主な機能で、サーバへのログインやデプロイをシンプルに管理することができます。詳しくは「Linuxユーザーと公開鍵を統合管理するサーバ&クライアントを書いた[更新]」や「時代が求めたSTNSと僕」をご覧ください。 今回、stns をより簡単に触れる環境を提供するため、 stns の Docker image を Docker Hub に公開しました。 STNS/docker-STNS: Docker image for STNS. https://hub.docker.com/r/stns/stns Alpine Linux をベースイメージとしており、非常に小さいイメージサイズに保つことが出来ました。 core@core-0

  • OpenSSL を静的リンクした ngx_mruby と動的証明書読み込みの基礎検証

    ngx_mruby で大量ドメインの証明書を動的に処理する1には OpenSSL 1.0.2e 以上が必要となる2。しかし、CentOS, Ubuntu, Debian の中では Xenial しか OpenSSL 1.0.2 をサポートしていない3。それ以外の OS では、OpenSSLを自前ビルドするか静的リンクするのが良さそうだ。 最近、ngx_mruby の configure オプションに OpenSSL のソースを渡す機能が追加された45。そこで今回は、hsbt/ngx_mruby-package-builder をベースに、OpenSSL を静的リンクした ngx_mruby を rpmbuild する方法を調査した。その後、ビルドした ngx_mruby を使って動的証明書読み込みの簡単な動作検証を行った。 ビルド方法 まず、Dockerfile は以下のようになった。 F

    hfmgarden
    hfmgarden 2016/06/27
    Blogged: OpenSSL を静的リンクした ngx_mruby と動的証明書読み込みの基礎検証
  • キャリアキーノートとはなにか

    昨年、勤務先の新卒研修で「キャリアキーノート」という取り組みを始めた。これは「先輩の個人史 (キャリア) を紐解いてもらう中で、その根底に一貫して流れる基的な考え方 (キーノート) を学ぶ場」であり、先輩社員の自己紹介を兼ねた場として設計した。 このアイデアは、YAPC::Asia Tokyo のキーノート、なかでも @mizzy さんの「How Perl Changed My Life」や @typester さんの「エンジニアとして生きる」を原型とし、エドガー・H・シャイン著『キャリア・アンカー』の考えに目的を強化されたものである。 以前「ペパボ新卒エンジニア研修2015が始まっています」でも触れた内容だが、あれから1年が経ち、いろいろと分かってきたことがある。記事では「キャリアキーノートとはなにか」を再考し、私の考えを今一度綴りたいと思う。 外と内から見るキャリア 「キャリア」と

    hfmgarden
    hfmgarden 2016/06/20
    1年前から始めた取り組みについて、今一度考えをまとめてみました。
  • Capistrano の Slack 通知で、デプロイ開始・成功・失敗時の emoji を変える

    hfmgarden
    hfmgarden 2016/06/10
    Blogged: Capistrano の Slack 通知で、デプロイ開始・成功・失敗時の emoji を変える
  • hiera-eyaml でデータを暗号化して管理する

    Puppet には Hiera と呼ばれるキーバリュー型データストアがあります。Chef の Data Bags に近しい機能で、主にノード固有のデータを管理するために使います。しかし、Chef の Encrypted Data Bags のような暗号化・復号機能は提供されておらず、秘密情報を扱うには難があります。 そこで登場するのが hiera-eyaml です。 TomPoulton/hiera-eyaml: A backend for Hiera that provides per-value asymmetric encryption of sensitive data hiera-eyaml はデータを暗号化・復号するための Hiera Custom Backend です。これによって、パスワードなどの秘密情報を Hiera で管理することができます。似たツールに crayfis

    hfmgarden
    hfmgarden 2016/05/24
    Blogged: hiera-eyaml でデータを暗号化して管理する
  • 2015年の省察

    年の瀬に1年をふりかえります。 ペパボ新卒エンジニア研修 今年のターニングポイントは、ペパボ新卒エンジニア研修でした。3月か4月ごろに担当を任されることになって、そこから猛勉強が始まりました。 研修の準備(設計)にあたり、学んだこと 研修を受けた身ではあるものの、研修の設計に関わるのは初めての経験でした。CTOやひろやんさんをはじめとした、研修関係者で認識を合わせることは非常に大切でした。研修にあたって、教育学や組織論、キャリアデザインに関する書籍を読みました。以下はその一部です。 これらの書籍は研修関係者で読みました。これらのような書籍を読んだ目的は、研修そのもののブレを無くすことです。いわゆるユビキタス言語といいますか、共通の語彙を関係者間で育み、円滑なコミュニケーションを取れるように勉強していきました。 「私」レベルの教育論を越えて そこで出会った中原淳先生の『企業内人材育成入門』に

    hfmgarden
    hfmgarden 2015/12/31
    こそっとふりかえった。
  • #師弟登壇2015 を開催しました

    新社会人として Web サービス業界に就職し日々どんな業務に取り組んでいるのか、どんな研修を受けたのか、またそれぞれの会社がどのような想いで研修や教育を行っているのか。以下に、弊社の内定者である@shimoju_くんが各社の話をまとめてくれました。 #師弟登壇2015 のメモ書き - Qiita また、各社の発表資料は以下の一覧よりどうぞ。 http://pepabo.connpass.com/event/22180/presentation/ 開催の経緯 遡ると、2012年に開催された『オブラブ 収穫祭 〜若手エンジニア、実りの秋〜』が一番最初のイベントでした。その翌年に、弊社の柴田さんが『師弟登壇・新米サムライの集い 2013』という名前で開催しました: 「師弟登壇・新米サムライの集い 2013」を開いてきた - HsbtDiary(2013-10-12) 開催趣旨はイベントページに掲

    #師弟登壇2015 を開催しました
    hfmgarden
    hfmgarden 2015/12/09
    書きました!
  • iPhone6s を購入し、mineo (docomoプラン) を契約した

    iPhone6s に乗り換えた。3年と少しほど iPhone4s を使っていたが、いい加減スペックが限界である。Swarm でのチェックイン時、上からコインが降ってくるアニメーションで端末が再起動してしまうという、どうしようもない状況に追い込まれていた。 MacBook と同じ色を選んでみたが、金ピカグッズにまみれて悪趣味を呈する 毎年この時期、Apple は分割金利0%キャンペーンを開催している1。12〜24回払いまでなら実質年率0%で利用できる(毎年同じ内容だったかは忘れた…)。2年縛りという感覚から抜け出したかったので、今回は12回払いにした(なんと半分である)。iPhone6s は高いが、毎月1万以下に収まったので良しとする。 何より驚いたのは、 Force Touch の便利なこと。グッと押さえると、端末がブルっと振動し、まるで押下した場所がボタンだったかのように振る舞ってくれる

    hfmgarden
    hfmgarden 2015/11/29
    Blogged: iPhone6s を購入し、mineo (docomoプラン) を契約した