メルペイを使ってみた!

QRコード決済。

PayPayは便利でキャッシュバックサービスもあるから、よく利用しているのですが。

使ってみたきっかけは、メルカリの売上金があったので。

メルカリの売上金をそのままメルペイに使えるのです。

でも、決済方法にメルペイが使える店舗って、少ないんですよ。

圧倒的に。

それはPayPayやLinePayの比ではないです。

しかし、

メルペイがiDと連携できると聞いたらどうだろうか?

メルペイのアカウントとiDを紐付けることによって、iD決済でメルペイでの支払いができるのです。

やり方は簡単で、メルカリアプリの設定でiDと連携設定を行えば良い。

これは、スマホがFelica(いわゆる、おサイフケータイ)に対応していれば使用できます。

iDで決済ができると言うことは、ドコモが築いたインフラがそのまま使用できるので、使用できる店舗が圧倒的に増えます。

唯一の欠点と言えば、

メルペイに入金したら、現金化に時間がかかる。

これはメルカリの売上金と同じ。

これが解決できたらなぁ。(切実)

今まで家計簿が続かなかった人こそ、Line家計簿を試して頂きたい。

お金を管理して無駄遣いしないようにするためには、家計簿を付けるのが一番とわかっているのだけれど、データの入力がめんどくさいのよ。

オイラも、何度か家計簿を付けようとしたけれども、結局途中で挫折した。

我々も忙しい日々の中生きているわけだから、その中で家計簿のデータ入力というめんどくさい作業に時間をかけるのは、難しいと思うんです。

でも、Line家計簿を使ったら、以外とこれが続くんです。

理由は簡単で、レシートのデータ入力の手間を省く工夫がされているんです。

例えば、レシートをカメラで読み取って、データの読み取り。

これがね、非常に便利なのよ。

昔は、アプリからカメラ撮影して読み込んでいたけれど、最新のアップデートかしら、レシートにカメラを向けるだけで、スキャナーの役割を果たしてくれて、読み込んでくれます。

その識字率も非常に高い。我々がやることと言えば、数字が正しいかの確認だけ。

金融機関の口座と連携させれば、そのデータも読み取って、反映してくれます。

これも以外と便利。

あとは電子マネーにも対応してくれれば言うこと無いでしょう。

無駄遣いを防ぐには、常に、どこにお金がいくらあるか、を認識する必要があると思うんです。

毎日家計簿をつける習慣を付けて、日々、財布の中と口座の残高を認識すれば、無駄遣いも減ると思うんです。

皆さんも是非Line家計簿で家計管理をやってみて欲しいです。

オススメ。

LINE家計簿

LINE家計簿

LINE Pay Corporation無料posted withアプリーチ

【C#】【数独】仮置きロジックを適用する条件を考える。

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

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

https://github.com/takishita2nd/sudoku

さて、いよいよ仮置きロジックの実装にとりかかります。

そのためには、仮置きロジックを行う条件を考えましょう。

現在まで実装しているロジックでのみで、ある程度はマスを埋めることができますので、そのロジックでも埋まらなかった場合、と考えるのが妥当でしょう。

その条件とは、周期処理の前と後で、確定しているマスの数が同じならば、と判断するのが一番簡単だと思います。

それでは実装します。

まずは、確定しているマスを数えるメソッドを作成します。

        private int countInputedNumber()
        {
            int ret = 0;
            for(int i = 0; i < 9; i++)
            {
                for(int j = 0; j < 9; j++)
                {
                    if(_square[i, j].isConfirmed())
                    {
                        ret++;
                    }
                }
            }
            return ret;
        }

特に難しいところはありませんね。

これを、周期処理に組み込みます。

        private int now_count = 0;
        private int prev_coount = 0;

        public void run()
        {
            bool roop = true;
            while (roop)
            {
                for(int row = 0; row < 9; row++)
                {
                    for(int col = 0; col < 9; col++)
                    {
                        if(_square[row,col].isConfirmed() == false)
                        {
                            Candidate candidate = new Candidate();
                            searchRowLine(row, candidate);
                            searchColLine(col, candidate);
                            search9Area(row, col, candidate);
                            _square[row, col].checkCandidate(candidate);
                        }
                    }
                }
                searchNumber();

                prev_coount = now_count;
                now_count = countInputedNumber();

                if(prev_coount == now_count)
                {
                    //debug
                    Console.WriteLine("ここで仮置きロジックを適用する {0} {1}", prev_coount, now_count);
                    return;
                }

                roop = !checkEnd();
                FileAccess.Output(_square);
            }
        }

こんな感じでどうでしょうか。

prev_coountが周期前の確定したマス数、now_countが周期後の確定したマス数です。

確定したマス数を数える前に前回のマス数を保存し、それと、現周期でのマス数を比較します。

これが同じならば、仮置きロジックを適用する(debug出力を行っているところ)という動きになります。

次回は、このdebugの箇所を考えていきます。

【Laravel】【ホテル予約管理】予約時に解錠ナンバーを発行する。

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

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

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

今回は予約時に部屋の鍵を解錠する番号を発行する、という処理を作ります。

まずはマイグレーション。

class AddLockNumberUsersReserve extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('reserve_managements', function (Blueprint $table) {
            $table->string('lock_number');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('reserve_managements', function (Blueprint $table) {
            $table->dropColumn('lock_number');
        });
    }
}

解錠ナンバーは予約テーブルに追加しました。

解錠するときは、入力日時と部屋番号、解錠ナンバーがインプットとなり、一致すれば解錠される、という仕組みを考えています。

では、予約登録処理。

    public function add($param, $room, $user)
    {
        Log::debug(print_r($param ,true));
        $model = new ReserveManagement;
        foreach($this->paramNames as $name)
        {
            $model->$name = $param[$name];
        }
        $model->lock_number = $this->generateLockNumber();
        $model->save();
        $this->attachToRoom($model, $room);
        $this->attachToSchedule($model);
        $this->attachToUser($model, $user);
    }

generateLockNumber()という関数を追加しました。

この関数で解錠ナンバーを作成します。

これは、予約登録時に作成され、編集を行っても変更しません。

では、generateLockNumber()の実装。

    public function generateLockNumber()
    {
        return rand(0,9).rand(0,9).rand(0,9).rand(0,9);
    }

簡単で、0〜9の範囲の数字をrand()で発生させ、それを4つつなげるだけです。

うまくできたようです。

次回は、これをQRコードに変換する処理を作成します。

【C#】【数独】オブジェクトを複製する

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

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

https://github.com/takishita2nd/sudoku

仮置きロジックに必要な処理を実装していきます。

まずは、解析状況のデータの複製を作るところです。

仮置き解析して、矛盾があれば、そのデータを破棄するようにします。

オブジェクトの複製に=演算子を使用してはいけません。

これはオブジェクトの移動です。

C言語的に言えば、ポインタを移しているだけです。

なので、オブジェクトをnewで作成して、同じデータを持たせるように設定しなければなりません。

まずは、Squareクラス。

    class Square
    {
        // 確定した数字
        private int _value;
        // 確定したかどうか
        private bool _confirmed;

        public Square()
        {
            this._value = 0;
            this._confirmed = false;
        }

        public Square(int val)
        {
            this._value = val;
            if(val == 0)
            {
                this._confirmed = false;
            }
            else
            {
                this._confirmed = true;
            }
        }

中略

        public Square Clone()
        {
            return new Square(_value);
        }
    }

Clone()で同じデータを持つオブジェクトを作成して返しています。

次に、Sudokuクラス。

    class Sudoku
    {
        private Square[,] _square;

中略

        private Square[,] makeClone(Square[,] _square)
        {
            Square[,] ret = new Square[9, 9];
            for(int i = 0; i < 9; i++)
            {
                for(int j = 0; j < 9; j++)
                {
                    ret[i, j] = _square[i, j].Clone();
                }
            }

            return ret;
        }
    }

Square[]をnewで作成し、SquareのCloneを設定し、返しています。

これでこの関数の戻り値は、完全なSquare[,]の複製が作成されます。

次回は実際に仮置きをするロジックを考えます。

【自作PC】Ryzen5 3600Gでベンチマークを試す。

パーツ交換したら恒例、ベンチマークテスト祭。

ちなみに交換前のスコアはこちら。

ドラクエ10

PSO2

FF14

FF15

PCMARK10

やはり全体的にスコアがアップしました。

PCゲーム系も多少アップしたのも良いですね。

もう、今のPCに満足したので、PCパーツはもう買い事は無いでしょう。(たぶん)

【鬱病】こないだ通院時に医師の反応がやばそうだった件

いつも、通院したときの診察は、ほぼほぼ雑談で終わってしまうのですが、

今回の医師の反応はちょっと違ってました。

ちょっとやばそうな反応だったのです。

思い当たる原因としては、

薬を一日抜いたことぐらいかな。

やはり医師にはお見通しなんですね。

おかげで、次回の診察時は血液検査する羽目になったよ。

みんなは勝手に薬を抜く事はしないように。

きちんと医師と相談しよう。

ちょっとした小さな変化でも医師に伝えるのが重要です。

【自作PC】CPUをアップデートしちゃいました。

でん。

ででん。

でででん。

第3世代Ryzen5です。

今までは、Ryzen5 3400でした。

今回はRyzen5 3600です。

これで何が違うかというと、

まずプロセッサーが第2世代から第3世代になりました。

型番は3000番台で、製造時期も第3世代に近いですが、中身は第2世代です。

そして、コア数が4コアから6コアになりました。

スレッド数も8スレッドから12スレッドに増えました。

コア数が増えれば、それだけ同時に処理できる仕事の数が増えるので、それだけでもパワーアップが期待されます。

そして、グラフィックスチップ内蔵だったのが、無くなりました。

まぁ、すでにグラボを使用しているので、問題ありません。

では、まずはCPUを撤去します。

埃だらけのCPUクーラーを取り外し。

CPU撤去。

新しいCPUを装着。

クーラーも取り付け。

ヒートシンクのサイズが小さくなったような気がします。

グラフィックスチップが内蔵されていないため、発熱量が抑えられているのかもしれません。

BIOSで正しく認識されているのを確認しました。

さて、古いCPUは下取りに出して、引っ越し資金の足しにしようと思います。

パーツ型番価格
CPURyzen 5 3600G24368
マザーボード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
合計85986