2024/12/02(月)Rakuten Kobo

楽天Koboで書籍を買ってみたりアプリを入れてみたりした。
色付きe-inkに興味津々。

まだ購入したりインポートした書籍の数も少ないのでこの先はわからないけど感想。

いいな、と思ったのが、EPUBリーダーとして使える点。
オライリーの書籍は他の電子書籍ストアで販売されていない物が多いけど、EPUBとPDFでダウンロードできる。タブレットならPDFでもいいんだけど、微妙なサイズ感の違いや扱いにくさを感じる事がある。EPUBならそのあたりは吸収してくれるのでEPUBが扱えるならその方が良い。

kindle アプリはローカルのファイルを開くのがめんどくさい。ファイルを開くときにkindleを指定して開けるけど、kindleを開いたときにそのファイルを選ぶことはできない。インポートするには send to kindle でメールで送るとか amazon のサイトからゴニョゴニョする必要がある。
Kobo だとファイルを開くときに Kobo を選べばアプリケーションにインポートしてくれる。

EPUB のレンダリングも上手い気がする。今のところの感触では。

技術書を読みたいという需要には Kobo がちょっと上という気がしている。

ライブラリの分類もできてる。ここはまだかなり不明だけど、kindle よりよくできていそう。
kindle はいくつかの本が一つの続巻としてまとまっていなかったりする。雑誌は一切まとまらないのがめちゃ不満。

読み上げ機能はない。
kindle はそれ自体の読み上げはいまいち、alexa に読ませると若干マシだけどスマホでバックグラウンドに回せない等欠点はある。今のところ高いお金を払って audible を使うしかないが、あるにはあるので。


サービスの存続は...流石に大丈夫だよね?

2024/11/29(金)おじさんがgolangを学ぶ

プログラムはなんとなくできるけど、ちゃんとやったのは C, Perl, shell というおじさん。

オブジェクト指向だったりパラダイム的なもの

  • 複数の返り値を返せる
  • エラーの補足がCほど原始的ではないが例外を強制する言語とも違う
  • クラスではなくレシーバ
  • 可変長引数の書き方 ("..." っていうやつ)
  • go routine と context

文化的なもの

  • 変数はキャメルケース、関数はスネークケースを使うようだ
  • 戻り値や引数の型とインターフェースと構造体

実装は全然違うと思うけど、X11 くらいのオブジェクト指向を言語仕様にまとめた感じ。C#のガチガチに縛ってくる感じではない気配。(個人の印象です)

返り値や仮引数の宣言が今まで見たことがない順番になってる。それが根本的に良いということなのかレシーバの宣言のために組み替えたのか。そういうものだと受け入れられて、混乱するわけではない。

Rust をちょっとかじったらメモリ管理を自分でやらされたけど、go はそこを意識しなくていいので書いていて安心。

未知の構文や考え方はあるけど、今のところクセはない印象。

2024/09/30(月)ignitionでパッケージインストール

FedoraCoreos にパッケージを追加する場合は Ansible でも使うのがいいかな?と考えていたけど、一応公式ドキュメントにパッケージを追加する場合のサンプルがある。

https://docs.fedoraproject.org/en-US/fedora-coreos/os-extensions/

Type=oneshot で systemd ユニットを実行する事で起動時に一回だけ実行させる方法が取られている。これを ignition で実行する事でOSインストール時に一緒に実行できる。もっといい方法を導入する予定だ、と2020年に宣言されているが続報はない。

簡単な操作ならこれでもいい。 Ansible をインストールするような systemd ユニットを作るのが妥協点だろうか。

https://pvamos.github.io/fcos-k8s/

そんな事例を見つけた。

2024/09/29(日)bhyveでk8s - #1 fedoracoreos

参考情報

参考情報をみてやるだけ、ではある。 https://docs.freebsd.org/en/books/handbook/virtualization/#virtualization-host-bhyve https://forums.freebsd.org/threads/hints-for-installing-fedora-in-bhyve.80257/

目論見

  • 管理ノードを3台で構築する。
  • ワーカーノードを2台くらい作る。
  • なんか乗せる。

余力で

  • bhyve で node のスケーリングってできる?
  • ignition を 動的に作成できないか
    • 人の手で構築するのはナウくない気がする

やってみるとクラウド環境って便利。自動化とかスケーリングとか当たり前にある前提だけどローカルにそれらはない。kind とか minikube 使わずコントロールプレーン側を触ってみるのが目的なので不便は承知。

作業

bhyve 環境は出来ている前提

Fedora CoreOs の準備

Live DVD をダウンロードしておく https://fedoraproject.org/

ディスクを作る

散らからないように階層を掘ってボリュームを作る。例では k8s という階層にまとめた。

sudo zfs create  -o mountpoint=none stor/k8s
sudo zfs create -V 16G stor/k8s/coreos01
sudo zfs create -V 16G stor/k8s/coreos02
sudo zfs create -V 16G stor/k8s/coreos03

ネットワークインタフェース作成

bridge インターフェースはbhyve環境として準備されている前提。

sudo ifconfig tap create
sudo ifconfig bridge addm tap0

ignition ファイルを作る

  • fedoraCoreOSは初期設定を ignition ファイルで指定するらしい
  • yaml で書いて、butane というツールで json に変換するらしい
  • なぜ変換を介在させるのかはよくわからない
  • テンプレートエンジンを持っているとか器用なことができるわけではない

ファイルを用意

  • ssh 公開鍵を置く
    • 2つあるのはbhyveホストと普段の生活環境PCの分
  • IP アドレスを指定する
    • DHCP側でIPアドレスを固定できるならその方が楽かも
    • hostname って NetworkNodemanager の設定で指定できないの?
  • ファイルは http で公開する
    • 署名付き S3 とか
    • ローカルHTTPサーバとか
variant: fcos
version: 1.5.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAGbIdk/TcXdtEmKo7MgQGmhOKmaZgxGG8YXzWUP84yx1yI44YOlGUgSez4aR5JoJ40XdoyNJY6eJyN== BSD
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5A mac
storage:
  files:
    - path: /etc/NetworkManager/system-connections/enp0s2.nmconnection
      mode: 0600
      contents:
        inline: |
          [connection]
          id=enp0s2
          type=ethernet
          interface-name=enp0s2
          [ipv4]
          dns=192.168.3.1
          gateway=192.168.3.1
          address1=192.168.1.1/22
          method=manual

このファイルを butane で ign ファイルに変換する。適当に Linux VM を用意して実行する。

https://docs.fedoraproject.org/en-US/fedora-coreos/producing-ign/#_via_a_container_with_podman_or_docker

インストーラーの起動

こんな具合のスクリプトを使って Fedoracoreos のLiveDVDを起動する。 fbufのパスワードが指定してあるのは、指定なしだと接続できなかったため。mac の 画面共有アプリのせいなのかどうなのかは未確認。

while ループに入れているのは、ゲストOSの再起動時にも bhyve が終了してしまうので。bhyve の戻り値はゲストの終了の仕方によって決まっていて、再起動のときは 0 が返る。

CoreOS は自動で更新して自動で再起動するが、bhyveコマンドをループさせておかないとこのタイミングでVMが終了してしまう。

while [ $? -eq 0 ]; do
bhyve -A -H -P -c 2 -m 2048M \
  -s 0:0,hostbridge \
  -s 1:0,lpc \
  -s 2:0,virtio-net,tap0 \
  -s 3:0,virtio-blk,/dev/zvol/stor/k8s/coreos01 \
  -s 4:0,ahci-cd,/pub/ISO/Linux/FedoraCoreos/fedora-coreos-39.20231119.3.0-live.x86_64.iso \
  -s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait,password=pass \
  -s 30,xhci,tablet \
  -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
  fedoracore01
done

mac では 画面共有 (Screen Sharing.app) で VNC 接続できる。とりあえずは Installing CoreOS on Bare Metal に従ってインストールする。

https://docs.fedoraproject.org/en-US/fedora-coreos/bare-metal/

起動したらインストーラーコマンドを実行する。

sudo coreos-installer install /dev/vda \
--ignition-url https://s3.ap-northeast-1.amazonaws.com/ign.teak.jp/k8smaster01.ign?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAkaDmFwLW5vcnRoZWFzdC0xIkcwRQIh...

この後に続く kubeadm とかの設定が面倒そうだなぁ、と思っている。