發表文章

目前顯示的是 2020的文章

煮好吃的飯,重點在米和水的重量比,再加上少許油、鹽與醋

如果有烹飪用的小秤,那麼就可以用如下的份量,煮出好吃的飯 ( 僅測試 PHILIPS 的電子壓力鍋、 7-11 可以買到的御膳米、以 3M 濾過的水 ) : 1. 米 300 公克。 ( 這邊考慮兩人的份量 ) 2. 水 500 公克。 ( 注意洗完米之後,米會有水附著,須將附著的水列入考慮 ) 3. 鹽 0.5 公克。 4. 橄欖油 ( 或其他的油 )0.5 公克。 5. 醋 0.5 公克。 如果需要飯再更軟些,水就稍微加多些;要硬些,水就少一些,因米的種類而會有不同。 ( 不同品牌的電子鍋或煮飯的方式也會影響,基本上都是調整水的多寡,或是預泡,就是先把米以水浸泡 10 到 20 分鐘後,再煮 ) 或許哪一天,在 big data 與 machine learning 等的加持下,可以自動識別或學習,煮出最好吃的飯。

[raspberry pi]強化樹莓派2B、3B的wifi連接,斷線時自動重新連接或重新開機

樹莓派2B使用外接的wifi介面卡時,就是那種USB介面的,常常會有斷線的問題,即使是樹莓派3B內建的wifi,偶爾也會造成一樣的困擾。因此,為了穩定度,必須手動做一些調整並加上一些程式碼來強化之! 首先,把電源管理的功能關閉是必要的。樹莓派2B中,可以修改/etc/network/interfaces,在這個檔案中加入「wireless-power off」的敘述,重開機即可。但是這個方法在樹莓派3B上行不通,而需要在/etc/rc.local增加「/sbin/iwconfig wlan0 power off」,再重開機。是否已經正確關閉電源管理功能,可由指令「iwconfig」,看看Power Management是否為off。 再來,配合sudo crontab -e排程來執行網路介面是否up或down的修正,如下範例: #!/bin/bash NOW=`date "+%Y-%m-%d %H:%M:%S"` HOST=`hostname` wlan0=`cat /sys/class/net/wlan0/operstate` down="down" if [ "$wlan0" == "$down" ]; then     ip link set wlan0 down     ip link set wlan0 up     /sbin/wpa_cli -i wlan0 select_network 0     MSG="${NOW}: restart wlan0"     echo "$MSG"     sleep 10     wlan0again=`cat /sys/class/net/wlan0/operstate`     if [ "$wlan0again" == "$down" ]; then         MSG="${NOW}: reboot ${HOST}"         echo "$MSG"         /sbin/shutdown -r now     else         echo "${NOW}: wlan0 is

[macos]使用dd指令複製sd卡或把sd卡轉存為映像檔

 macos下,使用dd指令,即可完成sd卡轉存為映像檔,也可以把映像檔複製到sd卡上,以下是指令示範: sudo dd if=/dev/disk2 of=~/Downloads/u2004sd32g.dmg 反過來,如果要把映像檔拷貝到sd卡,指令為: sudo dd if=~/Downloads/u2004sd32g.dmg of=/dev/disk2 如果不知道sd卡的代號是哪一個,則可藉助下面指令查詢: diskutil list

[樹莓派]複製運行中的開機SD卡

首先要安裝rpi-clone,指令如下: git clone https://github.com/billw2/rpi-clone.git sudo cp rpi-clone/rpi-clone /usr/local/sbin rm -rf rpi-clone 插入USB碟之後,輸入下面指令: sudo fdisk -l  上面的指令在於了解插入的USB碟是sda還是sdb…如果只有一個,基本上就是sda,這時輸入: sudo rpi-clone sda -v -x 再依照畫面的指示,輸入必要的參數,然後等著複製 的工作完成,把USB碟移除,即可。 有了備份好的USB碟,即可利用另一台電腦製作映像檔,再把映像檔還原到另外的SD卡。

[macos]以dd複製USB碟到SD卡

先以下面指令確認目前儲存裝置的狀況: diskutil list 然後插入USB碟,並且以前一個指令確認USB碟的代號,最後插入SD卡,重複前一個指令確認SD卡代號,在此,假設USB碟為/dev/disk2,SD卡/dev/disk3。 當USB碟與SD卡的代號都確認後,輸入以下指令: s udo diskutil umountDisk /dev/disk2 sudo diskutil umountDisk /dev/disk3 sudo dd if=/dev/rdisk2 of=/dev/rdisk3 bs=1m conv=noerror,sync 當畫面出現如下的資訊時,就表示已經完成複製: dd: /dev/rdisk3: short write on character device dd: /dev/rdisk3: Input/output error 30437+0 records in 30436+1 records out 31914983424 bytes transferred in 2217.743738 secs (14390744 bytes/sec) 特別注意:當USB碟越大時,需要越多時間,以32GB來說, 約需38分鐘。

郵件伺服器2020設定重點

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

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

PHPMailer 6.1,在中文的使用上有幾點需要注意的,避免亂碼: 修改原始程式碼「PHPMailer.php」,把send函式在try之後增加一行,$this->CharSet = 'UTF-8'; 寄件者與主旨,前綴需要加上'=?utf-8?B?',並以base64_encode編碼之後,後綴增加'?='。 這樣利用Gmail來發信,中文就正確無誤了,只不過在Gmail內要先設定為低安全應用程式,才可正確送信!免費的Gmail帳號,每日可發送500封,G Suite的付費帳號每日2000封。如果需要更大的發送數量,可以考慮和Google搭配的Mailgun或其他第三方的服務,像是Sendgrid。如果發送的數量實在龐大,又不想付費的話,那就需要固定IP,把DNS反解設好,自己架Mail Server啦。

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

解決方式,就是重新下載curl的原始程式碼,重新編譯一個新的版本。 而Google Cloud的CentOS7預設安裝裡,沒有gcc與wget,因此,需要先安裝這兩個套件。 sudo yum install gcc sudo yum install wget 裝好編譯的環境與下載的工具之後,接下來就是把curl的程式碼下載後,解壓縮,編譯: 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 -f /usr/bin/curl sudo ln -s /usr/local/bin/curl /usr/bin/curl 這樣一來,curl就可以正常運作。

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

iOS開舊專案,需要變更的四個地方。

圖片
1. 變更專案檔 PROJECT 的 iOS Deployment Target 為 9.2 ,如下圖: 2. 變更專案檔 TARGETS 的 Target 為 9.2 ,如下圖: 3. 變更專案檔 TARGETS 的 Signing & Capabilities 的 Team 為註冊帳號,如下圖: 4. 變更專案檔 PROJECT 的 Build Settings 的 Architectures 為 Standard architectures,如下圖: 版本9.2,請依照需求修改之。