為你自己學 Git(第二版)- 寫在最前面

為你自己學 Git(第二版)- 寫在最前面

本書正在連載、撰寫中,待完稿後會集結成冊出版

人生不能重來,但 Git 可以!

不知道大 家是否曾經看過周星馳的電影呢?在周星馳的《大話西遊》電影裡,主角至尊寶拿著月光寶盒大喊一聲「波若波羅密」便可穿越時空,回到過去救他的娘子;或是陪我們一起長大的動畫《多啦 A 夢》,只要拉開房間的抽屜裡、搭上時光機,隨時可以回到過去拯救世界。雖然以目前人類的科技應該還不能真的做出穿越時空的時光機(有的話請務必讓我知道,我要回到過去買大樂透!),不過對電腦工作者來說,Git 這個工具就像時光機一樣的神奇,可以讓你回到特定的時間點,或是救回不小心被刪除的檔案。

以目前現行的 Git 版本(2.42.0)來說,從比較常見的高階指令(Porcelain)到比較不常用的低階指令(Plumbing)加一加大概有一百多個,但在一般工程師的日常使用指令大概頂多十來個。如果各位讀者原本日常工作就有在使用 Git 的話,應該會知道 Git 常用的指令大概就是那幾個,像是 git addgit commit ,開分支、合併分支,也許再加個 git pushgit pull 上傳、下載同步進度,加起來常用的指令大概真的就十來個吧,看起來很容易(事實上也不難)。

不過在第一版的《為你自己學 Git》出版到現在這五年期間,我曾在許多學校、社群及企業內部分享或講授 Git 的使用技巧的時候,才發現事實上並不是這麼一回事。

報名 Bootcamp 課程之後,然後呢?

報名 Bootcamp 課程之後,然後呢?

你想轉職工程師嗎?

也許是因為疫情的緣故,或是個人職涯遇到天花板的關係,這幾年來不少人會試著轉換到軟體工程師跑道,看看能不能在家裡就能遠距工作,或是得到更好的薪資。

不管是前端還是後端,不管是學著做網站還是手機 App,或者是自學還是去上課,或也許是實體課程還是線上影片,都好,只要能學會、能順利轉職成功拿到軟體工程師的門票,都是好的方法。

至於實體跟線上的學習比較,我相信網路上應該不少參考資料,事實上就算不用看這些比較文章,不同方式的學習、轉職管道的優缺點比較以及成效的好壞,大家大概也都心裡有數。

簡單的說,如果對自己有自信,覺得自己可以很自律把買的線上課程影片看完而且跟著做些作品出來,Udemy 之類的線上影片課程算是相對高品質且低成本的自學管道。不過如果覺得自己是個需要人押著才能乖乖的寫作業的人的話(就像我),剛好同時手邊還有些預算,想在三個月到半年之間就轉職成功的話,參加實體的 Bootcamp 培訓課程可能是相對有效的方法。

坊間類似的培訓單位不少(請讓我自肥的宣傳一下我們自家的 ASTRO Camp,不過本文的目的並不是在比較這些機構或課程,而是想跟各位說,假設大家報名了 Bootcamp 之後,然後呢?

為你自己學 Ruby on Rails(第二版)- 第一章 簡介及生態圈

為你自己學 Ruby on Rails(第二版)- 第一章 簡介及生態圈

Ruby 生態圈

本書正在連載、撰寫中,待完稿後會集結成冊出版

Ruby 這個程式語言可以說是因為 Rails 的盛行而興起的也不為過,我認識大部份的人會開始學習 Ruby 或知道 Ruby 這個程式語言,大多也是因為 Rails 的緣故。事實上,目前我所知道大部份在使用 Ruby 進行開發的專案,大部份也都是 Rails 相關的專案。

關於 Ruby

什麼是 Ruby?

我相信很多人因為聽聞 Rails 可以快速開發網站而開始知道有 Ruby 這個程式語言(甚至認為 Rails 是一種程式語言),所以會認為 Ruby 主要就是用來開發網站,或是以為 Ruby 是近幾年才新發明的程式語言。事實上 Ruby 是一種泛用的腳本式程式語言,從資料分析、繪圖、3D 建模、系統管理、遊戲開發等程式都可以使用 Ruby 來開發,而且它的年紀說不定比各位讀者還要大,Ruby 目前已經已經超過 25 歲了。

Ruby 是由一位名叫松本行弘的日本人所發明的(日文:まつもとゆきひろ,網路上大家通常稱他 Matz)。發明人 Matz 當年參考了部份 Perl、Lisp 及 Smalltalk 等程式語言的設計,開發出一款更容易撰寫、語法寫起來更像一般人類語言的程式語言。

Matz 在 1993 年開始設計,於 1995 年釋出了第一個版本。早期使用 Ruby 的開發者並不算多,相關的技術文件也大多是日文居多,直到 Rails 開始風行之後,才慢慢的有越來越多人關注它,並於 2006 年獲選為 TIOBE 年度程式語言。Ruby 目前在 TIOBE 網站上的排行榜一直都在前 20 名的位置,以全世界眾多程式語言來說,算是前段班的位置。

為你自己學 Ruby on Rails(第二版)- 序 寫在最前面

為你自己學 Ruby on Rails(第二版)- 序 寫在最前面

這是一本 Ruby 程式入門書,同時這也是一本可以讓你快速做出產品的參考書籍。

本書正在連載、撰寫中,待完稿後會集結成冊出版

第一版的「為你自己學 Ruby on Rails」是 2017 年的事,轉眼已過了五年,Ruby 的主流版本從原本的 Ruby 2 系列變成 Ruby 3 系列,而網站開發框架 Ruby on Rails(本書將會以 Rails 簡稱)也從版本 5 昇級到版本 7,除了 Rails 本身的功能有不小的進步外,Rails 對於網站前端的開發配置方式也有很大的變化,但這些變化,也都跟整個網站開發的生態的變化有關,例如:

  • 瀏覽器對 JavaScript/ES6(ECMAScript 6)的支援度越來越高,因此不再需要 CoffeeScript 之類的 JavaScript 轉譯工具,直接寫原生的 JavaScript 也很順手。同時,也因為原生的 JavaScript 的進步跟成熟,原本對一些套件(例如 jQuery)的依賴也降低不少。
  • 同時,瀏覽器也開始支援模組化的 JavaScript(ESM),程式寫起來越來越有架構,而不是全部寫在一個 .js 檔裡面。
  • 越來越多厲害的打包工具,從功能強大但設定有點麻煩的 Webpack,到號稱無痛、免設定的 Parcel,有效能超猛的 esbuild,還有被某前端框架耽誤的打包工具 Vite
  • 網站協定從 HTTP/1.1 慢慢變成 HTTP/2 的形狀,而且大部份主流的瀏覽器都已經有支援。在 HTTP/1.1 時期可能會為了減少對伺服器的請求次數或網路連線數,會藉助上述提到的打包工具把網站的 JavaScript 或 CSS 打包成同一個檔案,但到了 HTTP/2 因為支援多管道平行下載,反而不會特別鼓勵打包,就讓每個檔案小而美就好。
  • 新的前端套件跟框架不斷的推出…

上述這些種種的變化,都不斷的挑戰各種網站開發框架跟前端開發的整合程度,同時也改變了網站開發者們的開發流程。

閱讀原始碼 - 再戰十年的 jQuery

這是我在 2022 年 COSCUP 研討會上分享的主題。透過檢視 jQuery 設計架構以及欣賞其中一些有趣的寫法,理解設計原理後,試著復刻一個超陽春版的 jQuery:

jQuery

View on Speaker Deck
Download PDF

希望對大家認識 jQuery 這個能夠再戰十年的前端套件有些幫助 :)

「自學程式現場」什麼是前端工程師?

「自學程式現場」什麼是前端工程師?

前端工程師,英文全名是 Front-End Developer 或 Front-End Engineer,有時也會縮寫成 F2E。

現在大家聽到這個職稱,想到的大概就是可以在網站上做很炫的特效的工程師,但在當年我一開始學習寫程式的年代,並不存在這個名詞。一來那個時候就是一個人從 HTML、CSS 的切版到資料庫的架設、存取甚至連主機的架設跟設定都得一條龍自己包辦(硬要用現代的名詞講就是所謂的「全端工程師(Full Stack Developer)」,但我其實沒有很喜歡這個名詞)。

二來也是因為網路技術的發展十分迅速,印象中,當年 Google Map 剛推出的時候,超炫的地圖拖拉、放大縮小功能,整個把 AJAX 這個名詞給炒紅了,自那之後就越來越多 JavaScript 的應用。

當年只是用來做簡單的表單驗證的 JavaScript 已經複雜到不是一個人可以輕鬆搞定的程度了,於是逐漸特化出「前端工程師」這樣的角色出來。即然有「前端」,那自然也有相對的「後端」工程師,但請繼續容我在後續的文章再介紹。

其實手機 App 的開發者很常常也需要存取網站的 API 然後呈現在 App 裡,所以在我認定裡手機 App 工程師也算是前端。以下我就以網站的前端工程師來舉例說明,到底當一個網站前端工程師的工作內容有哪些,以及需要具備哪些的技術。

「自學程式現場」非本科系有辦法學程式嗎?

「自學程式現場」非本科系有辦法學程式嗎?

「我不是本科系的,有辦法學寫程式嗎?」

「不是資訊相關科系,是不是之後會學不好或是發展有限?」

講的好像本科系畢業就一定會寫程式一樣...

首先,沒有人是所謂的「本科系」,就算是那些所謂的本科生,大多也是上了大學之後才開始的,在這之前也是非本科生(還是有人從一出生就開始打鍵盤的?)

大家一樣都是半路出家,差的就是四年的大學教育的距離。所以,是不是本科系對寫程式來說重要嗎?怕各位沒耐心往下看,先講結論:

重要,但這跟有沒有辦法學會程式以及將來的發展沒直接關係。

「自學程式現場」自學教材選擇

「自學程式現場」自學教材選擇

本文開始前先跟大家說個年輕時候的小故事

學生時期,那時候網路不發達,不像現在隨手就一堆看不完的資訊。我永遠記得我那時候為了學 Photoshop 的火焰字特效,常常會跑到天瓏書局看白書。

為什麼看白書?就學生窮啊,對當時的我來說電腦書不便宜,特別是那種全彩印刷的更是捨不得下手,那時候也沒有像現在身上有手機可以拍照,所以我常常就一邊看一邊拿出自己的小本子抄筆記,速記重點步驟,還得留意看老闆會不會走過來趕人(即使後來認識老闆,還是會覺得他給我很兇的印象)

就這樣,我一次偷學個三個、五個特效,累積下來我對 Photoshop 也就越來越熟,甚至還能自己組合出新的效果出來,我也是因為 Photoshop 才有機會進到學校的電算中心打工,然後才開始學著寫程式的。

不得不說,我覺得我當年這樣的學習雖然有點辛苦,但成效十分顯著。