2017-01-01から1年間の記事一覧

.devなどのTLDはChrome 63からHTTPSを強要される

その昔Powを使っていた名残で、開発時のループバックドメインに `.dev` をよく使っていたのだけれど、最近うまく動かなくて調べたところ、HTTPSで通信しようとして失敗していた。アプリケーションでそんな設定した覚えないんだけどな……と訝しんでいたら、ど…

同じ名前のHTTPヘッダを複数回出力してもよいのか

結論: 値がcomma-separated listと定められているヘッダはOK 同じ名前のHTTPヘッダを複数回出力する、とは こういう出力: ... Vary: Accept-Encoding Vary: User-Agent ... 同じ名前のHTTPヘッダを複数回出力すると、受信者はどう振る舞うのか RFCより引用: …

mackerel-aws-s3-stats: S3のオブジェクト数とサイズをMackerelに投稿するいいやつ

github.comいいやつを作った。AWS SDK for Goを使っているのでIAM roleが適切に設定されたEC2のインスタンス上ならAWSの認証情報は特別渡さなくてよい (もちろん環境変数で渡してもよい) ので、MackerelのAPI keyとサービス名さえ渡せばすぐに使えます。さら…

GAE/GoでNetatmoのAPIから取得した温湿度をMackerelに送るアプリケーションを動かす

GitHub - aereal/gae-go-netatmo-ws-mackerel冬なのでNetatmo Weather Stationを購入して自宅で動かしはじめました。エアコンをつけるといきなり室温が上がってエアコンはすごいなーということがよくわかって便利。ウェザーステーション Netatmo Weather Sta…

大コンテナ時代を生きのこるためのJSON Schema

実行環境をコンテナ化するDockerが普及して久しく、CIやローカルの開発環境などどこかでコンテナ技術に触れているのではないでしょうか。コンテナはその性質上、設定のプロビジョニングに古典的な設定ファイル (のパス) 受け渡しが難しいです。etcdやconsul…

寝て起きる

昨日書いてたコード、テストが落ちるけどわけがわからないので途方に暮れたけど、一晩寝て起きたらもしかしてこうでは? という気付きが得られて、出社して試したらうまくいった。集中力は単に集中力と言われるのであらゆる対象に対して1つの共有のプールがあ…

インストールがとても高速化されたcapistrano-strategy-jenkins_artifact 0.4.0をリリースした

GitHub - aereal/capistrano-strategy-jenkins_artifact: Capistrano 2 strategy that uses Jenkins' artifact as a distribution provider.Release v0.4.0 · aereal/capistrano-strategy-jenkins_artifact · GitHubcapistrano-strategy-jenkins_artifactと…

ISUCON7予選に秒速5000兆クエリというチームで参加した

ISUCON7 開催&日程決定! #isucon : ISUCON公式BlogISUCON7のオンライン予選にid:astjとid:tanishiking24の3人で秒速5000兆クエリというチームで出場した。最終スコアは9万ちょっとで、ベストスコアとほぼ同値だったので実力を出し切ったと思う。ISUCONに競…

週5日8時間労働は厳しい

しばらく体調が悪く、週末になるとへとへとになる状態が続いている。土日に休むとリフレッシュできて月曜日には元気一杯になるので、老衰による疲れやすさがあるにせよ、体力の最大値がそんなに大きく目減りしていることでもなさそうなので、今週は午後から…

スマートフォンからSlackを消した

休んでいる時にたまに見たりしてしまい無闇に疲れていたので消してしばらく経つ。緊急の連絡はDMでやりましょうって合意できているし、DMはメールでも通知が来るようにしているので、ひとまず困らないだろうと思っているけど、実際どうかはわからない。あと…

『Scalaで自動作曲の練習』を社内勉強会で話した

speakerdeck.comだいぶ大仰なタイトルでありますが掲題の内容を社内勉強会で話しました。音楽を作る古典的な方法論 (機能和声) を取り上げ、その中でも和声 (harmony) をコアドメインと見据え、実際に和音進行の規則などを実装したという内容です。和声と周…

リモート勤務メモ

社内グループに書いていたメモをせっかくなので放流します。 前提 昼食はオフィスで食べられる 基本はオフィス勤務だが、相談の上リモート勤務も可能 自宅からオフィスには徒歩で20分、自転車で10分 京都在住 北海道の実家で2週間程度のリモート勤務を2回経…

#builderscon tokyo 2017で『Goで実装する軽量マークアップ言語パーサー』というトークをしてきた

Goで実装する軽量マークアップ言語パーサー - builderscon tokyo 2017buildersconは初参加。ぼちぼちパーサーを書いていたのでいい機会だと思って応募し採択されてこの度初ビルコンで話してきた。 トークについて 60分枠でひとりで話すのは初めてで時間配分…

Content-Security-Policyやらsubresource integrityなどに関するメモ

最近、セキュリティに特に気をかけなければいけないサービスの開発をしていて調べた知見のメモ。 subresource integrity Subresource Integrity - Web security | MDNいわゆるチェックサムの仕組み。 integrity 属性に ${hashalgorithm}-${hashdigest} 形式…

広告に関する考え

※やまなし、いみなし、おちなしWeb広告は目にするとイラつく 街頭広告はそうでもない テレビCMはイラつくWEB広告は有限のリソースを浪費されているかんじがする ページと関係ないと→ネットワークリソースや表示領域が浪費された ページと関係あると→広告とそ…

最近Atomでコードを書く時間を増やしている

最近思うところあってAtomでコードを書く時間を増やしている。といっても普段書くPerlはこれまで通りVimで、趣味でTypeScriptを書く時にAtomを使うようにした。Vimの使い勝手に慣れ切ったつもりだけど、昨年一年間はIntelliJでScalaを書く時間が多かった。そ…

grpcを見たメモ

クライアント (ブラウザ) とサーバーがやりとりするためにgrpcを使えないかなと思ってサンプルコードを見たりちょっと触ったメモ。結論からいうと今回の用途には合わないので見送ったけど、後のために。 ブラウザでは使えない Can I use it in the browser?…

Scalaで書いたWebアプリケーションのレスポンスにデプロイされているGitコミットのSHA1を含める

WebアプリケーションのレスポンスヘッダにGitのsha1を含めておくと、デプロイに失敗していて古いバージョンだった (そのせいでおかしかった) ということに気がつきやすくなって多少便利。Perl (PSGI) だと、 `git rev-parse HEAD > VERSION` などしておいて …

筋トレティータイム

僕はコーヒーが苦手で、飲むと必ずお腹を壊すので避けるようにしている。その代わりではないけれど、気分転換したいときには紅茶を淹れて飲むことが多い。コーヒーと違って蒸らし時間があるので待ち時間がどうしても発生する。ティーバッグを淹れてそれを処…

デフォルトでHTTPレスポンスがキャッシュされるのはどんな場合か

HTTP APIのキャッシュ戦略を考えながら、ふとcache-controlなどを指定しなかったとき、デフォルトのキャッシュ戦略はどのように定義されているのか気になったので調べた。 Storing Responses in Caches RFC7234のStoring Responses in Cachesにレスポンスを…

nginx: 同じ configuration level で auth_basic off は指定できない

nginx の ngx_http_auth_basic_module を使って BASIC 認証をかけることができる。ドキュメントを読むと明示的に `auth_basic off` を指定することで BASIC 認証を切ることができそうだったので試したけど、うまくいかないケースがある。結論からいうと `aut…

生活における夢を集めるTrelloのボードを作った

プライベートで締切のあるタスクや、忘れてはいけないタスクは To Do 管理ツールでリマインドしている。それらのようなタスクは、誰かに依頼されるだとかして具体的なタスクとして直接インプットされる一方、日々の生活における夢はたとえば「石油を掘り当て…

YAPC::Kansai 2017 OSAKAに参加した

YAPC::Kansai 2017 OSAKA オーディエンスとして参加したので聞いたトークのメモなど。 Webアプリケーションのキャッシュ戦略とそのパターン (40min) speakerdeck.com 主に Web アプリケーションの世界におけるキャッシュの話。目新しい話題ではないけれど、…

Git であるディレクトリ以下に最近追加されたファイルを見る

git log \ --grep 'Revert' --invert-grep \ # revert コミットを除く --diff-filter=A \ # 新規追加のみ --format='' --name-only \ -- lib/Plack/Middleware lib/Plack/Middleware/ 以下に最近ファイルを新規追加したコミットの一覧: lib/Plack/Middleware…

Vue.js で分割払いの手数料をわかりやすく表示するページを作った

Card Paymentリポジトリ: playground/card-payment at gh-pages · aereal/playground · GitHub実質年率って意味わからないし計算がめんどうなので、金額と支払い回数を入れると総支払い額と月々の支払い額を表示するページを作った。普段自分が使うブラウザ…

Go の text/scanner で改行をトークナイズしたいときは

Go

Go の text/scanner はレキサを書く面倒な仕事の大半をいいかんじにしてくれて本質的なコードに取り組みやすくとても便利。 しかしはてな記法や Markdown のように、行全体が単なるテキストではなくいくつかのパターンからなる文法のレキサを書くときは、パ…

WANDRD Prvke Pack を買った - カメラバッグ考2017

PRVKE Pack というバックパックを買ったのでそれの紹介と、バックパックを選ぶにあたっていろいろ比較検討したメモについて書いておく。 新たなバッグに求めること 他に検討したバックパック WANDRD PRVKE Pack 気に入っているところ いまいちなところ 新た…

セットアップスクリプトでは必ず rbenv exec/rbenv which したほうがいい理由

簡単に言うと、rbenv の shims はシェルの `PATH` 探索とは独立して実行ファイルを探索しているため。以下、単に rbenv としているけれどクローンである plenv なども同様と考えてよい。 shims とは rbenv の README が詳しい。 Shims are lightweight execu…

Perl で memcached を使うときは Cache::Memcached::Fast::Safe がよさそう

memcached はコマンドインジェクションの機会が主に2つあって、1つはプロトコルで定められたキー長250文字を越えた場合と、キーに改行文字を含む場合。詳しくは: 第2回 memcachedのセキュリティと脆弱性:memcachedの活用と運用 実践編|gihyo.jp … 技術評論…

markdown-toc: Go で Markdown の見出しをパースして目次を作る

Go

github.com Go でテキスト処理をする練習のために書いてみた。 mdtoc - The markdown ToC generator - ウェブログ - Hail2u.net が元ネタで再実装というかんじ。 小難しいことをやるとどうしても泥臭くなるけど、普段書いている高水準なコードはこれくらい泥…