| 程式人 | 林信良 | 程式學習 | 圖片取樣 | 藍雜訊 | Poisson Disk
淺談圖片取樣
ASCII藝術是半色調的變化應用,藉由改變圖像基本元素大小來模擬明暗的變化,若想基於元素的頻率來實現,可以朝藍雜訊、Poisson Disk取樣的方向來尋找資源
2022-08-01
| 程式人 | 林信良 | 程式學習 | 資料視覺化 | 圓堆砌 | circular packing | Python | D3.js
實現隨機圓堆砌演算
隨機圓堆砌效果是資料視覺化的利器之一, d3-force或circlify程式庫提供了方案,我們可以直接採用,如果想自行實現,可以朝著力模擬或Delaunay三角分割來探索。
2022-07-18
| 程式人 | 林信良 | 程式學習 | 仿生 | 差別生長演算
實現差別生長演算
差別生長演算能繪製出與圖靈紋相似的圖案,結合群聚演算實現差別生長演算的引力與斥力,而在演算過程中需要的引力及斥力,可參考群聚演算的區隔、凝聚與對齊等指向力來實現
2022-07-11
| 程式人 | 林信良 | 程式學習
super與多重繼承
面對多重繼承時的方法尋找,Python的super類別提供了標準方式,我們可以基於MRO的順序來尋找方法,掌握多重繼承時的方法查找順序,而不是依賴在開發者的各自定義的順序
2022-07-04
| 程式人 | 林信良 | 程式學習 | Python | metaclass | 物件
Python與meta程式設計
在Python中,有許多方案可以從事meta程式設計,方案間可解決的需求看似還會重疊,只有仔細看清方案間的分野,才能以簡單明瞭的方式來實現需求!
2022-06-08
| 程式人 | 林信良 | 程式學習 | Python | 函式 | 類別 | 可呼叫物件
函式?類別?可呼叫物件!
Python的函式是一級公民,可接受/傳回函式是個極具威力的特性,想讓這個威力更進一步的話,可從接受/傳回可呼叫(callable)物件的方向來思考
2022-05-27
| 程式人 | 林信良 | 程式學習 | 波函數塌縮 | OpenSCAD
波函式塌縮與函數式
在本質上,波函式塌縮演算是變動的,而函數式典範的特性是不變,在看似衝突的兩者之間,如何尋找能兼顧效能的實作?
2022-05-25
| 程式人 | 林信良 | 程式學習 | 重構 | 效能最佳化
重構與效能
想調整效能?先增加可讀性!重構增加了可讀性,不過會使得效能下降?最佳化增加了效能,卻會導致程式難以理解?不是的!兩者其實是相輔相成!
2022-05-18
| 程式人 | 林信良 | 程式學習 | 雜湊 | Hash | 康托爾配對函式 | Cantor pairing function
淺談雜湊碼設計
基於雜湊的資料結構,基本上,是以空間換時間,Java的字串雜湊是多項式捲動雜湊,若要針對座標進行雜湊,我們可以從康托爾配對函式出發
2022-05-11
| 程式人 | 林信良 | 程式學習 | 童子軍規則 | The Boy Scout Rule | 無情重構 | 開放原始碼
Clean Code:童子軍規則
在原始碼上運用童子軍規則,又稱為無情重構,此種方式是指做這類重構時不需要設想太多,如果在離開前能讓原始碼乾淨一些,其實就可以了!
2022-05-05
| 程式人 | 林信良 | 程式學習 | 泛型 | Go語言 | Generics
Go參數多型?次型態多型?
Go 1.18提供泛型,這也意味著,現在Go有了參數多型與次型態多型的選擇,然而,兩者本質上相同,更像是兩個方向的權衡,此時就看開發者想選擇光譜的哪個位置!
2022-04-20
| 組合優於繼承 | record類別 | Java 17 | 繼承 | 程式人 | 林信良 | 程式學習
組合優於繼承?
使用支援物件導向的語言時,我們總會聽到「組合優於繼承」這個原則,然而,語言既然提供了繼承這項工具,繼承也並非一無是處
2022-04-07