Note

3年後の自分のために書いています

2020-01-01から1年間の記事一覧

Rails の API モードで CSRF 対策機能を実装する

半年前に会社の技術ブログの下書きに雑に書いてて公開しどきを忘れたやつ、もったいないのでこちらで公開。 Rails の API モードはデフォルトでは CSRF 対策機能が有効になってないので、クッキーによるセッション機能を使うと脆弱性を生む可能性がある。 Ra…

sinatraとrailsとrfcとmdnと徳丸本から学ぶセッションとクッキーと認証とCSRFとXSS

半年前の下書き、めっちゃ途中だけど埋もれるのも嫌なので公開。(あとから追記していく) 元々 csrf についての記事を書こうと思っていたが、csrf について調べるうちセッションとクッキーのことが気になり、rails のセッションとクッキーの実装方法が気に…

vagrant ssh したときに裏側で何が起こっているか

結論 以下と同義。 $ ssh vagrant@127.0.0.1 -p 2222 -i ~/vagrant/ubuntu-xx/.vagrant/machines/default/virtualbox/private_key $ vagrant ssh --debug すると最後の方に INFO ssh: Invoking SSH: ... から続くログが出るのでそれを確認すれば分かる。 補…

Go + VSCode でサブディレクトリに go.mod を置くと `could not import ... (no package for import ...)` になる

以下のようなやつ。 環境 Go 1.15.2 VSCode 1.49.0 原因 gopls("go.useLanguageServer": true で有効)を使いながら、go.mod をサブディレクトリに置いて、プロジェクトのルートディレクトリから VSCode を開いてたのが原因だった。 解決策 gopls を使いた…

rails stats コマンドで app 以下のディレクリを全て計測できるようにする

$ rails stats コマンドはデフォルトでは以下のディレクトリしか計測しないため、サービスクラスを app/services 以下に置いているような場合、その分は計測されない。 app/controllers app/helpers app/jobs app/models app/mailers app/mailboxes app/chan…

Hello, Computer Science 〜前編(ハードウェア編)〜

社内勉強会で発表した内容のコピペ。 今日のアジェンダ 前置き(5分) コンピュータの動く仕組みについて〜ハードウェア編〜(各5分ずつ) ブール論理 ブール算術 順序回路 機械語 コンピュータアーキテクチャ 終わりに(3分) 今年の目標 「骨太なプログラ…

Docker で Windows 系 OS のイメージを使えるか?

急に気になったので調べた。 結論 ref. DockerのWindows対応についての整理#2-windowsベースイメージのコンテナを使うことができるか 元々のDockerはLinuxカーネルに依存したものでしたが、Docker Windows Containersの登場により可能になりました。 結論使…

GitHub Apps を作る

Conclusion Probot 使えばけっこう簡単にできる。 Motivation project-bot という Issue/PR 作成時などに GitHub Projects にカード追加してくれる GitHub Apps があるが、ラベル追加時の挙動が微妙(すでにあるカードを移動してくれるのみ)で 機能追加の I…

XMLHttpRequest と fetch の違い

構文的な違いではなく挙動的に違いがあるのか知りたい。 特に、XMLHttpRequest にできて、fetch にできないことがあるのかが気になっている。 以下、XMLHttpRequest は XHR と略す。 結論 XHR にできて、fetch にできないことはほとんどないと言って良さそう…

Fetch API の仕様と各ブラウザの実装

なんだか急に気になったのでメモ。 仕様 https://fetch.spec.whatwg.org/ IETF (RFC) とも W3C とも別の WHATWG なるコミュニティによるもの。 実装 多分ここだろう、という箇所たち。 それぞれレンダリングエンジンの中に実装があるっぽい。 HTML レンダリ…

Rails の API モードで静的ファイルをホスティングする

環境 ruby 2.7.1 rails 5.1.2, 6.0.3 の両方 結論 以下、二つの方法がある。 config.public_file_server.enabled を true にして public ディレクトリ以下に置く 静的な HTML ファイルを表示させたいだけなら config.public_file_server.enabled を true に…

Rails の API モードでセッションを有効にする

巷には config/application.rb 内で Rails.app_class.config.api_only = false にすればできる、的な記事が溢れているが、不要な middleware まで読み込みたくない。 環境 ruby 2.7.1 rails 6.0.3 差分 デフォルトの CookieStore を使う場合 diff --git a/co…

WebRTC + Firebase のチュートリアルやってみた

See. https://webrtc.org/getting-started/firebase-rtc-codelab ほぼ写経しただけ、 のチュートリアルの通りに書いても動かなかったので、サンプルリポジトリ の方を参考にした。 成果物 ブラウザで動くシンプルな 1 対 1 のビデオ通話アプリケーション。 …

gem 'her' コードリーディング

と言いつつ途中から依存してる 'faraday' のコードリーディングがメインになった。 her 側で faraday_options 引数として渡した Hash を faraday 側では url という名前で扱っており、混乱したので記事にしておく。 バージョン her (1.1.0) faraday (0.17.3)…

gem 'pg' コードリーディング

なぜだか急に pg gem の実装が気になった。 # コネクション張って SELECT するだけのコード require 'pg' conn = PG.connect(dbname: 'hoge') conn.exec('SELECT * FROM fuga') do |result| result.each do |row| puts row end end のコードを実行した時に…

Docker 学習ログ

Docker 分からなさすぎるのでコツコツと学ぶ。 間違ってるところは随時直していく。 利用するメリット 開発環境やテスト環境が構築・配布しやすくなる Docker を実行できる環境さえあれば OS の違いも吸収する VM(仮想化 OS)よりも起動が速い VM(仮想化 O…

非効率なコードレビューをなくしたいというポエムを書くためのメモ

前提 現在 Web 業界で主流(?)な 100 % PR を完成させてから(マージできる状態にしてから)In Review にするやり方は非効率 PR はざっくりできた 〜 In Review までがけっこう作業ある(commit 粒度の確認、YARD などのコメント、GitHub の 0 コメ、動作確認…