ヒビカワル

人生100年時代に向けて日々変わることを決意したオッサンのブログです!

SSH通信についてまとめてみた

SSH通信とは

一言でいうと「データを安全に送受信する仕組みの1つ」です。

仕組み

  • 秘密鍵を個人の場合はローカル(自身のパソコン)へ配置する
  • 公開鍵を通信を行うサーバーへ配置する
  • 公開鍵と秘密鍵を用いて認証を行う
  • 公開鍵と秘密鍵を用いてデータを送受信する

流れ

1.鍵の交換をしてデータをやり取りする双方にセッションidが付与される

2.送信側が秘密鍵を用いて署名を作成する

3.受信側は公開鍵を用いて署名を確認する

4.公開鍵に対応する秘密鍵であるかをチェック

5.チェックで相違がなければ本人確認(承認)となる

6.データのやり取りが可能となる

7.データはそれぞれの秘密鍵と公開鍵を用いて送信する際の暗号化と受信した際の複合化を行う

銀行の窓口でやり取りする場面を例にして説明してみる

1.鍵の交換をしてデータをやり取りする双方にセッションidが付与される

→受付で受付番号をもらう

2.送信側が秘密鍵を用いて署名を作成する

→窓口で書類に届け印を押印し提出

3.受信側は公開鍵を用いて署名を確認する

→提出された書類をチェックする

4.公開鍵に対応する秘密鍵であるかをチェック

→届け印をチェック

5.チェックで相違がなければ本人確認(承認)となる

→銀行側で把握している届け印と相違がなければ取引開始

6.データのやり取りが可能となる

→口座の作成

多少無理はありますが、こんな感じでしょうか。

まとめ

  • SSH通信とはデータを安全に送受信する仕組みの1つ
  • 公開鍵と秘密鍵という仕組みがポイント
  • 本人承認と暗号化通信が実現できるためセキュリティが高い

サーバーについて超簡単な基礎をまとめてみた

サーバーとは

一言で言うと「パソコン」と一緒でただの計算マシンです。規模が大きくなった場合にサーバーへ特定の分野について処理を任せてそれぞれのサーバーで連携を取ることにより、膨大となった処理もこなせるようになる。

Webサーバーとは

一言で言うと「クライアントから要求があった際に最初の窓口となるサーバー」です。

静的なコンテンツのイメージは、

イメージは処理やデータのやり取りが発生しないようなクライアントからの要求。

主な役割としては3つで、

  1. 静的なコンテンツをクライアントへ返す
  2. 動的なコンテンツの生成をアプリケーションサーバーに依頼する
  3. アプリケーションサーバーが生成した動的なコンテンツをクライアントへ返す

アプリケーションサーバーとは

一言で言うと「動的なコンテンツを担当するサーバー」です。

動的なコンテンツのイメージは、

  • Webサービス上の編集や更新などの処理
    • アカウントを作成する
    • 基本情報を編集する
    • 投稿したデータを削除する

など

主な役割としては2つで、

  1. 動的なコンテンツの生成
  2. 生成した動的なコンテンツをWebサーバーへ返す

まとめ

  • サーバーとは要はパソコンと一緒
  • サーバーに処理を特化させることにより膨大な処理をこなすことができる
  • サーバーに機能を分担させることにより、問題が起きた場合の管理がしやすくなる

Hamlについてまとめてみた

こんにちは、チャビです。今日はHamlについてまとめたいと思います。環境はmac_Rails5.1.6_ruby2.5.1です。

Hamlとは

一言でいうと「HTML」を簡単に書く記法です。英語で文章を手書きする時に慣れたら筆記体で記法した方が早いと思いますよね。そんな感じです。

Hamlの導入方法

HamlのgemをGemfileへ追加します。

gem 'haml-rails'

bundle installでgemをインストールし準備完了。

また、railsではデフォルトでhtml.erbファイルが作成されるため、html.hamlファイルへ変換できるerb2hamlというgemを用意すると便利です。

gem 'erb2haml'

bundle installでgemをインストールし準備完了。 html.erbファイルを変換する際はターミナルを開いてrake haml:replasce_erbs をコマンド入力するとファイルが変換されます。

Hamlの3大特徴

  1. 開始タグと終了タグをいちいち書かなくていい
  2. クラスとidを作成する際の記述がめっちゃ楽
  3. divタグを作成する際の記述がめっちゃ楽

Hamlの書き方

①要素を作る

Haml

%p Hello World

要素の前に「%」を書くだけ

Html

<p>Hello World</p>

タグはいらないよ

②インデント

Haml

%html
  %head
  %body
    %p
      Hello World

半角スペースを2つ使ってインデント

Html

<html>
  <head></head>
  <body>
    <p>
      Hello World
    </p>
  </body>
</html>

ネストされて親子関係になるよ

③属性指定

Haml

%p{class: 'paragraph', id:1} 
  Hello World

{}でハッシュ風に書く

Html

<p class="paragraph" id="1">
  Hello World
</p>

いい感じ

④属性指定(classとid限定)

Haml

%p.paragraph#1
   Hello World!

classを付与する先頭に「.」を書く idを付与する先頭に「#」を書く

Html

<p class="paragraph" id="1">
  Hello World!
</p>

すげーっ

⑤divを作る

Haml

.sample
#sample

%も省略できるんです

Html

<div class="sample"></div>
<div id="sample"></div>

感動すら覚える

公式リファレンス

haml.info

おすすめ記事

qiita.com

コンパイルできちゃいます

Haml to ERb/HTML online converter – haml2erb.org

Convert HTML to HAML

まとめ

  • 一言でいうと「HTML」を簡単に書く記法
  • 高頻度で使用するdiv、classとid指定が圧倒的に楽に記述できます
  • 使わないと損します

オブジェクト指向について自分の言葉で表現してみた

こんにちは、チャビです。今日はプログラミングに出てくるオブジェクト指向なる考え方をまとめてみようと思います。

言葉の意味を調べてみる

そもそも、「オブジェクト?」って何さ・・・「指向?」とは・・・って感じですよね。私も初めて目にした時に思いました。日本語の意味から確認してみます。

オブジェクト

【object】とは、物、物体、目標物、対象、目的語、客体、などの意味を持つ英単語。

指向

ある方向・目的に向かうこと。

足すと、「対象がある方向や目的に向かうこと」となります。ふむふむそいうことかぁ・・・とはなりませんよね。

私は言葉の意味で理解するのは難しそうなので諦めました。

オブジェクト指向を一言で表すならば

「対象に意味を持たせる考え方」と表現します。

どういうことかと言うと人間が自然の現象を理解したり表現したりする際に言葉を使って構造化するアプローチです。私たちは普段から何気なく名前をつけて特性などに応じて分類することが得意ですが、まさにそれです。

例えば「えんぴつ」です。

名前: えんぴつ

  1. 材質 :(特性)

  2. 長さ :(特性)

  3. 紙に書くことができる:(特性)

  4. 使うと減る:(特性)

このように対象(今回はえんぴつ)に意味を与えて解釈(分類)する考え方をオブジェクト指向と言います。

さらに分類した特性は2つの考え方で分類ができます。

名前:えんぴつ

  1. 材質:(特性→固有の値を持つ=木材)

  2. 長さ:(特性→固有の値を持つ=10cm)

  3. 紙に書くことができる:(特性→振る舞い=紙に書くことができる)

  4. 使うと減る:(特性→振る舞い=使うと減る)

また、オブジェクト指向では

特性に固有の値をもつものをプロパティ(属性、データ)と言います。

特性に振る舞いをもつものをメソッドと言います。

オブジェクト(object)とは

一言で言うと「対象」です。オブジェクト指向におけるプログラミングでは取り扱うもの全てがオブジェクトです。目的を持ってプログラムを組むことにより、アプリやwebサービスと言った成果物が生まれます。記述されているソースコードの全てが構造化した視点で捉えると何かの意味(先ほどのえんぴつの例のような)を持っているということです。

クラス(class)とは

一言で言うと「プログラミングの中で使用する機能や役割、データを分類してまとめたもの」です。よく設計書などと言われています。

文房具クラスに

  • えんぴつ(属性:色 → 値:赤 属性:材質 → 値:木 属性:値段 → 値:60円)
  • 定規  (属性:形 → 値:長方形 属性:材質 → 値:プラスチック 属性:値段 → 値:100円)
  • 筆箱 (省略)
  • 消しゴム(省略)

というオブジェクトとプロパティがあり、

それぞれに書く、長さを測る、文具を収納する、消す、と言ったメソッド(振る舞い)を定義してまとめることができます。

実際にはプログラミングで処理させたい内容をそれぞれのクラスで定義し組み合わせていくことで、成果物を作成します。どのような観点でどういう分類をしてクラスをまとめていくか?がとても重要です。

まとめ

  • オブジェクト指向とは「対象に意味を持たせる考え方」
  • オブジェクトとは一言でいうと「対象」
  • クラスとは一言で言うと「プログラミングの中で使用する機能や役割、データを分類してまとめたもの」

メリットやデメリットなど、また機会があればまとめたいと思います。

おすすめ記事

初心者向けに徹底解説!オブジェクト指向とは?

オブジェクト指向と10年戦ってわかったこと - Qiita

稼ぐ力を身につけるぞ!

こんにちは、チャビです。アラフォーのオッサンが日々変わることをテーマに生きていこうと決意しました。そしてその履歴をブログへ残していきます。

LIFE SHIFTという本に出会い人生100年生きることが普通に訪れることを知る

  • 人生設計も大きく変わり元気な状態で長生きできる人が増えるようになること

  • 今までの定年でリタイアという人生設計は普通ではなくなること

  • 元気な状態で長生きできるため65歳を過ぎても働き続けることが当たり前になっていくこと

  • キャリアを長く継続する為には勉強を継続していくことが不可欠なこと

社会環境、テクノロジーの変化、医療の発達、様々な背景と観点から分析されていて、とても説得力のある内容でした。

プログラミングの勉強を始めてみよう!

小さな頃から職人やプロ選手という職業に憧れていることをふと思い出しました。ちなみに今は企業に務めるサラリーマンです。長い人生になるかもしれないし、IT分野は今後ますます社会に大きく必要な産業となっていくはず。という思いからIT分野の職人になりたいと決意し2018年10月から勉強を開始しました。

他に理由をあげるとすれば

  • パソコンとネット環境があれば始められること
  • 根拠のない自信からできそうかなと思い込んだこと
  • スキルを身につければ働き方の選択肢がふえること
  • 日々変わることをテーマとし挑戦する気持ちと行動を大事にしたこと

まとめ

勉強のアウトプットが足りないと感じているのでプログラミングの勉強内容について理解度をあげて知識を体系化していく為にしばらくはそれらを中心にこのブログへアウトプットしていこうと思います。