2019年12月21日

閒聊 | 把 Git 當 FTP 用!四人小新創當實習網頁工程師的有趣經驗

還在念大學的時候,我曾經去一家剛成立一年的小新創公司實習,職位是實習網頁工程師。

那這家公司有多小呢?我剛進去的時候,包含老闆,員工總數只有4人,2個共同創辦人及2個(實習)工程師,除了員工人數少以外,公司的資本額更是只有一百萬。

2019年12月10日

淺談程式碼的可維護性

坊間或教科書上有一些量化的方法可以用來衡量可維護性。不過我想要用比較含糊點的方式來表示這個「可維護性」這個概念。

就一個運行良好且成熟的系統來說,日常的維護並不會有大幅度的變更或修改程式碼的需求,通常只是一些小調整,或是bug的修正。

但是對於還在成長中的系統來說,除了要修復bug以外,還要配合公司、業務發展,大幅度調整現有功能,修改範圍會橫跨多個模組或程式、甚至跨越不同系統,而基於系統現有架構上擴充功能也很常見(調整架構也有機會發生)。

2019年12月8日

比較 PHP 問號問號 ?? 及問號冒號 ?: 的差別 - Null Coalescing Operator vs Ternary Operator

本篇為PHP系列

兩個問號 ?? 及問號冒號 ?: 的差別其實不大,兩者在使用方式上的差異,主要在於什麼時候回傳第二個變數。

三元運算子

要聊 ?? ?: 不得不先提一下三元運算子 (ternary),三元運算子的用法是像這樣:

$a ? $a : $b;

2019年12月3日

開發 | Don't Repeat Yourself DRY 原則不是萬靈丹 | 不要為了重複而重複

這個東西可以共用,我們抽出來吧!

當我們發現程式中,有很多長得很像的部分,我們通常會開始思考,如何把這些東西整理出來。

畢竟著名的DRY原則,告訴我們:不要重複你自己。

2019年11月30日

MySQL/MariaDB如何儲存毫秒、微秒?

DATATIME及TIMESTAMP

MySQL跟MariaDB常用的時間類型有DATATIMETIMESTAMP,在比較新版本的MySQL中,是支援在這些類型中儲存毫秒(10^-3秒)、微秒(10^-6秒)的。

透過phpMyAdmin介面,可以設定DATATIME及TIMESTAMP的長度(精準度),長度的值域為0~6,長度的意思是儲存到小數點下第n位,也就是10^-n

或是透過SQL的方式建立或修改時間類型的欄位時,也可以加上長度的設定。

CREATE TABLE `test` ( 
  `created_at` DATETIME(3) NULL , 
  `updated_at` TIMESTAMP(6) NULL 
) 

舉例來說,TIMESTAMP設定為長度設定為6的話,會得到TIMESTAMP(6)的類型,代表在資料庫中,此欄位最多可以儲存到微秒,像是:

  • 2019-11-29 09:07:26.819359
  • 2019-11-29 09:07:26.000000
  • 2019-11-29 09:07:26.999999

2019年9月14日

什麼是後端?跟前端差在哪裡?簡單介紹後端工程師的工作內容!

Photo by Jordan Harrison on Unsplash

在提到網頁開發的時候,常常會提到前端工程師跟後端工程師。前端聽起來也許比較好理解,大概就像是前台、使用者介面吧?多少可以想像的到。但後端呢?後面是指哪邊?螢幕的後面嗎?

當然不是XD

為了釐清大家的一些疑惑,本篇會聊聊前、後端的區別,並針對後端的部分多補充一些資訊,希望對大家有幫助。

2019年9月13日

讓 PHP Composer 幫你自動載入 Function

Composer 不只可以自動載入 class,也可以自動載入 function。

2019年9月10日

RabbitMQ - Topic Exchange的規則,Routing Key、Binding Key差異在哪

前言

RabbitMQ支援四種Exchange,Direct、Fanout、Topic、Headers。本篇主要想聊聊Topic Exchange以及Routing Key、Binding Key用法。

2019年8月31日

開發 | 什麼時候要使用依賴注入

全部依賴都應該要被注入嗎?如果不、怎樣的依賴需要被注入?

有地方怪怪的

當代的程式開發框架,通常可以找到很方便的依賴注入、控制反轉容器工具,像PHP Laravel Framework就內建了很方便的IoC Container,讓開發者可以輕鬆地處理類別的依賴注入。但有時候太方便反而會造成濫用,或是有怪味道的產生。

2019年6月30日

開發流程白話文,後端新手這樣工作不出錯

前言

市面上軟體開發相關的書籍和課程,已經提供許多標準化的流程可以使用了,但是在新創、中小規模或是制度較為不完善的公司,因為各種問題,可能比較難套用所謂的標準流程,難免會顯得開發流程一團亂、無所適從。因此這篇文章想要提供根據個人實際開發上的經驗,提供一種流程給新人作為參考。

流程

流程如下,以下會簡單說明各階段該做什麼:

  1. 聆聽需求與理解需求
  2. 思考與設計
  3. 實作與測試
  4. 驗收

2019年4月24日

MySQL/MariaDB中的collation是什麼?

在MySQL/MariaDB資料庫欄位中儲存文字資料時,會需要決定儲存時使用的文字編碼,比如說常見的utf8或是該被淘汰的big5都是一種文字編碼,這些編碼又被稱為character sets,字符集。在不同的字符集當中,對於人類所認知的同樣的一個字,會使用不同編碼儲存。

2019年2月26日

PHP Composer Autoload PSR-0、PSR-4與classmap的差別及autoload optimize

PSR-0PSR-4都是PHP-FIG制定的PHP Autoloader標準,而透過composer的協助,開發者可以方便的使用這些Autoloader。

所謂的autoloader自然就是提供自動載入類別的功能,開發者不需要自己在每支檔案前reuqire或include所有需要的類別。

2019年2月24日

Laravel 如何修改 View Cache 的路徑

在Laravel 5.7中,Blade Engineer 編譯完 Blade 樣板後,會針對這次編譯完的結果產生快取檔案,以加快下次讀取速度,節省每次重新編譯的時間。

有兩種簡單的方法可以修改Laravel View快取的預設路徑。

2019年1月1日

PHP 過時了嗎? 2019了,還適合學習PHP嗎?

Is it still okay to learn PHP in 2019?

剛開始學習網站後端開發的人,常常會問:哪一種語言最適合作為後端語言?PHP、Python、javaScript(Node.js)還是ruby(RoR)?其實這個問題沒有標準答案,要看各自的考量還有需求。而我這邊的看法很單純,那就是不管其他語言怎麼樣,PHP並不會是一個差勁的選擇。

為什麼?以下幾點是PHP的好處:

  1. 對新手友善
  2. 資源豐富
  3. 逐漸現代化
  4. 不怕沒工作

以下我會稍微簡述這幾點。