Rails tutorial 3~

8/9 RailsTutorial 3章
8/10 RailsTutorial4章
8/10は14時間近く勉強していたにも関わらず1章しか進まず、少し気になることがあると調べ始めてしまい全く進まなくなってしまう。

gitコマンド

削除コマンド
git branch -d ブランチ名
マージ済みのブランチのみ削除可能

git branch -D ブランチ名
条件なし削除

rails console 特殊文字

print "aiueo¥n"
aiueo¥n=> nil
print 'aiueo¥n'
aiueo¥n=> nil

特殊文字が使えずに悩んだが、調べた所macではoption+¥で\が入力できるようです。
悩んで時間を無駄にしました。

mapとeach

rails tutorial 4.3.2 でブロックの説明があったが、mapとeachの違いが分からなかったので調べました。

mapは繰り返し処理の結果を配列として出力する
繰り返し処理をして配列として使う時に使用
eachは出力される戻り値は元のまま
普通の繰り返し処理に使用

演習4.3.2.2

def yeller(str)
str.map(&:join)
end
=> :yeller
yeller(['o','l','d'])
Traceback (most recent call last):
3: from (irb):153
2: from (irb):151:in yeller' 1: from (irb):151:inmap'
NoMethodError (undefined method `join' for"o":String)

.

def yeller(str)
str.map(&:upcase)
end
=> :yeller
yeller(['o','l','d'])
=> ["O", "L", "D"]

演習問題の順番通りにjoinから実行した結果うまく動かず、この結果からmapは繰り返し処理であり配列から1つずつ要素を取り出していることを確認しました。

def yeller(str)
str.map { |s| s.upcase.join }
end
=> :yeller
yeller(['o', 'l', 'd'])
Traceback (most recent call last):
4: from (irb):171
3: from (irb):169:in yeller' 2: from (irb):169:inmap'
1: from (irb):169:in block in yeller' NoMethodError (undefined methodjoin' for "O":String)

.

def yeller(s)
s.map(&:upcase).join
end
=> :yeller
yeller(['o','l','d'])
=> "OLD"

上の2つの結果から恐らくですが
s.map(&:upcase).join
の部分は
s.map(&:upcase)
が繰り返しで最後まで処理された後に
.join
の処理が実行されているということでしょうか。

rails tutorial

GitHubリポジトリ private public

GitHubリポジトリをpublicで作っていたので、privateに変えようと思ったが、設定がどこにあるのか分からなかったので調べた。
GitHubの画面右上のアイコンを押してsettingから一番下のDanger Zoneの一番上Change repository visibilityでChage visibilityを押すと変更できる。

データベースのリセット

2章のtoy_appで適当にいじり回していたらusersのidがどこまでも増えていってしまったので、リセットしたいなと思い調べました。
rails db:resetでリセットできた。
rails db:migrate:resetでもできる。
違いはよく分からない。

理解できていない所

Rails tutorial2章まで終わり、理解できずに飛ばした所はモデル同士の関連付けとヴァリデーションの設定。
詰まって20分調べても分からなかったら飛ばすというやり方で進めています。

初めてのGitとGithub

初めてのGitを始めました。

事前準備が終わって、いよいよコマンドを使っていくセクション3の最初から詰まりました。
デスクトップにフォルダを作ってその中にtxtファイルを作ったのですが、iCloud Drive の下にデスクトップが存在していて、アドレスがわかりませんでした。

色々調べた所、 Finderから移動したいフォルダをターミナルにDrag&Dropするとパスが入力されることがわかったのでそれで対応しました。

自分の環境では cd /Users/ユーザー名/Desktop/移動したいフォルダ¥ これで移動できました。
最後に半角スペースが二つ入っています。

cd ..でデスクトップに移動できているはずですが、lsで何も表示されません。よくわかりません。

セクション3-13

Gitで管理するディレクトリを作成して
git init
git add
git commit
git remote add
origingit@github.com:name/repositoryname.git
と進んだ後
git push -u origin master
を入力したら
fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.
こんなエラーが出てしまいました。

エラーメッセージで検索していたらこちらの記事を見つけたので参考にさせていただきました。
fatal: Could not read from remote repository.のエラーたいしょ
こちらの記事の通りにsshの設定をした所無事に実行できました。

初めてのGit終了。

ウェブ開発入門完全攻略コース git

セクション16:Git終了

とりあえず最後まで終わりました。
途中MySQLRailsの所で理解できていないことは多々ありましたが、とりあえず最後まで進めました。
基礎的なことはなんとなくわかるようになったのかなというレベルですね。

この後やっていこうと考えていること

この教材をやり始めた時は、一周終わったらRails Tutorialをやってみる予定でしたがUdemyの
Git:はじめてのGitとGitHub
この教材をやってからRails Tutorialをやっていこうかなと思っています。

最近出勤前に勉強をするために早起きをしようと思っているのですが、24時頃まで眠くならないので困っています。
22時に寝て朝6時頃には起きる生活をしてみたい。

ウェブ開発入門完全攻略コース セクション16

ついに最後のセクションのgit入門に到達しました。
途中わからないことだらけですが、適当に調べてわかったつもりになりながら進めています。

git addは必要なのか
調べたら出てきましたが、実務を経験してみないとわからなそうです。

ウェブ開発入門完全攻略コース Ruby入門

セクション13 Ruby入門

cloud9のエディタでmacの上下のカーソル移動が使えなくて不便に感じたので、設定を変更した方がいいと思いました。
control + p と control + n のkeybindingsを変更すればいいだけです。

演習:条件分岐

条件分岐の演習ですが、ifでやっても面白くないのでcaseでやろうと思ったのですが。
caseは一致するものを判断することしかできないのですね。

age = 11
case age
when age >= 12 then
    puts "5,000円"
when age >= 6 && age < 12 then
    puts "2,500円"
when age <6 then
    puts "1,000円"
end

これだと思い通りに動きませんでした。 範囲の指定は出来るようですが、関係演算子は使えないみたいです。

204.配列

配列の作成で出てきた z = (0..10).to_a のaは.classでみたらarrayでした。

209.繰り返し処理 while

無限ループからの脱出のコマンドですが、自分の環境ではcontrol + shift + cでした。

セクション15:Ruby on Rails5入門

徐々に理解するというより指示された通りに入力して行く作業になってきました。
最初のうちはこれで進んでいっていいのだろうかという感じです。

本日の進行

セクション12-セクション15の252まで

サラリーマン夜の勉強 JavaScript DOM操作

JavaScript DOM操作

演習:DOM操作で悩んだ所

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>演習:DOM</title>
  </head>
  <body>
    <ul id="lists">
    </ul>
    <input type="text" id="newList">
    <input type="button" value="追加" onclick="append()">
    <script src="js/exercise.js"></script>
  </body>
</html>
function append() {
  // inputから入力内容を取得
  var newList = document.getElementById("newList").value;
  // li要素を作成
  var li = document.createElement("li");
  // liタグの要素に、テキストノード text を追加
  li.appendChild(text);
  // idgalistsのulタグに、liを追加
  lists.appendChild(li);

コンソールに出力して変数の中身をみても問題なさそうだったので、最初はこれでなぜできないのかと悩んでしまいました。
結構な時間調べましたがわからず解答をみたところ、問題点はnewListがテキストノードになっていないことが原因でした。
ノードをDOMツリーに追加するappendChildは考えれば当然ですが、ノード以外のものを追加しようとするとエラーになりますね。