サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
tomykaira.hatenablog.com
contest.sld の FPGA を使った描画に成功し、自前のシミュレータの出力とバイトレベルで一致したので CPU 実験が始まる前に終了しました。全てを一人で作りました(実質的にコンパイラとライブラリは作っていない)。CPU 実験はオワコンです。 作業期間 8月のどこかの段階で『ディジタル回路設計とコンピュータアーキテクチャ』にのっていたシングルクロックコアを改造したもので再帰 fib が動作していた。試験終了直後の 9/7 に語る会でいろいろなヒントを得て、 9/8 から ISA をレイトレーサに十分なものに変更し、CPU をほぼ全面的に書き直した。9/18 にひろってきた cserver-linux とひろってきた min-rt.ml に 0xaa を送信するコードを足したもので実機動作。作業期間およそ10日。 やったこと CPU コアの実装 FPU のハードウェア実装(fad
完了の定義 ソフトウェア開発プラクティス的な本を読んでいると、よく「完了」が問題になる。気になったら手近な本の索引を引いてみてほしい。かならず「完了」が含まれているはずだ(『実践テスト駆動開発』には完了の説明はあったが、索引にはなかった)。 「完了」について一緒に働いている人に理解してもらう必要があったので、手近にあった書籍から「完了」をとりだしてきた。 継続的デリバリー 継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化作者: David Farley,Jez Humble,和智右桂,高木正弘出版社/メーカー: アスキー・メディアワークス発売日: 2012/03/14メディア: 大型本購入: 22人 クリック: 456回この商品を含むブログ (32件) を見る pp.65-66 実は、フィーチャが完了したと言えるのは、価値をユーザーに届けた時だ
RSpec でよく describe に書いたことと、 subject に書くことが被ることがあって、DRY じゃないし、その冗長性にはなんの意味もなく、変更コストや打ち間違いのリスクが上昇するだけで困っていた。 なんとかする方法を発見したのでメモ。他の人が困っていないわけないと思うのだが、いまだかつてこの技法を使ったテストコードは見たことがない(id:t-wada さんは describe 入れ子が好きだそうだが、ご存知だろうか)。 example.metadata[:example_group][:description] で expectation が記述されている箇所の直上の describe / context 定義の description が取得できるので、これをつっこむだけ。 結構魔術的だが、いわゆる「黒魔術」(リフレクション的な手法)は使用していない。 注意しなければいけ
この記事は DRY原則とテストの可読性 - ✘╹◡╹✘ への応答という側面があります。テスト駆動 Javascript を読みおわりましたが、そこにもおなじようなことが書いてあったので、その考察でもあります。 テスト駆動JavaScript作者: Christian Johansen,長尾高弘出版社/メーカー: アスキー・メディアワークス発売日: 2011/11/25メディア: 大型本購入: 13人 クリック: 287回この商品を含むブログを見る TL;DR DRY ではなく sustainability を目標にする テストコードが技術的要素に踏み込みすぎないようにする テストの可読性は能力の低いフレームワークで書けば高くなるものではない。テスト対象、環境の性質につよく依存する DRY 厨というのはコードを省みないよりもタチが悪い。彼には DRY という錦の御旗があり、「やりすぎだよ」
https://github.com/twitter/bootstrap/blob/master/js/tests/unit/bootstrap-popover.js equals($('.popover .popover-content').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted') : : var popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>') :unicode のテストということにしておこう。
#tddact の LT のなかで cucumber を批判したが(資料: tomykaira/specs-dis)、いろいろ考えて反省したので意見表明する。用語には気をつけているつもりだが、間違って覚えているものがあるかもしれないので、気になる点はぜひ指摘していただきたい。まず、私は cucumber を rails 上の end-to-end な developer test としてしか使ったことがなかった。ようするに開発者が開発を駆動するために書くテストだ。 そうすると、 cucumber にプリセットされている step 定義にのっとり cucumber 語(日本語でもプログラムでもないよみにくいもの)で適当に確認したい動作を書いて、これを実現するようにプログラムを書くということをしていた。 もちろん全部をデフォルトの step 定義で書くことはできないので自分でも拡張しなきゃ
このエントリは id:kyon_mm さんの TDDを明確に定義する - うさぎ組 にたいするリプライです。拾ってもらえないと悲しい。 TL;DR 私にとって TDD はテストファーストを含む。理由は TDD という語があたえる語感である きょんさんが RED -> GREEN -> REFACTOR と言いながらテストファーストを含まないというのは矛盾を感じる この問題を解決するため、定義を一部具体化したい 本編 一読して、うーん?という部分があったのですが、「テスト」という言葉についてなどの考えを共有したのでほとんど違和感はなくなっていました。上の記事の議論の中核には私はほとんど同意します。私はきょんさんの TDD という言葉の使い方にすこし違和感を感じています。揚げ足取り的になってしまう恐れがありますが、あえてこまかいところを指摘します。TDD = Test Driven Devel
VHDL は記述が冗長なことで有名です。よくある組み合わせ回路の doctest しようとしただけで、テストベクタをファイルに書いたり、そのモジュールを使うテストベンチを書いたりしなきゃいけない。大変すぎる。もっと気軽にテストできる枠組みがあると、単体テストのカバレッジが上がり、結合したときのテストが簡単になりそう。 doctest を haskell で使っていて感覚的に書けるところとオーバーヘッドが少ないところが気にいったので、 parameterized doctest ふうのコメントを書くと Ruby でテストファイルを自動生成して実行して結果まで教えてくれるものを作った。vhdl_doctest の名前で rubygems から手にはいる。ソースは https://github.com/tomykaira/vhdl_doctest/ にあり、 MIT ライセンス。sh と gh
tomykaira/guard-notifier-git_auto_commit@kyon_mm さんの https://gist.github.com/2873062 に inspire されてつくった。 rubygems からダウンロードできる。Ruby, Rails では開発環境での自動くりかえしテストに guard がよく使われている。 この guard の通知部分に git commit するものをしこむことで、テスト結果に応じてコミットを打つ。 作業が終了したら git rebase で歴史を綺麗にする。 (Stacked Git というものもあり、なかなかよさそう) 既知の問題点 guard のソースがなかなかひどい。設計理念がよくわからない。 ruby で適当に書きましたなにおいがする。 ビルド失敗とテスト失敗の区別がない。 Spork を使っていると、 Spork
CentOS 6.3 = さくら VPS。 rails の CI 環境はととのっていて、新たに jasmine を導入した状況を想定。 group :test do gem 'jasmine-headless-webkit' end bundle install はできるが、実行しようとすると Qt がなくて実行環境がビルドできない。[https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit[Installing Qt and compiling capybara webkit · thoughtbot/capybara-webkit Wiki]] を参考に Qt を入れる。 rpm -i http://dl.atrpms.net/el6-x86_64/at
修正(2012-06-09 20:00) mysql の設定にかんして勘違いしている部分がありました。 user を明示的に mysql に設定しないと、パーミッションエラーで動作しないと思っていましたが、@sowawa さんとの議論でこれは誤解で、指定しなくても大丈夫ということがわかりました。 しかし、明示的に指定したほうが、mysql_safe 以外から起動したときなどにミスがおこりにくいので、よいとおもいます。 本文では間違いだった部分に取り消し線をいれました。 # そもそもなんで最初にうまく起動しなかったんだろう??? (以下本文) 登録にクレジットカード必須。持ってない人はメールで相談するとなんとかしてくれるんだったはず。 最初、DNS が設定されるまですこしかかる(1 minくらい) はいっているもの(使いそうなもの) nginx nginx/1.2.0 現在、se
恒例の言語 dis 記事。無知をさらけだしているのでぜひともつっこみをください。 2日間ぐらい JSX でちょっとしたプログラム(真理値表をいじったり、QM法をおこなったりするもの)を書いてみて、JSX が残念なことがよくわかったのでまとめた。今回やったのはわりとロジックっぽい部分で、表示したりライブラリつかったり外部と連携したりといったことはなかった。 JavaScript / JSX の用途としてはかなり特異なものだとおもうので、そういうのに適当じゃなかった、というのはあるかもしれない。 しかし JSX の場合はべつにウェブ系に強い印象もないので(ライブラリとか)、今回指摘する問題点の一部は、やはり看過できないと思っている。 環境編 エラーが出たときに、どこで出ているのかわかりにくい 変換したスクリプトを node.js で実行しているため、通常の実行時エラーは変換後の js フ
ウェブサイトのモックを作成しているときに、まだ画像がないけど、ここには画像が入るよ、というのを示すためのサービスとして、placehold.it というものがある。 Placehold.it - Quick and simple image placeholders これはたしかに便利なんだけど、灰色(色の変更はできるが単色)なのがあんまりなので、実画像を利用するものがほしかった。本当は flickr から取ってきて、とかやりたかったが、権利的な部分も考慮しないといけなくなるので、ひとまずフリー素材を使用して dart でさくっと作った。http://localhost:9292/300x200.jpg 的な URL をリクエストすると、300x200 の犬がかえってくる。 プロジェクトのリポジトリはここ: tomykaira/colorful heroku でうごかない これを h
rspec-parameterized | RubyGems.org | your community gem host tomykaira/rspec-parameterized次のような spec が書けます。 describe "plus" do where(:a, :b, :answer) do [ [1 , 2 , 3], [5 , 8 , 13], [0 , 0 , 0] ] end with_them do it "should do additions" do (a + b).should == answer end end with_them :pending do it "should do additions" do (a + b).should == answer end end end -fd をつけて実行すると次のような感じで出力されます。 RSpec::Pa
class << self end と書けばいいのですが、たまに class <<self end と書く人とか class <<HogeClass end とか書くひとがいて、こうすると HEREDOC だと認識されてファイルの終わりまでピンクになる。ruby-mode.el を修正した。 Index: ruby-mode.el =================================================================== --- ruby-mode.el (リビジョン 34176) +++ ruby-mode.el (作業コピー) @@ -1308,11 +1308,10 @@ (point))))) (defun ruby-here-doc-beg-syntax () - (save-excursion - (goto-char (match-
tomykaira/gitomb ← ダウンロードはここから clone してください。gitomb は milkode の薄いラッパーで、git のリポジトリを自動でダウンロードしてきて、登録し、以降、高速で高機能なプロジェクト内のファイル検索をできるようにするウェブツールです。その大本である milkode が 0.6.0 にアップデートされたので、これに合わせていくつかの変更をおこないました。Milkode0.6リリース - webアプリの高速化、見た目のカスタマイズが可能に、使い勝手改善 - おんがえしの日記毎回便利な更新をされていて、すばらしいです。 タイトルやアイコンを設定可能という、どう考えても gitomb 用でしかない変更が入ったので、ありがたく使わせていただきます。起動時に web config ファイルが存在するか毎回チェックして、なかったら gitomb 用のファ
thoughtbot/factory_girl : 人気の fixture replacement library。fixture だと毎回リセットするのに手間がかかったりするところを、そのテストで必要なデータだけを生成できる。データも DSL で書ける。 bmabey/database_cleaner : テスト終了時にデータベースを綺麗にしてくれるもの。いろんな ORM に対応。 Usage · thoughtbot/factory_girl Wiki 使い方 - factory_girl Gemfile に gem 'factory_girl' を追加(test group のなか) spec/factories.rb を作成 FactoryGirl.define do factory :user do created_at Time.now updated_at Time.now
tomykaira/gitomb Milkode は数万のファイルでも軽々動く、ソースコード検索エンジンです(製作者は id:tuto0621 さんです)。 しかし、数万ファイルもあるリポジトリなんて管理しますか?普通。 ソースコードを検索する回数がもっとも多いのは、既存のライブラリの使い方がよくわからないときに、ドキュメントに乗っているメソッド名を手掛かりに検索して、望みの機能を発掘していくような時のはずです。いままで、ライブラリのコード検索をしようとおもったら、 ライブラリを落としてくる そのディレクトリに移動する git grep かなんか ヒットしたファイルをエディタで開いて、まわりを見回す 見付かるまで検索をくりかえす みたいなことをやっていました。milkode web を使うと、次のようになります。 ライブラリを落としてくる そのディレクトリに移動する milkode
OS や、動かしたいアプリケーションに依りますが、ruby の実行環境の構築は大変です。 というのも、ruby 本体、rubygems、各 gem などのバージョン指定が交錯していて、ruby の ecosystem に慣れていない人にとっては、なにがなんだかわからないからです。 こっちのツールを動かそうとすると、こっちが動かなくなる、みたいなことになります。rubyists は、バージョンの問題を吸収するためのツールを使ってこの問題に対処していますが、ruby に詳しくなくて、ただ ruby 製のツール(たとえば Redmine)を使おうとしている人は分からないでしょう。 そういう人が ruby に挫折しないように、事実無根な中傷をしないように、最近流行のツールで、バージョンミスマッチの問題をおこさない方法を説明します。この説明が対象としているのは UNIX,LINUX 系の環境だ
ハンズオン id:kyon_mm 先生が書いたテストコードに対して、実装していく形の課題。 4clojure という clojure 勉強サイトでも、同様の形式をとっている。 ベストではない答をしてしまう問題があるが、自分で調べる方法がわかるというのが利点である。 groovy / clojure を実際に使ってるひとが、「こういうのよくやるよね〜」でお題を作るとよさそう。 問題の意図(これができる API 関数を探せ)というのがもしかしたら伝わっていなかった人がいたかもしれない。 第一ステップでほぼおわってしまい、あとは closure で遊んだり、groovy 独特の演算子を勉強したりした。演算子については Groovyの奇妙な演算子(その1) - Grな日々(uehajの日記) Groovyの奇妙な演算子(その2) - Grな日々(uehajの日記) Groovyの奇妙な演
[ruby]「えー相対パスー〜」「require のパス展開しないのが許されるのは、1.8 までよね〜」「キャハハキモーイ」とならないために lokka をいじっていると、よく 1.8 で動作しないコードを書いてしまう。CI に感謝するのはまさにそういう時。Travis.CI 神。でも 1.8 は見たくない。 lokka の spec ディレクトリツリー内で、上の階層の spec_helper を連鎖的に require する、みたいなコードを書いたら、1.9 では動作したが、1.8 でおなじファイルが二度 require されてしまい、エラーを吐いた。解決法は require File.expand_path(File.dirname(__FILE__) + '/spec_helper') と、 expand_path で絶対パスに展開すること。 (「結論」も参照ください。他にもあ
komagata/lokka - GitHub おことわり: この文章は tomykaira が勝手に主張しているもので、他の lokka comitters には一切関知していません。 最近 lokka に手をいれています。(何回も確認不十分なコミットを打ってログを汚しているだけにしかみえませんが。) factory girl を導入しました。これに関していくつか書いておきたいことがあります。 factory girl 導入の経緯 lokka はいままで、spec_seeds.rb というファイルで DataMapper のモデルに直接レコードを作らせて、そのフィクスチャを壊さないように、そっとテストを走らせるというスタイルだったようです。 私はそのことを知らず(厳密には考えればわかることだったのですが、考えがたりずに)、直接 Post エントリを作成し、終了後に全部削除するテス
このページを最初にブックマークしてみませんか?
『tomykaira makes love with codes』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く