今週調べたこと(6月の第2週)

今週調べたことをまとめます。 let と const について(ES6) let は再宣言が出来ません。 const は再宣言と再代入が出来ません。 参考リンク ES6の新機能: 「let」「const」宣言を調べてみた - Qiita this について 色々なパターンがあって、参考リンクの記事…

flash と flash.now の違い

概要 Rails の flash と flash.now の違いについて記載します。 まず、 flash と flash.now は、どちらも Rails の画面に簡易メッセージを表示するために使います。 違い flash は、リクエストとリクエストの間にメッセージが保持されます。一方、 flash.now…

Vue.js でモーダルコンポーネントを作る

概要 モーダルコンポーネントを実装してみました。 特に難しい箇所はなく、ボタンを押すたびにモーダルを表示・非表示したりするだけでした。 実装 実装です。 <html> <head> <script src='https://unpkg.com/vue/dist/vue.js'></script> <style> </head></html>

Vue.js でコンポーネントに対して v-for を使う

概要 Vue.js でコンポーネントに対して v-for を使ってみました。 見所は、特にないです。 実装 実装です。「ボク、運命の人です。」の登場人物をデータとして使用しました。 <html> <head> <script src='https://unpkg.com/vue/dist/vue.js'></script> </head> <body> <div id='app'> <ul> <character v-for='(name, index) in names' :name='name' :index='index' :key='name.id'> </character> </ul></div></body></html>

Vue.js で動的なファイルツリーを作る

概要 Vue.js で動的なファイルツリーを作ってみました。 ツリー表示 - Vue.js を参考にしました。 実装 実装をコメントと共に示します。 <html> <head> <script src='https://unpkg.com/vue/dist/vue.js'></script> <style> <!-- .bold { font-weight: bold; } ul { line-height: 1.5em; list-style-type: dot; padding-left: 1em; } --> </style> </head> <body></body></html>…

子コンポーネントから親コンポーネントにデータを受け渡しする

概要 子コンポーネントから親コンポーネントにデータを渡す方法を学びました。 子コンポーネントが任意のタイミングで、イベントを発火し親コンポーネントにデータ渡しをしていました。 実装 実装をコメントと共に示します。 <html> <head> <script src='https://unpkg.com/vue/dist/vue.js'></script> </head> <body> <div id='app'> <p>{{title}}</p> <child @send-title='receiveTitle' /> </child></div></body></html>

親コンポーネントから子コンポーネントにデータを受け渡しする

概要 親コンポーネントから子コンポーネントにデータを受け渡しする方法を学びました。 子コンポーネントを定義するタイミングで、親コンポーネントの変数をバインドすれば良かったです。 実装 実装をコメントと共に示します。 <html> <head> <script src='https://unpkg.com/vue/dist/vue.js'></script> </head> <body> <div id='app'> <child :hello='hello'></child> </div> </body></html>

メタプログラミングRubyを読んでいます(8)

読んだ範囲 「メタプログラミングRuby」の「6.1 週末を迎えるためのコーディング」から「6.3 クイズ:アトリビュートのチェック(手順1)」まで読みました。本日もTIL形式です。 TIL Bindingは、スコープをオブジェクトにまとめたものです。 evalを使用する…

メタプログラミングRubyを読んでいます(7)

読んだ範囲 「メタプログラミングRuby」の「5.3 特異メソッド」から「5.8 まとめ」まで読みました。本日は、TIL形式です。 TIL クラスメソッドは、クラスの特異メソッドです。def obj.my_method; end と def A.my_method; end を比較するとクラスメソッドの…

メタプログラミングRubyを読んでいます(6)

読んだ範囲 「メタプログラミングRuby」の「4.6 ドメイン特化言語を書く」から「5.2.1 クイズの答え」まで読みました。 知ったこと 共有スコープ 共有スコープという概念を知りました。複数のメソッドが同一の変数を共有する技法です。 :arrow_down: 文章だ…

メタプログラミングRubyを読んでいます(5)

読んだ範囲 「メタプログラミングRuby」の「4.4.1 カプセル化の破壊」から「4.5.4 呼び出し可能オブジェクトのまとめ」まで読みました。 知ったこと コンテキスト探査機 コンテキスト探査機という用語を始めて知りました。instance_evalメソッドに渡したブロ…

メタプログラミングRubyを読んでいます(4)

読んだ範囲 「メタプログラミングRuby」の「3.3.3 動的プロキシ」から「4.3.4 クロージャのまとめ」まで読みました。 知ったこと ブロックを定義した時の束縛について(4.3 ブロックはクロージャー) ブロックを定義した時の束縛は、その時点での束縛を取得す…

メタプログラミングRubyを読んでいます(3)

読んだ範囲 「メタプログラミングRuby」の「2.4.3 Refinements」から「3.3.3 動的プロキシ」まで読みました。 主な内容は、メソッドを動的に定義する方法についてでした。 TIL Object#send を使用すると、メソッド名が引数となるので動的にメソッドを呼び出…

メタプログラミングRubyを読んでいます(2)

読んだ範囲 「メタプログラミングRuby」の「2.2.1 オブジェクトの中身」~「2.4.2 メソッドの実行」まで読みました。 TIL Classクラスのスーパクラスは、Moduleクラスです。また、Moduleクラスのスーパークラスは、Objectクラスです。 モジュールのインクルー…

「エクストリームプログラミング」を読みました

エクストリームプログラミングの知識が不足していると感じていました。その点を埋めあわせるため「エクストリームプログラミング」を読みました。 印象に残ったのは、次の点です。 価値、原則、プラクティス 主要プラクティスと導出プラクティス 価値、原則…

メタプログラミングRubyを読んでいます(1)

読んだ範囲 「メタプログラミングRuby」の「1章 頭文字M」~「2.2.1 オブジェクトの中身」まで読みました。 TIL 今回は、体裁を変えて箇条書き形式で記載していこうと思います。 メタプログミングのことを「コードを記述するコードを記述する(p7)」と呼んでい…

Effective Rubyを読んでいます(最終チャプター)

tl;dr 「Effective Ruby」の項目43~48を読みました。 :arrow_down: 目次です。 項目43 依存gemのバージョンの上限を指定しよう 項目44 Rubyのガベージコレクタの動作に慣れよう 項目45 Finalizerでリソースリークを防ぐセーフティネットを作ろう 項目46 Ruby…

Effective Rubyを読んでいます(8)

tl;dr 「Effective Ruby」の項目37~42を読みました。 :arrow_down: 目次です。 項目37 MiniTest仕様テストに慣れよう 項目38 モックオブジェクトで決定論をシミュレートしよう 項目39 効果的なテストを追求しよう 項目40 Rubyドキュメントの扱い方を覚えよう…

ルーティングのshallowオプションについて

概要 shallowオプションの挙動がいまいち理解出来ていなかったので、忘備録として書きます。 shallowオプションとは、子要素をユニークに特定出来る場合、浅い階層構造でルーティングを定義します。 コンテンツ config/routes.rbに次のようなルーティングが…

「珈琲店タレーランの事件簿 5」を読みました

「珈琲店タレーランの事件簿 5 この鴛鴦茶がおいしくなりますように」を読みました。 物語の始まりは、11年振りにアオヤマ(主人公)が初恋の相手(小島 眞子)に偶然出会うところから始まります。眞子(まこ)は、悩みを抱えていました。 悩みとは、不倫を辞めた…

Effective Rubyを読んでいます(7)

tl;dr 「Effective Ruby」の項目31~32を読みました。 :arrow_down: 目次です。 項目31 evalのさまざまなバリアントの間の違いを把握しよう 項目32 モンキーパッチの代わりとなるものを検討しよう 知ったこと モンキーパッチよりRefinementsを使おう(項目32) …

Effective Rubyを読んでいます(6)

tl;dr 「Effective Ruby」の項目30を読みました。 :arrow_down: 目次です。 項目30 method_missingではなくdefine_methodを使うようにしよう 新しく知ったこと method_missingを使用するとrespond_to?が正しい答えを出せなくなる(項目30) method_missingを使…

Effective Rubyを読んでいます(5)

tl;dr 「Effective Ruby」の項目28から項目29まで読みました。 :arrow_down: 目次です。 項目28 モジュール、クラスフックを使いこなそう 項目29 クラスフックからはsuperを呼び出そう 新しく知ったこと クラスフックする場合は、superを呼び出す(項目29) ク…

Effective Rubyを読んでいます(4)

tl;dr 「Effective Ruby」の項目24から項目27まで読みました。 :arrow_down: 目次です。 項目24 リソースはブロックとensureで管理しよう 項目25 ensure節は最後まで実行して抜けるように作ろう 項目26 retryでは回数の上限を設け、頻度を変化させ、オーディ…

Object#cloneとObject#dupの違い

tl;dr Effective Rubyを読んでいてObject#cloneとObject#dupの違いを理解していなかったため確認しました。 Object#cloneとObject#dupの違い Object#cloneとObject#dupの違いは、次の通りです。 Object#cloneはfreeze情報を複製するが、Object#dupは複製しな…

Effective Rubyを読んでいます(3)

tl;dr 「Effective Ruby」の項目21から項目23まで読みました。 :arrow_down: 目次です。 項目21 コレクションクラスからの継承よりも委譲を使うようにしよう。 項目22 raiseにはただの文字列ではなくカスタム例外を渡そう 項目23 できる限りもっとも対象の狭…

Effective Rubyを読んでいます(2)

tl;dr 「Effective Ruby」の項目17から項目20まで読みました。 :arrow_down: 目次です。 項目17 nil、スカラーオブジェクトを配列に変換するには、Arrayメソッドを使おう 項目18 要素が含まれているかどうかの処理を効率よく行うために集合を使うことを検討…

Effective Rubyを読んでいます(1)

tl;dr 「Effective Ruby」の項目14から項目16まで読みました。 :arrow_down: 目次です。 項目14 protectedメソッドを使ってプライベートな状態を共有しよう 項目15 クラス変数よりもクラスインスタンス変数を使うようにしよう 項目16 コレクションを書き換え…

controllerのconcernsに対するテスト方法

概要 Controller concernsに対するテストの書き方を記載します。 環境 Ruby 2.4.0 Rails 5.0.1 Rspec 3.5.4 テストの書き方 最初に、完成コードを示します。 :arrow_down: concernsです。 app/controllers/concerns/vote.rb module Vote extend ActiveSuppor…

10日で学ぶMBA」を読みました(3)

tl;dr 「10日で学ぶMBA」の第五〜七日を読みました。 :arrow_down: 目次です。 第五日 定量分析 第六日 ファイナンス 第七日 オペレーション 新しく知ったこと 次の2つのことを新しく知りました。 株式会社に対しての2重課税 オプション価格の均衡 株式会社…

10日で学ぶMBA」を読みました(4)

tl;dr 「10日で学ぶMBA」の第八〜十日を読みました。 :arrow_down: 目次です。 第八日 経済学 第九日 戦略 第十日 MBAのミニコース 新しく知ったこと 次の2つのことを新しく知りました。 M1とM2とは 戦略懐疑主義とは M1とM2とは アメリカのマネーストックは…

「10日で学ぶMBA」を読みました(2)

tl;dr 「10日で学ぶMBA」の第三日と第四日を読みました。 :arrow_down: 目次です。 第三日 アカウンティング 第四日 組織的行動 新しく知ったこと 次の2つのことを新しく知りました。 比率の指標の使い方 スタッフとライン 比率の指標の使い方 ROS(売上高当…

「10日で学ぶMBA」を読みました(1)

tl;dr 「10日で学ぶMBA」の第一日と第二日を読みました。 :arrow_down: 目次です。 第一日 マーケティング 第二日 倫理 新しく知ったこと 次の2つのことを新しく知りました。 製品を買う人と使う人が一致しない 製品のライフサイクルによって、マーケティン…

「WebAPI デザインの鉄則」を読みました

tl;dr WEB+DB PRESS vol.82の「WebAPI デザインの鉄則」の3、4章を読みました。 :arrow_down: は、3、4章の目次です。 3. インターフェース設計 4. エラー表現とドキュメント 新しく知ったこと 次の2つのことを新しく知りました。 POSTメソッドとPUTメソッド…

ncコマンドで、RailsのCRUDを叩いてみる

HTTPのメソッドについて理解を深めるため、ncコマンドでRailsのCRUDを叩いてみようと思います。 サーバー側のスキーマとルーティング サーバー側のスキーマとルーティングについて記載します。 :arrow_down: スキーマです。 db/schema.rb ActiveRecord::Sche…

「試して学ぶHTTP」を読みました

tl;dr WEB+DB PRESS vol.95の「試して学ぶHTTP」を読みました。 新しく知ったこと 次の2つのことを新しく知りました。 HTTPの特徴 HTTPの特徴として、サーバーに対してテキスト形式でリクエストを送信する、リクエストがステータスを持たないという点があり…

gemspecとGemfileの違い

gemspecとGemfileの違いが理解出来ていないので、まとめてみました。 :arrow_down: を読みました。 gemspecとGemfileの役割をはっきりさせておく まず、gemspecとGemfileの違いで分かりくい点は、両方ともGemの依存関係を定義する点です。 ただし、指定した…

モダンコーディングの2周目をしています

HTML5/CSS3モダンコーディングの2周目をしています。 前回と異なる感想を持ちました。 前回は、分からないことが分からない状態 でしたが、今回は 分からないことが分かる状態 で読めるようになっていました。 最後に、分からなかったことと改めて知ったこと…

zshの設定をPreztoから自作の設定へ移行しました

情熱プログラマーのチャプター11に「魚の釣り方を学ぶ」があります。 この章に、表面的にしか調べられていないツールについて学習することがアドバイスとしてありました。 僕はzshをターゲットとして選び、次のことをやってみました。 「WEB+DB PRESS vol.83…

polymorphic_urlの使い方

概要 polymorphic_urlの使い方が分からず、どのようにして意図通りのURLを生成するか戸惑ったので忘備録として書きます。 コンテンツ class Notification < ApplicationRecord belongs_to :notifiable, polymorphic: true end class Comment < ApplicationRe…