XREAL Beamに神アプデ来てます!

WindowsPCとつなぐとファイル転送(USB等と同じようにドライブとして認識)ができるようになっていました。
またファイル管理アプリがインストールされたのでXREALグラスとつないでアプリを開いて操作できるようになっています。

確認した限りではAPKもダブルクリックでインストールできるようになっており、Windows経由でAPKファイルを転送してインストールすれば前の記事で紹介した設定変えて無理やりインストールする必要などもなくなりました。

NETFLIXAmazon Prime Videoは自動でインストールされるようです。
※ネット上でつかえる報告があってからインストール画面が出るまでに結構かかったのでまだ表示されていない人もそのうち表示されると思います。

これはBeamが始まった感がありますね。

MinisforumミニPCのUM690設定および使用レビュー

2月に購入して毎日使用しているMinisforumミニPCのUM690が使用から結構時間たったので使用感のレビューを書いていきます。

製品紹介

公式

Minisforum UM590/UM690/UM480XTstore.minisforum.jp

Amaxon

スペックの詳細は公式を見てください。 32GB RAM+1TB SSDを購入

今買うならUM690SやUM790シリーズも出てますのでそちらを検討する方がいいかもしれません。 UM690S何が変わったのか分からないですが、おそらくエアフローが改善されていて筐体内部の温度が低く保ちやすくなっているのでしょう。 UM790は後継バージョン?

この製品を知ったきっかけ

10年ほど使用していた自作PCがいろいろと限界を迎えていたので、電気代高騰と引っ越しをきっかけに言いのないかなぁと探していたところYoutube等で以下のような動画を見つけました。
ゲームにも使えるとのでゲーム用+普段使い用にしようという事で購入。

評価

5段階評価とすると評価3の可もなく不可もなくといった感じです。
今後使用可能年数によって評価が上向いたり下がったりします。

プラスポイント

動作について

評判通りサクサク動いているのでとても良いと思います。
3画面表示、Youtube視聴、ゲーム、仕事、動画編集、プログラミング、コンパイルビルドなど一部問題ありますが使えています。

静穏性

CPU兼筐体ファンの身なのでグラボ付きゲーミングPCに比べて純粋に静かです。

XRReal Airが使える

USB4が搭載されているためXReal Airグラスで画面出力が可能です。Beam経由にするとブレ補正などが使えて画面のユーザビリティが向上します。

消費電力

月大体22~24kWhの消費量です。大体700円前後(スイッチボットのあれで計測) 朝9時~24時稼働 9-18時はYoutube流しっぱ。20時~24時はゲーム。時間外はPCスリープ。

マイナスポイント

高負荷時にフリーズが発生することがある

巨大なマイナスポイント。評価が3にしているのはこれのせいです。(対処できなかったら評価1)
フリーズした場合は対処が必要になります。筆者はギルティギアという格ゲー(格ゲーは比較的軽いゲーム)をよくやるのですが対処を入れる前は頻繁にフリーズし、以下のような画面になることもしばしばでした。

対処方法については以下に記述します。

原因調査

Windowsのイベントログにもそれらしいログは出ておらず、ソフトウェア側の問題ではないという事はわかりました。
ACアダプタ交換、キーボードマウス含めてデバイスを取り外しても特に状態は変わらず原因はわかりませんでした。
というわけで困ったときの集合知。今回は5chでDDR5が原因で1度フリーズが発生すると頻発するようになるという報告を見つけたました。
どうやらDDR5から電源回路が導入されマザーボード側で行っていた電圧調整をメモリ側で行うようになったため、合わない組み合わせのメモリだと不具合(最悪呼称)が発生するようです。
というわけで以下のメモリをAmazonでポチって交換したところフリーズが発生しなくなりました。

Crucialメモリに交換する人が多いようでしたが、Ryzen用に開発されたという触れ込みのCORSAIRのメモリを選択。

その他対処

高負荷時に高温になると電源回路がなんやかんや不具合起きるようなので、高温にならないように高負荷時にファンをぶん回す設定をします。
ファンの操作設定はBiosかソフトウェア側で対処、する方法がありますので2つ紹介します。

Biosでの対処

Bios設定からFanの設定ができます。設定方法は以下になります。

  1. PCを起動後DELキーを連打してBios画面を表示させます。
  2. Bios画面が開いたら左右キーでAdvancedタブを選択します。
  3. 上下キーでHardware Monitorを選んでEnterを押します。
  4. 変更された画面でEnterを押します。
  5. SMF Start PWMとFull PWM Temperatureを変更します。私はSMF Smart PWMを40に、Full PWM Temperatureを80に変更しました。

これで負荷が上がってきたときにFANがブン回るようになっています。

ソフトウェアでの対処

FanCtrlというフリーのソフトウェアがあるのでそちらで設定します。このソフトはゲームを行う、動画を見るなどで細かくファンの設定が行えるのでお勧めです。
以下を参考に導入しました。

www.nichepcgamer.com

最後に

設定を行って半年ほどたちましたが特にフリーズなど再発せず快適に使えています。10年位使えればいいなぁと思ってます。

PixelWatch2を購入したのでレビュー

前々からスマートウォッチは欲しかったので購入
画像は保護シート張った状態のもの

時計と言ったらスチールバンドという固定概念が払拭できないのでついでに以下も購入
値段的に安っぽい感じあるかなと不安だったが、一応そんなこともなくお値段以上の感じは出ている気がする…気がする…そう思いたい

装着感

まず今回初めてのスマートウォッチとなったわけだが、驚いた点として1つあるのが装着感
個人差があるとは思うけども標準のシリンコンバンド?だと軽い+ベルトが肌にマッチしているのか、つけている感じが全くしない
寝るときもつけっぱなしにするといいみたいなレビューを見ていやー無理だろうと思っていたが普通につけっぱなしで寝れた(まぁこのブログを書いている人は寝つきがいいのでそれもあるかもしれないけど)
つけている感じが全くしないので、充電してたら付け忘れて時計見ようと腕を振ったらつけていなかったことに気が付くというような異常事態まで発生した
まぁそれぐらいフィットする製品だったという事です

機能面

公開されている情報そのままなのでそこらへんは割愛

Map機能について

さすがGoogleMapって感じ?微妙に使いにくい
まぁどのみち目的地へのルートとか頭に叩き込んでいくタイプなのでそんなに使わない機能ですね

SitchBotについて

クッソ便利
でもスマートフォンも携帯するので今のところ優位性はない
docomoが今度ワンナンバーサービス初めてPixel Watchにも対応するとのことなのでそれ待ち

バッテリーの持ち具合

24時間持つという事だったが、画面常時ONだと10時間くらいでフル充電から20%まで落ちたので24時間持つかは怪しいところ

ベルトの交換について

慣れていないからかもしれないが、ベルトの交換についてはもうちょっとやりやすくなるように改善されてほしい
装着部分にあるボタン(というか返し?)を押し込んでずらすのだが、小さいので押し込みながらベルトをずらすというのがやりにくい
何かいい方法が荒れればだれか教えてほしいところ

FitBitについて

自動で運動の記録取ってくれるので結構よい
初めて使ったけど見えるかって大事だなぁと思った

総評

個人的に買ってよかったと思えました
日用品なので今後も使い倒していきたいと思います
お値段円安で高くなってますが、買おうか迷ってるなら買った方がいいと思います

購入したものは以下

※筆者が買ったのはLTE版なのでそっちが欲しい人はGoogle Storeに行くといいかも

時計と言ったらスチールバンドという固定概念がある人向け
※筆者が買ったのはブラック

ディスプレイはやっぱりガードしたい

買わない方がいい
Pixel Watch 2の純正充電機だとリューズが下になるので充電がしにくい

WSL2 UbuntuにDockerをインストール

WindowsにDockerDesktop入れたくないので実施

インストール

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ ls -l ./get-docker.sh
$ sudo sh get-docker.sh

カレントユーザをdockerグループに所属させる

$ sudo usermod -aG docker $USER

systemd有効化確認

ls -l /etc/wls.conf

無ければ下記内容で/etc/wls.confを作成

[boot]
systemd=true

WSL停止

> wsl --shutdown

WSLアクセスしてDockerが起動していることを確認→active(running)であること

$ systemctl status docker

hello dockerを実行

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:88ec0acaa3ec199d3b7eaf73588f4518c25f9d34f58ce9a0df68429c5af48e8d
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

MongoDBを試す

docker run -itd -e MONGO_INITDB_ROOT_USERNAME=**** -e MONGO_INITDB_ROOT_PASSWORD=**** \
        -p 27017:27017 --name mongo mongo 

一応コマンドのメモ

  • docker run: Dockerコンテナを実行するコマンド
  • -itd: 3つのオプションの組み合わせ
    • -i: コンテナの標準入力を開いたままにし、コンテナがバックグラウンドで実行される場合でもコンテナにアタッチできるようにする
    • -t: 疑似TTY(テキスト端末)を提供し、コンテナ内のプロセスと対話できるようにする
    • -d: コンテナをデタッチドモードで実行し、コンテナがバックグラウンドで実行されることを意味
  • -e MONGO_INITDB_ROOT_USERNAME: これはMongoDBの初期化時に使用される環境変数で、MongoDBのルートユーザーのユーザー名を指定する
  • -e MONGO_INITDB_ROOT_PASSWORD: これもMongoDBの初期化時に使用される環境変数で、MongoDBのルートユーザーのパスワードを指定する
  • -p 27017:27017: ホストマシンとコンテナ間でポートのマッピングを行うためのオプションで、ホスト:コンテナの順でポートを指定する(MongoDBのデフォルトポートを指定)
  • --name mongo: コンテナ名
  • mongo: Docker Hubから公式のMongoDBイメージを使用してコンテナを実行するためのイメージ名

コンテナにアクセスしてMongoDBを操作

$ docker exec -it mongo bash
# mongosh -u **** -p pass ****
> show dbs
admin   100.00 KiB
config   12.00 KiB
local    72.00 KiB

ホストからMongoDBを操作するためにクライアントを準備 →下記を参考 www.mongodb.com

接続

$ mongosh mongodb://localhost:27017 -u **** -p ****
> show dbs
admin   100.00 KiB
config   12.00 KiB
local    72.00 KiBhost

これでWSL上にMongoDBのDocker環境が構築された

Go言語勉強~入門編~

理由あってGo言語を使うことになったので勉強中。

環境構築

とりあえずWSL2上でGo言語開発環境を作成する。

インストール

$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install -y golang-go

インストール後確認

$ go version
go version go1.18.1 linux/amd64
$ go env GOROOT
/usr/lib/go-1.18
$ go env GOBIN
(出力なし)

GOBINはデフォルトで$GOROOT/binになるらしい。個人環境なので今回は未設定にする。Buildサーバなど共用で使う環境の場合$HOMEの下にgoディレクトリを作成してそこに設定するのが良いらしい?

サンプル作成

プロジェクトルート作成

$ mkdir go_lang_sample
$ cd go_lang_sample

とりあえず標準出力するプログラムをコーディング...そうHello worldである。

$ vi main.go

内容

package main

import "fmt"

func main() {
        fmt.Println("hello go")
}

実行

$ go run main.go
hello go

バイナリジェネレート

$ go build main.go
$ ls -l 
-rwxr-xr-x 1 x x 1758417 Oct 28 08:56 main
-rw-r--r-- 1 x x      69 Oct 28 08:49 main.go
$ ./main
hello go

生成されたバイナリを見てみる

$ file main
main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=tCA68fbwmaBGF2DhQaa2/UIAEBKiamDIFylGztcuJ/PdZUaMTfyMY9U1yRa7Mt/UYZftBc0pC1EWaw8P6i-, not stripped
$ $ readelf -h main
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x45bfa0
  Start of program headers:          64 (bytes into file)
  Start of section headers:          456 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         7
  Size of section headers:           64 (bytes)
  Number of section headers:         23
  Section header string table index: 3

C言語と比較

$ mkdir tmp 
$ cd tmp
$ vi main.c
#include <stdio.h>

void main(int argc, char *argv) {
        printf("hello c\n");
}
$ gcc main.c -o main
$ ls -l 
-rwxr-xr-x 1 x x 15960 Oct 28 09:01 main
-rw-r--r-- 1 x x    78 Oct 28 09:01 main.c
$ readelf -h main
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Position-Independent Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x1060
  Start of program headers:          64 (bytes into file)
  Start of section headers:          13976 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         13
  Size of section headers:           64 (bytes)
  Number of section headers:         31
  Section header string table index: 30

Go言語のほうがファイルサイズ大きい、GCとかするっぽいのでそこら辺のライブラリが入っているのだろう という事で教えてチャットGPT!

Go言語のビルドファイルとC言語のビルドファイルでファイルサイズに差があるのはなぁぜなぁぜ?

Go言語のビルドファイルとC言語のビルドファイルでファイルサイズに差がある主な理由は、言語の設計と実行環境の違いによります。以下はいくつかの主要な要因です:

静的リンクとダイナミックリンク: C言語のビルドファイルは通常、静的リンクされた実行可能ファイルを生成します。これは、すべての依存関係が実行可能ファイルに組み込まれることを意味します。Go言語は通常、ダイナミックリンクをサポートし、実行可能ファイルはGoランタイムライブラリに依存します。したがって、Goプログラムは通常、実行時にライブラリをロードする必要があるため、実行可能ファイルは比較的小さくなります。

コードの最適化: コンパイラによって生成されるコードの最適化レベルや方法にも差があります。コンパイラは、プログラムのパフォーマンスとサイズのトレードオフを調整するために異なるオプションを使用できます。言語ごとにコンパイラの最適化戦略が異なり、これが実行可能ファイルのサイズに影響を与えます。

言語機能の違い: GoとCは異なる言語であり、それぞれ独自の機能セットを持っています。Goは並行処理やメモリセーフティなどの高度な機能を提供するため、それらの機能に関連するコードが実行可能ファイルに含まれる可能性があります。

センキューGPT!

XREAL Beamにアップデートが来てました

タイトルの通り
XREAL Beamのシステムバージョンは[EVA-202309111246-280]。XREAL Airファームウェアバージョンは0.7.1.02.298_112E_2121_11_26。 アップデートとしたら下のような感じに別途インストールしたアプリがフォルダにまとめられました。

これはもうしばらくしたら公式にアプリがリリースされるような感じなのだろうか?早くそうなってほしいところ。

夏に大活躍している蚊・コバエの悩み解消グッズ

Amazonで購入して1年ほど使用している蚊・コバエ対策グッズ

上記を導入することで部屋で飛んでいた蚊とコバエが驚くほどいなくなった。
実際仕掛けると1日に数匹とれている様子↓

スイッチボットプラグミニと合わせて使用している。殺虫灯の使用電力量は1日12時間使用して0.05kwhで1か月あたり代替18.6kwhとなっていた。(以下のグラフはSwitchBotスマートプラグミニのデータエクスポートで出力したCSVから作成したグラフ)
私はJCOM電気を利用していて1kwhあたり11.42円のため、1台当たり1か月あたり212.412円。リビング、書斎、寝室、トイレに導入しているため月に大体900円ほどの費用。それで蚊コバエの不快さなくせると考えれば安いと思う。

しかしながら、SwitchBotスマートプラグミニはこういった電気機器の制御とデータ取りができるので大変重宝している。