ンンンパ

ふとしです

移転しました

IntelliJ IDEA の右クリックから Atom でファイルを開けるようにする (ついでに Thunar からも)

IntelliJ IDEA File > Setting > Appearance & Behavior > Menus and Toolbars に各ポップアップメニューの項目があるので、そこの任意の位置に External tools に登録 (後述) しておいた Atom を配置します。 External tools に登録 File > Setting > Tools…

Terminator (ターミナル拡張) のタイトル部を、ウィンドウごとに任意のものに変更する (bash)

ターミナルを立ち上げまくっていると上のようなことになってどれがどれだかわからず大変につらい。 このタイトルはプロンプトの変更と同じく PS1 に食わすことで変更できます。プロンプトを生かしたままで変更しなければならないので ~/.bashrc などに関数を…

Amazon Linux で普通に yum install した Nginx の auth_request_module を有効にしたい

現在の設定をそのままにコンパイルし直すという手を使いました。 nginx -V で現在の configure を得る 1 で得た configure に --with-http_auth_request_module を加える Nginx 同バージョンのソースを得る ./configure が通るまで足りないライブラリを追加…

Nginx で print デバッグ

そもそもきちんとログに出してログを見ろという話ですが、 return を使えばどの変数になにが入っているかを簡易に確認できます。 server { listen 9998; location = /check-header { add_header Content-Type text/plain; # ステータスコードとボディ文字列 …

特に夏だからというわけではないが体重を 10 kg 減らしたのでグラフ

減りました。 2017/3/27 開始の本日までのグラフです。(記録がとんでる部分があるので日数は一致しない) test なぜ? 2017/3/27 に行った人間ドックの最後の説明で空腹時血糖値が境界を超えてアウトだったので「ヤバいマジ糖尿」という雰囲気のことを言われ…

Rails の ActiveRecord での lock! の細かい話

前プロジェクトでログを眺めていて気づきました。仕組みを考えれば確かにという感じだった。 class User < ApplicationRecord after_initialize -> { logger.info('Instantiate!') } end User.find(1).lock! # User Load (0.2ms) SELECT `users`.* FROM `use…

騒がしい社内で心穏やかに仕事するためのセット

みなさん、静かな環境で心穏やかにお仕事されていますでしょうか? わたくし、前職は非常におしゃべり好きな人間がおおい職場で、さまざまな会話音声により集中力をそがれておりました。他人のくだらない音声ほど集中力をそぐものはないと思います。 そんな…

3.11

あの震災から時間が経つうちに、身の回りで人間結構死んだな〜みたいな感慨があった。 (先週ぐらいに震災と人間が紐づく品が出てきたのだった)

Ruby on Rails + webpack-dev-server で Development.

Rails で JavaScript が必要なプライベートプロジェクトでは、ながらく Npm + Watchify + Gulp + Rails を手動起動などしながらすすめていましたが、最近、意を決して Yarn + Webpack + Rails に変更しました。そこで、Rails と JavaScript の接合点も Rails…

今年の洗濯回数は 8 回でした。

一人暮らしももう 20 年に近くなりますが、洗濯機が家にあったことがありません。家に洗濯機がないので、コインランドリーを利用しています。利用料金は洗濯に 1,200 円、乾燥機に 700 円ほどです。 15kgの洗濯物も22kg対応の横ドラムで一発よ— おふくろさま…

top コマンドで得られる結果をどう見ていけばいいのかわからないので、とりあえず視覚化した

もともと一つの処理であるとか、一つのメソッドであるとかの処理時間には興味があって、測定などをしていました。ActiveRecord を使うにあたって発行クエリを抑えることにより、本当に早くなるのか確かめたりするのがすきです。 全体的なパフォーマンスを測…

Go 言語でつくったもののメモリとかをなんとなく見れるようにする

pprof を用いた詳細な情報を得る方法はさんざん紹介されており、しかしその詳細の情報のどこを見ればいいのかわからないので、とにかく簡単に見れるような施策を打ってみました。 これは社の Slack で動いてるボットの一つの強制停止画面ですが、ボットは継…

Go 言語で struct を url.Values に展開した

現在勉強用に作っているボットでは、Slack の API を使います。勉強用なので、ライブラリを使わず、独自に実装しています。API ではエンドポイント毎にさまざまな要求パラメーターがあって、その引数を自由な形式にすると間違いのもとになるので、専用の str…

Go 言語でつくったボットを GitHub -> CircleCI -> Bluemix と自動デプロイできるようにした

Golang でのボット作成では、1 個目は自 PC で動かすことしか考えていませんでしたが、2 個目はきちんとどこかにデプロイすることを目標に作成していましたので、ついでに自動でやれるようにしました。 Heroku では 24 時間稼働のボット用途には不向きだと思…

Slack で動いてるボットの処理が長い場合、フィードバックとしてインジケーターを出すということをやった

いま golang の練習用に作成しているボットには、URL をわたすと、そのサイトのキャプチャを撮影する機能があります。諸事情からボットのいるマシンとは別の場所、Heroku に設置していますが、起動が遅かったり、キャプチャ自体が遅かったりするので、ちゃん…

Ruby 外から Web アクセスする何か (Capybara とか、cli とか) を RSpec でテストするときのアクセス先をモックする

mmmpa.mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmpa.net のテストをこの方法で行いました。 本編 たとえば、Capybara は各種ブラウザを介するアクセスのため、webmock が効かず、別の gem が必要なのは有名です。 https://github.com/o…

siege をラップして多少細かい情報をまとめる gem 書いた。

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…

Capybara で Chromedriver をつかってモバイルモードでテストする時の Capybara.register_driver とか

だいたいのサイトは User Agent で切り替えてると思うので、わざわざモバイルモードでテストが必要なのかしらとか思わないでもない (ダブルタップとか、スワイプをテストする?)、が一応メモ。 Capybara に Driver として登録 # chromedriver configuration …

RSpec とか Capybara の Example 内で使いたいメソッドをクラス単位でまとめて使いやすくする gem を書いた。

これ github.com 先週の gem は 80 行ぐらいだったんですが、今回は 40 行です。 なぜ 入社してからこっち、ずっと Vue.js で SPA 制作という業務に従事していましたが、UI 系の宿命で (一部しか) テストがない。 そんななかで、わりと分岐の多い (難しくは…

最近 SQL にはまっているので、ついでに Rails というか ActiveRecord で発行された SQL query をカウントする gem を書いた。

Installation gem 'a_r_q_logger' github.com せつめい ActiveRecord::Base サブクラスのインスタンス生成をできるだけ抑えれば、それだけ処理時間が抑えられるのは自明とされています。 そこで、今は、できるだけ少ない queries に抑えることを目的として S…

npm run scripts で current directory を参照したい。

環境変数を使います。 $PWD ではダメ npm run foo は常に基準となるディレクトリで実行されるので、たとえば以下の npm run here は、配下のディレクトリに潜っても同じ結果を返します。 "scripts": { "here": "echo $PWD" } これは current directory を考…

就職できました。

ところで先日カピバラ神に詣でた時の写真です。これもうあれでしょ、完全に俺のための俺視線。 pic.twitter.com/kDkHs39mlH— おふくろさま (@o296sm) May 18, 2016 前いったときおもくそケツむけてお食事中だったけど時期が悪かったんや。いまこそ就職活動を…

Capybaraのウェイト時間で足りない場合、さらに待たせる。

Capybaraはfindなどの要素検索メソッドで、見つかるまである程度の時間待ってくれます。 時間が足りない場合は Capybara.default_max_wait_time = 30 などとすることで時間を増やせます。 all('hoge')[0].clickだとおなじみのundefined method `click' for n…

Access-Control-Allow-Originが設定されてないWeb APIを叩くために中継サーバー書いた。

大げさなタイトルみがありますがただのRailsです。 github.com うすうす実装なのでさがせばあるんでしょうけど、人が書いたもの使いたくない場合ってあるじゃないですか。 起動 $ TARGET=http://you-want-to-ajax.server.com ALLOW=http://your-local-js.ser…

vue-routerのroutesを全部出すやつ

だいたい見れる。 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) {…

ActiveAdmin辺りでCircular dependency detected while autoloading constant Fooが出る場合の措置。

Rails 4.2.7、ActiveAdmin 1.0.0.pre4で発生しました。 普通にやってる分には出ないんですけど、下の記事みたいに外からRails.application.require_environment!すると、models関連でCircular dependency detected while autoloading constant Fooが出ます。…

ベーシック認証が必要なサイトにアクセスするテストで、ダイアログをシカトするためにNginxでProxyする。

Phantomjsじゃ動いてくれないJavaScriptライブラリがありまして(よくある)、Selenium + Firefoxでスクリーンショットおじさんになっています。 nginx.conf 実際はRubyではないのでこのようなコードではないんですけど、概念的にこんな感じです。 server { li…

Rails開発でリポジトリには入れたくないんだけどローカルではやっておきたいテストがある場合の取りあつかい

自明だったり、すごく重かったり、細かすぎるテストたちがいます。 重いテストは短期的にも長期的にもコストになり、細かすぎるテストは実装変更時のコストが必要以上に高く、よくありません。 しかし、たまにやっときたいんですよというテストがありますの…

Authlogicに関するメモ

認証機能再発明するべからずは有名な鉄則ですが、まるで知らないままというのもマズイので実装を読むことでお茶を濁していきたい。 saltやSCryptの運用、persistence_tokenの更新などで比較的安全にいけるのでは。 パスワード salt Authlogic::Random.friend…

AWS Lambdaで使う関数をローカルでテストするサーバーを建てる。

AWS Lambda + AWS Api Gateway + AWS DynamoDBでなにかをつくることにはまっています。 AWS Lambdaで使う関数自体はmochaなどでテストできますが、実際にブラウザから叩くテストをローカルでしたいと思いました。 そこでNode.jsで簡単なサーバーを建てます。…