C# 2015 學習紀錄:「Unobtrusive Validation」

By // 沒有留言:
ASP.NET 4.5以後的版本提供了「Unobtrusive Validation」功能,可以在用戶端(Client-Side)利用jQuery進行認證(Validation)功能(兩種)。

「Unobtrusive Validation」預設是開啟的,表示ASP.NET會使用jQuery進行驗證。
(jQuery是JavaScript其中一個的資源庫,可以取代JavaScript並提供跨瀏覽器、更省資源的驗證功能。)如果關閉,則ASP.NET會使用4.5版本以前HTML的腳本元素、利用JavaScript進行驗證。

如果開啟一個空專案(網站),使用ASP.NET的Validation Control時,會因為沒有jQuery資源庫與相關設定而出現相關錯誤,解決方式有兩種:利用NuGet安裝jQuery所需要的套件,或者是關閉Unobtrusive Validation。

關閉的話,可以選擇在單一頁面的(aspx)Load event handler中加入:
UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
或是直接在專案(Project或Solution)的Web.config中的configuration加入設定:
<appSettings>
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
</appSettings>


Excel 資料庫管理與模擬分析 上課心得Part I

By // 沒有留言:

移除重複資料

可以用「顏色」方式標註一樣的資料,然後按滑鼠右鍵以「醒目顏色做排序」,此時可以重複資料排序在資料前方(後方)。

什麼是資料庫?

  1. 欄位標題只能有一列
  2. 欄位名稱不能重複
  3. 如果需要一個欄位、多個敘述,可以利用「手動換列」方式達成
  4. 1筆資料需位於同1列
  5. 不能有空白列
  6. 資料庫邊界上下左右最好有一行、一欄的空白行列,以利切割區分
  7. 每個工作表最好只建單一資料庫
  8. 資料庫延展方向最好「垂直向下」
  9. 務必以「表格」型式呈現

將資料行列轉換成表格型態,會自動新增合計列、自動篩選與排序功能

加總函數

SUMPRODUCT(陣列1,[陣列2],...):計算陣列對應元素乘積的總和

醫美函數 TEXT(及格人數/C5, “0.00%")

三維參照

三維參照函數的工作表一定要連續,不可以跳的選取。支援三維參照的函數有:SUM、AVERAGE、COUNT、COUNTA、

看到資料庫形式的資料的執行步驟:

  1. 插入「表格」
  2. 變更「表格名稱」,例如「XXX表格」
  3. 新增名稱=XXX=XXX表格

身分證字號的資料驗證

  1. 要有10位元=LEN (F7)=10
  2. 第一碼要是英文字=CODE (UPPER(F7)) >= 65 * (CODE(UPPER(F7)) <= 90) 可以利用char() 與 code()
  3. 後九碼要是數字=ISNUMMBER ( - RIGHT(F7,9))
  4. 將上述三個公式相乘、最後得到TRUE或FALSE做資料驗證。

=NOT(ISBLANK(E3))*(F4>=E4)

建立「名稱」

補充筆記

  1. 利用vlookup查表,再前面多加 IF () 以及 ISBLACK() 來解決 #N/A的問題,IFERROR()
  2. 欄位名稱性質不同=變表格、欄位名稱性質相同=不變表格
  3. 能不呼叫函數就不呼叫函數,這樣可以讓效能比較好。

C# 2015 學習紀錄:「Refactoring重構」與「參數傳遞值或參考」

By // 沒有留言:

Refactoring重構函數

在C#裡,VS提供一個很簡報的方式,可以幫助我們把現有的程式碼片段,輕易地轉換成一個區域函數(Method),讓Programmer可以很輕鬆的管理開發的程式碼。

使用方式:

  1. 將欲轉換的程式碼圈選。
  2. 按下Ctrl + . (period)。
  3. 選擇Extract Method。
  4. 命名新的函數與呼叫函數名稱。

用refactoring方式產生的區域函數,在使用上是不使用「this」來呼叫函數的,且產生的函數識別字中也多了「static」的字樣,與一般自行新增的不同(日後詳細補充static的細節)。

用「值」或「參考」來傳遞參引數

平常呼叫函數時,我們通常都是值的方式傳遞給函數去運算,這樣可以有效確保原本變數的值不被改變、維持獨立性,但有時候我們可能也需要讓函數去處理同一個值、而不是複製的分身,此時我們便需要利用「Reference」的方式,讓函數可以處理同一個變數的值,例如:

Private vodi CalculateFutureValue ( decimal monthlyinvestment, decimal monlyInterestRate, int months, ref decimal futureValue)

{

for (int i = 0; i < months; i++)

[

futureValue = (futureValue + monthlyInestment) * (1 + monthlyInterestRate);

}

}

上述例子因為第四個參數是用「ref」的方式,因此該函數處理的是與主程式同一個函數的值,因此這個函數就不需要有回傳,futureValue已經擁有算數處理過的結果了。

參考的參數傳遞方式有兩種,分別是「ref」跟「out」的方式,格式如下:

[ { ref | out } ] type variableName

「ref」跟「out」主要的差別是使用「out」時,該變數可以不事先初始化,但在呼叫的函數程式執行結束前,必須要將值賦予給這個變數。

關於參數傳遞使用值或參考方式,有幾點注意事項:

  1. 通常使用「值」來進行傳遞是比較好的寫程式習慣,這樣變數不會被函數干擾或更改。
  2. 使用「ref」會比「out」的習慣來得好,因為總是先初始化一個變數的數值是比較良好的習慣。
  3. 使用「out」的例外時機是,當我們想使用「TryParse」這類的函數時,因為它的函數在定義第二個參數時,便已指名需要用「out」的模式來傳遞參數了。
  4. 用「ref」跟「out」的方式回傳參數時,通常用一個「Object」會比單獨回傳個別的值來得好。
  5. 當我們回傳參考時,被呼叫的函數就不用再寫return了。

「實值 Value Type」與「參考 Reference Type」型別

根據MSDN文件說明:「C#有兩種資料型別:實值與參考,通常是須考量應用程式的效能時,或是管理資料與記憶體時,這部分的差異便顯得格外重要。」當變數是以基本內建資料型別的其中一種方式,或是使用者定義的結構進行宣告時,這類的變數便是實值型別 (Value Type),而其中有一個例外是「string」資料型別,它是屬於參考型別。

實值型別會將內容儲存在配置於堆疊的記憶體中,例如 int x = 42; 其中的42會存在堆疊的記憶體區域中,當變數X因為定義的方法完成執行而超出範圍時,堆疊就會捨棄此值。使用堆疊很有效率,但是實值型別有限的存留期,讓它並不適合在不同類別之間共用資料。

相反地,參考性別(例如類別或陣列)會將內容配置在堆積(Heap)的不同記憶體區域,當方法完成時,這段記憶體並不會歸還給堆積,只有當C#的記憶體回收系統判定不需要它時才會回收,雖然在宣告參考型別時會需要較大的額外負荷,但是它們具有可以從其他類別存取的優點。

這部分日後有機會會再撰文補充。

呼叫函數 (Calling Method) 與被呼叫的函數 (Called Method)

註:原文書討論這類呼叫函數 (Calling Method) 與被呼叫的函數 (Called Method) 時會讓人有點混淆,這邊舉個簡單例子來說明:

// f () 此函數含有呼叫g()的函數,因此是「呼叫函數 Calling Method」void f()

{

g();

}


// g() 為實際被呼叫函數,因此是「被呼叫函數 Called Method」void g()

{

}

C# 2015 學習紀錄:控制結構、參數傳遞

By // 沒有留言:

邏輯運算元 && ||

當我們使用「&&」時,條件式內的兩個條件都必須為真「True」才會符合AND的條件 ,而「||」則是兩個條件內的任一為真即可,而不論是「&&」或「||」在檢驗條件式時,只要第一個條件式不成立,第二個條件的內容即不會執行(short-circuit operators)。如果必須要執行第二個條件式的話,可以改用「&」或「|」,來強制讓第二個條件式執行完再判斷 True或 Flase。

邏輯運算元的運算順序是先計算算數運算與相關比較邏輯元後,再執行邏輯判斷,如果有需要或對運算順序有疑問的話,可以用「Parenthese」雙括號來強制指定運算順序。

選擇性的傳遞參數

當使用C#呼叫方法(Method)時,如果我們遇到呼叫方法時無法指定一些參數時、想要用預設參數(Optional Parameters)時,我們可以在定義方法時將參數的預設值是先定義好。

像是:

private decimal GetFutureValue

(decimal monthlyInvestment,

decimal monthlyInterestRate = 0.05m, int months = 12) // 這2個引數(參數)已是先定義好值

{

decima futureValue = 0m;

for (int i=1; i < months ; i++)

{

futureValue = (futureValue + monthlyInvestment) + (1 + monthlyInterestRate);

}

return futureValue;

}

在這個 GetFutureValue的方法裡,第一個monthlyInvestment是在呼叫方法時必須要代入的參數,但是第二、三個參數monthlyInterestRate 與 month則是彈性需要的,以下用三個呼叫的方式來說明:

  1. decimal futureValue = this.GetFutureVale (monthlyInvestment, monthlyInterestRate, months),傳遞三個變數去呼叫函數,就像平常的使用方式。
  2. decimal futureValue = this.GetFutureValue (monthlyInvestment, monthlyInterestRate),省略了第三個變數去呼叫函數,此時程式會自動以函數預設的month = 12作為參數使用。

在使用預設參數時有幾點需要注意:

  1. 預設參數的位置必須在一般參數的後面,也就是在宣告彈性的或預設的參數時,其後的參數都必須要也是彈性(Optional)或預設(Default)的。
  2. 如果你在呼叫預設、彈性參數時的引數是使用位置(Position)方式傳遞的話,則這彈性參數之前的一般參數都必須在呼叫此函數時先定義好要傳遞的值(Value),且函數內引數的預設參數必須要有順序性,以上面的例子來說明就是不可以忽略第二個monthlyInterestRate引數,然後直接傳遞month的變數。
  3. 如果參數傳遞的方式是以名稱(Name)方式時就不用按照第2點的限制使用,可以不用管該變數時一般的還是彈性的。

參數傳遞如何使用名稱(Name)傳遞?

使用宣告變數(Parameter)時的名稱,接著以「:」冒號接著,再打上要呼叫函數的變數名稱(Argument)即可。像是:decimal futureValue = this.GetFutureValue(monthlyInvestment:monthlyInvestmet)

使用以名稱方式傳遞參數的好處就是不用遵守該函數的變數是不是預設變數,以及不用遵守呼叫時的變數順序,另外也可以與位置(Position)傳遞方式合併使用:

decimal futureValue = this.GetFutureValue (monthlyInvestment, months:months)


C# 2015 學習紀錄:如何處理數字與文字

By // 沒有留言:

變數、常數變數命名規則

  1. 「變數 Variable」命名可以依照 Camel Notation原則命名,也就是第一個英文字母小寫,後續接續的單字的第一個英文字母用大寫,例如:int counter = 1;、long numberOfBytes = 20000;、float interestRate = 8.125f;
  2. 「變數常數 Const Variable」命名可以依照 Pascal notation原則命名,也就是第一個英文字母大寫其餘小寫,例如:const int DaysInNovember = 30;、const decimal SalesTax = .075m;
  3. 各控制項的 Camel Notation命名參考方式可以到此網站瀏覽。

數值型態

C# 2015 提供 13種內建的數值型態,其中特別要注意的是float、decimal的宣告,必須在宣告型別、指定數值時,特別以文字「f」或「m」來特別表示其值屬於何種型別。

運算子與運算元

數學運算可以區分「二元運算子 Binary operators」與「一元運算子 Unary operators」,二元的意思便是像加減乘除或模數,都是需要兩個運算子(數字或變數)來搭配使用,像是1 + 1 =2 這樣。而一元則是只有一個運算子而已,像是正號+負號 - ,僅僅改變一個運算子的數值而已。

除法跟模數運算部分:

division (/) : If you’re working with integer data types, the division operator returns an interger value that represents the number of times the right operand goes into the left operand. Then, the modulus (%) operator returns an interger value that represents the remainder (which is the amount that’s left over after dividing the left operand by the right operand). If you working with non-integer data types, the division operator returns a value that uses decimal places to indicate the result of the division, which is usually what you want.
使用數學函數的方法:class.methodName ( one or more arguments) 例如:int shipWeight = Math.Round (shipWeightDouble);double orderTotal = Math.Round (orderTotal, 2);double area = Math.Pow (radius, 2) * Math.PI

字串與特殊字元

特殊字元的字串輸入我們遇到換行、Tab或需要雙引號的時候,在C#中有兩種方式可以提供我們使用:
  1. 「Escape Sequences」傳統上常使用的「\n」、「\t」、「\r」、「\\」、「\”」方式,用來當字串遇到反斜線、雙引號或是控制字元像是換行、Tab或Enter之類的的符號時。例如: string code = “JSPS”; decimal price = 49.50m; string result = “Code: “ + code + “\n” + “Price: $” + price + “\n; 輸出結果: Code: JSPS Price: $49.50
  2. 「Verbatim string literals」:只需要在字串的 “ “ 前加入「@」後,即可在字串中正常的使用各種特殊字元,但如果要使用雙引號「”」的話,必須在每一個「”」前多加一個「“」。例如: string path = @“c:\c#.net\files”; 輸出結果:c:\c#.net\files
因為「Escape Sequences」通常使用上比較簡單也比較容易插入字串,而「Verbatim string literals」則是方便在字串內隨意輸入特殊字元,通常也比較適合用來表達檔案目錄時,兩種表示特殊字元的方式都可以,端賴何種情況適合哪一種表示方式。

.NET結構與類別定義的資料類別

.NET提供了兩種資料類別的定義方式,分別是結構「 Structures」與類別「classes」,其中如果資料型態宣告的是由結構來源的變數,像是int, double等等,這些都屬「值」的型別,其變數存的資料真的就是那份資料,並且當複製或指派給另一個變數時,另一個變數是以複製的方式、創造另一個變數出來。而類別的資料型態像是String、Object,其儲存的是該String (Object)物件的參考值,也就是可以有多個變數可以共參考同一個字串或物件類別。

變數 & NULL

C#允許數值型態的資料類型可以有NULL值存在,命名方式係在宣告變數型別後立刻接上一個「?」表示其為一個可儲存NULL值的變數,例如:int? num = null;,我們可以利用屬性「HasValue」與「Value」測試該變數的值是否為NULL值,如果不是、那其值為何。

習慣的力量:「為什麼我們這樣生活,那樣工作」

By // 沒有留言:
大塊文化出版的:「為什麼我們這樣生活,那樣工作?」是我在2012年閱讀的刊物,當時作為大學生只是想好好利用圖書館的資源,於是大量的推薦圖書館買當期的新書,然後新書到館後便預約閱讀。這本習慣的書也是在無心之中到手閱讀的一本。其實一直不乏這類談習慣、毅力與行動力的書籍,但這本是我第一次有系統的認識「習慣」的運作機制,從如何發生、養成、維持到改變,作者均舉了許多的實例來印證科學所發現的機制。

核心概念

本書分成三大部分,從「個人的習慣」、「成功組織的習慣」到「社會的習慣」,從個人、組織乃至於整個社會,探討習慣在這其中扮演的角色與能量。第一部分主要探討每個人的習慣從何而來,深入探討習慣養成的神經學原理,新習慣如何養成,舊習慣如何戒除。第二部分深入分析成功企業與組織的習慣,第三部分則是檢視社會的習慣。三個部分均圍繞在:「習慣可以改變」的中心論點。

重點分享

本書援引數百篇學術研究,三百多位科學家與企業主管的訪談(光本書的附錄便達56頁),主要分享人的行為表現主要受到五個因素影響:「訊號提示」、「慣性動作」、「獎勵」、「渴望」與「相信的意念」組成。舉書中的一個例子來說,一個上班族在每天下午三點的時候,都喜歡吃一個餅乾,起初他以為他自己想吃個下午茶、解解饞,所以他的腰圍便因為甜食而愈來愈大,但透過本書分享的習慣機制來剖析後,我們來看看這個故事是怎麼一回事:
  • 訊號提示:下午三點左右,想吃個餅乾。
  • 慣性動作:吃餅乾。
  • 獎勵:吃完餅乾後的愉悅感。
  • 渴望:每天到了三點的時候都想吃個餅乾。
但經過抽絲剝繭之後發現,其實這位上班族想吃餅乾不是因為肚子餓,也不是真得想吃零食,而是只是在每天的下午三點時,做一些可以獲得愉悅獎勵的事情,所以他選擇了餅乾。透過有意識的思考整個流程後,他重新將他的習慣改為如下:
  • 訊號提示:下午三點左右,想做些什麼得到愉悅感。
  • 慣性動作:離開辦公座位,找一個同事閒聊五分鐘或喝杯咖啡。
  • 獎勵:從繁忙的工作中暫時獲得舒緩或休息的感覺。
  • 渴望:每天三點的時候,都可以透過與同事的短暫閒聊,讓辦公室的情誼得以提升。
改成這樣的習慣之後,不但改善了喜歡下午吃零食的習慣後,也獲得與同事之間改善關係的機會,而自己也獲得了一種滿足的感覺,可以暫時放鬆工作的緊張氣氛(本書章節:附錄 p.297)。

結語

本書分享了非常多例子解釋習慣這回事,我個人也在重讀第二次的時候又獲得了不一樣的啟發。第一次閱讀時只是充滿著驚喜與第一次接觸這件未知事情的興奮,因此在第一次時只是醉心於書中介紹的內容與習慣的機制。而在第二次的閱讀裡,開始用一個冷靜的心情,將書中談到的內容與自身的習慣做比較,也是發現自己有許多習管上也都是不自覺得產生的,除了暗暗心驚之外,也是更佩服此書可以將「習慣」這潛藏在細微處的機制,可以剖析的如此透徹。分享此書給大家,讓大家可以真正的達到心事如意。

資訊相關建議書單

By // 沒有留言:
  • 一般讀物
    • Network Warrior
    • The Practice of System and Network Administration
    • Computer Networking: A Top-Down Approach
  • 網路相關
    • Routing TCP/IP
    • Cisco IOS Cookbook
    • Network Analysis

  • 故障排除
    • Network Maintenance and Troubleshooting Guide: Field Tested Solution for Everyday Problems
  • Unix / Linux
    • UNIX and Linux System Administration Handbook
  • 虛擬化技術
    • Network Virtualization
  • 資訊安全
    • The CERT Guide to Insider Threats: How to Prevent, Detect, and respond to information Technology Crimes
  • 無線網路
    • Wirless Networking
  • 其他
    • Time Management for Network Administrators
參考網址:
  1. http://www.auvik.com/media/blog/essential-network-admin-library/

技能樹規劃

By // 沒有留言:

時間規劃

想做的事情很多,但如果不好好規劃,似乎永遠無法控制完成事情或學習技能的時間表。從以前討厭規劃,到現在長大慢慢瞭解到:「規劃,是讓自己自由奔放的意志,可以讓自己在當下行走時,知道自己有沒有走到想走的方向。」
透過每週7 x 24小時的時間規劃、扣除睡覺的6小時,每天大致可以切成三個時段,從08:00 - 1200的4個小時、1400-1700的3個小時,以及晚上1900-2200的3個小時,我們可以發現時間其實都被休息、上班與交通切的不多,也因此如何更有效的 排每個時段要進行的事情,便變得更加重要了。

想完成的事

既然每天可以運用的時間已經算出來了,那麼先列出近五年我想完成什麼事情吧!
  • 長期目標(5年)
    • 成為資料科學家
  • 中期目標(3年)
    • 取得碩士學歷
    • 學會統計、線性代數、深度學習、Python
    • 多益900分以上、托福100分以上
  • 短期目標(1年、今年還有07-12半年時間)
    • 建立每週行程規劃、每月進度確認、每年目標執行(確認)習慣
    • 養成每週至少三次以上早起晨跑,並執行核心肌群訓練菜單。
    • 完成基資維護網站開發(含資料庫)
    • 準備資工所考試(領域選擇、教授分析、函授上課)
    • 完成公司網路管理
    • 完備資安防禦偵測規則
    • 今年結束前,完全清楚公司網路架構、硬體與軟體分佈。

    短期目標的實現

    目前已經透過MAC的page建立了每週行程規劃表,將每天睡覺、上下班、中午用餐休息等時間先排了進去,剩下一天大概4、3、3小時的分配規劃,以下是我針對我的短期目標想先實現的先後順序:
    1. 建立每週、每月、每年進度規劃,本項正在實施中!
    2. 每週三次以上慢跑,由0716日開始實施。
    3. 因為九月公司要外部稽核,所以「網路管理」的部分要在這之前完成,同時大概也要先完成資安防禦偵測機制的強化與建立。
    4. 考量還有教育訓練的課程,網站開發部分我訂在今年年底要上線實施。
    5. 資工所招生大概在12月中旬、隔年2月考試,所以等於我差不多要開始準備考試了,但這之前要先報備、函授、報名、考試、先期準備相關學科知識。
    所以綜上所述,我0718日開始的每週規劃,要納入3、4、5項的內容同步進行。
    • 網路與資安管理
      • 網路管理要管什麼?範圍在哪?:這部分要先找專業指導書籍。
      • 網路資產清冊、架構圖、防火牆管理、IP配賦管理。
      • 相關維運管理與資安監控集合:Log Centralize集中監控,啟用Alarm Center
      • 八月底要自己進行外部稽核,以確定符合ISO 27001稽核標準。
    • 基資維護網站開發
      • 資料庫設計書籍研讀(know how to design)
      • 資料庫ER-Model繪製
      • 資料庫發展
      • 網站開發學習(ASP.NET 4.5)
      • 開發網站+連結資料庫
      • 上線測試、修改、試用
      • 教育訓練、推廣
      • 流程圖、設計、維護文件撰寫
    • 準備碩班考試
      • 研究興趣領域
      • 研究教授專長、個性、人品、教學態度、熱忱
      • 報讀補習班(面授、函授)
      • 報備就讀、報名考試
      • 唸書準備考試
      • 規劃學費財務花費
      • 準備入學

    結語

    基本上先列出心目中短、中、長期想完成的事情,接下來再慢慢的解構長期目標需要達到的部分,再藉由中期與短期慢慢實現,然後藉由每天撰寫部落格的方式,可以每天檢視自己做的如何?會不會設的目標太遠無法達到?
    基本上幾年前的我大概打死也不會碰這些東西吧...但人長大了、會思考了,開始明白「安排」的重要了,自由的靈魂沒有一個目的地,只會變成孤魂野鬼而已,加油啦!

    資料科學家 - 養成之路 (Ref)

    By // 沒有留言:

    Tyrant 暴君 Season I

    By // 沒有留言:

    劇情提要

    最近開始收看2014年福斯電視出品的美劇:「暴君、Tyrant」,故事描述一個中東國家的獨裁者的最小兒子 Bassam “Barry” Al-Fayeed在經歷自我放逐的20年的美國生活後,帶著老婆、小孩重回到家鄉後參加侄子婚禮。

    第一季總共播出10集,從Bassam一家人回到家鄉 - 阿布丁(Abuddin)開始,到最後政變失敗入獄為止,期間由於父親的過世、兄長的繼位,讓Bassam開始以「總統特別顧問」的角色待在家鄉輔佐兄長,但在過程中他發現當年對自己父親實施大屠殺的事實並非父親所為,再加上也逐漸瞭解自己的兄長並沒有辦法在自己的輔佐下,將國家轉向民主國家,於是他開始聯合美國、兩朝元老、軍方與媒體部分,密謀想推翻政權,但遺憾的是最後因為隊友不給力、出賣了大家,因此行動失敗後就啷噹入獄了。

    劇情爭議的演員選角

    一開始有興趣觀賞這部美劇是因為「暴君」這個詞很吸引我的注意,但當時收看美劇的方式是用emule或是論壇的BT載點收看,實在沒有那個心力可以一集一集載回來看,所以也只有「越獄風雲、Prison Break」有完整的看完。現在開始有很方便的資源可以觀賞後,陸續看了「天才大爆炸、The Big Bang Theory」、「地球百子、The 100」到現在的「暴君、Tyrant」。

    雖然我慢慢明白的美帝運用自己國家的文化優勢、向全世界傳播美國的價值文化,但我一直在思考,當一些電影牽涉到國家之間、民族之間的糾葛時,在劇中飾演被欺壓的民族或是被醜化的那一方的演員(演員本身屬於那個被欺壓的民族),他們願意飾演一個「助紂為虐」的一個文化幫兇或推波助瀾的助力嗎?像南京大屠殺的劇情裡,有日本人將中國人斬首的畫面,這時找日本演員來飾演那位劊子手的角色,他在接受這份角色時,難道不會對他自己的國家(日本)有什麼衝突存在嗎?

    因為就「媒體」上所知,日本人是不願意承認這段歷史的(或者說是以政府的角度而言),此時本國演員是飾演爭議性或甚至「幫兇」性質的角色時,其實我很好奇要怎麼去說服演員出演這樣的角色。也許出於國家的考量?金錢的考量?自身對這類想法的考量?也許都是各種妥協後的結果吧!

    Bassam男主角的想法轉變

    一開始劇情總是不斷提到Bassam小時候與父親、兄長的互動,尤其是他的父親要他哥哥Jamal拿起槍來槍殺一個手無寸鐵的反抗份子時,他哥哥的本性是不願意的、甚至到懼怕的,後來才發現當時是Bassam毫不猶豫的拿起槍來殺了跪在地板的反抗份子、然後解釋地:「我是在解救我的哥哥」,這樣反映的性格是一種其實他不害怕困難,只要他堅定的相信一個事實,任何阻撓它的阻撓都會被他給排除。這樣的性格也反映在他得知自己父親其實不是自己想像中的劊子手、獨裁者時,他決心要為了父親曾經開啟的民主而奮鬥,即使擋在他面前的是他的親兄弟、兄長的總統也是如此。

    似乎Bassam的性格才是比較符合當一個政治家的,金庸在倚天屠龍記的後言提到:「中國三千年的政治史,早就點出成功的政治領袖,第一個條件是「忍」,包括克制自己之忍,容人之忍,以及對付政敵的殘忍。第二個條件是「決斷明快」,第三個是極強的權力慾。」我覺得Bassam倒是符合這上面三個定義,雖然不見得他有極權的權力慾,但他知道他拿到權力的目的是什麼,也因此他可以冒著將離開家人、政變失敗的風險,也要達到他的目的。

    第三季正在每週三的晚上10點(美國時間)在FX頻道撥出

    我也要趕快來補第二季的進度了,希望看到來可以剛好銜接第三季的劇情。

    SQL發展的歷史背景

    By // 沒有留言:
    Dr. E.F codd是一位IBM程式研究工程師,他在1970年開發出了SQL的語言,但當時甫推出時並沒有立即成為流行的程式語言,而是到了後來1977年Oracle開始將之發揚光大,以下為幾間知名公司開發SQL資料庫的時間表:
    • 1977年  Oracle利用C與RDBMS開發「Mainframe」架構之資料庫。 
    • 1978年  IBM結合Sybase與Informix開發出「Mini Computer」架構之DB2。 
    • 後來因應電腦開始流行,硬體成本逐漸下降,資料庫發展開始朝向單機型「dbase III」,當時著名的資料庫軟體有「Clipper」、「Fox-Pro」等。
    • 後來微軟將Fox-Pro公司買下,卻另外跟Sybase合作開發出該公司專屬的Access資料庫,除了跟SQL標準格格不入外,也有許多自己獨樹一格的設計方式(所以即使現在還存有Access,但已經幾乎沒什麼人使用了)。

    •  

    資安:「攻擊」?「防守」

    By // 沒有留言:
    一般中小企業或小型的新創團隊,
    在專注自己領域的研究發展同時,
    「資訊安全」這件事情,似乎沒有多少心力可以再被關注。

    通常資安的問題似乎只有金融業、科技業、生技業等,有重要核心資產需要保護的高端企業才會被重視,剩下的似乎不是駭客興趣的標的。

    在一個屢受駭客拜訪的網站或伺服器裡,
    是不是只能夠防禦?你來我擋,你有新招,我有奇招,
    似乎無法擺脫注定只能防守的命運。

    今天在拜訪一個客戶的公司時,聽聞他們又遭受到駭客攻擊,
    偽冒了合法員工的帳號密碼,在他們的系統大搖大擺的逛後院,
    他們公司的資安人員似乎也沒什麼能耐,
    事發經過許多天,才在一次意外的冰山一角連線中發現這件事情。

    當然老闆們的指導就是:「把它BAN掉!」

    但...BAN掉然後呢?層出不窮的跳板,不斷地轉址,
    你該開的HTTP還是得開,總不能因為被駭了就把你該提供的服務關掉了吧?

    除了持續加強自身的防護設備的強度外,
    我常在思考,該如何從這些屢遭被「拜訪」的來源中,
    可以拼出些什麼樣的特徵,
    不敢說可以反擊,但起碼知道被誰打、被什麼打以及可能何時被打,

    被駭總是unhappy的,也只能祈禱那間公司的SOC可以強化他們的作為了,
    不然被看光光卻絲毫不知,也是挺駭人的。

    Good Luck

    網頁內容擷取

    By // 沒有留言:
    資料科學年會
    黑客松
    Splunk Live


    資料科學家三項技能樹:資訊、數學、統計

    BIg Data的5V

    Volumne
    Velocity
    Variety
    Veracity
    Value

    Crawler - facebook

    Type A 直接從該平台或網站擷取資料
    Type B 透過XML, CSV, API方式,以Crawler方式存取資料。

    Type A cases: facebook, 104, PChome, Chunghwa Telecom, 591
    Type B cases: Search Engine(Goolge, Yahoo)


    ASP.NET:控制項「Details View 」

    By // 沒有留言:
    一、 連接資料庫步驟:

    1. 連接Database, SQL 2012
    2. 選擇資料來源,點選「新資料來源」
    3. 選擇「資料庫」
    4. 點選「新增連接」
    5. 伺服器名稱填入資料庫位置,如192.168.168.130
    6. 輸入資料庫認證方式(Windows或SQL認證)
    7. 選擇要連接的資料表,可於「進階」內選擇是否要新增、刪除、修改選項。
    二、 修改文章欄位與樣版設定
    1. 選取「編輯欄位」
    2. 點選欲轉成樣版的欄位,點選「轉為樣版」

    四、

    「Bind」是雙向繫結,無法撰寫任何程式碼。
    在原始碼中,可加入換行指令。
    原始:Bind("article")
    變更後:Eval("article").ToString().Replace("\r\n","<br>")
    可將C#中換行符號\r, \n替換為<br>

    五、樣版Data Binding注意地方:


    ASP.NET:大型控制項的使用

    By // 沒有留言:
    CommandArgument: 傳遞參數使用,提供後置程式碼使用。
    CommandName: 定義動作function

    例如:
    CommandName = Page (分頁)
    CommandArgument = 3

    定義此按鈕為分頁功能,當按下按鈕後即跳到第三頁。


    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;

        }
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
        }
        protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            GridView1.SelectedIndex = e.NewSelectedIndex;
        }

    透過e的function獲得使用者在前端操作的狀態或數值。


    大型控制項四大天王:(Master-Detail 主表明細)
    單一 Details View, Form View
    列表 Grid View, List View

    要在大型控制項中使用樣版的基礎控制項,必須要用FindControl()

    TextBox TB = (TextBox) DetailsView1.FindControl("TextBox1");
    Calendar CA = (Calendar) DetailsView1.FindControl("Calendar1");

    TB.Text = CA.SelectedDate.ToShortDataString();

    Splunk Q&A

    By // 沒有留言:
    1. bucket損壞?
    2. Splunk搜尋到的事件,結合工單或稽核?
    3. 時間比較
    4. useother=f limit=0 跑timechart多筆資料
    5. 如何得知兩張折線圖的差異?一致?
    6. _time understood time, _indextime 檢索時間
    7.  forwarder的管理
    8. timechart span=1h == bucket _time span=1h
    9. 教育訓練?資源
    10. 即時監控面板的擺放:single value, timechart, statsistic table,
    11. search command | rare punct : 找不常出現的紀錄
    12. search command | cluster showcount=t t=0.5 | table _time, cluster_count, cluster_label, _raw | sort + cluster_count
    13. serarch command | transaction maxpause=1s | where evebtcount > 100
    等於 stats list (...) by time
    可以利用transaction的data model的離峰時段。


    累積紀錄的重要

    By // 沒有留言:
    以前國中時期,開使流行一些知名的部落格:像是天空、Yahoo等等,
    後來因為覺得似乎都把心情攤在陽光下,
    好像也容易招惹不必要的是非,所以後來也關掉了。

    最近幾年心境開始慢慢有沈澱的感覺,
    似乎開始感覺到自己想走一個怎麼樣的人生,
    整理這個TechMan的blog,有點像是「修整門面」的感覺,
    有一個好的寫作平台、把學習到的事物開始慢慢紀錄累積起來,
    不是想成為一方之言,只是開始明白「累積」的重要。

    關於Blog的形式我挑了很久,逛了許多Google Blogger的範本,
    但不是太花俏就是有著許多我不用不著的功能。

    我想要的:簡潔、寫作風格、閱讀輕鬆、讓人專心閱讀。

    於是便找到的現在這個外觀的風格,
    順道推薦一下(人家免費的很辛苦...我還把人家的廣告code拿掉...)

    BTNT  Theme - A Responsive Blogger Template

    推薦許多不錯的Blogger範本,我挑了一個最順眼的、改一些HTML碼就開始用了,
    接下來...整好門面,接下來便是好好的將學到的專業知識整理整理了。

    Fighting! TechMan!

    ASP.NET: ADO.NET

    By // 沒有留言:
    區分DataReader與DataSet

    DataReader: 適用於網頁、效能快與節省,不可分頁。
    DataSet(DataTable) Win(PC) 慢、耗能,可以分頁。

    當控制項如Label只是單純拿來展示的話,可以將「Enableviewstate」關閉

    3/23 BASIC Splunk Workshop

    By // 沒有留言:
    Q1: Splunk GeoIP 內部網路的基資更新?
    Q2: Dashborad做好後,維運值班人員 VS 查處過程?即時監控?
    Q3: SPL的寫作平台?還是直接在Command下?
    Q4: SPL裡對於等號與等於運算子是否有區別?
    Q5: 每一分鐘定期來註冊的log, 我應該要怎麼繪製圖表?timechart?
    另一個方式是每一分鐘給訂一個數值,用table去替代畫圖。
    Q6: 想儲存的每一位使用的檔案傳輸大型、決定一個baseline,該怎麼做?
    Q7: Splunk License的檢索量是如何計算的?
    Q8: 尋找在一個範圍內,短時間大量新增的案件。

    Good:
    1. max,min,avg,latest (byes) -> 網管人員的統計分析
    stats count avg(bytes) min(bytes) sum(bytes) latest(bytes) by clientip

    2. chart count over useragent by categoryId
    count over可以指定哪一個fields作為x-axis座標軸

    3. Sub Search, correlation search
    sourcetype="access_combined_wcookie" status=200 AND action=purchase status=200 action=purchase [search sourcetype="access_combined_wcookie" status=200 AND action=purchase status=200 action=purchase | top 1 clientip | table clientip] | stats count dc(productId) values(productId) list(productId) by clientip

    subserch: 將搜尋的結果丟給大搜尋
    table clientip:?

    4. lookup進去之後,就不是單純的數據分析(網管),而是商業營運智慧分析。

    5. inputlookup 可以確認上傳後的csv檔案是否成功上傳、顯示
    6. lookup:
    查詢輸入欄位

    7. iplocation clientip | geostats count by categoryId

    簡報設計課程心得:Part I 心法篇

    By // 沒有留言:
    從開始製作公司簡報以來,陸陸續續也完成一些重要性的簡報製作與提報。在練習如何製作簡報的過程中,其實遇到很多困難與困境,包含不知道如何下手、如何編排顏色、字體、大小等等,腦袋瓜子整個呈現一個混亂的狀況。

    在漫漫網路搜尋的過程,我找到了「精準設計工作坊」的部落格,裡面有約上百篇的簡報心得分享,著實讓我受益良多。盼著它今年開課的資訊,終於在3月19日這天,他們開課了。以下僅就一天的課程、約4個小時的部分分享所學習到的觀念。


    PART 1 心法篇


    決定設計的預算限制


    我們必須先對要製作的簡報有一個基本的認知:簡報永遠有著2大限制:「講者的準備時間」與「觀眾的注意力」。
    當我們身為一位簡報製作者時,Timing與Attention之間的CP值便是我們首要考慮的因素。想要有好的簡報品質與內容,大量時間的投入有時是必要的,但當時間資源不充裕時,我們該如何拿捏這其中的取捨,便是我們要抉擇的。至於觀眾的注意力部分則是,基本上觀眾都是容易失焦的聽眾,一旦簡報內容無法激起觀眾的投入或認同,任憑講者與簡報再精彩,也是於事無補。


    目的+邏輯,有效資訊極大化


    一旦能夠清楚掌握時間成本與觀眾特性後,接下來便是要釐清與決定簡報的「目的」為何了。全球暢銷書《餐巾紙的背後》作者丹.羅姆(Dan Roam)直指,簡報工作的意義在於:「協助別人看到自己所看到的 ,而且還得有技巧地讓觀眾認為「你說的正是他們所想的」。而依照BII的說法則是:「目的係為了讓關鍵的人執行(具體)關鍵的行動」,而這所謂的目的,又是觀眾與講者之間的交集下的產物,因此我們必須以「先滿足觀眾目的、再達成講者目的」的方式來定義我們的目的。

    當確立了簡報的目的後,之後便需要開始思考「如何呈現」,
    在此必須瞭解「資訊」與「雜訊」的辨別與瞭解,符合目的跟邏輯連結的,即為資訊,反之,不符合目的與邏輯無連結的即為雜訊。資訊與雜訊之間則為觀眾注意力的拔河,資訊與雜訊將會互相抵銷,最後抵銷的結果即為「有效資訊」:觀眾真正能注意到的訊息。

    講的文謅謅的,舉個課堂上很淺顯易懂的例子:看電影。
    當我們進電影院看電影時,我們的目的很簡單,就是欣賞一部電影、瞭解它的劇情與內容,此時電影內容即為我們要的資訊。而此時旁邊開始觀眾打起手機或聊天、影響了我們所要接收的資訊時,對我們而言,這旁邊的聲音即為雜訊干擾。在電影劇情一直播放、旁邊一直說話干擾的情況,在角力的情況下,最終我們理解到的部分電影即為我們的有效資訊了。


    應用「有效資訊SOP」進行判斷


    當我們明白了講者與觀眾的關係以及如何透過有效資訊來實現
    目的時,我們可以藉由以下的流程來協助我們判斷想法的分類:

    原始想法 -> 判斷(符合目的?邏輯連結?),
    如果是,則屬於資訊,應在簡報上加強。
    如果否,則屬於雜訊,應在簡報上削弱。

    簡報設計3個主要階段

    素材處理->視覺化->聚焦&降噪

    在我們藉由有效資訊SOP確定我們的資訊後,我們該如何在我們簡報上製作實現?

    首先為「素材處理」:當我們因目的與邏輯連結而產生一些資訊時,我們必須確定「整體簡報的內容佈局」後,才可以擬定簡報的製作方向。舉例而言,如簡報目的為推廣產品、強調成效,則以「問題導向式」的開場,會更適合單純的強調功能與產品優勢的簡報。

    而在「視覺化」部分即是,如研判出之有效資訊過於複雜,無法以單純的目的+邏輯連結呈現時,便必須透過一些圖像化的方式來將資訊視覺化,來讓聽眾可以有比較好理解的想法。

    最後則是「聚焦&降噪」。這部分則為細部的簡報處理,主要著重在個別投影片是否符合我們定義的目的,抑或是僅為雜訊?這部分需透由大量的簡報製作技巧來達到此一目的。

    簡而言之,必須由一宏觀的局面開始研析簡報製作需求與目的,待一連串大方向之戰略意義確立後,便是透由視覺化與聚焦&降噪方式,來進行戰術與細部內容的擬定與執行。如何能夠有效發揮從宏觀至聚焦的流程,便可節省設計簡報的成本與冤枉路。