跳到主要內容

發表文章

建立自我簽署的 SSL 憑證

開發網站初期,在測試https時需要一個自簽的個人憑證。 可以透過IIS管理介面簡單建立: 1. 開啟 IIS 管理介面。 2. 在 [連線] 窗格中,選取最上方的機器節點。 3. 在 [詳細資料] 窗格中按一下伺服器憑證。 4. 在 [動作] 窗格中按一下建立自我簽署的憑證。 5. 輸入 HOSTNAME 做為憑證易記名稱。 6. 選取個人做為憑證存放區。 但是此方法產生出來的憑證僅能匯出.pfx的檔案,無法取得.crt (憑證檔案) & .key (私密金鑰)。 若要完整從無到有建立一個憑證,與所有的檔案,可以參考以下網址: 如何使用 OpenSSL 建立開發測試用途的自簽憑證 (Self-Signed Certificate)

[Docker] 建立並運行一個ASP.NET Core網站的Docker container

要透過Docker將原本的ASP.NET Core網站包成image之前,請先確認你的ASP.NET Core的Program.cs已經設定了 http and/or https 的port宣告: public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseKestrel(options => { options.Listen(IPAddress.Any, 80); options.Listen(IPAddress.Any, 443, listenOptions => { listenOptions.UseHttps("MgvInfoSpServer.pfx", "1234"); }); }) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .UseApplicationInsights() .Build(); } * 請將 options.Listen() 中的 IP address 設成 IPAddress.Any 接著就可以將ASP.NET Core proj...

[ASP.NET] 網頁透過iframe內嵌外部網頁,遇到的問題( Cross-Origin Requests (CORS)、X-Frame-Options、session & cookie)

一般網站在一些需要整合外部網站資源的時候,簡單的方式就是透過Web service API取得資料,在行整理運用在自己的網站上。但有時候不是單純取得資料,而要直接顯示外網站的某個網頁在自己的網頁上時,作法通常是用iframe將網頁顯示在iframe範圍內。 這個時候就要注意一些地方,否則iframe的網頁會無法正常執行。 整理如下: 1. Cross-Origin的設定     ASP.NET Core 2 系列 - 跨域請求 (Cross-Origin Requests)      https://blog.johnwu.cc/article/ironman-day26-asp-net-core-cross-origin-requests.html 2. X-Frame-Options的設定     In Startup.cs - ConfigureServices() : //把每個 Requset 的X-Frame-Options都移除 services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true); 3. session & cookie的設定     將 cookie 的 SameSite 設為 None     In Startup.cs - ConfigureServices() :             services.AddSession(options =>             {                 options.Cookie.Name = ".MgvInfoSpServer.Session";                 // Timeout for cl...

[Python] 自己開發software watchdog監控程式狀態

在Windows下想要有一個software watchdog的機制來監看自己的軟體是否還活著,你可以參考以下的簡單作法: 1. 在Windows排程設定中設定每分鐘執行一次被監看的程序 (若已執行則不重複執行) 2. 寫一個小程序,在Windows排程設定中設定每分鐘執行一次這個程序 (若已執行則刪除後再執行) 3. 小程序執行後透過Socket與被監看的程序連結,並傳遞自定義的簡單字串。相對應的,被監看程序也要有一個Socket thread讓小程序連接並回應 4. 若無法連結上被監看程序或是沒收到被監看程序的ACK回覆則認定程序出問題 5. 小程序執行指令關閉被監看程序,小程序結束自己 6. 被監看程序待1分鐘後被Windows排程重新執行 7. 回到第3步驟 Windows排程設定中設定每分鐘執行一次被監看的程序:  Windows排程設定中設定執行的方式:

[ASP.NET] 網站架構MVC是什麼?

近十年網站設計領域最火的架構就是MVC模式,MVC是什麼? 其實MVC是一種軟體架構模式,把程式分成三個部分來分別開發、聯繫。最早是在西元1978年的阿公時代被提出的,近代被發現很適用於網站運作的模式,所以被拿來用在網站開發。 網路上有許多MVC的介紹,所以這裡話不多說,就直接介紹重點觀念就好~ V iew (視圖) - 介面設計人員進行圖形介面設計。 C ontroller (控制器)- 負責轉發請求,對請求進行處理。 M odel (模型) - 程式設計師編寫程式應有的功能(實現演算法等等)、資料庫專家進行資料管理和資料庫設計(可以實現具體的功能)。 簡單來說,可以想像成我們的程式從外(與外界溝通)到內(對內的資料處理)分別是: View→Control→Model 外界要與我們程式溝通一般來說是透過View這個介面來進行,而View會將外界的操作經過轉換整理,透過Controller提供的功能接口進行後續動作,若Controller的動作需要存取資料庫的資料,則會透過Model所提供的介面,進行資料存取。 OK,這樣就是一個基本的MVC架構的觀念了,接下來針對ASP.NET來說明MVC在實際source code是怎麼運作的: 以Visual Studio 2017建立一個ASP.NET Core的專案,可以看見專案預設會建好View、Controller、Model的資料夾,很直觀的,在view資料夾下就是放置網頁的檔案,controller下的檔案就是提供各種的API function供網頁端進行叫用,而Model下的就是Database的欄位對應的定義,提供讓controller進行資料庫存取用。 下面舉例在實際運作時會是什麼情況: 1. 透過瀏覽器(EX. Chrome、IE)開啟網站首頁(Home): 流覽器(client)透過網址(http url)連到網站(server),網站解析網址後發現是一個網頁,而後將網頁(html、javascript、jquery、css)回傳給流覽器(client),流覽器再將網頁檔案顯示在client端的視窗上。 2. 網頁上需要顯示網站資料: 在流覽器將網頁檔案顯示在client端的視窗上後,遇到要取得網站資料的情況時,流覽器發送http request給網...

[Python] 用 Python + tkinter 建立第一個Windows應用程式

在Windows環境下要用Python開發帶有UI的應用程式,最快的方式就是使用Python內建的UI程式庫 - Tkinter。(關於Tkinter的相關背景知識可以在google搜尋"wiki Tkinter") 以下直上程式碼範例來看如何建一個Python + Tkinter的程式吧! (本範例程式是在Python3.7.3環境中執行) 在程序最初先建立一個application class,然後在main的一開始產生application物件: # coding=UTF-8 import tkinter import socket #for sockets import sys #for exit import os class Application(tkinter.Frame): # Application构造函数,master为窗口的父控件 def __init__(self, master=None): # 初始化Application的Frame部分 tkinter.Frame.__init__(self, master) # 显示窗口,并使用grid布局 self.grid() # 创建控件 self.createWidgets() self.master.protocol("WM_DELETE_WINDOW", self.on_closing) def createWidgets(self): def on_closing(self): app.master.destroy() app = Application() app.master.title("WaferCheckApp") app.master.geometry('800x600') app.master.protocol("WM_DELETE_WINDOW", on_closing) app.mainloop() app.mainloop() 就進入主循環裡,程序會執行a...

[ASP.NET] 簡介ASP.NET 的進化史

在網站開發的領域,ASP.NET絕對是站有一席之地。Terry在這些年承接的網站開發的案子中,大多數的大公司都是接受甚至是指定要以ASP.NET進行開發的。 本篇簡單介紹一下ASP.NET的發展演進的過程和一些基本的觀念: ASP.NET 是自 2002 年一月推出的一套網頁開發框架,早期只有 ASP.NET Web Form 架構,直到 2009 年推出以 MVC 為主的開發框架 ( ASP.NET MVC 1.0 ),後續微軟在 2014推出ASP.NET 5 (新一代從頭開始打造的 ASP.NET 核心功能) ,2016 推出 ASP.NET Core (基於 ASP.NET 5 的更名),直到現在。 版本種類: 目前已推出的 ASP.NET 版本 ASP.NET 1.0 ( 2002-1-16 ) ASP.NET 1.1 ASP.NET 2.0 ASP.NET 3.5 ASP.NET 4.0 ASP.NET 4.5 ASP.NET 4.6 ASP.NET 4.7 ASP.NET 4.8 ( 2019-4-18 ) 目前已推出的 ASP.NET MVC 版本 ASP.NET MVC 1.0 ( 2009-3-13 ) ASP.NET MVC 2.0 ASP.NET MVC 3.0 ASP.NET MVC 4.0 ASP.NET MVC 5.2  ( 2014-12-25 ) 目前已推出的 ASP.NET Core 版本 2014/05/12 ASP.NET 5  2014/07/06 ASP.NET 5 Alpha2 2014/08/17 ASP.NET 5 Alpha3 2014/10/07 ASP.NET 5 Alpha4 2014/11/12 ASP.NET 5 Beta1 2015/01/14 ASP.NET 5 Beta2 2015/03/13 ASP.NET 5 Beta3 2015/05/01 ASP.NET 5 Beta4 2015/06/30 ASP.NET 5 Beta5 2015/07/27 ASP.NET 5 Beta6 2015/09/02 ASP.NET 5 Beta7 2015/10/15 ASP.NET 5 Beta8 ...