2017年12月31日 星期日

[Data Science 到底是什麼從一個完全外行角度來看][13]Data的運用 - 介紹篇

image
圖片來源: https://pixabay.com/en/books-spine-colors-pastel-1099067/https://pixabay.com/en/math-blackboard-education-classroom-1547018/

還記得之前提到過,如果Data是原油那麼Data Science就是提煉成石油的技術

到目前為止,解決了Data的儲存和運算的部分。但是就算可以處理Big Data,該怎麼處理?如何把處理結果變成有意義或者可以動作的策略

如果說,Big Data的儲存和運算在武俠小說裡面屬於內功的話那麼Data Process Workflow(資料處理流程)就同等於招式一樣。

沒有足夠的內力(Data),招式在精妙也沒有用(就像瞎子摸象,就算摸的技巧再好,也因為局限的關係摸不到全貌,一定會有偏頗)。

反過來說,如果內力深厚,但是不會招式,那麼同等於英雄無用武之地。

在這個系列的接下來將會著重在介紹Data Processing的部分。這篇將會是概觀介紹。


2017年12月30日 星期六

[Data Science 到底是什麼從一個完全外行角度來看][12]Hadoop總結(下篇) - 一切才剛剛開始

image
圖片來源: https://pixabay.com/en/books-spine-colors-pastel-1099067/https://pixabay.com/en/math-blackboard-education-classroom-1547018/

上一篇(11]Hadoop總結(上篇) - 一切才剛剛開始)介紹了Hadoop的Ecosystem之後,了解到有很多package建立在Hadoop上面。

不過一個問題會浮現出來,這門多package,怎麼讓他們互相溝通沒有問題?畢竟版本和版本之間很有可能會有相容性問題。

這就是Hadoop Distribution的作用,一些整理好包成一包的Hadoop Ecosystem,有些distribution還包括一些管理界面讓整個管理變得更加簡單。


[Data Science 到底是什麼從一個完全外行角度來看][11]Hadoop總結(上篇)–Ecosystem介紹

image
圖片來源: https://pixabay.com/en/books-spine-colors-pastel-1099067/https://pixabay.com/en/math-blackboard-education-classroom-1547018/

在上一篇([10]用.Net Core跑Hadoop MapReduce - Streaming介紹)透過Hadoop Streaming的幫助,改成用.Net Core 2.0的程式作為MapReduce的邏輯,基本上這個系列裡面的Hadoop介紹也要告一個段落。

這一篇,將會快速回顧到目前為止所了解到關於Hadoop的部分,再來介紹Hadoop Ecosystem,和3個比較常見的package介紹。


[Data Science 到底是什麼從一個完全外行角度來看][10]用.Net Core跑Hadoop MapReduce - Streaming介紹

image
圖片來源: https://pixabay.com/en/books-spine-colors-pastel-1099067/https://pixabay.com/en/math-blackboard-education-classroom-1547018/

上一篇([09]了解Hadoop裡的MapReduce到底是什麼?)了解了什麼是MapReduce,並且了解了怎麼用Java寫一個MapReduce的Hello World程式:WordCount。

馬上會想到的一個問題是,難道只有Java可以寫MapReduce的程式嗎?

這篇將會介紹Hadoop的Streaming服務,讓任何語言只要透過Standard Input和Standard Output就可以寫出MapReduce程式。 將會使用最熟悉的語言,.Net Core來完成這個事情。

在這篇也會介紹另外一種測試Hadoop的方式,使用Docker來測試。


2017年12月25日 星期一
2017年12月23日 星期六
2017年12月22日 星期五

[Data Science 到底是什麼從一個完全外行角度來看][04]Hadoop是什麼?

image
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 和 https://pixabay.com/en/math-blackboard-education-classroom-1547018/

在上一篇([03]Big Data到底是有多Big?)了解到了Big Data的3個V,也就是量、增長速度和多元格式的挑戰,這篇來看看讓管理一切變得有可能的軟體:Hadoop。

這篇將介紹Hadoop的由來,為什麼這麼重要,不同版本之間的差異,和基本架構。


2017年12月20日 星期三

[Data Science 到底是什麼從一個完全外行角度來看][02]Data Science 是什麼?

image
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 和 https://pixabay.com/en/math-blackboard-education-classroom-1547018/

如果說資料(data)和石油一樣是最有價值的資源,那麼Data Science就同等於從原油提煉出石油的技術。

上篇([01]開篇)了解了整個系列的內容之後,這篇來了解一下 Data Science 到底是什麼?需要什麼技能/技術?和到底怎麼把data提煉出來變成可以用來做使用的資訊(變成石油)。


2017年12月19日 星期二

[Data Science 到底是什麼從一個完全外行角度來看][01]開篇

image
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 和 https://pixabay.com/en/math-blackboard-education-classroom-1547018/

又到了新的一屆鐵人賽,這次和之前不一樣的是,多了團隊模式。然後,不知不覺就組成了一個團隊.... 失敗的話應該會永遠被釘死吧。

所以,為了不被釘死,要好好努力來寫啦,已經被警告,別像去年那樣,待補,結果和卡債一樣,永遠翻不了生(雖然到目前為止還在努力的補當中)。

那今年的主題是什麼呢?不是新的程式環境(OS: .Net core哪去了?),不是延伸去年內容打造更完整的建制環境(OS: 整合docker的DevOps哪去了?),而是一個完全不熟悉的領域,Data Science(資料科學)。 (如果你是工程師,那麼別錯過 1/6 在台大的 Study4.TW Study4Love - 與大師對談

今年的題目是:Data Science 到底是什麼 - 從一個完全外行角度來看


同步發佈於第九屆 2018iT 邦幫忙鐵人賽:https://ithelp.ithome.com.tw/articles/10192297


2017年12月16日 星期六

[從.Net工程師的角度來看DevOps 25]在Visual Studio Team Services執行Build Script和CI Server總結

image
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 和 https://blog.xebialabs.com/2016/03/21/essential-devops-terms/

在上一篇([從.Net工程師的角度來看DevOps 24]免費build私人Repo的CI Service - Visual Studio Team Service介紹)了解了如何用Visual Studio Team Services(VSTS)的內建Template來build範例專案;在設定的過程,其實沒辦法直接使用內建template,會需要調整一些參數。

這些調整的內容和AppVeyor要調整的非常不一樣,造成了如果要換CI Server會花一些時間在這些瑣碎的細節上面。

這篇將會看看,如果要把VSTS改成用build script來build專案,會需要做些什麼。


2017年12月13日 星期三

[從.Net工程師的角度來看DevOps 24]免費build私人Repo的CI Service - Visual Studio Team Service介紹

image
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 和 https://blog.xebialabs.com/2016/03/21/essential-devops-terms/

在上一篇([從.Net工程師的角度來看DevOps 23]在AppVeyor執行Build Script - 整合build資訊到github)介紹完了如何用AppVeyor執行我們定義的build script,不過有時候我們有私人的repo也希望做CI,這個時候免費版本的AppVeyor就不夠了。

這邊將會介紹另外一個能夠build私人repo,由Microsoft提供的免費CI服務,Visual Studio Team Service(VSTS)。

這篇先看內建VSTS所提供的方式來建制範例專案,在下篇在改成執行我們的build script。

題外話,假設之前已經有VSTS帳號,想要移動Region到East Asia,可以參考這篇:[VSTS]如何調整Visual Studio Team Service的區域(Region)

[從.Net工程師的角度來看DevOps 23]在AppVeyor執行Build Script - 整合build資訊到github

image
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 和 https://blog.xebialabs.com/2016/03/21/essential-devops-terms/

在上一篇([從.Net工程師的角度來看DevOps 22]免費的CI Server - AppVeyor介紹)了解到了如何把專案關聯到AppVeyor裡面,然後可以很簡單利用AppVeyor裡面內建的一些設定來build專案。

在這篇,我們將完全拋棄AppVeyor的內建機制,改成用我們建立出來的build script來執行。

有自己的build script不止在設定上變得更簡單,local跑的和CI Server跑的會一樣,並且如果要整合到另外一個CI Server也不會有什麼問題。


2017年12月12日 星期二

[從.Net工程師的角度來看DevOps 22]免費的CI Server - AppVeyor介紹

image
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 和 https://blog.xebialabs.com/2016/03/21/essential-devops-terms/

在上一篇([從.Net工程師的角度來看DevOps 21]Build階段的總結和重構 - Build Server介紹)對我們的build script在做了一次重構之後,這篇我們來看看一個佛心的CI Server:Appveyor。

CI Server不是什麼新的概念,一直以來有一些免費的CI Server可以使用,例如Travis CI - 不過多是Linux base的Server。 但是由於Windows版權的問題,.Net沒有什麼免費(至少從Open Source專案角度來看)的CI Server 可以用,直到AppVeyor的出現,和後來的Visual Studio Team Service。

在這篇,將會簡單介紹AppVeyor,並且如何把我們的專案準備好,在下一篇在介紹如何整合AppVeryor執行我們的build script。


2017年12月11日 星期一

[VSTS]如何調整Visual Studio Team Service的區域(Region)

image
圖片來源:https://pixabay.com/en/key-tag-security-label-symbol-2114047/

Visual Studio Team Services (VSTS) 可以簡單理解成為雲端版的Team Foundation Server (TFS),而且微軟很佛心的讓5人以下團隊免費使用。

在建立VSTS的時候,有個選項是VSTS的資料要放在哪個區域(Region)。早期的時候,只有在美國,現在的話在東亞(East Asia)也有辦法建立了。

不過如果是早期建立在美國的VSTS是否能夠移動到East Asia呢?這篇將會介紹如何透過寫VSTS的support ticket來達到這個轉換。


2017年12月10日 星期日

[faq]解決C#呼叫有ssl憑證問題的網站出現遠端憑證是無效的錯誤問題

image
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

有時候需要在C#的程式裡面發出request和內部或者外部的服務溝通,如果內部或者外部的服務只允許https連線,而且的ssl憑證並沒有經過認證(有可能是用self signed certifcate),那麼C#會直接出錯:

image
錯誤訊息範例畫面

system.security.authentication.authenticationexception the remote certificate is invalid according to the validation procedure

System.Net.Http.HttpRequestException: 傳送要求時發生錯誤。 ---> System.Net.WebException: 基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係。
---> System.Security.Authentication.AuthenticationException: 根據驗證程序,遠端憑證是無效的。

一般來說要解決這個問題有兩個做法:

  1. 把self sign的certificate裝到程式的機器上面並且信任那個憑證
  2. 在送出request的時候做一些特殊處理

這篇將會對於第二個做法,調整程式讓發出request遇到這種問題的時候能夠處理這種問題。


2017年12月6日 星期三

[tool]沒有mail server怎麼測試寄送email?快放過你的gmail來看看有那些可以測試用的smtp mail server

image
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

不管什麼系統,只要需要通知使用者基本上都是使用email(電子郵件)方式通知,因此寄送email基本上是大部分系統都會需要的功能。

雖然正式環境一定會有mail server給我們使用,但是當我們在開發階段的時候,有時候需要測試寄送出來的mail內容是不是正確、有沒有跑版等問題,這個時候有一個測試用的mail server變得非常重要。

以前最常見應該就是借用gmail的mail server來測試發信,不過那個設定有些步奏,並且gmail也有做出一些限制,因此放過你的gmail吧,來看看有什麼工具可以讓我們測試email寄送。

關鍵字:測試mail server、測試smtp、mailtrap、smtp4dev、papercut、直接寫道檔案系統

測試機送mail的sample程式在github:dotnet-sendmail-smtp-server-review