読者です 読者をやめる 読者になる 読者になる

write ahead log

ロールフォワード用

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でテンプレートエンジンを使う

golangではテンプレートエンジンが標準で用意されています. なんだけど, ちょっと癖があって僕はすぐにはなじめなかった. まぁ, テンプレートエンジンなんて慣れの問題な気がするけど. 調べながら書いたらめちゃ長くなった. ざっくり概要 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 …

ubuntu16.04でkindle for PCを動かす

Ubuntuに変えてもほとんど困りはしないんだけど, 致命的なものの一つにKindleがある. 私は最近ほとんどの書籍をKindleで購入しているので, 技術書なんかはとても困る. そういうわけでUbuntuにkindleを導入したのだが,ちょっとハマる箇所があったのでメモ. 1.…

ubuntu16.04でキーボード設定がおかしくなる(日本語が入力できない)

Ubuntuに久々に戻したところ,キーボード入力がおかしくて1hほど無駄にしてしまった。 ちょっとググると以下のコマンドで対処可能という情報がよく流れてくる. sudo dpkg-reconfigure keyboard-configuration 実際, 上記でもきちんと入力できるようになる.が,…

何度か挫折しつつ不純lispインタプリタを作った

作りました. github.com 詳細はgithubのREADMEをどうぞ.(酷い英語ですが) 当初は純lispを作ろうと思ったのでpureという名前ですが, tak関数を動かしたいなど欲が出てきたので 純粋でも何でもなくなってます. GCはありますが, マクロはありません. (私がマク…

Windowsのコマンドラインでクリップボードにコピーする

パソコン初心者みたいだけど、知らなかったのでメモっとく. Windowsのコマンドプロンプトではclipコマンドというものがあって、クリップボードにコマンド結果などをコピーできる. date /T | clip 貼り付け結果: 2016/10/15 echoでちょっとしたものを出した…

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

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

windows10でgit cloneが失敗する

ずっとUbuntuだったのをWindows10に変えたのでファイアウォールではまってしまった. msys2のgitでgithubからcloneを行うと以下のメッセージが出た. fatal: unable to access 'https://github.com/twinbird/xl.git/': Couldn't resolve host 'github.com' な…

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

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

golangでビデオアルバムアプリを作った

golangで小さいツールはいろいろ書いてみたけどWebアプリも書いてみようということで作ってみた. github.com 正直途中から飽きてきて,やっつけで作った感が否めない. ある程度機能作って書き直していこうと思っていたけど,ある程度の機能さえ作っていない. …

システム起動時にUNEXPECTED INCONSISTENCYエラーが発生した時の対処

サーバを再起動すると, 見たくないものを見てしまった. Checking filesystems /12: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY. (i.e., without -a or -p options) *** An error occurred during the file system check. *** Dropping you to a shell; th…

golangでプログラムをデーモン化する(ように見せる)

golang標準ではデーモンを作れないという話を聞いたことがありましたが, デーモン化対応は続いているみたいです. さて、困った.標準でやりたかったなー.と思っていたのですが,とりあえず作成したプログラム単体でできるように以下の方法を取りました. os.Arg…

golangでWindows10上でSQLite3を使う

golangでSQLite3を使う情報は多いのだけれど, Windowsで使うとなると一気に情報が減ってしまう. 事前準備 ちょっと面倒ですが,まずはgccが必要です. 以下からダウンロードします. tdm-gcc msys2なんかでよく使うMinGWではダメっぽいです. (msys2使ってるので…

msys2-launcherがすごい便利

msys2ってタスクバーにピン留めできんのかーと思っていたら twitterでmattnさんが以下の様な事をつぶやいておられました. msys2-launcher の存在を知らない人が結構いるな。— ミスター プロパガンダ (@mattn_jp) 2016年6月30日 探してみるとこりゃ便利そうで…

golangでExcelファイルを読みだす

Excelファイルの読み出しというのは業務アプリを作る際には避けられません. (そもそも業務アプリをgolangで作成できる会社なんてあるのかわかりませんが) ということでExcelファイルを読みだしてみます. 利用パッケージ 以下のパッケージを使わせてもらいま…

Eclipseでビルド時に"Java heap space"が発生する

Eclipseでビルドするとすぐメモリ不足エラーが発生する. 大体は"GC"とか"heap"とかがメッセージに入る. (だからロースペックマシンをよく使う私はJavaはあまり使いたくない....) 解決するにはJavaVMをちょっとチューニングとよい. (メモリがあればの話ではあ…

ubuntuでtmuxを使うとlsで色がつかなくなった

現象 ubuntuでtmuxを使うとlsで色がつかなくなった. なんでだ?と思ったら下記のコマンドでは色がつく. ls --color=auto どうも.bashrcが読み込まれていないらしい.(Ubuntuは.bashrcでalias入るので色がつく) 地味に困る. 対処 色々探したらこのサイトの一番…

net/httpのhttp.HandlerFuncをラップするテクニック

golangでnet/httpを使うと下記のようなコードを書くことになる. func main() { http.HandleFunc("/foo", fooHandler) http.HandleFunc("/bar", barHandler) http.ListenAndServe(":8080", nil) } ここで全てのハンドラの前に認証を追加したいなどと考えると,…

catの-(ハイフン)オプションを使う

こんなファイルを用意する. $ cat > test.txt <<EOS test test test test EOS $ cat > test2.txt <</eos>

opensslを使って鍵の作成・ファイルの暗号化・復号化

opensslを使うと秘密鍵,公開鍵を作ってファイルを暗号化したり,復号化したりできる. とても面白いのだけど,オプションが多くてややこしいのでメモしておく. 秘密鍵を作る seckey.pemという名の秘密鍵を作る場合. $ openssl genrsa -out seckey.pem -aes256 2…

golangでファイル・ディレクトリを操作する

ちょっとしたツールを作るのにも, DBを使うのが面倒な時にもファイル操作は便利. サンプルコードの実行にはosパッケージをインポートしてください. (Printしてるものには当然fmtも) import ( "os" "path/filepath" //ファイルパス操作の時は ) ディレクトリ…

goでコマンドラインツールを作る時にflagパッケージを使う

go言語(golang)はマルチプラットフォームでバイナリを吐けるのでコマンドラインツールを作るにはちょうどいい言語だと思います. 標準パッケージも充実していて,オプションやメッセージを出力するパッケージが標準で準備されています. 当初ググると以下が人気…

gitでUntracked filesを削除する

Git

作業しているとgitで追跡したくないファイルがたくさん生成されて,邪魔になる事がよくある. git cleanという一括で削除するコマンドがあった. 使い方 削除する対象を確認する $git clean -n 実際に削除する $git clean -f 上記だとディレクトリは削除対象に…

msys2にnkfを入れる

下記からダウンロードして入れる https://osdn.jp/projects/nkf/downloads/64158/nkf-2.1.4.tar.gz 手順は以下の通り. gccとmakeはmsys2入れる人ならほとんどの環境では入っていると思う. $ pacman -S gcc $ pacman -S make $ wget https://osdn.jp/projects…

golangの日付フォーマット指定が面白い

百聞は一見に如かずということでとりあえずサンプルを. package main import ( "fmt" "time" ) const ( DATE_TIME_FORMAT = "2006/01/02/15:04:05" ) func main() { now := time.Now().Format(DATE_TIME_FORMAT) fmt.Println(now) } 実行結果 $ ./sample.exe…

golangでJSONをパースする

いろいろな所に書かれているけど,ハマってしまったので書き残しておく. golangでJSONをパースするにはencoding/jsonを利用すれば良い. 静的言語だけあってちょっと面倒なところがあって,JSONの構造に合わせて前もってstructを定義しておく必要がある. 基本 …