反日種族主義を読んで

Kindleを使用していたら、Amazonにオススメされたので、思い切って購入してしまいました。

いやー読み応えありましたね。

オイラは10年以上前に韓国人の先生に韓国語を教わって貰ったりとか、個人で韓国旅行もしていました。

そして、そのうち、日韓関係の問題にも関心を持つようになりました。

いろいろモヤモヤーとしていることも沢山ありました。

その答えがこの本の中にありました。

この本のすごいところは、それら日韓の問題に対して、いままで調査して集めた資料を基に、丁寧に解説しているところ。

さらに、なぜ今のような問題が発生してしまったのかを導き出している事。

そして、何よりも、これを書いたのが韓国人の歴史学者である事です。

著者は日本統治下の朝鮮の歴史だけで無く、その前後も含めた朝鮮史まで調べ上げ、さらに戦時中の日本のことも調べ上げています。

その中で数多くの資料を基に真実も導きされています。

これは、ネットに転がっている嫌韓サイトの情報よりも非常にわかりやすくて納得のいく内容でした。

そして、現在の韓国人達のマインドを作り出してしまった、政治家、活動家、歴史学者の過ちにも指摘しています。

ただ単に日本の主張を裏付ける書籍と考えてはいけない。

韓国人も、日本人も、この本を読んで、何が真実で、何が誤りなのかを考える必要があると思います。

それができなければ、永遠に問題は解決できない。しようとしないのであれば、解決する意思が無いと言えるかもしれません。

とにかく、一人でも多くの人にこの本を読んで貰いたい。

そう思いました。

はーすっきりした。

モヤモヤが解放された気分です。

読んで良かった。

【laravel】【ホテル予約管理】チェックアウト時刻一覧の問題を解決する

本日から本気出す。

前回までの状況はこちら

最新ソースはこちら(gitHub)

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

実は、このリポジトリの処理には重大な問題があります。

    public function getCheckoutList()
    {
        $ret = array();
        $index = 0;
        $checkout = ReserveManagement::select('rooms.name as roomname', 'checkout')
                                    ->leftJoin('reserve_management_room', 'reserve_managements.id', '=', 'reserve_management_room.reserve_management_id')
                                    ->leftJoin('rooms', 'reserve_management_room.room_id', '=', 'rooms.id')
                                    ->get();
        date_default_timezone_set('Asia/Tokyo');
        $today = date("Y-m-d");
        foreach ($checkout as $value) {
            $str = explode(" ", $value->checkout);
            if($today == $str[0]) {
                $value->checkout = $str[1];
                $ret[$index] = $value;
                $index++;
            }
        }
        return $ret;
    }

全レコードを取得したあと、日付チェックをおこない、必要なデータのみを取得する、というやり方ですが、このやり方では、大量のデータをデータベースから取得し、PHPで処理する、というやり方なので、サーバに大きな負荷がかかります。

これを解消するには、データベースから取得するデータの量を度絞らなければなりません。

なので、以下のように修正します。

    public function getCheckoutList()
    {
        date_default_timezone_set('Asia/Tokyo');
        $today = date("Y-m-d 00:00:00");
        $tomorrow = date("Y-m-d 00:00:00", strtotime("tomorrow"));
        return ReserveManagement::select('rooms.name as roomname', 'checkout')
                                    ->leftJoin('reserve_management_room', 'reserve_managements.id', '=', 'reserve_management_room.reserve_management_id')
                                    ->leftJoin('rooms', 'reserve_management_room.room_id', '=', 'rooms.id')
                                    ->whereBetween('checkout', [$today, $tomorrow])
                                    ->get();
    }

クエリビルダにwhereBetween()を追加し、BETWEEN節を追加しました。範囲は、アクセス当日の0時から次の日の0時です。

これだけで必要なデータは全て取れましたので、それをそのまま返します。

動作結果は前回と同じになります。

うん、こっちのほうがコードもスッキリしていいですね。

【自作PC】32GBのメモリを使い切ってみよう

これを検証する前に、アイドル状態(Windowsを立ち上げてデスクトップを表示しているだけ)でどれだけメモリを使用しているかを見てみます。

とにかく、不要な常駐アプリも終了させて、こんな感じでした。

使用中のメモリサイズが3.5GBです。

4GBしか積んでいなかったら残りが0.5GBしかないので、これではすぐにページングが発生してしまうという事になりますね。

ページングが発生するとPC全体の処理速度が低下します。

ちなみに、自分の環境では常駐アプリも含めると、こんな感じになります。

3.9GBですね。

この状態から、Word、Excel、Acrobat Readerを開くと、こんな感じです。

4.7GB。メモリが4GBしか積んでいなかったらページングが発生しています。

さて、ここから本題に入りまして。

どんどん、アプリを起動して、32GBのメモリを使い切ってみよう。

ここで起動したアプリは、

  • マインクラフトBE版
  • マインクラフトJava版
  • DMM Games
  • Word
  • Excel
  • Acrobat Reader DC
  • Visual Studio 2019
  • Android Studio
  • Unity
  • Vivaldi
  • Google Chrome
  • Cyberlink PowerDirector

たくさんのドキュメントを開いて、プログラミングしている途中でYouTubeなどを見ながらゲームをする、と言う設定です。

そんな使い方するヤツいねーよ!

結果はこうなりました。

メモリ半分使う前に、CPUが限界に達しました。

CPUの処理が追いついていないので、全体的にモッサリした動きになってました。

しかし、PowerDirectorでたくさんの動画ファイルを使用したりとか、VMWareなどの仮想環境を複数立ち上げていた場合だったら、32GBを使い切ることができるかもしれません。

たぶん、メモリ16GBを割り当てたLinux仮想環境を立ち上げても快適に動作するよ。

でも、逆に言えば、そんなヘビーな使い方をしない限りは、メモリ16GBあれば、十分ということになります。

そしてなにより、CPUも強化しないと、性能を生かすことができないということですね。

うーむ、贅沢な道楽。

でも次の収入があるまで我慢。

もっと体を大事にしたい

最近、ある体の変化に気がつきまして。

なんか、酒が抜けるのが遅い。

オイラはよくお昼に居酒屋とか、焼肉屋に行ってお酒を飲むのですが、まぁ、酒が抜けるのが遅い。

昔は、お昼に飲んでも、夕方には抜ける感じがするのですが、最近は、夜寝る前になってもお酒が残っているような、気分が悪い感じがします。

特に夜遅くにお酒を飲んで、そのまま寝ちゃうと、次の日は最悪です。昔のような二日酔いで頭痛い、というのは無いけど、とにかく気分が悪くてグロッキー状態で寝たまま一日潰れます。

調べてみると、加齢でお酒に弱くなると言うのは、実際にあり得るらしい。

肝臓の働きが弱くなるらしいのですね。

肝臓がアルコールを分解する能力が低下して、こんな感じでお酒が残るという。

目の疲れもひどくなって、眠りも浅くなって、酒にも弱くなるって。

何を楽しみに生活すれば良いのかわからないです。

いや、前から言っているけど、無理できない体やわ。

もっと体を大事にしないといけないね。

老いるって辛いわ。

くっそー

いっそうのこと、しばらくお酒止めてみましょうか。

それで痩せることができれば万々歳。

いつまで続くかわからないけど。

みんなも体を大事に。

いつまでも20代、30代のような生活ができると思うなよ???

おせちーで始める年末年始

明けましておめでとうございます。

今年もよろしくお願いします。

おせちー(大晦日に食べた)

楽天で8000円しました。

正月ぐらいは贅沢して良いよね。

そうですねー

今年の目標は、

ブログ収入を現金化できるレベルまで上げていきたいですね。

そのための時間はたっぷりありますし。

ネタもそこそこあります。

やっぱり、好きなことでお金を稼げるって楽しいですよ。

記事にするという手間はありますが、地道に続けていけば、成果は出る、というのが、ここ3ヶ月でブログを更新し続けてわかりました。

YouTuberと同じですよ。

YouTuberでお金を稼いでる人は、好きなことをやってそれを動画に撮って、編集して、としているので。

手段は違えど、やっていることは同じ。

そうだなー

自作PCはCPUをワンランクアップさせたいっすね。

ちょっとカッコイイパーツ使って変態PCにしても良いかもしれない。

もちろんプログラミングも続けていきます。一番大好きな分野ですからね。

お料理も続けていきます。まだネタがあるんですよ。

それと同時に動画の編集も勉強していきたい。

あと、本格的にダイエットしたい。

お腹の余計な贅肉を処理したい。

ただ、冬場は運動できる場所が限られているので、春が来るまで筋トレと食事、春になったらウォーキング・ランニングで脂肪を落としたい。

それもネタにしちゃう?

とりあえず、考えておく。

キャンプもやりたいですね。

まずはデイキャンから始めようか。やりたいことはたっぷりあって良いんだけど。

問題は資金面だね。

まぁ、まだ失業保険も障害年金も残っているので、なんとかします。

というわけで、今年もがんばります。

本日のおつまみ、中トロの刺身

【自作PC】自作PCに限っての2019振り返り

全体的な振り返りはこちらにまとめましたが、

ここでは自作PCに限定して振り返ります。

いやーメモリ32GBのRyzenPC、メインPCとしてバリバリ活躍しています。

でもその道も平坦では無くて。

特に躓いたのが、メモリ4枚挿し。

結局諦めましたからね。

拡張性を考慮してメモリスロット4つのマザーボードを購入しましたが、これだったら2枚のマザーボードでも良かったじゃん、って感じです。

2枚差しだったらもっと安いマザーボード買える。

そして、メモリーはショップで相性保証を付ける方が良い。

自作PCで動作しない、という症状は、主にマザーボードとメモリーの相性だったりします。あとは、きちんと刺さってなかったり。

例えばツクモの相性保証を付ければ、相性が合わなくて動作しなかった場合、1ヶ月以内だったらパーツ交換してくれるというやつです。

相性問題が発生してもリスクが少ないので、相性保証付けた方が、結果敵にお得です。

あと、コストのことを考えたら、AMD系の方が圧倒的有利だと思いました。

世代が変わってもソケットの規格が同じ(AM4)なので、マザー自体を変えなくちゃいけない、と言うことが少ないためです。

Intel系は世代毎にソケットの規格が異なったりするので、マザーを変える必要があります。

マザーを変えると言うことは、また相性問題が発生する可能性がある、ということです。

このリスクを考えると、AMD系のほうがかなりお得だと思います。

今Ryzen5 3400Gを使用していますが、これをワンランク上の第3世代Ryzen7に買えるとしても、ソケットの規格が同じAM4なので、CPUを交換するだけで対応出来ます。

まぁ、AMD系CPUの欠点は足が曲がりやすいので取り扱い注意と言うことですかね。

最近大きな買い物をしてしまったのでd、次の収入があるまで我慢ですが、次は第3世代のRyzenにパワーアップさせたいですね。

2019年を振り返る

みなさま、年末いかがお過ごしでしょうか。

お掃除は終わりましたか?

年越し蕎麦とおせちーは準備できましたか?

オイラは準備万端です。

おせちーは注文したものがお昼に届くので、解凍すれば明日には食べられるはずです。

たぶん、年末年始は部屋に篭もってると思います。

寒いもん。

外出したくない。

さて、今年の振り返りですが、一番大きな出来事としては、やはり仕事を退職したことでしょうか。

でも、悪いことだけじゃ無く、時間が十分すぎるほどできたので、いろんなことに挑戦できました。

ブログも頻繁に更新し、自作PCにも挑戦、ジビエ料理にも挑戦、たまーに旅行にも行きました。

ブログは退職前と比べると、アクセス数が増えまして、ようやくマシな額の収益が出るようになりました。

特に良かったのがTechCommitというプログラマーとしてのスキルアップを目指す人達のコミュニティ。

勉強した内容をブログにまとめて、学習日報にリンクを貼り付け、ということをしていたら結構アクセスが伸びました。

でもまだ現金化できないので、まずは、1ヶ月で現金化できるのを目標に頑張ってみようと思います。

時間もたっぷりあるし、お金にも困っていない、まぁ、ぼちぼち頑張ります。

ジビエ料理も良かったっすね。

Twitterの反応が良かった。

動画撮るのも面白かったし。

再生数は伸びないけど。

まだ面白い食材のネタはあるので、今後も続けてみたいと思います。

もっと良いカメラが欲しいなぁ。

逆に後悔していることは、旅行にかかった費用。

特にタイムズカーシェアで留萌に行ったときは失敗した。

長距離ライドしたときは距離料金取られて金額が万超えていたしね。

レンタカー借りた方が安かったよ。

それぐらいかなぁ。

来年もこの調子でいけたら良いなぁ。

あったかくなったらキャンプとかやってみたいですね。

というわけで、良いお年をー

【Laravel】【Vue.js】【ホテル予約管理】チェックアウト一覧を表示

前回までの状況はこちら

予約一覧から本日チェックアウトする部屋を探して画面に表示させます。

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">
                    <table class="checkout">
                        <tr>
                            <th class="name">部屋</th>
                            <th class="time">チェックアウト時刻</th>
                        </tr>
                    @foreach ($Lists as $list)
                        <tr>
                            <td class="name">{{ $list->roomname }}</td>
                            <td class="time">{{ $list->checkout }}</td>
                        </tr>
                    @endforeach
                    </table>
                </div>
                <div>{{ Html::link('/management', '戻る', ['class' => 'btn']) }}</div>
            </div>
        </div>
    </div>
</div>
@endsection

ルーティング

Route::get('/management/checkout', 'RegisterManagementController@checkout');

コントローラー


    /**
     * 当日のチェックアウト時刻一覧を表示
     */
    public function checkout(Request $request)
    {
        return view('register.checkout',
                        [
                            'Lists' => $this->registerManagement->getCheckoutList()
                        ]);
    }

リポジトリ

    public function getCheckoutList()
    {
        $ret = array();
        $index = 0;
        $checkout = ReserveManagement::select('rooms.name as roomname', 'checkout')
                                    ->leftJoin('reserve_management_room', 'reserve_managements.id', '=', 'reserve_management_room.reserve_management_id')
                                    ->leftJoin('rooms', 'reserve_management_room.room_id', '=', 'rooms.id')
                                    ->get();
        date_default_timezone_set('Asia/Tokyo');
        $today = date("Y-m-d");
        foreach ($checkout as $value) {
            $str = explode(" ", $value->checkout);
            if($today == $str[0]) {
                $value->checkout = $str[1];
                $ret[$index] = $value;
                $index++;
            }
        }
        return $ret;
    }

ここまでアップデートする過程で、checkoutがnullになるケースがあったためか、データベースで日付指定でwhereすると、うまく行かないので、結局、全テーブルから日付を全部チェックする、という処理になりました。

もっとうまくできる方法ないかねぇ。

あと、タイムゾーンも考慮しないと、日付の判定がうまく行かないときがあるので、date()関数を使用するときは注意。

こんな感じで最終チェック後、提出します。

【自作PC】メモリ32GBの世界へようこそ

いやー買っちゃいました。

16GBのメモリ2枚です。

4枚差しが上手くいかないものの、32GBの夢が捨てきれず、買っちゃいました。

32GBの世界へようこそ。

念のためベンチマークを走らせます。

念のため、というのは、もう十分メモリがありすぎるので、劇的な変化は期待していないと言うことです。

もはや道楽の世界。

ちなみに、前回のベンチマークの結果はこちら。

PCMARKでのスコアは若干アップ。

FF14、FF15は誤差のレベルなので、ほとんど変化無しですね。

予想通り。

メモリが4GB→8GBに増やした場合は、プログラム実行時にメモリに空きが無い場合、一番使用されていないメモリのデータをストレージに吐き出して、メモリの容量を確保します。

そして、吐き出したデータが必要になったときにメモリに読み込みます。

この一連の処理をページング、またはスワッピングといいます。

情報処理の試験に出ます。

このときのストレージへのアクセスが、メモリ不足によってPCが遅くなる最大の要因なのです。

でも、16GB以上になると、ほとんどページングが発生することがない。(それだけ十分過ぎるメモリがあるので)

じゃあ、なぜメモリを32GBに増やしたかというと、

道楽ですよ。

とはいえ、このメモリだけでそれなりのお金を使ってしまったので、当分の間は大きな買い物できないな。

次は・・・CPUかな。

パーツ型番価格
CPURyzen 5 3400G20680
マザーボードPRIME A320M-A7544
メモリCT2K16G4DFD822614280
電源KRPW-L5-750W/80+6256
ケースCC-9011086-WW5099
SSDGH-SSDR2SA1202178
M.2SSDSCKKW480H6X15980
グラフィックボードSAPPHIRE PULSE RADEON RX 570 8G GDDR514800
DVDドライブIHAS324-17/A2020
OSWindows 10 Pro3259
電源ユニットネジ200
合計82298

【Laravel】【Vue.js】【ホテル予約管理】予約の削除を実装する

前回までの状況はこちら

最新ソースはこちら(gitHub)

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

予約詳細画面に削除ボタンを設置します。

                <button @click="closeModal">close</button>
                <button v-if="edit_flg == false" @click="onClickEdit">編集</button>
                <button v-else @click="onClickSave">保存</button>
                <button v-if="edit_flg == false" @click="onClickDelete">削除</button>
            onClickDelete: function() {
                var self = this;
                this.param.year = this.selectYear;
                this.param.month = this.selectMonth;
                this.param.room = this.selectRoom;
                this.param.id = this.contents.id;
                axios.post('/api/delete', this.param).then(function(response){
                    self.registers = [];
                    self.updateRegisters(self, response.data.registerLists);
                    self.closeModal();
                }).catch(function(error){
                    self.error_flg = true;
                    self.error_message = error.response.data.errors;
                });
            },
            updateRegisters: function(self, registerLists){
                registerLists.forEach(element => {
                    self.registers.push(
                        {
                            id:element.id, 
                            name:element.name,
                            address:element.address,
                            phone:element.phone,
                            num:element.num,
                            roomid:element.roomid,
                            room:element.room,
                            days:element.days,
                            start_day:element.start_day, 
                            checkout:element.checkout
                        }
                    );
                });
            }

APIへのルーティング

Route::post('/api/delete', 'ApiController@delete');
    public function delete(Request $request)
    {
        $this->registerManagement->deleteById($request->id);
        return response()->json(['registerLists' => $this->registerManagement->getListByMonth(
            $request->year,
            $request->month,
            $request->room
        )]);
    }

実際に削除したら、レスポンスで予約一覧を返し、一覧を最新の状態で表示してもらいます。

あとは、一覧更新処理が共通しているので関数化。

難なく設置できました。

・・・追加処理もモーダル化する?

自分、ぼっちですが何か?