範例教學:使用 ASP.NET MVC 打造 WebAPI 服務
前言 閒聊 - Web API 是否一定要 RESTful? 一文提到我個人偏好用 ASP.NET MVC 寫 WebAPI,讀者 Mark 留言希望能有簡單範例參考。這篇文章將示範用 ASP.NET MVC 從無到有打造一個簡單 WebAPI 服務,提供給初學 ASP.NET MVC 不知如何下手... Read More
View ArticleASP.NET Core + Nginx on CentOS 安裝筆記
先前文章已初步驗證 ASP.NET Core 程式可以不經修改直接搬到 Linux 執行,接下來得真的把它配置好才能上戰場。 ASP.NET Core 內建的 Kestrel 伺服器輕巧但功能陽春,實務上需搭配 Reverse Proxy 對外提供服務,在 ASP.NET Core 值得學嗎? 提過... Read More
View ArticleASP.NET Core 網站 Linux SFTP 部署與權限設定問題
前文提到在 Linux 上將 /var/www 擁有者及群組都設成 www-data,再將我的帳號(jeffrey)也加入 www-data 群組,目的是讓以服務形式執行的 ASP.NET Core 網站可使用 www-data 身分讀寫檔案。而當要部署更新檔案,則使用我的帳號登入,藉著屬於 www... Read More
View Article用 Markdown Monster 寫部落格
這回更換部落格平台,背後我還做了另一項大改變 - 改用 Markdown 寫文章。 為什麼要用 Markdown 隨著 Github/Stackoverflow 大量採用 Markdown 作為技術文件、討論區的撰寫格式,這些年寫 Markdown 已成為開發者參與技術社群的必備技能,甚至許多技術作... Read More
View Article2018 烏來馬拉松
兩年前跑過烏來馬,念念不忘美味山豬肉、漂亮獎牌及好看的完賽衣。去年沒留意報名日期,發現時已額滿好扼腕,今年當然不想再錯過,盯緊報名日順利入手。報名時肖想限量的合體獎牌,腦波一弱報了 42+7K 勇士組,還拉了跑馬老搭擋忠孝哥下水。報名是四月的事,當時心想反正還有半年,只要認真練習不過是全馬再多加短短... Read More
View ArticleFalse Sharing 原理動態展示
介紹一個比較進階的效能議題 - False Sharing,先分享兩篇文章: 多執行緒程式的效能隱形殺手 - False sharing by Jed False-sharing 以及其解法 (以 Golang 為例) by Genchi Lu False Sharing 是一種開發時不易意識到... Read More
View Article高負載 .NET Logging 議題與 NLog 極端效能調校
跟同事討論到高負載 .NET Logging 議題。某程式有巨量 Log 寫入需求,執行幾小時 Log 量可達數 GB,甚至懷疑寫 Log 可能成為效率瓶頸之一,程式目前使用 log4net,考是是否應更換成其他 Log 程式庫?如果要換,有哪些選擇? 早年用過 log4net,複雜的 XML 設定... Read More
View Article笨問題 - ASP.NET Core 在 Linux 佔用大量 Virtual Memory
身為 Linux 初心者,遇到不懂狀況大驚小怪也是很合理滴。 在一台 1GB RAM CentOS 上跑了兩個 ASP.NET Core 網站,使用 top 觀察 CPU 及記憶體用量,top 顯示的記憶體數據共有 VIRT、RES、SHR、%MEM 四個欄位: 兩個 ASP.NET Core 網... Read More
View Article2018 飛龍盃烘爐地馬拉松
因為業績壓力十月份排了隔週馬,重溫參加過兩回的土地公馬(2015 2016)。 大清早趕到會場。土地公,早安! 五點天色尚暗,從洪爐地向下展望仍是夜景。 全馬人數不足千人,標準小而美,五點半準時起跑。 只記得開頭與結尾的陡坡,忘記華夏科技大學旁有斜度超過 20% 的厭世坡,實地跑個兩分鐘所有記... Read More
View ArticleTIPS - 使用 Dapper 將 JObject 陣列匯入資料表
今天遇到的需很類似先前展示過的正式台測試台 JSON + Dapper 資料搬移術,差別在於資料表匯出的 JSON 個數很多,逐一宣告成強型別類別再反序列化太費工,且日後新增匯入對象就得改程式碼也麻煩。心想 Json.NET 可以 DeserializeObject<List>,直接用 ... Read More
View Article.NET Core SQLite 多執行緒更新之 database is locked 錯誤
在部落格 Log 發現 SQLite 在執行更新時偶發資料庫鎖定錯誤: Oct 21 05:19:46 Blog darkblog-core: An unhandled exception has occurred while executing the request. Oct 21 05:19:... Read More
View Article【茶包射手日記】Android 異常網路流量偵察
小木頭報案,紅米手機幾天前開始陷入瘋狂吃電狀態,即使關掉螢幕放著,手機一小時就掉電 60% 並發燙。 依據茶包射手準則第四章,調查 SOP 的第一步當然要詢問當事人:「最近有動了什麼變成這樣嗎?」而當事人依報案者檢調詢問攻防指南第三條,自然要回答「沒有,沒做什麼不知為何就變成這樣。」很好,完全符合大... Read More
View Article打造超省 CentOS 家用伺服器
身為一個程式魔人,在家裡跑個伺服器也是很合理滴~ 最近玩了 ASP.NET Core、CentOS,驚喜發現 .NET Core 跨到 Linux 平台後硬體要求大降,1GB RAM 就跑得動,CPU 要求也不高,便有在家裡弄台伺服器跑家用小程式(像是救救菜英文)的衝動。在家裡架站的念頭想存在已久... Read More
View ArticleCODE - TFS 檔案異動報表產生器
工作需求,上線前置作業想從 TFS 版控抓出指定期間異動過的檔案清單,懶得尋覓現成軟體或工具,寫幾行程式自幹搞定。 TF.EXE 有個 History 命令可列舉特定期間(/v:Dyyyy-MM-dd~Dyyyy-MM-dd)特定目錄下(/recursive)所有 Changeset,加上 /for... Read More
View ArticleASP.NET Core Docker 筆記 1 - 初探
前面研究過在 CentOS 安裝及設定 ASP.NET Core + Nginx,習得徒手在 CentOS 安裝部署伺服器的技能,依循 Roadmap 來到下一階段 - 學習使用 Docker 簡化部署。 容器化及 Docker 這幾年熱到發燙,有些人甚至認為它已在軟體產業掀起一波革命。(我親身體驗... Read More
View ArticleASP.NET Core Docker 筆記 2 - 組合容器建構系統
上篇文章體驗過在 CentOS 用 Docker Container 分別跑 Nginx 跟 ASP.NET Core 網站,並建立 Reverse Proxy 關係,接著探討在實務上當需要多個 Container 協同運作時應如何規劃整合。 一個系統常可再拆解成多個服務。以線上購物網站為例,就可能... Read More
View Article2018 貓空半馬
十月也算馬拉松旺季,連兩年因撞期缺席,今年十月排了隔週馬(1 2)但日子錯開,念在是舉在自家後院的賽事,免寄物跑完能馬上回家沖澡,不參加說不過去,就跑吧。 早上睡到飽,七點十分才出門,散步晃到會場時間還綽綽有餘,有主場優勢就是爽。今年台灣的路跑比賽大爆發,光 10/28 一天全台大大小小路跑就超過 ... Read More
View ArticleASP.NET Core Docker 筆記 3 - 共用 Nginx 容器與 Certbot 整合
前篇文章介紹過使用 Docker Compose 設定關聯容器(Web、DB、Reverse Proxy)組成系統,容器被隔離在專用網段(Compose 自動建立的 Bridge),並可透過客器名稱彼此溝通,Compose 也確保相關服務一起啟動一起關閉,是用多個容器建構系統最簡便的做法。 註:關於... Read More
View ArticleBlazor 預覽筆記
我以前常苦勸只會用 WebForm Server-Side Event 寫網頁的同事:JavaScript 一定要學好學滿,Flash 已被賈伯斯賜死,Silverlight 也隨風而逝,在這 HTML5 時代唯有 JavaScript 才是王道,逃避不學 JavaScript 只會 C# 跟人家寫... Read More
View Article小把戲 - 讓 JSON.parse() 內建日期解析功能
JSON.parse 時另外指定 Reviver 函式將 "yyyy-MM-ddTHH:mm:ssZ" 轉成 Date 型別,已是我用 JavaScript 解析 JSON 字串的SOP。參考:我慣用的標準做法 幾乎每次使用都要加工,一直抱怨為何瀏覽器不直接內建。先前寫 Knoc... Read More
View Article