$ rake cucumber
/Users/iwazawa/.rvm/rubies/ruby-1.9.3-p194/bin/ruby -S bundle exec cucumber --profile default
Using the default profile...
.==> Waiting for Selenium RC server on port 4444... Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
Ready!
==> Waiting for rack application server on port 3001... Ready!
15:45:47.092 ERROR - Failed to start new browser session, shutdown browser and clear all session data
org.openqa.selenium.server.RemoteCommandException: timed out waiting for window 'null' to appear
at org.openqa.selenium.server.FrameGroupCommandQueueSet.waitForLoad(FrameGroupCommandQueueSet.java:569)
at org.openqa.selenium.server.FrameGroupCommandQueueSet.waitForLoad(FrameGroupCommandQueueSet.java:526)
at org.openqa.selenium.server.BrowserSessionFactory.createNewRemoteSession(BrowserSessionFactory.java:373)
at org.openqa.selenium.server.BrowserSessionFactory.getNewBrowserSession(BrowserSessionFactory.java:124)
at org.openqa.selenium.server.BrowserSessionFactory.getNewBrowserSession(BrowserSessionFactory.java:86)
at org.openqa.selenium.server.SeleniumDriverResourceHandler.getNewBrowserSession(SeleniumDriverResourceHandler.java:733)
at org.openqa.selenium.server.SeleniumDriverResourceHandler.doCommand(SeleniumDriverResourceHandler.java:399)
at org.openqa.selenium.server.SeleniumDriverResourceHandler.handleCommandRequest(SeleniumDriverResourceHandler.java:370)
at org.openqa.selenium.server.SeleniumDriverResourceHandler.handle(SeleniumDriverResourceHandler.java:129)
at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1530)
at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1482)
at org.openqa.jetty.http.HttpServer.service(HttpServer.java:909)
at org.openqa.jetty.http.HttpConnection.service(HttpConnection.java:820)
at org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.java:986)
at org.openqa.jetty.http.HttpConnection.handle(HttpConnection.java:837)
at org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.java:245)
at org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.java:357)
at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
2012-05-15 15:45:13 +0900 selenium-client received failure from selenium server:
requested:
cmd=getNewBrowserSession
1=*firefox
2=http://localhost:3001
3=
4=
received:
"Failed to start new browser session: Error while launching browser"
called from /Users/iwazawa/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
F-......
(::) failed steps (::)
Failed to start new browser session: Error while launching browser (Selenium::CommandError)
/Users/iwazawa/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
/Users/iwazawa/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
./features/step_definitions/movie_steps.rb:10:in `/^I create a movie Caddyshack in the Comedy genre$/'
features/create_movie.feature:9:in `When I create a movie Caddyshack in the Comedy genre'
Failing Scenarios:
cucumber features/create_movie.feature:7 # Scenario: Create movie in genre
3 scenarios (1 failed, 2 passed)
9 steps (1 failed, 1 skipped, 7 passed)
0m40.775s
rake aborted!
Command failed with status (1): [/Users/iwazawa/.rvm/rubies/ruby-1.9.3-p1...]
Tasks: TOP => cucumber => cucumber:ok
(See full trace by running task with --trace)
会社ではGitHub、GitHub Enterprise、社内のGitリポジトリの3つ、家でもGitHub、個人Gitリポジトリの2つのGitリポジトリを使っています。
それぞれ違うsshキーを使いたいので、ssh-keygenするときにファイルを分けた場合、ssh-addコマンドで追加しておくと自動的に使ってくれるようです。
ssh-keygen -t rsa -C 'your@address.com' -f ~/.ssh/specified_filename
できた公開キーをリポジトリに登録。
ssh-add ~/.ssh/specified_filename
こうしておけば自動的に使ってくれます。
テスト。
ssh -vT git@github.com
![]()
ぴよ盛りというiPhoneゲームアプリが面白いです。
黄色と赤のひよこを鍋の中に投げ入れて積んでいくゲームなのですが黄色4つの次に赤が来て黄色と赤はくっつくのでそれを利用して鍋の外まではみ出していくことができます。
最初の頃は適当にやっているとすぐに40個くらいからすぐに崩れてしまうのですが、だいたい80〜100はコンスタントに行ける方法が分かったのでご紹介。
序盤
まず、最初の15個までが結構大事です。
赤を2個端に1つ芯として真ん中、もしくは3個端に寄せて置くのどちらかにしたいところです。後者の場合は4個目の赤を真ん中に置いて芯にします。
図のは最高の状態にはできなかったのですが、まぁまぁ悪くない。
端に近い二つの赤に黄色をひっつけながらフチ(縁)に乗せていきます。フチは不安定なように見えますけど、下に何もないより全然、安定していて崩れにくいのです。赤の場合も黄色二つの間に見えているフチを狙ってくっつけます。
投げ方にもコツがあって、くっつけたい場所をまっすぐに位置合わせすると上にくっつきすぎて早々に破綻してしまいます。
左右のヘリに目がけて投げるようにすると低い場所をキープしやすいです。ただ赤がない場所でそれをやると全部落ちてしまうので端の赤に2つ黄色を横にひっつける、または黄色2つの間に赤をひとつひっつける感じです。
中盤
ある程度横に広げられたら真中付近にも、たまに赤を置いて、あまり上に早く行き過ぎないよう注意しながら周りを黄色で囲みます。真ん中に重さがあると、最後の段階で横に横に伸ばしていってもなかなか崩れなくなります。
中心の重さをキープしながら周りに肉付けしていくイメージでやっていきます。
この中盤の上手さが中級と上級の別れ目みたいで、私もまだそれ以上の有効な戦略を見つけられてはいないです。
終盤
終盤になると画面がほとんどぴよこさんで埋まってきますが、上の方をよく見ると幅が空いていて、向こう側にスペースがある場所が残ってたりします(というかそういう場所を残すように拡張できるのがベスト)そこを目がけて高めに黄色を投げるとどんどん真ん中に放りこめ数を稼げます。
この絵のピンクリボンぴよこさんの上辺りです。
終盤の赤ですが、最も揺れてなくて飛び出してない場所に着け、大丈夫そうなら黄色をその周りに少し着け、黄色が余ったら上記の真ん中に放り込むor捨てるかします。慎重にそれを繰り返していると、重さで少し周りが垂れてきて、また真ん中に放り込む隙間が生まれていることがあるので、諦めずにぐるぐる回しながら探してみましょう。
こんな感じでやれば常に80以上は余裕で行けるようになると思います。
私もまだそれより上はツキがないと行けないので頑張ります!(`・ω・´)
最後に大事なことを言いますよ。
色を間違えない!
これが一番大事です( ´Д`)=3 フゥ
テーブルの行を長押しして、その行に対する特別な処理を行いたくてTableViewのlongpressイベントを使おうとしました。
プログラムはCoffeeScriptで書いてますので自分で試す場合はJavaScriptに変換して下さい。
出力結果:
[DEBUG] longpress> undefined undefined
行の情報が渡ってこねー(-ω-)
そこで何が呼ばれてるのかtouch系のイベントを並べて見てみると、
出力結果:
[DEBUG] touchstart> 1 TITLE-2 [DEBUG] longpress> undefined undefined [DEBUG] touchend> 1 TITLE-2 [DEBUG] click> 1 TITLE-2
touchstartでindexやrowを覚えて、longpressが起こったときに使えれば良さそうです。 覚えた情報はtouchendで初期化するとよさげ。
ところがよく見ると余計なことにclickも呼ばれている(-ω-)
longpressのでclickイベントの発火を抑えるいい方法が見つからず、結局longpressの処理内でフラグを立てclick処理で判断するというコードに落ち着きました。
あまりカッコよくはないですね。Titanium側でlongpressが検知されたらclickは呼ばない仕様にしてもらえたほうが自然な気がします。
ひょとしたらclickが呼ばれないと何かできなくなる操作があるのかなぁ。
iPhoneがiOS5.1にアップデートされて嬉しい(設定無限ループバグには泣かされましたが...)のもつかの間、私の所有しているMacBook AirはSnow Leopardのため対応しているXcodeが4.2でiOS5.1をサポートしていない事が判明(-ω-)
事情があり、まだしばらくLionには上げられないのです。
こまった、こまったといろいろ検索していてこのページを見つけてこれは?!っと思ってやってみたのです。
上記のページに載っている手順ですとiPhone Simulatorが漏れているので、それも加えた手順を紹介します。
起動しているXcodeがあれば終了しておきます。
もし入ってなければApple Developer Connection(以下ADC)からSnow Leopard用の最新Xcodeである4.2を普通にインストールしておきます。 インストールが終わったら、デスクトップにあるXcodeフォルダのマウントを捨てて消しておきましょう。 (この後、コピーコマンドを実行するときにパスが変わってしまいますので)
Xcode 4.3.1 for LionはSnow LeopardでもADCから問題なくダウンロードできますのでしてください。
ダウンロードした
xcode_4.3.1_for_lion.dmgをマウントします。 マウントするにはFinderからダブルクリックするなりして開くだけです。ターミナルを起動して、Xcode 4.3.1に含まれるiOS5.1 SDKをコピーしていきますww 下記のコマンドをコピペして実行すればできるはずです。
一部シンボリックリンクのコピーがエラーとなりましたが、とりあえず無視しました(汗)
これでXcodeを起動すればiOS5.1としてコンパイル&実行できました。 シミュレータも5.1のものが選択でき動きます。 iOS5.1のiPhoneに実機転送もできますし、ステップ実行も出来ました。
ただ、こうやって作ったiOS5.1のアプリがアップルの審査を通るかどうかは分からないので、Lionにアップデートできるまでの繋ぎと考えたほうがいいかも知れません。
また、複雑なコードで動作確認などはしていないため、根本的にどこかおかしい可能性も否定できませんので、実行する場合は自己責任でお願いします(・ω・;)
サイドバーに表示するリンクはコンテンツビューの内容によって変わることが多いはずです。
Railsにはそういう時に使える仕組みがあらかじめ用意されているので簡単です。
新しいRailsプロジェクトを作ってサイドバー上に自由にリンクを設定する方法を説明していきます。
$ rails new sidebar-sample $ cd sidebar-sample
レイアウトを自分で書くのもタルいのでBootstrap,from Twitterを使いましょう。
Gemfileに1行追加してbundleを実行します。
$ vi Gemfile #↓これを追加 gem "twitter-bootstrap-rails"
$ bundle
$ rails g bootstrap:install
$ rails g bootstrap:layout application fluid
conflict app/views/layouts/application.html.erb
Overwrite /Users/iwazawa/tmp/sidebar-sample/app/views/layouts/application.html.erb? (enter "h" for help) [Ynaqdh] Y
force app/views/layouts/application.html.erb
$ rails g scaffold Book name:string asin:string author:string price:float $ bundle exec rake db:migrate $ rm public/index.html $ vi config/routes.rb #↓これを追加 root :to => 'books#index'
$ rails s $ open http://localhost:3000/
ここまでで、こういうレイアウトでページが表示されるはずです。
まずはレイアウトファイルapp/view/layouts/application.html.erbを開いてサイドバー部分をそれぞれのビューから置き換えられるようにします。
具体的にはul.nav-list内の既存の行をカットして<%= yeld :sidebar %>に置き換えるだけです。
$ vi app/view/layouts/application.html.erb
続いてそれぞれのビューを編集します。まずはapp/view/layouts/books/index.html.erbから。
先頭にsidebarに挿入するためのコードを追加します。Rails Helperのcontent_forを使って、エイアウトファイルに書いたyeildの名前(シンボル)を指定し、ブロック内にリンクコードを列挙するだけです。
$ vi app/view/books/index.html.erb
せっかくBootstrap,from Twitterを使っているのでコンテンツ内の機能リンクはボタンっぽいUIに変更しちゃいましょう。
link_toヘルパーに:classHTML属性を追加します。CSSでbtn btn-primaryと指定することによってメインのボタンの見栄えに変わります。
ここまでで、books/indexページがこういうふうに表示されるようになりました。
app/view/layouts/books/の残りのビューも同様に変更します。
全部のメニューが同じようなのでは、気分が出ないのでapp/view/books/show.html.erbにはDB項目に入っているASINを使ってAmazonに飛ばすリンクを追加しましょう。
テーブルはBootstrap,from Twitterのスタイルを当てると非常に見栄えが良くなりますので、ちょいちょいと指定します。
ポイントはERBのコメントにも書いてあるとおり下記スタイルの適用です。
table.tabletd.span<N>a.btn-mini
一覧も綺麗になってちゃんとした(?)アプリっぽくなりました!
Railsって知らないとハマるけど、知ってると非常に楽なフレームワークですよね。
初期状態ではirbやpryで日本語を入力やペーストしてもとうまくできません。
コード書きながら試してるとやはりどうしても日本語で入力したくなることが多いです。
readlineライブラリを導入して、Rubyにもそれを含めてコンパイルすれば可能なのですが全てをソースからビルドするのはなかなか大変です。
RVMのpkgを使ってreadlineを導入し、Rubyをreinstallするのが楽だったので紹介します。
RVMでRubyをreinstallする際に、--with-readline-dirオプションに、readlineを入れるとき出力された最後の行に表示されているパスを設定すれば大丈夫です。


