Basicinc Enjoy Hacking!

https://tech.basicinc.jp/

Basicinc エンジニアブログ

フィード

記事のアイキャッチ画像
誰もがはまる Rails ActiveRecord コールバックの罠
Basicinc Enjoy Hacking!
こんにちは Rails と Ruby が好きな @zaru です。今回は Rails の代表的な機能の一つ ActiveRecord コールバックの罠について記事を書きます。誰もが…というより僕自身がはまった罠を中心に紹介します。この記事を読むことで ActiveRecor...
2年前
記事のアイキャッチ画像
今時の CSRF 対策ってなにをすればいいの?
Basicinc Enjoy Hacking!
こんにちは @zaru です。今回は昔からある CSRF (クロスサイト・リクエスト・フォージェリ) の今時の対策についてまとめてみました。もし、記事中に間違いがあれば @zaru まで DM もしくはメンションをください (セキュリティの細かい部分についての理解が乏しい…...
2年前
記事のアイキャッチ画像
Rails7 + Webpacker を AWS Elastic Beanstalk にデプロイする
Basicinc Enjoy Hacking!
Rails7 からは Webpacker の標準サポートが外されました。これにより 7 以前から Webpacker を使って動かしているアプリを Rails7 にアップグレードすると、そのままでは AWS Elastic Beanstalk にデプロイすることができません...
2年前
記事のアイキャッチ画像
GitHub Actions でコードレビュー依頼ラベルが付いたら Slack に通知するようにした
Basicinc Enjoy Hacking!
タイトルそのまんまで、GitHub Actions でコードレビュー依頼ラベルが付いたら Slack に通知するようにしました。僕の所属する開発チームでは、GitHub でプルリクを作りコードレビューを依頼する際に、ラベルで「レビュー待ち」というものを付けて、Slack で...
2年前
記事のアイキャッチ画像
GitHub Actions で Rails のテストを実行する
Basicinc Enjoy Hacking!
この手の記事が世界の至る所で書かれている気がしますが、シークレットキーを渡す方法を含めて最新の GitHub Actions 情報に対応したものを見つけることができなかったので書きます。 やりたいこと Rspec や Rubocop を GitHub Actions で動か...
2年前
記事のアイキャッチ画像
Rust Web アプリを気軽にデプロイするには render が良い
Basicinc Enjoy Hacking!
最近 Rust をさわり始めてる @zaru です。Rust で雑に Web アプリを作ったものを雑にデプロイしたいな〜と思って調べたところ、render が手頃で良さそうだったので紹介します。 デプロイは GitHub に push するだけ Dockerfile や設定...
3年前
記事のアイキャッチ画像
Elasticsearch でユニークな配列を作る
Basicinc Enjoy Hacking!
Elasticsearch でユニークな配列データが欲しいと思ったことはありませんか? 僕はめちゃくちゃあります。どうやって実現するか色々悩んで右往左往したので記事にして残します。もし、もっと良い方法を知っているよという方がいれば @zaru まで教えてください。ありがとう...
3年前
記事のアイキャッチ画像
Rails で has_many(one) な親要素から作成・削除されたか、子要素自身が作成・削除されたかを判断する
Basicinc Enjoy Hacking!
ややこしいタイトルだけど、Ruby on Rails のモデルコールバックで迷った箇所があったのでメモ。 A has_many(has_one) B な関係で、B モデルの callback 実行を以下のパターンで制御したい。 親要素の A モデルと一緒に B モデルのデー...
3年前
記事のアイキャッチ画像
Elasticsearch のページング処理を enum_for を使って find_each 風に扱いやすくする
Basicinc Enjoy Hacking!
Elasticsearch を最近メインで使うようになり強力なデータストアだなぁと実感する日々ですが、大量のドキュメントを検索し、ページング処理をしたい時に、ちょっと面倒くさいなと思ったので、ActiveRecord の find_each メソッドのような使い勝手を en...
3年前
記事のアイキャッチ画像
AWS Elastic Beanstalk で特定の環境だけ実行する .ebextensions
Basicinc Enjoy Hacking!
AWS Elastic Beanstalk で1つのアプリケーションを元に複数の環境を作ることができて非常に便利です(WebApp と Worker など)。ただし、複数の環境を同じアプリケーションで動かすと .ebextensions が同一になり、そのままだとそれぞれ実...
3年前
記事のアイキャッチ画像
Stimulus の controller はページ単位ではなく役割単位で分割した方が良さそう
Basicinc Enjoy Hacking!
Hotwire を Rails に導入した過程で Stimulus をさわり始めたのですが、Stimulus controller の作り方がなんとなく分かってきたので、考えたことをメモしておきます。 結論から言うとタイトル通りで Stimulus controller は...
3年前
記事のアイキャッチ画像
Rails6 で AWS ELB のヘルスチェックパスは Host チェックしないようにする
Basicinc Enjoy Hacking!
Rails6 にはあらかじめ指定したホスト名のアクセスでないと受け付けないようになりました。これ自体はセキュリティ対策として良いのですが、AWS ELB を使うとヘルスチェックが通らなくなります。理由は ELB のヘルスチェックリクエストの Host が IP アドレスにな...
3年前
記事のアイキャッチ画像
Heroku US リージョンは遅いが Fastly を入れるとキャッシュしなくても少し速くなる
Basicinc Enjoy Hacking!
タイトル通りですが、Heroku US リージョンを Tokyo からアクセスすると物理的に遠いため遅いです。要件によってはギリギリ耐えられるくらいの遅さですが、少しでも速くしたいのであれば Fastly など CDN を前に置くことで少しだけ速くなります。しかもキャッシュ...
3年前
記事のアイキャッチ画像
Turbo Frame の切り替え時に URL も固有のものに変更する
Basicinc Enjoy Hacking!
例えば Hotwire の Turbo Frame を使って検索機能を作る場合、検索結果に検索パラメータを付与した固有の URL にしたくなります。通常だと Turbo Frame の切り替え時には URL は変化しません。標準でサポートする Proposal も出ています...
3年前
記事のアイキャッチ画像
Turbo Frame の表示切り替えを検知する
Basicinc Enjoy Hacking!
2021/04/21 追記 Turbo Frame のリファレンスをよく見たら load イベント時のコールバックを設定できました。 export default class extends Controller { static targets = [ 'frame' ]...
3年前
記事のアイキャッチ画像
AWS で IPv6 対応環境 ( ALB + EC2 ) を作って接続テストをする設定
Basicinc Enjoy Hacking!
IPv6 は今どれくらい普及しているんだろうか?と思って Google のレポートで調べてみたところ、2020-07-18 時点で日本は 34.45% でした。Google のサービスへアクセスしているログから集計しているということだったので、仕事や家庭含めてリアルな普及率...
4年前
記事のアイキャッチ画像
AWS CDK で TypeScript Lambda をいい感じに管理するサンプルコード集
Basicinc Enjoy Hacking!
弊社で AWS CDK を使って TypeScript Lambda 管理の運用が始まりました。運用に乗せるまでに試行錯誤して作った Lambda 管理サンプルコードをまとめておきます。 とりあえず TypeScript な Lambda Lambda 自体を TypeSc...
4年前
記事のアイキャッチ画像
MongoDB Stitch の Triggers / Functions で気軽に始めるサーバレス生活
Basicinc Enjoy Hacking!
弊社ベーシックが開発・運用している ferret One と言うサービスではメインのデータベースに MongoDB を採用しています。昔は AWS の EC2 インスタンスで自前ホスティングをしていましたが、AWS RDS のようにマネージドサービスに移行をしたかったので、...
4年前
記事のアイキャッチ画像
MFA の認証クライアントを作りたいので仕様を調べた
Basicinc Enjoy Hacking!
昨今、設定を求められることが多くなってきた MFA(多要素認証)です QRコードを読み取っただけで登録できてお手軽ですよね そんな認証ですが、どういう仕組みなのか知りたかったので調べてみました 多要素認証の仕組み QRコードを読んで登録したら、30秒ごとに更新される 6桁の...
4年前
記事のアイキャッチ画像
ドラッグ&ドロップで、PC ローカルから or HTML 内部からのドロップなのかを判定する
Basicinc Enjoy Hacking!
HTML ドラッグ & ドロップ API を使うことで、ファイルのアップロードやリストの並び替えなどが可能になります。今回はドラッグ & ドロップのファイルアップローダーを作る際に、PC ローカルからドラッグされているのか、HTML ページ内部の要素をドラッグしているのかを...
4年前
記事のアイキャッチ画像
背景を透過する Web カメラをデスクトップ最前面に出す mac アプリを作った
Basicinc Enjoy Hacking!
オンラインミーティングや勉強会が盛んになってきた昨今、自分が映っているカメラ映像の背景を透過させて、他のアプリケーションと良い感じに一緒に配信したいな〜と思ったので mewcam ( ミュウカム ) という mac アプリを作ってみました。 こんな感じです。 良いですね(表...
4年前
記事のアイキャッチ画像
ページ遷移や離脱時に漏れなく解析データの送信をするための Beacon API
Basicinc Enjoy Hacking!
今回はページ遷移や離脱時であっても、漏れなくデータをサーバに送信するための Beacon API の紹介をします。弊社の ferret One というプロダクトでは Google Analytics のようなアクセス解析機能を提供しているため、なるべく漏れなく解析データを受...
4年前
記事のアイキャッチ画像
Rails で Redis サーバが落ちた時、慌てないようにする
Basicinc Enjoy Hacking!
Redis が好きで使いたい人、Redis が要件上必要な人(僕)向けに Rails で Redis とうまく付き合っていく上で抑えておくポイントを書いてみました。Redis サーバそのものをうまく扱う方法はこの記事では紹介しません。あくまで Rails で利用する部分に留...
4年前
記事のアイキャッチ画像
ディスプレイが大きくてアプリのメニューに手が届かない人のための mac アプリ menuffy を作った
Basicinc Enjoy Hacking!
menuffy という mac アプリを作ったので紹介します。 menuffy モチベーション 僕は LG が作っている 37 インチの 34WK95U-W というワイドディスプレイを使っています。大きいです。特に横に大きいです。すごく広くていい感じのディスプレイなんですが...
4年前
記事のアイキャッチ画像
「TypeScript 型入門の入門」を社内 LT した
Basicinc Enjoy Hacking!
この記事は、ベーシック社内で毎月開催している TGIF という LT 大会で発表した内容です。前回に続き今回もオンライン Zoom での開催になりました。オンラインでやる LT はいつもと違って新鮮ですね。個人的にはチャットでみんなの反応が見られるので話しやすかったです。 ...
4年前
記事のアイキャッチ画像
リクエストを curl としてログに残す gem recurl を作った
Basicinc Enjoy Hacking!
Rails あるいは Sinatra など向けの rack middleware gem を作りました。Web アプリケーションへのアクセスを curl コマンドとしてログに残すという機能です。 なんで作ったのか 作った人が退職している&ドキュメントがない&開発環境の構築が...
4年前
記事のアイキャッチ画像
Capybara でホスト名を動的に書き換えてテストをしたい場合
Basicinc Enjoy Hacking!
Capybara + Rspec でホスト名を動的に書き換えながらテストをしていきたい場合、どのようにするかのメモ。 /etc/hosts を修正するわけにもいかないし…と路頭に迷っていたらインフラに強いメンバー 306 がアドバイスくれました。ありがとう。 ホスト名の最後...
4年前
記事のアイキャッチ画像
GuardDuty で Trojan:EC2/BlackholeTraffic!DNS 警告が出た場合の対処
Basicinc Enjoy Hacking!
Trojan:EC2/BlackholeTraffic!DNS is 何 この警告は何かというと公式情報によるとブラックホール IP アドレスにリダイレクトされるドメイン名へのクエリを実行している…ということです。ブラックホール IP アドレスって何?って感じですが、これは...
4年前
記事のアイキャッチ画像
リアルタイムにドット絵風に変換するカメラ Web アプリを Go WebAssembly で作った
Basicinc Enjoy Hacking!
ドット絵が好きなので、あらゆるものをドット絵っぽくしたいな〜と思ったので、カメラの映像をリアルタイムにドット絵風に変換する Web アプリを作りました。これで Zoom などのウェブ会議もドット絵エフェクトで参加できますね。 デモ: https://pixelated-vi...
4年前
記事のアイキャッチ画像
Go の WebAssembly で requestAnimationFrame を使う
Basicinc Enjoy Hacking!
Go で WebAssembly 作るときに JavaScript の requestAnimationFrame を使う方法をメモしておきます。 wasm を呼び出す JavaScript 側は通常どおり。 const go = new Go(); WebAssembly...
4年前
記事のアイキャッチ画像
QR コードを連続で読み取れる Web アプリを作った
Basicinc Enjoy Hacking!
QR コードが好きな気がする zaru です。今回は暇だったので QR コードを連続で読み取れたら良いな〜と思ったので、QR コードを連続で読み取れる Web アプリを作りました。たぶん QR コードを読み取る仕事をしている人や、趣味の人には役に立つと思います。 DEMO ...
4年前
記事のアイキャッチ画像
AWS SQS ベースで ECS タスクをオートスケーリングする
Basicinc Enjoy Hacking!
AWS SQS をキューサービスとして利用し、ワーカー処理は AWS ECS のコンテナで実行する際に、SQS のキューの数に応じてオートスケーリングさせたい場合の設定方法メモです。つまり、キューがいっぱい積まれたら ECS のタスクを増やすし、減って来たらタスクを終了させ...
4年前
記事のアイキャッチ画像
AWS WAF ルールでブロックする前にヒットする条件ログを S3 に保存して調査する
Basicinc Enjoy Hacking!
AWS WAF 便利ですね。最近は AWS Managed Rules が導入されて簡単に WAF ルールを適用することができるようになりました。ただ、独自でルールを作るのに比較してブラックボックス化されやすいため本番環境に導入する前に、どういったリクエストがルールにヒット...
4年前
記事のアイキャッチ画像
micro:bit と Chrome を bluetooth で接続して加速度センサーで遊ぶ
Basicinc Enjoy Hacking!
micro:bit を買いました。2000〜3000円程度で手に入るマイコンです。今流行りの STEM 教育とかに使われているようで、簡単に各種センサーを使ったプログラミングができます。ハンダとか出てこないので小学生低学年でも十分遊べると思います。 娘 (age:5) がプ...
4年前
記事のアイキャッチ画像
S3 の非公開ファイルを nginx X-Accel-Redirect と Rails の認証セッションを使って限定公開する
Basicinc Enjoy Hacking!
Rails でファイルを返さず nginx で返す X-Accel-Redirect の設定と解説の記事で、ファイルをアプリケーションサーバで返さずに nginx などの Web サーバで返す方法を紹介しました。そこではファイルの場所はサーバ内のストレージでしたが、今回の記...
4年前
記事のアイキャッチ画像
Rails でファイルを返さず nginx で返す X-Accel-Redirect の設定と解説
Basicinc Enjoy Hacking!
何らかの画像や PDF / CSV ファイルなど Rails で生成したファイルを、そのまま Rails のプロセスで UserAgent に返すのではなく nginx などの Web サーバで返す仕組みがあります。nginx だと X-Accel-Redirect、lig...
4年前