karma startのエラー
karma startでエラーが出てテストを開始できなかった
$ karma start /Users/juzow/Development/backbone/node_modules/di/lib/injector.js:9 throw error('No provider for "' + name + '"!'); ^ Error: No provider for "framework:qunit"! (Resolving: framework:qunit) at error (/Users/juzow/Development/backbone/node_modules/di/lib/injector.js:22:12) at Object.get (/Users/juzow/Development/backbone/node_modules/di/lib/injector.js:9:13) at Injector.get (/Users/juzow/Development/backbone/node_modules/di/lib/injector.js:54:19) at /Users/juzow/Development/backbone/node_modules/karma/lib/server.js:138:20 at Array.forEach (native) at Server._start (/Users/juzow/Development/backbone/node_modules/karma/lib/server.js:137:21) at Injector.invoke (/Users/juzow/Development/backbone/node_modules/di/lib/injector.js:75:15) at Server.start (/Users/juzow/Development/backbone/node_modules/karma/lib/server.js:102:18) at Object.exports.run (/Users/juzow/Development/backbone/node_modules/karma/lib/cli.js:243:26) at requireCliAndRun (/usr/local/lib/node_modules/karma-cli/bin/karma:44:16) at /usr/local/lib/node_modules/karma-cli/bin/karma:54:12 at /usr/local/lib/node_modules/karma-cli/node_modules/resolve/lib/async.js:45:21 at ondir (/usr/local/lib/node_modules/karma-cli/node_modules/resolve/lib/async.js:196:27) at /usr/local/lib/node_modules/karma-cli/node_modules/resolve/lib/async.js:163:39 at onex (/usr/local/lib/node_modules/karma-cli/node_modules/resolve/lib/async.js:104:32) at /usr/local/lib/node_modules/karma-cli/node_modules/resolve/lib/async.js:24:24
githubにあった下記コマンドで解決
npm uninstall karma -g npm install karma # Optional npm uninstall karma-cli npm install karma-cli -g
Cannot start karma - no provider for jasmine · Issue #706 · karma-runner/karma · GitHub
初めてWebサービスを作ってみた
Amazonで買う前に最寄り図書館の蔵書と中古価格をチェックするWebサービス
http://www.mitsurintoshokan.com
最近、諸々の事情で使える予算が厳しくなってきました。
昔のように少し気になった本を次から次へと買うことができません。
ただそうは言っても、たまには本ぐらい買いたい。
そうなると毎回次のような流れで本を購入することになります。
何度かやるとAmazonと図書館のサイトを行ったり来たりするのが面倒に...
ふと調べてみるとカーリルのAPIで図書館やそこの蔵書を検索できる。
カーリル | 日本最大の図書館蔵書検索サイト
じゃあ作れるかも?ということでPythonの学習を兼ねて作ってみました。
制作期間2週間くらいです。仕事終わりにちょこちょこと。
作ってみてからすでにChromeのプラグインやiPhoneアプリで同じものがあることを知りました。これらのツールに比べると使い勝手は格段に劣りますが、とりあえずブラウザで動くのでよしとします。
www.libron.net
chrome.google.com
RoRでHelperを使ってみた
時間を入力してもらうのに分数を5分おきにする必要があったのでHelperを作った。
Viewにごてごて書くと、ソースがごちゃごちゃするのでHelperに書こうねということか?
http://api.rubyonrails.org/classes/ActionController/Helpers.html
http://qiita.com/ppworks/items/b6bb04e9235fd75ec341
vi app/helpers/events_helper.rb
moduels EventsHelper def min_custom_options options = [] (5..55).each do |m| if m % 5 == 0 options.push [m, m] end end options end end
vi app/views/events/myview.html.erb
<%= select_tag :min, options_for_select(min_custom_options) %>
http://guides.rubyonrails.org/form_helpers.html#the-select-and-option-tags
ActiveModelを継承していないModelでValidationを実施する
ActiveModelを継承していないModelでValidationを実施する必要があったのでメモ
http://qiita.com/shunhikita/items/772b81a1cc066e67930e
vi app/models/mymodel.rb
class Mymodel include ActiveModel::Validations validates_with MymodelValidator end
vi app/models/mymodel_validator.rb
class MymodelValidator < ActiveModel::Validator def validate(record) unless record.prop.present? and is_prop_less_than_100?(record.prop) record.errors[:prop] << 'Error message' end end def is_prop_less_than_100?(p) prop < 100 end end
validationを呼び出すときはcontroller内で@model.valid?を実施
falseならエラーメッセージがerrorsにはいる。
RoRでなにか作ってみる - その1
とにかくRuby on Railsでなにか作ろう。
最近困ったことでWebサービスになるようなもの。。
ときどき観たい番組を見逃すから、これをなんとかしたい。
こんな流れでいけるのではないか。
- 毎日Web上のテレビ番組表を確認
- 明日の番組表に特定のキーワードに引っかかる番組を探す
- 時間、チャンネル、番組の詳細、URLを抜き出す
- Twitterのアカウントに向けてそれをつぶやく
通称「Tvitter(テレビッター)」
すでにこんなサービスはあるような気がするけどそんなの関係ねぇ
So-netのテレビ番組表とか使えばできそうな気がする。
とりあえず環境を準備する。
OSはMac OS X Yosemite 10.10.5
rvmで2.1.7を入れて、gemset作ってrails 4.2を入れる。
RSpecでテストを書いてみたいのでrspec-railsも入れる。
Guardというやつを設定すると自動でテストがくるくると回るらしい。
テストにもいろいろあってUnit, functional, acceptance, integrationとなんだかたくさんありすぎてわからない。
別に仕事でやるわけではないので、自分が自信のない部分と使う人が触る部分だけをテスト書けばいいだろう。となるとcapybaraとwebkitだかpoltergeistだかを使えばブラウザを使ってユーザーが操作しているテストを書けるらしい。どうせテストを見るのは自分だけなのでcucumberのテストほど読みやすくする必要もない。
とりあえずgithubに環境をアップ
このへんを見るとnokogiriがデファクトスタンダードということ
番組表の文字コードもUTF-8だし、これで行ってみよう。
"Soft Skills"を読んでる
なんだか世界中で話題?のSoft Skillsが手に入ったので読んでいる。
ソフトウェア開発者としてどのようにスキルを磨いていくのか、どうやって自分自身をマーケティングしていけば良いのか、新しい技術をどのようにして学んでいけば良いのか。。さらには金持ち父さんのごとく、どうやって不動産投資で一発当てて若くしてリタイヤするか。みたいなことまでが平易な英語で書いてある。
その中に「ごちゃごちゃいってねーでブログ書け」というお話があったので、休眠中のはてなブログを再開した。
要は、ブログを書くときに技術者としてパーフェクトである必要はないと。「まだ自分は技術力がないから」とか「間違ったことを書いたら恥ずかしい」とか、色々と言い訳はあるのだけども、とにかく現時点の自分に書ける内容を書いてみろと。どんなに技術が低くても、必ず誰かその記事を参考にする人がいるはずだと。そうやって自分が出来る範囲でコミュニティに貢献するんだと。そんなことが書いてあった。。気がする。
アウトプットすることに関して述べたところで印象に残ったのは次の一言(適当な訳)「誰かが失敗したことなんて、みんないちいち覚えていない。君は失敗した誰かを見て激しくブーイングしたり、わざわざ電話やメールでそいつの失敗についてごちゃごちゃ文句を言って、いかに彼がクズかってことを伝えたか?当然、そんなことしたこともないだろ。だったら何をびびってるんだ」
ブログを書かない理由の一つに時間がとれないってものもあるけど、技術的に未熟だからなかなかアウトプットする気になれないというのもある。続くかわからないけどとにかくアウトプットしてみたい。いままではgithubにコードをあげることもほとんどしてないけど、隠すほどの技術もないし、これからはどんどんやっていこう。
ということでまたRails/Rubyを使って早朝・週末プログラマ生活を再開する。
このたびRubyを選んだのは池澤あやかさんのファンだからではない。
とにかく、いままでやるぞやるぞと言いつつ1つも作ったことがないWebサービスとやらをとりあえず1つ作る。そんでもってその過程とコードをブログとgithubですべてさらけ出して裸になろう。全裸だ。
Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart. - Steve Jobs.