公共Wi-Fiサービス「ギガぞう」を試してみた。

ところで皆さん、公共Wi-Fiって、イマイチ使いづらいと思いませんか?

オイラは使ってみたいと思っていましたが、イマイチ契約して使ってみようとは思いませんでした。

何故なのか。

公共Wi-Fiの設置場所って、変なところにありがち。

喫茶店とか、ファミレス、ファーストフード店ならまだ分かるが、

ガソリンスタンドとか、レンタカーショップとか、誰が使うん?

いや、必要としている人がいるのかもしれないが。

今利用しているサービス(@niftyとか、ドコモWi-Fiとか)で調べてみても、

まー使い勝手が悪い。

で、色々調べまして、

Wi2という公共Wi-Fi事業者が比較的Wi-Fiの設置場所が充実していることが分かりまして。

https://wi2.co.jp/jp/personal/gigazo/standard

どれくらい充実しているかというと、今存在する公共Wi-Fiのアクセスポイントは、ほぼ全て網羅しているレベル(という認識)。

しかし、大事なのは、アクセスポイントだけではない。

どれくらい速度が出て、満足にネットライフを過ごせるか、である。

なので、実際にスタンダートプラン(税込み500円)を契約し、使ってみました。

使い方は、スマホなら、専用アプリをダウンロードし、契約時のアカウントでログインすればOK。

アクセスポイントの近くに行けば、自動的に接続されます。

繋がらなくても手動で接続する事が出来ます。

今回は札幌市狸小路のしゃぶ葉札幌狸小路店で使用。

スピードテストを実施してみました。

おっそ。

ちなみに、モバイル回線(4G)の実行結果がこれです。(ギガ消費😥)

んー、モバイルより遅いか。

もちろん、使用する時間帯とか、混み具合とかで変わる数字で、あくまでもこれは一つの目安なのですが、それにしてもこの差よ。

公共Wi-Fiの実力はこんなものか。

ギガが減らない、というメリットはある物の、500円払う価値があるかどうか、というとまた話は違ってくるもので。

Wi-Fiってモバイルより早いイメージあるじゃないっすか?

いや、この差は正直ガッカリだったな。😒

【ぼっち】しゃぶ葉札幌狸小路店

しゃぶ葉って、以前は元町店に通っていたのですが、

より近くにお店が出来てうれしーって感じです。

しゃぶ葉って平日のランチタイムの食べ放題が無制限なんですよ。

(実際にはランチタイムが16時で終わるので、16時まで居座ることが出来ます。)

まぁ、実際問題、そこまで食べ続けられる訳ではないですが。

ただ、このお店、

アルコール飲み放題が999円なんですよ。

元町店にはなかった。(オイラの記憶上)

このお店の特徴は、お肉以外は、全てセルフサービス、ということ。

ビールも自分でつぎます。

しかし、グラスをセットしてスイッチを押すだけでこんな泡ができます。

いや、美味しかった。

お腹いっぱい食べて2300円程度で済んじゃうんですよ。

通いすぎ・食べ過ぎ注意だね。

【ANDROID】【実質北海道一周】移動距離に応じて表示を変える

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

簡単ですが、UIは作ったので、実際に移動距離から都市名を表示させる処理を作っていきます。

class StartEnd(startCity: String, endCity: String) {
    val startCityName : String = startCity
    val endCityName : String = endCity
}
class AroundHokkaido {

    fun getCity() : StartEnd {
        var tempDistance = 0.0
        var start : String = ""
        var end : String = ""
        var loop : Boolean = false
        run {
            citylist.cityList.forEach{
                if(loop){
                    end = it.city
                    return@run
                }else{
                    tempDistance += it.distance
                    if(totalDistance < tempDistance){
                        start = it.city
                        loop = true
                    }
                }
            }
        }
        return StartEnd(start, end)
    }

Jsonで作成した都市と距離のデータから、移動距離と都市間距離を比較しながら加算していき、都市間距離合計が移動距離を超えたときにそのときの都市を返します。

forEach()を使っているのですが、forEachは処理じゃなくて関数なので、途中で処理を抜けるには、breakではなくreturnになります。

それをrunというラベルを指定してreturnすることで、run{}を抜けるところまでジャンプできます。

ややこしい。

でも大分Kotlinにも慣れてきた気がする。

class MainActivity : AppCompatActivity() {

    private fun updateCitydistance(startEnd : StartEnd){
        startCity.text = startEnd.startCityName
        endCity.text = startEnd.endCityName
    }

kotlinはUIにアクセスするの楽だからいいね。

GPSって、思った以上にいい加減、というか、誤差が大きくて、動かしていなくても、1mぐらい移動したものと見なされるみたいです。

後々対処しないとだけど、今は、移動するのがめんどくさいので、このままにしておきます。

確認用に、Jsonを修正。

うん、きちんと変わりましたね。

修正しなきゃいけないところはあるけど、とりあえずはこれでいいか。

COCOS2D-Xの開発環境を作成してWindowsで動かすまでの話

こちらの話の続き。

ついでだからWindowsで動かすところまでやりました。

Android端末が入らない分、デバッグが楽になるかもしれないので。

必要なのはVisual Studio 2017。

2019ではダメです。

ツールの機能取得で、以下の機能をインストールします。

たぶん、必要なのはこれだけだと思う。

cocos run -p win32

で動きました。

Visual Studio 2017のRUNでも動くよ。

Cocos2d-xの開発環境を作成してAndroidで動かすまでの話

一応、プロジェクトを作成して、Hello Worldが出るまでやりました。

手順などは、Qiitaにまとめましたが、

https://qiita.com/takishita2nd/items/0b54af9860f54c65fd24

実際はもっと手こずったので、いろいろと愚痴を書きたい。

まず、Python2.7で無ければセットアップからプロジェクト作成まで動かないのだが、

Python3が動いているのは分かっているのにPython3の本体がどこにあるか分からない、という自体に。

そもそもWindowsにインストールした覚えがない。

ググってプログラムの本体を調べるコマンドを探しまして、

where python

って打てば良いんですけど、

これコマンドプロンプロのコマンドね。

最近はPowerShellをよく使うから。

C:\Users\[ユーザー名]\AppData\Local\Microsoft\WindowsApps\python.exe

にありました。

分かるか。

展開したPython2.7を展開し、環境変数のPATHの設定で、上のフォルダの記載がある場所の上にPython2.7のPATHを書かなければならない。

PATHの検索順をPython2.7→Python3に変えるんですね。

めんどくせぇ。

今時Python2.xなんて使うやついないよ。(たぶん)

もう設定元に戻したわ。

プロジェクト作るときだけ変えれば良い。

そして、もう一つ、Cocoa2d-xってWindowsでも動かすことができるんですが、

いわゆるマルチプラットフォームになっていて、C++の共通コードだけ記述すれば、他のOSでも動かすことができる。

しかし、Windowsで動かす場合は

Visual Studio 2017が必要。

2019ではダメらしい。

めんどくさい。

(一応動かしたけど、後でまとめるわ)

でも、動いたので、あとはガリガリC++のコードを書いていけば。

IDE何使えば良いんだ?

【openTK】STLファイルを表示させたい。

以前取り上げたopenTKのやつ。

これを使ってSTLファイルを表示する、というのをやってみたいと思います。

使用するSTLファイルは、こちらからダウンロードしました。

https://www.3dagogo.com/creativetools/designs/3DBenchy

ただしく処理できれば、こんな風に表示されるはずです。

STLファイルの読み込みはこちらのサイトを参考にしました。

https://codingsquare.net/cs/stlfile/#toc11

STLのデータは法線ベクトルと、三角形を構成する頂点の座標を示す3つのベクトルで構成されています。

法線ベクトルは三角形の面の表側を向いている方向を示すベクトルです。

		public bool ReadBinary(string filePath)
		{
			// filePath が null か、ファイルが存在しない場合はエラーとする
			if (filePath == null || File.Exists(filePath) == false)
				return false;

			try
			{
				// バイナリファイルの読み込み
				using (var reader = new BinaryReader(new FileStream(filePath, FileMode.Open, FileAccess.Read)))
				{
					// ヘッダ読み込み
					Header = reader.ReadBytes(HeaderLength);

					// ファセットの枚数読み込み
					uint size = reader.ReadUInt32();

					// ファイルの残りのバイト数
					long rest = reader.BaseStream.Length - reader.BaseStream.Position;

					// ファセット1枚分のバイト数
					const int FacetLength = 50;

					// ファイルの残りのバイト数が、求められるファセットの枚数分のバイト数より少なければエラー
					if (rest < FacetLength * size)
						return false;

					// 全ファセット読み込み
					Facets = new Facet[size];
					for (int i = 0; i < size; ++i)
					{
						// ファセット1個分のバイト配列読み込み
						byte[] bytes = reader.ReadBytes(FacetLength);

						// ファセットデータ生成と配列への格納
						int index = 0;
						const int offset = sizeof(float);
						Facets[i] = new Facet(
							new Vertex(
								BitConverter.ToSingle(bytes, index),
								BitConverter.ToSingle(bytes, index += offset),
								BitConverter.ToSingle(bytes, index += offset)),
							new Vertex(
								BitConverter.ToSingle(bytes, index += offset),
								BitConverter.ToSingle(bytes, index += offset),
								BitConverter.ToSingle(bytes, index += offset)),
							new Vertex(
								BitConverter.ToSingle(bytes, index += offset),
								BitConverter.ToSingle(bytes, index += offset),
								BitConverter.ToSingle(bytes, index += offset)),
							new Vertex(
								BitConverter.ToSingle(bytes, index += offset),
								BitConverter.ToSingle(bytes, index += offset),
								BitConverter.ToSingle(bytes, index += offset))
						);
					}
				}
			}
			catch (Exception)
			{
				return false;
			}
			return true;
		}

これでバイナリのSTLデータを読み込み、描画させます。

        STLFile stlFile = new STLFile();
        public Game() : base(800, 600, GraphicsMode.Default, "0-3:GameWindow")
        {
            stlFile.ReadBinary("3DBenchy.stl");
        }

        //画面描画で実行される。
        protected override void OnRenderFrame(FrameEventArgs e)
        {
            base.OnRenderFrame(e);

            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

            GL.MatrixMode(MatrixMode.Modelview);
            Matrix4 modelview = Matrix4.LookAt(Vector3.Zero, Vector3.UnitZ, Vector3.UnitY);
            GL.LoadMatrix(ref modelview);

            int count = 0;
            foreach(var f in stlFile.Facets)
            {
                count++;
                GL.Begin(BeginMode.Triangles);

                GL.Color4(Color4.White);
                GL.Normal3(f.Normal.X, f.Normal.Y, f.Normal.Z);
                GL.Vertex3(f.Vertex1.X / 30, f.Vertex1.Y / 30, f.Vertex1.Z / 30);
                GL.Vertex3(f.Vertex2.X / 30, f.Vertex2.Y / 30, f.Vertex2.Z / 30);
                GL.Vertex3(f.Vertex3.X / 30, f.Vertex3.Y / 30, f.Vertex3.Z / 30);

                GL.End();
            }

            SwapBuffers();
        }

そしてライトの設定も加えます。

こちらのサイトを参考にしました。

https://ameblo.jp/nishi-u6fa4/entry-10864018960.html

        //ウィンドウのサイズが変更された場合に実行される。
        protected override void OnResize(EventArgs e)
        {
            base.OnResize(e);
            GL.Viewport(ClientRectangle.X, ClientRectangle.Y, ClientRectangle.Width, ClientRectangle.Height);
            GL.MatrixMode(MatrixMode.Projection);
            Matrix4 projection = Matrix4.CreatePerspectiveFieldOfView((float)Math.PI / 4, (float)Width / (float)Height, 1.0f, 64.0f);
            GL.LoadMatrix(ref projection);
            GL.MatrixMode(MatrixMode.Modelview);

            Matrix4 look = Matrix4.LookAt(3.0f * Vector3.One, Vector3.Zero, Vector3.UnitY);
            GL.LoadMatrix(ref look);
            GL.Enable(EnableCap.Lighting);
            float[] position = new float[] { 1.0f, 2.0f, 3.0f, 0.0f };
            GL.Light(LightName.Light0, LightParameter.Position, position);
            GL.Enable(EnableCap.Light0);
        }

実行結果はこちら。

なんだこりゃ。

たぶん、データは間違ってないと思うんですよ。

問題は視点なのかな、と思います。

視点を変えるとか、変更できるようにすればちゃんと表示させることができるかもしれません。

もうちょっと勉強します。

【北海道大戦】今後の実装について

まぁ、いまのままでもそこそこ楽しめるのですが、

ゲーム性を高めるために、いろいろ実装していこうかと思います。

まずは、今のバトルは完全乱数で発生させた値でのバトルなので、

ゲーム性を高めるために、じゃんけんバトルのようなものにしようかと思います。

そうなると必要なのがAltseedのシーン切り替え機能ですかね。

このシーン切り替え機能を使用するのに、どれだけ回収が必要なのかも考えないと行けません。

その検証を次回やりましょう。

あと、今は防御側勝利時、特に何もメリットがないので、防御側勝利時に1ターン戦力ボーナス・ペナルティを付与しようかなと思っています。

たぶん、そうすることでゲーム性が向上すると思うんですよね。

よし、がんばります。

あ、あと、Altseed2というのがリリースされたみたいですね。

https://altseed.github.io/index.html

【ラズパイ】【いろいろ計測モニター】あれから改造。

とりあえず、少し改造しました。

調べてみると、GPU温度も測定できるみたいなので、それも入れてみました。

ラズパイのGPU温度を確認するコマンドは、

sudo /opt/vc/bin/vcgencmd measure_temp

sudoなので、pythonプログラム実行時もsudoで管理者権限で実行しなければなりませんが、

サービスで実行させているので、基本的に管理者権限で動作しているので、問題無いでしょう。(実際、動いた。)

時刻というのは現在時刻じゃなくて、最後に測定した時刻です。

HTTPでラズパイからデータを取得していますが、間隔を短くすると、ラズパイZeroでもCPU温度が上がってしまうので、少し間隔を空けています。(1分ぐらい)

次どうしようか。

新しい部品があればネタに出来そうだけど、今はお金が無いので。

グラフ化させてみる?

防水タブレットが欲しいなぁって思ったんですが。

お風呂にタブレット持ち込めれば、最近見れていないアニメも消化できるのですが。

目にとまったのはこれ。

https://www.nttdocomo.co.jp/product/d41a/

dtab d-41Aなんですが。

dtabは低スペックで低価格ですが、dが付いているだけまだ安心できる性能は発揮してくれるハズ。

いままでのdtabもそうだった。

しかし、一括購入で5万円か・・・

オイラ、ブラックリストに入っているから分割できないのよね。

で、いろいろ考えた結果、こういう結論になりました。

タブレット用の防水カバー。

今持っているiPad Pro(第2世代 11インチ)入りました。

入り口はジッパー二つでガード+折り曲げてマジックテープなので、水没しない限りは水が入ることは多分ありません。

指も反応するし、FaceIDも使える(場合による。最悪数字入力でロック解除すれば良い)し、音も十分聞こえます。

全然こっちの方が安かった。

これでお風呂タイムも楽しめるぜ!

GoToイートってどういう仕組みなんですか?

先日GoToイートの委託先事業者が決まったというニュースが流れてきたので、

農林水産省のサイトに情報が載っています。

https://www.maff.go.jp/j/shokusan/gaisyoku/hoseigoto.html

外食をして外食産業や消費を促進させようという事ですね。

GoToイートはお食事券とポイント還元の二本柱で構成されていて、

お食事券は25%のプレミア付きで利用できるのですが、

対象地域は33府県で、北海道は含まれておりません。

最終的に全国で利用できるようになりました。

ただし、まだ販売方法が決まっていないので、今後の情報をお待ちください。

ポイント還元は予約サイトで予約してお食事すると、ポイントが多くもらえる仕組みです。

ランチで500ポイント、ディナー(午後3時以降)で1000ポイントとなります。

そのポイントを使ってもっとお食事に行こうということですね。

対象事業者を見てみると、ぐるなびリクルート(ホットペッパー)などが含まれています。

出前は含まれていないようですね。

遠出は怖いけど、近場だったら予約してお食事するというのも良いかもしれない。

こういう制度はどんどん利用しようぜ。

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