精選

園丁的話

歡迎到叡揚第一次嘗試的部落格分享,這也是我們從鼓勵內部分享後邁出的另一大步。

不同於公司公開的官方文件或是網頁資料,這些部落格來自公司現在與過去的員工的個人意見 ── 它們表達我們在工作中智慧上的領悟與挫折,或是情感上的喜樂與哀愁。

繼續閱讀 “園丁的話"

使用 Docker for Windows 來運行 ASP.NET WebForms

t20pc32vbru-thomas-kelley

本文介紹在 Windows 10 使用 Windows Container 來執行 ASP.NET 4.6 WebForms 程式。

想要在 Windows 10 上執行 Windows Container,

目前需要安裝 Docker for Windows (beta) 這個版本,如下,

https://docs.docker.com/docker-for-windows/

 

安裝完成後,會在工作列 Docker Icon 上按右鍵,切換到 Windows Container… 如下,

再來就以「系統管理者身份」開啟 PowerShell ,輸入 docker version ,來看看 Server 是否為 Windows Container。

也可以從 docker hub pull windows 的 image 下來,如下,

可以輸入 docker images 來看目前有多少 image,如下,

也可以執行 docker run -it microsoft/windowsservercore 進入 Windows Server Core 操作,如下,

基本的 Docker 操作熟練之後,就可以將 ASP.NET 程式放到 Container 之中。

註:可先在 Linux Container 環境中測試,檔案比較不會那麼大!!!

首先建立 ASP.NET 4.6 WebForms 專案,並在 default.aspx 中放入一個 GridView ,

在 default.aspx.cs 中則從建立測試的資料 Bind 到 GridView 上,如下,

default.aspx:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <h3>This is asp.net 3.5 web form </h3>
        <asp:GridView ID="GridView1" runat="server"></asp:GridView>
    </div>
    </form>
</body>
</html>

default.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
	if (!Page.IsPostBack)
	{
		 
		        DataTable dt = new DataTable();
                dt.Columns.Add("c1", typeof(string));
                for (int i = 1; i < 15; i++)
                {
                    dt.Rows.Add(i.ToString());
                }
                GridView1.DataSource = dt;
                GridView1.DataBind();
	}
}

建置完成後,就將程式放到本機的某個目錄之中(containerImage),並建立 dockerfile ,如下,

# extending the `microsoft/aspnet` image.
FROM microsoft/aspnet

# Next, this Dockerfile creates a directory for your application
RUN mkdir C:\randomanswers

# configure the new site in IIS.
RUN powershell -NoProfile -Command \
    Import-module IISAdministration; \
    New-IISSite -Name "ASPNET" -PhysicalPath C:\randomanswers -BindingInformation "*:8000:"

# This instruction tells the container to listen on port 8000. 
EXPOSE 8000

# The final instruction copies the site you published earlier into the container.
ADD containerImage/ /randomanswers

再來就是透過 docker build 來產生我們的 image ,如下,

有了 image 就可以docker run  來測試看看了,如下,

註:目前 Windows Container 還無法順利的將 Container 的 port 與 host 的 port 串接起來,所以目前要測試要連到 container 測試。

所以要取得 container 的 ip  (dockr inspect …),然後透過 browser 來測試看看我們部署上去的程式是否可以順利執行,如下,

如果有新的版本,可以再建立出另一個版本的 Container 哦!

例如default.aspx.cs中我改從SQL讀出來,如下,

因為都是 Base 在 microsoft/aspnet 這個 image 上,除了第1次 Build 它會拉下 ServerCore & IIS 後,其他再 build image 都非常快哦!

 

參考資料

Migrating ASP.NET MVC Applications to Windows Containers

從【一例一休】牽拖Specification By Example

勞動部在105年12月通過一例一休,除了調整休假日與特休天數外,期望透過「工資成本以價制量」、「工時安排總量管制」方式,進一步落實週休二日之目標。法案通過後勞方資方似乎都不太買帳,但這不是今天要牽拖的重點,今天是以公司MIS和HR的角色來看如何將冷冰冰的法條透過Specification By Example轉換成可執行的系統。

繼續閱讀 “從【一例一休】牽拖Specification By Example"

Model Validation:進階應用的遠端 API 驗證(Remote validation)

簡單來說,
Model Validation 就是開發者在 Model 中的 Metadata 中加上驗證指令,
搭配用戶端的 Client-side library 進行驗證的協同處理.
驗證規則被包含在 System.ComponentModel.DataAnnotations 命名空間

從 .Net MVC 3.0 版本開始,
前端驗證就開始採用 jQuery Validation 與 Unobtrusive JavaAcript 模式,
到了 4.0 版本,
.Net MVC 就已經將採用的相關熱門工具預設綁定在 Bundle 中,
開發時僅需載入 Bundle(@Script.Render(“~/bundles/jqueryval") )即可開始實作.

以下將介紹兩種驗證模式的實作方式:Client-side validation & Remote validation

繼續閱讀 “Model Validation:進階應用的遠端 API 驗證(Remote validation)"

從【一例一休】牽拖以0.5小時為最小請假單位的作法

勞動部在105年12月通過一例一休之後,開始了國內各公司HR與MIS不眠不休的制度與系統調整。以勞基法的規定,滿週年後才給假,且給假天數都是整數,所以不會有依比例的問題。但由於之前公司是採用曆年制,為配合勞基法未來修法方向,明年也將調整為週年制,在制度轉換的過渡期則是以105/12/31計算員工在公司的整數年年資,以勞基法新級距所對照出來的休假天數,再依到職週年日佔全年日期的比例計算。不過,公司的給假的規定是一天8小時,休假最小單位是0.5小時,所以計算出來的休假時數還要再判斷:未滿0.5小時以0.5小時計,超過0.5小時未滿1小時以1小時計。

今天要來牽拖的就是這最後一個規則:未滿0.5小時以0.5小時計,超過0.5小時未滿1小時以1小時計

繼續閱讀 “從【一例一休】牽拖以0.5小時為最小請假單位的作法"

[Tool]利用 Microsoft Monitoring Agent 來找出系統效能及異常問題

想要蒐集系統有什麼異常或是效能問題嗎?
以前都是去解析IIS Log,現在您有更好的工具來幫忙哦!
原本在System Center中的Module,現在也可以單獨使用了哦!

繼續閱讀 “[Tool]利用 Microsoft Monitoring Agent 來找出系統效能及異常問題"