TL;DR puma 5.2.0と5.2.1で、Rubyの標準出力がバッファリングされるようになってしまうというバグが埋め込まれた。 根本的に回避するためにはpumaのバージョンを変えるのが良い。 (他にも$stdout.syncを書き換える等でも解決できるが、バージョンを変えてし…
はじめに 1/30 15:00 - 2/1 4:00 (JST)に開催されたjustCTF 2020にチーム「LAIT」として参加しました。 y011d4 との二人チームです。 結果は61st/804チームでした。 このwriteupでは自分が取り組んだ問題についての解法等を書きます。 他の問題についてはチ…
はじめに Harekaze mini CTF 2020にソロで参加し、5問を解いて141人中28位でした。 非常に面白い問題が多かったです! 運営の皆様ありがとうございました。 解けた問題の解法 [Misc warmup] Welcome 説明文にあるHarekazeCTF{4nch0rs_4we1gh}を提出するだけ…
はじめに WaniCTF 2020に参加して、31問中27問を解いて、2776点の19位でした。 pwnは今までほぼ解けたことがなかったのですが、誘導がとても親切だったので、その場で調べていくつか問題が解けました! 勉強するのにとても良いCTFだったと思います。運営の皆…
追記 2020/11/10: formに渡すべき属性が一部不適切だったので修正しています。イベントハンドラ等には変更ありません。 はじめに React hooksを使ったcheckboxの実装を調べてみても、関数オブジェクトの再生成を防ぐ方法が出てきませんでした。 自分でちゃん…
はじめに 最近、RDBのprimary keyについて議論することが多かったため、それぞれのメリット・デメリットをまとめておきます。 この記事で扱うprimary keyの選択肢 この記事では、以下のprimary keyについて扱います。 natural key surrogate key RDBのauto i…
はじめに URL短縮サービスを作って遊んだので、terraformのコードを含めて共有します。 参考記事 以下の記事の構成を参考にしましたが、CloudFormationは使わずに一から作ってみました。 engineer.retty.me CloudFormationを使わなかった理由は、常用してい…
はじめに Fargateでwebサーバをデプロイする際に、いっつも同じようなことでハマっているので、備忘としてまとめておきます。 あわよくば、ハマる前に皆様を救えればと願ってこの記事を書いています。 CloudWatchにlog groupを作成していない、log group名が…
はじめに SECCON Beginners CTF 2020に出ました。結果は1009チーム中48位でした。 自分が解けた問題(+α)のwriteupを書きます。 他のチームメイトが解いた問題は以下のブログを参照してください。 rajyan.hatenablog.jp 相変わらず偏りが酷い結果 解いた問題 …
TL;DR .eslintignore等で.eslintrc.jsを無視する設定を追加する。 はじめに eslintのv7へのメジャーバージョンアップで、かなりわかりにくいエラーが出て詰まったので、解決策を共有します。 環境 eslint v7 typescript-eslintを導入済みで、parseに@typescr…
はじめに typeとinterfaceの使い分けで、一部の例外を除いて、できるだけtypeを使うべきというコーディングスタイルを定めてみました。 eslint-typescriptにはprefer-function-typeというルールはあるけれど、その逆はないので、カスタムルールを作ってみま…
TL;DR docker-compose v3でdocker-compose.ymlを綺麗に書きたいけれど、あまり綺麗に書けない。 docker-composeは標準入力からも設定ファイルを読み込めることを利用して、ある程度まではシェルスクリプトを書いて、ゴリ押ししてしまえば良さそう。 はじめに…
はじめに 単一のCSSファイルの中でresponsiveにしていて、JS側でもデザインに合わせて挙動を変えたくなったので、その時のメモ。 実装例 windowのサイズが変わった際には再描画する必要があるので、カスタムhook内でresize eventをlistenしてやれば良い。 im…
TL;DR 現状のterraformでは差分が出てしまうのはしょうがないので、aclとforce_destroyのオプションは適切に設定して、差分を無視する。 環境 Terraform v0.12.18 + provider.aws v2.46.0 はじめに 最近terraformを触り始めたのですが、S3のimportの際に差分…
TL;DR CircleCI上で.envファイルを読み込むには、普通にシェルスクリプトを書くしかなさそう。 cat app.env | grep -E .+=.* | while read line; do echo "export ${line}" >> $BASH_ENV; done などとする。 はじめに CircleCI上で、machine: trueで自前のdo…
はじめに 使うかなと思って実装したら全く使わなかったので供養。 実装例 import * as React from 'react'; interface Props { onChange: (data: any) => void; } export default function Picker(props: Props): JSX.Element { const { onChange } = props;…
TL;DR ネタ記事です。Aliasのためだけに存在しているgemがあるというお話を少し掘り下げています。 はじめに Rubyを使って開発していると、ふいにbundle installが使えず、慌ててgem install bundleと打ってしまうってことありませんか? (ちなみに、最近のR…
TL;DR TimeオブジェクトがMarshalizeできない時があるのはバグだったらしい。 こちらのPRで解消されていたので、挙動が変わった。 https://github.com/ruby/ruby/commit/e690df1f1ef4f791295448f9192d6e027400ee72 はじめに Ruby2.7.0に変えたらMarshalize周…
TL;DR Ruby2.7.0のEnumerable#filter_mapとEnumerable#tallyはどちらも従来より速い上に、可読性も高く、積極的に取り入れていきたいメソッドだった。 はじめに Ruby2.7.0のリリースノートを読んで、Enumerable#filter_mapとEnumerable#tallyの2つのメソッド…
TL;DR Too long with no outputのエラーでbuildに失敗している場合は、--no-pagerオプションを付けて実行する。 もしくはCI=trueの環境変数をdocker containerにも渡す。 はじめに あるプロダクトでbrakemanを導入していて、CI上でも問題なく実行されていま…
TL;DR docker cp `docker create ${IMAGE_NAME}`:/path/to/src /path/to/dist コンテナは各自削除。 はじめに dockerのcontainerからファイルをコピーするのはdocker cpでできますが、一発でimageからコピーする方法はなさそうです。 調べてもまどろっこしい…
TL;DR puppeteer.jsをRubyでラップしたのを使って、htmlからpdfを生成するのが使いやすかった。 こちらのサイトも参考になる。 はじめに 以前、Ruby on Railsでpdfを生成して出力するときのバットプラクティスまとめという記事を書きました。 その後も様々な…
はじめに JSとRailsのデータの受け渡しの際に、Rubyは基本的に変数をsnake_caseで書くのに対し、JSではcamel_caseで書くことが多いと思います。 何らかの形で変換するか、どちらかのコードで混在してしまうことを妥協しないといけません。 今回は、Ruby側で…
TL;DR pbpaste | ruby -e "print \"https://www.amazon.co.jp/dp/#{gets.match(/dp\/(\w+)($|\/)/)[1]}\"" | pbcopy クリップボードにAmazonの商品リンクのURLをコピーし、このワンライナーを流すと、クリップボードに不要な部分が除去されたURLがコピーされ…
はじめに picoCTF 2019に2人チームで参加して、20151点で15929チーム中274位でした! 久しぶりにしては、かなり頑張れたと思います。難易度が自分に合っていて、とても楽しかったです。 せっかくの機会なので、復習がてら自分の解いた問題を全て解説します!…
TL;DR renderのlayout: nilとlayout: falseは違う。ここのコード内コメントがわかりやすい。 ざっくりまとめると、layoutを表示したくなかったらfalseにすべきで、nilは少し癖はあるが使い方によっては便利らしい、ということだった。 layout: nilとするとni…
TL;DR Basic認証とBearer Tokenは、同じAuthorizationリクエストヘッダを使うため、(少なくとも単純な実装では)同時には使うことができない。 ハマったこと internal API通信にBearer Tokenを用いているWebアプリケーションにおいて、staging環境にBasic認証…
この記事は、AtCoder青色(highest)で、非情報系理系大卒、新卒1年目のWebエンジニアの私見です。 結論 そこそこ役に立ちます。 はじめに 先日、以下のようなツイートをしたところ反響が大きかったので、もう少し詳細に書いてみます。 今日は会社で、O(NM)の…
はじめに RailsでAWSのSESを使うときに、雑に調べるとaws-sesを用いた例が多く、それを使っていたのですが、よく調べてみるとaws-sdk-railsという公式のgemがあり、最近のメンテ具合からもaws-sdk-railsに乗り換えたいと思いました。 (公式のgemがあるならば…
追記 Johnsonのアルゴリズムというものがあり、負の重みの辺が存在する場合にも、ダイクストラ法を用いて全点対間最短路問題が解けるそうです。 その場合の計算量解析も、この記事と同じようにできそうです。 この記事の負の辺についての記述は、頑張れば回…