月: 2021年9月

  • コンピュータの基本

    コンピュータの基本

    コンピュータは外身のハードウェアと中身のソフトウェアに2つによって構成されている。

    コンピュータは命令とデータをまとめて配置して処理する方法(ストアードプログラム方式)によって作動している。

    ハードウェア

    5大要素

    そのハードウェアは5つの装置によって構成されている。

    • 入力装置
    • 出力装置
    • 記憶装置
    • 演算装置
    • 制御装置

    入力装置

    コンピュータが実行するプログラムを外部から記憶装置に転送する。

    出力装置

    プログラムの実行結果を外部に出力する。

    記憶装置

    主記憶装置(メモリ)と補助記憶装置(HDD、SSD)によって構成されている。これらはプログラムの実行結果を置くために用いられている。主記憶装置は高速で動作し、半導体によって作られている。補助記憶装置は大容量で安価である。

    演算装置

    加算、減算といった計算を行う。

    制御装置

    プログラム中のデータや命令を取り出して、命令に応じて使用箇所を決定する。

    CPU

    現在では演算装置と制御装置を合わせてCPUと呼ぶ。

    ソフトウェア

    ソフトウェアはOSとアプリケーションに分類される。

    アプリケーション

    単にソフトを呼ばれることも。WordやExcelなどが有名。

    OS

    ハードウェアを効率よく管理し、ユーザやソフト開発者が利用しやすい環境を提供する。

  • 物理削除モデルと論理削除モデル

    物理削除モデルと論理削除モデル

    Laravelを勉強している過程で遭遇したワード。DBにあるデータを論理削除モデルを使って削除した。

    物理削除モデル

    DBにあるデータを削除したいとき、普通(?)はこっちの削除を行う。

    名前通り、データを物理的に削除する。

    削除したデータはDBからも削除されているため、完全に削除されて復元することができない。

    論理削除モデル

    こっちはデータを「論理的」に削除する。

    DBに削除フラグを設けて、そのデータを削除するときはフラグをtrueにする。削除フラグがfalseのデータのみ返せば、一見するとデータが削除されたように見える。

    感想

    「なるほどな」と思った。

    データを完全に削除しないから、データを復元できる = 間違えて削除しても大丈夫!みたいな感じです。

    でもデータが増える一方で容量を食いそうだから少し心配だけど、そもそもデータを削除する機会って少なそうだからあまり心配しなくても良さそうだなとも思う。

    あと「論理削除モデル」で調べたら、検索結果がLaravelだらけだった。もしかしたらLaravelでは特徴的なDBの設計方法なのかもしれない。

  • 【ど基礎】仮想化・Dockerについて

    【ど基礎】仮想化・Dockerについて

    仮想化とは

    1台のサーバー上で複数のOSを同時に動作させること。元のサーバーを「物理サーバー」、仮想化されたサーバーを「仮想サーバー」と呼ぶ。

    仮想化でできること

    本来は1台の物理サーバーに対して1つのOSしか稼働させることができないが、仮想化させることによって1つのパソコンで様々なOSを稼働させることができる。

    ソフトウェアによって複数のハードウェアを統合することで、1台のサーバーが複数のサーバーのように振る舞うことができる。

    仮想化のメリット・する意味

    仮想化することによって複数のサーバーを柔軟に分割・統合することができる。

    仮に20%しか使っていないサーバーが5台あったときに、仮想化技術を用いてこれらを統合することができれば、サーバー1台でこれらを賄うことができる。これによってハード代も節約できるし、これに伴う場所代も浮かすことができる。

    仮想化ソフトウェアの種類

    • ホスト型
      • VirtualBox (Oracle)
    • ハイパーバイザー型
      • VMware ESX
    • コンテナエンジン
      • Docker

    ホスト型

    OSに仮想化ソフトウェアをインストールして、その上で仮想マシンを稼働させる。

    ハイパーバイザー型

    ホストOSを使用せず、サーバーに直接インストールして仮想環境を作る。

    コンテナ型

    ホストOSにコンテナエンジン(=仮想化ソフトウェア)をインストールして、その上にコンテナを設置する。

    Dockerとは

    コンテナ技術が特徴的な仮想化ソフトウェア。

    Dockerを使うメリット

    ほかの仮想化ソフトウェアでも同じだけど、環境の設定すらコードで書けてしまうから開発環境を簡単に揃えることができる。複数の人と開発するときにとても便利なのである。

    ほかの仮想化ソフトウェアとの違いはイマイチ分からん。