【ぼっち】【函館】三代目網元 魚鮮水産

旅行先で食べると、さらに美味しく感じる現実。

せっかく函館に来たので、美味しい海鮮が食べたい。

そして、ビールも飲みたいだけ飲みたい。

函館って、ビール飲み放題のお店、ほとんどがチェーン店なんですよ。

函館まで行ってチェーン店で飲むって、あり得ないでしょ。

札幌でも行けるし。

調べたらここのお店が飲み放題できるということなので(しかもお一人様OK)、予約して行ってきました。

こんな感じで、名前は隠していますが、メッセージを添えてくれるのは嬉しいですね。

やっぱり港町に来たら食べたいのが海鮮。

奮発して刺し盛りを注文。

大丈夫、給付金だから。

お刺身も美味しいけど、わさびとのマッチも👍

お通しのイカ塩からも美味い。

お刺身は「本日のオススメ」だったのですが、

こちらも美味しそうだったので、

お塩で食べる揚げたて天ぷらは美味い。

このウナギ串も美味しくて二本頼んじゃいました。

こんなお店が札幌にあったら通っちゃうなー。

いやー満足でした。

マイナポイントの予約完了。

こちらの記事でもちらっと書きましたが(ちらっと認識誤りがあったので修正しています。)

マイナポイントの予約が7月1日から開始されました。

この予約、というのは、マイナポイントと連携するキャッシュレス決済サービスを設定する、と言う段階です。

実際にマイナポイントが付与対象となるのは9月以降なのでお気を付けて。

オイラは、PayPayのチャージに対してマイナポイントと連携しました。

設定自体はそんなに難しくなく、スマホ決済の場合はスマホアプリからマイナポイント設定の項目が増えているはずなので、そこから簡単に設定できます。※ただし、マイキーID発行済みであることが前提です。

スマホ決済以外のキャッシュレス決済サービスの場合は、キャッシュレス決済サービスのホームページなどで詳細な説明があるはずなので、確認しておいた方が良いですよ。

【ワイヤレスイヤホン】SONY WF-SP800Nで実際に走ってみた!

今日の札幌は、昼間久しぶりの晴れだったので、WF-SP800Nを装着して走ってみました。

WF-SP800NはスマホとペアリングしていてAmazon Music HDで音楽を再生しながら(&DQW起動しながら)走ってみました。

まず、上の開封記事でも書いたのですが、イヤーピースが耳の窪みにフィットして外れないという話。

これはね、マジで外れない。

走っている最中であってもポジション設定にイヤホンを触ることは無かった。

それだけ耳に完全にフィットして、走っていても外れません。

それともう一つ試したかったのがノイズキャンセリング。

気になったのは、風の音ぐらい。

風がイヤホンのマイクに当たって、ちょっと強めに聞こえるような感じがした。

でも気になったのはそれぐらいで、あとは車の音とかかな、それ以外のノイズはほとんど聞こえなかった。

すれ違った人達の会話もほとんど気にならなかったし。

それだけスマホで再生した音楽がきれいに聞こえます。

※これは余談ですが、Amazon Music HDってダウンロードしたらflac形式のファイルなんですよ。

WF-SP800Nはハイレゾ対応なので、ハイレゾ品質の音楽が聴けるのですよ。

お金+1000円かかるけどね。

これだけの物を買ってしまったらもうしばらくワイヤレスイヤホンは買わなくて良いね。

高いお金出して買った価値がある。非常に満足です。

これからも大事に使っていきたいと思います。

【北海道大戦】マップと都市をリンクする

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

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

https://github.com/takishita2nd/HokkaidoWar

前回はマップ同士のリンクを作成しました。

ここ、もうちょっと改良します。

すぐ終わります。

マップのプロパティにUp、Down、Left、Rightを追加してそこから隣接するマップを取得させましょう。

    class Map
    {
        public Map Up { 
            get {
                var field = Singleton.GetFieldMap();
                return field.GetMap(_x, _y - 1);
            }
        }

        public Map Down
        {
            get
            {
                var field = Singleton.GetFieldMap();
                return field.GetMap(_x, _y + 1);
            }
        }

        public Map Left
        {
            get
            {
                var field = Singleton.GetFieldMap();
                return field.GetMap(_x - 1, _y);
            }
        }

        public Map Right
        {
            get
            {
                var field = Singleton.GetFieldMap();
                return field.GetMap(_x + 1, _y);
            }
        }
    class FieldMap
    {
        public Map GetMap(int x, int y)
        {
            if(x < 0 || x >= MaxX || y < 0 || y >= MaxY)
            {
                return null;
            }
            else
            {
                return _map[x, y];
            }
        }

これでだいぶ扱いやすくなったはず。

動作結果は前回と同じ。

で、ここからが今回の本題。

マップと都市のリンクを作成します。

マップから所属する都市を取得できるようにします。

まぁ、やっていることは簡単ですが。

    class Map
    {
        public void SetCity(City city)
        {
            _city = city;
        }

        public City GetCity()
        {
            return _city;
        }
    class City
    {
        public City(string name, Point[] points, int population)
        {
            _name = name;
            _population = population;
            _maps = new List<Map>();
            var r = Singleton.GetRandom();
            _color = new asd.Color((byte)r.Next(0, 255), (byte)r.Next(0, 255), (byte)r.Next(0, 255));

            var fieldMap = Singleton.GetFieldMap();

            foreach (var p in points)
            {
                Map m = new Map(p.x, p.y, _color);
                m.SetCity(this);
                _maps.Add(m);
                fieldMap.SetMap(m);
            }
        }

マップに都市を設定する所を追加、マップの生成と一緒に自分自身のオブジェクトを設定する、というようにしました。

で、これを検証するために、選択した都市と隣接する都市の色を変えようと思います。

        private List<City> GetLinkedCities()
        {
            List<City> cities = new List<City>();
            foreach (var m in _maps)
            {
                if (m.Up != null)
                {
                    var c = m.Up.GetCity();
                    if (cities.Contains(c) == false && c != this)
                    {
                        cities.Add(c);
                    }
                }
                if (m.Down != null)
                {
                    var c = m.Down.GetCity();
                    if (cities.Contains(c) == false && c != this)
                    {
                        cities.Add(c);
                    }
                }
                if (m.Left != null)
                {
                    var c = m.Left.GetCity();
                    if (cities.Contains(c) == false && c != this)
                    {
                        cities.Add(c);
                    }
                }
                if (m.Right != null)
                {
                    var c = m.Right.GetCity();
                    if (cities.Contains(c) == false && c != this)
                    {
                        cities.Add(c);
                    }
                }
            }
            return cities;
        }
        public void OnMouse(asd.Vector2DF pos)
        {
            foreach (var m in _maps)
            {
                if(m.IsOnMouse(pos))
                {
                    var info = Singleton.GetInfomationWindow();
                    info.ShowText(pos, _name + "\r\n" + _population.ToString());
                    // test
                    var cities = GetLinkedCities();
                    foreach (var c in cities)
                    {
                        c.linkedCity();
                    }
                }
            }
        }
        //test
        private void linkedCity()
        {
            foreach(var m in _maps)
            {
                m.linkedMap();
            }
        }
    class HokkaidoWar
    {
        public void Run()
        {
            while (asd.Engine.DoEvents())
            {
                FieldMap fieldMap = Singleton.GetFieldMap();
                fieldMap.unlinkMap();

List.Contains(Obj)を使用すると、Listの中にObjと同じ物があるかを確認できます。

自分の都市の隣接する都市なので、自分自身は含めていません。

実行結果はこうなりました。

お前ら、マイナポイント(9月~)の準備はできたか?

今年の9月からマイナポイントが始まります。

利用するためにはマイナンバーカードの他にもアプリの設定が必要なのです。

ストアアプリからマイナポイントで検索するとヒットしますので、アプリをインストールしてください。

アプリをダウンロードした後は、マイキーIDの発行が必要になります。

アプリからマイナポイントの予約(マイキーIDの発行)を選択します。

画面の指示に従って、マイナンバーカードをスマホの読取り部にタッチしてください。

※読み取ったらブルって振動しますが、まだマイナンバーカードとの通信がありますので、マイナンバーカードはそのまま動かさないでください。

暗証番号4桁の入力が求められますので、マイナンバーカード発行時に登録した4桁の暗証番号を入力してください。

マイキーIDが発行されれば準備OKです。

事業開始までお待ちください。

ちなみに、マイナポイントをどうやって使用するかというと、

キャッシュレス決済サービス1つと連携し、チャージまたは決済を行った場合にポイントが付与されます。※記載を修正しました。

プレミアム分のボーナスは25%。

つまり、10000円分購入すれば2500ポイント、20000円分購入すれば5000ポイント、ボーナスでもらえます。

これはかなり大きくないですか?

使用方法等詳しいことは今後の情報を待ちましょう。

【Laravel】【ダイエット支援】グラフをもっと簡潔に【完成】

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

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

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

このプログラムはこちらのリンク先で運用中です。

https://taki-lab.site:8443

前回からあれこれ考えたのですが、

3つのデータを1つのグラフに表示させようというのがよろしくないという結論になりました。

リンクのクリックでグラフを体重、体脂肪率、BMIで切り替えるようにしました。

たいした修正では無いので、ソースは書きませんが、gitHubのソースコードを参照してもらえればと思います。

ついでに軸の設定も変えました。(最大値と最小値)

かなりスッキリして見やすくなったかな。

やっぱりグラフは多くて2つまでかな、と思います。

さて、体重記録機能はほぼ完了しました。

次は・・・食事記録かな・・・。

【ラズパイ】【GLCD】倉田ましろを書いてみる。

こちらのネームクリップの絵がシンプルなデザインなので、この絵を表示させてみたいと思いました。

https://bang-dream.com/goods/1883

InkScapeで画像からトレースして線を書いて、

ドット絵ナニカのサイトで64×64ドットの画像に変換してExcelで出力。

http://dot-e-nanika.com

これを8×8に区分けして、16進数のドットパターンデータに変換(手作業)。

Array = [
    [
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
        0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x20, 0x20,
        0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    ],
    [
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
        0x20, 0x10, 0x08, 0x04, 0x02, 0x82, 0x81, 0x40,
        0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x03, 0x00,
        0x80, 0x41, 0x3B, 0x20, 0x20, 0x20, 0x20, 0x40,
        0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    ],
    [
def drowMashiro():
    for page in range(8):
        for addr in range(64):
            if addr < 32:
                SelectIC(1)
                SetPage(page)
                SetAddress(addr + 32)
            else:
                SelectIC(2)
                SetPage(page)
                SetAddress(addr - 32)
            WriteData(mashiro.Array[page][addr])

で、表示できました。

なかなか良い感じに映っております。

スマホのAlexaアプリが勝手にradikoを起動する問題

こういうのマジでびびるから勘弁して。。。

WF-SP800Nを使い始めた当たりから、スマホのAlexaアプリが勝手にradikoを起動して、通知欄に居残るという現象が現れました。

Alexaアプリが悪さしているのは確実なんですが、なぜWF-SP800Nとのペアリングを契機にこうなったのか。

使用前は特に問題ありませんでしたし、

だからといって、Amazon Echoなどデバイスやスキルの設定もこのアプリで行うため、削除することもできません。

まぁ、原因はわかったんですが。

アプリの通知設定画面から、

上のAlexaという所のスイッチをOFFにして通知を切れば解消しました。

おそらくですが、WF-SP800NとAlexaを連携させたことにより、これらの通知がONに変更されたのが原因でしょう。

しかし、この画面、同じような項目が沢山あって訳が分からんよ。

なんとかしてください。Amazonさん。

【北海道大戦】マップデータを管理する

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

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

https://github.com/takishita2nd/HokkaidoWar

さて、現状マップデータの管理は、都市オブジェクトの中に所属するマップが格納されていると言う状態で、マップ同士の横のつながりがありません。

このままでは「隣接するマップ」を取り出すことが出来ないので、整理して管理したいと思います。

マップデータは横44マス、縦35マスで構成されているので、二次元配列にするのが最適でしょう。

なので、このデータを管理するクラスを作成し、シングルトンで使用します。

    class FieldMap
    {
        public int MaxX { get { return 44; } }
        public int MaxY { get { return 35; } }

        private Map[,] _map;
        public FieldMap()
        {
            _map = new Map[44, 35];
        }

        public Map GetMap(int x, int y)
        {
            return _map[x, y];
        }

        public void SetMap(Map map)
        {
            _map[map.X, map.Y] = map;
        }

    class Singleton
    {
        private static FieldMap _map = null;
        public static FieldMap GetFieldMap()
        {
            if (_map == null)
            {
                _map = new FieldMap();
            }
            return _map;
        }

で、都市オブジェクトからマップオブジェクトを作成する際に、このクラスにマップオブジェクトも保持させます。

        public City(string name, Point[] points, int population)
        {
            _name = name;
            _population = population;
            _maps = new List<Map>();
            var r = Singleton.GetRandom();
            _color = new asd.Color((byte)r.Next(0, 255), (byte)r.Next(0, 255), (byte)r.Next(0, 255));

            var fieldMap = Singleton.GetFieldMap();

            foreach (var p in points)
            {
                Map m = new Map(p.x, p.y, _color);
                _maps.Add(m);
                fieldMap.SetMap(m);
            }
        }

たぶん、これだけでOKのはずなので、うまく管理出来ているか、テストコードで確認したいと思います。

マウスカーソルのあるマップの隣にあるマップの色を変化させます。

    class City
    {
        public void OnMouse(asd.Vector2DF pos)
        {
            var fieldMap = Singleton.GetFieldMap();
            foreach (var m in _maps)
            {
                if(m.IsOnMouse(pos))
                {
                    var info = Singleton.GetInfomationWindow();
                    info.ShowText(pos, _name + "\r\n" + _population.ToString());
                    // test
                    fieldMap.onMouse(m);
                }
            }
        }
    class FieldMap
    {
        // Test
        public void onMouse(Map map)
        {
            for(int x = 0; x < MaxX; x++)
            {
                for(int y = 0; y < MaxY; y++)
                {
                    if(_map[x,y] != null)
                    {
                        _map[x, y].unlinkedMap();
                    }
                }
            }
            if(map.X > 0)
            {
                if (_map[map.X + 1, map.Y] != null)
                {
                    _map[map.X + 1, map.Y].linkedMap();
                }
            }
            if (map.X < MaxX)
            {
                if (_map[map.X - 1, map.Y] != null)
                {
                    _map[map.X - 1, map.Y].linkedMap();
                }
            }
            if (map.Y > 0)
            {
                if (_map[map.X, map.Y - 1] != null)
                {
                    _map[map.X, map.Y - 1].linkedMap();
                }
            }
            if (map.Y < MaxY)
            {
                if (_map[map.X, map.Y + 1] != null)
                {
                    _map[map.X, map.Y + 1].linkedMap();
                }
            }
        }
    class Map
    {
        // Test
        public void linkedMap()
        {
            var changeColor = new asd.Color(200, 200, 200);
           _geometryObj.Color = changeColor;
        }

        public void unlinkedMap()
        {
            _geometryObj.Color = _color;
        }

うまくいけていると思います。

【給付金で買った物】【ワイヤレスイヤホン】Sony WF-SP800N

Sony WF-SP800N

リリースされたての最新モデルです。

27000円。

特徴としては、ノイズキャンセル機能も持ちながら、スポーツ用途に特化した防水仕様になっています。

防水仕様になっていないと、汗でイヤホンが壊れるらしいよ。

開封。

接続の仕方が書いてありました。

充電はUSB-Cです。

さすが。最新モデルは違うね。

イヤホンをケースに入れて充電中にアプリを準備。

アプリを入れ終わったら、アプリの指示通りにイヤホンをケースから取り出し、スマホ本体をイヤホンに近づけるとペアリングが完了します。

思った以上に簡単でした。

実際に使ってみての感想。

今まで使用していた

(確か)メルカリで数千円で購入したものと比較します。

まず装着感。

WF-SP800Nは耳に入れる部分がこうなってて。

イヤーピースが耳の窪みにハマる構造になっているんですよ。

見事にフィットするので、激しい運動しても耳から外れる気がしない。

安物は静止してても耳から外れようとするからね。

あと、コントロールは左右それぞれにタッチ部分があり、

ここっす。

左耳側がGoogleアシスタントまたはAlexaの起動ボタンで、どちらにするかはアプリで選択できます。

右耳側が音楽の再生、停止、スキップなどの操作ができるようになっています。

ポイントは操作ボタンが、「イヤホン全体」では無くて、「一部」ということです。

多分、イヤホン自体が大きいから出来るんだろうな。

安物はイヤホン全体がスイッチ部分になっていて、ポジション変更しようとして誤操作が頻繁に起こっててストレスになっていました。

WF-SP800Nはそもそも完全にフィットしているのでポジション変更する必要が無いのですが、全体がスイッチ部分ではないので、誤操作することがありません。

むしろ、操作しようとしてもうまくスイッチが入らないぐらい(え。

あと、ノイズキャンセル機能もいいですね。

ノイズキャンセル機能がもっと強力なモデルもあるのですが、そちらは防水仕様になっていないので、こちらを選択しました。

でも、性能としては十分で、たとえば、パソコン作業しているとPCファンの音とかは全く聞こえないですね。

音楽を再生すると、その音のクオリティにびっくりしました。

作業に集中できるが、お客さんがピンポンしても気がつかないレベル。

これは、最高ですわ。満足。

存分に活用させて頂きます。

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