GoToトラベルの還付金申請

こないだ泊まったホテル、GoToキャンペーンでの還付金対象だという事が、チェックイン時に判明しました。

まぁいろいろ問題になっているキャンペーンですけど、

もらえるならもらっちゃおう。

https://goto.jata-net.or.jp

上のサイトに、申し込み方法が書いてあります。

大きく分けて、旅行会社のプランの中にキャンペーン適用されている物と、旅行後に申請する物の2パターンあり、オイラは後者の方です。

必要な書類も上のリンクからダウンロード出来ます。

上にある申請書類の内、②と③はホテルから発行されるものです。無くさないように。

こちらで記入するのは①と④です。

Excelをダウンロードして、記入、印刷して提出です。

あとは、金融口座確認用のコピー(キャッシュカードなど)と、

本人確認用書類のコピー(運転免許証など)を用意すればOK。

ただし、申請の受付は8月14日からなので、まだ送付できません。

宛先も公開されていません。

まずは、8月14日まで待つべし。

ちなみに、実費の半分が還付されますので、オイラの場合は2450円戻ってきます。(少な!)

利用できる制度は利用しようぜ、税金払ってるんだからな!

Pixel4aが発表されたぜ!仕様を確認する!

ようやく来たぜ正式発表。

Googleストアにラインナップされています。

リリース日は8月20日。

お値段、何と、Pixel3aより安いんです。

42900円。

それなのに、メモリ6GB、ストレージ128GB、プロセッサもSnapdragon600番台から700番台にスペックアップしています。

しかし、かなり削られた機能もありまして、

まず、アクティブエッジが無い。

端末をぎゅっと握るとGoogleアシスタントが起動するアレ。

まぁ、オイラもPixel3使っているけど、アクティブエッジはあまり使ってない。

そして、当然ながらMotion Senseも無い。

勿論ワイヤレス充電機能も。

そして、防水機能も無い。

下二つはPixel3aから搭載していないけど、Pixel3からの買い換え、と考えると、保留。

まだうちのPixel3が現役で稼働しているので、これが壊れたら購入候補に入るかもしれない。

ただ、もうストレージの容量がパンパンなのよね。

最近のゲーム容量食いまくりで。

重たいゲームはスマホでプレイするつもりは無い(むしろ今メインはPCゲーム)ので、ミドルレンジのスペックでも十分耐えられると思う。

悩む。

いや、今使っているの壊れたら買おう。

【ダイエット支援】【食事管理】データ詳細処理を作成する。

前回までの状況はこちら。

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

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

今回はこの画面を作成していきます。

前回作成した画面の、

Editをクリックしたときの、遷移先の画面です。

まずは、画面遷移のところを作成する。

EatingListComponent.vue

                        <td class="edit"><a @click="onClickEdit(data.date)">Edit</a></td>


export default {
    data() {
        return {
            url: "eating/detail"
        };
    },
    methods: {
        onClickEdit: function(date) {
            window.location = this.url + "/" + date;
        },

Editをクリックすると、onClickEdit()が実行され、window.locationにURLを設定することで、そのURLに遷移します。

で、遷移先の画面。

web.php

Route::get('/eating/detail/{date}', 'Eating\EatingController@detail')->name('eating/detail');
EatingController.php

class EatingController extends Controller
{
    public function detail($date)
    {
        return view('eatingdetail', ['date' => $date]);
    }
eatingdetail.blade.php

@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">
                    @if (session('status'))
                        <div class="alert alert-success">
                            {{ session('status') }}
                        </div>
                    @endif
                </div>
                <eating-detail-component date={{$date}}></eating-detail-component>
            </div>
        </div>
    </div>
</div>
@endsection

詳細画面のURLはeating/detail/(日付)となります。

この(日付)の部分が巡り巡って、eating-detail-componentに渡ります。

<eating-detail-component date={{$date}}></eating-detail-component>

ここで一度詰まった。

:date={{$date}}と書いてはダメみたい。

で、表示するデータの取得。

class EatingManagementRepository
{
    private $paramNames = ['date', 'item', 'protein', 'liqid', 'carbo', 'calorie'];

    public function getDetails($user, $date)
    {
        $eatings = $user->EatingManagements()
            ->where(DB::raw('date_format(date, "%Y-%m-%d")'), $date)
            ->get();
        
        $retDatas = [];
        $index = [0, 0, 0, 0];
        foreach($eatings as $eating) {
            $timezone = $eating->timezones()->first();
            for($j = 1; $j < count($this->paramNames); $j++) {
                $retDatas[$timezone->id - 1][$index[$timezone->id - 1]][$this->paramNames[$j]] = $eating->{$this->paramNames[$j]};
            }
            $index[$timezone->id - 1]++;
        }
        return $retDatas;
    }

今回もかなりカオスな処理。

時間帯によってデータを分けたかったので、

retData[時間帯番号][index][詳細データ]

という形にデータを作成しています。

詳細データの連想配列の名前は、定義済みの$paramNamesの値を使用します。

これをAPIで呼び出します。

class ApiController extends Controller
{
    /**
     * 一日分のデータを取得する
     */
    public function detail(Request $request)
    {
        return response()->json(['dataLists' => $this->eatingManagement->getDetails(Auth::user(), $request->contents['date'])]);
    }
web.php

Route::post('api/eating/detail', 'Eating\ApiController@detail');
<template>
    <div>
        <div>
            <p id="navi">> <a href="/home">HOME</a> / <a href="/eating">食事管理</a></p>
            <p>{{date}}</p>
            <table class="eatingdetail">
                <caption>朝</caption>
                <tbody>
                    <tr>
                        <th class="item">品名</th>
                        <th class="protein">タンパク質</th>
                        <th class="liqid">脂質</th>
                        <th class="carbo">炭水化物</th>
                        <th class="calorie">カロリー</th>
                        <th class="edit"></th>
                    </tr>
                    <tr v-for="data in datalists[0]">
                        <td class="item">{{ data.item}}</td>
                        <td class="protein">{{ data.protein}}</td>
                        <td class="liqid">{{ data.liqid}}</td>
                        <td class="carbo">{{ data.carbo}}</td>
                        <td class="calorie">{{ data.calorie}}</td>
                        <td class="edit"><a @click="onClickEdit(data.date)">Edit</a></td>
                    </tr>
                </tbody>
            </table>
            <table class="eatingdetail">
                <caption>昼</caption>
                <tbody>
                    <tr>
                        <th class="item">品名</th>
                        <th class="protein">タンパク質</th>
                        <th class="liqid">脂質</th>
                        <th class="carbo">炭水化物</th>
                        <th class="calorie">カロリー</th>
                        <th class="edit"></th>
                    </tr>
                    <tr v-for="data in datalists[1]">
                        <td class="item">{{ data.item}}</td>
                        <td class="protein">{{ data.protein}}</td>
                        <td class="liqid">{{ data.liqid}}</td>
                        <td class="carbo">{{ data.carbo}}</td>
                        <td class="calorie">{{ data.calorie}}</td>
                        <td class="edit"><a @click="onClickEdit(data.date)">Edit</a></td>
                    </tr>
                </tbody>
            </table>
            <table class="eatingdetail">
                <caption>夜</caption>
                <tbody>
                    <tr>
                        <th class="item">品名</th>
                        <th class="protein">タンパク質</th>
                        <th class="liqid">脂質</th>
                        <th class="carbo">炭水化物</th>
                        <th class="calorie">カロリー</th>
                        <th class="edit"></th>
                    </tr>
                    <tr v-for="data in datalists[2]">
                        <td class="item">{{ data.item}}</td>
                        <td class="protein">{{ data.protein}}</td>
                        <td class="liqid">{{ data.liqid}}</td>
                        <td class="carbo">{{ data.carbo}}</td>
                        <td class="calorie">{{ data.calorie}}</td>
                        <td class="edit"><a @click="onClickEdit(data.date)">Edit</a></td>
                    </tr>
                </tbody>
            </table>
            <table class="eatingdetail">
                <caption>間食</caption>
                <tbody>
                    <tr>
                        <th class="item">品名</th>
                        <th class="protein">タンパク質</th>
                        <th class="liqid">脂質</th>
                        <th class="carbo">炭水化物</th>
                        <th class="calorie">カロリー</th>
                        <th class="edit"></th>
                    </tr>
                    <tr v-for="data in datalists[3]">
                        <td class="item">{{ data.item}}</td>
                        <td class="protein">{{ data.protein}}</td>
                        <td class="liqid">{{ data.liqid}}</td>
                        <td class="carbo">{{ data.carbo}}</td>
                        <td class="calorie">{{ data.calorie}}</td>
                        <td class="edit"><a @click="onClickEdit(data.date)">Edit</a></td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</template>

<script>
export default {
    props: {
        date: String
    },
    data() {
        return {
            showInputDialogContent: false,
            showEditDialogContent: false,
            showDeleteDialogContent: false,
            datalists: [],
            param: {},
            contents: {
                date: "",
            },
        };
    },
    created: function() {
        this.updateList();
    },
    methods: {
        onClickEdit: function(date) {
        },
        invokeUpdateList: function() {
        },
        updateList: function() {
            this.datalists = [];
            this.contents.date = this.date;
            this.param.contents = this.contents;
            var self = this;
            axios.post('/api/eating/detail', this.param).then(function(response){
                response.data.dataLists.forEach(element => {
                    var data = [];
                    element.forEach(element2 => {
                        data.push({
                            item: element2.item,
                            protein: element2.protein,
                            liqid: element2.liqid,
                            carbo: element2.carbo,
                            calorie: element2.calorie
                        })
                    })
                    self.datalists.push(data);
                });
            }).catch(function(error){
            });
        }
    }
}
</script>

responseの処理がネストになるという、またまたカオスな処理。

でもこれでJS側でもdatalists[時間帯ID][index].詳細データという形になります。

これをテンプレートに表示させれば良い。

【さっぽろ夏割】ホテルWBF札幌ノースゲート

久しぶりに泥酔した。

さっぽろ夏割プランを利用して、ホテルWBF札幌ノースゲートに一泊してきました。

https://www.hotelwbf.com/sapporo-northgate/

さっぽろ夏割を適用すれば5000円割引になります。

さらに、札幌市内のお店で使用できる3000円分のクーポンつき。

https://www.sapporo-summer2020.com/shop_use/

さらにラウンジが利用できる宿泊プランでした。

ラウンジでは、ビールやお菓子が食べ飲み放題なのです。

久しぶりに泥酔レベルまで飲んだね。

さらに、チェックインの時に聞いたのですが、

GoToキャンペーンで、申請すれば宿泊料金の一部が還付されるようです。

いやー久しぶりにリフレッシュしたわ。

明日からダイエットと節約頑張る。

久しぶりのお風呂(サウナ)からのビール

いやー

力抜ける。

久しぶりにガーデンズキャビンさんのお風呂に行ってきました。

思った以上に混んでいませんでした。

ホテル側でお風呂を利用しているお客の人数を管理していて、混み合わないように人数制限しているようです。

広いお風呂、ほぼ貸し切りでした。

そして、サウナで出来上がったら、居酒屋でビール。

前回、ホットペッパーでお食事券を予約当日に購入したものの、利用開始が購入日の次の日からだったので、今回ようやく使用できます。

唐揚げ1個50円。

唐揚げとザンギの違いは、明確な区別は無いそうですが、ザンギは衣に卵黄を混ぜてあるヤツが多いそうです。

ウナ串一本99円。

あ、土用の丑の日、今日だっけ。

いやー完全にリラックスして力が抜けました。

そして、今日はもう一つ贅沢をしちゃいます。

これが最後です(何回目)

【モラタメ】キッコーマン 超焼肉のたれ 甘口

ああ、そういえば注文してたっけな。

大量。

中身は全て同じです。

超具材焼肉のたれ。

これは、焼肉を食えと言うことか。

焼きました。

ソースは思った以上にどろっとしてますね。

お肉にめちゃくちゃ絡みつきます。

これは甘口で、オイラは普段辛口を食べているのですが、全然クセが無く、飽きが来ない味付けになっていました。

なので、用意したお肉全部ペロッと食べてしまいました。

美味いね。

ごちそうさまでした。

まだ5本残っているけど、ボチボチ消費します。

【実質北海道一周】都市と距離データを作成する。

前回までの状況はこちら。

さて、GPSから距離を求めることが出来たので、

今度は実際に使用する都市間距離のデータを作成します。

どこかに便利なデータが公開されていないかなー

って探してみたのですが、

ありませんでした。

公開されているデータが無いので、自分で作りました。

チマチマとGoogle Mapを使って、北海道一周で通る都市と、その都市間の距離を測定しました。

ルート検索を使うと、走行距離が出てくるので、このデータを、とりあえずはExcelに入力。

これをエディターにコピペして、置換を使ってタブスペースを削除。

ちなみに、ルートとしては、札幌をスタートして小樽へ向かい、反時計回りで一周して、石狩から札幌に戻るルートです。

疲れた。

【北海道大戦】市町村選択処理を実装する。

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

https://github.com/takishita2nd/HokkaidoWar

前回作成したこれ。

これの「担当市町村を選択」の処理を作成していきます。

まずは、状態の定義を作成しましょうか。

    class HokkaidoWar
    {
        Player _player = null;

        enum GameStatus
        {
            SelectCity,
            ActionEnemy,
            ActionPlayer,
            ShowResult,
            GameEnd
        }

        GameStatus gameStatus;

上からstatus=1~5に相当します。(実際に振られている値は違いますが)

        public void Run()
        {
            while (asd.Engine.DoEvents())
            {
                asd.Vector2DF pos = asd.Engine.Mouse.Position;

                switch (gameStatus)
                {
                    case GameStatus.SelectCity:
                        var info = Singleton.GetInfomationWindow();
                        info.ShowText(pos, "都市を選択してください\r\n");
                        onMouse(pos);
                        break;
                }

                if (asd.Engine.Mouse.LeftButton.ButtonState == asd.ButtonState.Push)
                {
                    switch (gameStatus)
                    {
                        case GameStatus.SelectCity:
                            _player = new Player(getCity(pos));
                            gameStatus = GameStatus.ActionEnemy;
                            break;
                    }
                }
                asd.Engine.Update();
            }
            asd.Engine.Terminate();
        }

マウスカーソルを動かすと、テキストウィンドウに「都市を選択してください」と表示されます。それに加えて、マップの上にカーソルがあると、その都市の情報も表示します。

マウスをクリックすると、その選択した都市でプレイヤーデータを作成します。

    class Player
    {
        private City city;
        public Player(City city)
        {
            this.city = city;
        }
    }

そして、statusを「敵の行動」に遷移させます。

【マインクラフト】【MOD】Minecraft Forgeをセットアップする。

まだまだ勉強中。

前回はこちらのページで統合版マインクラフトのプログラミングを紹介しましたが、

今回はJava版の方を弄ってみたいと思います。

必要になるのは、Minecraft Forgeという開発環境です。

https://mcforge.readthedocs.io/en/1.15.x/

これを使えばModを自分で作ることが出来ます。

今のMinecraftのバージョンは1.16.1ですが、対応するForgeはbeta版です。

まずは、こちらのサイトからMdkをクリックしてソースファイルをダウンロードします(バイナリではありません。)

https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.16.1.html

ソースファイルを適当なフォルダに展開します。

Terminalを開いて展開したフォルダに移動し、

> .\gradlew.bat genEclipseRuns (Eclipseの場合)

もしくは、

> .\gradlew.bat genIntellijRuns (IntelliJの場合)

を実行します。

Eclipse、IntelliJ、好きなIDE用に環境を構築してくれます。(自分はIntelliJです。)

完了したら、IDEを開いてプロジェクトをインポートします。

インポートが完了したら、とりあえず実行。

たぶん最初は英語になっているはずなので、言語設定で日本語にできます。

(新しいバージョンがあるって。後で更新しておこう。)

IDEのsrc/main/javaの下にExampleMod.javaがあると思いますが、

こんな感じでModをコーディングすることによって、統合版のMinecraftプログラミングと同じような事が出来るとおもいます。

まだオイラも勉強中ですけどね。

日照センサーで遊ぼう。

発光ダイオードって、抵抗噛まさないと壊れるんだね。

今回は日照センサーを仕入れたので、これで遊んでみたいと思います。

センサー部分に光を当てると、抵抗値が変わるという物です。

それを利用すればスイッチ処理に応用できたりします。

電流を測定すれば光量を数値化できると思いますが、アナログデータの扱いは難易度が高いので、今回はやりません。

今回は明るさによってLEDが点灯・消灯する回路を作成していきます。

回路図はこんな感じ。

明るいときは日照センサーの抵抗値が低いため、

この方向に電流が流れるため、LEDは点灯しません。

暗くなると、日照センサーの抵抗値が高くなるため、

この方向に電流が流れ、トランジスタのベースに入力が発生し、

この様にコレクタからエミッタ方向に電流の流れが発生してLEDが点灯します。

スマホのフラッシュで日照センサーに光りを当てています。

元々部屋の中が暗いので、通常状態でLEDが点灯しています。

ただ、今回は、あり合わせの抵抗を使用しているため、抵抗値は適当です。

ちゃんとした、計算された抵抗を使用すれば、もっと利便性の良い日照スイッチが出来るかもしれません。

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