只需將數字存入 List 帶入 Function 即可計算出結果。
/// <summary> /// 平均值 /// </summary> /// <param name="val"></param> /// <returns></returns> static double AVG(List<double> val) { try { double _sum = SUM(val); if (_sum > 0 && val.Count > 0) { double _avg = _sum / (double)val.Count; return _avg; } else return 0; } catch { return 0; } } /// <summary> /// 加總 /// </summary> /// <param name="val"></param> /// <returns></returns> static double SUM(List<double> val) { try { if (val.Count > 0) return (from g in val select g).Sum(); else return 0; } catch { return 0; } } /// <summary> /// 眾數 /// </summary> /// <param name="val"></param> /// <returns></returns> static double Mode(List<double> val) { try { val.Sort(); double num = val.First(); int count = 0; double max_num = num; int max_count = 0; foreach (double v in val) { if (v == num) count++; else { if (max_count < count) { max_num = num; max_count = count; } num = v; count = 1; } } return max_num; } catch { return 0; } } /// <summary> /// 調和平均數 /// </summary> /// <param name="val"></param> /// <returns></returns> static double HarmonicAverage(List<double> val) { try { int i = 0; double num = 0; foreach (double v in val) { if (v > 0) { i++; num += 1 / v; } } if (i > 0 && num > 0) return i / num; else return 0; } catch { return 0; } } /// <summary> /// 幾何平均數 /// </summary> /// <param name="val"></param> /// <returns></returns> static double GeometricMean(List<double> val) { try { int r = 0; double prod = 1; foreach (double v in val) { if (prod * v > double.MaxValue) { prod = Math.Pow(prod, 1.0 / r); r = 0; } r++; prod *= v; } return Math.Pow(prod, 1.0 / r); } catch { return 0; } }
只需將數字存入 List 帶入 Function 即可計算出結果。
/// <summary> /// 標準差(StandardDifference) /// </summary> /// <param name="val"></param> /// <returns></returns> public double SD(List<double> val) { if (val.Count > 1) { double avg = AVG(val); double _result = (from a in val select Math.Pow(a - avg, 2)).Sum(); if (avg > 0 && _result > 0) { double _sum = _result / (double)(val.Count - 1); double _Sqrt = Math.Sqrt(_sum); return _Sqrt; } else return 0; } else if (val.Count == 1) { return 0; } else { return 0; } }
Windows 7 含以上支援 taskkill 指令,Windows XP 只支援 tskill 指令,所以這邊偷懶利用 try cache,當 taskkill 無法使用時換成 tskill。
利用指令關閉 iexplore.exe:
while (Process.GetProcessesByName("iexplore").Length > 0) { Console.WriteLine("關閉瀏覽器"); try { Process P = new Process(); P.StartInfo.FileName = "taskkill"; P.StartInfo.Arguments = "/F /IM iexplore.exe"; P.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; P.StartInfo.CreateNoWindow = true; P.Start(); P.WaitForExit(); } catch { Process P = new Process(); P.StartInfo.FileName = "tskill"; P.StartInfo.Arguments = "iexplore.exe /A /V"; P.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; P.StartInfo.CreateNoWindow = true; P.Start(); P.WaitForExit(); } }
FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion.ToString()
首先加入Function
/// <summary> /// 反序列化 /// </summary> /// <param name="data"></param> /// <returns></returns> static T DoDeserialize<T>(string s) { XmlDocument XD = new XmlDocument(); try { XD.LoadXml(s); XmlNodeReader XNR = new XmlNodeReader(XD.DocumentElement); XmlSerializer XS = new XmlSerializer(typeof(T)); object obj = XS.Deserialize(XNR); return (T)obj; } catch { return default(T); } } /// <summary> /// 序列化 /// </summary> /// <param name="obj"></param> /// <returns></returns> static string DoSerialize(object o) { XmlSerializer XS = new XmlSerializer(o.GetType()); StringBuilder SB = new StringBuilder(); StringWriter SW = new StringWriter(SB); XS.Serialize(SW, o); return SB.ToString(); }
可以利用 Win32 API 控制 Console 視窗 最大化 或 最小化。
[DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SetWindowPos( IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, int uFlags); private const int HWND_TOPMOST = -1; private const int SWP_NOMOVE = 0x0002; private const int SWP_NOSIZE = 0x0001;
要控制視窗時只要呼叫:
IntPtr hWnd = Process.GetCurrentProcess().MainWindowHandle; SetWindowPos(hWnd, new IntPtr(HWND_TOPMOST), 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
可以利用 Win32 API 控制 Console 視窗 最大化 或 最小化。
[DllImport("User32")] private static extern int ShowWindow(int hwnd, int nCmdShow); private enum CommandShow : int { SW_HIDE = 0, SW_SHOWNORMAL = 1, SW_NORMAL = 1, SW_SHOWMINIMIZED = 2, SW_SHOWMAXIMIZED = 3, SW_MAXIMIZE = 3, SW_SHOWNOACTIVATE = 4, SW_SHOW = 5, SW_MINIMIZE = 6, SW_SHOWMINNOACTIVE = 7, SW_SHOWNA = 8, SW_RESTORE = 9, SW_SHOWDEFAULT = 10, SW_FORCEMINIMIZE = 11, SW_MAX = 11 } ;
將 iexplore.exe 視窗最大化:
Process[] p = Process.GetProcessesByName("iexplore"); if (p.Length > 0) { for (int i = 0; i < p.Length; i++) { int hwnd = p[i].MainWindowHandle.ToInt32(); ShowWindow(hwnd, (int)CommandShow.SW_NORMAL); } } p = null;
可以利用 Win32 API 控制 Console 視窗 最大化 或 最小化。
[DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SetWindowPos( IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, int uFlags); private const int HWND_TOPMOST = -1; private const int SWP_NOMOVE = 0x0002; private const int SWP_NOSIZE = 0x0001;
要控制視窗時只要呼叫:
ShowWindow(ThisConsole, MAXIMIZE);
.Net 可以使用 SquishIt 進行 CSS 及 JS 組合並壓縮,首先必須先下載檔案。
官方網址:http://www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher
本站下載:jetheredge-SquishIt-d9184c7
以往寫網頁會加入一堆 CSS 及 JS 如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <link href="CSS/a.css" rel="stylesheet" type="text/css" /> <link href="CSS/b.css" rel="stylesheet" type="text/css" /> <link href="CSS/c.css" rel="stylesheet" type="text/css" /> <link href="CSS/d.css" rel="stylesheet" type="text/css" /> <link href="CSS/e.css" rel="stylesheet" type="text/css" /> <script src="JS/a.js" type="text/javascript"></script> <script src="JS/b.js" type="text/javascript"></script> <script src="JS/c.js" type="text/javascript"></script> <script src="JS/d.js" type="text/javascript"></script> <script src="JS/e.js" type="text/javascript"></script> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
當網頁讀取時需要載入多個 CSS 及 JS,這樣需要浪費較多的 Request 及頻寬,如下圖:
11次Request,約 295KB
如果檔案為 .Net 倒是很好處理,不過如果為 html 就沒辦法透過程式加上 Content-Type,所以此時只要修改 web.config 即可達到效果。
打開 web.config 進行編輯,在 <system.webServer> 下的 <staticContent> 裡加入以下:
<remove fileExtension=".htm" /> <mimeMap fileExtension=".htm" mimeType="text/html; charset=UTF-8" /> <remove fileExtension=".html" /> <mimeMap fileExtension=".html" mimeType="text/html; charset=UTF-8" />