Cherry本勉強中
現在、PHPにも興味がある私ですが、まずは学んだRubyをもっと深めるべきかなと思い、Cherry本を購入しました。 でも、これをやってから、PHPをとすると時間が足りないので、PHPもちょっとずつやっていこうと思います。
さて、このブログのこのタイトルの時は、Cherry本のアウトプットをしていこうと思います。
アウトプット
オグジェクト指向
Rubyのメソッド、to_s このメソッドはオブジェクトの内容を文字列化するメソッドです それは知っていたのですが、下記のような使い方は知らなかったです
#nil nil.to_s #=> "" #正規表現 /\d+/.to_s #=> "(?-mix:\\d+)"
なるほど、Rubyがオブジェクト指向言語、納得です。
私、オブジェクト指向というのは、つまり全て箱化して中身を入れるイメージなので、オブジェクトの中身を文字列化するとこうなるというのは納得しました。
変数宣言に関して
なんだかんだで、この辺りが自分で曖昧だったので、ブログに記載しておきます。
変数名 => スネークケース ◯
変数名 => キャメルケース ❌(エラーにはならないが非一般的)
変数名に数字を入れることは可能だが、数字から始めることはできない
test_1 = 300 #使用可能 1_test = 300 #使用不可(エラーになる)
シングルクオートとダブルクオート
この二つについての違いについて、忘れていました。 なので、ここに記載したいと思います。
- シングルクオート
特殊文字も式展開も全て文字列化する
name = 'hanako' puts 'Hello,#{name}!' # => Hello,#{name}! puts 'こんにちは\nさようなら' # => こんにちは\nさようなら
- ダブルクオート
特殊文字や式展開が使える
name = 'hanako' puts "Hello,#{name}!" # => Hello,hanako! puts "こんにちは\nさようなら" # => こんにちは # さようなら
もし、特殊文字や式展開の機能を打ち消したい場合は、その手前にバックスラッシュを付ける
※シングルクオート、ダブルクオートの中に、シングルクオート、ダブルクオートを含めたい場合も同様
数値
- アンダーバー(_)
数値を表す場合、桁が大きければ、アンダーバーを使うとわかりやすい アンダーバーは実際には表示されない
1_000_000_000 # => 1000000000
- 計算
どちらも整数表示だと、小数点は切り捨てられる 小数点を含めたい場合は、どちらかに小数点を含ませる
1/2 # => 0 1.0/2 #=> 0.5
- to_fメソッド
変数に整数が代入され、尚且つ答えは小数点を含ませたい場合はto_fメソッドを使用する
n = 1 n.to_f #=>1.0 n.to_f /2 #=> 0.5
参考「プロを目指す人のためのRuby入門」
個人アプリを作ってみました
個人アプリを制作しました。
キータ記事にも書こうとは思っているのですが、こちらには大変だったところとか、自分の気持ちも載せてしまおうかなと思っています。 こちらはブログなので(笑)
このアプリについてはGitHubのREADMEに記載してますので、ご覧ください github.com まずは個人アプリの紹介を。
アプリ名は
OtaーChat
どんなアプリなのか
- 選んだジャンルの投稿をし、そのジャンルが好きなもの同士でチャットができるアプリ
なんで、このアプリを作ったのか
- 同じレベルのオタク同士が話し合える場が必要と感じたから
突然ですが、私はゲームや漫画が好きです。言わば、オタクです。ですが、ライトなオタクです。
大体がストーリーを好み、一部のキャラにかっこいいなど思う程度です。 このセリフはこの回のこのシーンの一言であるということがわかったりはしません。
さて、このようなセリフがどのシーンかわかってしまうような方をハードなオタクとします。ライトなオタクとハードなオタク、同じジャンルを好んだとして、話が合うでしょうか?勿論、合うことはあります。
ですが、お互いのオタクレベルが違いすぎて、話が合わないこともあるのです。 せっかく、好きなものについて話しているのに、話が楽しくなくなってしまいます。
私自身、友人と同じジャンルの話をしているのに、友人の話が深すぎて話が合わせられず、申し訳ない思いをしたことがあります。
また、オタクのプライドというのも存在し、私の知人には、コミケについて間違った見解を披露した人に対して、ブリザード対応をした人もいます。知ったかぶっているのが許せなかったそうです。ですが、本人は人がアニメを見たことがあると聞いただけで、そのアニメの詳細を喋り続けるタイプで、アニメの話をしたいのだろうと思います。
このように、自分の気まずかった思いや私の周りの人の様子をみて、最初から自分と同じレベルのオタクと話せる環境があれば、私も私の知人も楽しく好きなジャンルについて話ができると思い、このアプリを作成しました。
個人アプリを作成してみて
データベースについて
今回、データベースを最初に考えてから、アプリ作成に臨みましたが、アプリを作成している間に「あれ、このテーブルが必要だな」「このテーブルは必要ないな」と思うことや「このテーブルにはこのカラムが必要だ」と思うこともありました。
アプリを作成するときに大体設計出来ていると思っていましたが、足りないところが多く出てきて、自分の最初の考えがいかに足りなかったか、知ることが出来ました。
データベースの考えも足りませんでしたが、それにプラスして「あ、この機能つけたい」と思って追加機能したこともテーブルが追加された要因でした(笑)gem 'turbolinks'
私はプログラミングスクールで、application.jsでの「//= require turbolinks」を消していた為(古いバージョンでアプリ作成の指示があった)、今回位の個人アプリでもこの記述を消していましたが、それによって、link_toのremoteが作用せずに、いいね機能がなかなかJS化せずに悩まされました。4、5日悩み、とりあえずいいね機能のJS化を保留にして、別機能を追加しているときに、原因に気がつきました。 悩んだら、一度保留はいい手かもしれないと思いました。別機能で、答えがわかることもあるんだなぁとびっくりでした。
3月6日 Twitterに載せるには長いので
お疲れ様です。
久しぶりのブログ更新です。
いや、本当に久しぶりです。
もっと更新しないといけないですよね。
Twitterは毎日やっているのですが、ブログはなかなかできないんですよね。
元々日記つけるタイプではないですし。
では、何故今ブログを更新しているのか。
タイトル通り、Twitterに載せるには長いからです。
短い文章にしようかとも思いましたが、今回はブログを使ってアウトプットしようと思います。
(いつもやっているTwitterがアウトプットになっているのかは置いておいて←)
ということでアウトプット(もどき)させていただきます
今回カリキュラムで学んだのは下記内容となります
・DB設計の基礎
・テーブルの構成要素
その中で、私が特に印象に残ったのは
テーブルの構成要素で出てきた
インデックス
このインデックスについて、カリキュラムを読んで考えた私のイメージをこちらに記載したいと思います。
間違っていたら、ご指摘お願い致します
【私的『インデックス』イメージ】
テーブルの隣にカラムだけのテーブルを作成する→インデックス
(例:usersテーブルにageカラムがあったとしたら、ageカラムだけを切り取ったようなテーブルをusersテーブルの隣に置く)
そのカラムの検索がされると、まずカラムテーブルが検索ワードがヒットするまで、読み込まれる
ヒットしたら、テーブルに飛んでヒットしたカラムのレコードを取り出す
インデックスがないと、検索ワードがヒットするまで他のカラムのデータまで読み込んで検索する
だから、インデックスがあると便利
でも、データ保存更新時はテーブルの他に他のテーブル(インデックス)も一緒に保存更新をするから処理時間がインデックスがない(テーブルが1つ)場合よりも遅い
又、単純に考えてテーブルが増えたらDB容量圧迫される
テーブルとインデックスの関係は1対多
(例えば、usersテーブルで名字データが入るlastnameカラムと名前データが入るfirstnameカラムがあった場合はこの二つのカラムを切り出してインデックスにしてフルネーム検索が可能)
※インデックスはこの検索の仕組みのことを指す
私のイメージは以上となります
ここまでお読み頂き、誠にありがとうございましたm(_ _)m
2月11日 【HTML&CSS】難しいよ...縦並び横並びorz
今日は、プログラミングスクールの復習ドリルで混乱させられたところをアウトプットしていきたいと思います。
私がやった復習ドリルはHTML&CSSでした。
至る所がわからない、出来ないの連続で、勉強する速度が進まない進まない(笑)
ちょっとこれで大丈夫なのかと不安にもなっていますが、本試験は落ちても再試があるそうなので、とりあえず、自分の学習のために進めようと気を落ち着かせて、やっていました。
ということで、わからないの連続の私ですが、一番わかりにくく、学習中「どうやるんだよー!」と叫んでしまったところをアウトプットしていきたいと思います。
私が悩んだのは同じセクション内で先に横並びになっている子要素二つの下(左側の子要素の下です)に追加子要素を加えるというものでした。
同じセクション内、つまりは親要素一緒の中でdisplay:flex;をかけている中、どうやってそれだけを縦並びに?!と悩みました。
ググりました。wrapの存在を知りました。
でも、違うんです、これじゃない。
唸りましたが、結局答えを見ることに。
結果:
単純にHTMLで左側子要素と追加子要素を同じ親要素に繋げばよかった
(親要素は作成する)
基本ブロック要素は左上に積まれていく積み木イメージ。
display:flex;(横並び)がかかっていない子要素は縦に並ぶ...と。
なんてシンプルな答え!!
なるほどと思いました。
私はついモノを複雑に考えがちなので、もっとシンプルに考えていかないといけないなと感じました。
上で、文章でアウトプットしたのですが、もしかしなくても、わかりづらいと思うので、例を作成してみました。
少しでもわかりやすくなるといいのですが...
HTML
<div class="abc_in_abc">
<div class="ac_in_abc">
<div class="a_in_abc">A</div>
<div class="c_in_abc">C</div>
</div>
<div class="b_in_abc">B</div>
</div>
↓
.a_in_abc {
background-color: blue;
width: 50px;
height: 50px;
}
.b_in_abc {
background-color: brown;
width: 50px;
height: 50px;
}
.c_in_abc {
background-color: coral;
width: 50px;
height: 50px;
}
.abc_in_abc {
display: flex;
}
上記内容のファイルをプラウザで開くと下のようになります。
また、私の反省点もここに記載させていただきます。
【私の反省点】
A、B、Cの子要素を一つ一つで考えてしまい、子要素3つの一つをどうやって下に持ってくるかと悩んでしまった。
そうではなく、単体3つで難しいなら子要素を入れる箱(親要素)を作って二つの子要素にしよう!という発想をすべきだった
全てがそこにあるものでなんとかするのでなく、増やしたり減らしたりしながら、コーディングしていく
ちなみに余談ですが、私、最初は答えを見ても結果部分に行きつきませんでした。
AとCをdisplay:flex;で縦並びにするのだと思っていたんです。
でも、このブログを書くために試しコードを書いて、あれ?ってなって考えた結果、この形に気づくことが出来ました。
アウトプットって大切ですねぇ笑
最後までお読みいただき、ありがとうございましたm(_ _)m
ブログも初心者、プログラミングも初心者です
こんにちは、にーと申します。
最初はご挨拶の記事を書いたので、本日がアウトプットの記事投稿は初となります。
私は今Railsを勉強中です。
本日はその学んでいる部分で、私が得たものを書いていきたいと思います。
Prefix
ルーティングを行う際はこれを使うのがRailsでは慣例とのこと。
では、この Prefixとはなんでしょうか?
答えはルーティングでのURIpattern(URLみたいなもの)を変数化したものです。
そして、このPrefix名に_pathをつけるとパス認識して、処理動作ができるという形なのです。
例:Prefix URIpattern
root_path =====> "/"
new_post_path => "/posts/new"
こちらはターミナルでrails routesを使えば、
Prefix | Verb | URI Pattern | Controller#Action |
---|---|---|---|
root | GET | / | posts#index |
new_post | GET | /posts/new | posts#new |
このようなものが出てくると思います。
さて、ここで私事なんですが、
①PrefixのURIpatternの変数化ということ
②_pathをつけることでパスを認識するということ
この2点ががよくわからなかったのですが、多分こうなんだろうというイメージが出来たのでアウトプットしたいと思います。
間違っているようならご指摘頂きたいです。
まず、①PrefixのURIpatternの変数化 についてです
変数化というのは、私のイメージでは箱化です。
URIpattern→”/”を例にすると
URIpatternの変数化(Prefix)→root
ということはroot=>箱というイメージになります。
そして、URIpatternは箱の中身(値)にあたります。
イメージ的に下の図(?)のような形になるのではないかと思います。
つまり、URIpatternをオブジェクト化するのかなと考えています。
続いて②_pathをつけることでパスを認識するということ です。
これは箱(オブジェクト)を処理動作に変換させるようなものではないかと考えています。
箱だったものが_pathをつけることによって、アクセス用のパス(イメージ:Google Map)としてクライアントを案内する形かなと考えています。
と、このようなイメージを私はPrefixに当てはめて、やっとこのPrefixの存在に納得がいきました。
間違っている時は、是非ご指摘お願い致します。
とりあえずは、最初の記事はこの辺りで終えようと思います。
このような拙い記事を最後までお読み頂き、ありがとうございました。
ブログも初心者、プログラミングも初心者です
初めまして、にーと申します。
自己紹介でも書きましたが、30代未経験でのエンジニアへの転職を目指している、修行中エンジニアもどきです。
これから、このブログでは私が得たプログラミング知識と学んだことに対しての私のイメージなどを記事にしていけたらいいなと思っております。
何かおかしい点などありましたら、是非ご指摘頂ければ嬉しいです。
なるべくまめに更新していきたいなと思っておりますが、根がめんどくさがりなものですので、1週間に一回とかになるかもしれません。
ですが、「継続は力なり」ということで、ここから挫折せずにやっていきたいなと思います。
よろしくお願い致しますm(_ _)m
文章が硬い気がする(笑)