タグ

ブックマーク / kaneshin.hateblo.jp (3)

  • golang で始める Slack bot 開発 - at kaneshin

    この記事は Slack Advent Calendar 2016 - Qiita の3日目の記事です。 昨日は Kinoppyd さんの「今そこにあるSlack」でした。 さて、今回、この記事では golangSlack bot を実装する方法を紹介しようと思います。 世に蔓延る Slack bot これから bot を世に放とうとしている人は、是非、1日目と2日目の記事を読み、事前知識を頭に叩き込んでおくと良いと思います。 Slackで業務チャンネルの平穏を維持するbot、そして人間のトークンをbotに与える話 - Qiita 今そこにあるSlack的に、自身で作成した bot はもちろん好きになると思いますが、人によっては理解不能な bot や、意味不明な場面で反応したりと、「邪魔だな」と思われてしまうことがあります。そのため、bot を開発する人は「謙虚・尊敬・信頼」(T

    golang で始める Slack bot 開発 - at kaneshin
  • golangでABテストの振る舞いを実装する - at kaneshin

    golangに限らないんですが、ABテストの振る舞いをちゃんとした設計のもと実装するのって難しいと思っています。 よくあるパターンとしては、Userという構造体があって、それに対してABテストによる振る舞いを変えるように実装をすることかと思います。 User type User struct { ID int Name string } 関数を生やす あまり考えずに関数を作っていく方針 func (u User) IsFoo() bool { return u.ID%10 == 0 } func (u User) IsBar() bool { return u.ID%10 == 1 } func main() { u := User{ID: 1, Name: "kaneshin"} fmt.Println(u.IsFoo()) fmt.Println(u.IsBar()) } コード:ht

    golangでABテストの振る舞いを実装する - at kaneshin
  • golang で regexp パッケージを使うときに気をつけること - at kaneshin

    golang の Regexp は初期化の Compile コストがそこそこありますが、実は正規表現のパターンと対象となる文字列によって、初期化コストが無視できる(パターンと文字列に支配される)くらい遅くなります。よく言われる regexp の初期化コスト問題が無視できると言われても、正直、全く嬉しくないですね。 ただ、コーディング中に regexp パッケージを使わなければいけない場面は出てくるため、なるべくコストの掛からない実装を心がけています。 Compile/MustCompile 初期化コストはなくすため、グローバルに保持するようにします。 定義 var re = regexp.MustCompile("[a-z]{3}") func main() { fmt.Println(re.FindAllString("foobarbazqux", -1)) // => [foo bar

    golang で regexp パッケージを使うときに気をつけること - at kaneshin
  • 1