mi band4について(元mi band3ユーザとして)

mi band4を買いました。
元はアクティビティトラッカーを着けて使ってみようと、初めてのバンドとしてmi band3を買い、使っていました。ところが去年の年末あたり外出した際に無くしてしまい、しばらくバンド無しで過ごしていました。(純正シリコンバンドから本体がすぽんと抜けてしまったようで、気づいたら無くなっていました。)
こういうときに「あー残念」で済むのが安いバンドの良いところです。

mi band4登場は知っていましたが、今回購入するにあたって、事前調査で自分の用途(歩数と心拍が取れていればいい)では、あまり差がなかったため、今回もmi band3でいいやと思っていました。ですが、もう取扱がほとんど無いようで、差額も500円いかないようだったので、せっかくだからとmi band4にしました。買ったのは日本版(smart と付いている方)ではなくglobal版です。

で、mi band3と比較しての感想ですが。
- 純正バンドが固くなった気がする。最初、はめていて違和感があった。今は多分慣れた。
-  やっぱりカラー画面である必要はなかった。カラーだから困ったりはしないが。
- 音楽再生機能はセットアップ時に自動接続されなかったようなので使っていない。今度暇なときにでも試そうと思ってます。
-  純正アプリは相変わらず。心拍歩数以外もgoogle fit連携して欲しい。
- 画面の明るさ調整って3にあったっけ? 4にはある。
- 3に無かった、座りっぱなし防止タイマみたいな機能が増えた? 素晴らしい。
 睡眠や心拍の測定精度が良くなったのかは正直自分にはわからないので、感想はそれ以外になります。

「座りっぱなし防止」が、事前調査で気づかなかった(多分)mi band4の新機能で、これがPCデスクワークの多い自分にはありがたいし、すごく面白いです。mi band4にしてよかった。

3Dプリンタを買いました(ANYCUBIC PHOTON)

3Dプリンタを使おうと思って、ANYCUBIC PHOTONを買いました。(Sやzeroじゃない安いやつです。)光学式です。
3万円で買えます。3Dプリンタ本体が安く買える、良い時代になりました。



今はBlenderで描いているフィギュアのテスト出力に使っています。あとは、文ッ字フリマで出す製品にも使う予定。


以下、開封写真。




箱に入っている付属品一式です。

手袋とマスク(一応程度)もついています。


下面にファン。




容器内部もクッションが充填されています。



内部クッションの中に印刷土台(宙に浮く方)が埋まっています。

レジンバットです。あらかじめフィルムが貼られていて、そのまま使い始められます。





マスクは後でもっとちゃんとしたものを買いました。


ところで3Dプリンタはレジン毎に性質が異なるためパラメタ(露光時間)の調整が必要で、Photonの先達の方々はテスト出力をいろいろ工夫したりしていたそうなのですが、私が買ったPhotonには、USBの中にサンプルデータ他の諸々と一緒に、露光時間をテストするための特別なテスト出力データが入っていました。

また本体も、先達は外から光が入らないように工夫していたそうなのですが(写真を見ると外板が透明)、今はいちおう不透明な外板がはめられています。



3Dプリンタは1000万とか100万円スタートだったものが、今はPhotonのようにやすければ
3万円台スタートと大変安くなりました。
とはいえ本体だけで始められるわけではなくて、いろいろ 購入する必要があります。主に周辺の消耗品と、レジンです。



eog(eye of gnome)のビルド

Ubuntu 20.20 daily build.




Ubuntu20.20のeogは2020/03/07時点ではversionが3.35.92で、gitリポジトリは3.35.93となっている。


# ソース取得とmesonビルド
```
git clone https://gitlab.gnome.org/GNOME/eog.git
cd eog
sudo apt install meson
meson build/
```

# gio-2.0 依存解決
```
 Found pkg-config: /usr/bin/pkg-config (0.29.1)
Found CMake: /usr/bin/cmake (3.16.3)
Run-time dependency gio-2.0 found: NO (tried pkgconfig and cmake)

meson.build:108:0: ERROR: Dependency "gio-2.0" not found, tried pkgconfig and cmake
```

これを解決するのは `libgio-cil libgio2.0-cil-devlibgio3.0-cil libgio3.0-cil-dev ` ではない。
`sudo apt install libglib2.0-dev`
で解決。

```
MN@daisy-bell:eog/$ meson build/
~
Found pkg-config: /usr/bin/pkg-config (0.29.1)
Run-time dependency gio-2.0 found: YES 2.64.0
Run-time dependency gio-unix-2.0 found: YES 2.64.0
Found CMake: /usr/bin/cmake (3.16.3)
~
```

```
Found pkg-config: /usr/bin/pkg-config (0.29.1)
Run-time dependency gio-2.0 found: YES 2.64.0
Run-time dependency gio-unix-2.0 found: YES 2.64.0
Found CMake: /usr/bin/cmake (3.16.3)
Run-time dependency gnome-desktop-3.0 found: NO (tried pkgconfig and cmake)
```
`sudo apt install libgnome-desktop-3-dev`

```
Run-time dependency gnome-desktop-3.0 found: YES 3.35.91
Found CMake: /usr/bin/cmake (3.16.3)
Run-time dependency libpeas-gtk-1.0 found: NO (tried pkgconfig and cmake)
```



`sudo apt install libpeas-dev`


```
Found CMake: /usr/bin/cmake (3.16.3)
Run-time dependency libexif found: NO (tried pkgconfig and cmake)

meson.build:144:2: ERROR: Assert failed: libexif support requested but library not found. Please use -Dlibexif=false
```
`sudo apt install libexif-dev`

```
Found CMake: /usr/bin/cmake (3.16.3)
Run-time dependency lcms2 found: NO (tried pkgconfig and cmake)
```
`sudo apt install liblcms2-dev`

```
Has header "zlib.h" : YES
Checking for function "inflate" : NO
Library z found: YES
Checking for function "inflate" with dependency -lz: YES
Checking for function "crc32" with dependency -lz: YES
Run-time dependency libexif found: YES 0.6.21
Has header "libexif/exif-data.h" with dependency libexif: YES
Run-time dependency lcms2 found: YES 2.9
Found CMake: /usr/bin/cmake (3.16.3)
Run-time dependency exempi-2.0 found: NO (tried pkgconfig and cmake)

meson.build:161:2: ERROR: Dependency "exempi-2.0" not found, tried pkgconfig and cmake
```
`sudo apt install libexempi-dev`

```
Has header "zlib.h" : YES
Checking for function "inflate" : NO
Library z found: YES
Checking for function "inflate" with dependency -lz: YES
Checking for function "crc32" with dependency -lz: YES
Run-time dependency libexif found: YES 0.6.21
Has header "libexif/exif-data.h" with dependency libexif: YES
Run-time dependency lcms2 found: YES 2.9
Run-time dependency exempi-2.0 found: YES 2.5.1
Found CMake: /usr/bin/cmake (3.16.3)
Run-time dependency libjpeg found: NO (tried pkgconfig and cmake)
Checking for function "jpeg_destroy_decompress" with dependency not-found: NO

meson.build:169:2: ERROR: Assert failed: libjpeg support requested but library not found. Please use -Dlibjpeg=false (some programs using GTK+ may not work properly) ```
`sudo apt install libjpeg-dev`

あと
`sudo apt install librsvg2-dev`


```
Has header "zlib.h" : YES
Checking for function "inflate" : NO
Library z found: YES
Checking for function "inflate" with dependency -lz: YES
Checking for function "crc32" with dependency -lz: YES
Run-time dependency libexif found: YES 0.6.21
Has header "libexif/exif-data.h" with dependency libexif: YES
Run-time dependency lcms2 found: YES 2.9
Run-time dependency exempi-2.0 found: YES 2.5.1
Run-time dependency libjpeg found: YES 2.0.3
Checking for function "jpeg_destroy_decompress" with dependency libjpeg: YES
Has header "jpeglib.h" with dependency libjpeg: YES
Checking for function "jpeg_simple_progression" with dependency libjpeg: YES
Checking if "libjpeg version is 8 or greater" with dependency libjpeg compiles: YES
Run-time dependency gobject-introspection-1.0 found: YES 1.63.2
Run-time dependency librsvg-2.0 found: YES 2.46.4
Run-time dependency gdk-3.0 found: YES 3.24.13
Run-time dependency x11 found: YES 1.6.9
Configuring org.gnome.eog.desktop.in using configuration
WARNING: Gettext not found, all translation targets will be ignored.
Configuring org.gnome.eog.gschema.xml using configuration
Found pkg-config: /usr/bin/pkg-config (0.29.1)
Compiler for C supports link arguments -Wl,--version-script,/home/nuka/eog/src/symbol.map: YES
Program msgfmt found: NO

plugins/meson.build:1:0: ERROR: Program(s) ['msgfmt'] not found or not executable
```
`sudo apt install gettext`


```
Message: Configure summary:

  Source code location .......:  /home/nuka/eog
  Compiler ...................:  gcc
  Extra Compiler Warnings ....:  -Werror=format=2 -Werror=implicit-function-declaration -Werror=init-self -Werror=missing-include-dirs -Werror=missing-prototypes -Werror=pointer-arith -Werror=return-type -Wnested-externs -Wstrict-prototypes
  EXIF support ...............:  true
  XMP support ................:  true
  JPEG support ...............:  true
  Colour management support ..:  true
  GObject Introspection.......:  true

Build targets in project: 25

Found ninja-1.10.0 at /usr/bin/ninja
```
以上meson成功。


# 無視
```
Has header "zlib.h" : YES
Checking for function "inflate" : NO
Library z found: YES
```
は無視して良い模様。


# ビルド
```
cd build
ninja
```
`[70/70] Generating Eog-3.0.typelib with a custom command.`

# 実行
以下のパスに実行ファイルが生成されている。
`build/$ ./src/eog`





HUAWEY T5 Lite 8 購入しました

HUAWEY T5 Lite 8 購入しました。

ipad mini2を試験導入していてすごく便利で体感が良かったです。ですが2019年時点でブラウザでtwitterを3タブ開くとクラッシュ(?)するレベルでありさすがに限界で、8インチサイズタブレットの更新として購入しました。

SDカード含めて2.5万円くらいです。ipad miniで同じスペックを実現しようとすると8万円くらいになるため、雑に使ってもまだ大丈夫な値段という意味もあって、Andoridタブレットにしました。
(128GB SDが1500円くらいなのが大きくて、ipadだとsdカードは刺せないうえストレージを増やすだけで1~2万円違う。SIMオプションもipadは1.5万円くらいする。)


ipad mini2よりは縦長です。


液晶はさすがに綺麗。中古で買ったipad mini2に安い非光沢シートを貼っていたせいもありますが。


 購入して即、アップデートを実施。すでにAndorid9.1でした。






ios13アプリdarkmode対応

lina_dicto for ios でダークモードに対応しました。
https://github.com/MichinariNukazawa/lina_dicto_for_ios/commit/533fcddb03f75a2e71d56e708174b0f1e4c8ef9b



ios13.3・xcode11.3にて。

# storyboard

###
基本的にSystem Colorsを使う。xcode11以降で作ったAPPで単純なものなら、それだけで済む。
色をcustomなどにしていなければ自動でダークモードに変化する。
必要ならユーザ色としてColor SetをAssets Catalogに定義できる
それ以外のものはコードでなんとかする。
https://qiita.com/tamappe/items/3bf89a55ab85d0488b8a

### Color Set
 カラーアセットの新規作成
https://dev.classmethod.jp/smartphone/iphone/xcode-9-asset-catalogs-support-named-colors/



### 動作確認 simulatorでのdarkmode
「設定」に実機の「画面表示と明るさ」はないが「デベロッパ」の方にdarkmode設定がある。
https://qiita.com/p_on_ro/items/91e6659fda662fb2aac0

xcodeからもEnvironment Overridesから操作できる。
https://qiita.com/hirothings/items/4834481d170332e173f5



# code
darkmode判定。状態取得。
```
        if self.traitCollection.userInterfaceStyle == .dark {
        }
```

コールバック
```
class ViewController: UIViewController, UISearchBarDelegate{
     
     @IBOutlet weak var searchBar: UISearchBar!
     @IBOutlet weak var textView: UITextView!
     @IBOutlet weak var scrollView: UIScrollView!
+    var prevUserInterfaceStyle = UIUserInterfaceStyle.unspecified
~

    override func viewDidLoad() {
+        prevUserInterfaceStyle = traitCollection.userInterfaceStyle
~

+    override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
+        let userInterfaceStyle = traitCollection.userInterfaceStyle // Either .unspecified, .light, or .dark
+        if(prevUserInterfaceStyle != userInterfaceStyle){
+            // styleで埋め込んだCSSを全て置換するのは大変手間なので諦めて全て消去する。
+            textView.text = "";
+
+        }
+        prevUserInterfaceStyle = userInterfaceStyle
+    }

```

darkmode変化の通知コールバックは traitCollectionDidChange() で取れるのだけれど一工夫必要で、画面回転などと区別する。(再描画するだけなら不要かも。本APPは必要だったのでやった)



アイコンは偶然にもdarkmodeと共通で問題なかった。
TextViewはplaintテキストならsystem色が使えるが、Attributedの場合はコードから制御しないといけない模様。

TranscendケースでM.2 SSDドライブを作ってベンチマーク(MacBookPro環境用)


「WD 内蔵SSD 1TB WDS100T2B0B-EC 」と「Transcend USB3.1 M.2 SSD 外付けケース TS-CM80S」の組み合わせでを作ったので、ベンチマークをとっておきました。
購入検討の参考にしてください。

構成



SSDドライブ化ケースのオススメに上がっているSSD。M.2のSATAタイプはM.2専用(?)のものに比べて遅いとされていますが外付けにするので今回は安くて大きいものを買いました。

ケースはもうすこし安い2000円以下のものもありましたが、SSDも売っているメーカのものを選んで安全をとりました。
以前おなじ構成を検討した時は、M.2 SSD(SATAでない)を外付け化する方法はなかったのですが(というか内蔵PCI-Eに追加する方法すら無かった)、今はM.2の外付け化も可能なようです。



ベンチマーク

参考のため内蔵SSDドライブの速度を。

内蔵SSD

-変換噛ませケーブル1(TypeB経由)
-変換噛ませケーブル2(TypeA経由)
-HUB経由
ここでTypeB/Aは速度に関係なくて単に区別を付けるためのものです。

TypeC-ケーブル-TypeB-変換キャップ-TypeC

TypeB-TypeC変換キャップは100円均一のものでした。

TypeC-ケーブル-TypeA-ケース純正ケーブル
TypeC-TypeAケーブルは、以前秋葉原で300円くらいで買ったものです。




TypeC-電源&HTMI付きハブ-TypeAは、amazonで1000円ちょっとのものを買いました。



TypeC-ケーブル-TypeB-変換キャップ-TypeC / exfat


TypeC-ケーブル-TypeB-変換キャップ-TypeC / mac拡張fs

Mac TypeC-ケーブル-TypeA-ケース純正ケーブル-TypeC ケース /exfat



Mac TypeC-ケーブル-TypeA-ケース純正ケーブル-TypeC ケース /mac拡張fs

Mac TypeC-電源&HTMI付きハブ-TypeA-ケース純正ケーブル-TypeC ケース /exfat
HUB接続についてはtimemachineをセットしてからなのでexfatのみです。
上のケーブルと比べて全体に遅いですが早い項目もあって悩ましい。
(後述の仮想マシンを置く目的でそれほど遅くなかったようなので、今はこれで運用しています。)

MacOSXでの利用について。

 最初は使用できない旨の警告が出ますが、とりあえず適当なファイルシステムを作れば、あとはそれを消してパーティションをカスタマイズ可能です。
今回はセミ外付けデータ用としてexfat。 (仮想マシンのイメージなどを置きたい・Linuxなどからデータを移すため)
mac拡張ディスクを300GBほど切り出して、そちらをtimemachineのドライブにしました。
250GB中200GBくらい使っているMacOSXで、バックアップ作成にかかったのは2時間くらいでした。

CSSでグラデーションの上にPNG画像を一緒に使う

ページ背景で、透過png画像とbackground / linar-gradientを同時に使うトリック。

electron 8で使えたのでchrome 78で有効なはず。




```
 13 html{¬
 14 >-------background: linear-gradient(-30deg, rgba(190, 255, 190, 1), rgba(215, 255, 215, 1));¬
 15 }¬
 16 body{¬
 17 >-------background: url("image/sky.png") center center / cover no-repeat fixed¬

 18 }¬

```

htmlタグに背景色、bodyに透過PNG画像。
最初はグラデーションと画像でcssファイルを分けていたのが有効化のトリックかとも思ったが、そうではなかった。

注意:
image/sky.pngはcssファイルからの相対パスになっていた。
```
index.html
css + style.css
    + image/sky.png
```


stackoverflowのコメントによると画像とグラデーションの同時利用は回答時点では仕様策定中と書いてあるのだと思う。
https://stackoverflow.com/a/10881460

mi band4について(元mi band3ユーザとして)

mi band4を買いました。 元はアクティビティトラッカーを着けて使ってみようと、初めてのバンドとしてmi band3を買い、使っていました。ところが去年の年末あたり外出した際に無くしてしまい、しばらくバンド無しで過ごしていました。(純正シリコンバンドから本体がすぽんと抜けて...