︿
Top

2015年12月10日 星期四

C#: override, new difference and scenario

緣起

前一陣子, 有位朋友問到, C# 中繼承及多型中的 override 與 new 這 2 個 method 修飾字的使用方式及使用時機; 當時查了一下 MSDN 及一些 blog, 但仍不是很清楚; 最近終於有時間重新再 次 Study.

關於 override 這個修飾字, 我想大部份的人都沒有太大問題.
關於 new 這個修飾字, 大概就感到很模糊. 一般文章會提到 遮蔽 (hide), 但到底遮蔽了什麼? 看了很久, 還是不清楚. 以筆者的想法, 其實就是 "遮蔽" 了 基底類別 呼叫 衍生類別方法的可能性.

以下文章的範例程式, 來自 MSDN.


2015年12月3日 星期四

CDH 5.4.7 安裝 (Part2)


承續前一篇, 本篇將繼續就 CDH 5.4.7 的安裝進行說明.

雖然最後看起來還是有一些狀況待排除, 但至少整個安裝過程是順利完成.

文章的內容有點長, 但可以由 目錄 看出整個大綱.

註1: 筆者係由網路搜尋相關文章 Study, 並進行實作, 故本文若有些疏漏, 尚請見諒.

註2: 筆者係在一台 i7 (16GB RAM) 的筆電上安裝的, 同一顆硬碟上安裝了 4 個 VM, 可能資源上不是很足夠, 而造成一些問題; 建議如果可能, 可以加大 RAM, 同時將 VM 分裝至不同硬碟.

CDH 5.4.7 安裝 (Part1)


先前筆者有一篇文章, 描述如何安裝 CentOS 7.1 + Hadoop 2.7.1 (Single Node Cluster), 在該環境再裝 Hive 1.2.1 是OK 的, 但後來要再裝 HBase 1.1.2 卻一直失敗, 才發現 HBase 1.1.2 只支援到 Hadoop 2.5.1 ( Which version of hbase should I use with Hadoop-2.7.1? ), 亦即在 Hadoop 生態系 (ecosystem) 裡, 不能完全都用最新的, 不然常會發生版本不合的問題, 故還是找一些發行商提供的驗測過發行套件來進行安裝, 比較不會有版本匹配的問題. 

本篇及下一篇, 會描述如何建立 Cloudera CDH 5.4.7 的過程. 本篇著重在 VM 及 作業系統相關設定; 下一篇才會進入 CDH 5.4.7 的安裝.

文章的內容有點長, 但可以由 目錄 看出整個大綱.

註1: 筆者係由網路搜尋相關文章 Study, 並進行實作, 故本文若有些疏漏, 尚請見諒.

註2: 目前 (2015.12.05) CDH 的版本為 5.5

2015年8月1日 星期六

Hadoop: MapReduce WordCount 範例

緣起

承續前一篇 Hadoop: 如何在 CentOS 7.1.1503 安裝 Hadoop 2.7.1 (Single-Node Cluster) , 本文將繼續就 MapReduce 範例作記錄.

以下範例, 源自參考文件的前 3 篇, 本文只是將筆者的操作過程作記錄, 供後續安裝的參考.

以下將分為4個部份:

1. MapReduce 範例資料下載
2. 將範例資料上傳至 Hadoop
3. 檢查範例資料是否正常上傳至 Hadoop
4. 以 WordCount 作為資料分析範例

Hadoop: 如何在 CentOS 7.1.1503 安裝 Hadoop 2.7.1 (Single-Node Cluster)

緣起

承續前一篇 CentOS: 如何在 VMware Workstation 11 安裝 CentOS 7, 並避免 Easy Install  , 本文將繼續就 Hadoop 的安裝作記錄.

在網路上搜尋了一下,
1. 參考文件前 3 篇, 有針對在 Ubuntu Desktop 12.04 上如何安裝 Hadoop 1.0.4 作了說明
2. 參考文件前 3 篇, 因為是比較舊的版本, 且不是 CentOS, 所以又參考了最後 2 篇的內容

本文只是將筆者的操作過程作記錄, 供後續安裝的參考, 以免忘記. 且重點在於安裝的部份, 至於運作的部份 (Map Reduce), 將另文作記錄.

如果跟其它作者的文章有雷同, 尚請見諒.

以下將分為三大部份:

1. Hadoop 安裝套件下載
 1.1 建立專門執行 Hadoop 的使用者
 1.2 以 Hadoop 使用者身份, 下載 Hadoop 2.7.1 套件

2. Hadoop 安裝環境檢查
 2.1 停用 IPv6
 2.2 更新 JDK 至最新版本
 2.3 啟用 ssh 取代 telnet, 加強連線安全性

3. Hadoop 實際安裝
 3.1 解壓縮, 並搬移至對應的資料夾
 3.2 修正相關的 login 及 hadoop 環境設定 script
 3.3 喘口氣, 查一下 Hadoop 的版本
 3.4 建立 HDFS 資料夾
 3.5 格式化 HDFS 資料夾
 3.6 啟動 Hadoop 服務
 3.7 開啟網頁管理介面
 3.8 停止 Hadoop 服務


2015年7月26日 星期日

CentOS: 如何在 VMware Workstation 11 安裝 CentOS 7, 並避免 Easy Install

緣起

由於最近工作上可能會用到 Hadoop, 所以想說建立一個簡單的環境供 Study 之用, 所以就建一個 VM 來試試.

在網路上搜尋了一下, 發現大部份的 Hadoop 都是安裝在 Linux 作業系統上, 而目前比較多人用的 GPL 版本, 應該是 CentOS, 所以就以 CentOS 7.1.1503 為作業系統.

整個過程, 大致都蠻順的, 唯一要注意的是, VMware Workstation 11 支援 CentOS 的 Easy Install, 若不小心選到這個方式, 會發現相關的設定無法在安裝的過程中指定, 例如: 語系, 磁碟配置 ... 等.

本文只是將筆者遇到的問題作個記錄, 且純粹只針對 CentOS 7.1.1503 作截圖說明, 供後續安裝的參考, 以免忘記.

如果跟其它作者的文章有雷同, 尚請見諒.

以下主要分為3個部份, 大部份均為截圖, 並主要著眼在第2個部份, 有需要時會補上文字說明.
1. CentOS 7 安裝程式的取得
2. 如何建立一個 Non Easy Install 的 VM 安裝設定
3. 實際安裝 CentOS 7

2015年6月26日 星期五

C#: Passing Parameters


緣起

其實這篇文章在 草稿 裡已有一段時間, 但因為有些細節沒有確切的答案, 所以一直沒有沒有發佈.

直到最近參加了 SkillTree 主辦, Bill叔 主講的 物件導向實作課程(使用C#)第四梯 , 對於細節部份, 得到了一些解答, 也有了比較大的信心, 故重新整理後, 進行發佈.

完整範例, 請由此下載.

2015年3月7日 星期六

2015年2月28日 星期六

Javascript: 如何建立物件 (Part 1)


緣起

由於網頁的前端技術越來越熱門, 很多 Framework / Library (ex: jQuery, AngularJS / Bootstrap ... ) 或技術 (ex: / HTML5 / CSS3 / TypeScript / SCSS ...) 不斷出現. 但其中最主要的基礎還是在 HTML5 / CSS3 / Javascript.
本文主要針對 Javascript 建立物件的方式及相關的注意事項, 作了整理; 畢竟, 想要看懂Javascript Framework (ex: jQuery) 的內容, 還是要有一些底子, 特別是物件的建立及的物件導向觀念,
筆者才疏學淺, 目前的功力只能寫到物件建立的方式; 至於物件導向的實作, 則需另外再花時間研究.

完整範例, 請由此下載.

2015年2月1日 星期日

證券: 集合競價與逐筆交易


緣起

有進行股票交易的朋友, 是否會覺得奇怪, 以現股交易而言, 有時明明下單 148 元買台積電, 但結果成交價是 147 元? 其原因在於目前交易所的買賣配對處理機制,

國際上各交易所的競價方式, 主要有2種, 一種是集合競價, 一種是逐筆交易; 國內係採集合競價的方式, 不論開盤, 收盤前幾分鐘, 或盤中, 均採集合競價. 而國際上有些交易所在開盤, 收盤前幾分鐘採集合競價, 盤中則採逐筆交易的方式.

本文將舉範例作說明


2015年1月23日 星期五

C# LINQ: GroupBy


緣起

前一陣子參與的專案裡, 用了不少 LINQ 的語法, 但沒有時間細推其原埋.
其中, 常用到 GroupBy 的語法, 作各群組的 加熜, 平均, 最大值, 最小值, 計數 ... 等.
本文會採用 Query Syntax 及 Method Syntax 並陳的方式, 進行 GroupBy 的說明. 同時, 以 LINQPad 展示其執行結果, 會有助於了解 GroupBy 在作什麼.
註: 關於 Query Syntax, Method Syntax, LINQPad, 可以參考筆者的這篇文章.

完整程式範例, 筆者放在 GitHub, 請由此下載.

C# LINQ: QuerySyntax and Method Syntax with LINQPad

緣起

前一陣子參與的專案裡, 用了不少 LINQ 的語法, 但沒有時間細推其原埋.
MSDN 的官方說法: LINQ 的語法共有 2 種: 一個是 Query Syntax, 一個是 Method Syntax. 本文將作淺顯的說明.
另外, 亦將介紹一個工具 LINQPad 的工具, 在您還不是很熟悉 Method Syntax 的時候, 可以協助將 Query Syntax 轉為對應的 Method Syntax.

完整程式範例, 筆者放在 GitHub, 請由此下載.

2015年1月18日 星期日

Oracle PL/SQL Dependency Injection for loose coupling


緣起


幾個月前, 有看到一篇針對 Oracle PL/SQL 進行重構的文章, 改用類似 Dependency Injection 的方式來進行設計, 直到最近才有時間撰寫網誌, 留下記錄.

該作者主要有2篇文章, 筆者在參考文件, 作了一些摘要說明. 真的很難想像 Oracle PL/SQL 可以實作一些 Design Pattern.

以下內容, 係筆者依目前工作上接觸到的產業進行情境設計.

完整程式範例, 筆者放在 GitHub, 請由此下載.



2015年1月17日 星期六

C# yield

緣起

接續 前一篇 對 IEnumerator 及 IEnumerable 的探討, 及進一步 Study, 可以發現, .NET Framework 的集合物件都有實作 IEnumerable (非泛型) 或 IEnumerable<T> (泛型),
故若要產生一個物件集合, 供外部逐一取出元素, 直接利用現成的泛型類別 (ex: List<T>, Dictionary<T>) 產生之後, 回傳給呼叫端; 再由呼叫端用 foreach 逐一讀取, 這是很直覺的寫法.
但有沒有更方便的方式呢? 在某些情境下, 或許可以用 yield 這個 Syntactic Sugar.

完整程式範例, 筆者放在 GitHub, 請由此下載.

C# IEnumerable, IEnumerator, IQueryable

緣起

最近在 Study 一些 C# 的議題, 為避免忘記, 所以留下一些摘要記錄; 以下文章大部份係摘自 C# 5.0 in a Nutshell, 5th Edition 的第4章 "Advanced C#" 裡的 Enumeration and Iterators 說明.

完整程式範例, 筆者放在 GitHub, 請由此下載.