write ahead log

ロールフォワード用

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

CentOS7でsystemdを使ってgolangで作ったプログラムをデーモン化する

0. 始めに CentOS7で試します. UbuntuでUpstartを使った例の延長です. UbuntuでUpstartを使ってプログラムをデーモン化する 1. プログラムを作る プログラムは前回と同様のサンプルを使います. 挨拶するだけの単純なものです. package main import ( "net/ht…

ubuntuにvim8をソースからインストールする

aptで入れるvimは7系で古かったのでソースから入れた. 1. ソースを取得 # git clone https://github.com/vim/vim 2. ncurses-devを入れる 必要といわれるので # aptitude install ncurses-dev 3. configureを実行 オプションは好みでセッティングなんでしょ…

golangをvimで書くためにプラグイン入れた

プラグインは使わない主義でずっとやってきたけど, 便利すぎるので流石に負けた. ついでにMarkdownも良く書くからプラグイン入れた. 1.Vundleのインストール git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 2. vimrcを編…

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

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

CentOS7にMariaDBを入れる

最初から入ってるかもしれない. 簡単だったけど, やったことなかったしメモ. 1. yumでインストール 入ってたら必要なさそうだけど. # yum install mariadb mariadb-server 2. エンコーディング指定を変える UTF8へ. 必要ならどうぞ. # vi /etc/my.cnf [mysql…

DBマイグレーションツール gooseを使う

データベースのマイグレーションツールで自分に合ったのを探していて, 割といいのを見つけたので使い方をメモしておく. 自分としては SQLで書ける 開発言語に依存しない 開発環境に依存しない テストデータ投入まで規約がある を備えているのが欲しかった. g…

CREATE TABLEで制約(Constraint)を付けたり外したり

SQL

追加する方法は知ってても, 削除する方法を知らなかったりする. そんな制約ですが, 何度調べても忘れるのでメモします, はい. MySQLでやります. テーブル例 例がないと困るので適当に用意しました. 会社と部署にしましょう. CREATE TABLE company( id INT PR…

LinuxからWindowsネットワークにアクセスする

要するに, CentOS7からSambaでWindowsネットワークをマウントしたい. 1. とりあえずsambaクライアントを入れる. # yum install samba-client cifs-utils 2. Firewall許可対象へ追加 # firewall-cmd --permanent --zone=public --add-service=samba 3. 共有フ…

CentOS7のKVMにCentOS7(ゲスト)をインストールする

CUIでやります. 0. KVMの設定 過去の記事に譲ります. 1. イメージをダウンロード ISOファイルが無いと始まらないのでダウンロードします. CentOS 上記から好きなバージョンを選べばよいかと. 今回はCentOS7で. # mkdir /var/lib/libvirt/iso # cd /var/lib/l…

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(…

vimrcを変えた

golangを良く書くようになってきたので, gofmtを保存時に自動実行するようにした. あとはMarkdownでfolding出来ると便利とようやく気付いたのでfoldingを足した. (今まで使ってなかったんですよね…) プラグインはホントわけわからなくなりそうなので極力使い…

UbuntuでUpstartを使ってプログラムをデーモン化する

golangで簡単なHTTPサーバを作ってこれをデーモン化してみましょう. 今後はSystemdが主流に代わっていくのでしょうが, まだまだUpstartも多いと思います. 1. サンプルプログラムの準備 サンプルプログラムは以下のような簡単なものです. Helloを挨拶してくれ…

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

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

msys2(msys2-launcher利用下)で環境変数を引き継ぎたい

msys2を使っているとwindows標準の環境変数が引き継がれなくてしょんぼりする. 探していると対処法があるそうでめもらんだむ - MSYS2 で PATH が引き継がれない この記事はホントにありがたかったんですが, msys2-launchar使ってるせいか, うまくいきません…

Docker Toolboxを使ってWindows10 HomeでDocker環境を構築する

DockerをWindowsで使おうとするとHyper-VのあるProfessional以上の環境を要求されます. まぁ, 買えばいいんですが, そうはいってもない状況で使いたい場合もあるんですね. そういう方はVirtualbox上で構築できるDocker Toolboxというものがあるそうです. そ…

golangでcontextパッケージを使う

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

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

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

golangでRDBMSを扱う(MySQLの例)

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

Windows10にPostgreSQLを入れる

Windowsに入れたことないので, メモ書き. ダウンロードする PostgreSQLの公式へ行くと, インストーラは別の場所で配布されているらしい. ここからダウンロードしてインストールした. インストールする 基本「Next」押しただけ. パスワードは普通に設定します…

golangのimport文で別名つける

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

vimでよく忘れるやつらの一部メモ

vim

すぐ忘れるのでググるのめんどくさい. 下のほうには便利だけど職場でも知られてない可哀想なやつを入れた. (そもそもvim使う人ほとんどいないけど…) つーか, 実践vimとか読んだほうがいい.(俺, 何年使ってんだこのエディタ…..) ノーマルモード コマンド 内容…

golangでバイナリを操作する

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

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

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

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

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

Windows10のスタートアップフォルダの場所

毎回調べないとならなくなってきて鬱陶しいのでメモ. Windows7と8でもたぶん同じ. C:\Users\ [ユーザー名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

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, …