読者です 読者をやめる 読者になる 読者になる

at kaneshin

Free space for me.

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です。 まだあまり使用していないですが、しっくりきています。 今年の写真 おわりに 来年はたくさん撮影します。

GDBとの付き合い方を話してきました Go Conference 2015 summer

スタッフ枠だったので受付も手伝いました。 登壇内容 GNU Debuggerを使おうよ、Print Debuggingやめようよ、というお話でした。 GDBを使え!という話でしたが、当方、現在Print Debuggingしています。明日から頑張る。 資料は昨日の朝からソラマチの外で作り…

株式会社はてなに入社しました

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記

【基礎】CodeIgniterでコアクラスを作成する

この記事はCodeIgniter Advent Calendar 2013 の 1 日目の記事です。 今年はPHPについてAdvent Calendarを書きたかったんですよ! そしたらPHP Advent Calendar 2013は全て埋まってたわけで… しょうがないので書きたかったCodeIgniter のAdvent Calendar作っ…

UINavigationBarの曇りガラスと線の消し方

[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

コードの切り替えを瞬時に行うコード

別にObjective-Cは関係ないけど、Objective-Cでやってます。 //* NSLog(@"foo"); /*/ NSLog(@"bar"); //*/ /* NSLog(@"foo"); /*/ NSLog(@"bar"); //*/ 1行目にスラッシュが1つか2つかだけです。 高度なコードすぎて、エディタによってはうまくシンタックス…

weak self の書き方

こんな感じでかいたりする __weak __typeof(&*self) self_ = self;

git-log単体はムダムダムダ!!

git

会社の日報に開発Tips載せることにしたので、こっちでもそのメモを残すかな。 git-logは単体だと使い物にならないので、オプションをつけた方がいい。 また、コミットを「誰が」「いつ」したかの情報はログをパッと見るとき自分はそこまで重要ではないので--…

MySQLのテーブルをエクスポート

コマンドで SELECT * FROM table INTO OUTFILE "foo.csv" FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r'

JavaScriptで文字列を反転させる方法

これ以外に楽な方法ってあるのですかね? gistを見てたら見つけた感じです

zshにgitのブランチやステータスを常時表示させる

gitをターミナルで使用してるときに、ブランチをいちいち確認する時間がもったいないので、画像のようにブランチ名を色を変えて表示させてる。 くわしくはkaneshin/dotfilesの .zshrc .shrc.common をみてもらったほうがいいですね。zshrcの中身はエスケープ…

Linkedtube試してみた

LinkedTube

git の補完ができなくなった git-completion.bash

git

homebrewをupgradeかけたら、gitの補完ができなくなった $ git _git:.:26: no such file or directory: /usr/local/share/zsh/site-functions/git-completion.bash (anon):6: command not found: __git_main なので、こうする $ ln -s /usr/local/etc/bash_c…

CtrlPプラグインでの「突然の死」作ったった

vim

本当は、すでに @mattn さんが作っていました。 mattn/ctrlp-sudden-death でも、何か使ってみると文字が変えられないのでモドカしい!! mattn さんちゃんと元ネタ見たんだろうか…。これコード見た限り文字列変更できないような。 github.com/mattn/ctrlp-s…

シンボリックリンクを削除するとき、@が邪魔だった

gcc@ gcc-ar@ gcc-nm@ gcc-ranlib@ x86_64-apple-darwin11.4.0-gcc@ x86_64-apple-darwin11.4.0-gcc-ar@ x86_64-apple-darwin11.4.0-gcc-nm@ x86_64-apple-darwin11.4.0-gcc-ranlib@ x86_64-apple-darwin11.4.0-gcc-tmp@ $ ls | grep --color=none gcc | sed…

UITapGestureRecognizer

// single tap UITapGestureRecognizer* singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTapGesture:)]; [self.view addGestureRecognizer:singleTapGesture]; // double tap UITapGestureRecognize…

NSDataの中身を見てみる

NSDataの中身をみたくなったときは下記を埋め込む // NSData *data const unsigned char *ptr = [data bytes]; unsigned char s[512]; for(int i = 0, n = [data length]; i < n; ++i) { unsigned char c = *ptr++; s[i] = c; NSLog(@"char=%c hex=%x", c, c…

Vimプラグインの拡張機能プラグインを作ってVimをさらに使いやすくしよう

Vim

この記事はVim Advent Calendar 2012 の 31 日目の記事です。 2012年も今日で終わりですね。12月は忙しかったので気付いたら年末でした。 最近はXcodeばかりを使用していたのでVimエディタからは離れていましたが、XcodeをVimライクにするプラグインのXVimを…

Objective-Cで整数でなく小数でスリープ

意図的にスレッドスリープさせたいとき [NSThread sleepForTimeInterval:.3f]; sleep()は整数のみ

UIButtonがdisableで白くならない?

そんなときは [button setEnabled:NO]; [button.titleLabel setAlpha:.5f]; で無理矢理白っぽくする!

Can I get a selected row of cell on Segue?

テーブルのセルの選択したものを知りつつ、セグエを使うとき - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:IDENTIFIER]) { // Assume self.view is the table view NSIndexPath *index…

How to get the font size and name on Xcode?

if you wanna get it. Simply code like this NSString *fontName = self.label.font.fontName; CGFloat fontSize = self.label.font.pointSize;