uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

golang

GoでHTTPリクエストのdebug proxyを書いた

タイトル通り、前のエントリーの続きでデバッグ用のproxyサーバーを書いたのでそのときに引っ掛かったところをメモ書き。 httputil - The Go Programming Language GoでProxyサーバーをたてるにはhttputilパッケージにあるNewSingleHostReverseProxy を呼ん…

自分の写真整理するためのGoスクリプトを書いた。

みなさん大掃除は済みましたか? 自分は今パソコンの中を大掃除中です。 今年たくさん写真とったおかげでMACのディスクをかなり圧迫していてちょうどそれの整理をしています。 自分のカメラは1枚の写真に対してORFとJPGファイルを2つ生成するような設定とな…

GoでHello Worldサーバーを作る

いまさらな感じですがHello Worldサーバーをhttp.ServeMux使ってやる方法で書いてみた。 package main import ( "flag" "fmt" "log" "net/http" ) type BaseHandler struct { Name string } func (bh *BaseHandler) ServeHTTP(w http.ResponseWriter, r *htt…

http.Clientでちゃんとhttpsのリクエストを投げる

SSL証明書使って手元のマシンでhttpsサーバーをたちあげて動作検証してると下のようなSSL証明書周りのエラーが出ませんか? 今回はそんな時の対策方法の紹介です。 go run tlsclient.go 2015/05/07 18:28:58 Get https://localhost/: x509: certificate is v…

GoでSSL証明書を確認するときの簡易なサーバー

SSL証明書を更新する前に本番にエイやで作業する前に簡単に確認できるTLSサーバーを書いた。 ファイル名とかは最初固定だったけど一応引数で取れるようにしてみた。 * うちの運用体制だとこれで十分なので固定してても十分に足りる。 package main import (…

モダンで簡易なHTTP負荷テストツール vegeta

去年書いた記事を投稿してみようと思います。 HTTP(S)負荷テストツールの紹介をしたいと思います。 一般的なHTTP負荷テスト お手軽にやるなら ab か http_load を使うのが一般的です。 それとも、ちょっと手間をかけて JMeter ですか? ただ、 ab は1つのURL…

改・Go言語でXMLのパースする

Golang: Convert JSON to Struct jmervine/gojson-http このツールを見てたら自分の知らないstructの定義の仕方があったのでこれをXMLでも出来るよなと思ってやってみた。 以前は struct を3つ定義していたものが改修してみる。 type AllowAccessFrom struc…

Go言語でXMLのパースする

前にも書いたけどもう一回書いてみる。 Go言語でXMLのパースしたった - uokadaの見逃し三振は嫌いです 前回のは素直なXMLファイルをパースしたので今回は少し実践的なところ。 crossdomain.xmlを取得してパースするサンプルコード。 XMLのタグと構造体の名前…

Goで固定長データを取り扱った話

自分がメンテナンスしている昔からあるperlスクリプトがデータ量が増えて処理にかなり時間がかかって体感的に遅いと感じるようになってきた。 そのスクリプトは標準ライブラリ程度にしか依存していなかったのでGoで書きなおしてみようかと思ってやってみた。…

Goでファイルの存在確認

ファイルの有り・無しをチェックするための簡単なスニペット。 package main import ( "fmt" "os" ) func main() { filename := "./README.md" _, err := os.Stat(filename) if os.IsNotExist(err) { fmt.Printf("no such file or directory: %s¥n", filenam…

Goで16進数を10進数に変換する

strconv パッケージ - golang.jp ググってると strconv.Btoui64 使えばいけるみたいなことが書いてあるんだが 実行してみるとundefinedってなってしまう。 $ go run hoge.go # command-line-arguments ./hoge.go:12: undefined: strconv.Btoui64 go version …

Webサーバーを作ろうと思うんだがログフォーマットに悩んでる

Labeled Tab Separated Values (LTSV) ノススメ - stanaka's blog 【今北産業】3分で分かるLTSV業界のまとめ【LTSV】 - naoyaのはてなダイアリー LTSV のもうひとつのメリット、あるいは、プログラムでログを出力する際に気をつけるべきこと - kazuhoのメモ…

GoでURL safeなbase64エンコード・デコードの例を書いてみる

[PHP]URL safe な base64 encode メソッド - Hack Your Design! ここにあるURL Safeなエンコード・デコードの例をPHPに実装してみる。 package main import ( "encoding/base64" "fmt" "strings" ) func y64_encode(raw_str string) string { encode_str := …

Go言語でXMLのパースしたった

package main import ( "encoding/xml" "fmt" ) type Person struct { Age int Name string } type ResultSet struct { Person []Person } func main() { v := ResultSet{Person:nil} data := ` <ResultSet> <Person> <Name>Iris</Name> <Age>14</Age> </Person> <Person> <Name>Ha…</name></person></resultset>

Go言語でtagファイルを作成するために。

Goのライブラリのソースを読みたくなったので補助ツールとしてctagsを使ってtagファイルを作成してみる。 ctags5.8ではまだ入ってないので.ctagsファイルに以下の設定を追記した。 --langdef=Go --langmap=Go:.go --regex-Go=/func([ \t]+\([^)]+\))?[ \t]+(…

Go言語でコマンドライン引数を取り扱う

Go言語でコマンドライン引数を取り扱う際のメモ。 flag - The Go Programming Language 結論から、flagパッケージをimportすれば万事解決。 os.Argsでコマンドラインの引数を取ることも可能だけど、 機能が全然違うのでちょっと凝ったことをしたいならflagを…

Go-Redisのサンプルコードが動かなかったのでハマった

alphazero/Go-Redis · GitHub GoでRedisを使ってみたいと思ってGo-Redisをインストールしたはいいんだけどimport出来なくてモヤっとしてるときに、 radixという別のライブラリに見つけてそこに書かれている手順どおりにやったらあっさりとインストール&impor…

Go Conference 2013に行ってきた!

Hello World程度しかやったことなかったけど、 ハンズオンを目的に行ってきた。 ハンズオンで A Tour of Go をゴリゴリ進めてきた。 ちゃんと触ってみて、変数と型の順番が違ったりして慣れないなとか思いつつも 書いてみたらそれほど気にならなかったし 同…