Looks Go To Me

golang をゆったり学びます。

2015-01-01から1年間の記事一覧

golang regexp onepass とは

golang の regexp には go1.3 以降から onepass っていう処理がはいって、never need backtracking な regexp は onepass として高速に処理されるらしい。 具体的にはどんなものが onepass になるのか、なれないのか。 それは onepass_test.go をみるのがて…

golang regexp の速度について

最近 regexp 系をいろいろさわってました。 golang の regexp が c, ruby, perl などと比べて遅いというのはググったらいろいろ情報出てくるんですねー。 さて、regexp 処理がメインの perl モジュールを go に移植したんですが、チューニングしても 3倍以上…

golang append で、3つ以上のスライスを連結したい

golang の場合、2つのスライスを連結して1つにするには package main import "fmt" func main() { a := []byte("hoge") b := []byte("hage") c := append(a, b...) fmt.Println(string(c)) } このようにする。では、3つは? package main import "fmt" fu…

別言語プロダクトの移植

revel 見ると言ってたが、ありゃ半分うそになった。すまん。 ということで、わけあって別言語プロダクトの移植をすることにしました。 その過程で思ったんですが my $mar = "mar"; my $hoge = "$mar + $mar = $mar$mar"; みたいに文字列リテラル中に変数いれ…

revel 読む(3)

さて、 github.com ですが、main.go routes.go をつくったあとは、go build してます。 で、build してエラーになったとき、その原因が package get が足りてないからだろうと思われる場合、勝手に go get してもってきてくれて、また build するというルー…

revel 読む (2)

harness.Build 続き tmp routes にあるソースがクリーンされ、もともとある main.go routes.go がなくなり const で埋め込んである MAIN, ROUTES テンプレをつかって新しい main.go routes.go がつくられる。 このテンプレは text/tempalte フォーマット。 m…

revel 読む (1)

revel は いわゆる rails てきに scafold してもこっとテンプレを作ってくれる。 # revel new github.com/sheercat/anyweb みたいに。 これの本体は github.com で、$GOPATH 以下に引数の名前でプロジェクトをつくり、conf とかもいきなり動く形で作成される…

revel 読む (0)

Welcome to Revel, the Web Framework for Go! を使うことに。選んだ理由としては、 「gin goji negroni など、軽量を必要に応じて使うか、net/http で十分だ」論が多すぎて、逆に「重量級のキャッチアップから逃げない勇気が必要なんじゃ?」って思ったから…

go を効率よく書こうとするにつれ C に近づく

TL;DR なしmattn.kaoriya.netとても参考になる記事です。さて、この記事を見て、改めて golang を書きながら思っていることが明確になって来ました。タイトルのまんまですがgo を go らしく書こうとすると C で書くようなソースコードになるということです。…

imported and not used: "fmt" 系への対策

golang 書いてると、import "fmt" で fmt.Println デバッグとかして、デバッグおわって fmt.Println 消すと、 imported and not used: "fmt" ってめちゃくちゃ怒られて、でもまぁしょうがないので、 impot "fmt" を消すか import ( _ "fmt" ) みたいに _ の…

go でいくつかツールリプレイスしたので感想

最近いくつかの社内のツールを(irc や slack に常駐する系のやつ)go で書きなおしたんですが、その際に思ったことを書きます。 一番出るコンパイルエラーは、「この変数、このパッケージはつかってないよ」(とくに pp 様で) 一番ランタイム落ちしたのが…

文字列操作おそい例

文字列を n 文字で分割ってどの言語でもつねにやりたくなる場面があって、go でもやりたくなったのでやりました。楽したい脳でつくったのが split0 で、qiita でコメもらったのがソレ以外の2つです gist.github.comで、ベンチ gist.github.comぜんぜん違う…

:= 挙動

go の := の挙動の1つに、どっちかでも新変数であればおkというのがありまして これはエラーじゃない。

html/template のテンプレ内変数宣言的なもの

go にはいろいろ template エンジンが移植、開発されてますが、標準で用意されてる html/template を使ってみました。 gist.github.comなんかこんな感じで ラッパーである layout.html と変数宣言する define.html をいれて index.html が本体だとして gist.…

goenv で 1.5beta2 を install する

goenv (or anyenv) で 1.5beta2 をインストールするには、sheercat/goenvgithub.comを使えばYOI fix for 1.5beta? · sheercat/goenv@5c73722github.comこんだけですがね。

image, image/png, gift ライブラリで左右反転

github.com/disintegration/gift というライブラリdisintegration/giftgithub.comと、公式の image、image/png をつかって、左右反転画像のgooglesearchをするgyazoをつくった gist.github.com反転部分はこんな感じだった。はげしく楽だった。はげしく大変だ…

go, docker, aws, ebs

go で書いた web アプリを aws の preconfigured docker for go にのせて elastic beanstalk をつかってデプロイしたんですが、docker の手前に nginx がリバースプロキシーとして存在してて、go 自体は 3000 ポートを開いておくと、そこに全リクエストが来…

go で web アプリもどきを書く

仕事で簡単な web アプリを書く必要があり、perl で書いても良かったんだけど、最近 go づいてるので、go で書きました。まずはWAFだということ、kocha, martini, goji, gin, revel, kami, beego, negroni などいろいろ調べて、結局勉強なんだから net/http …

どの goenv をつかうか?

goenv にはいろいろあります。github にあるもの、bitbucket にあるもの、github にも fork されてるのが大量に。 基本は wfarr/goenv · GitHub こちらだと思うんですが、これだと curl のオプションがあれでうまく動きません。 なので、わたしも fork して…

basic auth 習作

basic 認証 goproxy で。 <a href="https://github.com/sheercat/yaproxy/blob/master/main.go" data-mce-href="https://github.com/sheercat/yaproxy/blob/master/main.go">sheercat/yaproxy</a>github.com net/http のみで。 sheercat/attogithub.com

net/http 習作

golang は net/http でいともかんたんに http server を起動できるので、ちょっとだけ便利にしたのを作った。 sheercat/attogithub.com 起動すると起動したディレクトリ配下を serve するだけのものです。 ?upload をつけると、file upload フォームを出せる…

写経で gyazo

WAFをずっとさがしてたんだけど、なんかどれがメジャーかもよくわからんので、net/http をつかってみることにした。 まず作ったのは私家版 gyazo 。 package main import ( "fmt" "io" "net/http" "os" "path" "strconv" "time" _ "github.com/k0kubun/pp" )…

golang はじめまして

golang はじめることになったので、ブログもはじめました。 https://daichkr.hatelabo.jp/antenna/960679194078228900 とりあえず大アンテナをつくることから。