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

write ahead log

ロールフォワード用

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を定義しておく必要がある. 基本 …

golangでhttptestを使ってテストする

ちょっとしたコマンドとか作る時にWebAPIを触ろうとすると, net/httpをよく使うことになる. テストについてはちょっと調べたんだけどhttp経由のものはやったことがなかった. net/httpはテストについてもnet/http/httptestがサポートしてくれているのでこれを…

GitHubのReleaseのダウンロード数を調べるコマンドを作った

別にcurl叩けばわかるんだけど,面白そうだし作った. github.com 使い方 ここからバイナリをダウンロードしてください. GitHubにアクセスして, Home -> Setting -> Personal access tokens -> Generate new tokenからアクセストークンを取得してください. 環…

golangで色々なOSのバイナリを作る

前も調べたけど記録してなかったので忘れた.今度はメモっとく. golangで他のプラットフォーム向けにクロスコンパイルするには環境変数を指定してbuildすれば良いらしい. 環境変数は GOOS GOARCH があってそれぞれOSとCPUアーキテクチャを表している. Linux環…

コメントアウトの対義語は

アンコメントらしい. 恥ずかしいなぁ.知らなかった.

golangではてなブログに投稿するCUIクライアントを作った

はてなブログにコマンドラインから投稿できるクライアントアプリを作りました. golangで作ったので多分どこでも動きます. というか動かないと困るなぁ. この記事もviでMarkdownで書いて以下のコマンドで投稿してます. (プレビューと公開は子供に引きずられな…

golangで最低限のテストを書きたい

golangは触り始めたばかりで右も左もわからない状況なんだけれど,テストの書き方ぐらいは知っておこうかなと思う. とはいえあんまり頑張ると途方もないので最低限に絞る. テストされる側のプログラム package main func english() string { return "Hello, w…

iconvコマンドを使う[POSIXコマンド]

iconvコマンドは文字コード変換コマンドです. 名前は「International Codeset Conversion Library」に由来するそうです. 出典はwikipediaより 使い方 基本的にはfオプションとtオプションで入力元ファイルと出力先ファイルの円コーディングを指定して利用し…

vimrcを整理した

vim

定期的に整理しないとよくわからなくなる. ソース解析の機会が増えたのでQuickfixとvimgrepに関して追記した. gist.github.com

*nixの改行コードからWindowsの改行コードに変換する.またはその逆

findを使った.msysでも動いてよかった.(unix2dosとか入ってるんだね) 例としてカレントディレクトリ以下の.hファイルを全て置き換え. *nix -> windows find . -name "*.h" -print -exec unix2dos {} \; windows -> *nix find . -name "*.h" -print -exec dos…

hashコマンド[POSIXコマンド]

hashコマンドはコマンドの場所を記憶します.(正確には記憶した場所を表示・削除したりして管理します) hashコマンドは組み込みコマンドの様です. たとえば今の私のシェルで実行すると以下の様になります. $ hash hits command 1 /usr/bin/vim 0 /usr/bin/tou…

loggerコマンド[POSIXコマンド]

loggerコマンドはその名の通りログを残す. 初めて知った. こんな感じで何度も実行する $ logger "test message" $ logger "Hello" $ logger "world" $ logger "logging test" ログを見ると tail /var/log/message ...[中略] Mar 22 17:47:31 localhost root:…

tputコマンド[POSIXコマンド]

POSIXコマンドを淡々と試しているけど,いい加減飽きてきている. tputは制御コードシーケンスを出力するためのコマンド. 制御コードシーケンスはターミナル毎に違うのでターミナルデータベースから情報を持ってきて,それを利用する必要がある. が,面倒. それ…