エンジニアのたまご日記

プログラミングの情報発信

ネットワークの基礎③

みなさんお疲れ様です。

エンジニアのたまごです!

 

では今日も張り切ってアウトプットして参りましょう!

今日はプロトコルについてアウトプットしていきます!

では早速、プロコトルとは?

ずばり、規則を定めたものです!

どういうことかというと、

コンピュータ同士でデータをやり取りするには、データをどのような形式でどのような手順で送るか、または受け取るかを決める規則が必要になります。その規則を定めたものがプロトコルです。

ネットワーク上での通信の手順や規則を定めたものを特に通信プロトコルと呼びます。

そして、複数のプロトコルを階層的に構成したものをプロトコルスタックといいます。

 

プロトコルスタックの考え方の代表例として、OSI参照モデルや、インターネットで利用されているTCP/IPモデルがあります。

 

ではまず、OSI参照モデルについて書いていきます。

OSI参照モデルとは、あらゆるPC、ネットワーク機器、ソフトウェアがそれぞれ相互接続できるようにISO(国際標準化機構)によって定められたものです。そして、OSI参照モデルに基づいて設計されたプロトコル群が、OSIプロトコルです。

ただ、現在では、インターネットの普及によって事実上TCP/IPモデル(TCP/IPプロトコルスイート)が標準となっており、OSIプロトコルは実際には利用されていません。ただ、OSI参照モデルは通信の際の基本的な概念としては残っているため、理解しておく必要があります。

 

OSI参照モデルの7階層とその役割について。

 

OSI参照モデルは、通信を行うための機能を7つの階層に分け、それぞれの役割を定めています。

 

レイヤ7(上位層)階層:アプリケーション層 役割:各アプリケーションに用意されたプロトコルを規定。

レイヤ6(上位層)階層:プレゼンテーション層 役割:データの形式などを規定。

レイヤ5(上位層)階層:セッション層 役割:通信の開始、維持、終了を規定。

レイヤ4(下位層)階層:トランスポート層 ノード間の通信を制御するための機能を規定。

レイヤ3(下位層)階層:ネットワーク層 役割:複数のネットワークでエンドツーエンドの通信を可能にする機能を規定。

レイヤ2(下位層)階層:データリンク層 役割:直接接続されたノード間での通信を可能にする機能を規定。

レイヤ1(下位層)階層:物理層 役割:コンピュータ上で使用するデータの電気信号での変換などを規定。

 

このように機能ごとに階層を分けることで、どこの層で仕様の変更などがあっても、その層の機能を満たしていれば、他の層に影響を与えることがありません。

 

ということで、今日のアウトプットはこの辺にしたいと思います。

次はTCP/IPモデルについてアウトプットしようかな。

ではまた!!!!

ネットワークの基礎②

みなさんこんにちは!!

 

昨日、金森式ダイエットなるものをがくちゃんで見ました。

なので、今日から断糖高脂質食に変えて糖分の摂取をできる限り減らしてみようと思います!!

さ、どうなるんだろw

 

んでは、今日もアウトプットを行っていきます。

 

昨日はネットワークの種類が3種類あるということを学びました。

LAN、WAN、Internet、の3つ。なんだったか考えてみてね。

 

今日はネットワークトポロジについて、

ネットワークトポロジとは、端末やネットワーク機器をどのように接続しているのか、その接続形態のことを指します。単にトポロジと呼ぶこともあるみたいです。

 

その接続形態に型があり、バス型、リンク型、スター型、メッシュ型と様々な種類があります。一つづつ説明していきますね。

 

バス型とは、基幹となるケーブル(バス)に各ノードを接続する接続形態です。

このバスに障害が発生するとノード間の通信ができなくなります。

 

リンク型とは、隣接しているノードを円状に接続する接続形態です。1箇所で障害が発生すると、全体に影響がでます。

 

スター型とは、中央の集線装置に各ノードを接続する接続形態です。現在の主流の接続形態となります。

 

メッシュ型とは、ノード間をそれぞれ接続する接続形態です。リンクが多くなりますが、どこか1箇所で障害が起きても他のノードを経由して通信することができるため、障害に強い構成になります。

すべてのノードが互いに接続している形態をフルメッシュといい、部分的にメッシュとなっている形態をパーシャルメッシュといいます。

 

またこれらのネットワークトポロジを複数組み合わせた接続形態を、ハイブリット型といいます。

 

ってところですかな。

次回は、通信の方式についてアウトプットを行っていこうと思います。

もう11月ですね、季節の変わり目なので体調崩されないようにお気をつけて!

ではまた!!

ネットワークの基礎①

みなさんお疲れ様です!

エンジニアのたまごです!

 

今日は、ネットワークの基本を勉強したのでアウトプットしていこうと思います。

 

そもそもネットワークとはなんだい???

ネットワークとは、パソコンやネットワーク機器といった複数の要素がケーブルなどで接続され、相互に通信できる状態になっているものを指す。

例えば、2台のパソコンを接続している状態は線。複数台のパソコンをケーブルで接続すればとなります。この網がネットワークのことをいってます。

 

このネットワークを構成する要素をノード

PCやルータといった機器がノードに該当します。

そして、ノードとノードを結ぶ線をリンク、リンク上のデータの流れをフローといいます。

また、ネットワーク上を流れる情報やその量をトラフィックといいます。

 

んで、ネットワークには3つの種類があります。

まず1つ目は、

LAN(Local Area Network)

家庭、企業、ビルといった1つの建物や施設内といった程度の範囲で利用されているネットワークです。

 

2つ目、

WAN(Wide Area Network)

本社と支社といった地域的に離れたLANとLANを接続するネットワークです。

 

3つ目が、みなさんご存知の

インターネット(Internet)

数多くのネットワークを接続した地球規模の巨大なネットワークのこと。

 

この3つに分類できます。

なお、インターネットの仕組みを利用して構築したLANをイントラネットと呼びます。

 

今日のアウトプットはここまで!

それではみなさん良い1日を!

また!!!

herokuでデプロイしたアプリのDBを閲覧する方法

テックキャンプでherokuにてアプリをデプロイした後に、DBをMySQLに設定しました。

そこで疑問をもちました。本番環境にて飛ばしたデータってどこで閲覧するの?

んで今回は、TCの仲間Sbさんが同じ疑問をもって既に解決されてたので詳しくお話しを聞くことに。

 

行う順序は、

①ターミナルでherokuにログイン

②DATABASE_URLの確認

③Sequel proで指定のDBにアクセス

④閲覧(削除&編集)

って流れですね!!

 

まずは①、下記記述にてターミナルでherokuにログイン。

% heroku login --interactive

メールアドレスとパスを入力してから

Logged in as ~メールアドレス~

が表示されればおっけい。

 

次は②、DATABASE_URLの確認

ターミナルでherokuにログインできたら

% heroku config

を入力し実行。

すると情報が表示されるので、その中の

DATABASE_URL: に注目!

mysql2://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true

:、@、/、?でそれぞれ区切られているので見間違えないようにね!

ここまで確認できたら次の③へ

 

③は、Sequel proで指定のDBにアクセス

そしてTC生ならばインストールしているであろうSequel proを起動。

f:id:be23bzywqzzcWP6:20201024155609p:plain

Sequel proのtop画

標準の画面で、先ほど確認した情報をコピペして一番上の名前は自由に名前を入力する。(アプリ名がわかりやすいと思います。)

そして左下にあるお気に入りに追加を押していると、次回は情報入力せずに接続できるのでお忘れなく。

 

そして④の閲覧ですね。

あとはTC生であればSequel proも学習していると思うので、編集と削除の作業は同じです!!

 

さ、アウトプットも終わったし今日はこの辺で!また!!!

Rails JavaScriptのイベントが発火しない泣

みなさんお疲れ様です!

エンジニアのたまごです。

 

私もほんの2時間前まで悩み続けたJavaScriptのイベントが発火しない問題について書いていこうかと思います。

問題のコードがこれ、

 

window.addEventListener("DOMContentLoaded", () => {

(省略)

});

このjsファイルのaddEventListener("DOMContentLoaded")です。

なぜかlocalhostで最初に画面遷移したときに発火せず。再読み込みを行うと発火する。

っていう不便極まりない状態でした。

しかもherokuにあげて本番環境でも同じ現象、、、、いやいやアプリとして終わってるじゃん。

と失望しながら色々調べましたが、調べ方が悪かったのか解決するには至らず。泣

 

そしてテックキャンプ(以降TC)の元チームでZoomミーティングしてる時に、今こんな状態〜と伝えると、TCカリキュラムの中でみんなのメンター的存在だったKjさんが、"turbolinks"コメントアウトしたらいけると思いますよ!

 

What!?え?turbolinks????と思い、言われたまんまapplication.js下のturbolinksをコメントアウトしたら、画面遷移でイベント発火しました。

Wow!マジかよ、、、全く関係ないと思ってたところが悪さしてたとは、、、(プログラミングあるある)

さすが未経験なのにメンター並の知識と経験を持つKjさん、今後ともよろしくお願いいたします!!!

 

んで、

たぶんですが、今後も私と同じく初心者の方々はRailsJavaScriptを使用している時に、沼にハマる部分だと感じたのでturbolinksについて調べてみました。

こちらのブログがわかりやすかったので貼っつけときます。

 

coffeecups.blue

このブログに書いてあることで、

turbolinksを導入したアプリでリンクを踏んだ時にturbolinksが作動しますが、リンク先の全てのページを読み込むのではなくて、自動的にページを取ってきてbody要素を入れ替えてhead要素にくっつけるという作業をしてくれます。(意味がわからない方はブログへgo!)

そして、turbolinksは最初のページ読み込み時にJavaScriptなどのイベントを発火しますがページ遷移したときは読み込みません。

はいでたーーー、、原因はこいつだわーー。

ページを差し替えているだけで読み込みを行っていないからイベントが発火しなかったってことか、と解釈。

対策としてturbolinks:loadを使用するやり方もあるみたい。

まあ今回はkjメンターのいう通りコメントアウトで外しとこ。

 

って感じでJavaScriptのイベント発火しない問題を解消。

また、なんか沼にハマったら共有しますわ!

 

それでは今日はこの辺で、また!!!

 

JavaScriptの基礎知識

みなさんこんにちは、エンジニアのたまごです。

今日はJavaScriptの基礎知識についてブログを書きます。

 

テックキャンプでもJavaScriptを学びました。

ただ、RubyRailsほど深くは学べていないので、改めてJavaScriptの概要から学び始めることにしました。では、さっそくいきましょう!!

 

JavaScriptの特徴について〜

特徴は6つあります。

インタプリタ言語

C言語JAVAに似た構文

●動的型言語

●プロトタイプベースのオブジェクト指向

リテラル表記の表現力

関数型プログラミング

 

 

まず1つ目、インタプリタ言語について。

JavaScriptインタプリタ言語です。

インタプリタ型言語は実行環境上で直接動かせます。特にJavaScriptの場合、普及しているWebブラウザが実行環境なので手軽に試せる点で今や右に出るものがない存在です。

 

2つ目、C言語JAVAに似た構文について。

JavaScriptの構文はC言語Javaに似ています。ifやwhileなどのキーワードが同じでその制御構造も同じに見えます。しかし見た目ほどこれらの言語との類似性はないので注意が必要です。

 

3つ目、動的型言語について。

JavaScriptC言語Javaと異なる点のひとつはJavaScriptが動的型言語である点です。ソースコードの見た目で説明すると、変数や関数の返り値に型指定がありません。インタプリ型言語同様、動的型言語もJavaScriptが開発の手軽さを優先した結果です。

 

4つ目、プロトタイプベースのオブジェクト指向について。

世の中でオブジェクト指向言語を名乗る多くの言語はクラスベースのオブジェクト指向を支援する言語機能を提供します。プロトタイプベースのオブジェクト志向はJavaScriptが世界初の言語ではありませんが、著名な言語に限定すれば、世界初と言っても差し支えありません。

 

5つ目、リテラル表記の表現力について。

JavaScriptの開発生産性を上げている要因の1つがリテラル表記の表現力です。Perl以降の多くの言語が高機能なリテラル表記を持つため、JavaScriptだけが突出した存在ではありませんが、JavaScriptプログラミングのリテラル表記は相対的に良くできています。

 

6つ目、関数型プログラミングについて。

関数型プログラミングというパラダイムは古くて新しい話題です。オブジェクト指向という言葉が生まれる以前から存在するパラダイムです。JavaScriptが直接サポートするパラダイムは、どちらかというと手続き型ですが、関数をオブジェクトとして扱えることと関数リテラルがあることで関数型プログラミングをサポートできます。

 

というのがJavaScriptの6つの特徴になります。

ただ、他の言語とも比べないと何がなんだかわからないので、多言語の特徴も近々書いていきますね!

では今日はこの辺で!また!!

再開!

最初の投稿からもう2ヶ月が経ちました。

そして今日が2回目の投稿w

 

就活も始まり、プログラミング学習を続けながら就活サイトの登録やオリジナルアプリの実装、Wantedlyのマイページを育てたりやることが山積している今日この頃。

毎日やることが詰まっている状態というのは楽しいですね!

今月9日にテックキャンプを卒業してからチームのみんなは就活を頑張っています。

卒業してからも色々と情報交換を行い、刺激をもらっています!感謝の極みですね。ありがとうございます。

 

さて、これから投稿していくテーマは、その日に学んだことのアウトプットにします。

テックキャンプで行っていたアウトプットの効率が良かったので今後採用していきます。

 

んでは手短ですが、また!!