月別アーカイブ: 2024年1月

世界一周ゲーム

今週末、1/20と1/21は我が家は大忙し。
三男と長女の誕生日なのです。
三男はもう9歳。長女はもう13歳か。。。大きくなったものだ。

当然ケーキを食べたりするのですが、我が家では家族でボードゲームをすることもよくあり、今日は世界一周ゲームをしました

https://amzn.to/3tRtwjD

ルール概略

プレーヤーはランダムに指定された目的地を回りながら最終ゴール地点を目指します。
プレーヤーの誰かが最初にゴールした時点でどれだけ指定地点を回って点数を獲得することができたかで勝敗が決まります。

サイコロの出目で動かす形なのですごろくのようですが、複数ある目的地をどう回っていくのか。移動ルートはどういうルートを選ぶと効率的なのか?など、なかなか考えさせられます。

当然、目的地は実在する世界各地の都市となるので、やり続ければ少なくともこのゲームに登場する地点は頭に残る可能性があります。
地理の勉強というレベルにはあまりならないかもしれないですが、都市の名前くらいは頭に残りそうです。

意外と面白い

ボードゲームは、人生ゲームやモノポリーなどがこれまで我が家では人気で、世界一周ゲームは買ったはいいもののあまりやっていなかったのですが、久しぶりにやってみたら意外と面白く、最近の我が家では人気となっています。

モノポリーも人気はあるけど、ものすごく時間がかかってしまうんですよね。

どうしてもサイコロの出目という運要素が強く、次男がやたら運の強さを毎回見せつけられるのでちょっと不公平感はあるのですが、それはもうしょうがないかな、と。

年齢層もバラバラなので、あまり戦略性が高すぎると上の子が有利になってしまいそれはそれで問題。
一方運要素が強いと、何故か運をかっさらっていく子と運が悪い子とで毎回分かれるという不思議な結末を迎えてしまうんですよね。

それも含めて、ギャーギャー言いながら遊んでいるので、まぁそれはそれで良しとしますかね。

「明日、機械がヒトになる」を読んだ

先日、後輩と1on1をしている際に彼が開催した読書会の話題となった。

当時、別件で忙しく私は参加しなかったのだがあまり参加者が集まらず、なかなか難しいなという話だったので、どんな本を題材にしたのか聴いてみたら、タイトルの本だった。

調べてみると、Audible版もあり、著者本人が朗読しているということだったので早速聴いてみた

https://amzn.to/48AW8fY

そもそもヒトの定義とは

この本は、人間の進化と機械の発展に焦点を当てており、その仮想的な未来が著者にとってどれほど興奮をもたらすものかを考察しています。

この本が発行されたのは2016年。しかも著作の中でも執筆に2年ほどかかったということなので、現時点から考えると技術的な位置づけはだいぶ様変わりしているはず。

特にOpenAIがChatGPTを発表して以降のAIに関連する進歩の速度というものは目を見張る物があり、本書で語られているヒトと機械との境界線は相当薄くなっているはず。

だからこそ、そもそも人間とは、そもそも生命とは、、、
そういった、若干青臭いような気にもなることを考えてみるのも一つなのかもしれないな、と思った。

この先どうなるか

現状では、ものすごく優秀なAIはできつつあるけれど、そこにいわゆる自我があるのか?という話になると疑問符がつく。

ただ、そもそも自我ってなんだっけ?という点に着目し、それらは受動的な反応ではないのか?自由意志なんて言うものは存在しないのではないか?という点に関しての考察もあり、これに関してはなかなか面白かった。

ChatGPTが出た当初、チャットに対しての回答は、意味を考えた上での結果を返してくるのではなく、質問に対しての回答を過去の蓄積されたデータの中からそれっぽいものを前後関係を考慮した上で返してくる反応だと認識した。

ただ、それって結局のところ人間が頭の中でやっていることも同じことが言えるんだろう。
ChatGPTのようなモデルを、それぞれ一人ひとりがやっているから個性があるとも言えるし自由意志に見える。
でも、突き詰めて行ってしまうとそれらも反応といえば反応なのかもしれない

答えのない問い

面白い問いかけではあるけど、答えがあるようでないものだし答えがあったところで何かが変わるのか?というと変わらない気もする。

今日も自由意志で生きている気にもなっているし、失敗したときはこれは反応で決まっていたことが結実しただけなんだと言うこともできる。

一つ言えることは、読書会で題材にして感想は言えるかもしれないけど、で?ってなる人も多くいそうな本を選んでしまったなぁ、という気がしないでもない。。

ノルウェイの森(上)

Audibleで村上春樹著「ノルウェイの森(上)」を聴いた

ノルウェイの森(Kindle)
https://amzn.to/3Ox1Jfx

そもそも小説をそこまで読んでいないということもあるのだが、村上春樹の作品は今回が初めてでした。

Audibleで8時間ちょっとで上巻が終了したのですが。。。なんというか、どう楽しんだらいいのか、戸惑っています。

推理小説やサスペンスのように、何かしらの事件があるわけでもなく、ひたすら青臭い感じ。
朗読ということもあるのだろうけど、なんとなく「雲の向こう、約束の場所へ」を思い出した。おそらく、あちらのほうが村上春樹に影響されたのだろうけれど。

妻に、「村上春樹読んだことある?」と聴くと、軽く”あぁ、あいつね”みたいに笑ったあとで「読んだことがあるよ」、と。

なんとなく、言わんとしていることはわからんでもない。

うーん、下巻どうするかなぁ。。。
物語がどういう結末を迎えるのか。。というか、結末なんて、これ、ないんじゃないかな?という気もするんだけど。
とりあえず、読んだよって言えるように下巻も聴いてみようとは思っている。

思っているんだが。。。ちょっと気が重いね

NRCのガイドランあれこれ

今年に入ってから、娘の沐浴の時間とかもかわって、平日に朝RUNすることもできるようになって、月間の走行量も久しぶりに200kmを超えそう。

いい感じ。

その絡みもあるのですが、NRCにあるガイドランをちょこちょこと試しています。

Funky Fartlek

5分のウォームアップ後に20分のファルトレクになります。
名前が面白かったので結構気に入っているのですが、唯一の問題はあまりLapを刻んでくれないんですよね。

そのため、ウォームアップとそれ以外みたいな分け方になってしまうので、実際に正しいペースで走ることができるのかがよくわかりません。

5kmペース、10kmペース、1kmペースとかあるんですけどね。

FLY WITH MONAS

こちらも同じくファルトレクとなります。6分のウォームアップとファルトレク。6分のクールダウンのメニューになります。

それまでFunkyFartlekばかりやっていたので気づかなかったのですが、自動的にLapを刻んでくれました。
ガイドランによってやってくれるものもあるということを、これで気づきました。

ただ、メニューとしては基本的に5kmペースとEasyRunの繰り返しになるので、FunkyFartlekのように色々なペースでの走り込みという形にはならないです。

そういう意味では、楽しいのはFunkyFartlekなんですよね。

ただ、トレーニングとしてはLapをつけてくれるのでいいと思っています

First Speed Run

こちらはインターバル走です。

基本的に1分の5kmペースを8本。。。って書いてあるけど、コーチは嘘つきで8本で終わらなかったです。。。

インターバル走としてはいいけれど、ファルトレクと異なり、間は休憩時間として捉えられ、その部分に関してはLapに入れられないです。
そのため、総走行距離としてはどうしても少なくなってしまうんです。

もちろん、トレーニングとしては問題ないですが、若干、残る数字として寂しいんですよね。

ちょっとこのあたりのガイドランをうまく活用して、自分自身のペース感覚を養っていかないとな、と考えている次第でございます。

StreamDiffusionでExampleのScreenを動かす

環境の構築が終わったので、早速、Screenを動かしてみる

準備

まずはScreenを動作させるために必要なライブラリをインストールする

C:\Dev\StreamDiffusion>cd examples

C:\Dev\StreamDiffusion\examples>python -V
Python 3.10.11

C:\Dev\StreamDiffusion\examples>pip install -r screen/requirements.txt

その後、Screenを実行

C:\Dev\StreamDiffusion\examples>py screen\main.py

基本的にはこれだけだが、実行ログを見るといくつかのエラーが出ている

Triton?

A matching Triton is not available, some optimizations will not be enabled.
Error caught was: No module named 'triton'

単純にみるとtritonモジュールがないぞってこと。
これはWindows環境で起こるものらしい

Windowsの場合はtritonに対応していないため、この表示が出て、かつコード実行に問題がなければ無視しても良い。

https://wikiwiki.jp/sd_toshiaki/No%20module%20named%20%27triton%27

TritonのGithub開発リポジトリを見ても、Linuxのみのサポートのようだ。

Supported Platforms:
・Linux

https://github.com/openai/triton/?tab=readme-ov-file#compatibility

とりあえず、このエラーは無視しても動くようなので気にしないことにする

With TensorRT

これだけでも動くのだがTensorRTを使うとパフォーマンスが向上するとのことで、試してみることに。

C:\Dev\StreamDiffusion\examples>py screen\main.py --acceleration tensorrt

実行すると、TensorRTを使う形にコンパイルが走るとともに大量のライブラリが落とされ。。。

OSError: [Errno 28] No space left on device
Model load has failed. Doesn't exist.

エラーになった。
これは、ディスクが足りなくなったことを示すエラー。
どんだけ必要なんだ、、、ってことで色々消してやってみたところ

現時点で約9G。

なんとかライブラリも落としきったかな?と思い実行

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 26.00 MiB. GPU 0 has a total capacty of 4.00 GiB of which 0 bytes is free. Of the allocated memory 3.35 GiB is allocated by PyTorch, and 144.71 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
Model load has failed. Doesn't exist.

GPUのメモリが足りない・・・?
確認してみる

c:\Dev\StreamDiffusion>nvidia-smi
Wed Jan 17 17:13:45 2024
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 522.06       Driver Version: 522.06       CUDA Version: 11.8     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ... WDDM  | 00000000:01:00.0 Off |                  N/A |
| N/A   58C    P8     9W /  N/A |    114MiB /  4096MiB |     22%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      5588    C+G   ...ser\Application\brave.exe    N/A      |
|    0   N/A  N/A      7000    C+G   ...n64\EpicGamesLauncher.exe    N/A      |
+-----------------------------------------------------------------------------+

今はありそうな気もするけど実行時に足りなくなってしまったということなのかな。

そして結局

Found cached model: engines\KBlueLeaf/kohaku-v2.1--lcm_lora-True--tiny_vae-True--max_batch-2--min_batch-2--mode-img2img\unet.engine.onnx
Generating optimizing model: engines\KBlueLeaf/kohaku-v2.1--lcm_lora-True--tiny_vae-True--max_batch-2--min_batch-2--mode-img2img\unet.engine.opt.onnx
[W] Model does not contain ONNX domain opset information! Using default opset.
UNet: original .. 0 nodes, 0 tensors, 0 inputs, 0 outputs
UNet: cleanup .. 0 nodes, 0 tensors, 0 inputs, 0 outputs
[I] Folding Constants | Pass 1
[W] Model does not contain ONNX domain opset information! Using default opset.
Only support models of onnx opset 7 and above.
Traceback (most recent call last):
  File "C:\Dev\StreamDiffusion\examples\screen\..\..\utils\wrapper.py", line 546, in _load_model
    compile_unet(
  File "C:\Dev\StreamDiffusion\.venv\lib\site-packages\streamdiffusion\acceleration\tensorrt\__init__.py", line 76, in compile_unet
    builder.build(
  File "C:\Dev\StreamDiffusion\.venv\lib\site-packages\streamdiffusion\acceleration\tensorrt\builder.py", line 70, in build
    optimize_onnx(
  File "C:\Dev\StreamDiffusion\.venv\lib\site-packages\streamdiffusion\acceleration\tensorrt\utilities.py", line 437, in optimize_onnx
    onnx_opt_graph = model_data.optimize(onnx.load(onnx_path))
  File "C:\Dev\StreamDiffusion\.venv\lib\site-packages\streamdiffusion\acceleration\tensorrt\models.py", line 118, in optimize
    opt.fold_constants()
  File "C:\Dev\StreamDiffusion\.venv\lib\site-packages\streamdiffusion\acceleration\tensorrt\models.py", line 49, in fold_constants
    onnx_graph = fold_constants(gs.export_onnx(self.graph), allow_onnxruntime_shape_inference=True)
  File "<string>", line 3, in fold_constants
  File "C:\Dev\StreamDiffusion\.venv\lib\site-packages\polygraphy\backend\base\loader.py", line 40, in __call__
    return self.call_impl(*args, **kwargs)
  File "C:\Dev\StreamDiffusion\.venv\lib\site-packages\polygraphy\util\util.py", line 694, in wrapped
    return func(*args, **kwargs)
  File "C:\Dev\StreamDiffusion\.venv\lib\site-packages\polygraphy\backend\onnx\loader.py", line 424, in call_impl        
    postfold_num_nodes = onnx_util.get_num_nodes(model)
  File "C:\Dev\StreamDiffusion\.venv\lib\site-packages\polygraphy\backend\onnx\util.py", line 41, in get_num_nodes       
    return _get_num_graph_nodes(model.graph)
AttributeError: 'NoneType' object has no attribute 'graph'
Acceleration has failed. Falling back to normal mode.

と、最後に書かれているようにaccelerationに失敗して、通常モードで動くことになってしまっている。

おそらく途中に出てきているONNXが関係しているのかな?

onnx
https://github.com/onnx/onnx

とりあえず

Screenを動かすことはできているけど、私のPCスペックだとスムーズとは言えない。
だからこそTensorRTの恩恵を受けたいところだけどエラーで詰まってしまっているので、このあたりは追々見ていきたいところですね。

こういうものを触っていると、このあたりに関しての知見がいかに自分がないのかがよくわかってくる一方、面白いですね。

StreamDiffusion環境構築

Xを徘徊している際に見かけた、StreamDiffusion。気になっていて環境を構築しようとしています。

環境構築方法はStreamDiffusionのGithubに書いてあるのですが

StreamDiffusion
https://github.com/cumulo-autumn/StreamDiffusion

  • Step0: clone this repository
  • Step1: Make Environment
  • Step2: Install PyTorch
  • Step3: Install StreamDiffusion

という形で3段階に見えます。
しかし、当たり前のことではあるのかもしれないですが、Pythonが入っている必要はありますし、そのPythonはちゃんとStep2でインストールするPytorchとバージョンを合わせる必要があるんですよね。

それが分からずに、最新のPython 3.12.1をインストールしてしまったお陰で下記のようなメッセージになりました

>pip3 install torch==2.1.0 torchvision==0.16.0 xformers --index-url https://download.pytorch.org/whl/cu118
ERROR: Could not find a version that satisfies the requirement torch (from versions: none)
ERROR: No matching distribution found for torch

というわけで、備忘録を兼ねて実施したことを記録

今回のStreamDiffusionが必要としているPytorchは、Step2のスクリプトでバージョンを2.1.0を指定しており、2.1.0のPytorchが対応しているのは Python 3.11までっぽい。

ちょっと何をとち狂ったか、Python3.10をインストール。。。
もうこのままで進める

C:\Dev\StreamDiffusion>py -V
Python 3.12.1
C:\Dev\StreamDiffusion>py -3.10 -m venv .venv
C:\Dev\StreamDiffusion>.\.venv\Scripts\activate
(.venv) c:\Dev\StreamDiffusion>py -V
Python 3.10.11

Pythonの仮想環境を指示に従い作成し、Pytorchをインストール

(.venv) c:\Dev\StreamDiffusion>pip3 install torch==2.1.0 torchvision==0.16.0 xformers --index-url https://download.pytorch.org/whl/cu118

私の環境はCUDAが当初11.7でした。

なのでNVIDIAのサイトに行き、11.8をDL&インストール

CUDA Toolkit 11.8 Downloads
https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local

続いてStreamDiffusionのインストール

(.venv) c:\Dev\StreamDiffusion>pip install git+https://github.com/cumulo-autumn/StreamDiffusion.git@main#egg=streamdiffusion[tensorrt]

続いてTensorRT extensiojnをインストール

(.venv) c:\Dev\StreamDiffusion>python -m streamdiffusion.tools.install-tensorrt

Windows環境では、pywin32を入れる必要があるとのことなので

(.venv) c:\Dev\StreamDiffusion>pip install --force-reinstall pywin32

これで、一通りの環境構築はできたはず!

体脂肪率がもやもやする

先日購入した体重計で、毎日、朝起きたら計測を行っています

体重計 AI×体組成計【プロスポーツチームにも導入】 スマホ連動 体組成計 INFIELD ホワイト
https://amzn.to/3Sicfcw

こちらが購入してから約1週間の体重経過。

現状は、日々の食事はそれほど制限をしておらず、運動の継続と間食をできるだけ(あくまでもできるだけ)気をつけるという状態。

これをダイエットというのかは甚だ怪しいところだけど、体重増加の原因は間食だとか夜中にものを食べたりといった生活リズム的なものではないか、と考えているのでもう少し様子を見ていきたい。

太り気味判定?

色々な数値を計測してくれるInFieldですが、、

体脂肪率の数値がものすごく上がっています。

これは、ちょっとよく分からずに初期設定した際に「アスリートモード」というものをONにしていたんですよね。

これをOFFにした瞬間にグラフのように、一気に数値が上がり、私は標準から外れて”高い”と判断されてしまいました。

アスリートモード?

うーん、正直自分がどちらに分類されるのか良くわからないですね。

その人の身体組成によって、測定方法が異なるということはアスリートモードのON/OFFという話ではなく、その中間とか色々ありそう。
その他の測定項目から、自動的にどういう測定方法がベストなのか、はじき出してくれればいいのにな、と思うわけです。

私の場合、7~8%くらい体脂肪率に開きがあって、アスリートモードOFF時の22%というのが少し太り気味と判定されています。

実際のところ、ちょっと体重が増えてきて入るものの、太り気味なのか?に関してはNoと言いたい(あくまで希望)

ただ、色々とネットを見て回ってみると、アスリートモードは、いわゆる職業アスリートをターゲットにしていそうで、かなり対象は狭そう。

そう考えると、OFFにした状態での数値を基準として考えたほうがいいのかな、と思うわけです。

とはいえ、、、うーん、もやもやしますね

「具体と抽象」を読んだ

細谷功著、「具体と抽象」を読んだ

https://amzn.to/48BTAhF

Audibleで聴いてます

正確に言うと、読んだというよりはAudibleで聴いたというのが正しい。
2時間ちょいで聴くことができるので、サクッと聴くことができるのはいい。

一方でAudibleで聴くときは基本的にはながら聴きとなっているので、気になった箇所をメモするのが難しい。
私はメモアプリとしてはDynalistを利用しているので、そこにメモを取りたいな、と思ったときにはメモをするのだが、ランニング中とかには流石にそれは難しい相談だ。

そういう意味でも、やはりこの手の本とながらぎきのAudibleは組み合わせどころが難しいように感じる。

さっと耳で聞いてみて、かなり気に入った内容であれば改めてKindleなどで文字として購入するような形でもいいかもしれない。

具体と抽象のレベル感

聴いていて改めて感じたのは、具体レベル・抽象レベルが合わないことでの会話が不成立となってしまう点だった。

結局、具体的と行ってもその人に取っての具体的であって、受け手にとってはまだまだ抽象的な話になってしまうこともある。

どこかで完全に分かれるものではなく、繋がっているスライダのようなもの。
その中で、お互いが、今どのレベルで会話をしているのかを認識合わせした上で議論をしないことには議論にならない。

また一人で思索する際、何かしら共通点を見出すようなことを考えているときに、どのレベル感での抽象とするのか、それを意識した上で考えないと行けないな、と感じた。

このあたりは、なんとなくの感覚的なものでこれまでやってきてしまっているかもしれなく、より言語化、意識を行うことでいい認識の統一ができそうな気がする

自分に当てはめて考える

一番、どういうところで使えるのかな?と考えた際に、ぱっと思いついたのは、仕事での組織づくりだった

組織として目指すべき方向性みたいなものは、非常に抽象的になる。
それを具体的な行動に落とし込んでいくんだけど、その落とし込んだ具体的な行動を並べて抽象的に見たときに、それが本当に当初求めていた組織の像なんだろうか?というところだ。

当初の抽象化した言葉が、そもそも目指すべき内容を正しく言語化できていないだけかもしれないし、具体化した実行内容が足りなかったり間違っているのかもしれない。

でも、いつだって私達の目の前には具体的に見える問題が山積みなのが現状で、たとえそれが本質的な解決にならなかったとしても、抽象的な、より本質的な内容に対しての考える時間が足りない。

抽象的なことを考えるというのは、なんだか雲をつかむような話に見えて時間がかかってしまいそうで、なかなか手が出しづらい。

だからこそ、この手の内容をトレーニングして鍛えていかないといけないんだろうな、と思った。

どこまでこの具体と抽象をものにすることができるかはわからないけれど、より普遍的な、本質的な物事の見極めができるようになるとかっこいいと思うので頑張ってみますかね。

どうでもいい話

これはAudibleで聴いたから余計に誇張されている話かもしれないが、本書にはちょこちょこと寸劇が交じる。

この寸劇がAudibleで聴くと非常に寒い。
通常、これらの寸劇は各章で言いたいことだったりを代弁するようなエピソードなんだけど、あんまりそういったエピソードとして入ってこず、思わず「これ要るのかな?」って思ってしまう内容だった。

これ、Kindleだとそれほど疑問に感じずに素通りしてしまうかもなぁと思ってしまった。
読みても大変だね

ランニング中のスマホバッテリー切れ

月末の館山若潮マラソンに向けて今日も走り込み

ずっと、何故か黒潮マラソンと覚えてしまっていました絵が、正しくは若潮マラソンでした

館山若潮マラソン
https://tateyama-wakasio.jp/

ランニング中になんのアプリを使っているか

今日はハーフ走をするつもりで走り始めたのですが、調整を失敗してポストにも書いた通りバッテリーフルじゃない状態での開始でした。
それでもハーフならなんとかなるだろうと思っていました。

確かになんとかなったものの、走り終わるとすぐにバッテリー切れ。
それ以降にスマホが使えなくなってしまい、ちょっと不便でした。

今使っているのはiPhone13Pro。発売が3年前の9月なので2年半くらいか。
そろそろバッテリーも、というところではあるけどもうちょっと持ってほしい。

ただ、スマホのバッテリーも気になるところだけど、どちらかというと渡しの場合は立ち上げているアプリの量に問題がある

NRC(Nike Run Club)

ランナーで使っている人は多いのではないでしょうか。
ずっと私はこれで計測を行っています。
基本的なランニングに必要な機能は持っているのと、シューズの管理機能も持っています。
そして、使い所は悩むところがないわけではないですが、ガイドランやコーチングも可能です。
過去にどれくらい走ったのか?は基本的にNRCに集めている形ですね

TATTA

TATTA
https://tatta.runnet.jp/about/

こちらはマラソン情報などを提供しているRUNNETが提供しているランニング測定用のアプリです。
これは、正直使ってはいるけど必要なのか?と言われると悩む。

RUNNETで申し込んだ大会に対しての情報や、エントリーしている大会の参加者がどれくらい練習しているのかがわかったりします。

何よりも、TATTAで開催されるイベントみたいなものもあり、そのイベントに参加するときはこのアプリで計測した距離が利用されることになります。

正直言って、エントリーした大会の他の参加者情報とかがなにかの参考になるのか?はあまり意味を感じていません。

この先あるとしたら、TATTAにあるチーム機能とかで繋がりが作られると関係してくるかもな、というところですね

Runmetrix

Runmetrix
https://runmetrix.casio.com/jp/

こちらは、CASIOが作ったRunmetrixという、フォーム測定機器と接続し、ランニングフォームなどを評価してくれます。

昨年に、友人が利用しているのを見て勢いで購入して使っています。

ただ、フォームに関してかなり細かい情報を手に入れることはできるものの、私自身がそこまでフォームの見直しとかそういったことに対しての知識がないのでこのデータを十分に活かせて無いんですよね。

それでいて、時々このデバイスをうっかり準備するのを忘れてしまったりすると、取りに行くのも面倒なのでそのまま走るということもしばしば。

それほどメリットを見いだせてない日々がちょっと続いていました。

ただ、最近このRunmetrixとASICSのRunningDataManagerというサービスが連携を行って、フォームの特徴などを分析してくれるようになったそうです

RunningDataManager
https://data-viewer.asics.com/

データ連携を開始したのが最近なので、ろくにデータは溜まってはいないんだけど、ちゃんとデータが溜まったときには役に立つのかなぁ?

ドラゴンクエストウォーク

走っている間に少しでも、、、

Audible/Voicy

AudibleもしくはVoicyで、走りながら溜まっている配信だとかを聴いたりしています。

選択肢

結局のところ、どれがどのくらいバッテリーを消費しているのか?が一番大事なわけで、今まで見ないようにはしていたものの、iPhoneで確認してみると・・・

意外とRunmetrixが使っていますね。

正直、Audibleがそれなりに行ってるかな?と思っていましたが、、、圧倒的DQウォーク。

しかし!これを閉じてしまうのは正直ゲームをやる身としては悲しい。

とりあえず、DQウォークを無理ない範囲で落とすのが一番っぽい気がしている

Docker の開始がいつまで経っても進まない

以前、尻切れトンボとなっていたKaggleへの挑戦をコソコソと始めている。
まずは、タイタニックをもう一度あれこれ見ながらやってみて、その後何をしようかな?と。

実際問題、タイタニックコンペに関しても、ネット上を見て提出までは行っているけどスコアが上位に食い込めているわけじゃない。
かといって、タイタニックで上位に組み込むところまで頑張るよりは、実際に開かれているコンペに参加して行くほうが身になりそう。

だが、圧倒的に基礎が足りないのも事実

ということで、データサイエンス100本ノックをやってみることにしたのですが、そもそも環境の構築にてまどってしまったというお話

発生した現象

前置きが長過ぎますね。
docker composeコマンドによって一通りのbuildが終わり、Starting状態になったPostgresqlサーバーがいつまで経ってもStartingのままでした

こんな感じでずっと動かなくなっていました。

Windows環境で実行する際の注意点として、GitのCRLF設定を気をつけるようにとガイドに書いてあったのですが、現象としては違いそう。
何かを始めようとしたときに環境構築で躓くと一気に気持ちが冷めてしまいますよね。。。

ネット上を見ても、同じような状況に陥っている人はいないようなので自分の環境問題であるだろうということはわかっています。

DockerDesktopアプリ(GUI)で確認してみる

公式で提供されているコマンドではなく、DockerDesktop(GUI)でこのPostgresqlサーバーを実行してみると下記のエラーが出ていました。

Error invoking remote method ‘docker-start-container’: Error: (HTTP code 500) server error – Ports are not available: exposing port TCP 127.0.0.1:5432 -> 0.0.0.0:0: listen tcp 127.0.0.1:5432: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

あぁ、こうやって出てくれると単純ですね。
Portが何かしらのプロセスが利用中、被っているわけです。

netstatsで確認してみると、たしかにいる。
上記の例で言えばPID7560のプロセスが犯人ということで見てみると、ローカルでPostgresqlが起動していました。

いつ入れたんだろう。。。
何かしらを試す際に入れたんだろうけど全然記憶にない。。。

とりあえず、一旦ローカルで起動していたPostgresqlは停止。ついでに自動起動もやめて手動起動設定にして再び実行して

無事に起動させる事ができました。

それにしても相変わらずDockerへの理解が足りないのは、どこかでなんとかしないと行けないですね。
もうちょっと調べ方を把握しておかないといかん。