ブロックチェーンの問題 データの肥大化

ブロックチェーンは、ネットワーク上のフルノードで同じデータをもつことでデータの信頼性を向上している反面。 データが肥大化していく。フルノードはかなり大容量のメモリとストレージが必要になる。

考えられる対策 ・データを限りなく小さなものにする ・一定のデータは特定のノードにのみ保存される仕組みを作る。

など。

むずかしいなぁ。

第2章 開発環境のセットアップとPythonの基礎

2.1 Anacondaの導入

・Jupyter Notebookは、Python統合開発環境(IDE) ・ブラウザー上で動作する ・ビジュアル面が優れていて、機械学習のような試行錯誤が必要なプログラムの開発にとても便利

2.1.1 Anacondaのダウンロードとインストール ・Jupyterは単体でインストールすることもできるけど、統合パッケージの「Anaconda」としてインストールする方が手軽 ・仮想環境の構築、ライブラリのインストールや管理が行えるAnaconda Navigatorという便利なツールも動員しているので、開発のための環境が一気に出来上がる

第4章 プロジェクト計画 P97

プロジェクトマネジメントの基本が全部分かる本
第4章 プロジェクト計画 P97を読む

学べること * プロジェクトの方向性を決める計画の立て方
* プロジェクトの成否を握る座組のチェック方法
* QCD(品質・コスト・納期)の考え方
* 関係者で効率的な議論や情報共有をする仕組みづくり

現場で回避できること
* ヒアリングや検討が十分にできずに形だけの計画になってしまうこと
* 適切な座組ができずプロジェクトがうまく進まない
* QCDの優先順位を確認しなかったために後で調整が難しくなる
* 会議が多すぎて作業時間がとれない

大事だとおもったのでページに内容をまんま書いた

6月にTwitter APIからデータが取得できなくなった

SpringBootとNext.jsとKubenetesの勉強がてらこんなサイトを作っていたんだけど 6月にTwitter APIからデータが取得できなくなった

ラーメンツィ〜ト(仮)

ラーメンのお店の名前を含むツイートを定期的に取得して お店毎にランキング形式で表示するサイトだけど、 APIのプランが変わったらしくTweetが取得できなくなり、それから動かせてない。

今は手続きすればTweetを取得のは無料でできるんかな?

-- 8/20追記 FreeプランではTweetの検索はできないことがわかった。 TwitterのDeveloperポータルでFree Featuresに、Twitter Searchがない。

Freeプラン

BasicプランだとSearchがある

つまり100ドル払えば、Twitterの検索ができるのね。。ちょっと迷うなぁ

Kubenetes上のMy SQLが起動しなくなった

Kubenetes上のMy SQLが起動できなくなった。

Podを再生成して、すぐにエラーになってしまう。
最悪なことにエラーログも出ておらず 原因がわからない。

原因調査

手で動かして確認するのがいいんだけど、
起動すらしないのでどうしたものかと悩んでしまった。

どうにかする方法がないかとぐぐる
Kubenetes MySQLのPod(Yaml)ファイル 内にcommandを定義することで、
MySQLのDockerのCMD※を上書きできることがわかった。

※コンテナ起動時にデフォルトで実行するコマンド

MySQLのDockerファイル

CMDでmysqldコマンド(mysqlデーモン起動コマンド)を記載

ENTRYPOINT [ \
  "prehook", \
    "add-server-id.sh", \
    "--", \
  "/entrypoint.sh" \
]

CMD ["mysqld"]
Kubenetes MySQL Podファイル

commandを追加して、コンテナ起動時にはシェルを動かして待機するようにした。

  template:
    metadata:
      labels:
        app: mysql-master
    spec:
      terminationGracePeriodSeconds: 600
      containers:
      - name: mysql
        image: XXXXXXXX
        imagePullPolicy: Always
        command: ["/bin/sh"]
        args: ["-c", "sleep 600 && cat /var/log/mysql/mysql-error.log > /dev/termination-log"]
コンテナにログイン

kubctlコマンドでPodを再デプロイ→コンテナにログイン
コンテナに入れるようになった

#kubectl delete -f mysql-master.yaml
#kubectl apply -f mysql-master.yaml

#kubectl get pods
NAME                               READY   STATUS         RESTARTS        AGE
mysql-master-0                     1/1     Running        0               9m


#kubectl exec --stdin --tty mysql-master-0 -- /bin/bash
root@mysql-master-0:/# 
原因判明

MySQL起動コマンドを打ってみるが反応なし ログフォルダを確認してみるとmysql-error.log が出力されていた

root@mysql-master-0:/# mysqld
root@mysql-master-0:/# cd /var/log/mysql
root@mysql-master-0:/var/log/mysql# ls
mysql-bin.index  mysql-error.log 

mysql-error.logを確認するとスペースがないとログが出ていた。

root@mysql-master-0:/var/log/mysql# cat mysql-error.log 
.
.
2023-02-09T06:23:33.696585+09:00 0 [ERROR] [MY-012640] [InnoDB] Error number 28 means 'No space left on device'

df コマンドを打ってみると/var/lib/mysqlが100%になっていることがわかった。 KubenetesのPersistant Volumeの容量を使い切ってしまっていた。

root@mysql-master-0:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          95G   43G   52G  46% /
tmpfs            64M     0   64M   0% /dev
tmpfs            16G     0   16G   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/sda1        95G   43G   52G  46% /etc/hosts
/dev/sdp        3.9G  3.9G  288K 100% /var/lib/mysql
tmpfs           6.0G   12K  6.0G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs            16G     0   16G   0% /proc/acpi
tmpfs            16G     0   16G   0% /proc/scsi
tmpfs            16G     0   16G   0% /sys/firmware
解決

Persistant Volumeにパッチを当てて、容量を拡張

# kubenetes % kubectl get pvc
NAME                        STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
ramentweet-log-pv-claim     Pending                                                                        okteto-standard   203d
ramentweet-mysql-pv-claim   Bound     pvc-3a245f8b-1f10-48e8-b4ed-35673dc49beb   4Gi        RWO            okteto-standard   404d
# kubectl get pv 
Error from server (Forbidden): persistentvolumes is forbidden: User "system:serviceaccount:okteto:d54deb2f-213a-4b07-98d6-e4aaad41815b" cannot list resource "persistentvolumes" in API group "" at the cluster scope

# kubectl patch pvc ramentweet-mysql-pv-claim -p "{\"spec\":{\"resources\":{\"requests\":{\"storage\": \"10Gi\"}}}}"
persistentvolumeclaim/ramentweet-mysql-pv-claim patched

MySQL Podを再生成するとエラーにならず起動するようになった!

#kubectl delete -f mysql-master.yaml
#kubectl apply -f mysql-master.yaml

プロジェクトマネジメントの基本が全部わかる本

年齢も45歳になり、立場的に多くの人を関わることが当たり前になりました。

関わる人たちはそれぞれでプロジェクトに参加し、がんばっているけど、一筋縄ではいかないなと感じてます。

プロジェクトは、うまくいっていると楽しいし、うまくいってなければ楽しくないですね。

プロジェクトをうまくいかせるには何を気をつけないといけないのか。

やらないといけないことは何かを知っていることで成功率をあげることはできるかと思います。

でも、どうやってそれを知ればよいか、それを知るために

「プロジェクトマネジメントの基本が全部わかる本」を買ってみました。

しばらくこれの勉強をしてみようと思います。

【時短】Macですべてのアプリケーションを1クリックで終了する

アプリケーションをたくさん開いていて、
不要なアプリケーションを1つずつ終了させていくのは面倒。

そんなときに便利な技です。

やり方は、Automatorでアプリケーションを作るです。
プログラミングは不要です。

手順

アプリケーションから「Automator.app」を起動

Cmd + スペースでSpotlight検索から、
Automator」と打ち込んでも起動可能です。 f:id:rarao1048:20220409112401p:plain

起動したら書類の種類は「アプリケーション」を選択

f:id:rarao1048:20220409112447p:plain

アクションは ユーティリティ->すべてのアプリケーションを終了を選択。右側にドラッグアンドドロップする。

以下の画像のように設定 f:id:rarao1048:20220409111129p:plain

あとは保存して出来上がったファイルをクリックすると、動作します。