write ahead log

ロールフォワード用

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を見るのは楽しいしとりあえず満足.

参考

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

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

Msys2環境でWindowsプログラミングする時のメモ

Windowsプログラミングで直接API触ったことないのに気づいたので, なんとなく初めて見た時のメモ.

触ってみてわかったことは.NETとWindows Formsのありがたみ.

環境構築とビルド方法

ビルド環境のインストール

pacman -S mingw-w64-x86_64-toolchain

GDIを使う時のオプション

普通にビルドすると以下のようなエラーが出る.

undefined reference to `__imp_GetStockObject'

mingwを使うならオプションが必要.

gcc [filename] -lgdi32

リソースファイルのコンパイル

Windowsのリソースファイルのコンパイルにはwindresというツールがある.

windres menu.rc -o menu.o

リソースオブジェクトも含めてコンパイル&リンク

普通にリンクすればいい.

gdiも使う時には(普通使うと思うけど)オプション付けてリソースのオブジェクトファイルも以下のように指定すればいい.

gcc main.c -lgdi32 menu.o

タイマーのようなウィンドウズのモジュールを使う時には

gcc main.c -lgdi32 -lwinmm menu.o

という風にwinmmとかkernel32がいるっぽい.

参考サイト

この辺のサイトの内容が未だにほとんど使えるからWindowsはすごい.

10年以上前からあった気がするけど, 以下のコンテンツは充実してて素敵です.

Win32 API入門

EternalWindows

msys2でpostgres9.xをインストールした時のメモ

pacmanで入れようとしたら11系しかなかったから自前でビルドした.

1. msys2の起動

64bit環境なのでスタートメニューから

MSYS2 MinGW 64-bit

で起動した.

2. 必要なパッケージのインストール

必要ないものも入れたかも.

$ pacman -Syu
$ pacman --needed -S git mingw-w64-x86_64-gcc base-devel mingw-w64-x86_64-toolchain zlib zlib-devel

3. リポジトリからコードを取得

バージョンはお好みで.

git tagで適当に調べてそれっぽいのをチェックアウトした.

$ git clone git://git.postgresql.org/git/postgresql.git
$ cd postgresql
$ git checkout REL9_6_12
$ ./configure --host=x86_64-w64-mingw32 && make && make install

4. 確認

$ psql --version
psql (PostgreSQL) 9.6.12
$ which pg_restore
/mingw64/bin/pg_restore
$ which pg_dump
/mingw64/bin/pg_dump

ncursesを使ってc言語でテトリスを作った

作った.

github.com

ない機能

こんな機能がありません.ほしい.

  • 次に出現するのブロックを画面の横に表示する機能
  • ブロックをキープする機能
  • 矢印キーの対応
  • 回転する時の軸補正
  • スコアの付け方(今は一律一行10ポイント)
  • 落下速度のゲーム状況に応じた変更
  • なんかwikipediaにいっぱい載ってる機能
  • 文字に絵文字を使う

参考文献

せりか式 - ncurses

curses ライブラリ関数

C言語のNcursesで日本語を扱う

NCURSES Programming HOWTO

今日の雑記 - curses版テトリス

Ncurses Programming Guide

もう一度基礎からC言語 - ncursesライブラリの関数

ところで

Webにはこんなヤバいクォリティのものもあります.

GitHub - brenns10/tetris

作りこみたくなったら以下が良さそう.
(大学の教材?)

テトリスを作ろう