write ahead log

ロールフォワード用

golang

vim-goを使う

vim-go, 使い方がよくわかっていないのでチュートリアルをやってみた. (gocodeのコード補完だけでも便利だけど) チュートリアルは作者さんのを見るのが一番だろうけど, ありがたいことにhnakamurさんが日本語訳してくれている. fatih/vim-go-tutorial hnakam…

テキストでER図を作る記法と処理系を作った

作りました. 実装は正規表現ゴリゴリでアレですが, とりあえず動きます. github.com サンプル こんなのを書いて. system.erdot // estimate print system # Tables // master customers (顧客) id (ID) INTEGER PRIMARY KEY name (顧客名) VARCHAR(100) NOT …

goでbrainfuckを書いた

こんな面白そうな記事があったので作ってみた. github.com 全ての最適化を実装するのはちょっとしんどかったので(というか途中で飽き始めた)2段階目まで作った. 実行速度を見ると元記事通り, 明らかに差が出るのが面白い. 試行回数1だけど. $ go test -bench…

templateパッケージのblockアクションを使う

テンプレートが定義済みの場合と未定義の場合で処理を分けられる. 割と便利そう. とりあえずコードを置いておく. {{define "layout"}} <html> <head></head> <div> {{block "contents" .}} not found {{end}} </div> </html> {{end}} {{define "contents"}} <h1>contents</h1> {{end}} package main import …

html/templateでカスタム関数を追加する

golangのテンプレートエンジン(html/template)ではデフォルトで組み込み関数が用意されていますが, 物足りない場合は自作する事になります. 考え方 基本は以下です. template.FuncMapを作る(関数名と関数のmap) このmapをテンプレートのFuncs関数に渡して登…

golangでテンプレートエンジンを使う(その2)

以前, templateパッケージを利用する方法を調べたけど, 構成的な意味でもうちょっと実用的な例が欲しいので書き残しました. コードはgithubに置いておきます. github.com やりたいこと どのページでも使うlayoutをまとめたい 部品的なHTMLを使いまわしたい …

golangでzipを作る

archive/zipパッケージなるものがあります. The Go Programming Language - Package zip 使い方 zipアーカイブは複数のファイルが入るので, 1つのio.Writerから複数ファイルのwriterを作成する構成をとっているようです. zipWriter(io.Writerから作成) write…

golangでメールを送る

golangのメールパッケージnet/smtpはなんというか, 非常に薄いです. 他のパッケージも同じで思想がハッキリ出ていますが, smtpパッケージも例外ではありません. おかげでメールの仕組みを学ぶことが出来ました. ただまぁ, メールは外部パッケージ使ったほう…

golang(net/http)でBasic認証する

net/httpでBasic認証を使ったのでスニペットとしてメモ. package main import ( "fmt" "net/http" ) const ( basicAuthUser = "user" basicAuthPassword = "password" ) func main() { http.HandleFunc("/need", needAuthHandler) http.HandleFunc("/unneed"…

goでlifegame書いた

そういや書いたことないな.と思ったので書いた. github.com 作ってみると中々面白く, 色々なパターンを試してみたくなる. 引き込まれるというのも納得である. バグってなけりゃいいけど. (テストとか書いてないし) こんな感じ block glider ハチの巣 参考 ラ…

golangでTwitterもどき書いた

デザインを考える段階でいつも飽きる. リファクタリングもテストも書いてないけど, 自分用のサンプルコードぐらいにはなるしGitHubに入れておいた. github.com

退屈だしgolangでmemcachedサーバもどき作った

memcached, 使ったことないけどね. 最近仕事はExcelばかりで, 面白くないので. github.com 感想とか 分散はしないし, クライアントは無いしでなんか中途半端感がある. 本当は分散させたりしてみたいんだけど, 今の自分には厳しそう. DHTとかそのうちやりたい…

golangで実行中のOSの種類を判別する

簡単だった.ポータビリティがすごい. package main import ( "fmt" "runtime" ) func main() { switch runtime.GOOS { case "windows": fmt.Println("running on Windows.") case "darwing": fmt.Println("running on Mac OSX.") case "linux": fmt.Println(…

golangで画像を扱う(imageパッケージを使う)

書店でInterface 5月号を見つけて, 画像処理が懐かしくなったので. (つい買ってしまった.他にも車載用OSとか面白いしね.) golangにもimageパッケージという2D画像用ライブラリが標準で備わってるようなのでちょっと使ってみる. 1. 概要 golangの他の標準パッ…

golangでcontextパッケージを使う

使わないから全然覚えられない. とりあえずサンプルを書いて覚えておく. 詳細や思想はdeeeetさんの記事が非常にわかりやすいのでこれ読めばそれでいいと思う. 大雑把な理解 context.Backgroundでcontextを作るか, よそからもらってきたcontextを使って With*…

golangでテンプレートエンジンを使う

【追記】もうちょっと例が欲しくなったので, その2も書きました golangではテンプレートエンジンが標準で用意されています. なんだけど, ちょっと癖があって僕はすぐにはなじめなかった. まぁ, テンプレートエンジンなんて慣れの問題な気がするけど. 調べな…

golangでRDBMSを扱う(MySQLの例)

まぁ, ドキュメント読めという話なんですが. 一々例を載せたら長くなってしまいました. とはいえ, 僕の様なコピペプログラマにはこれくらいしておいた方が… 準備 まずは有難くパッケージをgo getします. go get github.com/go-sql-driver/mysql 操作方法 で…

golangのimport文で別名つける

golangのimport文は別名をつけることができる. 普通のimport文は package main import ( "fmt" //ここ ) func main() { fmt.Println("hello") } こんな感じで文字列でパッケージ名を指定するだけ. 別名をつける場合には以下のようになる. package main impor…

golangでバイナリを操作する

golangは低レベルな処理(バイナリの取り扱いとかね)もちゃんと行うことができる. 基本(byte型を使う) golangは組み込みでbyte型が用意されている. これはその名の通りバイトを扱うための型で, 配列やスライスにすれば単純なバイトストリームを扱える. packag…

golangでfnvハッシュ関数を使う

FNVハッシュ関数は64bit or 32bitでの出力を行うことができるハッシュ関数です. SHAシリーズ(SHA-1など)やMDシリーズ(MD5など)などとは異なり, 衝突耐性よりも実装が効率的な事を重視しているっぽい. 逆にセキュリティなどを重視するところでは使っちゃダメ…

ピアソンハッシュ関数(?)を書いてみた(golangで)

子供が熱出して休暇もらったので, おかあさんといっしょを見ながらこれ書いてます. わけあって8bit出力のハッシュ関数を探していたんですが, 流石に標準ではなさそうなので簡単でそこそこ良いものを探していました. (32bitならFNVがありました.そのうち使い…

golangで端末で使う単語帳を作った

作った. 学生の課題みたいですね. github.com これは何 端末上で使う単語帳です. こんな感じのデータを用意すると こんな感じになります. 実際にタイプしたり考えたりしないと覚えられないので, 作りました. ブラウザ上でもよかったのですが, 個人的事情で端…

golangでシグナルをハンドリングする

golangでコマンド作ってもctrl + cとかで止めたくなるじゃないですか. ちょっと調べた. package main import ( "fmt" "os" "os/signal" "syscall" ) func main() { sig_ch := make(chan os.Signal, 1) signal.Notify(sig_ch, os.Interrupt, syscall.SIGHUP, …

golangでtsv(csv)を読む

探せばいくらでも出てきそうだけど,メモしておく. コード見たほうが早いと思うので. package main import ( "encoding/csv" "fmt" "log" "strings" ) func main() { // テスト用文字列 str := "test\tテスト\nHello\tこんにちは" // CSVのReaderを用意 r := …

App Engine + Golangでチートシートを作るだけのアプリを作った

作った. https://cheat-sheet.tech だって面倒なんだもの チートシートって 便利な割に作るのが面倒. 他人が作ったものはしっくりこない っていうパターンにいつもなるので, 多少は楽が出来るものを作りました. どんなものか Markdownの劣化版みたいな記法で…

golangでオブジェクトをシリアライズしたい

cacheに乗せたい時やちょっとしたものを作るときには簡単にシリアライズ/デシリアライズできる パッケージがあると便利だ. gobパッケージを使うと簡単にできるようだ. rpc向けのパッケージらしい. 他ではencoding/jsonやencoding/xmlだろうか.ここら辺はググ…

golangのtime型のゼロ値はどうやって判定するのか

と思ってちょっとググったらちゃんと公式に記載があった. time - The Go Programming Language 1年1月1日の0時だそうだ.特に驚かない. ここがこの言語のいいところだと思う. (Rubyにも驚き最小の法則ってあったね) いちいち判定に上記時刻を使うのは面倒なの…

golang + Google App Engineを試したかったので掲示板を作った

ふと, Google App Engine(GAE)を試してみたかったのでなにか作ろうと思った. 「掲示板が作れれば大体なんとかなる」とか言いますし,とりあえず掲示板を作りました. 出来たものは以下.適当に時間が経って邪魔になったら多分インスタンス消します. app engine …

xlsxファイルをコマンドラインで操作するツールを作った

golangで作った.用途はわかる人にはわかる. github.com これは何? 行指向のxlsxファイルの編集ツールです. シェルと合わせて使ってます. インストール go getでどうぞ. go get github.com/twinbird/xl 使い方 まずはサンプルのファイルを $ cat test.txt 550…

golangでRedmineの情報をExcelにするコマンドラインクライアントを作った

[追記] id:mattnさんのgodmineがあるので, xlsxをコマンドラインから扱うツールを作りました. たぶん組み合わせて使ったほうが使い勝手いいです.たぶんね. golangでRedmineの情報をExcelにするコマンドラインクライアントを作りました. github.com 使い方 準…