首頁 三十天.NET❤️Azure漸進式開發專案 輕量高效.NET Core開源Blog引擎:Miniblog.Core
首頁 三十天.NET❤️Azure漸進式開發專案 輕量高效.NET Core開源Blog引擎:Miniblog.Core
×

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10206411
  寫這系列的起因:想藉由做一個Blog來學習ASP .NET Core,自動爬IT鐵人賽文章同步更新到Blog,並且以W3C格式整理文章方便閱讀。   找尋幾個Blog引擎,最後挑選 Miniblog.Core 開源引擎做為基底修改、研究。因為使用開源資源,我也把修改內容開源在Github:W3CMiniblog.Core.W3C。   假如想看網頁效果的讀者,可以點此連結:【IT暐翰 Blog】,想要測試功能點此連結:【Miniblog.Core.W3C Live demo】,帳號、密碼都是 ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10206253
  考慮到使用外部排程器呼叫API方式執行文章同步,雖然可以切分功能,但總是不方便。這邊使用.net core自帶輕量級排程器 IHostedService + Timer 來實作定期更新文章功能。 建立方式: 【第一步】在設定檔跟其Model類別添加控制屬性: 1.UseITIronManLocalLoader的值為true開啟排程器功能,false關閉,預設關閉。 2.ITIronManLocalLoaderInterval決定排程器間隔時間,以小時為單位,預設24小時。 { "blo ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10206118
今天檢查IT鐵人賽同步文章程式,發現忘記處理title排序會有問題。 舉例:1,2,10,3文章排序會變成1,10,2,3 可以使用OrderBy另外一個多載方法,建立比較類別實現 IComparer介面 自訂義排序: public static IOrderedEnumerable OrderBy(this IEnumerable source, Func keySelector, ICompar ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10205843
之前發生使用XML存取資料方式,在本機上傳文章,出現本機顯示上傳成功卻沒有文章問題,後來調查原來是時間格式問題。 舉例: miniblog時間使用UTC格式保存資料,但是重啟伺服器後XML讀取文章資料的時間Kind是Local 在是否加入文章cache的判斷中使用判斷 文章發布時間 < DateTime.UtcNow 才會加入cache。但是因為台灣時區是GMT + 8 區域,所以結果是文章發布時間 > DateTime.UtcNow,所以判斷結果是false。 假如修正此問題,可以使用To ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10205468
今天加一個小功能,只需要改appsettings.json的連結字串,達到替換資料庫功能。 邏輯: 1.藉由判斷MSSQLConnString跟MSSQLConnString屬性的是否有值,決定使用哪種方式存取資料。 { "blog": { "SQLiteConnString":"DataSource=app.db", "MSSQLConnString": "Data Source=(localdb)\\MSSQLLocalDB;Integrated Security=SSP ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10205239
  在正式專案中密碼少不了需要加鹽處理,其中最常見的就是HASH。HASH算法是單向的,而且無法被反向計算。源頭數據改動一點點,HASH的結果也會完全不同。這樣特性很適合保存、驗證密碼。   但只有單純hash加上密碼簡單的話,怪客可以用暴力比對方式,得出你的密碼,所以在Miniblog使用廣受認證的PBKDF2方式加密。 Code: private bool VerifyHashedPassword(string password, IConfiguration config) { ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10204899
今天遇到IT鐵人賽文章同步,保存XML資料出現截斷資料異常hexadecimal value 0x1D is an invalid character,檢查發現出錯在SaveAsync。 public override async Task SavePost(Post post) { string filePath = GetFilePath(post); XDocument doc = new XDocument( new XEleme ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10204585
  之前W3CMiniblog.Core.W3C發佈在線上都使用XML方式存取資料,SQLite只在本機測試過。最近想使用SQL處理資料,想換成.NET Core + SQLite來存取,結果發生意外。   sqlite.db檔案放在根目錄,連線字串使用DataSource=app.db,運行本機端正常,但是推上Azure Web APP結果掛掉。   因為線上預設不會顯示Exception詳細資訊,也不應該顯示。   這邊使用昨天文章方式Analytics Query分析需要的Log資料查 ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10204267
今天發生一件Dapper使用SQLite怪事: 1.呼叫Delete不執行後面代碼,直接return離開方法 2.並且沒有呼叫complete資料也成功更新到DB 舉例 我在執行保存文章SavePost方法,運行Delete Categories where PostID = @ID ;直接return離開方法,後面重新整理快取都沒有執行導致異常。 sdsad public override async Task SavePost(Post post) { using (var conn ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10203914
為甚麼要使用PWA? 我在網路看到一段描述,可以做參考,簡單介紹一下Progressive Web App(PWA) - 王玉略: Twitter 在 2017 年上線了 Twitter Lite PWA,其獲得了相當驚人的收益: 平均用戶停留時長增長 65% Web 站點發推的數量增長 75% 跳出率降低 20% ..歸功於 PWA 的新技術和用戶體驗至上的設計原則:它通過 Service Worker 緩存文件,讓頁面可以離線,同時降低網絡消耗;通過 Web Push 接受服務器推送的 ...