Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

railsその0003-008 第五章完了

今日の日記

rails 5のチュートリアルをやってみる日記です。

今日はここまで読んだとか、ここまでやったとかそんな感じの日記です。

平日の電車の中とか寝る前とかにコツコツ読んで、読み終えました。

第五章のコード書き終えました。

routes.rb書いたり、rails test:integrationとかしました。

絵を描くことについて考えてみる その0003 写真や絵を線で分割してから模写する

はじめに

絵心が無いとはよく見聞きしますが、多くの場合は以下の2点が大きな要因であると考えています。

  • 絵を描くための学習、練習に費やした時間が少ない
  • 費やしている時間は多いが効果的な学習方法、練習方法でない

効果的な学習方法、練習方法とはどういうものか自分なりに考えたりして文書化しています。

分割する

今日は写真や絵を分割して、模写しやすい単位に落とし込んでから模写するという事について書きます。

例えばこのような写真があったとします。

f:id:motomichi_works:20171201200504j:plain

これをそのままそっくりに模写するのは大変です。

でも写真に線を引いて、64分割ぐらいしたらどの指がどのあたりにあるか、誰にでもわかりやすくなります。

256分割したらもっとわかりやすくなります。

写真と同じ縦横比の紙に線を引いて、256分割したら手の形状ぐらいならかなり正確に模写ができそうです。

座標を測って線を引いているだけとも言えますが。

写真だとちょっと難しいかもしれませんが、好きな漫画の一コマだと輪郭線がはっきりしていて、16分割とかそのぐらいでも模写しやすそうですね。

JSでテストコードを書く その0002-02 sinon.jsのstubでapiのテストを書いてブラウザでテストを実行する

参考にさせて頂いたページ

以前書いた記事

mochaとchaiを使うことについて以前書いた記事です。
この続きという感じでsinon.jsのstubを使っていきます。

前提としてこちらを読んでおくと解りやすいかもしれません。

jQueryとsinonをインストールする

npm install --save-dev jquery sinon

package.jsonのdevDependenciesは以下の4つになりました。

  "devDependencies": {
    "chai": "^4.0.1",
    "jquery": "^3.2.1",
    "mocha": "^3.4.2",
    "sinon": "^4.1.2"
  }

例えばapplication.jsにmyObjを追記する

application.jsに以下のようなmyObjを書いたことを想定してテストケースも書いていきます。

jQueryの$.ajax()でhttps://example.com/hogeAPIにリクエストを送信するオブジェクトです。

window.myObj = {
  request: function() {
    return $.ajax({
      url: 'https://example.com/hoge',
      type: 'GET',
      dataType : 'text',
    });
  },
  successFn: function(response){
    console.log(response);
  },
};

js_testing/spec/example_com_hoge_api.spec.jsの作成とその記述内容

describe()とit()はmochaの関数で、chai.assert.strictEqual()はchaiのメソッドです。
sinonをインストールしたのでstub()が使用できます。

describe('example.com/hoge apiへのリクエスト', function() {

  it('apiが文字列"hoge"を返す', function() {
    var stub = sinon.stub(window.myObj, 'request');
    stub.returns({
      done: function(callback) {
        callback('hoge');
      }
    });

    window.myObj.request().done(function(data) {
      chai.assert.strictEqual('hoge', data);
      stub.restore();
    });

  });
});

js_testing/js_testing_0001.htmlに追記する

以下の三行を追記しました。

  • <script src="node_modules/jquery/dist/jquery.js"></script>
  • <script src="node_modules/sinon/pkg/sinon.js"></script>
  • <script src="spec/example_com_hoge_api.spec.js"></script>

以下の通りになりました。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="utf-8">
<title></title>
<meta name="description" content="">
<meta name="author" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--mochaによるテストの実行結果用cssを読み込み-->
<link rel="stylesheet" href="node_modules/mocha/mocha.css">
<link rel="shortcut icon" href="">
</head>
<body>

<!--mochaによるテストの実行結果が出力されるdiv-->
<div id="mocha">
</div>

<!--jquery, mocha, chai, sinon を読み込み-->
<script src="node_modules/jquery/dist/jquery.js"></script>
<script src="node_modules/chai/chai.js"></script>
<script src="node_modules/mocha/mocha.js"></script>
<script src="node_modules/sinon/pkg/sinon.js"></script>

<script>
//BDDスタイルを使用するので設定
mocha.setup('bdd');
</script>

<!--自分が作っているwebアプリケーションのjsを読み込み-->
<script src="js/application.js"></script>

<!--テストコードを読み込み-->
<script src="spec/add_numbers.spec.js"></script>
<script src="spec/example_com_hoge_api.spec.js"></script>
<script>
// テストを実行
mocha.run();
</script>

</body>
</html>

js_testing/js_testing_0001.htmlをブラウザで開いてテストを実行してみる

js_testing/js_testing_0001.htmlをChromeなどのブラウザで開いてテストを実行してみます。

テストはグリーンでした。

sinon.fakeServer.create()を使う方法も参考にさせて頂いたページに書いてありました。

書いてみたものの

これだと実際に使っているAPIやメソッドに対するテストケースではなくて、sinon.jsで代替APIを作ってテストしているに過ぎないので、非同期処理がからむ一連の挙動についてはspyでsetUpをしたらできるのか、実際のAPIselenium等でリクエストして返却される結果を検証する方が良いのかもうちょっと調査と理解が必要そう。

spyのsetUpとかjQueryajaxメソッドをテストする例については Spies - Sinon.JS を参照するのがよさそうです。

jasmine2とかtestdouble.jsとかではどうなんでしょうね。

railsその0003-007 第四章完了

今日の日記

rails 5のチュートリアルをやってみる日記です。

今日はここまで読んだとか、ここまでやったとかそんな感じの日記です。

平日の電車の中とか寝る前とかにコツコツ読んで、読み終えました。

第五章も読み終えたけど、第五章は読むだけじゃなくてコード書いた方が良さそうだなということでコード書きます。

railsその0003-006 controllerをgenerateしてtestを書く 第三章完了

参考にさせて頂いたページ

はじめに

rails 5のチュートリアルをやってみる日記です。

今日はここまで読んだとか、ここまでやったとかそんな感じの日記です。

今日の日記

testを実行するために必要なgemを追加しました。

rails generate controller でコントローラーとか色々生成しました。

aboutアクションは手で書いて、aboutアクションを検証するtest書いて、routes.rb書いて、erb作成して、controllerにaboutアクション追加しました。

rails testでtestを実行して、redからgreenにしていくフローを一通りやりました。

herokuにもデプロイして動いたし、第三章完了です。

vagrant でのrailsアプリケーション開発の癖にもだいぶ慣れてきました。

railsその0004 vagrantの仮想環境内でbundle installが失敗する問題を解決する

参考にさせて頂いたページ

bundle installしたらエラーが出た

bundle installをしようと思ったら以下のようなエラーが出ました。

Could not fetch specs from https://rubygems.org/

解決策

参考にさせて頂いたページにならって、vagrant reloadしたらbundle installできるようになりました。

railsその0003-005 scaffoldでアプリケーションを作成して概要を学ぶ 第二章読んだだけ

参考にさせて頂いたページ

はじめに

rails 5のチュートリアルをやってみる日記です。

今日はここまで読んだとか、ここまでやったとかそんな感じの日記です。

今日の日記

scaffoldで作成したアプリケーションの構成をもとにrailsアプリケーションの概要を学習しました。

ここはとりあえず読むだけでいいかなという気がしたのでそのまま第三章に進みます。