各位好,感謝各位對於「夜市小霸王」的喜愛,由於目前公司越來越步上正軌,組織也不在只是我個人,因此我們決定搬家到自己的網站,這裡雖然不會關閉,但也不會再更新,希望大家能到新網站給我們支持喔。
另外一個原因就是這裡的廣告我們沒辦法控制,有時候廣告內容會讓人臉紅心跳~所以還是請大家移駕到我們的新網站
夜市小霸王:https://www.nmking.io/index.php/blog/
- 3月 26 週日 202311:54
夜市小霸王搬家了喔
- 1月 03 週二 202301:16
安裝apach, mysql, php及phpmyadmin,設定mysql root密碼失敗
今天在Ubuntu安裝系統,依照這四個網頁的教學分別設定apach, mysql, php, phpmyadmin
1. apach:https://ui-code.com/archives/179
2. mysql:https://ui-code.com/archives/293
3. php:https://ui-code.com/archives/286
- 11月 30 週三 202222:28
ubunut 中使用Anaconda Navigator GUI界面
Anaconda 是非常好用的虛擬環境管理工具,但是GUI圖形界面Navigator無法在ubuntu開啟,只能用命令來控制虛擬環境,對於熟習視窗作業系統的使用者界面來說有點不方便
不過後來查到其實是可以開啟的,這樣在教學上就方便多了。
開啟其實很簡單,利用命令
source ~/anaconda3/bin/activate root
anaconda-navigator
- 10月 04 週二 202202:32
ESP32中斷用法 attachInterrupt
當我們使用ESP32時,可以像傳統Arduino UNO使用中斷語法
中斷(Interrupt)這個功能,類似我們以前寫C#時的Callback,也就是物件導向裡面的事件(Event)驅動,當特定事件發生時,我們再去處理這件事所對應的功能Function。
舉個例子來說,在還沒學習到中斷以前,我們的來客報知機(人體感測器+錄放音機)是利用Loop內的不斷偵測,delay時間還不能太長,避免沒偵測到,而沒有觸發歡迎詞,但是如果來客報知機還有其他用途時,例如偵測光敏,就必須也寫在loop內,這樣兩個功能就可能互相干擾,delay時間可能不同之類。
中斷的功能則是把「偵測」、「觸發」的部份合併在一起,並且可以拉出去Loop外,讓系統來幫我們做,不過偵測只能數位偵測(HIGH或LOW),另外中斷內不放置Delay,越簡單越好。
以下範例程式,可以讓ESP32依據腳位14發生變化時,改變腳位2的燈號,例如當人體感測器發生變化時,會點亮LED燈。能偵測的變化有四種類型
- 9月 01 週四 202201:55
OCR好工具 Paddle 飛槳
最近在開發一些文字辨識的Python程式,用了EasyOCR或是Tesseract,效果說真的都很爛,無意間看到一個套件Paddle,測試一下發現效果非常好。
但是移植到其他電腦卻發現執行錯誤:
ModuleNotFoundError: No module named 'paddle.fluid.core_noavx'
稍微搜尋一下發現是CPU規格的問題,似乎是有些低階的CPU不包含AVX核心,所以一模一樣的安裝方法有些電腦可以,有些卻會出現問題,最好的方式是直接安裝不含AVX的2.0.1核心,安裝順序及步驟如下
- 8月 31 週三 202222:28
Ubuntu Chromium 亂碼
安裝好Ubuntu之後,習慣會安裝Chrome瀏覽器,目前在Ubuntu的Chrome是藍色的Chromium版本,可以直接用安裝方法apt方式安裝
sudo apt install chromium-browser
不過安裝好後,-發現中文變成框框的亂碼:□ ,類似下圖
查了下網路,解決方式也很簡單,以超級使用者開啟編譯器
sudo gedit
- 7月 31 週日 202214:11
磨難就是成長-人類的起源
在幾千萬年前,非洲的東岸有一群猴子,當時的非洲有著茂密的森林,因此猴子們愉快的生活在樹上,肚子餓就抓森林的昆蟲及果子來吃,而面對的掠食者也非常少,因此就這樣一直相安無事幾千萬年。
不過有一天發生大地震,地上裂開了一個大峽谷(東非大裂谷),硬生生的把東非切成兩半,由於地形發生變化,也嚴重影響當地的氣候,裂谷西半部的仍然中非大森林區,在此處居住的猴子們生活條件沒有發生變化,因此的生活方式依然跟千萬年一樣。
不過倒霉的是當時位在東邊的猴子了,森林逐漸消失,形成的是廣大無比的草原,猴子能棲身的樹木越來越少,食物也越來越匱乏,逼得這些猴子必須到地面尋找食物,而到了地面就必須面對獅子這種頂級掠食者,也讓這些猴子直立身體以觀察四周更早發現危險,而猴子間為了互相通知獅子靠近,發展出更多的群體溝通方式,逐漸形成早期的群體生活。
這些在東岸直立行走的猴子在當時可能會被全世界的猴子排擠吧。
西邊的鍵盤猴:「你看東邊那群猴子,用怪異的方式走路耶,笑死我了,上帝給我們四隻就是用來走路的,他們只用了兩隻,剩下兩隻不用是不尊重上帝賜予,會下地獄的」。
此時東岸猴子不僅要隨時面對獅子猛獸,還要到處遷徙尋找食物,相對於西邊的猴子食物充足每天悠閒著生活,真是充滿了苦難,不過呢,幾百萬年後,情勢逆轉了,由於東岸的猴子們必須每天跟自然對抗才能生存,因此更能適應環境,而解放的雙手也製造出更多的捕獵工具,成為比獅子更恐怖的頂級掠食者。
最後,他們踏出東岸,走向全世界,成為意義上的第一代人類。
而處在西岸的猴子們呢?經過了千萬年,他們依舊是猴子,生活在樹上。
- 7月 22 週五 202221:55
樹莓派自動執行Pytho程式碼
最近有一個案子使用到RPI,程式用Python寫的,不過如果RPI意外被關機,或者停電,那麼就要重新啟動我寫的程式,如果希望系統啟動時,能順便把Python程式執行就更好了,在Windows時代,我們可以找到一個「C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp」,把程式放到裡面就可以隨著Windows開機自動執行,那麼RPI有沒有呢?
一個朋友剛好也問我這個問題,我說我研究看看,但是過幾天他說他找到資料,並且傳網址給我,感謝您
網址:https://forums.raspberrypi.com/viewtopic.php?t=294014
上面網址有列出四個方法,我用的是「System Method」,也就是說,任何使用者登入,都會啟動。
步驟:
- 6月 25 週六 202223:41
Arduino的Split函數
Arduino雖然屬於C語言,但是很多副程式沒有包進去,最近要我拆解CSV檔案,也就是逗號分隔檔,發現Arduino沒有原生的split功能,本來想自己寫,但是Google一下就有了,在此付上
//此副程式用來拆解','分隔的字串
String getValue(String data, char separator, int index){
int found = 0;
int strIndex[] = { 0, -1 };
int maxIndex = data.length() - 1;
for (int i = 0; i <= maxIndex && found <= index; i++) {
if (data.charAt(i) == separator || i == maxIndex) {
found++;
strIndex[0] = strIndex[1] + 1;
strIndex[1] = (i == maxIndex) ? i+1 : i;
}
}
return found > index ? data.substring(strIndex[0], strIndex[1]) : "";
}
- 6月 18 週六 202213:03
申請SSL+自動更新
網路真的太方便了,以前SSL要錢,還要定時手動更新,現在使用免費的SSL :Let’s Encrypt不僅可以免費,還可以自動定時更新憑證。
以下測試環境是Ubuntu20+Apache2
1. 申請SSL
1.1 安裝certbot
sudo apt install python3-certbot-apache
1.2 申請SSL
sudo certbot --apache -d abc.com.tw <-這是你的網域名稱
此時會問一堆問題
包括你的Mail, 還有一些選項,可以參考我下面的寫法
最後會有一個選項要選1或2
1:保留80port做非加密,再新增443做SSL
2:將80Port強制轉址到443,也就是80port幾乎無法使用了。
我這裡選擇2,也就是說如果有人輸入http://mqttgo.io,就會直接變成https://mqttgo.io
如果你不確定的話,可以建議使用"1"。
