パソコンが熱くてファンが止まらない[Ruby]

PCのescキー上辺りが熱を持ってファンが回りCPUが100%近くなる問題があったので解消方法の1つとして書きます

作業ディレクトリに移動して、
コマンドで$ bin/spring statusで状態を確認 Spring is running:

となっていれば

$ bin/spring stopを入力 Spring stopped.

となっているのを確認

一応もう一回

$ bin/spring statusを打って Spring is not running.

となっていればよし。

アクティビティモニタでCPUを確認するとプロセス名の上位に来てたrubyが消える。 ファンファンも静かになる。熱はちょっとある。

springが原因っぽかったのでgemを確認すると良いかも。

【図解入門 TCP/IP】を読む - その11

IoT

Internet of Things の略 で、身の回りにある色々なモノ(Things)がインターネットにつながる仕組みのことです。

IaaS

Infrastructure as a Service の略で、サーバーやネットワークなどのインフラを、インターネット上で構築するクラウドサービスのひとつです。

chapter 2 物理層

有線LANの場合は会社や学校で見かけるLANケーブルを物理層と考え、無線LANの場合は、駅やカフェで飛び交っているWi-Fiの電波を物理層と考えます。

Wi-Fiの電波も物理層と考える点が驚きましたが

送信端末と受信端末を繋いでいるのは物理層だけなので、繋いでいるのがケーブルであろうが電波であろうが、どちらも物理層のものだと言えるわけです。

  • コンピュータは全てのデータを0か1で表現します。
  • この二つの数字のことをビットといい、ビットが連続したデータをビット列といいます。

物理層データリンク層から受け取ったビット列をケーブルや電波に流せるアナログに変換するためのルールを定義しています。

有線LAN(IEEE802.3)

イーサネットに関する技術を標準化しています。今、家庭やオフィスなどで、有線LANがのネットワーク環境であれば、ほぼ間違いなくイーサネットが使用されていると考えて良いでしょう。「有線LANといえば、イーサネットだよね」とするほどに標準化を推進しています。

ひとこと

現段階で一つ一つと向き合うよりも流れを把握することを優先するべきだと感じだしたので、明日から読み進め方を変えていきます。

参照

本書のみ

【パーフェクト Ruby on Rails】を読む - その17

3-3-4 あらかじめ用意したデータを読み込む(seed.rb)

seedデータを投入の際は、!付きメソッドを利用し、エラー発生にすぐに気づけるようにすると良いです。

Blog.create!(name: 'cool blog')

batch処理とは

バッチ処理とはコンピュータでひとまとまりのデータを一括して処理する方式です。水をバケツですくうイメージをしてもらって、指定する量によってコップなのかバケツなのか容量の大きさが決まってくるといったイメージです。


・seedに書いたデータを反映させる

bin/rails db:seedコマンドでseed.ebファイルを読み込んで、中に記載されているあらかじめ記入しておいたものを初期データとしてDBに登録できます。
※ 重複は無視されるのでコマンドを入力した回数だけDBにはデータが増えていきます。

% bin/rails db:seed
% bin/rails db:seed
% bin/rails db:seed
% bin/rails runner "p Hoge.count" # p ってなんだっけ🤔?
=> 3 # 3回seedしたので3件ある
# 本書にはrunnerで書いてますがrails cでも確認できるのでrunner使う意味があまりわからないです
  • db:seed:replantを実行すると一度レコードを削除して、改めてdb:seedを実行します。
% bin/rails db:seed:replant
% bin/rails runner 'p Blog.count'
=> 1

rubyのpメソッドとputsメソッドの違いについて復習しました

どちらも画面に表示するメソッドですが、どのように使い分ければ良いのかというと、pは原則、デバッグの道具として使用します。putsはプログラムの機能として意図して表示するときに使用します。


rails db:setupの挙動について

db:dropでデータベースを削除して、db:setupを実行すると、
db:create, db:schema:load, db:seedを一括で行ってくれます。

db:resetの挙動について

db:drop, db:setupまでを一気に実行します。

db:migrate:resetの挙動について

db:drop→db:create→db:migrateの順で実行されます。

db:resetとdb:migrate:resetの挙動の違いまとめ

コマンド db:reset db:migrate:reset
db:drop
db:create
db:migrate x
db:schema:load x
db:seed x

一度消して、再作成した空のデータベースに対してデータを取り込むアプローチが違います。
db:resetはschemaからで、db:migrate:resetは migrationファイルから取り込みます。
db:resetではseedまで行いますが、db:migrate:resetではseedは行いません。

参照

Rails: db:reset よりも db:migrate:reset を使うべき理由 (とその違い)
現場で使える Ruby on Rails 5速習実践ガイド

【パーフェクト Ruby on Rails】を読む - その16

3-3-2 テーブルの定義を反映させる

マイグレーションファイル内ではデフォルトではchangeメソッドが使用されています。 bin/rails db:migrateを実行したら、upになり、bin/rails db:rollbackを行うとdownになります。
remove_columnはupになる事でテーブルが削除されるもので、普段通りにコードを書くと、rollbackで削除されたものを復元できませんが、Railsガイドにこのような記述がありました。

remove_columnは、3番目の引数でカラムの型を指定すればロールバック可能になります。元々のカラムオプションも指定しておかないと、ロールバック時にRailsがカラムを再作成できなくなります。

remove_column :posts, :slug, :string, null: false, default: ''  

この例でいうと、:stringが該当します。カラムの型は文字列だと指定することで、rollbackによる復元が可能になります。

bin/rails db:rollbackの挙動についてあやふやだったので調べました

% rails db:rollback コマンドを使うと、% rails db:migrateしてup状態の1個前のマイグレーションファイルをdownにしてくれます。2個前ならSTEP=2というオプションを付与します。

upメソッドとdownメソッドについて

正直、changeメソッド以外のupメソッドの時とdownメソッドの時でマイグレーションの中の挙動を変えるのを書く場合に遭遇した事がないので、使う時にはまた読み返したいと思いました。

データベース周りの全体像がイメージできていなかったので調べました

画像引用
とてもわかりやすい図をありがとうございます。

  • DBをCREATEした時にデータベースに情報を入れるには、1回目の作成時にはschemaファイルはないのでマイグレーションファイルから取り込む必要があります。
  • 作成したマイグレーションファイルをrails db:migrateするとdb:schema:dumpも実行されschema.rbが出来上がります。
  • rails db:schema:loadを使うとき
    • 例えば、一度 何かしらで DBが空で、schema.rbが残っている状態でrails db:createをして空のDBを作成後、データを入れるときにマイグレーションファイルから読み込むときよりも、 rails db:schema:loadスキーマファイルを読み込む方が、高速かつエラーが起きにくい傾向があります。Railsガイド

個人的に興味深かったところ

rails db:migrateとrails db:rollbackを行うと同時にrails db:schemaも実行されているから、schema.rbの内容が書き変わるというところが、点と点が線になった感覚がありました。
(´・ω・`) (´-ω-`)

参照

bin/rails db:rollbackの挙動
schema.rbとmigrationファイルの関係をまとめてみたよ

【図解入門 TCP/IP】を読む - その10

新しいネットワークのカタチ

SDN

SDNは"Software Defined Network"の略で、ソフトウェアによって管理・制御される仮想的なネットワーク、あるいはそれを構成するための技術のことです。

コントロールプレーン - ネットワーク全体を制御 ・データプレーン - パケットを転送する の2種類に分けられます。

コントロールプレーンにあるSDNコントローラー(ソフトウェア)は、データプレーンにある物理的なネットワーク(ハードウェア)に設定を送り込み、仮想的なネットワークを作ります。

オーバーレイ型

VXLAN

パケットを入れるカプセル💊であり、ヘッダーをつけて行き先🏠を明示することで、両者をつなぐトンネルができる。VXLANはプロトコルです。🏩

ブォン🤽 = 💊 = 🏠 <届いた!

  • ホップバイホップ型

スイッチ一つ一つに対して、経路の情報の(フロートリ)を配布し、その情報を元にパケットを転送する方式です。
現在は(ほぼ)使われておりません。使い物になりません。

CDN

CDNは"Content Delivery Network"の略で、画像や動画、HTMLやCSSなど、Webコンテンツで使用される、いろいろなファイルを大量配信するために最適化されたインターネット上のサーバーネットワークのことです。

  • オリジンサーバー(お頭)
    オリジナルのwebコンテンツを持っている
  • エッジサーバー(子分)
    オリジンサーバーのキャッシュ(一度アクセスしたサイトのデータを一時的に保存した)を持つユーザーから近い場所にあるサーバー

    ↓アプリを作ったことがある人ならイメージがつくかも↓
    CDN

ひとこと

今までの勉強はFF7で言えば、背景のストーリーもわからないまま、目の前の敵をひたすら倒し、気づいたら理由もわからないままセフィロスを倒していたという感じでしたが
今やっとストーリーを理解し、どうしてセフィロスを倒さなくてはいけないのかわかり、勉強が楽しくなってきた…。というのが現時点での感覚です。
🧝‍♀️🧚‍♂️🤴 ⚔️ 🐉 🏰 🦭

参照

CDN

【パーフェクト Ruby on Rails】を読む - その15

DBを管理する

railsコマンドで利用できる主なコマンド

コマンド 概要
rails db:create データベースを作成する(SQLite3の場合は不要)
rails db:drop データベースを削除(SQLite3の場合は「.sqlite3」ファイル自体を削除)
rails db:migrate マイグレーションの内容をDBに反映させる
rails db:migrate:status 現在のマイグレーション状態を表示する
rails db:prepare DBが存在すればマイグレーションを、存在しなければデータベースのセットアップを実行する
rails db:reset データベースをdropし、db:setupを実行する
rails db:rollback 実行したマイグレーションを取り消す
rails db:schema:dump DBの構成をdb/schema.rbへ出力する
rails db:schema:load db/schema.rbの内容をDBへ反映する
rails db:seed db/seeds.rbの内容を実行する
rails db:seed:replant DBの内容をTRUNCATE(切り捨て)し、db:seedを実行する
rails db:setup データベースを作成し、スキーマの読み込みとシードデータの読み込みを行う
rails db:version 現在適用しているマイグレーションのバージョンを表示する

データベースについての曖昧だった知識を記述していきます

- リレーショナルデータベースについて

リレーショナルデーベースは表です。 数学の演算に基づいてデータを取り扱う事ができます。
一件のデータをレコード、各項目をフィールドと呼ぶ

- 外部キーとは

他の表の列を参照しているキーを外部キーと呼ぶ

作成されたmigrationファイルに変更を加えたものをDBに反映させたい時はrails db:migrateする

一度、migrateしたものを取り消したい場合はrails db:rollbackを使います
(何があったかを残しておくためにロールバックは現場ではあまり使わないと聞きました)

ひとこと

進捗よりも、DBについてそもそもの部分がわかっておらず、根本的なところの議論が中心でした。今日でデータベースに対する理解が深まりました。🤦‍♀️ <oh...

参照 

rails db:reset rails db:magrate reset

【図解入門 TCP/IP】を読む - その9

1-4 いろいろなネットワーク機器のカタチ

データリンク層以上(物理層以外)で動作するネットワーク機器は、さらに「物理アプライアンス」と「仮想アプライアンス」の2種類に大別することができます。この二つは、どちらも階層構造モデルに準拠しつつ、パケットを処理するという点においては変わりません。しかし、機器としてのあり方が変わります。

物理アプライアンス

目で見る事ができる、いわゆる箱型の装置です。

仮想アプライアンス

仮想化技術を提供するソフトウェア(仮想化ソフトウェア)の上で動作するネットワーク機器です。

(これら二つはハードウェアとかソフトウェアとかより、引いた目で見ないとイメージできない。もっと外側の部分)


ネットワークのカタチ

LAN,WAN,DMZこの3つを知ればネットワークの理解が大きく進みます。

LAN

LANはLocal Area Networkの略で、家庭や企業など、限られた範囲のネットワークのことです。スマホタブレット、テレビやHDDレコーダーなど、たくさんの端末がインターネットに接続することが多くなってきて、家庭内の端末は、ブロードバンドルーターが提供しているLANに一旦接続して、インターネットに出ていきます。 企業のLANも基本的に変わらないが、構成しているネットワーク機器の性能と機能が大きく異なります。

WAN

WANはWide Area Networkの略で、距離的に遠く離れた範囲のネットワークのことです。 インターネット閉域VPNに大きく分けられます。
インターネットはざっくり言うと、ルーターの集まりです。

インターネットサービスプロバイダー(以下、ISP)や研究機関、企業などが持っているたくさんのルーターが、山を超え、谷を越え、海を越え、国境を繋いでくれていて、無数のパケットを運んでいます。

それぞれのISPには AS番号という、インターネット上で一意の管理番号が割り当てられています。ASはAutonomous(自律)Systemの略で、それぞれの組織が管理している範囲のことです。

  • 閉域VPN
    LANとLANを接続するネットワークのことです。

DMZ

DeMilitarized Zoneの略で、インターネットに呼応会するサーバーを設置するネットワークの事です。冗長化 の機能が必要不可欠で、 "どの機器が故障しても、ケーブルが断線しても即座に経路が切り替わりサービスを提供し続けることができます"
そのために同じ種別のネットワーク機器を並列に配置します。

ひとこと

ここではまだ説明段階のようで「そういうものがあるんだな」、「へぇ〜」くらいの感覚で読んでました。🤔 🤔 🤔

参照

本書のみ