モンモンブログ

技術的な話など

rake task で bullet を使って N+1 問題を検出

N+1 問題を検出する bullet は、rake タスクではそのままでは動作しないです。 各 rake タスクの最初と最後に Bullet を開始・終了する記述を追加する必要があります。こんな風に。 $ vi lib/tasks/hoge.rake namespace :hoge do task :hoge => :environment…

【シェルスクリプト】Ctrl-C で実行中のジョブを突然殺すことなく、ジョブの終了をちゃんと待ちたい

動画のエンコードのような「時間のかかる処理」をループ内で繰り返し実行するようなシェルスクリプトを書いた場合、 Ctrl-C でいきなり終了するのではなく、現在実行中の「時間のかかる処理」が終わってから終了するようにしたい、て場合があるかと思います…

Electron でファイルパスから File オブジェクトを作る

Electron でローカルの動画をアップロードするために File 型に変換する必要があったので調べました。 const filePath = 'path/to/file.mp4'; const blob = fs.readFileSync(filePath); const file = new File([blob], filePath, { type: 'video/mp4' });

Appium でスマホアプリを実機テストしてたらスマホのキーボードが使えなくなった

モバイルアプリの E2E テストフレームワークの Appium (https://appium.io/) で実機テストしてたら、キーボードが使えなくなるという問題にぶち当たりました。 スマホを再起動しても直りません。 再現条件までは調べられてないですが、同じ問題に遭遇した人…

Rails でリクエストパラメータに Shift_JIS 文字列が渡されるとエラるので nkf で強制変換するモンキーパッチあてて回避

SendGrid 宛に届いたメールを Rails の Mailbox で受け取って、開発チームの Slack へ通知するようにしてるのですが、 メールの文字コードが Shift_JIS だった場合に ActionController::BadRequest エラーが発生してしまう問題に悩まされていました。エラー…

React Native の Android 版ですべての画像が表示されない問題

画像をいっぱい表示するような(つまりごく一般的な)画面で、一部の画像しか表示されない問題が発生していました。 グレーの部分が画像が表示できてないところ こんな感じにランダムに歯抜けになっちゃいます。歯抜けの仕方はリロードするたびに変わります…

Nuxt.js + Netlifyで404 Not Foundをトップページにリダイレクト

動作環境 $ node -v v13.2.0 $ npx nuxt -v @nuxt/cli v2.10.2 Nuxt.js で 404 をトップページにリダイレクト Nuxt.js 製のサイトで存在しないページへアクセスすると、デフォルトでは画像のような 404 Not Found ページが表示されます。 Nuxt.js のデフォル…

macOS に capybara-webkit をインストールする

Catalina に capybara-webkit をインストールしようとして手間取りました。 こちらを参考に解決しました。 Installing Qt and compiling capybara webkit · thoughtbot/capybara-webkit Wiki capybara-webkit のビルドに必要な QtWebKit が Qt 5.6 で削除さ…

テックレジデンスはいいぞ

いい… いいぞ… (これは TechResidence Advent Calendar 2019 の24日目の記事です) adventar.org

某レジデンスが全然テックじゃなかった件

これはギークハウス界隈 Advent Calendar 2019の11日目の記事です。Webエンジニアのモンモンといいます。よろしくお願いいたします。 ギークハウスには(ときさば系ばかり)3件連続で住んでいたのですが、今年の初旬ごろちょっとした気まぐれでギークハウス…

Nuxt JS に Bootstrap 4 / Bootstrap Native を導入

バージョンこんな感じ $ node -v v12.8.0 $ npx nuxt -v @nuxt/cli v2.9.1 パッケージをインストール yarn add node-sass sass-loader bootstrap bootstrap.native bootstrap.native-loader Bootstrap の css をロードする設定を assets/sass/common.sass に…

技術同人誌「ネットワークスクランブル TCP編」がめっちゃ分かりやすい

先日の第2回 技術書同人誌博覧会で購入した ネットワークスクランブル TCP編 を読了。 booth.pm 本の発売自体は今年の 5/24 で、ちょっと前だったみたい。 woshidan.hatenablog.com 98ページと手頃な厚さで読みやすく、それでいて TCP について一歩深く掘り…

2019/07/21 gRPC と Golang でブロックチェーンもどきを作って遊んだ

こちらのイベントに参加。 webbench.connpass.com 参加者は主催者含め4人。カフェの一角でもくもく作業していた。もくもく会なので何やっても自由だけど、用意されていた作業内容としては以下のブログ記事の通りにブロックチェーン(もどき)を実装してみよ…

Nuxt.js に Materialize を導入&カスタマイズ

Nuxt.js ではプロジェクト作成時に Bootstrap などの CSS フレームワークを選択すると簡単に導入できて便利ですが、選択肢にない CSS フレームワークを使おうとするとちょっと手間です。マテリアルデザインの CSS フレームワーク Materialize を使いたかった…

技術書典6に一般参加してきました

技術書典6に一般参加してきました! 今回から11時~13時の入場は有料(1000円)となったにもかかわらず凄まじい行列でした。 僕は友人たちと、朝10時のチケット販売開始時刻の頃(入場開始の1時間前)に着くように行ったのにすでに長蛇の列。建物の外の、陸…

「セキュリティコンテストチャレンジブック」はクラッキングの基本を広く&結構深く学べる良本

セキュリティコンテストチャレンジブック CTFで学ぼう!情報を守るための戦い方 を読みました。 セキュリティコンテストチャレンジブック -CTFで学ぼう! 情報を守るための戦い方-作者: 碓井利宣,竹迫良範,廣田一貴,保要隆明,前田優人,美濃圭佑,三村聡志,八木…

「フリーランスエンジニアでプロジェクトを進めることについて考える会」イベント参加メモ

フリーランスエンジニアでプロジェクトを進めることについて考える会 - connpass こちらのイベントに参加しました。会場は日本橋のサイボウズさんのところ。 15分くらい遅刻しちゃったので最初の安藤さんの発表は途中からになります…m(_ _)m フリーランサー…

CentOS で man が見れない場合は man-pages パッケージを再インストール

環境こんな感じ。vagrant の centos/7 です。 % uname -a Linux localhost.localdomain 3.10.0-693.11.6.el7.x86_64 #1 SMP Thu Jan 4 01:06:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux % cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) C…

ギークハウス四ツ谷について

この記事は ギークハウス新宿界隈 Advent Calendar 2017 の5日目の記事です。 前日の徳谷さんからバトンタッチ。 モンモンといいます。Webエンジニアです。ギークハウス四ツ谷に住んでます。 ギークハウス四ツ谷についてちゃんと紹介した記事がなかったよう…

「ActionDispatch::Static がないよ」エラーは rails_12factor gem 入れて解決

環境 % sw_vers ProductName: Mac OS X ProductVersion: 10.12.6 BuildVersion: 16G29 % ruby --version ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16] % bundle exec rails --version Rails 5.1.4 本題 production 環境で rails console …

Rails5 の or クエリがバグを誘発しそうで超怖い

Rails5 になって ActiveRecord に or クエリが導入されました。早速、既存のコードを書き換えようとしたんですが、かなり慎重に使わないと結合順序のワナに嵌ってバグりそうで怖いです。 このような(間の抜けた)コードがあったとします。 Country. where(i…

DelayedJob による非同期処理の失敗を exception_notification でエラー通知させる

delayed_jobs による非同期処理時に、exception_notification によるエラー通知メール送信を行う - Qiita こちらの記事を参考に DelayedJob のエラー通知を実装していたんですが、 Rails5 で alias_method_chain が Deprecated になってしまったので Module.…

Rubyで2項演算子が単項演算子に化けて悪さする話

DateTime.now + 1.hour と DateTime.now +1.hour は異なる値を返します。 何を言ってるのかわからねーと思うがこの実行結果を見てくれ。こいつをどう思う? [10] pry(main)> DateTime.now + 1.hour Fri, 29 Jan 2016 11:38:52 +0900 # こっちだと 11:38 [11]…

ActionMailerのメール本文がログに出力されるのを抑制

メール本文がログに出力されるとログ容量を圧迫するので(あとウザいので)出力を抑制しました。 環境 $ ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin13] $ rails -v Rails 4.2.5 事象 メーラーでメールを送信すると、デフォルトでメー…

ActiveRecordのscope,validatorでの意図せぬキャッシュに要注意

クリティカルなバグの原因になりえます(なりました)。 環境 少々古いです。activerecord の最近のバージョンでは未確認です。 ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-darwin13.3.0] rails-3.2.11 activerecord-3.2.11 MacOSX Mavericks 現象…

Action Mailerのマルチパートメールでファイル形式の優先順位が変わっちゃう件

Action Mailer でマルチパートメールを送るようにしていて、かつ mail メソッドにブロックを渡す場合は注意が必要です。html 版、text 版の優先順位が意図せず変わってしまう場合があります。 環境 MacOSX Mavericks ruby 1.9.3p547 (2014-05-14 revision 45…

Rails + Grape 構成で Grape API ファイルを自動再読み込みさせるには

RESTful な API が楽ちんに書ける grape。 rails との組み合わせで使う場合も README に従うだけで簡単に出来ますが、なぜか自動再読み込み (auto reloading) されないって問題にぶち当たります。 development 環境だと model や controller への修正はブラ…

jQuery プラグインを bower のレジストリに登録してみた

表題の通り、jQuery プラグイン jquery.narrows を bower のレジストリに登録してみた時の記録です。 bower とは? Bower入門(基礎編) - from scratch Bower入門(応用編) - from scratch こちらが非常に分かりやすかったです。 基礎編の冒頭から(勝手に)引…

JSON 形式で設定ファイル書かせるの、やめてもらえません?

設定ファイルを JSON 形式で記述するライブラリやフレームワークって、 PHP のパッケージ管理システム composer の composer.json node のモジュール管理システム npm の package.json クライアントサイド JavaScript のパッケージ管理システム bower の bow…

jasmine + スクリーンショット作成サービスでWebアプリを複数ブラウザで一括動作確認!

この投稿は JavaScript - Client Side - Advent Calendar 2013 の13日目の参加記事です。 JavaScript のテスティングフレームワーク jasmine でテストを書いておくと、コードをいくらいじってもブラウザのリロード一発で動作確認できてそれだけでもステキで…