首先,請參考微軟的 Host ASP.NET Core on Windows with IIS 。但這篇文章資訊(廢話)很多,不容易找到重點。
ASP.NET Core 內建且默認用 Kestrel HTTP 服務模組。本文以此為準。
由於 ASP.NET Core 應用程式啟動時自帶 Kestrel HTTP 服務模組,本身不需要搭配 IIS 亦可獨立運作。但這種作法偏向微服務形式,而且負載分擔能力不如專業的 Nginx, Apache 或 IIS 。若你需要在一台主機上提供多個不同的 ASP.NET Core 應用程式服務,必須在 Kestrel 之前再加一道 HTTP 服務器,利用反向代理機制 (reverse proxy) ,溝通 Kestrel 與瀏覽器之間的通訊。
IIS 服務主機必須安裝 .NET Core Runtime & Hosting Bundle for Windows 。請到 .NET Core 網站下載。
我用 .NET Core 實作一個呼叫 RESTful API 的簡單程式時,碰到一個小麻煩。 .NET Core 的 HttpClient 類提供的方法都是非同步方法 (async method)。
但我是在同步形式的程式碼用到 HttpClient 。我不想回頭去改程式碼加上 async Task
的宣告。所以我得要呼叫非同步方法,但用同步形式程式碼取得結果。
一般進行程式開發工作時,至少會分成兩個階段,或說兩個工作會期。開發期/Development/Debug 和 發布期/Production/Release 。並針對這兩個階段,設定不同的執行環境。
例如設定開發期執行環境的資料庫來源是 SQLite ,而發布期執行環境則用客戶指定的資料庫來源 SQL Server 。如此一來,開發人員僅須切換組態檔,就能改變程式的執行環境與參數。方便應付開發、測試、正式部署等工作。
ASP.NET Core 選擇用 Development 和 Production 這兩個稱呼區分兩階段。
今天更新部落格一份文件後, github 發了一封 “Page build warning” 的提示信,信中說我的網站域名指向一個過期的 IP 位址。
The custom domain for your GitHub Pages site is pointed at an outdated IP address. You must update your site’s DNS records if you’d like it to be available via your custom domain. For more information, see https://help.github.com/en/articles/using-a-custom-domain-with-github-pages.
本文說明如何使用 OpenSSL 從 PFX 憑證文件匯出 PEM 格式的憑證與金鑰。
透過 SSL 協定建立瀏覽器和網站伺服器之間的安全通道時,必須使用符合 PKCS 標準的憑證文件。而 PKCS 訂立了多種憑證格式,常見的有 X.509 DER, X.509 PEM (Base64), PKCS#12 PFX 三種。這三種格式可以互相轉換。
雖然文件格式可以互相轉換,但大多數應用 SSL 加密通信資料的服務軟體,本身往往只支援其中一種格式。例如微軟 IIS 採用 PFX 格式,而 Apache HTTP Server 與 Nginx 則採用 PEM 格式。一般而言,非開放源碼的服務軟體多採用 PFX 格式;使用 OpenSSL 函數庫的開放源碼的服務軟體選擇 PEM 格式。當你要安裝的服務軟體採用的憑證文件格式與你手上現有的憑證不同時,你可以用 OpenSSL 工具自行轉換。
notifyOSD 是一個在畫面角落顯示提示訊息的網頁 UI 項目。以固定位置浮動視窗,顯示提示訊息。訊息採堆疊方式管理,新的訊息將疊在已有訊息之上,並在下方顯示已有幾筆提示訊息。
它不使用其他 JavaScript 套件。
Source Repo: non-jquery-ui
overlayMessage 是一個顯示全頁覆蓋訊息的網頁 UI 項目 。它完全獨立,不使用其他 JavaScript 套件。
其設計目的是在執行非同步工作時,顯示覆蓋全頁的訊息,阻擋使用者操作頁面的內容。例如使用 XmlHttpRequest 上傳表單資料時,防止使用者在上傳完成前修改表單。
Source Repo: non-jquery-ui
PENTAX DA 鏡頭是針對 PENTAX 數位相機,搭配 APS-C 感光元件的鏡頭群。 我排除了可用於全片幅感光元件的 FA 與 D FA 鏡頭群。
分類上,基於 PENTAX 的鏡頭設計哲學,我選擇先按濾鏡尺寸分組。然後再以用途分組推薦。
自從微軟將 Windows Subsystem for Linux (WSL) 正式釋出後, Windows 10 的使用者不必安裝虛擬機也可配置 Linux 環境,還可在 Microsoft Store 下輕鬆選擇你想用的 Linux 散佈版本。像是 Ubuntu, Debian, Kali Linux 都已經有 Microsoft Store 上的 App 版本。只要準備 1GB 左右的系統磁碟空間,你就能像安裝 Windows App 般安裝一套 Linux 終端環境。
在 WSL 的終端視窗下,使用文字終端軟體時幾乎沒有不適應之處。不過,人總是貪心的。文字終端軟體可以用,哪 Linux 的桌面應用軟體呢?我搜尋了網路上的相關文章,很快就成功跑起 Linux 桌面應用軟體,也順便解決了中文顯示的問題。
在進行智慧農業的案子時,如何讓 Raspberry Pi 連接 internet 也是一個令人困擾的問題。在空曠的農田中, WiFi 訊號收不到,乙太網路不夠長。在 Raspberry Pi 上裝一個 4G 網路設備,可說是必然的答案。在蒐集資料以及實際使用後,我個人認為使用 4G Router (俗稱 4G 行動分享器) 是最簡易的解決方案。
本案例於 Raspberry Pi 使用 Grove - LoRa Radio 模組,實作基本的 LoRa 無線應用。 Raspberry Pi 的角色是 LoRa Gateway 。它負責收集其他 LoRa 設備的訊號,再透過 Internet 發佈到 MQTT 頻道上。
Grove LoRa Radio 模組的產品說明它不提供 Raspberry Pi 使用的 SDK 。但 Alexander Krause 為它寫了一個 Python 套件,名稱為 pyRFM 。各位可以在 Github 上取得 pyRFM 的源碼: erazor83/pyRFM。拜 Python 的跨平台特性所賜, pyRFM 一舉打破了 Grove LoRa Radio 的供應商對其他硬體平台支援不足的困境。只要可以運行 Python 環境的作業平台,都可以透過 pyRFM 使用 Grove LoRa Radio 。
繼前文「readString 使用經驗」,本文將談 serial.readBytes() 的使用經驗。
前文的感測模組屬於定時主動回報模式。而本文案例用的感測設備,則是終端指令互動模式。它不會主動回報任何資料。使用者必須透過 serial 埠連接進入它的 console ,輸入指令取得它的回應內容。理論上,用 readString()
方法同樣能處理它的輸出資料。只是它原本是設計和 PC 互動,並不考慮另一端的記憶體用量需求,導致它的輸出資料很長。當我使用 Arduino Pro Mini 控制板,在讀出它的資料接著呼叫字串方法加工時,會 OOM (Out of memory)。使我不得不換用 readBytes()
方法。
最近參與了一個智慧農業 4.0 相關的案子,這類案子通常都要整合環境感測模組(水位、氣溫)、無線訊號模組和自動控制系統。而且因為農地周圍常常沒有穩定的市電,故這些農業用途的設備基本都需要用電池供電。在低電力供應的限制下,我第一次用了 Arduino 控制週邊模組。 Arduino 開發工作本身並不困難,難在接上它的感測模組並沒有一定的資料輸出、入格式。幾乎每種感測模組都需要針對它的特性調整資料讀取動作。
本文案例,感測模組接上 Arduino 控制板的 Serial 針腳,透過 Serial 埠送出感測資料。當 Arduino 讀到感測資料後,要將資料透過無線訊號模組傳送給遠地的資料收集裝置。基於無線訊號模組的資料傳輸特性,應將資料先放入封包,以封包為單位傳送出去。
但本文案例的感測模組送出的資料內容沒有固定長度,也沒有固定的結束字元。一筆感測資料內容包含多行文字,但換行字元放在每行開頭,最後一行不附加換行字元。因此我也不能用換行字元判斷它是否送完一筆資料了。
本文說明在 Windows 作業系統上,如何將 Python 程式以 Windows 服務 (Windows Service) 的模式執行。這可以讓程式於系統開機後,自動在背景中工作。
Mosquitto 提供 Windows 系統的安裝包。但是有些事沒說清楚,對首次接觸者帶來些許困擾。我在此補充一些事。 v1.5.1 (2018-08-16) 有重要變動。
Mosquitto 的 Windows 系統安裝包在 v1.5.1 之前並未啟用 MQTT over websockets 功能。如果你需要這功能,你得要下載原始碼自行編譯。
而在 v1.5.1 (2018-08-16) 起,將 websockets 功能編入了。你只需要按 MQTT用戶端入門 - 二 的說明,在組態檔中啟用 websockets 。
至於我個人的作法則不一樣。因為是 Windows 10 ,所以我啟用 Windows Subsystem for Linux (WSL) 安裝 Ubuntu on Windows 。然後在 Ubuntu on Windows 中直接用 apt-get 安裝 mosquitto 套件,同 Debian 安裝 mosquitto。本文寫作時, Ubuntu on Windows 運行的散佈版本為 16.04 , mosquitto 套件版本為 1.4.8 ,已可使用 MQTT over websockets 。
Windows Subsystem for Linux 是好東西啊。
Mosquitto 安裝程式 (Native build) 會提示你在繼續安裝前,先複製與安裝兩個軟體。但我建議先中斷 Mosquitto 安裝程式,等安裝了下列三個軟體之後,才去執行 Mosquitto 安裝程式。喔,你沒看錯,是「三個」。
近幾年來,使用平板、手機播放線上音樂的人愈來愈多。他們雖然不是音響發燒友,但同樣會尋求更優雅舒適的音樂聆聽環境。他們希望有大顆的喇叭,可以讓手機播放的音樂繞樑於耳、餘韻不絕,而不是聽到手機小喇叭聲嘶力竭的破嗓音。為此,音響廠商近一、兩年推出的平價新產品,幾乎都將無線音樂串流列為支援項目。這類產品如 TEAC NT-503, Yamaha WXA-50, Pioneer N-70AE, Oppa Sonica DAC 等。
這波追求無線便利性的潮流,也影響了傳統音響發燒友。但我們通常已經擁有等級不差的傳統二聲道擴大機和高價位 DAC 。音響發燒友是一群不會為了音質而妥協的人,未必願意為了聆聽無線音樂串流去添加平價但降級的無線音樂串流設備。那麼我們就會想找可以連接手機和傳統擴大機的無線連接設備。本文將說明我的方式,讓平板、手機透過無線連接設備搭配傳統擴大機。
Lenovo Yoga Book 實在是令人驚艷的產品。那隻可替換筆芯的觸控筆可說是最大賣點。將觸控筆的筆芯換成原子筆筆芯後,可以放張紙在 Create Pad 上書寫並同步到 OneNote 記錄。不少消費者就是為了滿足手寫書寫感而買下它。
但是它給了我們兩種筆芯,卻只有一隻筆桿。說真的,應該很少有用戶會忍著不裝原子筆筆芯。然而帶著兩種筆芯換來換去實在很麻煩。Yoga Book 用戶絕對需要兩隻筆。還有,原子筆的筆芯是耗材,我們也想知道何處取得補充品。
Lenovo 網站上可以找到這些配件,但常常缺貨,更重要的是價格難以下手。替代品如下:
谷阿莫是以製作「X分鐘帶你看完某某電影」系列短片聞名的網路紅人。近日被電影片商控告侵權,谷阿莫挨告。電影片商:於網路取得非法影片已侵權。
一般對著作權有所了解的人,會想到以電影 90 分鐘以上的內容和短片不到 5 分鐘的內容比例來看,是否可以主張合理使用? 然而這類影評短片的製作者若要主張合理使用的話,片源的合法來源基本有兩種途徑。一是從片商公開的預告片,二是從自購的 DVD、BD 影像。而谷阿莫製作短片的片源並不合法,這正是電影片商之主張重點。