golang

Go言語のRest Framework 「Sleepy」を触ってみた

dougblack/sleepy コードが100行ちょっとくらいなので読みやすい。作りとしてはstructが{Method}Supportedインターフェースを実装していれば、そのメソッドを呼び出せるようになる感じ。例えばPOSTをサポートするめにはPostSupportedインターフェースを実装…

Go言語でCodeEvalのCOMPRESSED SEQUENCE

CodeEval数字が並んだファイルを与えられるので、1行毎に、「要素が続いた数」+「要素」の並びに変換して出力する。input 40 40 40 40 29 29 29 29 29 29 29 29 57 57 92 92 92 92 92 86 86 86 86 86 86 86 86 86 86 73 73 73 73 41 41 41 41 41 41 41 41 41…

Go言語の練習〜Benchmark

昨日書いたGoで文字列を適当に圧縮する関数のベンチマークを取ってみた。 package main import "testing" func BenchmarkCompressBadStrA(b *testing.B) { for i := 0; i < b.N; i += 1 { CompressBad(strA) } } func BenchmarkCompressBetterStrA(b *testin…

Go言語の練習 〜 文字列の基本的な圧縮

"aaaabbbbcccc"を"a4b4c4"にする処理。マルチバイト文字でもいける。rune、bytes.Bufferの扱いとかにちょっと慣れた。

Go言語でCodeEvalのString Permutations

CodeEval 文字列のpangramすべてを取得してソートして表示input hat abc Zu6output aht,ath,hat,hta,tah,tha abc,acb,bac,bca,cab,cba 6Zu,6uZ,Z6u,Zu6,u6Z,uZ6

Go言語でスライスの順列を取得する

とりあえず書いてみて動いたのでメモしておく。 package main import "fmt" // リストからidx番目の要素を抜かしたものを取得 func delete(idx int, L []interface{}) (result []interface{}) { result = append(result, L[:idx]...) result = append(result…

Go言語で構造体をjsonに変換するSnippet

package main import ( "bytes" "encoding/json" ) type Person struct { Name string Age int Friend *Person } func main() { friend := Person{"john", 40, nil} person := Person{"paul", 71, &friend} var buf bytes.Buffer b, _ := json.Marshal(perso…

Go言語で構造体をXMLに変換するsnippet

package main import ( "bytes" "encoding/xml" ) type Person struct { Name string Age int Friend *Person } func main() { friend := Person{"john", 40, nil} person := Person{"paul", 71, &friend} var buf bytes.Buffer buf.Write([]byte(xml.Header…

Go言語のwebフレームワーク「martini」アプリにBasic認証をかける

martini-contribにauthパッケージが用意されているのでそれを使う。 Basic認証をかける機能しかない。 $ go get github.com/codegangsta/martini-contrib/auth 使い方 package main import ( "github.com/codegangsta/martini" "github.com/codegangsta/mart…

Go言語の構造体にunderscore.js風のメソッドを追加する「gen」を試す

clipperhouse/gen インストール $ go get github.com/clipperhouse/gen コマンドラインツール「gen」 コマンドラインツール「gen」がインストールされる $ gen Usage: gen [[*]package.TypeName] [-[*]all] [-exported] *package.TypeName # generate funcs …

goのimportを自動的に追加/削除してくれる「goimports」を試してみた

bradfitz/goimportsgofmtでファイル保存するときに自動的にフォーマットするようにしてるのだが、使っていないimportの削除は行われない。goimportsをgofmtのかわりに使うと、importのfixまでやってくれるようになる。 インストール go get code.google.com/…

Go言語でコンソールにプログレスバーを表示するライブラリ「pb」

cheggaaa/pb package main import ( "github.com/cheggaaa/pb" "time" ) func main() { count := 100000 bar := pb.StartNew(count) for i := 0; i < count; i++ { bar.Increment() time.Sleep(time.Millisecond) } bar.FinishPrint("The End!") } exampleに…

go-linqを試してみた

Goで.NETのLINQのようなことができるgo-linqというライブラリを試してみた。 quickstartを写経しただけだけど便利にそう。とりあえずrubyでいうcollectみたいなのが1行で書けるのが嬉しい。 それ以外にもいろんなことができて面白い。 ahmetalpbalkan/go-linq

Go言語でランダムな文字列を取得する

martini-congrib/sessionsでセッションIDを取得するあたりのコードを読んでいて見つけたのでメモ。だいたいこんな感じ。 io.ReadFull(rand.Reader, b)でランダムなバイト配列を取得できる。 package main import ( "crypto/rand" "encoding/base32" "fmt" "i…

Go言語でCodeEvalのMorse Code

CodeEvalinput.txt .- ...- ..--- .-- .... .. . -.-. -..- ....- ..... -... .... ...--output AV2WHIECX 45 BH3参考 : モールス符号 - Wikipedia

Go言語でCodeEvalのRoad Trip

CodeEval input.txt Rkbs,5453; Wdqiz,1245; Rwds,3890; Ujma,5589; Tbzmo,1303; Vgdfz,70; Mgknxpi,3958; Nsptghk,2626; Wuzp,2559; Jcdwi,3761; Yvnzjwk,5363; Pkabj,5999; Xznvb,3584; Jfksvx,1240; Inwm,5720; Ramytdb,2683; Voclqmb,5236; output 1245,…

Go言語でCodeEvalのHidden Digits

CodeEvalaからjまでのアルファベットは0-9に置き換える 見えている数字はそのまま それ以外の文字は全て無視 数字が1文字も残らなかった場合はNONEを返すinput.txt abcdefghik Xa,}A#5N}{xOBwYBHIlH,#W (ABW>'yy^'M{X-K}q, 6240488 output 012345678 05 NONE…

Go言語のWebフレームワーク「Revel」でゲストブックアプリケーションを作ってみた

The Revel Web Framework for Go インストール $ go get github.com/robfig/revel/revel コマンドラインツール $ revel ~ ~ revel! http://robfig.github.com/revel ~ usage: revel command [arguments] The commands are: new create a skeleton Revel appl…

Go言語のwebフレームワーク「martini」でゲストブックアプリケーションを作ってみた

このあいだ「Beego」を使って作ったゲストブックアプリケーションをそのまま「Martini」でも作ってみた。Martini - Classy web development in Go. インストール $ go get github.com/codegangsta/martini とりあえず動かす Beegoよりも更にシンプルな感じ。…

Beegoアプリをherokuにアップする

昨日作ったbeegoを使ったゲストブックアプリケーションをherokuにアップしてみた。Beego GuestBook 以下のエントリを参考にした。 Getting Started with Go on Heroku 適当にやったことをメモする 依存パッケージの管理のためにgodepを入れる。 godeps save…

Go言語のWebアプリケーションフレームワーク「Beego」でゲストブックアプリケーションを作ってみた

Goのwebアプリケーションフレームワーク「Beego」でPythonプロフェッショナルプログラミングの2章のゲストブックアプリケーションを作ってみた。 (こちらのエントリの真似) インストール $ go get github.com/astaxie/beego $ go get github.com/beego/beebe…

Go言語でCodeEvalのMixed Content

CodeEvalinput.txt 8,33,21,0,16,50,37,0,melon,7,apricot,peach,pineapple,17,21 24,13,14,43,41output melon,apricot,peach,pineapple|8,33,21,0,16,50,37,0,7,17,21 24,13,14,43,41

Go言語でCodeEvalのMultiply Lists

CodeEvalinput.txt 9 0 6 | 15 14 9 5 | 8 13 4 15 1 15 5 | 1 4 15 14 8 2 output 135 0 54 40 13 16 225 14 120 10

Go言語でCodeEvalのSwap Elements

CodeEvalinput.txt 1 2 3 4 5 6 7 8 9 : 0-8 1 2 3 4 5 6 7 8 9 10 : 0-1, 1-3 output 9 2 3 4 5 6 7 8 1 2 4 3 1 5 6 7 8 9 10

Go言語でCodeEvalのLongest Word

CodeEvalinput.txt some line with text another lineoutput some another

Go言語でjsonのパースエラー

以前codeevalのjsonのパースをするというchallengeをgoでやってみたとき、以下のようなエラーがでた。 json: cannot unmarshal null into Go value of type main.Item 簡略化してるけどコードは以下の通り。 package main import ( "encoding/json" "log" ) …

Go言語でCodeEvalのShortest Repetition

CodeEval 文字列が渡されるので一番短い文字列での繰り返しを検出して、文字列の長さを出力する。abcabcabcabcだったら、「abcabcの繰り返し2回」とも「abcの繰り返し4回」ともみなせるが、abcのほうが文字列が短いので、abcの文字列長3を返す。 input.txt a…

Go言語でCodeEvalのRoman Numerals

CodeEvalinput.txt 159 296 3992output CLIX CCXCVI MMMCMXCII

Go言語でCodeEvalのWord to digit

CodeEval input.txt zero;two;five;seven;eight;four three;seven;eight;nine;two output 025784 37892

Go言語でCodeEvalのLowest Unique Number

CodeEval 1行ごとに数字(1-9)がスペース区切りで渡される 出現回数が1度だけの数字のうち、一番小さい数が出現するポジション(1 origin)を返す ユニークな数字がなければ0を返すinput.txt 3 3 9 1 6 5 8 1 5 3 9 2 9 9 1 8 8 8 2 1 1output 5 0