at kaneshin

Free space for me.

サンクスカード from Tully's Coffee

ちょっと席譲っただけだったんですが、後日サンクスカードを店員さんから頂いて、ほっこりした朝でした。

golangでABテストの振る舞いを実装する

golangに限らないんですが、ABテストの振る舞いをちゃんとした設計のもと実装するのって難しいと思っています。 よくあるパターンとしては、Userという構造体があって、それに対してABテストによる振る舞いを変えるように実装をすることかと思います。 User …

golang の定数宣言内での iota 識別子

前に登壇した内容に iota について書いていたので、少しまとめておきました。

GopherCon@Denver recap by tweets

Twitter Likesの振り返りで、7月中旬に Denver で開催された GopherCon に参加していたときにめっちゃLikeしていました。

『言い訳』と『バランス』は役に立たない

2016年もそろそろ終わりなので、Twitter Likesの棚卸し中に見つけたツイート。 何かが起きたときに、開口一番に言い訳が出て来る人は、前に進める建設性が無く、話しても仕方がないので一旦諦めたコミュニケーションになり、最低限のワードでディレクション…

GAE/Py でラクラク開発を行う方法

この記事は Python Advent Calendar 2016 の22日目の記事です。 普段、Golang を用いて Google App Engine を稼働させていますが、Python でも簡単に使用できるので、今回はそれを紹介します。

Crystal で Markdown to HTML ツールを軽く書く

この記事は Crystal Advent Calendar 2016 の20日目の記事です。 普段は Golang を書いている事が多いので、 Golang の人になっていますが、暇を見つけては色々な言語にも触れています。今日はその一つである Crystal Language について軽く CLI ツールを作…

【高等数学】はさみうちの原理 〜関数の極限〜

この記事は 機械学習に必要な高校数学やり直しアドベントカレンダー Advent Calendar 2016 の20日目の記事です。 久しぶりに高校時代の教科書を引っ張ってきました。機械学習からはちょっとそれてしまいますが、級数について書きたいな〜と思っていたら懐か…

Clojure と Leiningen と時々 Container 〜そしてデプロイへ〜

この記事は Clojure Advent Calendar 2016 の19日目の記事です。 Clojure を一度も使ったことが無かったのですが、少しは触ってみようと思い、今回 Clojure Advent Calendar 2016 に参加させてもらいました。 書くにあたり、凝ったことなんて全くできるはず…

GKE を使って golang アプリケーションコンテナを稼働させる

この記事は Google Cloud Platform(1) Advent Calendar 2016 の15日目の記事です。 普段は golang をやってるアプリケーションの人っぽい感じになっていますが、他にも色々とやっています。(と、いうアピールをたまにしておかないと) さて、今回は GKE + g…

今年の写真 #TYPAC2016

この記事は 今年の写真 #TYPAC2016 Advent Calendar 2016 の14日目の記事です。 今年も去年と同じCanonの一眼レフのボディはEOS 6DでレンズはEF24-70mm F2.8L II USMで変わらずです。 Canon デジタル一眼レフカメラ EOS 6Dボディ EOS6D出版社/メーカー: キヤ…

Vim をあまりカスタマイズしなくなった話

この記事は Vim Advent Calendar 2016 - Qiita の11日目の記事です。 社内ではVimハラスメントが横行していますが、私自身のVimは毎朝やる最新版ビルドを除いてカスタマイズすることがほぼ無くなりました。 元からハードにカスタマイズはしておらず、 ctrlp …

【Git】コミットメッセージのスペルチェック

この記事は Git Advent Calendar 2016 - Qiita の8日目の記事です。 スペルチェッカー - aspell スペルチェックをするために aspell というスペルチェッカーを使用します。 インストール on macOS macOS では Homebrew を使ってインストールします。 # To i…

たまに尾道

この記事はたまに広島 Advent Calendar 2016の6日目の記事です。 生活圏は東京都心に住んでいますが、広島の尾道は昔から気になっていて、今年、初めて訪れることができました。 気になっていた大きな理由として、大林宣彦監督の『ふたり』と小林俊彦先生の…

最適化理論とカーマーカー特許と歴史

この記事は 数学 Advent Calendar 2016 - Qiita の6日目の記事です。 大学生の頃、ORを専攻していたため最適化理論について登壇した経験があります。 最適化問題を「線形計画法と整数計画法」で解く─プログラマのための数学勉強会5|CodeIQ MAGAZINE 時々は…

Firebase Remote Config for iOS

この記事は Firebase Advent Calendar 2016 - Qiita の4日目の記事です。 最近は Golang を用いたサーバサイド開発を専らの仕事としていますが、約2年前はガッツリと iOS アプリ開発を行っていました。そのときから「アプリの振る舞いや見た目、A/Bテストを…

golang で始める Slack bot 開発

この記事は Slack Advent Calendar 2016 - Qiita の3日目の記事です。 昨日は Kinoppyd さんの「今そこにあるSlack」でした。 さて、今回、この記事では golang で Slack bot を実装する方法を紹介しようと思います。 世に蔓延る Slack bot これから bot を…

golang の httptest パッケージを使う

この記事は Go Advent Calendar 2016 - Qiita の2日目の記事です。 Golang については書きたいことがたくさんあるので、Go Advent Calendar 2016 その4が出てきても良いのではと思っている次第です。(空いていればいつでも書きます) さて、今回、この記事…

Yogibo の Traybo という最高のトレー

膝の上で PC を操作する人に絶対オススメしたい商品。 感想 膝の上に置くことになるので、使い始めは「Traybo が重くてすぐ使わなくなるかも…」と思っていましたが使い心地最高です。 最高な点として、PC が熱を持ってもそれが膝に伝わらないのとトレーの横…

golang で regexp パッケージを使うときに気をつけること

golang の Regexp は初期化の Compile コストがそこそこありますが、実は正規表現のパターンと対象となる文字列によって、初期化コストが無視できる(パターンと文字列に支配される)くらい遅くなります。よく言われる regexp の初期化コスト問題が無視でき…

Flask を Google App Engine で動作させる

Google App Engine 上で Python の軽量 Web フレームワークである Flask を使うためのチュートリアルです。 TL;DR github.com GAE For Python とにかく、Flask を App Engine で使うためには App Engine の SDK をインストールしておく必要があります。 イン…

iOSDC で LT してきました! - Generative Programming in Swift

Generative Programming in Swift // Speaker Deck Generative Programming とは? 生成的プログラミング(英: Generative programming)とは、ジェネリックなクラス、プロトタイプベース、テンプレート、アスペクト、コード生成などの技法を使ってソースコ…

golang の channel を使って Dispatcher-Worker を作り goroutine 爆発させないようにする

golang で処理の高速化をするために goroutine/channel を使って並行処理にし、待ち時間を無駄にしないようにするのは言葉で表すのは簡単ですが、実際にパターンとして落としこむためには経験が必要だなと思うので、今回 Dispatcher-Worker として Job Queue…

Golangの標準入力をインタラクティブかパイプで入力を受け取る

Go言語でコマンドラインツールを作るときに入力を受け取るインターフェースでオプションや標準入力で受け付けることはあると思いますが、パイプで渡すことも考慮されているとクールなツールになるなと思っています。 標準入力の受け取り それぞれの実装方法…

Ansible: "unsupported parameter for module: gather_subset"

Ansible 2.1を動かしたところ、下記のようなエラーが発生… [kaneshin@casper-01] ~/local/src/github.com/kaneshin/kamimai (master) ( ^o^) < ansible-playbook -C misc/playbook/localhost.yml PLAY [127.0.0.1] ****************************************…

GopherCon@Denver 2016に参戦する

DenverにてGopherCon 2016が7/11~7/13の三日間で開催されるのに行く予定です。 ほぼ一ヶ月後には本場(?)のGopherたちと濃い期間を過ごすと思うと非常に楽しみ。 ただ、飛行機代とホテル代でかなりの銭が飛んだので、見合った成果を持ち帰りたいなと思って…

Go言語で構造体の関数を動的に変更する

Go言語の構造体に関数を定義したあとに、動的に処理を変更することはreflectを使わない限りできないです。 ただ、スタブやモックとして関数の挿げ替えを行いたい場合や、実装を動的に変更したいという特質な要件を持つ人もたまにはいるでしょう。 そんなとき…

Golang で書いた Web アプリケーションを UNIX ドメインソケットで公開

net/http パッケージで使用される ListenAndServe 関数は tcp による Listen のため、 UNIX ドメインソケットで Listen するには自前で準備する必要があります。 func (srv *Server) ListenAndServe() error { addr := srv.Addr if addr == "" { addr = ":ht…

Cloud Vision APIを試す

GoogleがCloud Vision APIを使ってみた記事です。 実装したリポジトリはこちらです。 github.com/kaneshin/pigeon 準備 まず、Google Cloud Consoleでプロジェクトを作成し、Cloud Vision APIを有効にしてください。 その後、Service AccountのCredentialsを…

今年の写真 #TYPAC2015

今年 ことしは4年振りにCanonの一眼レフを新調しました。 ボディはEOS 6D、レンズはEF24-70mm F2.8L II USMです。 まだあまり使用していないですが、しっくりきています。 今年の写真 おわりに 来年はたくさん撮影します。