樂園日記
相關資料統計表
向量浮屠
大航海時代online手札
2020年10月8日,星期四
21:48:13

這篇算是2020-10-05把樹莓派弄掛的後續處理。

因為是安裝ClamAV的關係,導致系統太忙碌的問題,所以把ClamAV的啟動移除掉,即可。方法就是,找個Linux平台或是在Windows、MACOS下掛載該SD卡,把ClamAV相關的檔案,從掛載的目錄下移除(/etc/systemd/system/multi-user.target.wants),再把該SD卡移回樹莓派,問題就解決了。


2020年10月5日,星期一
14:4:21

為了讓ClamAV可以在3310埠上運作,結果把整個樹莓派弄掛了!

還好之前有備份的SD卡,直接把備份的SD換上,不然光是環境設定,大概又要花掉一整天。

只是上次備份後,樹莓派的環境還是有些小變動,還是需要手動把這些變動完成。


2020年10月4日,星期日
21:46:59

隨著mail server的架設完成,舊有的論壇功能也隨著恢復起來,能發email是很重要的,因為論壇的身份認證都依賴電子郵件。

雖然PHP Mail函式不支援新一代的電子郵件認證等規格,雖然可以使用PHPMailer來支援新一代的電子郵件服務,但需要改寫程式碼!想抄捷徑,方法就是設定區網,讓區網內可以不需要認證寄信,也就是Open Relay。

19:8:9

郵件伺服器2020設定重點:

  1. 設定IP反解,即PTR Record(rDNS),以Hinet來說,設定後需24小時,方能生效。
  2. DNS伺服器設定SPF Record。
    SPF(Sender Policy Framework),由RFC 4408定義,用來防止偽造身份網路釣魚或寄出垃圾郵件。
  3. DNS伺服器設定DKIM。
    DKIM(DomainKeys Identified Mail),以public key方式提供數位簽章與身份驗證,檢測郵件相關內容是否被竄改或是偽造,2007年2月成為標準。
  4. DNS伺服器設定DMARC。
    DMARC(Domain-based Message Authentication, Reporting and Conformance),主要目的在於了解是否有第三方偽造網域身份寄出電子郵件的回報管理機制。
  5. 郵件伺服器設定SSL憑證。
    這個年代,沒有加密的話,大概就是光著屁股跑全世界啦~
    可以使用Let's Envrypt提供的SSL憑證。

這與1995那個年代,只要把DNS伺服器MX搞定,郵件伺服器域名、帳號設定好加上避免Open Relay,多了很多細節。最主要的目的在於避免垃圾郵件,強化管理與安全。


2020年10月3日,星期六
21:58:32

PHPMailer 6.1,在中文的使用上有幾點需要注意的,避免亂碼:

  1. 修改原始程式碼「PHPMailer.php」,把send函式在try之後增加一行,$this->CharSet = 'UTF-8';
  2. 寄件者與主旨,前綴需要加上'=?utf-8?B?',並以base64_encode編碼之後,後綴增加'?='。

這樣利用Gmail來發信,中文就正確無誤了,只不過在Gmail內要先設定為低安全應用程式,才可正確送信!免費的Gmail帳號,每日可發送500封,G Suite的付費帳號每日2000封。如果需要更大的發送數量,可以考慮和Google搭配的Mailgun或其他第三方的服務,像是Sendgrid。如果發送的數量實在龐大,又不想付費的話,那就需要固定IP,把DNS反解設好,自己架Mail Server啦。


2020年10月1日,星期四
22:23:21

昨天才剛說Blank Page的問題,今日就發現問題點,排除了!

問題出在php的執行記憶體的大小,用預設值,因為不夠用,要刷新多次後,才能觸發記憶體釋放的動作,把php的執行記憶體往上調,問題就解決了。

當然啦,會發生這樣的問題,另一個因素是直接使用3rd的元件,沒注意到該元件太消耗記憶體。

再加上把error_reporting設為0!因此,發生了什麼樣的錯誤都不知道,只看到一個空白的頁面,這就是Blank Page的原因。

18:25:19

如果資料表龐大,有時候要抓出問題點還真不容易,這時候,就要把所有新增、修改與刪除的資料通通都記錄下來!

只是資料表眾多,欄位眾多,手動寫程式碼來抓,還真的不知道哪年哪月呢?於是,自動產生紀錄資料的的程式碼產生器誕生了。

針對MariaDB或MySQL,只要指定好資料庫的名稱,就會產生對應的紀錄資料庫與所有的程式碼,這樣一來,不管是哪一筆資料被新增、修改或刪除,在紀錄資料庫內都可以看得清清楚楚。

當然,如果您需要Oracle、MS-SQL、或是PostgreSQL類似的紀錄資料庫功能,歡迎來信詢問。

14:34:36

嘗試以ProxyReverse多機的方式,恢復以前舊有的論壇服務。


2020年9月30日,星期三
23:9:43

不知道是不是樹莓派計算能量的問題,還是設定檔的問題,總是有Blank Page的問題!

於是,只好把youtubelist移回Apache2,由Apache2來服務。

18:25:9

在資料層就把一些相關的資料邏輯處理完畢,是最直接不過的,比如說,當某個資料表的欄位有更新時,就要把對應的時間欄位也跟著更新一下。

以下是一個MariaDB(MySql)建立觸發器(Trigger)的樣板:

DELIMITER $
 
CREATE TRIGGER `trgUpdateTableNameAnditsField` AFTER UPDATE ON `theTableName`
 
  FOR EACH ROW BEGIN
 
    UPDATE `theTable` SET `theField` = NOW() WHERE `keyField` = keyFieldValue;
 
  END
 
$
 
DELIMITER ;


2020年9月28日,星期一
22:18:12

翻譯的字典資料同步自動化,之前因為需要了解各項翻譯資料的準確性,手動同步了好一段時間,今天正式將之自動化。

當然,人工確認翻譯資料的正確性,還是需要的,本項自動化的目的在於降低人工維護多主機的字典資料的繁瑣,無論何時字典檔資料有更新,其他電腦也能隨之自動更新,不需要手動匯出與匯入。


2020年9月26日,星期六
19:39:0

Google Cloud 使用 curl 來進行 ftps 檔案上傳時,會發生「NSS錯誤-5938(PR_END_OF_FILE_ERROR)」

解決辦法如下:

sudo yam install gcc

sudo yum install wget

sudo yum install gnutls gnutls-devel libssh2 libssh2-devel

wget https://curl.haxx.se/download/curl-7.54.0.tar.gz

tar -xvzf curl-7.54.0.tar.gz && cd curl-7.54.0/ ./configure --with-gnutls --with-libssh2 --prefix=/usr/local

make

sudo make install

sudo rm /usr/bin/curl

sudo ln -s /usr/local/bin/curl /usr/bin/curl

16:56:45

Python把「共用變數放到同一個檔案」

1.建立一個叫做「dbConfig.py」的檔案,內容如下:
#!/usr/bin/env python3
HOST             = "yourComputerIPOrName"
USER              = "dbUser"
PASSWORD = "dbPassword"
DATABASE   = "dbName"

2.在需要引入上面建立的檔案,可用:
from dbConfig import *

來引入所有在「dbConfig.py」所有的變數,
這種引入的方式,可以直接使用變數名稱。

3.另一種引入的方式,如下:
import dbConfig

但這種方式,在需要使用變數名稱時,需要再加上
dbConfig. 的前綴,就就是變成
dbConfig.HOST
dbConfig.USER

當然,可以使用AS來簡化前綴,如下範例:
import dbConfig as db

要使用變數的名稱,則可簡化為:
db.HOST
db.USER
 


2020年9月25日,星期五
18:15:40

看到螢幕上噴出來的錯誤,才想起目前資料庫的watch code是另外一個頻道的,就是當初測試自動轉錄上傳的頻道!

趕緊修正資料庫的相關欄位和程式碼。


2020年9月24日,星期四
21:8:9

EEE64變更網路連線方式。

19:27:18

雲端主機新增一支程式,用來重設上傳失敗的轉錄檔案,若已經重設,則刪除該轉錄檔案。

每次只要雲端主機出問題,手動重新上傳檔案自是免不了,只是每天有上傳額度的限制,需要計算好重傳的檔案數,才不會出問題。檔案數量一多,就變成天天要定時手動重傳!

在這樣的情況下,乾脆寫支程式來克服這個問題。


2020年9月23日,星期三
19:15:36

EEE變更網路連線方式,其中一個wifi網卡連線改為有線網路,保持穩定性。

有時候,還是只能用回老方法,才是最穩定的。


2020年9月14日,星期一
14:50:1

把 ubuntu 20.04 desktop 當作桌面,發現了一些問題。其中最嚴重的問題,就是使用一段時間後,滑鼠會當掉!

查了資料之後,原來這是藍牙的問題,使用下面指令來修正:

sudo rmmod btusb
sudo modprobe btusb
sudo /etc/init.d/bluetooth start
sudo systemctl enable bluetooth

以上的指令就是把藍芽模組先移除,再重新掛上、重新啟動藍芽的服務並開機時啟動之。

果真,滑鼠再也不當了。


2020年9月13日,星期日
7:19:51

ubuntu 20.04 以下列指令安裝音效輸入切換之後,就有聲音了:

sudo apt-add-repository ppa:yktooo/ppa -y && sudo apt-get update && sudo apt-get install indicator-sound-switcher -y

2020年9月10日,星期四
13:13:13

樹莓派2B自啟用以來,SSH與XRDP伺服器會掛點,是件很討厭的事情,不過也沒時間去找問題,直到最近。

原來,這個問題在早期的樹莓派上很常見,原因在韌體與核心的搭配。那就更新一下,應該再也不會出現問題了吧!

更新指令參考如下:

sudo apt-get install rpi-udate

sudo rpi-update

sudo shutdown -r now


2020年9月8日,星期二
20:4:44

樹莓派4B4G,早在一開始出來的時候,就已經購買,但卻一直沒想好要拿它來做啥,因此就一直放著,一直到最近想要把Youtube的字幕自動化,才把它拿出來。

樹莓派隨著社群廣泛的應用,也不是當年的阿蒙,兩年前的安裝方式,說真的已經不適用!因為官網已經針對三大平台,MacOS、Linux、Windows提供了應用程式,只需下載該應用程式,就可以很容易初始化SD卡,將需要的作業系統寫入,省去了下載第三方應用程式與下指令的瑣事,這是很大的方便。

再者,只要把寫入Raspian的SD卡,加上ssh與wpa_supplicant.conf兩個檔案,就可以使用遠端ssh方式連入,方便度更是大幅度提升,不需要刻意另外找螢幕、鍵盤、滑鼠。

ssh檔案的內容可以是空的,只要SD卡上有ssh這個檔案即可。

以下是的範例檔案:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=TW

network={
    ssid="這邊改成您的無線分享器名稱"
    psk="這邊改成該無線分享器的密碼"
    key_mgmt=WPA-PSK
}

 

如果使用5G的頻道,wpa_supplicant.conf範例如下:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=TW
freq_list=5745

network={
    ssid="這邊改成您的5G無線分享器名稱"
    psk="這邊改成該5G無線分享器的密碼"
    key_mgmt=WPA-PSK
}

如果上述的5G頻率與無線分享器不一樣的話,可以先連到非5G的SSID,然後再以下面的指令確定5G頻道的使用頻率:

sudo iw wlan0 scan | grep -A5 'freq: 5'

確認5G的頻率之後,再把freq_list改為上面指令查到的數值。

可以改用USB SSD開機,對於有支援USB3的樹莓派4B來說,不再受限SD卡侷限的空間之外,更提升了存取的效能,對於一些需要效能與空間的應用,像是萃取影片字幕檔的應用,真是太棒了。不過,在轉換SD為SSD開機的過程中,有一點需要注意的就是,寫入開機韌體時,必須要把外接的SSD拔除,特別要注意這一點


2020年9月6日,星期日
20:13:26

最近這幾天發現某台伺服器的CPU負荷竟高達100%,查了查,才發現是因為天氣預報的程式,因為SSL的更新,造成無法連線的問題而懸置!

雖然調整了程式碼,但一直出現 dh key too small 的問題,只好用python重新寫過。因為VSCode對python的cli偵錯很方便,但PHP就沒這麼便利。

好笑的是,在macos與windows下,新寫的python程式碼可以正確運行,但只要換到reaspian上,一樣是dh key too small!

還好python還找得到方法,可以克服dh key too small的問題,請參考https://www.coder.work/article/367421


2020年9月2日,星期三
6:25:17

Apple Vision Framework終於克服一些小細節,可以在MACOS上做文字辨識。

但很可惜的是,目前只支援["en-US"],不過,可以當成另類的車牌辨識的核心喔~(測試車牌圖片來自Google圖片搜尋車牌)


2020年9月1日,星期二
20:11:52

這幾天都在測試OCR的方案,像是被視為已經老舊的tesseract(正確性不高,若要實際應用,需要自行訓練與標記),到Google的Vision API(需要花費,前一千次免費,之後每千次,1.5美金),再到Apple的Vision Framework(僅限iOS與MacOS),試圖找出一個正確性高,成本低廉且跨平台的解決方案方案。


2020年8月28日,星期五
16:44:36

接下去,一方面要趕著寫影片自動上字幕檔的程式,一方面要與Youtube Data API Quota Team的增額打交道,衝啊~~~


2020年8月25日,星期二
14:53:53

昨天深夜,上線新的翻譯模組,因為更新了相依的libraries,反而造成了無法正確上傳的錯誤!而反覆測試的結果,用光了每天上傳的額度。以是之故,停機十來小時,不停機的話,雲端的硬碟空間有限,會把硬碟空間耗盡。沒有考慮擴增硬碟空間的原因是每天上傳的額度是固定的,即使硬碟空間增加,也沒有多餘的額度可以上傳!


2020年8月24日,星期一
14:25:55

昨天晚上完成英文和簡體中文標題、敘述的資料,跑Youtube Data API更新,跑著跑著,出現了一連串的Failure,才驚覺API Quota爆了!

查了一下API Cost,Update竟然比Insert還多50個Cost,難怪一下子就把配額用光了。這下又要提出擴增配額的申請了。

算一算,三個頻道如果都要提供英文和簡體中文的話,還需要27000000的配額,比起上次申請的數字,多出好多,不知道是否會通過?如果沒能通過申請的話,要分天來完成的話,約要100天才能全部更新。

上次申請的時候,第八天通過。不知道這次申請,需要花多少天?

拭目以待吧。


2020年8月19日,星期三
19:30:45

今天終於把3451個生命電視台使用的字典資料表校對過一遍。


2020年8月2日,星期日
15:40:51

讓眼睛休息了一個星期,接下去來做影片自動翻譯的架構。


2020年7月17日,星期五
16:28:17

更新到MACOS 10.15.6,

這次更新,估計花費37分鐘,實際上用了31分鐘多一些。連帶XCode也要需要一起更新。

過往的日記

本頁執行共花了: 0.022675037384033秒