メモリについて語りたい。

情報処理の資格を目指して勉強している人にとっては当たり前の話なんですがね。

パソコンの記憶領域には3種類ありまして。

  • レジスタ
  • メモリ
  • ストレージ

と言う具合に分類されます。

三つの記憶領域

レジスタは、CPUが直接扱うことができるデータの領域、

メモリは、そのCPUの計算結果の一時退避場所です。

これらは、電源をOFFにすると全て消えてしまいます。

なので、消えてしまうとマズいデータは全てストレージの領域に待避させます。

ストレージは、我々で言う、HDDとか、SSDと呼ばれる領域です。

それぞれのアクセススピード

各記憶領域のアクセススピードは、

レジスタ≫メモリ≫ストレージ

「≫」というのは、天地ほどの差があると言うことです。

メモリが少ないとPCの処理が遅くなる理由

パソコンはたくさんのアプリを起動すると、それだけ、沢山のメモリを使用します。

もし、このとき、必要なメモリのサイズを用意できなかったら。

OSは一番使用していないメモリの中のデータをストレージにコピーして、メモリの容量を確保します。

そして、必要になったとき、待避したストレージ上のデータをメモリに戻すという処理が発生します。

これは、情報処理の勉強をしている人ならわかるかもしれませんが、スワッピング(または、ページング)と呼ばれる処理です。

メモリが少ないとこの一連の処理が頻発します。

これが、パソコンの処理を重くしている一番の要因です。

なぜなら、通常のメモリアクセスより、ストレージにアクセスする方が遙かに遅いためです。

用途によって区別しよう

ここで、私が提案するのは、使用する用途によってわかりやすいように区別しようと言うことです。

例えば、

  • 4GB→参照するだけ
  • 8GB→一般の使用
  • 16GB→プログラマー向け
  • それ以上→クリエイター向け

4GBというのは、主にスティック型PCに搭載される最低ラインのメモリサイズです。

これくらいならば、リモートデスクトップで開発用PCの画面を表示するだけならば、十分なスペックです。

というか、複数の画面を表示させようとするならば、それだけPCの処理が重くなります。十分なメモリサイズとは言えません。

しかし、8GBならば、ある程度のウインドウを開いても十分耐えられるでしょう。

文章作成に2画面使用する程度ならば、十分耐えられると言えます。

しかし、最近のインターネットブラウザは複数タブで使用される事が多いです。

このタブをたくさん開けば、それだけ、メモリが消費されることになります。

プログラマーならば、連絡用途と調べ物用途にたくさんのタブやウィンドウを開くことになりますので、それだけたくさんのメモリが必要になります。

でも、クリエイターレベルになるとそれだけでも足りません。

なぜなら、扱うデータファイルのサイズが大きいから。

複数の大規模な動画データを扱うならば、16GBでギリギリ、もしくは、それ以上のメモリが必要になるでしょう。

ちなみに、今のMAC Proだと、最大メモリは768GB。

最前線のYouTuber達はこのスペックで動画編集していると思って問題無いと思います。

理想は8GB~16GB

今のPCのスペックでは、CPU自体の処理速度よりは、ストレージへのアクセス自体がボトルネック(一番処理が遅延している要因)と思いますので、

PCの処理が重いと感じ、様々な手を施しても改善しない場合は、メモリの増設とか、HDDをSSDに換装する、などの手を検討した方が良いかもしれません。

最近のホームページも重くなってきたし。

ちなみに、自分の場合

自分がPCを選ぶ場合は、まず最初にメモリのサイズを確認します。

ぶっちゃけ、CPUは世代や型番の違いによって、劇的に変化するわけではありません。

ストレージのサイズは後で外部HDD購入で増設できます。

あくまでも一番の遅延要因は、メモリ不足によるページング処理による遅延と言うことです。

なので、他のスペックよりも、何よりもメモリサイズを優先させます。

いかがだったでしょうか?

まぁ、これらは私の考えなので。

これからパソコンを購入したいと考えている人の参考になってもらえれば幸いです。

↑よかったらクリックおねがいします。

【Laravel】フォームからデータベースに登録する

最新ソースはこちら

https://github.com/takishita2nd/hotel-mng

前回からの続きです。

今回はデータベースに登録するフォームを作成し、そこから実際にデータを登録するところまで作成します。

まずは、登録フォームの作成から。

フォームを作るには、ヘルパーを使うのがいいです。

$ composer require "laravelcollective/html":"^5.4.0"

これでフォームのヘルパーが使えます。

Viewはこんな感じで作成しました。

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">予約登録</div>

                <div class="panel-body">
                {!! Form::open(['url' => action('RegisterManagementController@store')]) !!}
                <table>
                    <tr>
                        <td>名前</td>
                        <td>{!! Form::text('name') !!}</td>
                    </tr>
                    <tr>
                        <td>住所</td>
                        <td>{!! Form::text('address') !!}</td>
                    </tr>
                    <tr>
                        <td>電話番号</td>
                        <td>{!! Form::number('phone') !!}</td>
                    </tr>
                    <tr>
                        <td>人数</td>
                        <td>{!! Form::select('num', ['1' => 1, '2' => 2]) !!}</td>
                    </tr>
                    <tr>
                        <td>宿泊日数</td>
                        <td>{!! Form::select('days', ['1' => 1, '2' => 2, '3' => 3, '4' => 4]) !!}</td>
                    </tr>
                    <tr>
                        <td>宿泊日</td>
                        <td>{!! Form::date('start_day', \Carbon\Carbon::now()) !!}</td>
                    </tr>
                </table>
                {!! Form::submit('登録') !!}
                {!! Form::close() !!}
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Form::open()〜Form::close()までがフォームの部分です。

この間にいろいろ入力コントロールを入れます。

こんな感じで表示されます。便利。

登録ボタンを押したときの処理も追加します。

ルーティングの設定。

Route::get('/management/create', 'RegisterManagementController@create');
Route::post('/management', 'RegisterManagementController@store');

コントローラーの設定。

    /**
     * 入力フォーム
     */
    public function create()
    {
        return view('register.create');
    }

    /**
     * 登録処理
     */
    public function store(Request $request)
    {
        $param = $this->registerManagement->getParam();
        $this->registerManagement->add([
            $param[0] => $request->name,
            $param[1] => $request->address,
            $param[2] => $request->phone,
            $param[3] => $request->num,
            $param[4] => $request->days,
            $param[5] => $request->start_day
        ]);
        return redirect('management');
    }

$requestの中に、フォームに入力したデータが入ってます。

リポジトリからモデルに設定するパラメータを取得し、これらを連想配列に設定して、リポジトリに渡します。

その後、リダイレクトを行います。

次にリポジトリの設定。

    private $paramNames = ['name', 'address', 'phone', 'num', 'days', 'start_day'];

    // 予約を登録する
    public function add($param)
    {
        $model = new ReserveManagement;
        foreach($this->paramNames as $name)
        {
            $model->$name = $param[$name];
        }
        $model->save();
    }

    public function getParam()
    {
        return $this->paramNames;
    }

パラメータ名を配列で持たせることによって、foreachで回せるし、コントローラーとの意識のズレも防ぐことができます。

もっとうまい方法があるかもしれないけど、これが精一杯じゃ。

これで、登録処理が動くようになりました。

↑よかったらクリックお願いします。

【閉店】【ぼっち】本格焼肉カルビ大将

週に一度の焼き肉の日。

南平岸にある本格焼肉カルビ大将

ランチ営業をやっていて、しかもお昼からお酒が飲めるのです。

しかも食べ放題(90分)&飲み放題(100分)。

ランチは比較的お手頃ですが、選べるお肉の種類は少ないです。

牛カルビと豚カルビだけ。

でも、タレが沢山あり、付け合わせや、薬味なども沢山あるので、いろんな味が楽しめます。

お会計は税込み3817円でした。

他にもお肉の種類が異なる食べ放題プランがあります。

我が家からはちょっと遠いですが、気分転換には良いのではないでしょうか。

↑よかったらクリックお願いします。