這個網誌中的熱門文章
使用「LINE Messaging API」發送 line 訊息
一、介紹 LINE 是由LINE株式會社所開發的即時通訊平台,也是目前台灣目前最高使用率的社群平台。 二、登入 LINE console 圖、打開瀏覽器,進到 LINE Developers Console 登入頁 三、建立 Provider 和 Channel 圖、按下 Create ,輸入 Provider name ,再按下 Create 圖、按下 Create a Message API Channel 圖、輸入 Channel name 圖、Channel 資訊 四、webhook 每當LINE用戶加您的 Channel 為好友或是發送訊息,LINE平台透過 HTTP POST 發送 webhook 事件資訊 至您 LINE Developers Console 中所指定的 webhook URL 。 圖、點 Messaging API ,往下拉即可看到 webhook 相關設定 webhook 事件資訊 webhook 事件資訊為JSON格式的資料 點 webhook 的 Verify 按鈕,則會收到如下格式的 webhook 事件資訊。 圖、Verify 按鈕 {“events”:[],“destination”:“XXX”} 被加入好友,則會收到如下格式的 webhook 事件資訊。 {“events”:[{“type”:“follow”,“replyToken”:“XXX”,“source”:{“userId”:“XXX”,“type”:“user”},“timestamp”:XXX,“mode”:“active”}],“destination”:“XXX”} 其中 userId 為 加入您好友的用戶ID,此ID會使用於發送訊息。 發送訊息時,則會收到如下格式的 webhook 事件資訊。 {“events”:[{“type”:“message”,“replyToken”:“XXX”,“source”:{“userId”:“XXX”,“type”:“user”},“timestamp”:XXX,“mode”:“active”,“message”:{“type”:“sticker”,“id”:“XXX”,“stickerId”:“XXX”,“packageId”:“XXX”,“stic...
使用「Visual Studio 2019」建置 Windows 服務
一、開發環境 整合開發環境:Visual Studio 2019 語言:C# .net framework:4.6.2 二、建置 Windows 服務專案 圖、開啟 Visual Studio 2019 ,點 建立新的專案 圖、選擇 Windows 服務(.net framework) 圖、輸入相關資訊 圖、選擇 Service1.cs > 滑鼠右鍵 > 檢視原始碼,即可看到 Windows 服務 起初的原始碼 圖、對 專案 > 滑鼠右鍵 > 重建,即可在 bin 資料夾底下見到建置好的結果 三、登錄 Windows 服務 圖、輸入登錄指令 指令 sc create 服務名稱 binpath=D:\服務路徑\XXX.exe start=auto 圖、Windows 服務畫面即可看到剛剛的服務 四、相關連結 使用「SC」指令 登錄、刪除 Windows 服務 五、參考 sc 指令
如何傳送訊息至「Teams」的 Channel
一、介紹 Microsoft Teams 為微軟旗下的通訊軟體,它整合聊天、視訊、Office 365、Execel、Word、OneNote…等功能。 比爾蓋茲提出 Skype for Business 的想法,因此有了 Microsoft Teams 這個產品,為了與 Slack…等商用軟體相抗衡。 二、 Nuget 安裝 Newtonsoft.Json 12.0.3 三、Incoming WebHook 設定 訊息可藉由 Teams 的應用程式 Incoming WebHook 傳輸訊息 圖、點擊 … > 搜尋 Incoming WebHook > 點擊 Incoming WebHook 圖、點擊 新增至團隊 圖、選擇 你的頻道 > 點擊 設定連結器 圖、輸入 WebHook 名稱 > 點擊 建立 圖、複製 WebHook Url > 點擊 完成 四、操作步驟 圖、貼上範例碼,修改成你的 WebHook Url,執行後即可在 Teams 看到 測試訊息 的訊息 範例碼 using (var wc = new WebClient()) { wc.Headers.Add("Content-Type", "application/json"); var data = new { text = "測試訊息" }; var jsonStr = JsonConvert.SerializeObject(data); var bytes = System.Text.Encoding.UTF8.GetBytes(jsonStr); var res = wc.UploadData("https://你的 WebHook Url", bytes); Console.WriteLine(System.Text.Encoding.UTF8.GetString(res)); } 圖、執行結果 五、相關連結 使用「Visual Studio 2019」建置 主控台 Console 應用程式 使用「LINE Messaging API」發送 line 訊息 ...
「Katalon Recorder」簡化測試腳本撰寫的工具
一、介紹 「Katalon Recorder」 是一款錄製 Web UI 測試 工具,安裝於 Chrome、FireFox 瀏覽器。 Katalon Recorder 錄製瀏覽器的操作過程,並可產生 C#, Java, Python 的測試原始碼,讓工程師更易撰寫 WEB UI 測試。 此文章將介紹使用 Katalon Recorder 錄製腳本,並把腳本移至 Visual Studio 2019 做單元測試。 二、腳本內容 開啟 Google 搜尋關鍵字 測試 ,檢視第二筆搜尋結果的描述是否為 「這是一個根據弗洛伊德焦慮類型理論…」 。 三、 Nuget 套件 MSTest.TestAdapter ( 測試專案預設會安裝 ) MSTest.TestFramework ( 測試專案預設會安裝 ) Selenium.WebDriver Selenium.WebDriver.ChromeDriver 四、教學步驟 圖一、安裝套件。 圖二、 Chrome 瀏覽器安裝 Katalon Recorder 。 圖三、開啟 Katalon Recorder ( 注意右上角的 ICON ) 圖四、開始錄製腳本 圖五、操作瀏覽器(此時 Katalon Recorder 就會錄製腳本) 圖六、停止錄製 圖七、產生 C# 程式碼 圖八、將程式碼貼到 測試專案 圖九、將 FirefoxDriver 改成 ChromeDriver ,讓單元測試使用 Chrome 瀏覽器。 圖十、執行 測試 。 圖十一、測試結果。 四、相關連結 Selenium 前端 UI 自動化測試、爬蟲程式 最佳利器 五、參考 Katalon Recorder Katalon Recorder 下載 ( Chrome 擴充功能 )
使用「SqlBulkCopy」進行大量資料寫入
一、前言 使用 Entity Framework 產生的資料庫模型進行大量資料的寫入是相當緩慢的,所幸認識到 SqlBulkCopy 類別,它可以有效率地進行大量資料的寫入,筆者因為它減少很多等待的時間。 二、開發環境 整合開發環境:Visual Studio 2019 語言:C# .net framework:4.6.2 三、範例資料庫 圖、範例資料庫 四、範例 專案結構 和 CSV結構 圖、範例 專案結構 和 CSV結構 五、範例 ViewModel 圖、範例 ViewModel 原始碼(C#) public class TestVm { public string a1 { get; set; } public string a2 { get; set; } } 六、SqlBulkCopy 程式碼 圖、SqlBulkCopy 程式碼 原始碼(C#) //取得資料庫連線字串 var conn = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (var sb = new SqlBulkCopy(conn)) { sb.DestinationTableName = "Test"; sb.WriteToServer(dt, DataRowState.Added); } 圖、執行結果 七、完整程式碼 public class BulkController : ApiController { [HttpGet] public string Add() { try { //csv 轉 ViewModel var data = GetCsvData(); //ViewModel 轉 DateTable var dt = GetDataTable(data); //取得資料庫連線字串 var conn = WebConfig...
使用「NLog」來記錄應用程式的大小事吧
一、介紹 NLog 是 .net 下的日誌套件,因為只要一句程式碼即可紀錄日誌,因此筆者常使用它記錄應用系統的錯誤、資訊…等。 二、開發環境 整合開發環境:Visual Studio 2019 語言:C# .net framework:4.6.2 三、 Nuget 安裝套件 NLog NLog.Config NLog.Schema 圖、套件清單 四、操作步驟 圖、修改 NLog.config 的 target 、 logger 元素 NLog.config 設定 < targets > < target xsi:type = "File" name = "f" fileName = "${basedir}/logs/${shortdate}.log" layout = "${longdate} ${uppercase:${level}} ${message}" /> </ targets > < rules > < logger name = "*" minlevel = "Debug" writeTo = "f" /> </ rules > 圖、使用 nlog 原始碼 c# public void LogTest() { var log = LogManager.GetCurrentClassLogger(); log.Info($"Test"); } 圖、執行後結果 五、相關連結 「NLog」與「Sql Server」資料庫的完美搭配 六、參考 NLog Tutorial NLog Nuget
「Chrome Headless」隱藏瀏覽器的介面,讓爬蟲程式偷偷的執行
一、介紹 延伸之前的 Selenium 的文章,此篇將介紹如何使用 Chrome Headless 搭配 Selenium 的 Hide Command ,讓爬蟲程式在看不到的情況下執行。 二、 Nuget 套件 Selenium.WebDriver Selenium.WebDriver.ChromeDriver 三、教學步驟 圖一、安裝 Selenium 套件 。 圖二、貼上範例程式 //Chrome headless 參數設定 var chromeOptions = new ChromeOptions(); chromeOptions.AddArguments("headless"); //啟用 Selenium Hide Command var driverService = ChromeDriverService.CreateDefaultService(); driverService.HideCommandPromptWindow = true; //建置 Chrome Driver var driver = new ChromeDriver(driverService, chromeOptions); //瀏覽器 轉址至 Google圖片 driver.Url = @"https://www.google.com.tw/imghp?hl=zh-TW"; //輸入關鍵字 "Selenium" var searchInput = driver.FindElementByCssSelector(@".gLFyf"); searchInput.SendKeys("Selenium"); //按下 Enter searchInput.SendKeys(OpenQA.Selenium.Keys.Enter); //抓取圖片清單 var imgTags = driver.FindElementsByTagName("img").ToList(); //取得 5張 jpeg 圖片 var images = imgTags.Select(x => x.GetAttribute("s...
使用「ADO.NET」 進行資料庫的讀取、新增、修改、刪除的操作
一、前言 ADO.NET 是微軟旗下用來連接 資料來源 (例如 Sql Server、XML…等),並且可以讀取、新增、修改、刪除其中資料的技術。而後 微軟以 ADO.NET 為基礎 推出 Entity Framework ,以筆者的經驗來說,新的專案較常使用 Entity Framework ,但舊的專案則使用 ADO.NET ,因此為了方便記憶而撰寫文章。 二、開發環境 整合開發環境:Visual Studio 2019 語言:C# .net framework:4.6.2 三、範例資料庫 圖、範例資料庫 四、讀取 範例皆使用 參數型 方式操作資料庫,避免 Sql Injection 問題。 圖、範例程式碼 原始碼(C#) var cs = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (var sc = new SqlConnection(cs)) { sc.Open(); var cc = sc.CreateCommand(); cc.CommandText = $@"SELECT [a1],[a2] FROM [Test] where [Seq] = @Seq"; cc.Parameters.AddWithValue("@Seq", "1"); var ret = string.Empty; var reader = cc.ExecuteReader(); while (reader.Read()) { ret = $"a1={reader[0]},a2={reader[1]}"; } reader.Close(); return ret; } 圖、執行結果 五、新增 範例皆使用 參數型 方式操作資料庫,避免 Sql Injection 問題。 圖、範例程式碼 原始碼(C#) var cs = WebConfigurationManager.ConnectionStrings[...
留言
張貼留言