發表文章

我的 2 年 Developer 生涯

從 Fresh Grad 到 Developer  無意中看到 我的2年 programmer ( web developer ) 生涯故事 ﹣ 沉重代價 一文,感觸良多,所以都想寫一篇自己畢業至今兩年當 Developer 的心路歷程,回顧這兩年的得著,以及展望一下將來。 2016 年 ----- 初出茅廬  畢業前到過兩間公司面試,第一間面試了一個月都沒有回音,聽聞陸續有人收到該公司的 offer,便知道自己落選了,所以就嘗試申請第二間。send 了幾封 cv,誤打誤撞找到了一間 agent,幫我安排了一間大公司的面試,糊里糊塗就去了面試。面試完感覺比上次好,踏出那座大夏的時候,大約 11 點,陽光普照,天空亦很藍,心想:「雖然過海番工比較遠,但公司工作環境尚算不錯,如果有 offer 就一試無妨」,結果大約 2 天後就收到 agent 的電話,叫我上公司簽約。好慶幸自己未畢業就已經收到一間大公司 Developer 的 offer,考完試就馬上番工,但現在好後悔當時太早番工,沒有玩盡佢... 從學校走出來的時候就像一張白紙,對 IT 這行業是零認識,沒有接觸過現實世界中的 IT project,最多只是做過學校的mini project 及 FYP (Final Year Project)。記得第一天上班,SA (System Analyst) 給予一個 demo project 讓我試煉身手就已有點怯,對比學校剛剛完成的那個 project (Web Application Development) 顯得大型很多。當時連學校 project 也只能勉強應付的我,開始擔心自己有沒有能力完成 SA 所吩咐的工作,以及未來 developer 的路⋯⋯SA 簡單講解了 project 的架構,有點像幫我重溫 Web Application Development 那一科所教的東西,然後我就開始嘗試 study 一下那個 project。經過 SA 及隔離同事的指導,終於用幾天的時間掌握並完成了那堆工作(都是一些基本CRUD),這時候才鬆了一口氣,感覺腦袋有點「通經開竅」。 大約一個月後,SA 開始讓我學習一個沒有上線的真實 project,由於功能不多,所以與 demo project 相比也不是大型很多,感覺不難上手。書展這段時間 SA 比

iOS Design Pattern

圖片
2017 年 12 月開始了一個 iOS 的 project,需要把 etnet 的即時投資組合複製到另一個 app,這次 project 可說是目前為止寫得最多 iOS 的一次,當中鞏固了之前零零碎碎所學的 iOS 技巧。今天無意中看到一篇 iOS Design Pattern 的文章,在剛剛完成今次 project 後看到,就像是工作後的整理/筆記,可以 review 一次開發時所面對過的 design pattern,所以要記錄下來。 1. MVC Pattern  2. The Singleton Pattern 在一個 class create 一個 public 的 object,可讓其他 class 存取這個 object,例如[UIScreen mainScreen], [NSFileManager defaultManager] 會 return 一個 Singleton object  3. The Facade Design Pattern 4. The Decorator Design Pattern  類似 Java 的 extend The Decorator pattern dynamically adds behaviors and responsibilities to an object without modifying its code. It’s an alternative to subclassing where you modify a class’ behavior by wrapping it with another object. In Objective-C there are two very common implementations of this pattern: Category and Delegation. 5. The Adapter Pattern objective-c 的 protocol 類似 Java 的 interface An Adapter allows classes with incompatible interfaces to work together. It wraps itself around an object and

解決phpMyAdmin登入後導向不正確網址的問題

安裝完 LEMP Stack 和 phpMyAdmin 後,每次由 https://example.com/phpmyadmin 登入 phpMyAdmin 之後都會被導向 https://example.com/ ,需要人手在瀏覽器再打多次 /phpmyadmin,感覺好麻煩,在網上找到一個簡單的解決方法,特此記錄下來:

政府T-Contract vs Vendor vs In-house

又到畢業的季節,當一個 IT 畢業生投身社會成為一個程序員時,很多時都要考慮應該往哪個範疇發展,還有就是公司的類型,現時 IT 主要分為 Vendor, in-house 和 t-con,這裡簡單說明這三種類型的分別。 Vendor就好比少林寺,若果你有心學習,就一定有很多機會。基本上是做軟件開發的主要功夫,除了business process re-engineering,一般做兩三年ap就什麼都接觸到。當然,你吸收了多少,掌握有多深入,就看你的本事。Vendor收入一定不高,如果不是等錢用,做兩三年Vendor再轉工,你會發現你的市價高了很多。 比較大型 vendor: PCCW Solutions , ICO , GreenTomato 至於一般 in-house,最大問題是流水作業、分工仔細,你很少機會接觸不同的工種,不知道整個流程的運作,除非你有機會嘗試不同的職位。不過,在in-house做了一段長時間後,你會了解公司的文化和運作,會比較容易明白IT與User之間觀點的差異,懂得與user溝通,即是一大堆所謂的"軟性技巧",這些東西對於SA或Manager很有用,但前題是你有這個升職的機會。 至於t-con ap是否真的容易做?與做development的t-con ap相比又是怎樣?.... 的確做development同唔做development的分別是很大. 前者我覺得同一般in-house的分別不大, 都係一邊寫code一面按照你上面個SA有乜要幫就分一部份俾你囉. (你係講ap, 唔係jp或者p嘛) 但如果唔做development的話, 我反而覺得t-ap幾吃力不討好, 因為如果你熟晒成個流程點玩, 你基本上已經夠料做t-sa, 但明明你未夠料, 但你又要同o的contractor交手, 而通常你對手都唔係ap而係sa or above, 咁你空肚去同人傾, 當然除了用政府個名去大人之外都無其他方法啦.

[網頁基礎爬蟲] 用 Python 來做 Web Scraping,擷取 LocateFamily 內的資料

圖片
我們在學習或工作的時候,少不免要在網上收集資料。若果牽涉一些數據或統計相關的工作,通常需要收集大量資料,例如分析股票走勢時便要收集大量股價,把網上的數據輸入 Excel 或其他工具以作處理及分析。但很多時候,網上的數據為了較好的排版及視覺效果,呈現的格式對我們把數據輸入 Excel 的工作變得不方便,例如把大量數據分成數千頁顯示,若果要人手逐頁複製到 Excel,恐怕要花上一天時間。這些無聊重覆的工作大家都不想做,所以今天想分享如何用程式收集數據、自動生成一份 csv 檔。 數據收集的途徑 現時網絡上最好的方法大概是用 API,一般大型網站(例如 Twitter、Facebook、Google)都會提供 API 給公眾使用,提取結構化的資料。但並不是所有網站都有提供 API,目的可能是不希望公眾提取到公司大量資料、或者沒有相關技術人員負責。讀者可能還想到 RSS 或其他途徑,但這些方法都有一些限制,在此不以討論。如果這些途徑都不可行的時候,還有其他方法嗎?答案當然是有。接下來會示範如何提取 LocateFamily 的數據並自動生成一份 csv 檔。 Web Scraping Web Scraping,意思就是用程式技巧來抽取網站上的內容。它有很多的別名,Web Havesting、Web Data Extraction、Web Screen Scraping、Web Data Mining 等等,但就是好像沒有一個中文名字。基本上,任何程式語言都可以做 Web Scraping,由於 Python 是比較容易的程式語言,而且在 Web Scraping 及大數據方面有較齊全的開發工貝,所以今次會用 Python 做示範。(請自行搜尋 Python 安裝教學) Web Scraping 其實分開兩個工序。第一個工序就是把你需要的網頁下載,第二個工序就是在下載了的網頁中找出有用的資料。正常的網頁內容,其實都是根據 html 標準的,下載之後就是一串很長的 string,就跟你在瀏覽器裡面 view source 看到的一樣。把這一串很長的 string 變成能夠容易解讀、存取特定資料的過程,就叫做 html parsing。 Web Scraping 工序 工序一:下載網頁 我們首先看看第一個工序。要下載一個網頁,其實有很多工具,在 Pyt

網絡應用程式開發人員必備 Cheat Sheet!

圖片
IT 有太多東西要學,所以會很容易忘記一些指令,在網上找到一些網絡應用程式開發的 Cheat Sheet,在此紀錄下來作參考

用 10 分鐘在 Cloud9 開發一個 Laravel 5 的 Blog

圖片
Cloud9 是一個雲端Web開發平台,它提供了一些開發環境給我們(例如安裝了PHP、Ruby、Python等),讓我們省卻配置伺服器及開發環境的時間,可以立即開發Web App。Cloud9 是免費的,每個開發環境有1個CPU、512MB RAM 及 2GB HDD,對小型 project 是夠用的,很適合用來學習各種 Web App 的開發。 Cloud9 IDE是一個免費的在線集成開發環境,支持四十多種程式語言,例如 PHP、Ruby、Python、Go、JavaScript(包括Node.js)等。它可以使開發者在一個事先安裝好的環境中快速進入開發、與其他人協作並且在Web開發中做到實時預覽和瀏覽器兼容性測試等。 - Wiki 我們會用一個熱門的 PHP 框架 - Laravel(版本:5.2),在 Cloud9 建立一個簡單的 Blog 網站應用程式,所以請先到 Cloud9 註冊戶口。 開完戶口就可以立即建立開發環境 選擇開發環境 等待 Cloud9 建立開發環境 建立完畢便進入了我們的開發環境 安裝 Laravel 5 接下來會安裝最熱門的 PHP Framework - Laravel 5 在 Terminal 輸入以下指令(可以一次過複製以下指令並在 Terminal 貼上) rm README.md php.ini hello-world.php sudo composer self-update composer create-project laravel/laravel ./laravel --prefer-dist shopt -s dotglob mv laravel/* ./ rm -rf laravel 因為 Laravel 會提供 public 資料夾 的檔案給 Client,所以我們要(透過一個文字編緝器nano)修改 Apache Config sudo nano /etc/apache2/sites-enabled/001-cloud9.conf 把 DocumentRoot /home/ubuntu/workspace 改為 DocumentRoot /home/ubuntu/workspace/public 改完請按 F2 儲存,然後