2013年8月8日木曜日

Head First Rails 4 Chapter2

$ rails new MeBay
$ cd MeBay
$ rails g model ad name:string description:text price:decimal seller_id:integer email:string img_url:string
$ rake db:migrate
$ curl -o db/development.sqlite3 http://www.headfirstlabs.com/books/hfrails/code/development.sqlite3
$ rails g controller ads

app/views/ads/show.html.erb の作成は変更なし
config/routes.rb はコメントを参考に以下のように設定して動作を確認できた。
Rubyらしくより規約に近づいた設定になっている。

MeBay::Application.routes.draw do
  root 'welcome#index'
  get 'ads/:id' => 'ads#show'
end

$ rails server

indexの追加、viewとcontrollerは変更なし
config/routes.rb は下記を追記

get 'ads/' => 'ads#index'

静的コンテンツの配置は仕様が変更になっている。ハマりそうだったので今回はスルー。

2013年8月6日火曜日

Head First Rails 4

バージョンアップに伴い再度チャレンジ

Chapter1

$ rails new tickets
$ cd tickets
$ rails g scaffold ticket name:string seat_id_seq:string address:text price_paid:decimal email_address:string
$ rake db:migrate
$ rails server

ラベル修正は基本的に差異はない。new.html.erbとedit.html.erbの記述が_form.html.erbにまとまっていてDRYしてる。

$ rails g migratation AddPhoneToTickets phone:string
$ rake db:migrate

ラベル修正は直前のと同様。Rails2.xではこの変更で十分だったが、Rails4でのscaffoldはcontrollerの作りが少し違うためこのままだとPhoneが空欄のままになっている。dbからデータを取得するカラムを指定しており、こちらにもPhoneを追加してあげる必要があった。具体的には下記の通り。

$ vi app/controllers/tickets_controller.rb

# ticket_paramsを修正
# phoneを追加してあげる必要がある
params.require(:ticket).permit(:name, :seat_id_seq, :address, :price_paid, :email_address, :phone)

イベントの追加も同じように

$ rails g scaffold event artist:string description:text price_low:decimal price_high:decimal event_date:date
$ rake db:migrate

2013年8月5日月曜日

Ruby2.0+Rails4へアップデート


Mac OS X 10.8.4
Ruby 1.8.7
Rails 2.3.5

HomeBrewインストール済み

$ brew update
$ brew install rbenv
$ brew install ruby-build
$ vi ~/.bash_profile

# 以下の2行を追記
# Ruby
eval "$(rbenv init -)"

$ source ~/.bash_profile

$ brew install readline
$ brew install openssl

$ RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install 2.0.0-p247

$ rbenv global 2.0.0-p247
$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]

$ gem install rails
$ rails -v
Rails 4.0.0

参考:
Ruby on Rails http://rubyonrails.org

MacにRubyをインストールする時のメモ

[Mac]rbenvを使ってRuby2.0をインストール

2013年7月31日水曜日

format not a string literal and no format arguments

PowerVRのサンプルコードをビルドしていてこのエラーに遭遇したので備忘録として残しておきます。

以下のリンクはcocos2d-xのようですが、似たような状態かもしれません。
http://www.cocos2d-x.org/boards/6/topics/32369?r=32373

Try to replace__android_log_print(ANDROID_LOG_DEBUG, "cocos2d-x debug info", buf);with__android_log_print(ANDROID_LOG_DEBUG, "cocos2d-x debug info", "%s", buf);Does it help?

追記:
addon-powervr_graphics_sdk_3_1_-_opengl_es2_0-imagination_technologies_ltd-10/shell/OS/Android/PVRShellOS.cpp
PVRShellInit::OsDisplayDebugString
_android_log_printを上記のように書き換えることでビルド成功

2013年6月21日金曜日

Android+facebook

Facebook SDK for Androidが提供されています。
https://developers.facebook.com/android/

ドキュメントも充実しています。
Shareボタンの実装には以下のドキュメントを参考になります。
https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/
https://developers.facebook.com/docs/howtos/androidsdk/3.0/publish-to-feed/


ハマりどころとしては、Android端末にインストールされているfacebookアプリのバージョンが古いと認証がうまくいかないようです。

2012年3月9日金曜日

AndroidのBufferedReader

サイズ指定なしのコンストラクタを使っていると、

Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.

がログに出力されることがある。Infoレベルなので気にしなくても良いのかもしれないですが、試しに8192をサイズ指定するとログに出力されなくなった。

http://developer.android.com/reference/java/io/BufferedReader.html

BufferedReaderのサイズ指定なしのコンストラクタの説明を読むと8192を渡すよと読み取れるけど、実際は違っている? ソースは未確認。