2015-01-01から1年間の記事一覧

El Capitan へのアップデート

Mac

LaTeX 環境が整ったということで、El Capitan へのアップデートを行った。これまでは細かいインストール手順を書いてきたが、ansible で環境を整えるようになったため、全消し & 全インストールで十分であった。それでも何らかの参考になればとメモ書きを公…

4. loop 関係のリファクタリングと画像処理関数の作成

reset の実装 (PixelIterator) 当初プログラムを作成している時には、MonoMatrix が主役の予定でいたが、いろいろと作っている内に PixelIterator の方が主役になってきた。画像を読み込んできたりしたときには MonoMatrix として読み込むが、基本的な処理は…

3. PlaneIterator と IteratorSet

testPlaneIterator (ImageLibaryTests) これまでは MonoMatrix に対する Iterator だったが、ColorMatrix に対する PlaneIterator をテストする。これは ColorMatrix が所有する MonoMatrix の配列を一つずつスキャンするものである。特に新しい項目もないの…

2. Iterator 群の作成

testCheckSameSize (ImageLibraryTests) 大きさの比較を行う checkSameSize をテストする。テストはこんな感じ。これまではあるオブジェクトに対して他と等しいかインスタンスメソッドで確認していたが、ジェネリックを使ってみたいので関数で書いてみる(二…

1. 画像処理ライブラリの作成開始

Swift の学習のために、自分の研究用プログラムを Swift で書いてみる。ResearchTools というプロジェクト内に ImageLibrary という Framework を別途用意した。記録していないとすぐに忘れてしまうので、自分用の覚書を残しておく。 ImageLibraryTests の準…

33. キャンパス情報のセッション保持

キャンパス変更の受入テスト キャンパス情報はセッションに記録する。ここでは、キャンパス変更に関する受入テストを追加した。当初はメニュー内の直接リンクをクリックしていたが、Javascript を有効にしたため、メニューバーのリンクをクリックして、メニ…

32. Campus モデルと enum

複数形の登録 キャンパスのモデルである。これも同様であるが、一つだけハマリポイントがあった。generator で campus モデルを作成しようとしたら、campu の複数形と判断されてしまった。旧システムの情報を参考に config/initializers/inflections.rb に c…

31. コントローラのないモデルの移植

学年・学科など基本的に固定なデータのモデルは、特にコントローラを作成しない。これらを一括でテストおよび実装を移植する。 学年(Gakunen)モデルの定義 学年のマイグレーションは以下のようになる。honka = true に対して、gakunen が 1〜5、honka = fals…

30. モデルテストのためのメソッド群

1週間使って検索モジュールを設計・実装していた。かなり使い勝手がいいものができたので、近いうちに紹介する。今日は溜まりまくったモデル系のお話。モデルのテストのうち、属性や関連に関するものはテストをするためではなく、実装抜けを防ぐためのものに…

29. 受入テストの Javascript 対応

旧システムでは Rails の掟通り、edit, new などでページが遷移してしまい、自分が何の作業をしていたのかがわからなくなるという不満が多かった。そのため、最近作ったページは edit や new の画面も index や show と同じ内容を表示するような作り込みをし…

28. FactoryGirl を fixtures のように使う

モデルのテストを行うのにさまざまな条件の下でテストデータを作ることが必要になる。以前は、さまざまなテスト条件に合わせて、大量の fixtures を用意していた。しかしながら、テストデータをすべてのテストに適合するように準備することは非常に難しい。…

27. 権限管理のリファクタリング

今日から溜まりに溜まったモデルの話をしようと思っていたが、ページの描画などをしているうちに権限関係のメソッドが使いづらいことに気づいた。いろいろなことを考えてモデルやヘルパを先んじて作っているが、実際に使ってみるといろいろと不具合が出てく…

26. システム設定画面における view の記述

旧システムでもシステム設定画面はさまざまな権限用のメニューが沢山用意されていた。このため、非常に長いページになり、スクロールが必要であった。今回は、nav-tabs を使ってタブ表示を行う。これが一つ目の改定。また、これまでメニューの部分は以下の様…

25. パンくずリストへの権限の描画

現在のシステムで各ページが誰に見えているのかがわからないという問い合わせが多かった。今回は、コントローラに定数を記述し、それを確認することで権限を一元管理することにしている。前回、せっかくパンくずリストを表示したので、この部分に権限を表示…

24. locale の修正と DatabaseRewinder

locale 機能の修正 昨日書いた locale について、別のシステムを作っていたときに楽に書けていたことに気づいた。別のシステムではページのタイトルを以下のように記述していた。 %h1= t '.title' これは、view の中でパスを省略すると、view のパスが自動的…

23. locale の積極的な利用

前書き app/views/layout/application.html.haml を見返してみると、ページタイトル部に以下の記述を見つけた。 %title= content_for?(:title) ? yield(:title) : “webcit3” 調べてみるとテープレート内に :title というコンテンツがあれば、それを yield し…

22. Turnip による受入テスト(4)

リンクの修正 コントローラのテストが終了したので、再度受入テストを確認してみる。Guard でリターンを押すと以下のようなエラーになっている。これは年度を変更するリンクが作成されていないためである。 Failure/Error: ならば "[平成27年度]"と表示され…

21. Turnip による受入テスト(3)と SimpleForm の設定

SimpleForm のインストール 旧システムで最もトラブっていたのは、ダブルクリックによるデータ二重化問題であった。検索していたところ、http://qiita.com/kakipo/items/d3fb5595ccfa7250f3eb というページを見つけた。旧システムでは form もリンク形式で表…

20. Year モデルの和暦表示

前書き 旧システム作成時には view から controller のメソッド呼び出しを知らなかったので、ページ呼び出し時にセッションに関わる情報を一括してインスタンス変数に代入していた。このページもそれを踏襲して、現在の年度を @now_year に代入するという手…

19. ページ権限の作成

シナリオの記述 ページの権限管理ができていないので、この部分を実装する。以前は、ページごとに before_action で制御していたが、view の定義と一致しない問題が見受けられた。新システムでは権限を管理するメソッドを定義することにする。まず、定義の前…

18. ページデザインの雛形作成

まえがき ここで記載しているものとは別の Rails 4 アプリを二つ抱えてしまったので、こちらはお休みしていた。せっかくなので、そちらでは Rails 4 の新しい機能をいろいろと試してみたので、こちらにフィードバックしています。ネタは 2 週間分くらい抱え…

17. admin 権限の設定

前回までにデザインのないテストは受入テストで実施できたが、実際のデザインはブラウザで確認する必要がある。しかしながら LDAP 接続できない場所では、ブラウザで確認することはできない。そこで、他のユーザになりすませるローカルログインする admin で…

16. turnip による受入テスト(2)

途中になってしまったので、受入テストの続きを行う。デザインに関しては後で設定することとして、とりあえず動く実装を作る。まず、app/views/teacher/kyoumus/index.html に年度変更のリンクを設置する。 %h2 年度に関する情報 %table %tr %th リンク %th …

15. turnip による受入テスト(1)

以前、受入テストは RSpec とは別に Cucumber というアプリケーションを使っていた。最近は、Turnip と Capybara を用いて、RSpec 内で実施できる受入テストが使われている。今回は、年度に関するテストで受入テストを実施してみる。 turnip の設定 すでに G…

14. admin ユーザの作成

さまざまな権限の元で開発ができるように、すべての権限に化けられる SuperUser アカウントである admin を作成する。このアカウントは LDAP アクセスできない環境でも作業できるようにローカルアカウントとする。ただし、Devise 1.1.2 の頃と属性データの互…

13. Ruby 2.2.0 へのアップデート

Ruby 2.2.0 のインストール 12 月 25 日に Ruby 2.2.0 がリリースされた。Rails 使いとしては、シンボルのガベージコレクタが入ったことがかなり大きそうだ。また、新しいインクリメンタル GC のおかげで速度低下も減りそうだとのこと。せっかくなので、早速…

12. 既存データの読み込みと認証の続き

現在のシステムでも、開発環境のデータは運用環境のデータを流用している。これは、運用会社がサポートをするにあたって、ユーザと同じ環境にないと確認ができないためである。ただし、学内の機密データに関するものは、個人情報をマスキングしたり、データ…

11. Devise の設定(1)

devise のインストール develop から configure_devise というブランチを切って作業する。以下、このブランチでの作業。まず、Gemfile を設定した。 # a flexible authentication solution for Rails based on Warden gem 'devise', '~> 3.4.1' bundle insta…