ベイズを全くわからない人がベイジアンフィルタを利用して、投稿データから投稿者を推定してみる
この記事は Go2 AdventCalendar の1日目の記事です。 ガチガチのGoネタは Go AdventCalendar の方が書いてくれると思いますので、 今回は弊社が利用している(作っている?) Unipos というサービスのデータをGoから利用して遊んでみようと思います。...
View ArticleGoでCGIしてみる
というわけでCGIしてみます。 一般的なGoのWebアプリケーションからの置き換え 普通、GoでWebアプリケーションを作るときは、net/httpを用いてHTTPをしゃべるサーバを立てるかと思います。もしくは、各種フレームワークが同じようなことをやるでしょう。 import "net/http" func main() { http.ListenAndServe( ":8080",...
View ArticleGo製WebToolKit Buffalo[概要編]
はじめに Golang UK Conference 2017で紹介されていたGo製WebToolKit。日本ではまだまだ事例がなさそうなのと気になっていたのでREADMEと公式ドキュメントを読んで概要をまとめた。ここではBuffaloとは?を理解できるよう書いていく 概要...
View Articlegocuiのコンポーネントライブラリを作った話
Go2 Advent Calendar 2018 4日目の記事です。 こんにちわ 最近GoでCUI・CLIツールを作るのにハマっています。 CUIツールを作るときにい使用しているライブラリでgocuiというのを使っています。 今日はgocuiのコンポーネントライブラリっぽいやつを作ったので、その話をすこしします。 ソースはこちらになります。 本記事を読む前に、gocuiの知識はあったほうが良いので、...
View Articlefmt.Printfなんかこわくない
はじめに Goのfmtパッケージのprintf系の関数 Fprintf Printf Sprintf のフォーマットの指定方法についてまとめました。 Goでは書式指定子 %... のことを verb と表記しています。 すべての型に使えるverb %v 値のデフォルトのフォーマットでの表現を出力する。 基本型の場合 型 verb 論理値(bool) %t 符号付き整数(int, int8など)...
View ArticleGo で Enum を定義するときのちょっとした気遣い
@mosaxiv さんの代打で、Go で Enum を定義するときに気になっていたこととその解決策についてお話します。 Go にはデフォルトで Enum を定義する仕組みがないため、一般的に const 宣言内で iota を使って次のように定義することが多いと思います。 type Type int const ( a Type = iota b c ) しかし、Go には Zero-Value...
View Articlegolang で 2 Way SQL
空いていたので穴埋め。 はじめに データベースを扱うプロジェクトでは、オンコードで SQL を書く事が割と多いのですが、そういったソースコードに埋め込まれた SQL はプレースホルダを使って値を取るので直接実行する事は出来ません。 select * from foo where id = :id and bar = :bar RDBMS によっては :変数名 ではなく ? や $1...
View ArticleGoのnet/httpとSlackのEventAPIでHTTPベースの本棚管理Botを作ってみた
Goのnet/httpとSlackのEventAPIで本棚管理Botを作ってみた POSTが遅くなってしまい申し訳ありません。Go2アドベントカレンダー13日目の記事です。 今回はアドベントカレンダーに向けて、Goのnet/httpパッケージとSlackのEventAPIを使って、書籍の検索を行ってくれる本棚管理ボットを作ってみました。今回はHTTPサーバーベースのBotです。...
View Articleボイラプレート編 - #golang で CLI 作るときにいつもつかうやつ
技術選択編 が軽バズりして嬉しかったので続編. TL;DR 便利ライブラリ & CLI つくったよ https://github.com/izumin5210/clig clig を見れば @izumin5210 が普段どうやって CLI を開発しているかがわかるよ いつも使ってる Makefile や .travis.yml もあるよ 開発用ツールの依存は gex で管理してるよ...
View Articlegoパッケージを使って複数ファイルを1つにまとめる gma を作った
これは Go2 advent calendar 16日目の記事です。 モチベーション 最近競技プログラミングをやり始めたが、web上のエディタで書いたコードをそのままsubmitする形式が多いように思う。つまりシングルファイルにまとめる必要が出てくるが、いくつか問題を解いていると似たような処理が多くなりutilファイルが欲しくなってきたので作った。 作ったもの go...
View Article高速コレクション操作ライブラリ「Koazee」
この記事はGo2 Advent Calendar 2018の17日目の記事です。 コレクション操作ライブラリ Koazee 12月はじめのこと、go-nutsに「速いコレクション操作ライブラリを作ったぜ」という投稿がありました。 [go-nuts] Koazee vs Go-Linq vs Go-Funk...
View ArticleGoにまつわるとっても真面目なBenchmarkクイズ!「goの正規表現(regexp)は速いのか?」編
今回はクソ真面目にクイズを書いていきます。 なぜ真面目を強調しているかといえば、昔書いた記事が不真面目だったからです。 鬱陶しいくらい「いいね」するよう勧めてくるgoroutineクイズ それではクイズに行きましょう。 最初の3問は小手調べ、Goの基本事項のおさらいです。 その後、第四問から正規表現の速さ比べに入ります。 実行環境 こんなの Distro: Ubuntu 18.04.1...
View ArticleGoのssa.htmlの変更点まとめ2018
Go2 Advent Calendar 2018 20日目の記事です。 空きを見つけたので代筆させていただきます。 はじめに Goコンパイラの中間表現として採用されているSSA(Static Single Assignment)の小ネタです。 SSA(静的単一代入)についてはWikipediaが詳しいのでご覧ください。...
View Article