なんか書いていこうぜー .com

Let's write something good

Weekly-7th

2016-02-21
  • Share on Facebook
  • Tweet
  • Add to Pocket

2016年第7週目

Ruby

Rails が rake でなく、rails コマンドを使うようになるのは知っていたが、rails routes -g で routes の grep 機能が入っているのをコミットログで知った。 Rails 使っていて rakerails コマンドで一番使うコマンドなので、もうちょっとちゃんと見ておこうと思った。(テストは rspec コマンド使うので rake spec を使う機会が少ない)

会社で会話にもなったのだけど、gretel の更新が止まっている。以前パンくずリストを出す Gretel Gem が使いやすくて感動した というエントリを書いた者としてはちょっと寂しい感じがする。

JavaScript

Express を触り始めた。とりあえず、express-generator で出力されるコードを babel を使って ES2015 ぽい記法に書き直している。

Express.js Blueprints の例が mondodb なのがちょっと嫌で、PostgreSQL あたりでできないかと思い調べて sequelizer というのがあることを知ってドキュメントを読み、PostgreSQL 使おうとして Docker を調べるということをフロントエンドかけこみ寺#3 にリモート参加してやっていた。

sequelizer は Ruby on Rails の ActiveRecord でできることをJavaScript にもってきた感じ。migration も書けるので馴染めそうな気がした。

重い腰を上げてようやく Docker を使い始めた感じ。まだ全然わかってないけど。

Electron のほうもちょっと進めないとなぁ…

英語

ほぼおやすみ。Express の動画(1時間くらい) のを英語で聴いたくらい。

運動

暖かくなってきたので、ちょっと走り始めた。いつもとコースを変えて、ゆっくりめに走ってとりあえず汗をかいた。久しぶりだったので、翌日に反動がきたのはお約束。

Weekly-6th

2016-02-14
  • Share on Facebook
  • Tweet
  • Add to Pocket

2016年第6週目

今週も続いている。

Ruby

各種ライブラリの commit log 読んだり、Rails 5 の変更点を読んだり。

JavaScript

第2回フロントエンドかけこみ寺@もくもく会 に参加して、自己紹介LT をした。

単体テストが流れない(トランスパイルが通らない) ので、e2eテストだけに逃げたら、それも罠があってひどい回避をしている、という話。オチはなく、本当に困っている…

webpack + babel でトランスパイルしてるから、karma + karma-webpack でトランスパイスしようとしてるけど、なんとかかんとか頑張ってるものの、最終的に remote.require してる module がみつからんとか言われるから、もう困ってしまって諦めているのである…

読書

あまり進んでないけど、Express.js Blueprints の続きを読んでいる。

英語

EJ 2月号の2つ目のインタビューのテキストを読んで、聴いてを何回か。それでも、うまく聴き取れない部分があって凹む。

運動

ダンベル体操を2日ほど。 暖かくなってくるらしいので、そろそろ走り始めようかというところである。ぽよんとしたお腹が走れと叫んでいる。

そろそろ書くことがなくなってきたので、ちゃんとした成果を出さないといけないな、と思いつつ失敗するくらいのときに来た。

適当に続くようにがんばらんようにがんばろう。。。

weekly-5th

2016-02-07
  • Share on Facebook
  • Tweet
  • Add to Pocket

2016年第5週目

さて、今週やったことを書きますか。

Ruby

気になるリポジトリをいくつか増やしてみた。 コミット見ると、面白いコミットメッセージを見つけることもあるようです。tabenai とか。

最近、お仕事で devise の挙動を変えることが多い。trackable な項目を更新しないようにしたりとか、find_for_authenticate の発行クエリのルールを変えたりとか。devise, warden さんのコードを見ることが多かった気がする。

JavaScript

かけこみ寺 の次の回に参加する予定でいる。参加の準備で、スライドのようなものを作成している(未完成)。

スライド作成中に、今少しずつ作っているもののバグを見つけたので、直した。スライド作成便利…

あと、サーバサイド側の JavaScript ライブラリを調べている。Express, koa, Meteor あたり。Meteor が注目らしいけど、プロトコルが独自らしい。koa は新し目のライブラリらしく、Express と作者が同じそうな。

何がよいかわからんので、とりあえず Express の本を kindle で買ってみて読み始めた。Express.js Blueprints

読書

前述の理由で Express.js Blueprints を読み始めた。 『アプリケーションを作る英語』を読み始めた。

自宅の Linux 機に wine を入れて、kindle を読めるようにしてみた。一部コードに相当する箇所(preかな?) が表示されないものがあるけど、そこは Fire で読もう。。。

英語

テキストの方は読めてないんだけど、スマホに入れている音声は繰り返して聴いているだけあって、単語が聴き取れるようになった気がする。

ちょっとサボり気味なので、次週はもうちょっとテキスト系もみっちりしなければ……という気持ち。

運動

ちょっとだけ筋トレした。

weekly-4th

2016-01-31
  • Share on Facebook
  • Tweet
  • Add to Pocket

2016年第4週目

さて、突然ながらあまりに何も書かないので、rebuild.fm#127 Aftershow でやってた週報的なものを続く限り書いてみようかと思った次第。

先週は風邪ひいて体調悪かったので、なんもしてない。

Ruby

各種気になる repositories の git history が見れるように環境を少し整えた。

いろいろ試した結果、vim の fugitive + gitv で git log しながら詳細を水平分割でみていくかたちが一番見やすかった。

JavaScript

protractor で悩んでいた、confirm の OK ボタンを押すのを諦めて、次の作業に移った。 画面遷移を伴う動作のため、react-router を設定し直してみたが、以前発生していたエラーがでなくなっている気がする。。。 気のせいかもしれないが、このまま進めよう。ここからが難しい処理になってくるはず。

読書

入門コンピュータ科学を第一章読み終えた。

英語

English Journal 2016年 2月号の最初のインタビューを聴き流し + トランスクリプトを読むのをちまちまと。 最初のインタビュー、新しく出てきた単語がまだ頭に入ってきてないが、音は以前より聴き取れるようになった気がする。

Electronアプリ開発に protractor 入れた話

2016-01-06
  • Share on Facebook
  • Tweet
  • Add to Pocket

趣味で Electron アプリを少しずつ作成しているのであるが、JavaScript のテストをまともに書ききったことがないため、導入してみようと思い、E2E のツールとしてprotractor を導入したので、メモ。

protractor とは

AngularJS の end to end testing tool として生まれているが、AngularJS を使っていなくても導入できる。 AngularJS を使っている場合は、{hoge} みたいな画面に bind している値を取得できて便利らしい。

導入すると一緒にインストールされる webdriver-manager を使ってブラウザを動作させてテストを実行する。

導入

https://angular.github.io/protractor/#/tutorial を見ながら導入する。

$ npm i --save-dev protractor
$ ./node_modules/.bin/webdriver-manager update

project の直下に conf.js を作成し、ここにend to end test の設定を書き、 protractor conf.js してテストを流す。

$ protractor conf.js

conf.js にいろいろと設定を書いておき、この設定にそってテストが実行される。設定の書き方は Configuration File Reference を見ながら書く。

{% gist a58824ebbfadee1c788b #file-conf-js %}

L2-7 は、power-assert を使うために、babel-plugin-espower を噛ませる設定。

L10 の chromedriver は、protractor を導入した際に一緒にインストールされたものを指定する。 L11 は、./node_modules/.bin/webdriver-manager start した際にコンソールに出力されるアドレスを記載する。

L14-16 に実行する end to end test のパターンを記載する。流しやすいように e2e というディレクトリを作成してそこにテストを配置した。 L17-24 で、Electron 用の設定を記載している。browserName には chrome を、chromeOptionsbinary には electron-prebuilt のバイナリのパスを指定している。

ここがあまり調べても載ってなかったのだが、argsapp= として、Electron の entry point になっているjs を指定する必要がある。 これがないと、blank のElectron のページが立ち上がって終わる…

L26 の browser.ignoreSynchronization = true; は非AngularJS なアプリで protractor を利用する際に必要とのこと。参照: stackoverflow

{% gist 99c2337c1d611b322356 #file-showhome-e2e-js %}

browser.get(url) みたいなもので希望するページを指定できたりするが、Electron の場合、起動時に開いているページについて特に指定しなくてもOKっぽい。トップページの class=“title” に “こんにちは” とあればテストが通る。

大事なこと

Electron アプリの場合、argsapp=entry point の js が必要です。

※ GitHub のソース検索すると、http://localhost:8000 と書いてあるソースが多いが、それでは動かなかった…ここに到達するのに時間かかった。using-selenium-and-webdriver.md3. Connect to chrome driver のコメント見て気がついた…