Matsurigoto

熱門文章 (Popular Post)

[ASP.NET Core] 使用 ASP.NET Core 實作 windows 服務 (Implement windows service with ASP.NET Core)

By : Duran Hsieh

前言

今年初因為專案因素,有機會了解如何製作一個 WebAPI  (MVC架構) 的 Windows Services,加上近幾年幾乎都在開發 ASP.NET C# MVC 相關程式,對於這種簡易服務製作印象相當深刻。最近無意間發現 ASP.NET Core 也能製作這種類型的服務,且有別於原先 topshelf + console app 的方式,ASP.NET Core 本身架構與特色使開發過程更加輕鬆與簡便。本篇內容如下:

建立 Windows Services
    建立 ASP.NET Core Web 應用程式(.Net Framework)
    透過 Nuget 安裝 Microsoft.AspNetCore.Hosting.WindowsServices
    修改應用程式執行路徑與執行方式
    發佈專案至資料夾
    透過 SC 指令建立 Windows Services
進階說明
    偵錯與除錯
    優點
    修改 URL

本篇文章參考官方文件並簡單介紹個人實作過程,若有任何建議或錯誤請各位先進不吝指教,謝謝。



介紹

建立 ASP.NET Core Web 應用程式(.Net Framework) 

1. 開啟 Visual Studio Community 2017 -> 檔案 -> 新增 ->專案

[.NET][C#][Powershell] 使用 C# 遠端背景執行 powershell 命令 (Run remote powershell command in background with C#)

By : Duran Hsieh

前言

這兩個月的工作是不斷地對系統進行壓力/效能測試與調校,漸漸開始有自動化壓力測試的需求。由於我們採取方式 Remote Testing,每一次進行測試前需要啟動每一台 JMeter Sever,才能開始執行測試腳本。為了能執行遠端伺服器 JMeter Sever ,我們在服務內撰寫執行 remote powershell 的方法,藉此達到目的。本篇文章簡單介紹:

1. C# 執行 Powershell Scripts
2. 執行遠端 Powersehll Command
3. 背景執行 Powershell Scripts
4. 如何背景執行 Powershell Scripts 時取得 output 與 status

若有任何錯誤或建議,請各位先進不吝指教。

本篇執行環境:
Visual Studio 2017
.Net Core with .Net Framework

範例下載:
https://github.com/matsurigoto/powershell_with_csharp_example



介紹

 C# 執行 powershell Scripts

當您想要使用 C# 撰寫 Powersehll 指令,必須將 System.Management.Automation.dll 加入參考,而這個 dll 位置是在:
C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0

[日本][京都][自由行] 錦市場 與 鴨川

By : Duran Hsieh

前言

京都是一個充滿日本傳統文化的都市,您在此可以看見許多穿著和服的人們逛街、欣賞充滿歷史的古城與進入神社虔誠的參拜。對於第一次跟旅行團或自主自由行到日本旅遊的您,京都是非常不錯的選擇。本篇文章主要介紹的地點為京都四条附近的景點 - 錦市場鴨川,並分享錦市場部分美食心得,歡迎大家一起交流交流 ( ^ω^)

註:錦市場的營業時間為10:00-18:00,但多數店家在17:00、甚至更早就收攤了,要前往的朋友需要注意一下時間。

關鍵字錦市場木村鮮魚Snoopy 茶屋丸龜天婦羅章魚蛋錦天滿宮鴨川川床


川床

[日本][京都][自由行] 伏見稻荷大社

By : Duran Hsieh

前言

伏見稻荷大社是京都香火鼎盛的神社之一,供奉著稻荷大神,為掌管食物、穀物神祇的總稱。過去日本將狐狸視為稻荷神的使者,故在整個神社內可以看見許許多多的狐狸像,佇立在樓梯、走道的兩旁;另外一提,在日本各地都有伏見稻荷神社,數量位居日本之冠,而位於京都為總社。來到京都,伏見稻荷大社視為必來的景點,若能搭上神事、慶典活動,更能體驗日本宗教之美。

關鍵字伏見稻荷狐狸千本鳥居街頭美食紀念品

伏見稻荷大社一景

[Stress Test] JMeter Remote Test 遠端測試

By : Duran Hsieh

前言

在某些案例需求,可能需要不同區域主機對伺服器進行壓力測試;又或者是需要更嚴苛、更大的壓力測試案例,本身發出 Request 主機資源不足情況下,就非常需要遠端測試。

主要內容如下:
1. 基本介紹
2. GUI mode 遠端測試
3. Command line Mode (Non-GUI mode) 遠端測試
這篇文章將簡單說明如何使用JMeter 遠端控制數台 JMeter Server 同時對於目標伺服器進行測試,若有錯誤或任何建議,請各位先進不吝指教。


介紹

基本介紹

下圖為執行Remote test 示意圖,需要 1台 client 與數台 remote server,而這幾台電腦都必須安裝 JMeter。我們從 client 執行測試命令,而由數台 remote server 對目標伺服器進行測試。若你的遠端主機各執行500 thread,若有5台遠端主機,就是執行2500 thread。

[Stress Test] JMeter Command line mode and report dashboard 指令操作模式與報表儀表板

By : Duran Hsieh

前言

在過去製作許多小型專案或小型形象網站,通常部會持續高流量一段時間,做壓力測試往往不需要太過於嚴苛,透過圖形化介面的JMeter很快就能完成任務。近年來接觸到大型產品專案,需要測試服務負載極限,無法於圖形化介面執行測試案例(會當掉),而官網也強調:
Don't run load test using GUI mode !
此外,最近也持續在研究持續整合,嘗試將JMeter納入其中一環,命令執行是必要的,因此特別做一份筆記簡單紀錄 JMeter 命令執行的方法。本篇文章若有錯誤或任何建議,請各位先進不吝指教。


介紹

首先我們先介紹每個指令所代表意義:
-n:  讓 JMeter 於非圖形介面模式(non-gui mode)執行
-t:  執行計畫(plan)名稱,副檔名為JMX
-l:  執行結果(result)儲存名稱,副檔名為JTL,
-j:  執行紀錄(log)儲存名稱
-r:  執行遠端測試 (依據 JMeter prorerty "remote_hosts" 設定)
-R:  執行遠端測試 (特定主機,需要於命令給予伺服器清單)
-g:  產生報表儀表板,CSV檔案(儲存路徑)
-e:  負載測試後產生報表儀表板
-o:  輸出資料夾名稱,輸出資料為負載測試後產生報表儀表板 (這個資料夾不存在或內容必須為空)

我們測試案例如下圖:
執行計畫(test plan)

[Stress Test] JMeter Preprocessor and Postprocessor 前置處理器與後製處理器

By : Duran Hsieh

前言

前面幾篇我們介紹 JMeter 一些基本的知識與操作方式,這一篇我們將簡單介紹前置處理器(Pre Processor) 與後置處理器 (Post Processor),內容包含:
1. 基本介紹
2. 前置處理器
3. 後置處理器

前置處理器後置處理器在 JMeter 是非常方便的設定,可以應付多數情境需求,若熟悉這兩個設定,寫起腳本會更加得心應手,而在後置處理器部分 - XPath Extractor部分,我們使用Debug Sample方式印出所有資料,方便您除錯。本篇文章若有錯誤或任何建議,請各位先進不吝指教。

介紹

基本介紹

在許多壓力測試情境,我們常常需要在發出 HTTP Request 前後進行一些特別的處理,如下圖所示:

[Stress Test] JMeter BeanShell 介紹與撰寫

By : Duran Hsieh

前言

Beanshell 為一個輕量級 Java interpreter,可以完整 Java 語法動態執行、片段代碼執行。JMeter 功能已經相當齊全,但我們仍能透過 Beanshell 撰寫各種客製的前處理、取樣與後置處理,製作符合各種情境的腳本。如同撰寫 Java 應用程式,在JMeter內能匯入各種套件使用,我們也將介紹如何匯入 jar 檔,在Beanshell 撰寫進行簡易的 json 解析。本篇主要內容為:
1. BeanShell 取樣
2. JAR 匯入與使用
本篇文章若有錯誤或任何建議,請各位先進不吝指教,謝謝。



介紹

BeanShell 取樣

在 JMeter,我們能增加三種有關Beanshell 的操作,分別是 Beanshell 前置處理器、後置處理器與取樣。

在第三篇隨機資料的範例中,我們簡單介紹 Beanshell 內接收 variable 與 property,並且列印出結果。使用方式方別為:
Step 1. 於執行緒群組點選右鍵,新增 BeanShell 取樣


[Stress Test] JMeter Wait, Loop, and Random 等待、迴圈與隨機數

By : Duran Hsieh

前言

撰寫壓力測試腳本如同撰寫程式一樣,經常面臨對於某些測試行為進行延遲重複處理,也有機會遇到需要隨機數產生資料進行測試的情境。在這篇,我們將介紹如何於 JMeter 中撰寫 Wait, Loop, 與 Random 腳本,與前一篇 variable 與 property 結合,撰寫腳本將更得心應手。本篇文章若有任何錯誤或建議,請各位先進不吝指導,謝謝。


介紹

Wait :延遲

延遲部分可以分成 計時器(Timer)測試動作(Test Action),有不同的設定方法。

1. Timer (計時器):
在談計時器 (Timer) 之前,我們必須詳細閱讀官網說明,個人過去有過看到 Timer 很開心直接拿來用,最後壓測結果頗詭異,很久才發現有問題。
Note that timers are processed before each sampler in the scope in which they are found; if there are several timers in the same scope, all the timers will be processed before each sampler.
Timers are only processed in conjunction with a sampler. A timer which is not in the same scope as a sampler will not be processed at all.
To apply a timer to a single sampler, add the timer as a child element of the sampler. The timer will be applied before the sampler is executed. To apply a timer after a sampler, either add it to the next sampler, or add it as the child of a Test Action Sampler.
主要重點如下:
1. Timer 的執行會在取樣前執行,無論放在同一層,或當作 child 放在某個取樣底下。如下範例,雖然計時器放在 Step1 後面,執行結果仍是 停2秒 > 執行Step 1

[Stress Test] JMeter Function, Variables and Properties 變數與性質

By : Duran Hsieh

前言

前一篇我們簡單介紹 JMeter 操作作方式與設定一個腳本測試 ASP.NET Core 範例網站。在這一篇,要介紹幾個簡單卻在撰寫腳本過程中非常重要的元素 - Function, User Defined Variables, User ParametersProperties。如同寫程式方式,可以設定使用者變數提供後續測試工作(如 Http Request, Header, PreProcessor, 與PostProcessor)..等使用,理所當然,這些變數可以傳遞參數但也受到 scope 與 thread 影響。此外,在撰寫/修改腳本期間,使用這些自訂的變數,可以讓您不需要進入各個測試行為內一個一個修改,並增加腳本可讀性,相當實用。本篇文章若有任何錯誤或建議,請各位先進不吝指導,謝謝。


介紹

Function
JMeter 定義一些變數方便我們使用,個人常用到像是:
1. threadNum : 取得目前 thread 編號
2. machineIP : 取得本地執行機器 IP address
3. machineName : 取得本地執行機器名稱
4. time: 取得時間

而使用方法非常的簡單,無論在測試工作或者BeanShell,只需要${__RefName}即可使用:
${__threadNum}
${__machineIP}
其他變數請參考: http://jmeter.apache.org/usermanual/functions.html#functions

[Stress Test] JMeter Introduction 介紹與基本操作

By : Duran Hsieh

介紹

JMeter是一套 Java-based、開源的測試工具,能對於您的網站進行功能與壓力測試。支援豐富的通訊協定、前(後)置處理、腳本撰寫、報表呈現與使用者變數功能,讓測試人員能夠撰寫符合產品測試的情境,達到有效的測試。JMeter 操作介面容易,也提供錄製腳本的功能與結果報表,功能相當強大。本系列文章若有任何錯誤或建議,請各位先進不吝指導,謝謝。
本系列文章目錄如下(暫定,會更改):
  1. JMeter Introduction 介紹與基本操作
  2. JMeter Variables and Properties 變數與性質
  3. JMeter Wait, Loop, and Random 等待、迴圈與隨機數
  4. JMeter BeanShell 介紹與撰寫
  5. JMeter Preprocessor and  Postprocessor 前置處理器與後製處理器
  6. JMeter Command line mode and report dashboard 指令操作模式與報表儀表板
  7. JMeter Remote Test 遠端測試
  8. 附錄: JMeter Recording Controller 進階操作 錄製控制器
  9. 附錄: [IIS] Performance tunning for WebAPI

在這一篇,我們將簡單介紹如何使用JMeter,內容如下:
  1. 下載與安裝
  2. 第一個網站壓力測試腳本
  3. 設定報表
  4. 測試
本篇文章原為 2013年3月1日 JMeter 基本操作,於第八屆 IT邦幫忙鐵人賽重新撰寫,於2017年5月改寫作為 JMeter 系列文章內容之一。

下載與安裝

JMeter網站,點選 JMeter.zip 下載,並且解壓縮。

[IIS] Performance tunning for WebAPI

By : Duran Hsieh

前言

最近這幾週的工作內容就是不斷對 WebAPI 進行壓力測試。與過去最大不同的是,這次有強大硬體設備讓我做更嚴格測試案例。這篇文章簡單紀錄整個測試過程,但並非所有調整都有顯著效能提升,這裡僅作為個人筆記與提供有興趣的人參考。


測試與紀錄

1. Queue Length

 IIS 會限制 application pool requests 最大值,若超過這個數值,使用者會收到 503 - Service Unavailable 錯誤訊息,Queue length 預設值為1000。官方建議值應為使用者 x 1.5 ,若使用者為2000人,Queue length 應為 3000。

設定位置在  IIS 內 Application pools > Advanced Settings... > Queue length
Quque Length

[Elasticsearch] Configuring the cluster

By : Duran Hsieh

前言

本篇文章將簡單介紹如何建立 Elasticsearch Cluster(叢集)。 Cluster 包含了許多 Elasticsearch Node(節點),每個節點負責不同的工作,包含統整控制、資料同步、資料寫入與搜尋...等工作。藉由建立叢集架構,我們可以提高 Elasticsearch的可用性與。理所當然,單一 cluster 的能力有限,另在備援與災害防護考量下,大型系統可能會有多個 Cluster 互相支援。本篇文章將簡單介紹如何在 Windows 作業系統環境下建立 Elasticsearch cluster,若有錯誤或建議也請各位先進不吝提出。



介紹

本章節主要分成三個主要內容:
  1. Node 類型
  2. Cluster 實作
  3. Elasticsearch-head 使用


Node 類型

Master
用於判斷建立與刪除索引、追蹤群集內的node、確認shards在哪一個node,在群集中扮演相當重要的角色。雖然master node也能進行索引與搜尋,但為了維持群集的穩定性,官方不建議master進行此類型工作。設定方法如下:
node.master: true
node.data: false
node.ingest: false

Data
用於儲存資料的節點,主要進行 CRUD、搜尋與 aggregations 等操作。對於data node來說,其I/O、記憶體、CPU等資源相當重要,若資源不足必須加入額外的data node。設定方法如下:
node.master: false
node.data: true
node.ingest: false

Ingest
5.0版新功能節點,可以pipeline方式處理大量資料接收。設定方法如下:

node.master: false
node.data: false
node.ingest: true

Coordinating only nodes
主要能夠進行route requests, handle the search reduce phase, and distribute bulk indexing等工作。過多的coordinating only nodes可能造成cluster負擔。設定方法如下:
node.master: false
node.data: false
node.ingest: false



Cluster 實作

我們所設計的 Cluster 架構如下圖:(4個 data node、1個ingest node與 3個master node)

[Elasticsearch] Elasticsearch installation on windows

By : Duran Hsieh

前言

Elasticsearch 是以 Lucene 為基礎的搜尋引擎,無固定 schema、JSON 文件方式儲存資料(與 Monog database 相似,No SQL Database),並以 HTTP 請求方式提供使用者操作。本篇文章將簡單介紹:
  1. 如何在 windows 作業系統下,安裝 Elasticsearch註冊 windows 服務方法
  2. 在Windows作業系統下,使用 docker 啟動Elasticsearch
若有錯誤或任何建議,也煩請各位先進不吝指教。


介紹

Windows
Step 1.前置作業  - JRE安裝
           Preparation - JRE installation

[Redis] Installing Redis on Windows, Mac,and Docker

By : Duran Hsieh

前言

先前因為工作的關係得知 Redis 這一套 in-memory data structure store,也對它非常的有興趣,苦於目前手邊的工作沒有直接對應到 Redis 相關問題,遲遲沒有好好研究它。在去年底家務事趨緩與今年初社群事務告一段落,終於抽出點時間可以嘗試沒接觸過的事物。本篇文章主要介紹如何在 macbook prowindows 與 docker 安裝 Redis 。

註:本系列筆記範圍為 redis、cluster、replica、AOF、RDB、elasticsearch、logstash、docker (dev用) 與使用C# 查詢資料等相關內容,內容會依據近日內實作隨時更動內容,待完善後再整理成系列文章,目前僅供參考。若有錯誤或任何建議,也煩請各位先進不吝指教。



介紹

Macbook pro
Step 1. 前往 Redis 網站 點選 Download 
            Go to Redis Website and click Download 

[AngularJS] copy, extend, and merge example

By : Duran Hsieh

前言

近來因為工作上的需求,開始面對前端(Angularjs)、後端(C# MVC WebAPI)與預存程序(Stored procedure)介接作業。雖然工作分配以後端與預存程序為主,但與前端介接與測試的過程中,個人會去了解前端程式如何撰寫與如何運作,一方面可以加速介接工作與協助處理問題,另一方面也可以學習前端技術。這次所介紹的三個 function,是因為個人不常撰寫前端,連續三次看到皆需要重新查詢其使用方法,特此學習與紀錄,也提供有興趣的朋友參考,若有錯誤或建議請各位先進不吝提出。

copy, extend, and merge.

Tag : ,

[食記][台中][石頭火鍋] 萬客什鍋 青海店

By : Duran Hsieh

前言

因為過去就讀逢甲資工所與現今居住在台中市的關係,晚餐偶爾會到逢甲大學附近用餐。但最近路過青海路時,都會發現一間滿滿排隊人龍的火鍋店 -- 萬客什鍋,深深吸引我們的目光,好奇的我們,決定在某平日晚上前往嘗試這間店家。
雖然為平日前往用餐,但排隊人龍與等待時間沒讓我沒失望:我們從55號等到111號(約 19:30 等到 22:00 )才輪到我們用餐,故下定決心一定要撰寫一篇記錄文來紀念此次用餐(笑)。


商家相關資訊
『萬客什鍋』 青海店
聯絡電話:04-27086722
地址:台中市西屯區青海路二段246-15號 (地圖點我)
營業時間:17:00 - 04:00 (16:30 可拿號碼牌 )
用餐時間:2016年11月10日
Facebook粉絲團:https://www.facebook.com/MONEY686868
備註:1.可事先打電話預訂外帶
            2.可共鍋,需加40元
            3.燒酒類只含高麗菜盤,非基本菜盤,需加50元升級

關鍵字菜單麻油雞鍋酸菜白肉鍋炸蛋


介紹

來到 萬客什鍋 才發現現場久候是真的!! 如前言所描述,我們足足等了2.5個小時,耐心真的會磨完,且晚吃飯對身體不適很好。事後做完功課,特別提醒想來嘗鮮的朋友,不想久候幾個可能的方案提供參考:
1. 先領號碼牌:從 16:30 開始可以先領號碼牌, 17:00正式營業,可提早來拿號碼牌。
2. 外帶:先打電話預訂外帶後,再前往取餐。
3. 當消夜:晚餐時段先來拿號碼牌,消夜時段再來用餐。
現場53號,拿到候位111號

Tag : , ,

[料理] 茴香水餃

By : Duran Hsieh

前言:

家裡最常吃的水餃其實是高麗菜+韭菜混搭水餃,有高麗菜的水分與甜味,又有韭菜的風味,是家中熱門料理。某次在外面用餐吃到茴香水餃,對於茴香的味道久久不能忘懷,故在某天早上女友一起製作這道料理,在此記錄下來,提供有興趣的朋友參考。

在過去的經驗,肉的部位水餃皮的厚度決定水餃味道,所以個人選用豬後腿肉與中等大小的水餃皮。但也因為每個人口感不同而異,您可以嘗試看看不同的肉與水餃皮,找到最適合家人的口味。(如水餃皮部分,個人喜歡厚皮,女友喜歡薄皮)
註:茴香味道不是每個人都愛,請先嘗試後再製作)


準備食材:

水餃皮                一斤(中等大小)
豬後腿絞肉        一斤(油肉比3:7)
茴香                   1把
鹽                       少許
黑胡椒/胡椒       少許
麻油                   少許
蔥/薑(選用)        少許(個人喜歡水餃原味,故蔥、薑、香油皆用於沾醬,可依喜好加入)      
這次的主角:茴香

Tag : , , ,

[旅遊][苗栗] 半天寮好望角 (後龍鎮半天寮休閒文化園區)

By : Duran Hsieh

前言

在苗栗海線除了著名的白沙屯海景外,另一個可以同時欣賞風力發電風車、鐵道與海景的地方,就是苗栗的半天寮好望角。半天寮好望角位於苗栗縣後龍鎮,您可以沿著西濱快速道路(台61線)轉苗33線行駛,伴隨著美麗海景來到這裡。因為風力資源豐富,這裡擁有許多風力發電設備(風車),沿著岸邊整齊佇立著,結合藍天、海景與鐵道,儼然成為一幅美麗的畫。
除此之外,半天寮好望角的夕陽也是許多人推薦的,對拍攝夕陽有興趣的人可以參考看看。與家人用過午餐後,悠閒來這裡吹吹海風與欣賞沿岸景色,再適合不過了!

關鍵字:半天寮好望角鐵道風車舊砲台

海岸一景

Tag : , , ,

[Gulp][.Net Web Application][CI] 最終篇: Team City 設定 與 Build Scripts 撰寫

By : Duran Hsieh

前言

個人實作 .Net Framework 、.Net Core 持續整合流程,並整合前端佈署至CDN整體流程後,深感製作自動化流程隨著技術創新,變得越來越簡便。尤其是 .Net Core 部分,Restore, Build, Test部分都可以以自身指令執行,不需要額外引入套件與撰寫指令,只需要實作 Deploy 部份,這讓我非常的驚訝(但這部分就不在此系列贅述,而會在.Net Core系列文進行說明),也感嘆科技進步神速。

此外,這篇文章是這系列最後一篇,個人覺得後面幾篇文章表達方式比較不好,近期內會逐步修正部分內容,讓有興趣的人更容易理解,請多包涵。在此也感謝花費時間觀看此系列文章的所有人,若有觀念錯誤或建議請各位先進不吝指教。

本系列文章大概內容如下(暫定,會修改):
使用 Gulp 實作 Asp .Net Web Application 持續整合
Using gulp to implement .Net web application continuous integration
1.Gulp 基礎教學
2.流程簡介、代入參數與修改AssemblyInfo
3.透過 Gulp:nuget-runner 進行 NuGet Package Restore
4.透過 Gulp:gulp-msbuild 進行 Build project
5.透過 Gulp:gulp-nunit-runner 進行 Unit Test
6.Gulp CI Deploy (1) - 透過Gulp:robocopy 進行 Deploy
7.Gulp CI Deploy (2) - 使用 MSDeploy (WebDeploy) 進行 Deploy
8.Gulp CI IIS Management - 使用 PowerShell 變更實體路徑
9.最終篇: Team City 設定 與 Build Scripts 撰寫
   9-1 Team City Agent 相關說明
   9-2 Team City Server 簡易設定說明
   9-3 Build Scripts 撰寫
   9-4 測試結果

本系列文章使用的環境如下:
1.Visual Studio 2015 Community Update 3
2.Visual Studio Core
3.TeamCity
4.Nunit 3.2.1.0
5.NuGet 3.4.4.1321


介紹

Team City Agent 相關說明
Step 1. 開發者於 Team City 操作介面選擇 Agent 與 Branch 後,點擊 Run。
Step 2. Teamcity 觸發 Agent,執行持續整合動作。
Step 3. Team City Agent 從 Git Server 取的該 Branch 程式碼。
Step 4. 開始執行 Build Scripts,依序進行 Restroe、Build 與 Test。
Step 5. 執行 Deploy 至 Web Server 工作; Deploy 後,變更 Web Server 該網站實體路徑。

- Copyright © Duran Hsieh @ Matsurigoto - Date A Live - Powered by Blogger - Designed by Johanes Djogan -