前言
以 SendGrid 寄送 email 時,若無進行網域驗證,有些信箱會在寄件者後面帶上一個後綴提示使用者,這封 email 實際的寄送網域為何,因此會多一個透過 sendgrid.me的後綴 ,如
這表示寄件者與實際寄送 email 的網域不同,見 https://support.google.com/mail/answer/1311182
以 SendGrid 寄送 email 時,若無進行網域驗證,有些信箱會在寄件者後面帶上一個後綴提示使用者,這封 email 實際的寄送網域為何,因此會多一個透過 sendgrid.me的後綴 ,如
這表示寄件者與實際寄送 email 的網域不同,見 https://support.google.com/mail/answer/1311182
本文整理了系統環境變數、 git、curl、wget、npm、bundler、nuget、brew、apt 與 chocolatey 等多種下載工具的 proxy 設定。
當公司有做網路控管時,對外的網路請求通常需要經由 proxy server 轉送,對內或 localhost 的可以不需要,要也沒關係就是要繞一圈比較慢。
接下來我們將用 http://proxy.company.com:80 這個 proxy server 為例,示範如何設置其他工具的 proxy。
本文原發表於 Medium,2026-10-27 搬移至此。
Rails 6.0 後 Webpacker 已經取代 Asset Pipeline成為預設的前端打包方案,安裝方法 Webpacker Github 上的 README 有很詳盡的說明:
上一篇文章中,介紹了如何在 Rails development 環境中使用 HTTPS 連線至 localhost server,並啟用 HSTS。
Rails 在開發環境中啟用 HTTPS此時用預設的 config/webpacker.yml 下去啟用 webpack-dev-server,其編譯後的 JavaScript 依然以 HTTP 提供。
但 Rails server 的 HSTS 設定會把
http://localhost:3000/packs/js/application-2be7c5d587f23021bfe9.js
轉換成請求
https://localhost:3000/packs/js/application-2be7c5d587f23021bfe9.js
這下就發生找不到資源的錯誤了:
1 | GET https://localhost:3000/packs/js/application-2be7c5d587f23021bfe9.js net::ERR_ABORTED 500 (Internal Server Error) |
修改 config/webpacker.yml 將 development.dev_server.https 設為 true
config/webpacker.yml
重啟 rails server 與 ./bin/webpacker-dev-server 後,還是錯的!
1 | # HTTPS 憑證錯誤 |
webpack-dev-server 指定憑證的方式可以看
在Rails 在開發環境中啟用 HTTPS我們將 mkcert 自簽的憑證放在 config/ssl/ 下,於是我們必須修改 config/webpacker.yml 指定 development.dev_server.https.cert 與 development.dev_server.https.key 使用憑證,如下:
config/webpacker.yml
你以為成功了嗎?重啟 rails server 與 ./bin/webpacker-dev-server 後,還是錯的!
原因在於 4.0.7 版的 Webpacker 忽略了我們傳入的 https 參數,只 care 是否為 true。
./bin/webpack-dev-server command line arguments are ignored · Issue #2000 · rails/webpacker
直到這個 PR 才修正了這個錯誤。
coerce https yaml config to boolean by hwhelchel · Pull Request #2251 · rails/webpacker
因此,我們至少需要指定 Gem Webpacker 版本號到 commit d577bab 以後,直到 4.0.8 版釋出:
1 | # Gemfile |
bundle 安裝更新套件,重啟 rails server 與 ./bin/webpacker-dev-server 後,就能成功囉!
但如果你的 Content Security Policy 像我一樣設定錯誤,忘了加上 https:// 與 wss:// 的話,我只能說:「革命尚未成功,同志仍需努力。」
1 | # Content Security Policy 設定錯誤 |
到 config/initializers/content_security_policy.rb 下
添加https://localhost:3035 與 wss://localhost:3035 到 policy.connect_src 中:
這下總算是成功在 development 環境下全面啟用 SSL 囉!
有人問我說為何我不直接把成功的設定分享給讀者,要帶著讀者一起錯過來,原因有三:
本文原發表於 Medium,2026-10-27 搬移至此。
ssl on local
現今許多公司為了提升安全性,只提供服務給有 HTTPS 連線的網路應用程式,如 Facebook 登入:
Login Security - Facebook Login - Documentation - Facebook for Developers
使用 HTTPS
使用具有加密功能的 HTTPS 作為網際網路通訊協定,而非 HTTP。HTTPS 會維護傳送資料的隱私,保護其不受竊聽攻擊。此外,也能保護資料在傳送過程中不遭到置入廣告或惡意程式碼的竄改。
在 2018 年 10 月 6 日,所有應用程式都必須使用 HTTPS。
這也導致在開發或測試環境時常會因為開發環境沒有設置 SSL 而出錯,本例Facebook 中有兩種解法:
本篇文章將介紹比較省事的選項 2,讓你能夠以 https://localhost:3000 開發
使用 mkcert 自簽 cert,沒安裝者須先進行安裝:
1 | $ brew install mkcert nss |
簽署憑證:
1 | $ cd project |
把憑證移到 config/ssl/下
1 | $ mkdir config/ssl |
在 config/puma.rb 中設定 SSL 服務:
1 | # Remove |
在 config/environments/development.rb 中強制所有連線使用 SSL 連線:
1 | config.force_ssl = true |
重啟 dev server,開始在開發環境上用 HTTPS 連線吧!
1 | $ rails s |
1 | SSL error, peer: 127.0.0.1, peer cert: , #<Puma::MiniSSL::SSLError: OpenSSL error: error:141F7065:SSL routines:final_key_share:no suitable key share - 337604709> |
使用最新的 Puma(>4.2.0)。
1 | Failed to load resource: net::ERR_SSL_PROTOCOL_ERROR |
webpack-dev-server 也要記得上 SSL,提供 https:// 與 wss:// 等連線方式。
如何在 Rails Webpacker 為 webpack-dev-server 設定 https 可以看看我的這篇文章:
Rails Webpacker 的 HTTPS 設定記一次 Boot Menu 找不到 Windows Boot Manager
本文原發表於 Medium,2026-10-27 搬移至此。
Photo by Danny Gallegos on Unsplash
應教授所託將 dcard-crawler 安裝在 lab 的電腦上,於是我在這台原本就已經安裝好 Windows 10 的電腦上安裝 Ubuntu 18.04 作為第二個作業系統。
做好 USB 開機碟,分割完磁碟,安裝 Ubuntu,但不知為何安裝失敗:
1 | The 'grub-efi-amd64-signed' package failed to install into / target/. Without the GRUB boot loader, the installed system will not boot. |
重開機打算再用開機碟安裝一次時,系統卻出現錯誤訊息:
1 | Failed to open \EFI\BOOT\mmx64.efi - Not Found |
搜尋到這篇文章,成功解決問題,再來安裝一次還是失敗了。
此時回到 BIOS 中的 Boot Menu 中,我發現 硬碟(Windows) 的選項消失了,取而代之的是硬碟的 Boot 選項,透過這個硬碟選項 Boot 只能進入 BIOS,無窮迴圈。
照著這篇文章的做法:
1 | bootrec /fixmbr |
還是遇到問題:
最終跟著這篇:
bcdboot c:\windows /s c:終於成功建立的開機檔案。
今天中秋節,本來想說很快就能搞定,所以女朋友就跟來 lab 看我灌,結果一個悲劇 Ubuntu 18.04 沒灌成功,連眾多資料的 Windows 10 都無法開機,HDD 重開機跟安裝作業系統真的慢到一個靠腰,搞了 9 個小時才救回 Windows BCD(對女友感到非常的抱歉),絕望到想跑路。
拖了好久,終於有時間幫 彈幕教室 chatbot 裝個圖文選單啦,照著 官方教學 做其實就沒問題囉,但還是把實作的過程紀錄下來備忘。
順便打個廣告 https://github.com/danmu-classroom/danmu-classroom-screen,彈幕教室客戶端,下載即用免安裝,可以透過 Line 發送彈幕到螢幕上,歡迎來玩看看喔。
我的 rich menu 長這樣
Google 的自然語言處理雖然非常的強大,但是中文的情緒分析並非他的強項,目前中文的自然語言處理研究出處非常多是出於中國大陸,所以當需要用到中文的情緒分析時, 百度 AI 開放平台 就成為我們的首選啦。
平台目前的收費非常的便宜,例如本次介紹的 情感傾向分析接口,提供了 5QPS 免費額度,每秒免費請求 5 次超佛心的啊!根本就相當於不用錢。
注意!要註冊百度帳號必須要有 +86 開頭的中國手機門號喔。
使用百度 AI 開放平台的情緒分析服務很簡單,步驟就 4 個。
access_tokenNetwork graphing in JavaScript - force-graph
分析網路關係,並將資料視覺化,最常見的就是 network graph。
Heroku 上執行 Rails app 的定時任務(Scheduled Task)
一般 Rails app 的定時任務是把 ActiveJob 包成一個 rake task 並透過 crontab 執行。這種架構的適合用在分鐘級別以上的定時任務。
但是 Heroku 並沒有提供 crontab 指令,在 Heroku 上運行定時任務必須用到一個 addon:Heroku Scheduler
rails mail:birth_notification ),我設定頻率為每天,它每天都會檢查今天是不是 25 日,是則執行後面的指令1 | # every months 25th do this rake task |
Heroku Scheduler 最小只提供間距為 10 分鐘級別的定時任務,若要更精細,只能使用應用層級的定時排程了例如: