write ahead log

ロールフォワード用

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

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

Lubuntuでターミナルを透過させる

いつも小さいディスプレイで作業しているので半透明にならないと辛い. デフォルトのLXTerminalのPreferenceでOpacityを変更しても, デスクトップの壁紙がBackgroundに表示されるだけで全然意味がない. (透明にはなってるけどさ….) xcompmgrを入れる どうもxc…

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

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

vimのnetrwを使う

vim

vimには標準プラグインとしてnetrwというファイラが付属している. あんまり触ってなかったんだけど,ふと思い立って使い方を調べてみた. 起動 コマンド 機能 :Ex カレントバッファでnetrwを開く :Tex タブを開いてnetrwを開く ディレクトリ移動 操作 機能 Ent…

シェルスクリプトで外部コマンドを組み立てて実行結果を得る

何度も調べたり考えたりしている気がする… 他にももっといい方法があるのかもしれない. 問題 シェルスクリプト内で引数をsha256化した結果を使いまわしたかった. コマンドラインで素直に書くとこんな感じ. echo -n 'pass'| shasum -a 256 | tr -d ' *-' これ…

gitで日本語ファイル名が文字化けする

Git

なんだこれと思いつつ放置していたけど, いい加減不便なので解消した. メモらないとどうせまた忘れる. 対処 現在のリポジトリのみの場合. $ git config --local core.quotepath false ずっと適用したいとき. $ git config --global core.quotepath false な…

Lubuntuを入れたときにやったこと

古いマシンにLubuntuをいれたのでメモ. 快適だし, メインマシンいらないんじゃないだろうか…. 1. lubuntuを入れる Lubuntu 17.0.4をディスクへ焼いてインストール. English設定で入れた. 2. パッケージを更新 $ apt-get update $ apt-get upgrade 3. 日本語…

w3mを使ってみる

テキストブラウザって意外と便利ですね. 使ったことなかったけど. vim, emacsのバインドである程度動くのでそれほど抵抗なく使えると思います. インストール こんなものを使う人はとっくに調べて入れているでしょうが… msys2環境では以下で入れました. $ pac…

vim-table-modeを使う

vim

markdown-vimを使ってみたけど, 高機能すぎたのでもうちょっとシンプルなものが欲しいなぁと. つまるところGFMのテーブルを書くのさえ楽になればmarkdown書くこと自体はそんなに苦痛じゃない. (っていうか, そういうシンプルな記法のはずだし) 良いのないか…

golangでzipを作る

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

curlでRESTっぽくやる時に使うオプション

毎回調べるのめんどくさい. HTTP Methodを切り替える Xオプションを使います. $ curl -X PUT [hostname] パラメータを与える dオプションを使います. GETでもPOSTでも使えるっぽいです. $ curl -d arg=param1 -d arg1=param2 [hostname] ボディへ直接データ…

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

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

golangでtsv(csv)を読む

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

Windows10上のMSYS2でRictyを使う

面倒なので手順だけ. URLは変わるかもしれない. $ mkdir ricty $ cd ricty $ wget http://www.rs.tus.ac.jp/yyusa/ricty_diminished/ricty_diminished-4.0.1.tar.gz $ tar xvf ricty_diminished-4.0.1.tar.gz $ start . フォントをダブルクリックしてインス…

Windows10でDockerを使う

自宅のPCをWindowsにした直後に「そうだ, docker使ってみよう」とふと思いついた. 必要なものと前提 まず, WindowsにおいてはDockerは2種類あるようだ. VirtualBox上のLinux + docker(Docker Toolbox) Hyper-V上のLinux + docker(Docker for Windows) Docker…

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

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

vsftpdでディレクトリが削除できない

WindowsからFTPクライアントで(私の場合はエクスプローラで)ディレクトリを削除しようとすると以下のエラーが出た. 550 Create directory operation failed. 本当に原因がわからなくて30分くらい悩んだのだけど,どうも.付きのファイルがFTPで取得できていな…

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 …