名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

Python3.8をいれた

リリースされてた

Python Release Python 3.8.0 | Python.org https://www.python.org/downloads/release/python-380/

一応ローカルは pyenv ベースで管理しているが、PRが受け付けられたのがついさっきだったので、MacのHomebrewで試したけれども、まだ入らなかった。

PRはこれ https://github.com/pyenv/pyenv/pull/1416

普段リリースされてからどれくらいかかるのかわからないが、だいたい1日以内にはmasterにマージされるっぽい?のかなっていうのを掴む。

そのあと、最新版の pyenv を brew 経由で無理やり入れた。過去に自分で書いた記事が役に立った。

qrunch.net

[10/15 23:17:37] $ brew install --HEAD --force pyenv
Updating Homebrew...
Error: pyenv 1.2.13_1 is already installed
To install HEAD_1, first run `brew unlink pyenv`.
Warning: Skipping (old) /usr/local/Cellar/pyenv/1.2.13_1 due to it being linked

[10/15 23:18:34] $ brew unlink pyenv
Unlinking /usr/local/Cellar/pyenv/1.2.13_1... 4 symlinks removed
pyenv:11: command not found: pyenv                                                                                      

[10/15 23:18:45] $ brew install --HEAD --force pyenv
Updating Homebrew...
==> Cloning https://github.com/pyenv/pyenv.git
Cloning into '/Users/yumechi/Library/Caches/Homebrew/pyenv--git'...
==> Checking out branch master
Already on 'master'
Your branch is up to date with 'origin/master'.
==> src/configure
==> make -C src
🍺  /usr/local/Cellar/pyenv/HEAD-d6d6bc8_1: 656 files, 2.4MB, built in 27 seconds
Removing: /usr/local/Cellar/pyenv/1.2.13_1... (650 files, 2.4MB)
Removing: /Users/yumechi/Library/Caches/Homebrew/pyenv--1.2.13_1.mojave.bottle.tar.gz... (625.3KB)

[10/15 23:19:29] $ pyenv install 3.8.0
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.8.0.tar.xz...
-> https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
Installing Python-3.8.0...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.8.0 to /usr/local/var/pyenv/versions/3.8.0

無事インストールできましたとさ。

[10/15 23:34:10] $ python 
Python 3.8.0 (default, Oct 15 2019, 23:23:09) 
[Clang 11.0.0 (clang-1100.0.33.8)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 'aaaaa'
>>> if (n := len(a)) > 10:
...     print(f"List is too long ({n} elements, expected <= 10)")
... 
>>> n
5
>>> exit()

新機能はベータ版とかRC版の時点で、様々な人がQiita記事に色々書いてたのが見えたので、リリースノートと照らし合わせながらサンプルコードでも眺めてみようかな。

最近、家に眠っていたラズパイを取り出した話

なんか急に思い立って、家にあったRaspberry Pi 2 Model B+ を取り出し(古い)、なんか使えないかなーと思ってセットアップしてみた。

というのも、Raspberry Pi 4の発表を見て、スペックを見て、えっメモリ4GBもあるんか…(普通にワーカーとか、ちょっとしたアプリ動かすのに使いたい)となったので、やる気が急に出てきたという話です。技適も通ったという話が最近ではありましたしね。

www.raspberrypi.org

技適の検索はこれ。

https://www.tele.soumu.go.jp/giteki/SearchServlet?pageID=jk01&NUM=&NAM=%82q%82%81%82%93%82%90%82%82%82%85%82%92%82%92%82%99&FOM=&PC=&YAR_FROM=&MON_FROM=&DAY_FROM=&YAR_TO=&MON_TO=&DAY_TO=&RAD=00-00-00-00&TEC=1&TEC=2&TEC=3&TEC=4&TEC=5&TEC=6&TEC=7&SK=0&DC=0&SC=1&as_fid=d9eaa82597076b0e2ad67cda372a7ae296301e30#searchlist

なお、僕がやりたかったのはバッチサーバーみたいなのを立てておこうっていうモチベーションだったので、まだLチカもクリアしていません! 残念!(そのうちやります)

雑多なメモ

yumechi.qrunch.io

やったこと

Ubuntu Mate のダウンロード

とりあえずとっととつかいたかったので、Ubuntu系のディストリビューションを探したらUbuntu Mateがあるという情報に至ったので、調べる。

Mac Raspberry Pi Ubuntu Mate とかでググりつつ、下記の記事とかを見た。

ちょこちょこ自分のニーズに合わない部分もあったので、記憶を頼りにやったことを書く。

事前の買い物

色々機材が足りませんでした。特にMicro SDが切れていたのが痛い。ついでにSDカードをUSB経由で読み込めるようなやつを買った。(64GBのMicro SDがわずか1000円ちょっとであることに衝撃を覚えている(多分一番最初に買ったSDカード(Microではない)は、256MBとかだったと思う。。。))

HDMLとかマウスとかキーボードは予備があったのでそれを使った。ディスプレイは実は下記の小さいやつを持っていたので、ログ眺めればいいときはそれでログを眺めていた(最初だけ普段遣いの24インチのディスプレイで作業していた)(本音を言うと、3万円くらい出して薄型で建てれるようなやつを使うのが理想だと思う)

ってなわけで、やるぞ!って決めてから1週間位経ちました。幸いモチベーションが消えなかったのでよかったです。

OSを焼く

まずMicro SDをフォーマットします。

Macの場合はMicro SDを接続して、こんな感じのコマンド diskutil list で調べて、SDカードを特定します。で、 diskutil unMountDisk /dev/disk2 とかで消します。なお、消すディスクを間違えると大変なことになるので慎重に作業しましょう。

次に、 Ubuntu Mateのサイトにいき、必要なOSをダウンロードします。今回は Raspberry Pi (recommended) にしました。(多分Raspberry Pi2に対応してるのがこれだけ)

それなりに容量が多いので(数G単位)、時間がかかります。

ubuntu-mate.org

で、解凍して焼きます。 sudo dd if=ubuntu-mate-18.04.2-beta1-desktop-armhf+raspi-ext4.img of=/dev/disk2 bs=1m てな感じで。(bsの値はもう少し大きくしたほうがいいと思った)

自分の環境だとホストのマシンがよわよわMBAであることもあり、ここまで2時間位かかった記憶です。

OSを起動する

普通のMicro SDを取り外して、Raspberry Piに刺しなおして、各種ケーブル類をつないで、最後に電源をつなぎます。

であとは普通のLinuxのセットアップみたいなことをします。(キーボード、言語の設定など)

OSのアップデートとか

Linux入れたら基本だと思ってる作業。これくっそ時間がかかった。

sudo apt update
sudo apt upgrade -y

なお、 sudo apt upgrade -y はなんかエラーが出たので、下記を見て解決した。

bugs.launchpad.net

他にはSSHの設定とか。これが一番参考になった。

cutxout.hatenadiary.jp

日本語の入力周りはこれで良かった。

garabakos.sakura.ne.jp

あとはPyenv入れたり、Rust入れたりして便利なコマンドラインツールとかを入れた。

だいたいここまで2日くらいかかった。

今やらせていること

SlackBotを定期発火させるだけのものをおいている。

それ以上のことはしてないので、もう少し活かせると良いなと思う。

が、今色々考えた結果、現在のSlackBotではそもそもこの機構自体いらないのでは? という感じになってきて渋い顔になりました。

辛いこと

メモリが少ないので、GUI使うのはやや無理げ。CUIにしたらaptとかするのも2、3倍速になったのでGUIがいかにメモリをとっているか実感した。

あとRustのツールのコンパイルがうまく行かない感じ。メモリ不足のためか、コンパイルでコケる。

幸い、ARMアーキテクチャ向けのバイナリを配信しているプロジェクトはそれを落としてきて、パスが通る場所に置けばいいため、問題にならないが、そうでないものは入れるのすら難しい状況。

個人的に bat , exa, rg あたりは快適だと思っているのだが、このうち exa が入らなくてやや辛い。

あと starship/starship: ☄🌌️ The cross-shell prompt for astronauts. を入れようとしたが、これもコケたので断念。うーん、これも試したいのだが。。。

なおRustのクロスコンパイルができるようなやつがあるらしいのだが、Dockerが必須で、今自分のPCでDocker立てるのが厳しいので、まずメインマシンを新調してから考えることにします。。。

これからやりたいこととか

実は今住んでいるところ、部屋の温度・湿度がとても激しく変化するので、まずはセンサーで図ってその結果をSlackなりLINEなりに通知するものを作りたいと思います。

それが済んだらエアコンの操作させたりしようかなあ…。あとはなんか小さいデータマート作るとかかなあとか思っています。

でもなんか本当にバッチ動かすだけなら、Lambda使って、DBはFirebaseなりなんなりでごまかすとかやればそもそもDBいらないので、色々もやもやしています。そのうちそっちに切り替えるかも。

なのでやっぱりセンサー組み合わせて面白いものを作りたいですね。

Pythonでスクレイピングしようとして寄り道をしていた私用メモ

これをしたかっただけなのだが

yumechi.qrunch.io

どうせPythonでものを作る機会はこれからもあるだろうと思ったので寄り道してまとめた。

yumechi.qrunch.io

GitHubリポジトリはここ。今の所Pythonしか設定おいてない。そのうち真面目に他の言語とかでよく使いそうなものを突っ込むとかしたい。Devツール系だけ追加して、普通のものは普通に各プロジェクトで使えばいいと思う。

github.com

あとついでに調べてたこと。昔これで大ハマリしたので、多分相性悪目というか、Mypyでサポートできるのは標準ライブラリ+本当の意味でのメジャーなもの、な気がしている。 昔Pandasか何かの解析が一生通らず動かないというのを経験したので、なんかもうこれらはスルーするのが正解っぽく、小さいものであれば頑張って型をつけてPRを出してみるとかがいいのかもしれない。

もう少し詳しい人に教えてもらいたいところ。。。

yumechi.qrunch.io

で、スクレイピングしているものをそのうちBotに流せるようにしたいので、今はそのデータがちゃんと取れるよね?っていうのを検証しているところ。

データとっとと取って、連携するものに投げつけたいぞ〜。ということでモチベーションが高いうちに完遂したい。