2023年1月1日 星期日
pyenv virtualenv 小記
markdown
工作機上面的 Ubuntu 預設裝 python 3.8,不過有個需求要跑在 python 3.9 上,就研究了一下將 python 升級的方法,然後才發現 python 要直接升級其實蠻麻煩的,用 pyenv 這隻工具還比較方便。
pyenv 可以讓使用者輕易的在電腦上裝不同的 python 版本,然後幫你管理,類似 node js 的 nvm 的功能吧。
過程中發現 virtualenv 這個套件,就順便研究一下,virtualenv 是用來隔離不同的 python package 的環境,例如建立了一個 virtualenv 環境後,在裡面用 pip 安裝各種第三方套件,都只會安裝在那個 virtualenv 環境中,只要離開該環境,就會像那些第三方套件沒裝過一樣。
pyenv 有一個 plugin [pyenv-virtualenv](https://github.com/pyenv/pyenv-virtualenv),裝完 pyenv 後預設就會有,可以直接用這個 plugin 來建立與管理 virtualenv 環境,不需要再額外裝 virtualenv。
可以用類似這樣的 command `pyenv virtualenv 3.8.16 myenv` 來建立一個 virtualenv 環境,然後可以用 `pyenv activate myenv` 來啟用這個虛擬環境。建立的這個虛擬環境的 python 版本是取決於現在 `pyenv version` 顯示的版本,也就是可以在 pyenv 安裝的不同 python 版本中建立 virtualenv 虛擬環境。
pyenv 還有一個蠻方便的功能是,可以直接在 .python\_version 檔案中寫入你想使用的 virtualenv 環境名稱,例如用 `pyenv local myenv` 寫入 myenv 到當前目錄下的 .python\_version,然後當你進入這個目錄時,不用 activate virtualenv,你已經自動進入了 myenv 這個虛擬環境,可以在裡面隨意安裝套件了。為什麼會這樣的原因,跟 pyenv-virtualenv 底層實現有關係,就不細講了。
用上面的方法,雖然進入了虛擬環境,但是 shell prompt 不會提示你現在在 myenv 虛擬環境中,可以用 `pyenv activate` 來啟用 shell prompt 提示,在[官網](https://github.com/pyenv/pyenv-virtualenv#activate-virtualenv)有教學在 .bashrc 中加一行指令可以讓你在進入目錄後自動 activate virtualenv,這樣可以看到 shell 提示,而且有些套件例如 jedi 需要你 activate virtualenv 後才能正常運作,所以 activate virtualenv 除了在 shell 增加提示外應該還做了一些其他事情。
不過官方的自動 activate 實現有點問題,啟用後會讓 shell 動作變慢,就是按下 enter 後要等一下才會有反應,所以我沒有啟用自動 activate,反正我只要進入目錄後就已經在虛擬環境中了,沒有 activate 只是沒有 shell 提示而已,如果真的有套件一定要 activate 才能用,再手動 activate 就好。
2022年10月28日 星期五
Ubuntu 上 USB 網卡斷線問題
markdown
家裡筆電換成 ubuntu 一段時間,最近原本用的好好的 USB 網卡突然開始瘋狂斷線,將網卡 off/on 後會回來,但是很快又開始斷。
花了好幾個小時,確認家裡分享器沒問題,網路沒問題,usb網卡沒問題,然後在[網上](https://askubuntu.com/questions/1044127/usb-ethernet-adapter-realtek-r8153-keeps-disconnecting)看到可能是因為網卡 driver r8152 不能 handle USB autosuspend,然後照著裡面解法,先裝好 tlp,然後在 tlp config `/etc/tlp.conf` 加上一行 `USB_BLACKLIST="0bda:8153"`,重開機,網路恢復了不再斷線。
其實從 windows 換成 ubuntu 後,三不五時就會發現一些小問題,然後就要花時間去查或避開,覺得有一句話真的說的對,
Linux is free only if your time is free
檔案系統對硬碟容量的影響
markdown
手上有個空的 1T 隨身硬碟,原本是 NTFS 檔案系統,硬碟容量是 932GB,可用空間也是 932GB,後來格式化成 ext4 之後,硬碟容量變成 916GB,可用空間變成 870GB,容量的差距太大,所以就查了一下為什麼會有這個差別。
首先是空的硬碟為什麼硬碟容量跟可用空間不一樣,是因為 ext 檔案系統預設會保留 5% 的空間,當一些極端情況發生時,還有空間來讓一些特殊程式可以運作。

這個保留空間可以關掉,在格式化時用 `-m 0` 參數就可以了。
再來看原本 932GB 怎麼在 ext4 上變成 916GB,因為 ext4 會預先將硬碟用到的 metadata ex: inode 保留出來,以 932GB 的硬碟來看,inode 大約就是 14GB,那 NTFS 應該就是沒有先把 inode 保留,所以才會有 932GB 可用空間。
---
[文件系统使用变长块的优缺点?](https://www.zhihu.com/question/51071915)
2022年4月6日 星期三
Arduino 燒錄 SAMD 系列 chip
markdown
最近在燒錄 arduino SAMD 系的晶片,想要直接將 bulid 好的 binary 檔燒錄進去不要透過 arduino IDE,有拿到一包 build 好的 binary 檔,包含 hex檔、bin檔、跟elf檔,不假思索的就將 hex 檔燒進去後就發現 arduino 死機了 COM port 出不來。debug 很久才發現,原來 SAMD 系的晶片,要燒進去的是 bin 檔才對。
幸好透過 reset button,還可以強制 arduino 進 bootloader 重新燒錄 bin 檔進去,燒進去後 arduino 就復活了。
---
* [Arduino_使用Bossa (類似Avrdude)來對SAMD系列的Chip直接燒錄](https://www.ntex.tw/3205.html)
2022年1月6日 星期四
DIY 換車子大燈
markdown
最近車子有一邊大燈 LED 壞了,上網查一下好像給店家換不便宜,就試著自己 DIY 了。原本的 LED 型號為 SS30,台灣買不到,而且價格不便宜要 65 USD,不知道前車主哪買的。
花了點時間搞清楚怎麼拆下跟安裝大燈後,就在蝦皮買了一個LED。這個 LED 的亮度跟瓦數都跟 SS30 差不多,而且長的跟 SS30 也很像,所以就買它了,而且才不到兩百塊錢。

這是拆下來的 SS30,除了 LED 外還跟著一個驅動器,SS30 支援有三種顏色,白色、暖白跟黃色,在六秒內關閉再打開,驅動器就會讓 SS30 切換顏色。可能是因為多了這個驅動器才讓 SS30 比較貴一點,但我覺得這個功能很沒必要。

兩個 LED 放一起,真的長很像,兩百塊的 LED,就怕耐用度很差,之前在社團看到有人推一個 400 塊的 LED 亮度有 5000LM,之後 LED 壞掉就來換那顆 5000LM 的 LED 好了。

2021年12月29日 星期三
Raspberry Pi samba v1.0 設定
markdown
最近買了一台米家攝影機,一開始都是把錄好的影片從 SD 卡直接 copy 出來,後來覺得 SD 卡一直插拔實在太麻煩,想說之前有一台樹梅派閒置一直沒在用,就拿來當 NAS 讓攝影機直接將影片傳到樹梅派上吧。
米家攝影機是透過 SMABA 將影片上傳到 NAS,所以樹梅派只要安裝好 SAMBA 理論上就可以讓米家攝影機連上並上傳影片,但是問題是米家是用 SAMBA V1,這是非常不安全的舊版協議(小米還在用 SAMBA V1 會不會太落伍阿=.=),樹梅派 SAMBA 安裝好預設是不開啟的 V1 protocol,所以米家看到了樹梅派的機器但是連不上。
上網查怎麼 enable SAMBA V1,加了很多指令到 `/etc/samba/smb.conf` 裡面,像 `client min protocol=NT1`、`ntlm auth=yes` 等等,試了好一會才發現只要加一行 `min protocol=NT1` 就可以了,玩 linux 系統就是這樣,遇到疑難雜症免不了要花很多時間去解。
不過設定成功後,現在米家攝影機自動把影片傳到樹梅派上,之後就可以直接抓下來看了,方便許多。

2021年11月30日 星期二
DIY 70邁pro 換電池
markdown
最近每次車子發動時 70邁pro 都會叫時間重置,上網查了一下應該是因為內置電池沒電了,於是上網買了個電池準備來更換一下。
網路上有很多 70邁pro 換電池的教學,找到一個影片就準備照著做了。步驟還蠻簡單的,只要將貼紙撕掉轉開兩個螺絲就可以將殼拔出看到電池了,如下圖。

換下來的電池,型號是 HMC1450。

在裝上新電池後,因為電池的 3pin 接頭卡榫不太好壓入,我用一個金屬翹棒去壓結果不小心讓電池短路小跳火了一下,還好電池沒壞掉。之後測試了一下已經不會再叫時間重置了。
其實 70邁pro 才買了大概兩年,沒想到這麼快電池就沒電了,不過當初也才花一千多,可以預期這種超低價產品裡面的電池也不會用多好的,還好它的設計可以讓人自行更換,換完電池就滿血復活。
訂閱:
文章 (Atom)