程式P.02 - SOLID
🚀 三句話總結
了解SOLID是為了解決什麼問題而提出的
了解SOLID是什麼
理解敏捷和瀑布流開發,哪個比較好?
☘️ 為什麼我要了解在我幻想的軟體生涯應是,根據既定的需求去實作產品,但進入社會後才發現原來這是不可能的。需求總是一直改變不止是老闆的需求,有時候甚至是大環境的改變而造成的,所以學會如何開發出當需求改變後,我們程式能夠迅速的改變並不付出太高的成本,而SOLID就是其中一個解決這問題的答案。
🎨 改變了什麼了解到SOLID和敏捷開發要解決的問題是什麼,而不是一昧的知道什麼是敏捷而不知道他為什麼會誕生,並且由於SOLID原則效益非常高,以至於後續瀑布流開發也可採用SOLID方案進行開發,畢竟就連微軟這種大公司也因為科技發展被迫改為敏捷開發。
✍️ 總結和心得程式誕生之初的開發模式在很久很久以前當時的電腦還是小眾市場,所以軟體開發也是小眾,並沒有什麼開發原則,當時開發大致上是「瀑布流開發」。
但隨著科技發展,電腦慢慢走入大眾市場,而軟體的開發也面臨了挑戰,說好的需求卻被突發因素被迫修改,程式碼也因為耦合導致修改幅度之大,於是有個工程師受不了,問了一個問題
我們知道需求變 ...
週報P.06 - 設計思考五步驟
🚀 三句話總結
理解設計一個產品的五步驟
理解這五步驟是為了解決什麼問題
系統化整理,將設計五步驟套用在人生中的遇到問題的SOP
☘️ 為什麼我要了解人的一生都在解決問題,所以身而為人一定有自己一套解決方法,但是都是模糊沒有整理的,以至於如果要檢討精進就更為費事
🎨 改變了什麼以前都沒有系統整理,所以解決完問題都很難檢討改善,所以將設計五步驟套用在人生問題的方案,將有助於檢討時發現 是哪個環節不及格所導致,進而避免下次再次發生。
✍️ 總結和心得
「設計思考」是一門「以使用者為中心」的方法,透過從人的需求出發,來創造更多的可能性。
該方法是由美國知名設計公司的創辦人「David Kelley」所提出
「設計思考」要如何進行?設計思考是史丹佛大學設計學院的一門「設計思考」學分,該最初的定義是
「設計思考是以人為本的設計精神與方法,考慮人的需求、行為,也考量科技或商業的可行性。」
由上可知「設計思考」是基於人的需求而產生的設計方案,所以固然也可以運用在人生中各種問題或是需求。
而總共有5個步驟,分別是
同理 - Emphathize
定義 - Define
發現 - Idea ...
週報P.05 - 你有疑惑過比特幣的運作原理嗎?
🚀 三句話總結
理解什麼是區塊練
理解區塊練使用的理論,這些理論實作的原理
理解區塊練是如何實現去中心並且是可靠的理論
☘️ 為什麼我要了解因為去中心僅僅只是一連串簡單的東西合再一起,難度不高,其中很多隻是在軟體其他方面都會運用到,尤其是雜湊的運用,非常有趣。
🎨 改變了什麼知道這一切的實作原理後,可以把一些概念運用在軟體上面,像是密碼儲存的方案,可以運用雜湊實現加密並且也能驗證對方的密碼是不是輸入正確。
✍️ 總結和心得從古至今主流的交易系統都是採用「中心化」方式,但區塊鏈是採用「去中心化」方式。
中心化的交易系統,銀行就是中心化的代表,當你轉帳給家人時,你相信銀行記帳不會記錯,而你家人的帳本也會確實添加這筆紀錄,但一切都是你「相信」,你相信銀行背後的工作人員不會把1萬輸入成2萬,但萬一發生「雷曼兄弟事件」將會導致信任他的人血本無歸,所以區塊練的去中心化方式才會被廣為人知。
P2P帳本:在區塊練世界中,沒有中心角色(銀行)幫你記帳,而是所有人手上都有數本記載著這貨幣從創始至今的所有交易帳本,而交易帳本在區塊練世界中名稱叫做「Block」,把從古至今的所有帳本鏈在一起稱為「區塊練 ...
週報P.04 - 秒的定義
🚀 三句話總結
了解秒的各種定義,以及他們遇到什麼問題用什麼方案解決
了解銫原子的特殊頻率搜尋方法
了解最終秒的定義
☘️ 為什麼我要了解因為銫原子的搜尋方法非常特殊,是一個蠻有趣的演算法,不只是物理演算法,在軟體中也是很特別的暴力演算法。
🎨 改變了什麼知道物理世界中的銫原子演算法,將其轉換為軟體的演算法,算是一種非常特別的演算法,可以學一下,將來可能可以實做在程式上。
✍️ 總結和心得一秒到底有多長?一秒是多久? 為什麼不能是我從台北到高雄的時間叫做1秒?
很久以前一秒的定義是一天的 86000/1 ,也就是一天 = 24小時 = 1440 分鐘 = 860000秒,那麼一秒是基於一天而定義出來,那一天是什麼?
一天到底有多長?真太陽日 - 定義一天是當太陽第一次上升到最高點時後,之後第二次升到最高點的時間差,太陽經過2次天空最高點的時間差,說人話就是今天中午到明天中午的時間差,這就叫做真太陽時。
真太陽日 - 問題但是隨著科技進步,人們發現地球公轉軌道是橢圓,導致橢圓靠近太陽的真太陽日短,橢圓遠離太陽的真太陽日長。於是每個真太陽日都不 ...
前端P.15:優化 通訊模組 下載
🥜 前情提要在上一回中,我們介紹了工具單元測試,這次來討論有什麼優化方案可以優化前端下載速度。
通訊模組:首先所有人要上網,一定會使用通訊模組,常見的有OSI 7層模型
而7層太複雜,所以有人把它簡化,改成TCP/IP 四層。所以任何人要上網就必須使用TCP/IP四層,那這邊來介紹是哪四層。
當你輸入網址後會經過什麼動作?
透過應用層,DNS解析後你會獲得IP
透用應用層,也就是Chrome自動拼裝網路封包
透過協議層,也就是瀏覽器選擇幫你拼裝HTTP的封包
透過IP層,瀏覽器在封包上寫好要傳到哪裡(類似收件人)
透過實體層,瀏覽器把這封包傳到網卡,網卡透過無/有線網路傳到對方那。
而上述過程中就是一個基本網路封包的組成,而在這過程中我們可以進行優化。
應用層這一層主要就是應用程式的所在地,Win10、Html、Chrome、Safari ..etc所以封包最終會進入到應用層,而應用層就是你的軟體,所以這邊可以進行
圖片有損壓縮利用人眼缺陷原理進行壓縮,在數位圖片中,當你要顯示一張圖你可以看成:將這張圖切割成數個正方形格子,而每個格子都有各自的顏色,而 ...
程式P.01 - Docker
🚀 三句話總結
了解為什麼我們會需要Docker這類容器化產品
學會Docker的file、image、container、compose、hub…etc
了解Docker的網路系統為什麼能映射到本機上
☘️ 為什麼我要了解因為在上一回中提到Senior為了預防問題產生,所以有個產品是前後端都會需要的,就是Docker。
🎨 改變了什麼了解Docker的原理和一系列的Docker操作,而我個人的專案就運用Docker實現標準化的CI/CD,而不是像以前使用個人電腦出版後才把出版資料部屬雲端,讓依賴的直接轉移成可以標準化的「容器」,而不是依賴我不乾淨的電腦。
✍️ 總結和心得為什麼需要Docker?在軟體業中,我們常把程式分為好幾個branch進行版控,每個branch都有他的定義,而業界常採用的方案為:
Git Flow
GitHub Flow
GitLab Flow
而每種Flow定義都不一樣,但不外乎都有「生產branch」,即產線的程式版本就是這個Branch的程式版本,由此可知這個Branch至關重要。
而程式還需要編譯才能變成「產品」,因為程式的編譯常常被 ...
週報P.03 - 工程師的歷程
🚀 三句話總結
根據自身的職場經驗總結Senior的特色
根據自身的職場經驗總結Junior的新人缺點
Junior學習有效解決問題,Senior學習有效預防問題
☘️ 為什麼我要了解因為我自身沒有定義過或是思索過何謂Senior,所以這邊根據自身職場上觀察到我想成為的前輩特色,觀察這些特色是否可以複製以及該如何複製,定義出自己心中最完美的Senior,以此為目標激勵自己朝這方向努力。
🎨 改變了什麼以前學的東西都是被塞入的,又或是因為工作安排必須吃下的知識,但是沒有理解為什麼需要這些,所以藉由這篇文章梳理下理解為什麼需要,以此定義出Junior和Senior的差別,並定義心中的Senior是長怎樣,讓自己努力成為我心中的那個前輩
✍️ 總結和心得工程師的里程碑之所以寫這篇文章,是因為想記錄在工作中遇到的工程師,不論是資深還是初階工程師的一些特質,不算是標準,Senior的定義100個人會有100種界定標準,但是我認為應該是大部分人都擁有的特質和一些技術點,也期許自己可以朝這些技能點和特質發展,所以才紀錄下。
如何成為Junior工程師?基本上有基礎的程式撰寫能力,我都界定為Ju ...
週報P.02 - Zero Copy
🚀 三句話總結
熟悉硬體與程式的搭配和防護方案
熟悉IO在記憶體和硬碟中的操作
了解上述兩點後,則可以使用新設備優化IO效率
☘️ 為什麼我要了解因為在資料傳輸時一定會經過通訊模組,而為了實現通訊模組的每一層都有優化方案,所以我們必須了解他,達成一個閉環,而實體曾理論上軟體是無法優化,但ZeroCopy是少數可以由軟體控制硬體的優化方案。
🎨 改變了什麼能夠解釋所有硬體和軟體的配合方案,能夠實現軟體如何運作在硬體的方案,有種學完後會茅塞頓開,所有東西都是靠這個方案連結,不然之前學的東西都很零散聽起來都很有道理,但合在一起就沒道理,而這東西讓所有東西合在一起變得有道理。
✍️ 總結和心得計算機架構設計方法在講述Zero Copy之前先簡單介紹下計算機的架構,眾所皆知計算機架構大致長這樣
這種基礎五大單元組成,但這是很抽象的講法,所以今天講一下具體的講法
分級保護域分級保護域是一種提升計算機安全的設計方法,也被廣泛用於各種計算機中,像是x86,而只要採用這種方法設計就能提高安全性,詳細請看以下圖片
在上圖總共有4層,規範了每一層是什麼
Ring 0 : 核心層
Ring 1 2 ...
週報P.01 - MIME Types
🚀 三句話總結
知道副檔名機制的原理
熟悉數據協定是在做什麼用
了解HTTP協定中的Header欄位
☘️ 為什麼我要了解因為副檔名機制在作業系統中至關重要,算是基本的軟體工程師必知的內容,尤其是使用一些盜版或是非法的資源,他們可能會有相關的保護機制,甚至在設計自己的產品時也會用到類似的保護機制,避免機密資料外洩。
🎨 改變了什麼了解副檔名機制後,我有個軟體叫做「粒子工具」,該工具可以產出一個Config,可以直接套用在「粒子系統」,但是我希望保護Config不被人為修改又或是外流被別人知道內容。所以我運用副檔名系統的原理生成一個保護機制。
✍️ 總結和心得作業系統如何區分資料要用什麼協議解析?我們知道所有檔案都是由一堆 0 1 所組成,那麼當你要打開一個 1010101… 的資料,電腦要用哪種協議去解析這串資料呢?這世上有非常多種協議:mp3、doc、wav、txt、jpg …etc 這些協議中的一部分就是定義資料要用什麼方式按照設計好的規則排列
Ex:C:\Users\User\Desktop\testFile
1mkdir test
在桌面上中有個檔案叫做testFile, ...
讀書P.01 - 人類大歷史:從野獸到扮演上帝
📕書籍資訊:書名:人類大歷史:從野獸到扮演上帝作者: Harari評分: ⭐ ⭐ ⭐ ⭐ ⭐(5/5)
🚀 三句話總結:
猿人變成人類的合理推理,獨樹一格的見解
幻想是智人稱霸的關鍵,與之延伸的概念:貨幣、國家、宗教..etc
由於幻想讓人們科技發展迅速,漸漸可以驗證幻想真偽,幻想被推翻了,人們下一步該怎麼辦?
🦐 為什麼我需要讀這本書看完後會對「解釋一切」,有更深的理解,一切東西都好像因為這本書而變得有道理,原本看起來像是玄學的地方都有可以解釋的空間,尤其書中對於貨幣、國家、宗教…etc的闡述特別新奇。
🎨 總結和心得:人類簡史這是一本以色列的歷史學家 尤瓦爾·赫拉利 所寫的書,從宇宙大爆炸開始講述人類歷史的完整故事,以下的紀錄是我自己觀看的心得和整理,有些書上可能沒有提到,主要會以智人的轉變來探討宗教、國家、科學。宇宙的源起(大爆炸)大約出現在135億年前。地球大約出現在46億年前。生命大約出現在40億年前。真核生物(具有細胞核的生物)大約出現在15億年前。多細胞生物大約出現在11年前。動物、植物大約在3.6億年前登上陸地。恐龍大約出現在2億年前。猿人大約出現在 ...