Python 的 String Interning 機制
許多程式語言會使用 2 個等號 ==
比較兩個值是否相等,在 Python 也是一樣,但 Python 還有個特別的比較方法 is
,它可以用來比較這兩個值是不是同一個物件:
許多程式語言會使用 2 個等號 ==
比較兩個值是否相等,在 Python 也是一樣,但 Python 還有個特別的比較方法 is
,它可以用來比較這兩個值是不是同一個物件:
假設你曾經寫過其它的程式語言,遇到這種一大串的 else if
組合的時候,通常會想到的是 switch
或 case...when
之類的語法。在 Python 並沒有這樣的設計,真的遇到一堆判斷就是用 if...elif...else...
寫就是了。這樣的設計是因為 Python 的作者認為 switch
語法並不是那麼的必要,而且 if...elif...else...
也可以達到相同的效果,所以就沒有加入 switch
語法。沒有 switch
或 case
的設計並沒什麼大不了的,事實上有些程式語言就算有 switch
或 case
的寫法,本質上也只是 if..else
而已。
這是在 Vue.js Taiwan 社群小聚分享的主題「你是 Live Reload,我是 Hot Reload,我們不一樣!」,用一個簡單的 Vanilla JS 專案示範平常在用的 Live Server 所提供的頁面自動重新整理,跟 Vite 裡面的 HMR(Hot Module Replacement)有什麼不同,希望對大家有些幫助。
但我必須老實說,今天這個主題是我在今年 LaravelxVue Conf 研討會上講錯的內容,當時我以為我看到的是 HMR,但後來細追原始碼才發現原來不是這麼一回事。
想要跟著影片自己動手做看看的話,可以到我的 GitHub 取得檔案
Repo:https://github.com/kaochenlong/vite-hmr-demo
場地錄影畫質只有 1080p 所以可能有些程式碼不一定會那麼清楚 :)
想要了解更多關於 Vite 的原始碼或運作原理的話,可參考Vite 原始碼解讀的介紹。
今年的 iTHome 鐵人賽我挑選的主題之一,是應該沒辦法用來開課賺錢的「Vite 原始碼解讀」。
選擇這個題目的原因是今年八月份我在 {LaravelxVue} Conf 研討會上分享的主題「被 Vue 框架所耽誤的建置工具:Vite」,可惜只有短短的 40 分鐘的時間,沒辦法介紹太細節的內容。所以我決定在這次鐵人賽活動,30 天分期付款地慢慢跟大家一起研究 Vite 的原始碼,看看能不能發現什麼有趣的東西。
在前篇文章我跟大家介紹了 senior 工程師的共通特質以及 junior 工程師的自我修練的建議,希望對大家有些幫助。
但如果你不是軟體工程師,可能不知道在哪裡看到招生廣告點進來的,或是剛好正在考慮想要轉職軟體工程師的話,有一些過去以及我們自己帶學生的經驗可供你參考。
同樣,如果懶的看文字,也可以看影片配雞排:
我們身處在軟體工程師的大海、河川、小溪或水溝中,總是常聽到大家問一個古老的問題:「Junior 工程師要怎麼變成 Senior 工程師?」
老實說我沒辦法跟你說你怎麼做就馬上能讓你從 junior 工程師變成 senior 工程師,因為 senior 工程師不像超級賽亞人一樣可以說變就變的,還是有什麼開關或植入晶片就馬上有效果,如果有這種開關或晶片也請幫我安裝一打。
我沒辦法也不太喜歡給那些常在農場文上看到像是「要訓練獨立思考能力」、「要有解決問題的能力」之類的抽象建議,除非有附上實際的訓練及成果檢核方式,不然這樣的建議有說跟沒說可能差不多。不過,我倒是可以跟各位分享我從那些優秀工程師朋友們身上觀察到的 N 項神奇特質,N = 12。我不知道到底是這些特質讓他們變的優秀,還是因為他們優秀才有這些特質,但既然他們能站在那個位置,表示一定有值得學習、致敬的地方。
這篇文章的文字可能有點長,如果大家懶得看文字,也可以點開影片配雞排,不方便看用聽的也行。
另外,如果你對於學習程式或是轉職軟體工程師有興趣,可參考另一篇文章「程式為什麼這麼難學?」。
從前面的「所有權(Ownership)」章節開始,接著生命週期(Lifetime)、特徵(Trait)、列舉(Enum),對平常只有撰寫前端或是只有寫 CRUD 的工程師來說(例如我就是),應該開始有一點學習上爬坡感了,這個章節會再繼續的增加一點坡度。
各位過去在寫程式的時候,有沒有遇過執行某些函數照理應該要回傳陣列,然後你會在這個陣列上呼叫 .map
或 .forEach
方法做點事情,但結果你拿到的不是陣列,而是一個 undefined
,然後程式就出錯了...