2019/10/10_チェリー本(3日目)
はじめに
台風19号で家がぶっ壊れた時に避難する準備をしてたら、こんな時間に…
しかし、読書はちょっとだけちゃんとしました。
読んだ本
本編
読んだページ数
- 第2章(P45〜P56)
新しく知ったこと
配列を連結して、1つの文字列にする
["台","風","19","号"].join #=>"台風19号"
文字列を繰り返し表示する
mo = 'も' * 8 puts "す#{mo}のうち" #=> "すもももももももものうち" # 「も」が8回繰り返し表示される
&&と||の優先順位(論理演算子)
&&
と||
の優先順位は、&&
が高いA || B && C
は以下の式と同じように解釈される
→A || ( B && C )
※&&
が優先的に処理される
参考
- 同じ意味を持つ演算子
and
とor
を使うと…
※【前提】and
とor
の優先順位は、同じA || B && C
は以下のように解釈される(A || B) && C
※優先順位が同じだから、左側から優先的に処理される
あとがき
全444ページで、1日10ページ進めるとしたら、読み終わる日は…
require "date" Date.today + (444 - 56)/10 #=> 2019-11-18
11月18日でした!
以上
2019/10/09_チェリー本(2日目)
はじめに
今日も30分この本を読みました。
読んだ本
本編
読んだページ数
- 第2章(P27〜P45)
新しく知ったこと
数列でカンマ区切りをしたいとき
- 数列には
_
を含めることができる - 100万円は
100_000_000
と書くことができる。
(初見だったら、きっと何表現しているのかわからないと思いました...)
累乗(べき乗)
**
で計算できる- 例)
3 ** 3 = 9
- 例)
真偽(trueか?falseか?)
(nilも偽になること、すっかり忘れそうだったので…)
%記法で文字列を作る
- シングルクオートで囲みたいとき→
%q
- ダブルクオートで囲みたいとき→
%Q
- 区切り文字は任意の記号でOK
!
でも?
でも{}
でもOK
# 例(シングルクオート) %q!こんにちは! # ↑`こんにちは`になる # 例(ダブルクオート) %Q{こんにちは} # ↑”こんにちは”になる
%! !
で囲んでもダブルクオートになる
(Q
やq
はクオートの頭文字?)
ヒアドキュメント(行指向文字列リテラル)
- 文字列に改行を含めたい場合は、ヒアドキュメントを使うと、スッキリ書くことができる
- ヒアドキュメントは
<<識別子 識別子
- ヒアドキュメント内では式展開が使える
# 例 # 識別子として「text」を使用 message = <<text これは ヒ ア ド キュ メ ン ト です。 text puts message #=> これは # ヒ # ア # ド # キュ # メ # ン # ト # です。
(リテラル(litetal)は「(形)文字の」と言う意味らしいです…)
以上
2019/10/08_チェリー本(1日目)
はじめに
最近、個人開発をしており、そもそもRubyの知識がないなと思い知らされました。
なので、今日から毎日少しずつこの本読んで、知らなかったことを記録していきたいと思います。
(1日30分目安)
読む本
本編
読んだページ数
- 第1章(終了)
- 第2章(〜P27まで)
新しく知ったこと
ローカル変数
- 入門書の序盤によく出てくる変数は「ローカル変数」と言われる
#例 age = 100056 name = "デーモン小暮" role = " 閣下"
(ローカル変数って名前、知りませんでした…)
文字列のダブルクオートとシングルクオートの違い
機能 | ダブルクオート"" |
シングルクオート'' |
---|---|---|
式展開#{} |
○ | ✕ |
バックスラッシュ記法 (改行文字\n など) |
○ | ✕ |
(とりあえず、""
使っておけば間違いないってことっすかね…)
参考
あとがき
序盤の基礎な項目での知らないことって、こまごました知らなくても平気そうな知識に偏るなと思いました。
明日からは、もうちょうスピード上げて進めたいと思います!
2019/09/28_アールべンブ(Rubyのバージョン切り替え)
はじめに
Rubyのversion2.5で作ったアプリを立ち上げようとしたところ、rbenvのバージョン切り替えってどうやるんだ...?
となったので、切り替え方法記録します。
方法
現在のバージョン等を確認
- まず、現在適用されているバージョンと、インストール済みのバージョンを確認
- 特定のプロジェクトで適用しているバージョンを確認するときは、そのディレクトリまで移動する
- ↓↓確認方法↓↓
rbenv versions =>結果 system 2.5.1 * 2.6.3 (set by /Users/○○○/■■■/△△△/.ruby-version)
*
がついているのが、現在適用しているバージョン- そのほかが、システムにインストール済みで、切り替え可能なバージョン
バージョン切り替え
バージョンの切り替えには、以下の2種類があります。
- global
- local
global
- PC全体的に使うRubyのバージョン(グローバルバージョン)を設定
- ↓↓(例)2.5.1 に切り替えたいとき↓↓
rbenv glabal 2.5.1
local
- ローカルのアプリケーション(プロジェクト)ごとに適用しているバージョンを設定
- ↓↓(例)2.5.1 に切り替えたいとき↓↓ 注)まず、対象のプロジェクトのディレクトリに移動した状態で…
rbenv local 2.5.1
その他
rbenv rehash
は新しいバージョンをインストールした後に実行する- 【重要】rbenvは「アールビーエンブ」と読む。(筆者は30分前まで「アールべンブ」と読んでました…)
- Rubyのバージョン(環境:environment)を管理するから「rbenv」
参考
2019/09/25_数学、32点(簡単なpostgresqlとsql文)
はじめに
今日も個人開発をしました。
この個人開発で、自分に課していることがあります。
※ 先週、yokohama.rbさんに参加したとき、「SQLはできて当たり前」というありがたい話を聞いたので…
ってことで、今日はテーブルの中身をターミナルだけで確認するまでを書きます!
(DBはpostgresqlを使用してます。)
postgresqlの使い方
とりあえず、中学校の中間試験のテスト結果をtest_result
というデータベースに、科目ごとのテーブルを作成している。という例で説明します。
1)データベース一覧を表示
データベース一覧をターミナルで以下のように記載
psql -l
2)データベースの選択
一覧からデータベースを選択する。
ここでは、データベースtest_result
を選択します。
psql test_result
→ test_result=#
と表示される
3)データベース内のテーブル一覧を表示する
データベースtest_result
内のテーブル一覧を表示
\dt
4)テーブルを選択する
テーブルのカラムや設定を確認する。
ここでは、maths
テーブルを選択します。
\d maths
SQL文
さきほどに引き続き、中間テストの結果データベースの例を使います。
前提
test_result=#
のようになっていないと、SQL文を入力できないっぽいです。
つまり、最低限、2)データベースの選択
までやらないとダメ。
テーブル全体の全レコードを表示
全カラムの全レコードを表示するとき
select * from maths;
解説
select カラム名
で取得するカラムを指定- 全カラムは
*
と書く
- 全カラムは
from テーブル名
で取得元のテーブル名を指定- 今回は
maths
テーブルを選択
- 今回は
- 文末に
;
を書く
(カラム名→テーブル名という記載順、なんだか不思議ですよね。)
カラムを指定してレコードを取得
maths
テーブルから、name
カラムの全レコードを取得するとき
select name from maths
解説
- 1つ前とだいたい同じ。
- 違うのは、
name
カラムを指定したこと。
- 違うのは、
- 文末に
;
を書く。(大切なので2回目)
カラムを指定して、特定のレコードを取り出す。
select score from maths where name = 'ddaawwaa'; => 32
解説
- レコードを特定するときは、where句を使用する
- 今回は
where name = ddaawwaa
でnameがddaawwaaのscoreカラム内の数学の点数を取得しようとしてます。 - 他の指定の方法は、以下のサイトにわかりやすくまとまってます。
SELECT構文:WHEREで検索条件を設定する - SMART 開発者のためのウェブマガジン
- 今回は
- 文末に
;
を書く。(大切なので3回目)
(私、ddaawwaが中学生のとき、数学で32点を取ったのは、実話です。)
参考
PostgreSQL入門 (全16回) - プログラミングならドットインストール
あとがき
- 科目ごとにデータベース作るのって、あんまり良くない気がしたけど、理由は不明です。明らかにデータベース設計の知見がないなーと思いました。
開発してて、「Sequel Pro、便利だったなー。」と思ったとき、この本のことを思い出しました。
不便益という発想~ごめんなさい、もしあなたがちょっとでも 行き詰まりを感じているなら、 不便をとり入れてみてはどうですか?(しごとのわ) | 川上浩司 |本 | 通販 | Amazonでも、読んだわけではないです…すいません…
以上
2019/09/23_木刀、腰にサースデー(Rubyで「月曜日~日曜日」を表示)
はじめに
最近は、個人開発をしています。
RubyでHTTP通信をして、外部APIを使う構想なんですが、全然やったことなくって、
かなり行き詰まっておりました。
(なんとなくできるようになったので、後日書きたいと思ってます。)
今日は、別件で覚えたことを書きます。
Dateクラスを使って、日本語の曜日を表示する(Ruby)
Dateクラスを使って表示できる曜日の中に日本語の表記(月曜日、火曜日、…)は、ないらしいです。
せめて火曜日と木曜日だけでも日本語表記にしなければ!と思っているので、そういう例題を設定してみました笑
(理由は「チューズデー」と「サースデー」のスペルがあいまいなまま、義務教育を終えてしまったためです…)
例題
今日の曜日を出力してください。
なお、「火曜日」と「木曜日」だけ日本語とし、それ意外の曜日は、英語表記とする。
回答例
require "date" # 日本語の曜日を出力するメソッド def show_japanese(number) puts %w(日 月 火 水 木 金 土)[number] + '曜日' end # 英語の曜日を出力するメソッド def show_english puts Date.today.strftime('%A') end # 日本語用の曜日番号を出力 day_number = Date.today.wday if day_number == 2 || day_number == 4 show_japanese(day_number) else show_english end
解説
date
クラスは、Rubyの標準ライブラリですが、あらかじめ組み込まれていないので、require
で呼び出します。メソッド
show_japanese
で日本語の曜日を生成&表示させます。%w(〜)
は配列を作成します。
(つまり["日","月","火","水","木","金","土"]
ができる)- 配列の呼び出し番号は、
day_number
変数を使って設定。(説明は↓)
変数
day_number
は、配列から本日の曜日を呼び出すために定義しております。Date.today
で本日の情報をDateオブジェクトで取得。wday
は曜日に応じた番号を返すメソッド。(日曜日が「0」、月曜日が「1」…)
メソッド
show_english
で英語表記の曜日を出力する。Date.today
は既出。strftime
メソッドで、今日のDateオブジェクトの表記を編集し、曜日だけ表示。
条件分岐(if)で曜日に応じた表記を設定。
参考
- 標準ライブラリ(Ruby 2.6.0)
- class Date (Ruby 2.6.0)
- %記法(ruby2.6.0)
- wday
- [Ruby] 日付から曜日を日本語で取得する - Qiita
- singleton method Date._strptime (Ruby 2.6.0)
あとがき
「木刀腰にサースデー」は、テレビ(たしか「うたばん」)で磯野貴理子さんが言ってて、覚えました。
当時、お腹がよじれるほど笑ったんで、まだ覚えてました笑
2019/09/18_9月になってもガリガリ君(ruby_digメソッド)
今日もrubyの知らないメソッドと出会ったので、記録します。
digメソッド
- HashクラスとArrayクラスの両方があるため、それぞれ説明します。
- 深くネストされたハッシュや配列から値を掘り出すメソッドです。
dig
=「掘る」ってことを想像すると覚えやすいっすね。
Hashクラス
- ネストしたハッシュから値を取り出すメソッド
- 引数には、キーを指定する。
- カンマ(,)で区切ることで、いくつもキーを指定できる
例
階層化されているものを想像すると、いつもガリガリ君を思い出しちゃいまして…
(CSSのpadding
,border
,margin
もガリガリ君で覚えました。)
garigari_boy = { ice: {shaved_ice: {stick: "当たり"}}} garigari_boy.dig(:ice, :shaved_ice, :stick) # => "当たり" # 参考:指定されていないキーを書くと、`nil`が返ってきます。 h.dig(:ice, :shaved_ice, :chocolate) # => nil
Arrayクラス
- さきほどのハッシュと同じように、配列でも
dig
メソッドを使えます。 - ハッシュと違って、引数には配列内の要素番号を指定します。
例
また、ガリガリ君使います
sweets = [["アイス", ["あずきバー", "ガリガリ君"]]] sweets.dig(0, 1, 1) # => "ガリガリ君" # 参考:要素にない番号を書くと、`nil`が返ってきます。 sweets.dig(1, 2, 3) # => nil
- 解説
- 最初の引数「0」:1番外側の
[]
内、0番目の要素["アイス", ["あずきバー", "ガリガリ君"]]
を指定 - 2番目の引数「1」:外から2番目の
[]
内、1番目の要素["あずきバー", "ガリガリ君"]
を指定 - 3番目の引数「1」:1番内側の
[]
内、1番目の要素[ガリガリ君"]
を指定
→ ガリガリ君が呼び出される
- 最初の引数「0」:1番外側の
応用
- ハッシュと配列が混同しているオブジェクトに対しても
dig
が使えます。
例
#その1 g = { foo: [10, 11, 12] } g.dig(:foo, 1) # => 11 #その2 [42, {foo: :bar}].dig(1, :foo) # => :bar