宅宅的浪漫:用 AI 為自己的研討會寫一個售票系統

兩個多月,18 萬行程式碼,從開發到部署、上線,一個人。感覺有點夢幻,但好像真的做到了,而且功能還在持續增加中!

故事要從去年的 12 月我們舉辦的 WebConf Taiwan 2024 開始說起。

一直以來,在台灣舉辦的社群活動或技術研討會,報名或售票系統大多是使用活動通或是 KKTIX 之類的服務,我們也是。我覺得很棒,使用上很方便也都沒什麼問題,不過因為身為 SaaS(Software as a Service)終究還是有一些限制,沒辦法為特定客戶做客製化。在我們活動結束後的會後檢討我就想,如果我們有一些自己的需求的話,也許下回我們可以自己來做一個報名系統:

image

AI 時代,來學程式跟 AI 一起變厲害!

AI 時代,來學程式跟 AI 一起變厲害!

這年頭,AI 工具強到連程式碼都能幫你寫了,隨便問個問題,ChatGPT 馬上就能吐出可執行的程式碼,看起來好像真的不需要學寫程式了?但現實可沒這麼簡單。AI 的確能幫上大忙,但它不是魔法,寫程式的核心價值並不只是「敲幾行程式碼」,而是理解問題、設計解法、debug……這些能力 AI 正在快速進步,但還沒到可以完全取代人的程度,至少現在還沒辦法讓一般的程式新手靠 ChatGPT 就能完成完整的開發工作。

雖然許多人對未來軟體工程師的就業市場感到悲觀,但我反而認為會寫程式的人現在比以前更有價值,因為 AI 就是一個能力放大器,它讓我們能夠更快、更有效率地把想法變成現實。如果你有在規劃今年的學習目標,或者想進一步提升技術,甚至考慮轉職軟體工程,那現在絕對是最好的時機。而且這次的課程不只教 Web 開發,還有 AI 技術加持,讓你學到最前沿的工具和技巧。

如果你也認同我的觀點,想在 AI 世代強化自己的技術,甚至轉職成軟體工程師,但又擔心選錯課程,那就繼續看下去吧!

「為你自己學 Python」正式上架!

為你自己學 Python

「為你自己學 Python」一書已經正式出版,書本裡的內容全文可在網站上免費閱讀,但如果您覺得拿在手上閱讀比較有感覺,在天瓏書局也能購買紙本書:

雖然我曾經寫過五、六年的 Python 程式,也曾在社群教過一陣子的 Python 課,但要提筆寫書又是不同的故事了。這本書從開始寫書到定稿,大概花了我一年多的時間,除了把以前上課的教材做了一次大大的整理,同時順便更新教材的軟體版本(當年還是 Python 2.x 的時代)。不只這樣,有些我當年自認為的觀念或看法,隨著年紀也有不同的領悟,也趁這個機會校正我自己對 Python 的理解。

這本書以 Python 3.12 做為主要教學版本,內容涵蓋環境安裝及 Python 程式語法,包括各種常用資料型態、邏輯及流程判斷、迴圈、錯誤處理、函數、模組、物件導向程式設計、檔案處理等,並透過網站爬蟲程式抓取並分析資料。沒有太多華麗的技巧,只有最基礎的程式觀念,期望能夠讓讀者在學習 Python 的過程中,建立穩固且正確的基礎。

在撰寫過程中,我除了翻閱官方文件以及 PEP(Python Enhancement Proposal)之外,有些我搞不清楚原理而且文件裡沒特別提到的設計,我就直接去翻 Python 的 C 語言原始碼來驗證自己的想法。新手自學程式容易被不完全正確觀念的影響而不自知,因此在這本書中我力求呈現正確且精準的觀念。我希望這不僅是一本程式自學參考書,也能引導各位讀者掌握 Python 正確的觀念,試著建立自己的「單一真相來源(Single Source of Truth)」。

鐵人賽 - 為你自己讀 CPython 原始碼

鐵人賽 - 為你自己讀 CPython 原始碼

這次的 iThome 鐵人賽,我給自己選了一個有點硬的主題,就是閱讀 CPython 的原始碼。

今年也剛好在 PyCon Taiwan 有一場工作坊,主題是介紹如何閱讀 CPython 的原始碼,所以原本只是想藉著鐵人賽的活動,把工作坊的內容文字化做為補充資料,沒想到越寫越多,對我這個不懂 C 語言的人來說更是吃力。雖然現在有很多 AI 工具的輔助,但幾乎每篇文章得要一邊挖原始碼,一邊驗證我解讀的程式碼是不是正確的,每篇文章至少都得花三個小時以上的時間。

你是數字,我是數字,我們不一樣!

你是數字,我是數字,我們不一樣!

在 Python 裡的 id() 函數可以算出某個值或物件在 Python 世界裡的「編號」,如果有兩個值算出來的編號是一樣的,表示這兩個值不只相等,而且還是一顆物件。

那麼問題來了,我寫了一個程式叫做 hello.py,內容如下:

a = 100
b = 200

def hey():
  return 300

res1 = 300
res2 = 100 + 200
res3 = a + b
res4 = hey()

print(id(res1))
print(id(res2))
print(id(res3))
print(id(res4))

當我執行 python hello.py 的時候,最後四行印出來的 id,有一個跟其它三個是不一樣的,猜猜看是哪一個。

空虛的真

空虛的真

來一個我自己覺得滿有趣的 Python 程式問答題。

在 Python 裡,all() 這個函數可以接一個串列,串列裡的每一顆元素都成立的時候就會回傳 True,反之只要有一顆不成立,就會是 False,例如:

>>> all([True, True, True])
True
>>> all([True, False, True])
False

題目來了:

>>> all([])     # A
>>> all([[]])   # B
>>> all([[[]]]) # C

一堆中括號、小括號,眼睛都快看花了,在正式的專案千萬不要這樣整自己(或是你的同事)!大家猜猜看 A、B、C 的結果分別是什麼?

為你自己學 Python

為你自己學 Python

為你自己學 Python

https://pythonbook.cc/

TL;DR, 先說結論:

這是我最近寫的書「為你自己學 Python」,實體書 & 電子書正在編輯中,網站上的內容除另有標示外,將會以 CC BY-NC-SA 4.0 方式授權予公眾自由取用。

希望對想要學習 Python 程式語言的朋友有些幫助 :)