万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

第3弾 Ruby on Railsの無料勉強会

http://atnd.org/events/21298

これ参加した。

RubyRails古すぎてそこからだ。遅刻したしね。

sudo port -d selfupdate
sudo port upgrade outdated
sudo port upgrade installed

・新しいRubyいれる

sudo port upgrade ruby
port installed ruby 

・新しいRailsいれる

sudo gem update -r rails
 ||<
  
Controller(インスタンス)→ View ヘルパー モデル
  http://www10.atwiki.jp/ccqofinfo/pages/99.html
  
  Rails App
↓
DB(SQL)1つ
↓
テーブル Book
↓
コントローラー + モデル
↓
Debugツール + Console

3からrailsコマンドに変わった(rakeでない)

・新規作成
>|ruby|
rails new rails_test

DB設定の中身


・Gemfile

gem 'rake', '0.8.7' #追加
gem 'sass-rails' #追加

編集したら

bundle install
bundle update

・モデル作成

rake generate model book

→エラー出た

rake generate model book
rake aborted!
You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.8.7. Consider using bundle exec.

面倒なので
Gemfileの指定を消す

gem 'rake'

他の参加者のブログ拝見
http://d.hatena.ne.jp/junnemoto/
わからないので、もうrakeをダウングレードする

・現状のrakeのバージョン消す

sudo gem uninstall rake --version=0.9.2.2

もういっちょ

rake generate model book
rake aborted!
You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.

あ?更に上位のバージョンか。

sudo gem uninstall rake --version=0.9.0

このrakeも消す

もういっちょ

rake generate model book
(in /Users/shinriyo/Documents/rails_app/rails_test)
rake aborted!
dlopen(/Library/Ruby/Gems/1.8/gems/sqlite3-1.3.4/lib/sqlite3/sqlite3_native.bundle, 9): no suitable image found.  Did find:
	/Library/Ruby/Gems/1.8/gems/sqlite3-1.3.4/lib/sqlite3/sqlite3_native.bundle: mach-o, but wrong architecture - /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.4/lib/sqlite3/sqlite3_native.bundle
/Users/shinriyo/Documents/rails_app/rails_test/Rakefile:5
(See full trace by running task with --trace)

もうあきらめる

上手く行った時の手順だけのこす

rake db:migrate

・DB設定

#省略
t.string, bookname
t.string, title
#省略

・database.yml
 adapterはmysql2
 database: rails_test


テストのため、コントローラのメソッド上で

debugger

と書くと、そこでひっかかってくれる。

ビューに書くときは

<% debugger %>


第1回 横浜へなちょこUnity勉強会

http://atnd.org/events/20574

これも、ハシゴで参加した。第0回もあったよう。

  • 発表: Unity3Dにおけるコードの再利用とかなんとか by @fum1h1ro

・Unity
コピペ
→ありえん
元を修正するときはテスト以外は避けたい

クラスの継承
敵の元となる規定クラス常套手段


C#について

「++C++;// 未確認飛行 C」ってサイト
http://ufcpp.net/index.html
このサイトがいい

http://ufcpp.net/study/csharp/ap_ver4.html
このへんにはC#4.0の説明もあるし

http://ufcpp.net/study/csharp/sp3_comprehensions.html
リスト内包表記とかもある C#のね。

C#ラムダ式とか使えるので、短く書けるぜ!

  • まずはこれらを宣言
 // Enumerable.RangeとかWhereを使うのに必要
using System.Linq;
// IEnumerableに必要
using System.Collections.Generic;
  • 0〜9の数から偶数を取り出すの書いてみたよ
// 0〜9を生成。10は含まない
IEnumerable<int> ten = Enumerable.Range(0, 10); // (1)
// 2で割って余りが0(つまり偶数)のを取り出して格納
IEnumerable<int> evens = from n in ten where n % 2 == 0 select n; // (2)
foreach (int even in evens) {
		Debug.Log(even); // => 0, 2, 4, 8
}	
IEnumerable<int> evens = ten.Where(n => n % 2 == 0);

↑さらに(2)を短くした

IEnumerable<int> evens = ten.Where( delegate(int n) { return n % 2 == 0; } );

↑「n => n」っていうのはラムダ式なので展開?ていうか、delegateを使った匿名メソッドで書くとなので(2)はこうもできる

以下の2つは同じ

  delegate(int x, int y) { return x + y; }
  (x, y) => x + y

さらに。。。

bool hoge (int n) {
	return n % 2 == 0;	
}

こんなメソッドを別に作り、

IEnumerable<int> evens = ten.Where( hoge ); // (3)

先ほどの(2)をこうすることもOK。hogeは()がいらないみたい。

IEnumerable<int> evens = Enumerable.Range(0,10).Where( hoge );

(1)と(3)を合体!

IEnumerable<int> evens = Enumerable.Range(0,10).Where(n => n % 2 == 0);

メソッドhogeにしてしまったので、さらにそれをラムダ式のやつにしたら最強に短い!