write ahead log

ロールフォワード用

WSLのUbuntuでsshしたら接続先の操作が文字化けする

WSL上のlocale設定していなかった.

日本語使わないと気づかんなぁ.

WSL上の.bashrcに以下を追加.

export LANG=ja_JP.UTF-8
export LANGUAGE=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8

続いてlocaleを生成して設定.

$sudo locale-gen ja_JP.UTF-8
$sudo dpkg-reconfigure locales
[TUIになるのでja_JP.UTF-8をデフォルトにする]

ターミナルを再起動して完了.

laravelでdusk使う時にやること

毎回忘れるから雑にメモ

インストール

$ composer require --dev laravel/dusk

テスト用DBの作成

$ psql -U homestead -h localhost
> create database homestead_dusk_test encoding UTF8;

dusk用envファイルの作成

.env.testingとは異なるので注意.

$ cp .env .env.dusk.local
$ vi .env.dusk.local
[DBとかをいい感じに変える]

日本語使えるようにする

$ vi tests/DuskTestCase.php

--lang=ja_JPを追記.

        $options = (new ChromeOptions)->addArguments([
            '--disable-gpu',
            '--headless',
            '--lang=ja_JP'
        ]);

テスト作って動かす

まぁ, 一応かいとこ.

$ php artisan dusk:make
$ php artisan dusk

goで郵便番号検索サーバを書いた

初めてKEN_ALL.CSV触りましたけど, 怖いっすね.
全パターン対応できる気がしない.

作ったもの

こんな感じで動くものが欲しかった.

f:id:twinbird_htn:20190628233748g:plain
kenchan

詳しい使い方はGitHubで.

作った経緯

受託開発やっていると, どこのAPIでも使えばいいってもんでもないので

  • 無料で
  • 商用利用可で
  • 長く使えて(大手企業がやっていて)
  • APIが変わんないやつで
  • 情報が定期的に新しくなるやつ

が欲しいとか社内で話題になったけど, そんなものはないわけで.(ZipCloudさんはかなりいいけど)
試しに書いてみた.

参考

詳細は以下の詳しい方に譲るんだけど, KEN_ALL.CSVの内容が結構カオスだった.

郵便番号から住所を検索するサービスにまともなものがない

汎用機とかオフコンを触って泣いたことがある方なら「あぁ...お疲れ様」ってなると思う.

ちゃんとしたのが欲しいならzipcloudさん使えばいいと思う.

ほんと, それくらいカオス.

感想とか?

軽い気持ちでやるもんじゃなかった.

Windows Terminal(Preview)を試した

期待のWindows Terminalが先週末からMicrosoft Storeで公開されている.

少し使ってみたけど, 現時点でも結構いい出来だと思う.

GitHubからソースを手に入れてビルドもできるだろうけど, 面倒がる僕みたいな人にはありがたい.

導入方法

Microsoft Storeで探して入れるだけなのだが, 一つ注意点があって, Windows10が最新でないといけない.

ちゃんとシステム要件に書いてあるのだが, Twitterとか見てると読んでない人が多い気がする...

Windows Updateしてね

あとはここから入れるだけ.

設定

Settingsを開くといきなりエディタでJSONファイルが出てきてウケた.

UI周りは後回しらしい.(いいと思う)

設定ファイルはこの辺を見ながら書けばいいんじゃないっすかね.

感想とか?

sshで使ったりしても大体問題なく動くので, 内部処理はいい感じなんじゃないかなぁ.

ただ, PreviewなのでUIの挙動がやっぱPreview.
(ウィンドウ閉じるときにワンクッション待ちが入って何か走ってるし.フィードバック送ってるのかな?)

あと, ウィンドウサイズ変えると落ちたりね.

地味に辛いのが日本語入力時にIMEが常に左上に表示されること.

[Windowsキー] + . (ドット)の面白機能の方が日本語IMEより使い勝手良くない?っていうwww

いずれにしてもいいものなので正式版が待ち遠しい.

golangでHTTPヘッダを追加した時のメモ

リバースプロキシを使うことが多いだろうから, net/httpで書いたサーバがそのまま外に出る事は少ないと思うけど.

App Engineがね.(設定とかでいい感じにしてくれるんですかね?)

書いたコード

こんな感じでラッパーを作って.

/*
 * HTTPヘッダを送出するようにハンドラをラップする
 */
func secureHeader(fn http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        // XSS対応してね
        w.Header().Set("X-XSS-Protection", "1; mode=block")
        // frameを制限してね
        w.Header().Set("X-Frame-Options", "SAMEORIGIN")
        // Content-Typeを使ってね
        w.Header().Set("X-Content-Type-Options", "nosniff")
        // HTTPS使ってね
        w.Header().Set("Strict-Transport-Security", "max-age=15768000")
        // オリジナルのハンドラを呼び出し
        fn(w, r)
    }
}

こんな感じに呼び出した.

http.HandleFunc("/some", secureHeader(someHandler))

参考

Homestead上でlaravelのdusk使おうとしたらFailed to connect to localhost port 9515: Connection refusedって言われる

結論としてはchromeとchrome-driverに必要なライブラリが入っていなかったからっぽい.

Homesteadって全部入りではないのか...

っていうか以前のバージョンなら問題なく動いた気が...なぜなのだ...

# 直接実行するとchrome-driverがそもそも動作しない
$ ./vendor/laravel/dusk/bin/chromedriver-linux --verbose
..[なんかエラーメッセージ]

# chrome-driver用に入れる
$ sudo apt install libnss3

# chromeを入れる
$ sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
$ sudo apt-get update
$ sudo apt-get install google-chrome-stable

とりあえず動いた.

Win32 APIを使ってC言語でテトリスを作った

作った.

github.com

前回コンソールで作ったのでGUIにしてみた.

twinbird-htn.hatenablog.com

でも途中でメンドクサクなって全然カラフルじゃないしボタンもない.

Win32 APIに触ってみたかったので作り始めたが, 作ってわかったことは.NETとWin Formsは偉大という事です.

でもまぁ, OSのAPIを見るのは楽しいしとりあえず満足.

参考

ウィンドウサイズは本当にハマったので.感謝.

更新しない備忘録改二 - クライアント領域のサイズからウィンドウ全体のサイズを設定する