2016-01-01から1年間の記事一覧
Rails で JavaScript が必要なプライベートプロジェクトでは、ながらく Npm + Watchify + Gulp + Rails を手動起動などしながらすすめていましたが、最近、意を決して Yarn + Webpack + Rails に変更しました。そこで、Rails と JavaScript の接合点も Rails…
一人暮らしももう 20 年に近くなりますが、洗濯機が家にあったことがありません。家に洗濯機がないので、コインランドリーを利用しています。利用料金は洗濯に 1,200 円、乾燥機に 700 円ほどです。 15kgの洗濯物も22kg対応の横ドラムで一発よ— おふくろさま…
もともと一つの処理であるとか、一つのメソッドであるとかの処理時間には興味があって、測定などをしていました。ActiveRecord を使うにあたって発行クエリを抑えることにより、本当に早くなるのか確かめたりするのがすきです。 全体的なパフォーマンスを測…
pprof を用いた詳細な情報を得る方法はさんざん紹介されており、しかしその詳細の情報のどこを見ればいいのかわからないので、とにかく簡単に見れるような施策を打ってみました。 これは社の Slack で動いてるボットの一つの強制停止画面ですが、ボットは継…
現在勉強用に作っているボットでは、Slack の API を使います。勉強用なので、ライブラリを使わず、独自に実装しています。API ではエンドポイント毎にさまざまな要求パラメーターがあって、その引数を自由な形式にすると間違いのもとになるので、専用の str…
Golang でのボット作成では、1 個目は自 PC で動かすことしか考えていませんでしたが、2 個目はきちんとどこかにデプロイすることを目標に作成していましたので、ついでに自動でやれるようにしました。 Heroku では 24 時間稼働のボット用途には不向きだと思…
いま golang の練習用に作成しているボットには、URL をわたすと、そのサイトのキャプチャを撮影する機能があります。諸事情からボットのいるマシンとは別の場所、Heroku に設置していますが、起動が遅かったり、キャプチャ自体が遅かったりするので、ちゃん…
mmmpa.mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmpa.net のテストをこの方法で行いました。 本編 たとえば、Capybara は各種ブラウザを介するアクセスのため、webmock が効かず、別の gem が必要なのは有名です。 https://github.com/o…
github.com Usage たとえば Rails 内でこうやる。 re = SiegeSiege.run( time: 20, concurrent: 4, user_agent: false, urls: [ "http://localhost:3002#{students_path}", "http://localhost:3002#{students_path} POST name=abc", SiegeSiege::URL.new("ht…
だいたいのサイトは User Agent で切り替えてると思うので、わざわざモバイルモードでテストが必要なのかしらとか思わないでもない (ダブルタップとか、スワイプをテストする?)、が一応メモ。 Capybara に Driver として登録 # chromedriver configuration …
これ github.com 先週の gem は 80 行ぐらいだったんですが、今回は 40 行です。 なぜ 入社してからこっち、ずっと Vue.js で SPA 制作という業務に従事していましたが、UI 系の宿命で (一部しか) テストがない。 そんななかで、わりと分岐の多い (難しくは…
Installation gem 'a_r_q_logger' github.com せつめい ActiveRecord::Base サブクラスのインスタンス生成をできるだけ抑えれば、それだけ処理時間が抑えられるのは自明とされています。 そこで、今は、できるだけ少ない queries に抑えることを目的として S…
環境変数を使います。 $PWD ではダメ npm run foo は常に基準となるディレクトリで実行されるので、たとえば以下の npm run here は、配下のディレクトリに潜っても同じ結果を返します。 "scripts": { "here": "echo $PWD" } これは current directory を考…
ところで先日カピバラ神に詣でた時の写真です。これもうあれでしょ、完全に俺のための俺視線。 pic.twitter.com/kDkHs39mlH— おふくろさま (@o296sm) May 18, 2016 前いったときおもくそケツむけてお食事中だったけど時期が悪かったんや。いまこそ就職活動を…
Capybaraはfindなどの要素検索メソッドで、見つかるまである程度の時間待ってくれます。 時間が足りない場合は Capybara.default_max_wait_time = 30 などとすることで時間を増やせます。 all('hoge')[0].clickだとおなじみのundefined method `click' for n…
大げさなタイトルみがありますがただのRailsです。 github.com うすうす実装なのでさがせばあるんでしょうけど、人が書いたもの使いたくない場合ってあるじゃないですか。 起動 $ TARGET=http://you-want-to-ajax.server.com ALLOW=http://your-local-js.ser…
だいたい見れる。 log(dig(router)) function digState (state, path = []) { state.nextStates.forEach((nextState) => { if (nextState.handlers) { nextState.handlers.forEach((handler) => path.push(handler)) } if (nextState.charSpec.validChars) {…
Rails 4.2.7、ActiveAdmin 1.0.0.pre4で発生しました。 普通にやってる分には出ないんですけど、下の記事みたいに外からRails.application.require_environment!すると、models関連でCircular dependency detected while autoloading constant Fooが出ます。…
Phantomjsじゃ動いてくれないJavaScriptライブラリがありまして(よくある)、Selenium + Firefoxでスクリーンショットおじさんになっています。 nginx.conf 実際はRubyではないのでこのようなコードではないんですけど、概念的にこんな感じです。 server { li…
自明だったり、すごく重かったり、細かすぎるテストたちがいます。 重いテストは短期的にも長期的にもコストになり、細かすぎるテストは実装変更時のコストが必要以上に高く、よくありません。 しかし、たまにやっときたいんですよというテストがありますの…
認証機能再発明するべからずは有名な鉄則ですが、まるで知らないままというのもマズイので実装を読むことでお茶を濁していきたい。 saltやSCryptの運用、persistence_tokenの更新などで比較的安全にいけるのでは。 パスワード salt Authlogic::Random.friend…
AWS Lambda + AWS Api Gateway + AWS DynamoDBでなにかをつくることにはまっています。 AWS Lambdaで使う関数自体はmochaなどでテストできますが、実際にブラウザから叩くテストをローカルでしたいと思いました。 そこでNode.jsで簡単なサーバーを建てます。…
清く正しくとは、生SQL文字列を書かない程度の意味です。 下の方の長いやつはRails 4までの話です REGEXPはRails 5もしくはArel 7からmatches_regexpとしてメソッドが用意されました。 Writer.where(Writer.arel_table[:email].matches_regexp('.*@gmail.com…
日記です。今日の日記コードはこれ。 github.com qiitaにはさすがにもうAWS Lambdaでフォームなんていう記事は山盛りあったのでこっちで。 日記 Node.jsはサーバーとして動かせるので、ブラウザ側とサーバー側で同じスクリプトを用いることが可能です。(アイ…
リソースを再利用しようとしました。 そこでディレクトリに対してln -sで作成しますが、例えば同ディレクトリ内の何がしかへ張る場合、 $ ln -s development staging とする必要があり $ ln -s ./development staging これだと辿れなくなります。 セキュリテ…
ので、思いつく限りのSNSやブログに書いています。 ここにも書きます。 どれ 以下の記事のやつを作ってる時に「バグかしら?」と思ってモンキーパッチで回避してて、せっかくだからとpull requestを飛ばしてみたら忘れた頃にマージされたという話です。 qiit…
権限管理に興味があって、ちょろちょろ読んでいます。 qiita.com Spreeを読む前はDiscourseを読んでいました。Discourseでは権限管理にこれといったGemは用いず、独自の権限管理機能を実装しています。 Guardianというクラスです。 ただの感想みたいになった…
たっぷりとしたコードを含むRails Engineは上から読んでいくにはつらいものです。 いくつかのgemに分割されているSpreeのようなアプリケーションを読むにはインストールして起動しつつ、その上で読んでいくのが楽ですが、手がかりがないのはつらい。というこ…
いままで直近3台全部が通販で購入した自転車だった。 次は店頭でロードを買いたい。仕事がみつかったらね……。 Be.BIKE 16STREET 38,000円 楽天で見つけたミニベロで、アルミ製、サスあり。黒くてカッコ良かった。 届いてわーいと乗り出したところ、ブレーキ…
(具体的な方法や手順についての話はありません) 現在わたしはデスクトップ機でDebianを使用していますが、もともとWindowsユーザーでした。 なにしろ前職に転職したきっかけがFlashでしたし、前々職はホームページ屋さん勤務でしたから、開発はWindowsでや…