アラフォーがお金持ちになるためプログラマ目指すブログ

お金も根性も学歴もないアラフォーまきのがエンジニア…じゃない、プログラマになってお金持ち目指すよ!

侍エンジニア塾 19回目の授業

どうも、アラフォーまきのです。
あけましておめでとうございます。

本日19年1回目の侍塾でしたよ!

本日の授業

・今日までに実装できたものの報告
・うまく行かなかった部分の相談
・JavaScript
・jQuery
・Ajax

実装できたこと

1:アクセス制限やら、バリデーションやら

progate1週した時には、なんとなーくわかっていた気がしていたauthenticate_user!とensure_current_usre…


実践的になった途端違いや区別がつかなくて、最初は「なんだっけ?」となったけれど、progate見ながらでなんとかなりましたw


authenticate_user!はdeviseが持ってるメソッドなんだね。


progateではdevise使わないから、自力でsuthenticate_user(!なし)を設定したんで、そこらへんがごっちゃになってた。


deviseが最初から持ってるから、定義を探しても見つからないけれど、それはRailsの黒魔術だから気にしないw


ensure_current_userは、deviseが持ってるcurrent_userを使って自分で作るメソッド。


progateではもちろんcurrent_userも自力で設定しているけれど、deviseが入っているならdeviseが用意してくれてるから、わざわざ定義しなくておkなんだね。


2:Twitterの「いいね」みたいな機能

これはprogate見ながらでなんとかなった!
半分自力でできた感じがなんだか嬉しい!


progateに倣って私もFont Awesomeを利用。


FontAwesomeは旧バージョンと新バージョンがあって、progateでは旧バージョンを使って解説してくれてたみたい。


FontAwesome利用の場合はこちらのサイトが力になってくれた。
saruwakakun.com



3:acts-as-taggable-onの実装

ちょい大変だったけど、どうにかこうにか!


カテゴリっていうか、タグをつけてユーザーとか、記事とか、そういうのを管理できるようにするgem。
また後日記事あげたい(願望)


ruby-rails.hatenadiary.com


4:simple_calendarの実装

今までのgemやら機能の実装で、一番短時間でできた
(それでも悩んだ時間とか調べた時間とか諸々含めて全4時間w)


その名の通りカレンダーをサイト上に表示するgem


結構簡単に使わせてくれる印象!
scaffoldで実際に試してからやったのもよかったのかも!



Simple calendar by excid3

qiita.com


5:絞り込み

絞りみってそういうやり方なのか!という大発見。


これも後日記事にしたい!私が調べてもわかるような記載見つからなかったから、多分同じように困ってる駆け出し仲間がいると思う。


6:その他諸々

他にも細々やってました。


正月はもうずーっとこれらにつきっきり。


大晦日は年越しイベントへ行ったけれど、それ以外はずっとMacBookと向き合ってましたw


唯一、1/4だけはもうなんもやる気起きず、1日ぐったりしてましたけどねー。
それでも最後の2時間だけでもできたから良しとする!


【番外編】

これ全然侍塾関係ない話なんで申し訳ない。

最近、ゲスエンジニアのとださんが好きで好きで、よくYouTube見たりしてるんです。


twitter.com



で、最近とださんがRubyやRailsでちょっとしたアプリをサクッと作れるような動画をあげてくれてたんですよね。


なもんで、私も挑戦してみてました。


typoのせいでかなりひっかったりはしたけれど、なんとかできましたよ!


特にチャットアプリは、想定通りに動いたのは超楽しかった!
あんまり嬉しくて、2つブラウザあけて、一人しりとりしたからねw


私みたいな超絶typoマン+ど素人プログラマー(プログラマーって名乗っていいのかなw)でも、つまりつつ2時間くらいでなんとかできたので、やってみると楽しいかもです。


続編を出してくださるそうなのでもうすでに楽しみ。

youtu.be

うまく行かなかった部分の相談

4つ相談ごとがあったけれど、うち3つはもうちょい頑張れば自力で解決も望めた簡単な話だった。
悔しい;


んで、のこりの1つはこの警告。
いつ、どんなタイミングで、どういう風に出たかは忘れちゃったけれど、Dangerousという文字で心臓がキュッとしたひととき。

DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "RANDOM()". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql().

翻訳大先生によると…

非推奨警告:危険でない問い合わせメソッド(引数が生のSQLとして使用されているメソッド)が、属性以外の引数で呼び出されました: "RANDOM()"。 Rails 6.0では、属性以外の引数は許可されません。このメソッドは、リクエストパラメータやモデル属性などのユーザー指定の値で呼び出さないでください。安全なことがわかっている値は、Arel.sql()でラップすることで渡すことができます。

実際のコードはこちらです

@works_random = Work.where(pick_up: true).order("RANDOM()").limit(3)

「worksテーブルから、pick_upがtrueのデーターを、ランダムに拾って3つかえしてちょうだい」というもの。


結論は、このコード中のorderの部分に脆弱性があるのでは?と。
どうも、悪意あるSQLやデーターを突っ込まれる可能性があるみたい。


そこでRails6ではその脆弱性をカバーするつもりだから、そのコード使えなくなるよというお知らせだった模様。


仕方がないので、ここはRANDOMじゃないものを使うことに。
どうしようかなあ。
考え中。

JavaScript・jQuery・Ajax


やー、JavaScript面白いね!
楽しい!


でも{ }と ( )がいっぱいで、終わりと始まりがわからなくなるw


経験としては、progateで一周、ドットインストールで宝探しゲームのようなものを言われるままに作る程度しかやってないんだけども、実際に動いたりするのがとにかく楽しい。


だからもっとJavaScript知りたい!


あと、書くこと長いよね?
一言が長いよね?

document.getElementById


とか

addEventListener


とか



長いよね?



予測変換が仕事してくれるから全打ちしないけど、
長いよね?


それはともかく、きょうはこれでストップウォッチ的なものを教わったよ。


でも、JavaScriptはさらっと触っただけだから、正直「???」という感じ。


ひとまず、1つ1つみていくとなんとかわかる…というレベルなので、少し集中してJavaScriptやってみようかなと。

嬉しかったこと

実はメンターさんから嬉しいお話をいただきました。



メンターさんには10数人生徒さんがおられるそうなんだけれども、驚くことに私は比較的できる方に入るそうで(本当だろうか…)、ちょっとした依頼をいただきました。



依頼といっても、コードを書くとかお仕事をするとか、そういう話ではないのですが、それでもそんな風にお話をいただけたことがとっても嬉しかった。



前もちょっといったけれど、マンツーマンって、生徒目線では比較対象がないから、自分の進捗がいいのか悪いのかがわからないんですよね。



私はずっと「いかにいい成績をおさめるか」という世界での勉強しかやってこなかったんですよ。いや、まあみんなそうだと思うんだけども。




だから、同時期に同じような内容で初めた「一般的な人」と比べて、今の自分の力がどの程度進んでるのかがとっても気になってた。



ツイッターでは「Railsチュートリアル1週したぜ!」という声や「○○までなんとか終わらせた!」というつぶやきが普通にあって、すごく焦る気持ちがあった。



私やっぱり遅れてるかも!みんなそこまでできてるんだ!
Σ(・□・;)って。



その人たちが始めた時期も、内容も、目的も、知らないし、ライフスタイルややってることが完全一致な人なんていないのにね。



それに、今やってるのは「生きていく力」をつけるための1つの手段だから、学生時代の「受験用の勉強」と同列に見る必要ないんだよね。



改めて、自分が生きるための手段の一つとして、刀を研いでいる状況なんだってのを認識した感じです。



もちろん、まだ初めて3−4ヶ月程度のど素人プログラマーだから、第一線で活躍している人たちに比べて力不足なのはあたりまえ。



「素人だから仕方ない」「初心者だからわからない」と言い訳をしてる限り力はつかないと思うんで、これからもずいずいやっていきます。



それで、早くお金持ちになりたいww




さあ次回は今週金曜日!
とりあえずJavaScriptをぎゅっと詰め込んでみます。



ではでは!