2023年7月7日 星期五
Ubuntu 20.04 + GT710 畫面撕裂
markdown
現在桌機配置是 ubuntu + GT710,在看影片時會有畫面撕裂的現象,用[這個影片](https://www.youtube.com/watch?v=MfL_JkcEFbE%EF%BC%89)就可以很清楚的觀察到,上網找了一下解法,在 Software & Update 的 addtional drivers 中可以發現 ubuntu 已經預設安裝了幾包的顯示卡驅動,不過預設使用的是 X.Org open source 的那一包,選擇 nvidia 470 proprietary 的那包驅動後,就沒有撕裂現象了
2023年3月29日 星期三
使用 Line notify 送訊息通知給自己
markdown
簡單筆記一下。
要用 line notify 送訊息會需要一個 token,正常會需要自架一個網站才能取得,不過如果是用開發人員選項取得自己的 token 的話就不用。
只要登入 line notify 網站(用電腦登入,用手機版網頁會看不到)後用開發人員選項取得 token,就可以用這個 token 送訊息給自己了。
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 才買了大概兩年,沒想到這麼快電池就沒電了,不過當初也才花一千多,可以預期這種超低價產品裡面的電池也不會用多好的,還好它的設計可以讓人自行更換,換完電池就滿血復活。
2021年11月29日 星期一
Github 改用 personal access token
markdown
最近某個很久沒用的 git 倉庫要 push 時跳出警告說 account/password 的方式已無法使用,需用 personal access token,就上網研究了一下要如何使用 personal access token。
personal access token 要在 github 先申請好,會得到一組字串,然後要將本地端 git 倉庫更新為使用 github personal access token,最簡單的方法應該是用[這裡](https://exerror.com/remote-support-for-password-authentication-was-removed-on-august-13-2021-please-use-a-personal-access-token-instead/)提到的使用 command 的方式。
git remote set-url origin https://<token>@github.com/<username>/<repo>我跑了這個 command 後就可以 push 了。 然後[這裡](https://iter01.com/611911.html)有說到如果是用 ssh 的方式的話不會受影響,我有其他倉庫並沒有跳出警告叫我使用 personal access token,應該是因為已經使用了 ssh。 --- * [[Solved] remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead](https://exerror.com/remote-support-for-password-authentication-was-removed-on-august-13-2021-please-use-a-personal-access-token-instead/) * [使用personal access token進行Github認證](https://iter01.com/611911.html)
2021年9月26日 星期日
[Android] Android studio emulator 踩坑
markdown
老樣子,android 踩坑日常。
在 android studio 中下載了 android 10 的模擬器,將模擬器開起來時出現了 error,原本出現的 error 是 Android Emulator closed because of an internal error,如下圖

在 [SO](https://stackoverflow.com/questions/67316340/android-emulator-closed-because-of-an-internal-error-gpu-found) 找到一篇解,在 C:\users\[user name]\.android 中新增一個檔案 advancedFeatures.ini,然後問題就變成開模擬器時跳出一個小 window 進度條然後卡住,基本上跟[這篇](https://stackoverflow.com/questions/66250313/android-emulator-not-responding-frozen)的問題一樣。
照著那篇的解去看 intel HAXM 有沒有安裝,是有安裝但是 android studio 有提示現在安裝的不是最新版,我更新到最新版,版本為 7.6.5。

更新到最新版後,`C:\Users\[user_name]\AppData\Local\Android\sdk\extras\intel\Hardware_Accelerated_Execution_Manager` 目錄裡的 intelhaxm-android 檔案不見了,但是模擬器可以開起來了,所以 intel HAXM 跟模擬器也有匹配性問題,版本不對也會造成模擬器卡住開不起來。
最後,我的模擬器原本是開得起來的,不知道為什麼突然開不起來了,猜可能是因為 android studio 更新造成的。
---
* [Android Emulator not responding - frozen](https://stackoverflow.com/questions/66250313/android-emulator-not-responding-frozen)
* [Android Emulator closed because of an internal error: GPU Found](https://stackoverflow.com/questions/67316340/android-emulator-closed-because-of-an-internal-error-gpu-found)
2021年9月4日 星期六
[RF] Return loss and S11
markdown
RF 訊號傳輸中,會因為阻抗不匹配或是不連續導致 RF 訊號能量被反彈回來,原始 RF 功率減掉被反彈回去的 RF 功率就是 return loss。
雖然 return loss 聽起來會讓人以為它的定義像是被反彈回去的功率,這比較容易讓人誤解,但是正確的定義確實是
正常傳輸的功率 - 反彈回去的功率數學上的表示則是
RL(dB) = 10log(Pi/Pr)Pi 為正常 RF 功率,Pr 為被反彈回去的功率,所以一般來說我們希望 return loss 越大越好。 S11 跟 return loss 其實是指一樣的東西,不過它跟 return loss 差了一個負號,S11 = -(return loss)。所以當我們說 S11 的時候,我們希望 S11 越小越好。 --- * [return loss 回波损耗越大越好还是越小越好?](https://www.zhihu.com/question/24240508) * [什么是插入损耗和回波损耗?](https://fiber.ofweek.com/2020-06/ART-210001-11000-30444667.html) * [Understanding VSWR and Return Loss](https://www.youtube.com/watch?v=BijMGKbT0Wk) * [反射率 S11 實測-同軸電纜/終端電阻 在Smith Chart長甚麼樣子](https://www.strongpilab.com/s11-measurement-cable-terminator/)
2021年8月28日 星期六
[RF] 阻抗匹配 50 歐姆
markdown
在做 RF 的時候,常常會聽到一些討論,例如阻抗是不是 50 歐姆,有沒有阻抗匹配,一直以來其實都不知道這是甚麼意思,在聽別人解釋時也一知半解,於是決定好好惡補一下。
這個 50 歐姆的物理意義,跟平常我們用三用電表量出的歐姆是不一樣的,而且用三用電表也量不出來。其實它叫做特性阻抗,或是瞬時阻抗,是表示非常小的單位時間內,電子在傳輸線中行進的距離所遇到的阻力,這個阻抗值的大小是跟傳輸線的材質和截面積有關,與傳輸線長度無關。
RF 訊號在傳輸時,若是某一段路徑的特性阻抗跟前一段不一樣,那就會有部分的 RF 訊號被反彈回去,持續向前傳輸的能量就減弱了,所謂阻抗匹配,就是指 RF 訊號傳輸路徑都是固定的特性阻抗值,例如最常見的 50 歐姆,這時 RF 訊號在傳輸過程中能夠保存最多的能量傳輸到目的地。
而為什麼是 50 歐姆,其實是人為選定的結果,科學家們經由一傳串的實驗發現,在 29.6578 歐姆時,同軸纜線能傳輸的功率可以達到最大,但是對線體的損耗也大,在 76.3779 歐姆時,對線體的損耗最小,但能傳輸的功率也小,於是在傳輸功率與線體損耗的平衡考量下取折衷就是 50 歐姆了。
---
* [Characteristic Impedance](https://www.oldfriend.url.tw/SI_PI/ansys_ch_cha_impedance.html)
* [終於有人講明白了什麼是特性阻抗什麼是阻抗匹配~~~](https://kknews.cc/zh-tw/news/eylegbq.html)
* [射频工程师必知必会——为什么是“50欧姆”?](https://mp.weixin.qq.com/s?__biz=MzIwODc4NzE1OA==&mid=2247487097&idx=1&sn=ea625bb2c49b408c9fff4e2cba5c3b07&chksm=977c8dc0a00b04d634da19e8c1e453352e8f2f02df2a45a58489cb78849c883d0b63c11478ef&scene=21#wechat_redirect)
2021年6月13日 星期日
Visual Studio 2015 Community Update 3 坑爹的問題
markdown
最近遇到的一個坑爹的問題,就是發現 visual studio 的測試總管中,沒有顯示我的測試方法,像下圖一樣,甚麼都沒有。

我試著執行測試,是可以執行的,只是也沒有顯示任何測試結果。一開始我先在 google 盲目搜尋,找了一些解法。
例如[安裝 MSTest.TestAdapter](https://stackoverflow.com/questions/42861930/unit-tests-not-discovered-in-visual-studio-2017/44338786#44338786),沒用,這個解法是要解決 VS「找不到」測試方法的問題,但我發現我的 VS 的 log 顯示它有找到我的測試方法,但就是沒顯示出來。
還有說刪除 [%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache](https://stackoverflow.com/questions/25304425/visual-studio-2013-doesnt-discover-unit-tests) 路徑就好的,也是沒用。
然後我發現 VS 會顯示一個錯誤,看起來跟測試有關。

就以這個組件名稱當關鍵字搜尋,然後就找到 [microsoft forums](https://social.msdn.microsoft.com/Forums/sqlserver/en-US/04be3174-4811-4f35-930a-d1766e4d8b3a/my-uni-tests-disappeared-after-updating-visual-studio?forum=vsunittest) 的一篇討論,這裡有人也遇到一樣的問題,而且他的 VS 版本跟我一模一樣,我也是 14.0.25424.00 Update 3。

這個人他說了,他發現這個問題只有在非英文版的 VS 才會出現,他裝的是德文版,而且只要把 `C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\de` 目錄改名,問題就解了。
我裝的是中文版 VS,在我的電腦中,路徑是`C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\zh-Hant`。
這個資料夾裡面放了很多 Microsoft.VisualStudio.TestWindow 開頭的 dll,而且從資料夾的名稱和路徑看起來,這裡面應該是用來支援不同語言包的測試相關的組件。我試著把資料夾改名,的確測試總管就找到我的測試方法了,不過 UI 變成英文的。

到這裡整個情況就很清楚了,原本我的測試總管沒有顯示測試方法,是因為 VS 預設安裝的測試總管用來顯示中文介面的語言包組件有問題,把資料夾改名了之後,他用回英文的語言包組件,就可以正常顯示了。
本來這樣也是可以用了,但這個討論串裡有個好心人把各種語言的正確語言包組件附上了,為了怕這樣的好東西之後連結失效不能用了,我也放到我的 blog 中。
[下載連結](https://drive.google.com/file/d/1K7bB1KsxyVc8n3IhpcX_kVoD0rTNE0Er/view?usp=sharing)
出問題的就是 Microsoft.VisualStudio.TestWindow.Core.resources.dll,我將上面語言包 CHT 內的 dll 覆蓋掉 VS 預設安裝的,測試總管就可以正常顯示,而且是中文介面。

至於該討論串中微軟的人後來提供的解法,也就是移除 KB3165756 (visual-studio-2015-update3),我就沒試了,因為從這個 KB 名稱來看,移除就是把整個 update 3 移除了,可能會移掉一些有用的東西。
---
* [My uni tests disappeared after updating Visual Studio](https://social.msdn.microsoft.com/Forums/sqlserver/en-US/04be3174-4811-4f35-930a-d1766e4d8b3a/my-uni-tests-disappeared-after-updating-visual-studio?forum=vsunittest)
2021年6月12日 星期六
[Android] Dialog 背景 DIM 效果
markdown
FAB 有個常見的效果時,顯示 FAB 菜單的時候,background 會變暗,想研究一下這個效果要怎麼達成,第一個想到的是,這個效果跟 Android 顯示 Dialog 的時候很像,就想看一下 Dialog 是怎麼做到這件事的,看能不能將 Dialog 的作法借用過來。
經過一些 study 後,發現 activity 其實會對應到一個 window(window 的意義是甚麼以後有機會再說吧),系統會將 window 關連到的 View 繪製在螢幕上,而 Dialog 會在其內部建立一個新的 window,這個 window 位置會疊在 activity 的 window 之上(造成 Dialog 的懸浮效果),Dialog window 的 background 是透明的,並且將這個 window 的 dimAmount 設置為 0.6 來達成背景變暗的效果。
這個方法是蠻方便的,不過不適合用在 FAB 菜單顯示,總覺得不需要再建一個 window,而且還要處理 window 間的事件傳遞,也比較麻煩吧。
---
* [關於給Dialog設置setCanceledOnTouchOutside(true)後如何監聽Dialog消失](https://blog.csdn.net/qq_16247851/article/details/72794409)
2021年5月29日 星期六
[Android] SharedPreferences string set 的坑
markdown
之前曾經遇過一個問題就是用 SharedPreferences 儲存 string set,我已經呼叫完 commit,但是 app 關掉重開之後,卻發現 string set 卻沒有寫入到,當時一直沒搞清楚是甚麼問題,最近偶然看到原來用 string set 有這樣一個坑,值得在這裡紀錄一下。
當時一直在想是 putStringSet 出了甚麼問題,但問題是出在 getStringSet return 的 string set,不能直接將資料加到這個 string set 傳給 putStringSet,因為 putStringSet 會比較傳進來的 string set 與 getStringSet return 的是不是同一個 object,如果是則不做任何動作。
這可能是為了效能考量,但其實挺違反直覺的,不注意真的很容易踩坑。
---
* [Misbehavior when trying to store a string set using SharedPreferences](https://stackoverflow.com/questions/14034803/misbehavior-when-trying-to-store-a-string-set-using-sharedpreferences/14034804#14034804)
* [Android: String set preference is not persistent](https://stackoverflow.com/questions/16820252/android-string-set-preference-is-not-persistent)
* [What's the difference between commit() and apply() in SharedPreferences](https://stackoverflow.com/questions/5960678/whats-the-difference-between-commit-and-apply-in-sharedpreferences)
2021年5月23日 星期日
windows git bash 遇到 cp950 顯示亂碼問題
markdown
最近在 windows git bash 遇到執行程式時中文顯示亂碼的問題,但是在 windows cmd.exe 卻可以正常顯示,例如下圖用 ping 指令,當用 Ctrl-C 結束執行時,windows git bash 顯示亂碼。

為什麼會這樣,可以先來做一個實驗,將下面的程式用 cp950 的編碼儲存為 a.cpp 檔案。
#include <cstdio>
int main()
{
printf("中文");
return 0;
}
然後我們用 cl.exe 編譯這個程式,如果檔案編碼的確是用 cp950 儲存,編譯器不會有警告,反之則會有警告。

然後在 windows cmd.exe 跟 windows git bash 中執行編譯好的執行檔,會發現跟上面的 ping 指令一樣,windows cmd.exe 正常,windows git bash 亂碼。

究其原因,是因為 windows git bash 預設是使用 utf-8 編碼,當它遇到 cp950 編碼的中文,不知道怎麼顯示,於是就變亂碼,而 cmd.exe 預設就是 cp950,所以可以正確顯示。
windows 一些老舊的內建程式還在使用 cp950 輸出文字,例如上面的 ping 指令,如果每次要用到這些指令就要切到 cmd.exe,實在太麻煩了,不過還好 windows git bash 內建的一個工具 winpty 可以很好的解決這個問題。
[官網](https://github.com/rprichard/winpty)上對 winpty 的描述如下。
winpty is a Windows software package providing an interface similar to a Unix pty-master for communicating with Windows console programs. The package consists of a library (libwinpty) and a tool for Cygwin and MSYS for running Windows console programs in a Cygwin/MSYS pty.可以看到,其實 winpty 的本職工作是在 windows 上做一個類似 linux 虛擬終端的,只是剛好它有將 cp950 轉為 utf-8 輸出的功能而已。關於虛擬終端是甚麼,超過這裡討論的範圍,想了解的可以看[網上這篇](https://zhuanlan.zhihu.com/p/61369678)有詳細的講解,不想了解的也沒關係,只要知道它能幫我們解決windows git bash 遇到 cp950 的亂碼問題就好。 使用方法只要將指令放在 winpty 後面就可以,如下圖所示,可以看到用 winpty 之後 ping 指令就可以正常顯示中文了。  --- * [winpty github](https://github.com/rprichard/winpty) * [Cygwin系列(十一):折騰終端2](https://zhuanlan.zhihu.com/p/102393122) * [Linux Cygwin知识库(一):一文搞清控制台、终端、shell概念](https://zhuanlan.zhihu.com/p/61369678)
2021年5月15日 星期六
Firefox 的開發者工具
markdown
最近有個爬網站的需求,就花了點時間研究一下有甚麼工具能幫助來 trace 網頁,發現 firefox 內建的開發者工具就是一個很好用的 tool,現在最常用到開發者工具兩個主要功能,來稍微介紹一下
一個是查看 html 的 DOM 結構,這裡查看的 DOM 結構不是單純看網頁原始碼可以看出來的,因為現在的網頁很多都是後來再用 javascript 處理過資料再呈現出來,開發者工具的 [Page Inspector](https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector) 可以讓你查看經過 javascript 處理過後實際呈現在使用者眼前的 DOM Tree 還有各種 DOM 節點內的屬性。
第二個是用開發者工具的 [JavaScript Debugger](https://developer.mozilla.org/en-US/docs/Tools/Debugger) 來 trace 網頁中的 javascript。裡面有一些好用的功能例如將 minify 過的 javascript 重新排版,或是設定 breakpoint,也可以單步執行。
這兩個功能對 trace 網頁內容幫助很大,但是現在的網頁有很多其他厲害的方法去防止你爬它們網站,例如每次自動生成變數跟函數名不同的 javascript 檔案,讓你就算可以 trace,或是要寫程式去爬時也要花非常非常大的時間與精力,這個可能就只能靠經驗與熟練度來克服了。
2021年4月18日 星期日
DIY 修鞋
markdown
最近球鞋開口笑了,只是中間一部分開口而已,鞋頭鞋跟都還沒脫落。

因為其實很少打球,所以這雙鞋使用頻率不高,可能是單純時間久了就脫膠了,外表跟鞋底其實還蠻新的,想說這樣就報廢很可惜,就想著要自己來修復它。
上網看了一隻影片就買了砂紙跟南寶樹酯105準備開幹,先把鞋墊拆下來,準備磨掉殘膠後再黏起來。

不要看殘膠好像一點點而已,實際清起來才發現,砂紙根本沒甚麼屁用,殘膠就像黏力比一般口香糖強 100 倍的鼻屎(顏色很像),磨到手斷了可能還沒清完,後來又去五金行買了鋼絲刷跟矬刀,死命的刷,去掉半條命了才把鞋子底部的殘膠清了大半。
後來脫落的黑色鞋底殘膠就隨便弄一下,沒清乾淨也沒力清了,就把鞋子黏合了。黏起來後用鎚子打緊,感覺還黏的蠻緊的,接著就之後去打球試用看看了。
這次 DIY 修鞋的心得就是,家裡沒有電動工具例如砂輪機的,就不要自己修了,不要看網路上教學用砂紙就可以清,會清到你懷疑人生,不然就是給外面專業的修,該給人賺的還是要給人賺 ˊ_>ˋ。
2021年4月2日 星期五
電風扇上油保養
markdown
最近變熱了,晚上睡覺都會開電風扇,昨天發現電風扇不會轉了,而且會發出刺耳的摩擦聲,應該是油又乾掉了,記得上一次上油大概是兩年前,也撐夠久了,今天就再來上油吧。
要上油就要先把電風扇拆成這個樣子。

接著把油點到軸心部位,我是用黃油混針車油點進去,因為之前有試過只加針車油,但是太稀了大概一兩個月就沒效,但黃油又是膏狀不好作業,就把兩個混起來用了。
點完用手試著轉動,感覺有變順一點,把風扇裝回去,插上電源一試,又順暢的轉動了!這台便宜的小電扇大概有十年以上的歷史了,但稍微上油保養一下,又可以再戰,感覺 CP 值真的很高。
訂閱:
文章 (Atom)