為你自己學 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 才有機會進到學校的電算中心打工,然後才開始學著寫程式的。

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

「自學程式現場」新手應該要學什麼程式語言?

「自學程式現場」新手應該要學什麼程式語言?

該學什麼程式語言,這是個接近討論信仰等級的戰爭問題,拿去問 10 個軟體工程師,可能會得到 13 種答案。為了避免張飛打岳飛,我先對「新手」做個簡單的定義:

新手 = 沒有在學校學過怎麼寫程式,而且也完全沒有自己動手寫過任何一行程式的人

回到原本的問題,我的答案很簡單:

都可以!選你看的懂、看的順眼的就好。

這有講跟沒講沒一樣,但我沒開玩笑,真的都可以。喔,有個東西不行啦,就是 HTML,原因很簡單,因為它不是程式語言!

「自學程式現場」哈囉,世界!

「自學程式現場」哈囉,世界!

「我不是本科系的,有辦法學程式嗎?」
「我想學程式,應該學哪個程式語言」
「學 XXX 程式語言好找工作嗎?」
「我已經三十好幾,現在轉職會不會太晚?」
「現在應該要學前端還是要學後端?」

上面這些都是我們的粉專常會收到的訊息,也在 PTT 的某些版也是常常吵架的主題。先說,我個人覺得吵架沒有不好,我喜歡激烈而且有料的對話,只是吵架到最後可能會因為吵輸了面子掛不住而容易失焦,偏離原本的主題。