2021/04/18 学習内容

【昨日】

◯ 気分転換で学習等は一切なし(週一で気分転換をするようにしています。また、日曜日は軽めにしていま

  す。)

【就職活動】

◯ 今日は応募はなし(いつも平日に集中して行ってる)

◯ その代わり、面接対応を手厚く準備

 ・ 明日、明後日と面接が続くので

PHP】(PHPというより、おさらい)

◯ オブジェクト指向について

 ・ オブジェクトは「もの」、指向は「〜を中心に」という意味で、端的に「オブジェクト(もの)を中

   心にした考え方」

 ・ 現実もお店もECサイトも「商品」、「ユーザー」、「カート」などのオブジェクトが組み合わさってで

   きている。

・ プログラムにおいても「このAコードは商品、Bコードはユーザー」という考え方で、プログラムの役割を

  明確化し、組み立てるようにコードを書く。

◯ クラス

 ・ オブジェクト指向ではクラスというオブジェクトの設計図をつくり、それを元にオブジェクトを生成す

   る。

 ・ 書き方は、classMenu {

         //クラスの内容

        }

◯ インスタンス

 ・ クラスを元に生成された実体をインスタンスという。インスタンスは「newクラス名()」で生成する。

   変数にも代入できる。また、インスタンスの生成はクラスの外で行う。

 ・ class Menu{

   }

   $menu1 = new Menu();

   $menu2 = new Menu();

【ドリル】

◯ ある3桁の整数について、100の位+10の位+1の位について、10の倍数からの差が、2以内ならTrue、それ

  以外は「10の倍数との差はAです」と出力させる。

 ・ 出力例 near_ten(117) => True

      near_ten(123) => 10の倍数との差は4です

  和が6の時、差が6ではなく、差が4というように近い方から表示できるようにする。 

◯ 回答(要点のみ)

 ・ それぞれの位の算出方法は、num/100%10 num/10%10 num%10

   これらの和を変数totalに代入

 ・ total % 10を変数remainderに代入

   このremainderを条件式に当てはめる。

   ramainderが0,1,2または8,9,ならばTrue

   remainder <= 5(3,4,5) ならば10の倍数との差はremainder

   そうでないなら(6,7)10の倍数との差は10ーremainder(remainderだと、6や7と出てしまう。)

【オリジナルアプリ】

◯ エラーメッセージの表示場所

 ・ 今まで、名前を入力していない等のエラーメッセージはページの上部にまとめて表示させていました

   が、これを各フォームの直下に表示させるように調整。

 ・ 下記の記述

<% if @user.errors.any? %>
<% end %>

 ・ 更に、各フォームの直下にも次の記述

<% if @user.errors.include?(:email) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:email).first %>
<% end %>

◯ エラーメッセージの日本語化

 ・ まずはGemに次の記述 gem 'i18n'

 ・ ターミナルでbundle install

 ・ config/application.rbに次の記述

   # 日本語の言語設定
   config.i18n.default_locale = :ja

 ・ config/locales/devise.ja.ymlファイルを作り、そのファイルに次の内容をコピー。  

   https://github.com/tigrish/devise-i18n/blob/master/rails/locales/ja.yml

 ・ 上記だけでは足りない部分は、config/locales/ja.ymlファイルを作成し、次の記述

ja:
  attributes:
   user:
     username: ユーザー名
     name: 名前
     birthday: 生年月日

 ・ サーバーを再起動すると、エラ〜メッセージが日本語で表示される。

◯ パスワードの最低文字数を設定する

 ・ userモデルに次の記述

   devise: varidatable, password_length 8..128

   これで最低8文字を入力させるパスワード設定入力設定になる(デフォルトは6文字)

◯ ログアウトの設定も終わったので、後はログインのページを整え、新規登録と同様の設定後、単体テスト

  でとりあえずユーザー管理機能は一区切り。

2021/04/16 学習内容

【就職活動】

◯ とりあえず今週分の応募は終わり

◯ 来週の面接に向けての準備(CAとの面談も実施)

◯ 1社は書類選考通ったのでweb検定を受講

 

PHP

◯ 今までの復習なのでさらっと

 ・ 連想配列の値を取り出すのは、$配列名[キー]

 ・ 複数の連想配列を取り出すときは、

   foreach($配列名 as $変数){

    echo $変数[キー]

   }

 

【オリジナルアプリ】

◯ 昨日の、生年月日のエラーメッセージはとりあえず解決(position: relative;とposition: avsolut;)

◯ 今回はせっかくなのでエラーメッセージを日本語にしようと思い、Gemも導入して作業していると、

  ja.ymlが読み込めないエラーが発生。場所は生年月日のf.date_selectの部分。これが解決できればすすっ

  と行きそうだけど。

2021/04/15 学習内容

【就職活動】

◯ 応募は少なめ

◯ 来週からの面接に向けての準備

PHP

◯ 引き続き復習なので新しいものはなし。

 ・ 今日学習したのは条件分岐式、FizzBuzz問題、配列から数値を取り出し合計を返す問題等

【オリジナルアプリ】

◯ ユーザー新規登録機能を進めるも、生年月日のエラーメッセージだけ置きたい場所にならないので、再度

  確認。

 

学習時間は変わらないけど文字は少なめ

2021/04/14 学習

【就職活動】

◯ 応募を数社。ちょっとづついい反応を示している会社も来てくれたので面接対応も怠らず。

・ 来週は少なくとも1社は業務説明(おそらく面接も併せてだろう)

PHP

◯ 現時点での復習(新しいものは無し)

・ よく、; つけ忘れてエラーが出る(まだ慣れない)

【ドリルの復習】

◯ 任意の3つの数値の合計を出力するメソッドを作る。ただし重複する数値は合計にカウントしない(1,2,3   => 6    3,3,4 => 4) 回答は次の通り

def lone_sum(ary)

 uniq_nums = []     ① 配列を用意。この中に重複しない要素を入れていく。

 ary.each do |num|    ② 入力された数値の分だけ繰り返す

  count = 0                         

  ary.each do | i |               ③ 例えば、3,3,4が入力されていると、num(3)==i(3)となり、

   if num == i       countは1増える。次も3==3でcountは更に+1。

    count += 1      最後は4==3でcountは最終的に2

   end

  end

  if count < 2      ④ count(重複した数)が0か1なら①の配列にnumが追加される。

   uniq_nums << num   今回の3はcountが2なので重複することとなり、配列には追加されない。

  end           これを残りの3,4についても繰り返される。(今回は4だけが配列に加わる)

 end

 

 sum = 0              ⑤ こっちは配列内の合計を出す。

 uniq_nums.each do |uniq_num|   ⑥ 配列内の分だけ足し算を繰り返す。  

  sum += sum + uniq_num       (今回は0+4=4の1回だけ)

 end

 

 puts sum             ⑦ 最後にsumを出力

end

【オリジナルアプリ】

◯ ひたすらビューの作成

・ カリキュラムと違い0からなので時間がかかる(波に乗るとサクサクできるけど)

・ 後日にメイン部分の背景を写真にしたいけど、これやると文字が読みにくくなるのをどうしようか?

2021/04/13 学習内容

【就職活動】

◯ 数は少ないが、数社からはまずは面接の検討したい旨の連絡あり。

◯ 応募も数社実施。

PHP

◯ セレクトボックスの作成
・ <select>タグの中に<option>タグを並べることで作成できる。
<select>
 <option>りんご</option>
 <option>みかん</option>
</select>
・ 選んだ選択肢の値を渡すには、<select>タグにname属性を指定する($_POSTが値を受け取る)。
  <option>タグのvalue属性が送信される値。
<select name=“fruit">
 <option value=“apple">りんご</option>
 <option value=“banana">バナナ</option>
</select>
echo $_POST[‘fruit’];
//フォームでりんごが選ばれていたらappleを受け取る。

【ドリルの復習】

◯ 口座に10万円の預金があり、そこからお金を引き出すプログラムを作成する。

  条件 引き落とすときは手数料 110円がかかる。

     AA円引き落としました。残高はBB円です と表示する。

     残高が足りない時は「残高不足です」と表示する。

◯ 回答

def withdraw(balance,amount) ①

 fee = 110 ②

 if balance >= (amount + fee) ③

  balance -= (amount + fee) ④

   puts "#{amount}円引き落としました。残高は#{balance}円です"

 else

  puts "残高不足です"

 end

end

balance = 100000

puts "いくら引き落としますか?"

amount = gets.to_i

withdraw(balance,amount)

① 預金と今回引き落とす額、2つの引数を用意

② 手数料を忘れないように注意

③ 引き落とした時と引き落とせなかった時の条件分岐式を作成

④ 残高を出力するための式 

【オリジナルアプリ】

◯ トップページ微修正(時間かかった)

◯ ユーザー管理のためのdevise導入

 ・ bundle installの後に、rails g devise:installをするはずが、:をつけ忘れてしまう。

 ・ rails db;rollbackをして、rails d model install。

 ・ この後に本来のコマンドを実行して無事deviseを導入。

 

2021/04/12 学習内容

【就職活動】

◯ 少しづつ件数を増やしていく(今日も数社応募済)。

PHP

◯ 戻り値
・ 関数は値を返すことが出来て、この値のことを戻り値と呼ぶ。
  関数を実行した結果、その実行部分が戻り値に置きかわるイメージ。
  戻り値は return で指定する。
$sum = getfSum (1,3);  実行されると値が戻り値(1+3)に置き換わる
echo $sum;         結果は4
    ↑
function getSum($sum1,$sum2){      
 return $sum1+$sum2;
}
◯ PHPでのフォーム作成
・ フォームを作りたい時は<form>タグを使う。
・ action属性にはデータを渡す先のURL指定する。
・ method属性には値の送信方法を記載する。getは送信される値がURLに表示され、postだと表示されない。
  <form action=“url” method=“post”>
  // ここにフォームの内容を記載
  </form>
◯ テキストボックスをつくる
・ <input type=“text”>でテキストボックス(改行がない)を作れる。
  name属性は入力された値を取得するときに使う名前。後にフォームのデータを受け取るときに使う。
  <input>タグは閉じタグがいらない。
  <input type=“text” name=“email”>
・ 改行を含むテキストボックスは<textarea>タグを使う。
  name属性は上に同じ。
  閉じタグが必要なので注意。
  <textarea name=“email"></textarea>  
◯ 送信ボタンをつくる
・ <input type=“submit” value=“送信する">でつくれる。
  value属性には、指定された値がボタン上に表示される。
◯ フォームのデータを受けとる
・ フォームで送信した値を受け取るには、$_POSTを使う。
・ $_POSTは連想配列になっている。[ ]の中に、<input>や<textarea>のname属性に指定した値を入れることで、送信した値を受け取る
  ことができる。
 
<?PHP echo $_post[’name’]; ?> これでname属性の値を受け取る
 
[ ]の中身はこうなっている (フォームに伊藤と入力された場合)
Array (
 ’name’ => ‘伊藤’
)
 【ドリルの復習】
◯ 正の整数を入力する。その整数が10の倍数からの差が2以内ならTrue、それ以外はFalseを出力するメソ
  ッドをつくる。
 ◯ 回答
def near_ten(integer)
 num = integer % 10
 if num <= 2 || num >= 8
  puts "True"
 else
  puts "False"
 end
end 
 ◯ ポイント
・ 可読性のためにも、変数numに代入
  %10とすることで、余りが0,1,2,8,9ならばTrueという式が作れる。
・ if num <= 2 || num >= 8 この式に当てはまればTrue、それ以外はFalseを出力する条件分岐式を作る。
・ 111 % 10 == 1 結果はTrue 37 % 10 == 7 結果はFalse  
【オリジナルアプリ作成】
◯ 自動デプロイの設定終了
・ ローカルにて、bundle exec cap production deploy
  このコマンドでちょちょいのちょい
  メモアプリにまとめるのは明日

2021/04/11 学習内容

【オリジナルアプリ】

◯ 昨日のエラーを解消。原因はcategory.jsのファイルの最後の記述にある }) これを )} と逆にしていた

  だけ。

・ Webpacker can't find applicationなどの表示が出たので、webpacker.ymlの関連で調べてたが、上記の通

  りで解決。ActionView::Template::Errorの場合はまずビューから確認する癖をつけたほうが良さそう。

◯ Webサーバーの設定

◯ デプロイを自動化する設定(これはまだ途中)

【今日撮った写真】

f:id:ST85304301:20210411174828j:plain