サーバーを立てるとは?

目次

  1. サーバーを立てるとは?
  2. 具体的にどんな準備がサーバーで必要なのか?

サーバーを立てるとは?

ブラウザーに文字を表示するための準備をすること=サーバーを立てる。

具体的にどんな準備がサーバーで必要なのか?

必要なもの4つ

1つ目 ①アプリケーション⇨自分達で作る部分=プログラミング言語を用いてサービスを作る 例 グルナビ、クックパッドなど

2つ目 ②ミドルウェア⇨osができないことを補助してくれる存在

3つ目 ③os⇨脳みそ(最低限の機能使うためのツール例ファイルを開いたり、クリックできたり)

4つ目 ④ハードウェア⇨サーバーという機械そのもの

Ruby 基礎

Ruby 基礎

目次

  1. ①各種名前
  2. ②①の機能の紹介

①各種名前

①各種名前 ①オブジェクト  ②インスタンス  ③メソッド  ④クラス  

② ①の機能の紹介

オブジェクト ⇨便利機能を兼ね備えたお道具箱のイメージ お道具箱のイメージとは? お道具箱にはハサミや水のりやホッチキスといった便利な道具がいっぱい入っている オブジェクトの中にもこういった便利な機能(道具)がいっぱい入っている。 この便利な道具(機能)を⇨メソッドと呼ぶ。 じゃあどうやってお道具箱(オブジェクト)の中の道具(メソッド)使うん? ⇨オブジェクト名.メソッド ↑でいう”hello world”がオブジェクトで.lengthなどがメソッド  ちなみに”hello world”.lengthをするとhello worldの文字数を調べてくれる。.lenghはオブジェクトの文字数を調べてくれる機能(メソッド) 注意 オブジェクトはクラスという緑色の空間の外だとオブジェクトと呼ぶクラスの中⇨インスタンスという つまりオブジェクトもインスタンスも同じものを指す 実はメソッドはオブジェクトの種類によって使える使えないある。オブジェクトの種類→クラスという インスタンスが文字列⇨String クラス  このクラスでは.roundメソッドや.floorは使えない インスタンスが数値⇨Float クラス  このクラスでは.length .reverseなどのメソッドは使えない

動画配信の仕組み

目次

  1. 動画配信の種類
  2. それぞれの特徴

動画配信の種類

①ダウンロード ②ストリーミング ③プログレッシブダウンロード

それぞれの特徴

①ダウンロード ⇨動画ファイルが全てダウンロードし終わらないと見れない。(プロトコルはHTTP) メリット オフラインで視聴可能 デメリット ダウンロードが終わるまで見れない ⇨例 アマゾンプライムなど

②ストリーミング再生 ⇨動画をダウンロードしながら視聴可能(プロトコルRTSP ,MMS,RTMPなど) メリット 動画のダウンロードが終わらんでも見れて快適 デメリット オフライン視聴NG 再生したデータは順次破棄 例 YouTube ニコニコ動画など

プログレッシブダウンロード ⇨動画をダウンロードしながら視聴可能(HTTP) 再生したデータはファイルとしてクライアントのPCに残る 例Huluなど 

②と③の違い ⇨コピーのされにくさの違い ②コピーされにくい(手元の端末に保存はされず消えるから) ③コピーされやすい(手元の端末に保存されてデータが残るから)

視聴時の違い ②通信環境が悪くても、動画が途切れてしまったり、飛んでしまうことはありません。「止まっている」状態になる。 ③通信環境がどんなに悪くても、再生時間が進んでいきます。よって、画質が荒くなったり、途中で飛んでしまうことがあります。

見分け方 YouTubeなどであれば、灰色のバーがタイムシークバーに沿って伸びていく。こうなっている場合はプログレッシブダウンロード、そうでない場合はたいていストリーミングになります。

Ajaxとは

  1. Ajaxとは?
  2. HTTP通信との違い
  3. Ajax通信の流れ
  4. Ajax使用用途

Ajaxとは?

HTMLの一部を追加で読み込む通信方法

どういうこと? ⇨Ajaxが使われている具体例を見てみよう。 例 YouTube YouTubeの開くとこのように動画のサムネイルが並ぶ下の方にスクロールするとサムネイルが一瞬暗くなりどんどん追加でサムネイルが表示される=追加のHTMLがどんどん読み込まれている

HTTP通信との違い

HTTP通信はページ全体をまるっと更新している

まるっと更新? ⇨Google検索でどういうことか見ていこう。 googleで検索かけた時このように下までスクロールする追加の関連情報を閲覧するとき『次へ』をクリックするかページ数をクリックして追加の関連情報を読み込む。 実際どちらか押してみると↓ 1ページ目の情報全てが書き換えられて2ページ目が表示されている。 つまりページ全体が再度読み込まれ画面に表示されている。

Ajax通信の流れ

私たちがYouTubeを閲覧する際ブラウザーからyoutubeと入力して検索をかける YouTubeサーバーに『YouTube 見せてよー』っていう依頼した後にyoutubeサーバーから「はいどうぞ」ってデータを渡されて見れるようになっている この時点では普通のHTTP通信でやり取りしている。

それからぺージを一番下までスクロールすると今度はさっきの『YouTube見せてよー」っていう依頼(ブラウザーのurlを打ち込んでHTTPリクエスト)とは違って Ajax通信ではyoutubeの検索結果画面に含まれるjavascriptからHTTPリクエストが飛ぶそれから追加の情報が返ってくる↓

Ajax使用用途

  1. HTMLの追加 2.HTMLの更新 3.バックグラウンド処理

1.は先ほどのyoutubeのサムネイルの追加の例

2,例Facebookで言うと。左のタブからフォロー中やゲームで遊ぶというとこをクリックすると赤枠のところ(画面の一部)だけが変化する。理由としては左のタブや画面上部のヘッダーは同じ画面なのでいちいちページ全体を更新するのは非効率

3,バックグラウンド処理

⇨画面を遷移しなくてもサーバーとの通信を行いながら動的に画面のページを変える

rails データの改竄(カイザン)をさせないためのストロングパラメーターとは?

目次

  1. form_withで送られたデータをデータベースに保存する際の注意点
  2. ストロングパラメータ
  3. ストロングパラメータの使い方
  4. 用語

form_withで送られたデータをデータベースに保存する際の注意点

⇨form_withで送られてくるデータは改竄が可能。

どういうことかというと 左 htmlの画面 右 デベロッパーツールの画面 例えばデベロッパーツールのtask[title]を⇨task[like]に変更して入力画面に文字を打つと データベースのtaskテーブルのtitleカラムに入る予定だった値がlikeカラムに入ったりしてデータが改竄される。

ストロングパラメータとは?

⇨改竄されないために特定の値しか入力させない仕組みを⇨ストロングパラメーターという。

ストロングパラメータの使い方

①コントローラにprivateと記載 ②privateの下にモデル名_paramsというメソッドを定義 ③そのメソッド内でparams.require(:モデル名).permit(:キー名)と記載

↓こんな感じ

用語

①privateとは? 呼び出すとそれ以降に定義されるインスタンスメソッドはそのクラス中でしか呼び出されなくなります。privateメソッドを使っておけばクラス外部で呼び出されるとエラーが起きるようなメソッドが使われるのを防ぐことができる。=外部からの操作を受け付けなくする。

require(モデル名) テーブルを指定する

permitメソッド paramsで取得したキーのうち、データベースに保存してもいいものを許可するメソッドです。 permit(:キー名)←このキーしか受け付けないよって意味

paramsとはフォームなどによって送られてきた情報(パラメーター)を取得するメソッドです。

tcp/ipとは

目次

  1. TCP/IPとは
  2. tcp/ipの概念のイメージについて
  3. 具体的に各階で何が行われているのか?

  4. IPアドレスMACアドレスの違い

  5. 用語

TCP/IPとは

pcや他のデバイスからwebサーバーに繋がるまでに必要なルールtcp/ipとは TCPとIPというプロトコル(ルール)を使っているからこの名前がついた。 ⇨コンピュータ同士で情報をやり取りするときの世界共通のルール

どんなルールがあるん? どうやってデータを送る? どういう順番で送る? エラーが出たら? など

tcp/ipの概念のイメージについて

⇨郵便物を運ぶときのイメージ  ①4階建てのビル=パソコンと考える

②荷物=データ 左のビル(パソコン)から右のビル(パソコン)に荷物(データ)を運ぶとき、必要な情報(ルール)とは? ⇨住所、輸送手段など どうやってその必要な情報(ルール)がビル(パソコン)内で整理されているのか?

まず左のビルの4階で『荷物(データ)の準備』

3階で『部屋番号など』

2階「住所」

1階『輸送手段』

を決めるイメージ 4階から1階までの作業全て情報(ルール) を整理することをtcp/ipと呼ぶ

具体的に各階で何が行われているのか?

4階 tcp/ipではアプリケーション層と呼ぶ。

アプリケーション層では『アプリごとにデータ形式のルールを決める』宅急便で言うと仕分け作業この荷物はクール便なのかゴルフ便なのか アプリごととは?↓のどこのプロトコルに渡せばいい?っていうのを決めるのがアプリケーション層の役割

①メールアプリ(gmailなど)でメールの送信するときのデータ形式のルール⇨SMTPというデータ形式のルールがある

Googleアプリでweb観覧するときのデータ形式のルール ⇨HTTPというデータ形式のルールがある ③ファイル(画像を送るなど)の転送のデータ形式のルール ⇨FTPというデータ形式のルールがある 他にもPOP 3,DNSというプロトコルがある

3階=トランスポート層 ⇨役割はデータを送信するに当たって、もし想定外のことが起きたときの対応のルールを決めること。

前提としてインターネット上で通信のやり取りするとき100%こちらが送りたいデータを相手に届けれるとは限らない。またデータを届けられたとしてもそのデータの一部が欠落している可能性もある。 そこで想定外のことが起きたときのルールが 2つがある

TCP(データを分けて送る)このとき分割したデータをそれぞれパケットと呼ぶ。このパケット1つ1つに部屋番号(ポート番号)がついている=データの最後の行き先を決めている。パケットのイメージとしてはプラモデルのイメージ元々1つだったものを届いたら受取人に組み立ててもらう。

UDP それぞれの特徴 ①丁寧で信頼性の高い⇨正しくデータが送られたことを保証する仕組み⇨ちゃんとデータが届いたかどうか確認してくれる 左のビルから右のビルにデータ送った場合 左のビルが届いた?と確認をし右のビルがその通知に対して 届いたよーか届いてないよーって通知を左のビルにかえす もし届いてない場合は左のビルはデータを送り直す。 データの送信に失敗した時やデータが欠落して届いた場合また同じデータを再送する仕組みがある。

②雑やけどデータが早く届けられる⇨スピード重視 相手に失敗なく届いたかどうかは気にしないで一方的にデータを送る。

2階 インターネット層

インターネット層の役割=左ビル(パソコン)から右ビル(パソコン)へ荷物(データ)を送るためのルールを決める場所。=最終的に届けたい住所の特定する場所 IPプロトコルというルールを使う。 宅配便で言う自分の住所(IPアドレス)と相手の住所(IPアドレス)をパケットに追加する。=パケットに相手のIPアドレス(住所の情報をシールみたいなんで貼る)。このシールを識別子と呼ぶ。識別子には相手を特定するための情報がつまっている。 どうやって相手の住所(IPアドレス)を把握するん? ⇨ルーターに備わっているルーティングテーブルと呼ばれる経路情報を利用することで相手のIPアドレスを取得する。 要はルーター同士は繋がっており、どの経路が一番良いかを導き出してくれる。google mapで言うと目的地調べたとき現在地から目的地をまでの道のりを何通りか調べてくれて最適なルートを出してくれるイメージ。 最適な経路を導き出してくれる仕組みをルーティングと呼ぶ。 

1階 ネットワークインターネット層 ⇨ケーブルなんかで物理的に繋がっているもの間のルールを定めている。⇨ルータールーター間のルール。このネットワークインターネット層ではイーサネットと言うプロトコル(ルール)が使われている。=次どこの機器に送ればいい?っていうのを確かめる場所 イーサネットではMACアドレスというものを使って機器同士の通信を行なっている。ここで注意がマクドナルドののアドレスではないらしいですw Macアドレスとは?→通信機器1つ1つに破り与えられた固有の番号。 ルーターとは? 宅急便で言うところの営業所。Amazonで商品注文したらAmazonから直接ものが届くわけではない。 実際はamazon ⇨ヤマト営業所A⇨ヤマト営業所B⇨ヤマト営業所c⇨営業所D⇨自宅のように営業所を通っている。 データを送るとき同じネットワーク内にあるルーターにしかデータを送れないのでバケツリレーのようにデータを近くのルータに送っていっている。

IPアドレスMACアドレスの違い

IPアドレスは荷物(データ)が送られた出発地と荷物(データ)が送られる目的地を表す⇨目印のようなもの MACアドレスは今現在いる場所の近くの営業所(ルーター)に荷物(データ)を送るための住所 このとき営業所(ルーター)に届くたびに以下の作業が行われる。営業所(2階建)内で2階のインターネット層( IPアドレス確認する)、1階のネットワークインターネット層(次はどこの営業所(ルーター))に届けるのかの確認する。 Macアドレス=デバイスを特定する住所

用語

①識別子 =各層(階)で扱われるパケットにはるシールみたいなもの 識別子(シール)には種類があり。 アプリケーション層ではソフトウェアを区別するためにポート番号という識別子(シール)を使う インターネット層では 相手を特定するためのIPアドレスという識別子(シール)を使う ネットワークインターフェイス層では 直接データをやり取りする相手を特定するためにMACアドレスという識別子(シール)を使う

用語  データを送るときのルールをプロトコルという

rails 初期設定とコマンド

  1. resourcesメソッドと使い方(routes.rbに記載)
  2. root ”コントローラ名#アクション名”(routes.rbに記載)
  3. form_with 

resourcesメソッドと使い方

resourcesメソッドとは? ⇨railsが持っている便利機能を使うコマンド

便利機能↓ つまり↑の7つのアクションに対応するルーティングを自動的に作ってくれるのが resorces コントローラ名 コマンド routes.rbで記載する

root ”コントローラ名#アクション名”(routes.rbに記載)

⇨routeのurlでアクセスした時にこのコントローラのこのアクションを実行するって意味

form_withとは

⇨form_withは、htmlのformタグを生成するためのメソッド。 このようにhtmlを生成するメソッドをビューヘルパーと呼んでいます。

使い方 データベースに保存する時は、以下のように記述します。

<%= form_with model: モデルクラスのインスタンス do |form| %>
  <!--フォーム内容 -->
<% end %>

モデルのインスタンスとは? ⇨保存したいテーブルのクラスのインスタンスのことです 今回はusersテーブルに新たにレコードを作成したいので、コントローラー側で下記のように記述します。

def new
  @user = User.new
end

@user=テーブルのクラスのインスタンス

<%= form_with model: @user do |form| %>
  <%= form.text_field :name %>
  <%= form.submit %>
<% end %>

フォームの内容には

<%= form_with model: @user do |form| %>
  <%= form.text_field :name %>
  <%= form.submit %>
<% end %>

このようにform.htmlタグ名 :カラム名と指定します。 つまり上の例だとusersテーブルのnameカラムに投稿した内容が送られることなります。 送信ボタンはform.submitとするだけで作成されます

htmlのタグ名には