webpack-dev-server

Hot Module Replacement (HMR) webpack-dev-server Hot Module Replacement (HMR) Hot Module Replacement (HMR) は、ファイルの更新を自動でブラウザに反映する仕組みです。 HMRでは、ページ全体を更新することなく、変更したモジュールのみを置き換えるこ…

Webpack

webpackとは 「webpackはなぜ必要?」 「webpackとBabelの違いは?」 webpackとは webpackとは、JavaScriptのモジュールバンドラです。 モジュールバンドラは、複数のモジュールをまとめるものになります。 webpackでは、JavaScriptを主に、HTMLやCSS、画像…

DNS tips

dig コマンド と nslookup コマンド 127.0.0.1 localhost /etc/hosts dig コマンド と nslookup コマンド digコマンドもnslookupコマンドも、DNS問い合わせを行うコマンドです。 digコマンドとnslookupコマンドで、google.comをDNS解決してみます。 dig コマ…

Domain Name System (DNS)

Domain Name System (DNS) Domain Name System (DNS) Domain Name System (DNS) は、ドメイン名を管理するための仕組みです。 インターネット上で、ほかのマシンにアクセスするとき、宛先は「IPアドレス」によって指定します。 しかし、数字の列挙であるIPア…

RESTful API

RESTful API REST REST APIの特徴 URIでリソースを指定 HTTPメソッドで処理を指定 REST APIの例 RESTful API RESTful API (REST API) は、RESTに基づいたAPIのことです。 REST RESTとは、REpresentational State Transferのことで、ロイ・フィールディング氏…

DockerでMongoDB永続化

DockerでMongoDB永続化 DockerでMongoDB永続化 DockerでMongoDBサーバーを立てていて、そのデータを永続化する方法をまとめていきます。 Dockerは、docker-composeを使って設定していきます。 DockerでMongoDBを永続化するには、ボリュームの設定をして、/da…

RailsでMongoDBを使う

Mongoid 実際に試してみる Mongoidのインストール RailsでMongoidを使う Mongoidのモデルの使用例 Mongoid RailsでMongoDBを使うには、Mongoidを利用します。 Mongoidは、RubyのMongoDB用ORMです。 RailsでRDBを利用する場合、Active Recordが広く使われてい…

MongoDBに認証を設定する

MongoDBに認証を設定する 管理ユーザーを作成する 管理ユーザーでログイン 一般ユーザーを作成 認証をONにしてMongoDBを起動 mongoコマンドでログインする MongoDBに認証を設定する MongoDBはデフォルトでは認証が設定されていません。 つまり、MongoDBに接…

MongoDBでインデックス

MongoDBでインデックスを作成する インデックスを確認 インデックスを作成 MongoDBでインデックスを作成する インデックスを確認 この時点でのインデックスを確認してみます。 インデックスの確認には、getIndexes()を使います。 > db.User.getIndexes() [ {…

MongoDBを触ってみる

MongoDBを触る準備 MongoDBを触ってみる DB作成・選択 コレクションの作成 データの追加 データの一覧を取得 データの更新 MongoDBを触る準備 今回は、Docker-Composeを使ってMongoDBをセットアップしました。 docker-compose.ymlの中身は↓です。 version: '…

MongoDB

MongoDB 「MongoDBでは、どのようにデータを保存・管理しているの?」 「MongoDBの強みと弱みは?」 MongoDB MongoDBは、ドキュメント型のNoSQLデータベースです。 C++で開発されていて、人気のあるデータベースの一つです。 「MongoDBでは、どのようにデー…

NoSQL

NoSQL 「NoSQLの強みは?」 「NoSQLって具体的にはどんなものがある?」 NoSQL このブログでも、ここまで何度か出てきたデータベースのPostgreSQLは関係データベース(リレーショナルデータベース、RDB)です。 MySQLなどもリレーショナルデータベース(RDB…

スケールアップとスケールアウト

DB

スケールアップ スケールアウト スケールアップ スケールアップは、マシンのスペックそのものを向上させて、システム全体の性能を向上させることです。 スケールアップでは、1台のマシンのスペック(性能)を向上させるために、パーツをより高性能なものに変…

主キーと関数従属

DB

主キー 関数従属 主キー 主キーは、レコードを一意に識別するためのカラムの組み合わせのことです。 レコードを検索する際、一意に識別できるようにする必要があります。 そこで、主キーを設定しておきます。 主キーが決まれば、レコードが決まる、というこ…

データベース正規化

DB

データベース正規化 「なんで正規化するの?」 第k正規系 「結局、正規化はなにすればいいの?」 データベース正規化 データベース正規化は、データの重複を防ぎ、整合性を保ちやすいように、データベースを設計することです。 データベースの正規系は、第1…

PostgreSQLでインデックスを試してみる

DB

PostgreSQLでインデックスを試してみる 「インデックスなしの場合はどれくらいの処理時間は?」 「インデックスを作成したらどれくらい変わる?」 PostgreSQLでインデックスを試してみる PostgreSQLでインデックスを試してみて、その効果を見てみます。 テー…

インデックスって? (データベース)

DB

インデックスとは 「インデックスを作成するとどんないいことがあるの」 「じゃあ、全カラムにインデックス作成すればいいのでは?」 「どのカラムにインデックスを作成すればいいの?」 インデックスとは インデックスは、検索のときに参照するもので、検索…

システムスペック (System Spec) - RSpec

システムスペック Capybara システムスペック RSpecには、システムスペック (System Spec) というテストがあります。 システムスペックでは、複数のモデルやコントローラーを統合してテストします。 APIの呼び出しであったり、あるURLにアクセスしたときに返…

rspec-railsでモデルをテストしてみる

Railsでモデル作成 モデルをテストしてみる Railsでモデル作成 Railsでモデルを作成します。 $ rails g model User name:string これで、モデルを作成できました。 次のようなログがでました。 Running via Spring preloader in process 83 invoke active_re…

RailsでRSpecを使う

RailsでRSpecを利用する rspec-railsのインストール rspecの初期設定 ディレクトリ構成 RailsでRSpecを利用する RSpecには、rspec-railsというRails用のGemがあります。 これを使うことで、RailsもRSpecでテストできます。 rspec-railsのインストール rspec-…

RSpecでモックを使う

RSpecでモックオブジェクトを作る doubleでモックを作る スタブでメソッドを付与 RSpecでモックを試してみる RSpecでモックオブジェクトを作る doubleでモックを作る RSpecでモックオブジェクトを作成するには、doubleを使います。 mock_a = double(A) ↑のよ…

RSpecでスタブを使う

RSpecでスタブを使う方法 RSpecでスタブを試す RSpecでスタブを使う方法 RSpecでスタブを使うには、allow(オブジェクト).to receive(:メソッド名).and_return(返り値)のようにします。 allowで対象のオブジェクトを,receiveで対象のメソッドを指定します。 …

「モック」と「スタブ」

テストを書く上で、「モック」と「スタブ」といったものを利用します。 「モック」と「スタブ」についてまとめます。 「モック」とは 「スタブ」とは 「モック」とは ここでは、テストしたい対象オブジェクトをオブジェクトAとします。 そして、オブジェクト…

RSpecのMatcher基礎

前回RSpecを使ってみました。 utouto97.hatenablog.com その中で、eq を使いました。 RSpecには、eq以外にも多くのMatcherが用意されています。 基本的なMatcherの使用例 a = b aとbが等しい a ≠ b aとbが等しくない a < b aがbより小さい a >= b aがb以上 a…

RSpecを使ってみる

Rubyテスティングフレームワークで人気の高いRSpecを使ってみます。 RSpecのインストール テスト対象のクラス RSpecでテストしてみる テストの記述 テストの実行 テスト失敗 RSpecのインストール RSpecを使ってテストしてみたいと思います。 まず、第一歩と…

Ruby用テスティングフレームワーク

Ruby用テスティングフレームワーク RSpec Ruby用テスティングフレームワーク テストをRubyで書きたい、となったときに利用するフレームワークとしてどのような選択肢があるのでしょうか。 Ruby用ユニットテストのフレームワークです。 Test::Unit Rubyに標準…

ユニットテスト・インテグレーションテスト

開発において、テストでは正常に動作するかの確認をします。 テストについて、特にユニットテスト・インテグレーションテストについて簡単にまとめます。 ユニットテスト インテグレーションテスト まとめ ユニットテスト ユニットテスト(単体テスト)は、…

Railsのtransactionを試す

utouto97.hatenablog.com 準備 同名のユーザーを追加してみる ApplicationRecord.transactionを試す 準備 以下のようなUserモデルを作成します。 validatesで:nameがユニークであることを確認します。 class User < ApplicationRecord validates :name, uniq…

トランザクション

トランザクションとは Railsでトランザクション トランザクションとは トランザクションは処理のまとまりです。 銀行の振り込みがトランザクションの例としてよく挙げられると思うので、ここでも銀行振り込みを例にします。 AさんからBさんの口座への振り込…

RailsでN+1問題を検出する - Bullet

RailsでN+1問題を検出するBullet Bulletを実際使ってみる (Rails) N+1問題を発生させる (TodoとUser) Bulletをインストール N+1を検出するとアラート発生 RailsでN+1問題を検出するBullet N+1問題とその解消方法について、以前まとめました。 そんなN+1問題…