【勉強まとめ】システム設計のセオリー
1.データ設計
概念データモデル
ビジネスの視点から、ビジネス全体を把握できるデータのまとまり
サブジェクトエリア
ビジネスの観点から、一括りにまとめたり、分割する範囲を決めること
理論データモデル
概念データモデルに対して属性を付け加えていく
データ属性
項目 エンティティに付け加える項目のこと
物理データモデル
2.業務プロセス
プロセスモデル
ビジネスの動的側面を表したもの
対義:データモデル(静的側面)
業務プロセス
経営の目的を達成するための活動
業務プロセスの概要
5W2Hで定義していく
特にWhyの部分が重要
3.機能の概要定義
理論CRUD
エンティティとプロセス、エンティティを機能の更新領域を見える化する
データのライフサイクルの把握が可能になる
C:生成
R:参照
U:更新
D:削除
4.ユーザビリティ
ユーザビリティ
便利さ、使い勝手の良さ
アクセシビリティ
マルチディバイスへの対応
アンカータグを使って任意のところにスクロールさせる
javascriptを使わずに任意のところへスクロールさせたかった
<a href="#index">ここをクリック</a> <p id="index">ここに飛んでくる</p>
MacでCentOSのUSBブートを作る
USBメモリを初期化
ディスクユーティリティ > USB選択 > 消去
USBドライブを確認
$ diskutil list /dev/disk2 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *31.3 GB disk2 1: 0xEF 8.9 MB disk2s2
diskutil
ディスクの消去や、パーテーションの分割など「ディスクボリューム」の管理を行うコマンド
diskutil list
指定したボリュームのパーテーション一覧を表示
ボリュームを省略すると、マウントしているボリュームが対象になる
アンマウントする
$ diskutil unmountDisk /dev/disk2
ISOをUSBメモリに書き込む
$ sudo dd if=CentOS.dmg of=/dev/disk2 bs=1m
dd
ファイルをブロック単位で読み出し、指定通り変換して出力する
if=ファイル名 標準入力の代わりにファイルから読み出す
of=ファイル名 標準出力の代わりにファイルへ書き込む
bs=バイト数 1回に読み書きするブロックサイズ(バイト数)
rspecの導入
Gemfile
group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] # Adds support for Capybara system testing and selenium driver gem 'capybara', '~> 2.13' gem 'selenium-webdriver' gem 'rspec-rails', '~> 3.7' #追加 gem 'factory_bot_rails', '~> 4.11' #追加 end
# インストール bundle # specファイルを作成 rails g rspec:install
Capybaraを使えるようにする
spec_helper.rb
require 'capybara/rspec' RSpec.configure do |config| config.before(:each, type: :system) do driven_by :selenium_chrome_headless end config.include Capybara::DSL config.before(:all) do Capybara.default_selector = :css Capybara.javascript_driver = :webkit end end
# コントローラーのテストファイルを作成 rials g rspec:controller name
Gemfileを編集したらdockerに反映させる
docker-compose build
Docker上の既存DBにアクセスできない問題
問題
railsのアプリケーションから既存のデータベースへ接続したいのに接続できない。(app,db共にdocker上にある)
解決
アプリケーションとDBのdockerのネットワークが違うため。
ネットワークを同じにしなければいけない。
docker-composeファイルでネットワーク名を指定しないと、
「docker-composeファイルの入ってるディレクトリの名前 + "_default"」というネットワークになる。
DBのdocker-composeを変更
docker-compose.yaml
... networks: default: external: name: app_default ...
rails sでアプリケーションを起動しようとすると、A server is already running.と出てきて起動できない問題
問題
$ rails s A server is already running. Check /app/tmp/pids/server.pid. => Booting Puma => Rails 5.1.6 application starting in development => Run `rails server -h` for more startup options Exiting
別にアプリケーションを起動させてるわけではないのに、なぜかすでに起動していることになっている
解決
server.pid
を削除する