2018-10-18
TechGitのpost-checkoutフックを使って、ブランチを切り替えたときにWIPコミットがあればメッセージを出すようにしてみたという話。
WIPコミットとは
WIPコミットというのは個人的な名称だが、全ての変更を仮コミットにまとめたものをそう呼んでいる。例えばブランチで新機能を開発している最中にバグを見つけてmasterを触らないといけなくなった時は、git commit -am 'WIP'
でWIPコミットを作ったあとmasterに移動する。
バグ修正を終えてmasterから戻ってきたあとは、git reset HEAD^
とするとWIPコミットが削除され、作業中の状態に戻すことができる。
作業状態の保存はgit stash
でもできるが、stashの場合は「このブランチにはWIPがある」ということは自分で覚えておかないといけない。一方WIPコミットはブランチに紐づくので、ブランチをcheckoutしたあとgit logすればWIPがあったことを思い出せる。
2018-10-09
TechRubyでAPIサーバを作っていると、Rack::ShowExceptionsとかでエラーレスポンスがHTMLになることがある。通常はこれはデバッグに役立つけれど、APIサーバの場合はcurlで動作確認してたりするので、ターミナルにHTMLがだーっと出力されるとあんまり嬉しくない。
対処法としてはいったん.htmlに保存してブラウザで開くという手があるけど何回もやるのはちょっと面倒。こんなときはw3mを使うと直接見ることができて楽。-Tを付けると標準入力をHTMLとして表示することができる。
curl http://localhost:9292/some_api | w3m -T text/html
Rack::ShowExceptionsの場合は冒頭だけ見ればエラーの主な情報(例外クラス名、メッセージ、発生箇所)が分かるので、以下でもいいかも。
curl http://localhost:9292/some_api | w3m -T text/html | head
2018-10-03
Diary2018-09-29
TechRubyでブラウザゲームが作れるライブラリ、DXOpalの1.3.0をリリースしました。
1.3.0ではパッチをいただいて加算合成ができるようになりました。例えば炎のエフェクトを背景の上にいい感じに合成できるみたいです。かっこいいですね。
使い方
1.2.0から変わっていません。チュートリアルは以下のとおりです。
2018-09-26
Game
ここ2週間ほどInto the Breachというゲームをやっている。けっこう面白い。絵と効果音がかっこいいのもいい。システムはけっこう複雑な点もあるけど、随所にツールチップで解説が出るのでやってるうちに分かるようになって、そういうところもすごく良くできてる。
ゲーム性について
ゲームモードは1人用のみ。自軍のメカが3体あって、それを操作して敵モンスターを倒していく。リアルタイム性はなくて、良い手が浮かぶまでじっくり考えることができる(というか、考えざるを得ないというか)。画面上の電力ゲージがいわゆるHPで、これをゼロにすることなく指定ターン数を乗り切ればステージクリア。
自軍メカはそれぞれ2つまで武器を装備することができるのだけど、稼働には「エネルギーコア」というアイテムが必要で、手持ちのコアを3体にどう割り振るかで「駒としての動き」が変わってくる。強い武器は必要コア数も多い。
2018-09-04
Tech近況です。
Ovto, Vision
8月は自分用のTODOアプリを作っていた。繰り返しTODOまで実装できたので、そろそろ実用できそう。
これのためにフレームワークの方にも手を入れて、例えばOvto.fetch
というfetch APIを叩くメソッドを追加したりした。そろそろv0.2.0としてリリースしないとなぁ(どうもその手の作業は後回しになりがち)。
2018-09-03
Techrubygems.orgを「rg」とかの名前でchrome検索に登録しておくと、一瞬でgemのページを開けて便利。
デモ
手順
- Google Chromeの設定画面を開く
- 「検索エンジンの管理→追加
2018-08-29
TechProblem
Sorcery's Testing-Rails guide is based on Rails4 and does not work with Rails5.2.
With include Sorcery::TestHelpers::Rails::Integration
, I got:
TasksControllerTest#test_should_get_index:
NameError: undefined local variable or method `page' for #<TasksControllerTest:0x00007fff19df4a10>
test/controllers/tasks_controller_test.rb:7:in `block in <class:TasksControllerTest>'
2018-08-12
Tech以下の記事で「解説はまた後ほど」と書いたので、簡単な解説を書く。
TRICK2018とは
RubyKaigi 2018 仙台に合わせて行われた、「普通でないRubyプログラム」のコンテストである。
2018-08-04
Techfetch APIを使ってRailsのAPIを叩くものを作っていて、GETはうまく行ったのだけど、POSTしようとしたらCSRF関連のエラー(ActionController::InvalidAuthenticityToken
)になってちょっとはまった。
原因
fetch APIはGETもPOSTもできるのだけど、デフォルトではCookieをサーバに送らないという仕様になっている。
RailsのCSRF対策は「送られてきたトークンをセッションに保存されたものと比較する」というものだが、セッション情報はデフォルトではCookieに保存される(CookieStore)ので、Cookieをサーバに送らないとセッションにトークン情報がないぞということになり、InvalidAuthenticityTokenになる。
修正方法
fetch APIの第二引数に{credentials: "same-origin"}
を入れてCookieをサーバに送らせることでうまく行った。