| 程式人 | 林信良 | 程式學習 | 圖片取樣 | 藍雜訊 | 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