Railsの会 15日目「メソッド・データ構造」
今回の範囲
agenda
- オブジェクトの種類
- メソッドの定義
- ブロック
1. オブジェクトの種類
length 文字の長さを調べる
>> "foobar".length # 文字列に "length" というメッセージを送る => 6
? 論理値で返す
例
>> "foobar".empty? => false >> "".empty? => true
メソッドチェーン メソッド連続的に呼び出すこと
例
>> a << "foo" << "bar" # 配列に連続して追加する => [42, 8, 17, 6, 7, "foo", "bar"]
配列の種類
1 to_a メソッドを使う
>> (0..9).to_a # 丸かっこを使い、範囲オブジェクトに対してto_aを呼びましょう => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2 %w (配列)
>> a = %w[foo bar baz quux] # %wを使って文字列の配列に変換 => ["foo", "bar", "baz", "quux"]
3 [ ] を使った書き方
>> a[0..2] => ["foo", "bar", "baz"]
数字を使った配列の指定方法
>> a = [42, 8, 17]
=> [42, 8, 17]
>> a[0] # Rubyでは角かっこで配列にアクセスする
=> 42
>> a[1]
=> 8
>> a[2]
=> 17
>> a[-1] # 配列の添字はマイナスにもなれる! == last
=> 17
その他の指定方法
>> a # 配列「a」の内容を確認する
=> [42, 8, 17]
>> a.first=> 42>> a.second #基本使わない=> 8
>> a.last
=> 17
>> a.last == a[-1] # == を使って比較する
=> true
2.メソッドの定義
デフォルトの値を返さなくていい時
def string_message(str = '')
strに値が絶対入る場合は省略してもよい。
nulが入る時は、初期値を上記のようにblankに指定しないといけない。
値の追加方法(配列)
>> a.push(6) # 6を配列に追加する
=> [42, 8, 17, 6]
>> a << 7 # 7を配列に追加する
=> [42, 8, 17, 6, 7]
>> a << "foo" << "bar" # 配列に連続して追加する
=> [42, 8, 17, 6, 7, "foo", "bar"]
3.ブロック
処理が一つの時の書き方
>> (1..5).each { |i| puts 2 * i }
2
4
6
8
10
=> 1..5
処理が2つ以上の時の書き方
>> (1..5).each do | i |
?> puts 2 * i
>> end
2
4
6
8
10
=> 1..5
mapとeachの違い
map 変更したものを返す ( 配列 (中身を変更したい時)
each 実行結果を返す ( 中身の処理を変えたい時)
基本mapで書くとどの処理でも通る。
>> %w[A B C].map { |char| char.downcase }
=> ["a", "b", "c"]
>> %w[A B C].map(&:downcase) #省略した書き方( char
=> ["a", "b", "c"]
test ブロック
test "should get home" do
get static_pages_home_url
assert_response :success
assert_select "title", "Ruby on Rails Tutorial Sample App"
end
今までのおさらい
obj-c json受け渡し
この方法はあまりおすすめしない。汚染
//jsonで内容取得 // データの取得 NSBundle *bnd01 = [NSBundle mainBundle]; NSString *pth01 = [bnd01 pathForResource:@"q_fim"ofType:@"json"]; NSURL *url01 = [NSURL fileURLWithPath:pth01]; NSURLRequest *req01 = [NSURLRequest requestWithURL:url01]; NSData *dat01 = [NSURLConnection sendSynchronousRequest:req01 returningResponse:nil error:nil]; // JSONオブジェクトの取得 NSDictionary *cor01 =(NSDictionary *) [NSJSONSerialization JSONObjectWithData:dat01 options:NSJSONReadingMutableContainers // 基本的にはこれを選ぶ error:nil]; _q1.text = cor01[@"fim_q"][0][@"q1_food"]; _q3.text = cor01[@"fim_q"][15][@"q4_outerwear"]; } ----------------------------------------- @interface AppDelegate : UIResponder { // グローバル変数 NSString *hoge } @property (nonatomic, retain) NSString *hoge; すると、ViewController.m で参照や設定が可能に。 // グローバル変数に保存 AppDelegate* delegate = [[UIApplication sharedApplication] delegate];
railsの会 9日目 「@ Haml Jade Slim」
今日の範囲です。
@Userとは
基本@がつくものはviewでも使用出来る。
それi以外はviewにいかない。
変数に一覧が保存されると、viewを呼び出すよ!
AppricationRecord とは
機能
・DBの操作
・User.all を呼び出す
index.html.erb (リスト2.0)
<% @users.each do |user| %>
この部分で書き出し。
順番
viewが持っている内容書き出し→コントローラーがhtmlを送信
→html表示
特集 ツール [haml jade slim]
haml はむる [HTML abstracion markup language]
特徴
・記述が少なくて済む
・Rubyが使える
・変数宣言、条件分岐、繰り返し処理が出来る
↓変換
ルール
・%タグ名
・-# コメント
・インデントは半角2スペース
実践
Hamlを使う方法、入門編。 今さらですが… やってみると意外と良い。 | Go-Nextブログ
jade じぇいど
・JS Temlates(JST)の一種。(Undersore.js Handlebars.jsが有名)
・軽量マークアップ言語。
・Haml Slimに似てる
・記述量がhtmlよりも少ないため、コードが肥大化しても綺麗。
必要なもの Node.js → jade
ルール
・要素のテキストはタグの後ろ、半角スペースを空けて記載
・要素の入れ子は 改行+インデント
・それ以外の属性(src ,name)は( )で囲い、カンマで区切る 等
軽量なマークアップ言語 Jade 入門 からの Gulp でコンパイルまで – Gulp で作る Web フロントエンド開発環境 #5 – NET BIZ DIV. TECH BLOG
実践をしたい方向け
slim
Rubyのテンプレートエンジン
特徴
・拡張子 .Slim
・RailsプロジェクトまたはSinatara(padorino)のテンプレ
・高速、軽量
・HTMLの代替などに使われる
・インデント重要
docker メモ (コマンド一覧)
Dockerとは? 仮想管理ツール (VMに似てる)
コンテナとは
基本 CentOS Linax
言語 PHP Ruby
DB Psql Mysql
のこと。
要は簡単に環境が作れます。
(まずはdocker runで挙動を見て、設定ファイルと照らし合わせてみよう)
Docker composeとは?
複数のDockerコンテナをつなげて一つの動作する環境を作るよ!!
これやで!⇩ (docker-compose ps)で確認できる。
--------------------------------------------------------------------------
Name Command State Ports
----------------------------------------------------------------------------
laradock_applications_1 /true Exit 0
laradock_nginx_1 nginx Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1 php-fpm Up 9000/tcp
laradock_postgres_1 /docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp
laradock_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
—————————————————————————————
コマンド一覧(初期設定編)
vi docker-compose.yml //設定ファイル
docker //docker起動
docker ps //今インストールされているコンテナを確認
docker-compose //複数のコンテナの構築・実行を自動化する(rpm start みないなもの)
docker-compose up -d nginx redid postgres //
netstat //netの状態を確認する
brew remove postgresql
docker-compose up -d nginx redid postgres //nginx とpsqlをバックグラウンドで起動
netstat | grep :5432 //利用しているport番号からどのプロセスが利用しているか
phpbrew list //php 種類確認
phpbrew switch 5.6.26 //切り替え
source $HOME/.phpbrew/bashrc //再読込させる(切り替えの時必須)
php -v //phpversion確認
composer update //アップデート
ps aux //a:自分以外 u:ユーザ名・時刻 x:制御外のプロセス確認
ps aux | grep postures //文字列検索 postures この文字のみ一覧表示
ps auxwww | grep postgres //無制限で出力 |postgres検索
docker exec -it laradock_workspace_1 bash//起動
成功例 root@hogehogehoge:/var/www#
docker exec -it laradock_workspace_1 bash -user=laradock // ユーザ指定
docker exec -it -user=laradock laradock_workspace_1 bash
docker-compose stop && docker-compose up -d nginx redid postgres //停止
————————————————————————
おまけ
localhost と打つと
http://localhost/ Lalabel がでると成功
http://localhost/api apiのページ
git に入るとlalavelは自動起動 する。
laradock subモジュールで 最初にデータが入るファイルらしい
設定ファイルの中 (docker-compose.yml)
volumes : 👉ログファイルを記載
docker-compose stop で全てを終わらせる。