3年間で10000時間に向けた学習の振り返り(2019/10/07~10/13)

インプット アウトプット 所感 次の予定 学習進捗 インプット 書籍「情報処理教科書 出るとこだけ! 基本情報技術者」を2周目 アウトプット 基本情報技術者試験ドットコムの「過去問道場」で 午前問題5回分を解く 書籍「情報処理教科書 出るとこだけ! 基…

3年間で10000時間に向けた学習の振り返り(2019/09/30~10/06)

インプット アウトプット 所感 次の予定 学習進捗 インプット 書籍「情報処理教科書 出るとこだけ! 基本情報技術者」を読了 アウトプット 基本情報技術者試験ドットコムの「過去問道場」で 午前問題1年分を解く 所感 基本情報、飽きた・・・ 次の予定 とり…

3年間で10000時間に向けた学習の振り返り(2019/09/20~09/29)

はじめに インプット アウトプット 所感 次の予定 学習進捗 はじめに ブログ開始当初の定めた目標の進捗状況を記録します。 www.ryotaku.com 毎日ブログを投稿したいた頃は、ブログ下部にその日の学習進捗を記述していたのですが、「2019年9月19日」に毎日投…

AtCoder Beginner Contest 142「D - Disjoint Set of Common Divisors」(Ruby)

Rubyって標準添付ライブラリで素因数分解できるんですね 問題 考えたこと 提出コード 補足 問題 D - Disjoint Set of Common Divisors 実行時間制限: 2 sec / メモリ制限: 1024 MB 配点 : 400 点 問題文 正整数 A , B が与えられます。 A と B の正の公約数…

AtCoder Grand Contest 038「A - 01 Matrix」(Ruby)

取っ掛かりさえ見つけられれば、非常に簡単な問題でした 問題 解き方 コード 問題 atcoder.jp 実行時間制限: 2 sec / メモリ制限: 1024 MB 配点 : 300 点 問題文 H 行 W 列からなるマス目があります。 すぬけくんは、各マスに 0 または 1 を書き込みたいです…

Vueで生成されたHTML属性を動的に追加する「v-bind」の使い方

Vue

【結論】 ・Mustache(二重括弧・{{ }})は、HTML 属性の内部で使用することは出来ない ・HTML属性を動的に追加したい場合は、「v-bind」を使用する ・「v-bind」内(データバインディング内)では、JavaScriptの式が使用できる 【目次】 Vueで生成されたHTM…

JavaScriptにおける「NaN」について

【結論】 ・NaNとはNot-a-Numberの略で、JavaScriptにおいては非数(数字では無い)を表す ・Number()コンストラクタで、数値への変換に対応していない文字列(アルファベットなど)を数値に変換しようとした際などに出力される ・NaNは「==、!=、===、!==」…

DHH流ルーティングについて(Rails)

【結論】 ・DHH(David Heinemeier Hansson)は、Ruby on Railsの生みの親 ・DHH流ルーティングとは、DHHが推奨しているRailsのルーティング手法 ・具体的には、コントローラはデフォルトのCRUDアクション(index、show、new、edit、create、update、destroy…

自然言語処理について

【結論】 ・自然言語処理とは、人が日常的に使用している自然言語をコンピュータに処理させる技術 ・曖昧性なく解釈できるように厳密に文法を定義されているコンピュータ言語と対照的に、自然言語は解釈が一意でないのが特徴 ・機械学習や統計的手法の発展に…

【AtCoder:19回目】AtCoder Beginner Contest 141の振り返り(Ruby)

【目次】 振り返り A - Weather Prediction B - Tap Dance C - Attack Survival D - Powerful Discount Tickets 《今日の学習進捗(3年以内に10000時間に向けて)》 【本題】 振り返り 今回は 9/15(日)に開催されたAtCoder Beginner Contest 141の振り返りを…

誰でも利用しやすいサイト作りの為の「アクセシビリティ」という考え方

【結論】 ・アクセシビリティとは、WEBサイト上の情報やサービスへのアクセスのしやすさを表した言葉 ・高齢者や体の不自由な人でもアクセスしやすい様にという意味合いで使われる機会が多く、現実世界の「バリアフリー」に近い考え方 ・アクセシビリティ軽…

環境構築不要かつ無料で機械学習が試せる「Colaboratory」について

【結論】 ・Colaboratoryとは、Googleが提供しているクラウド上で機械学習のプログラムを実行できるサービス ・環境構築不要かつ無料で利用できるので、気軽にプログラムを試すことができる ・しかし一定時間が経過すると、仮想マシンが停止してデータが初期…

Privateメソッドについて(Ruby)

【結論】 ・Privateメソッドとは、同じクラスのインスタンスメソッドからしか呼び出せないメソッド ・Privateメソッドは、暗黙的にselfから呼び出されるので、オブジェクトから明示的に呼び出すことは出来ない ・同じクラス内でしか使用しないメソッドが、意…

Callbackメソッドの「only」「except」の使い分け(Rails)

【結論】 ・Controllerのコールバックメソッドは、onlyとexceptで実行するアクションを指定できるが、適切に使い分けないと、バグ発生の要因となり得る ・基本的にonlyを使用する。指定するアクションが増えて、追加するアクションが無くなったらexceptに置…

「let・let!・before」の違いと実行順序(RSpec)

【結論】 ・let/let!はインスタンス変数を定義する際、beforeより分かりやすく記述できる ・beforeはインスタンス変数の定義以外(メソッドの実行など)でも利用することができる ・letは変数が初めて使用された時に評価(遅延評価)され、let!とbeforeはブ…

Strategyパターンについて(デザインパターン)

【結論】 ・Strategyパターンとは、デザインパターンの一つで、状況に応じてアルゴリズムを切り替える処理を記述する時に有効な実装手法 ・ConcreteStrategy役に個々の具体的なアルゴリズムが記述されており、どれを使用するかはStrategy役が規定する ・アル…

「describe・context・it(example)」の使い分け(RSpec)

【結論】 ・describeには、テストの対象(グループの範囲)を記述する ・contextには、テストの条件(状態)を記述する ・it(example)には、テストの内容(処理と期待)を記述する 【目次】 「describe・context・it(example)」の使い分け describeにつ…

【AtCoder:18回目】AtCoder Beginner Contest 140の振り返り(Ruby)

【目次】 振り返り A - Password B - Buffet C - Maximal Value D - Face Produces Unhappiness 《今日の学習進捗(3年以内に10000時間に向けて)》 【本題】 振り返り 今回は 9/7(土)に開催されたAtCoder Beginner Contest 140の振り返りを行います。 AtCod…

単語を複数繋げる場合の命名規則「◯◯ケース」について(キャメルケース・キャメルケース・ケバブケース)

【結論】 ・キャメルケースは単語の先頭を大文字して繋げる。変数名の先頭を大文字にするアッパーキャメルケース(例:hogeCase)と小文字にするローワーキャメルケース(例:HogeCase)がある。 ・スネークケースは単語同士をアンダースコア( _ )で繋げる…

Rubyの「nil?・empty?」とRailsの「blank?・present?」について

【結論】 ・nil?メソッドは、レシーバーがnilのときtrueを返し、nilではない場合falseを返す ・empty?メソッドは、オブジェクトが空(空文字列("")・空配列([])・空ハッシュ({}))のときtrueを返し、1つ以上の要素があればfalseを返す。文字列・配列・…

MySQLでNOT NULL制約を設定してもNULLでエラーにならない問題(無効データの制約)

【結論】 ・MySQLは無効または不適切なデータ値を許容しており、これらを有効な値に強制的に変更して、データの整合性を取っている ・例えば、NOT NULL制約を設定している文字列タイプのカラムにNULLを保存しようとした場合、エラーにならず、空文字("")が…

「Mysql2::Error: Data too long for column」の原因(Rails)

【結論】 ・Mysql2::Error: Data too long for columnとは、DB側の文字数制限を超えたデータを保存しようとした際に発生するエラー ・DB側の制限なので、モデルなどにバリデーションを設定していないとしても、このエラーは発生する ・対応策は、DB側の制限…

ハードディスク(磁器ディスク装置)について

【結論】 ・ハードディスク(磁器ディスク装置)とは、金属の円盤に磁気の力でデータを書き込んだり読み込む装置 ・安価で大容量かつ比較的高速な為、多くのコンピュータの補助記憶装置として採用されている ・書き込まれたデータは、シリンダ・トラック・セ…

【AtCoder:17回目】AtCoder Beginner Contest 139の振り返り(Ruby)

【目次】 振り返り A - Tenki B - Power Socket C - Lower D - ModSum 《今日の学習進捗(3年以内に10000時間に向けて)》 【本題】 振り返り 今回は 9/2(日)に開催されたAtCoder Beginner Contest 139の振り返りを行います。 AtCoder Beginner Contest 139 …

AWSのリージョンとアベイラビリティーゾーンについて

AWS

【結論】 ・AWSでは、インフラの可用性を高める為、データセンターを「リージョン(Region)」「アベイラビリティーゾーン(Availability Zone、AZ)」という階層で分けている ・リージョンとは、世界各地に点在するデータセンターを、東京や北カルフォルニ…

単一障害点(SPOF)について

【結論】 ・単一障害点(Single Point of Failure)とは、システムを構成する要素のうち、停止するとシステム全体が停止してしまう部分のこと ・障害に強いシステムを設計する際、個々の構成要素を複数用意して冗長性を持たせる手法が一般的 ・しかし技術的…

「change_table」で「bulk: true」を使用したマイグレーションの高速化(Rails)

【結論】 ・Rails のマイグレーションで使用されるchange_tableメソッドには、bulk: trueのオプションを設定できる ・このオプションにより、ALTER TABLEクエリにまとめてくれる ・このオプションは MySQLとPostgreSQLのみサポートされていている 【目次】 c…

マイグレーション作成時にchangeメソッドではなくup/downメソッドを使う場面(Rails)

【結論】 ・マイグレーションを作成する場合、up/downメソッドを利用する方法と、changeメソッドを利用する方法が存在する ・up/downメソッドはマイグレーション時とロールバック時の両方の処理内容を定義する必要があるのに対して、changeメソッドはマイグ…

現在日時をズラしたテストが実行できる「TimeHelpers(travel・travel_back・travel_to)」(Rails)

【結論】 ・ActiveSupportのTimeHelpersでは、時間経過によって動作が変化する機能のテストを行う為のヘルパーメソッドが提供される ・travelメソッドは、現在の日時を指定された日時の分だけ未来または過去の日時に変更する ・travel_toメソッドは、直接指…

URLエンコードによってパラメータの空白スペースが+に書き換わる問題(Rails)

【結論】 ・URLパラメータ(クエリ文字列)とは、URLの末尾に?を付け続けて&キー=値と記述することで、サーバーに情報を送るためにURLに付け加える変数 ・application/x-www-form-urlencodedのURLエンコードとは、URLにおいて使用できない文字を使う際に…