整理地蠻好的,從原理、設計、測試、流派、相關參考都解說地蠻齊全的。
大家若要應用到實務上,還可以再額外留意幾點補全:
1. 需求:怎麼從需求解析情境,用測試描述情境,搭配一點實例化需求到 ATDD 再到 TDD, 至少測試案例的顆粒度跟設計是從需求過來的,而不是單純用來驗證程式碼寫得對不對
2. 重構:重構測試,或是說測試該怎麼重構成像情境, (scenario), 而不是程式 (code),這是測試程式文件化的基本要件
3. 遺留代碼:怎麼針對遺留代碼優雅地加入 isolated 單元測試,優雅包含低風險、快速、設計簡潔。這是實務上最難的一道關卡,有趣的是,如果你掌握文中的核心概念跟實務上的切入點、脈絡跟基本技巧,絕大部分的語言 legacy code 加入單元測試的方式,萬變不離其宗。
能整理出這樣的系列文,除了要很有耐心外,還得方方面面的基本功都得到位,才能講到點。
當然,每個人對這一整塊領域的內容理解跟解說不盡相同,但這不是對錯的問題,而是視角跟 context 的差異,我還是覺得很值得推薦這樣的文章給大家,上面也有許多很好的 reference 與書籍推薦。
同時也有2部Youtube影片,追蹤數超過7萬的網紅在地上滾的工程師 Nic,也在其Youtube影片中提到,context switch 是降低效率的絕大因素之一,所以工程師真的是比誰都討厭被隨意打擾!! 每次中斷思考後,當我要重想問題時只會花更多時間,如果可以,請先將你的問題透過有效率的方式記錄,也可以安排時間討論,增進彼此的效率 當然,除非你的事情十萬火急 工程師本人手繪短袖限量預購中,只到 3...
「context程式」的推薦目錄:
- 關於context程式 在 91 敏捷開發之路 Facebook 的最佳貼文
- 關於context程式 在 軟體開發學習資訊分享 Facebook 的最佳解答
- 關於context程式 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於context程式 在 在地上滾的工程師 Nic Youtube 的最讚貼文
- 關於context程式 在 鄭匡宇激勵達人 Youtube 的精選貼文
- 關於context程式 在 [問題] 關於process context - 看板LinuxDev - 批踢踢實業坊 的評價
- 關於context程式 在 不知道大家是否跟小編一樣,常常覺得職場中不同角色之間的 ... 的評價
- 關於context程式 在 React Context, Provider and useContext | PJCHENder 未整理 ... 的評價
- 關於context程式 在 JavaScript 閉包與範圍 Execution Context - yachen 的評價
- 關於context程式 在 Part 2|React 官網導讀|ALPHA Camp x PJ - YouTube 的評價
- 關於context程式 在 A MySQL-Driver for Go's database/sql package - GitHub 的評價
context程式 在 軟體開發學習資訊分享 Facebook 的最佳解答
NT390 特價中
課程已於 2021 年 7 月更新
這個基於專案的課程將向你介紹 React 開發人員的所有最新的工具鏈。 一路走來,我們將建立一個類似 Shopify 的大規模電子商務應用程式,使用 React,Redux,React Hooks,React Router,GraphQL,Context API,Firebase,Redux-saga,Stripe + 更多。 這將是一個使用 Firebase 完整的全端應用程式(MERN 堆疊)
https://softnshare.com/complete-react-developer-zero-to-mastery/
context程式 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
本文延續前篇效能校正的經驗談,上篇文章探討了關於系統呼叫, iptables 可以最佳化的部分,。本篇文章將繼續剩下最佳化步驟的探討。
Perfect Locality
預設情況下, Linux Kernel 會盡量平均地將請求給分配到所有的處理佇列,譬如 network queues, processes, CPUS. 大部分情況下這種機制運作良好不會有太多問題,不過如果今天要追求的不單單只是好的效能,而是極致的效能,則 locality 這個概念就要特別的去注意。
這篇文章中提到很多不同的方式,包含了 CPU Pinning, Receive Side Scaling(RSS), Transmit Packet Sterring(XPS)等,其實用比較簡單的介紹方式就是,希望可以使用固定的 CPU 來處理一條連線上的所有封包(進出),這樣帶來的好處有
1. CPU Cache 可以盡可能的去使用,減少各種 miss 產生的成本
2. 減少 context switch 帶來的成本
3. 減少跨 CPU 之間交換資料帶來的成本
4. 減少 lock 之間帶來的成本
除了 CPU Pin, RSS, XPS 外,還有 irqbalance, smp_affinity_list 等相關的概念需要一併學習,對於這個概念有興趣的讀者非常歡迎去找尋這類型的資料
接者是 SO_REUSEPORT 這個參數,創建 Socket 時使用這個參數能夠使得多個 Process 共用一個連接埠,底層 Kernel 會針對 src/dst{ip/port} 來產生對應的 Hash,並且決定當前封包要送給哪一個 Process。
這個方式搭配前述各種 CPU Pin, 中斷的最佳化則會遇到問題,因為可能底層將該封包送到 CPU2 結果這個函式又把封包重新分配到 CPU0, 這樣就導致該連線要跨 CPU 處理了。
為了解決這個問題, Linux Kernel 4.6 後有新的參數 SO_ATTACH_REUSEPORT_CBPF,使用者可以自行撰寫 BPF 的程式來決定如何分配封包。作者根據這過想法撰寫了一個 BPF 的程式,來確保這個機制可以與前述的最佳化穩定運作。
這次的最佳化帶來的 38% 的成長,這時候的封包處理能力從 603k req/s 提升到 834k req/s
原文中關於這次的最佳化還有一些後續探討,有興趣的可以閱讀
Interrupt Optimizations
當封包透過網路送到網卡後,網卡必須要通知 OS 讓它知道有封包來了,要記得處理。一切處理完畢後網卡就可以繼續等待新的封包過來並且再次發送中斷給 OS 處理封包。這個流程大部分情況也是運作良好,不過當有大量的封包不停傳送來時,頻繁的中斷其實也是會造成不小的額外成本。
為了解決這個問題,目前比較嶄新的網卡都有支援中斷聚合等功能,透過這個功能可以延後中斷一個小週期,而該週期內收到的所有封包只需要透過一次的中斷就可以來處理,藉此降低中斷的次數。更為進階的網卡甚至支援動態自行調整該週期的時間,譬如當網路空閒時,減少週期使得每個封包能夠盡快的發送中斷被處理,而當網路流量很大時則會加大該該週期時間來更有效地處理封包。
註: AWS ENA 有支持這種動態調整的機制
作者基於 AWS 開啟動態調整收端中斷時間的功能,整個效能提升了 14%,從 834k req/s 提升到 955k req/s。作者說這次的調整可以說是整篇文章中幾個非常強的改動,改動的地方少,效能提升明顯,同時背後的隱憂與限制也少。
除了上述中斷的方式外,另外一種則是透過 Busy Polling 這種針對低延遲性的方式。預設情況下其允訓設定為 blocked 的 socket 能夠消耗額外的 CPU Cycle 來讀取接下來的封包,可以將其想成一成一種混合體,當底層網卡告訴我有資料要讀取時,我預期接下來還會有更多的資料,因此我就透過輪詢的方式去多問幾個封包。
由於作者的應用程式是使用 non-blocking 的方式去讀寫封包,所以預設的方式是沒有辦法使用的。而該應用程式又是使用 epoll 來進行底層封包的讀寫。 epoll 於 kenel 4.12 後正式支援 busy polling 的方式,所以這部分就沒有太大的問題。文章中有滿多關於 busy_poll 的一些參數調整。
將這兩個機制給整合後,整體的效能提升達到 28%,從 834k req/s 到達 1060k req/s,同時 99%的 latency 也從 361μs 下降到 292μs.
同時這兩個機制導入後,整個系統每秒產生的硬體中斷數量也從 183k 降到 16k。 Context switches 的數字也從 6k 下降到 1k 左右。
下篇文章會繼續從剩下的三個最佳化策略繼續介紹
https://talawah.io/blog/extreme-http-performance-tuning-one-point-two-million/
context程式 在 在地上滾的工程師 Nic Youtube 的最讚貼文
context switch 是降低效率的絕大因素之一,所以工程師真的是比誰都討厭被隨意打擾!!
每次中斷思考後,當我要重想問題時只會花更多時間,如果可以,請先將你的問題透過有效率的方式記錄,也可以安排時間討論,增進彼此的效率
當然,除非你的事情十萬火急
工程師本人手繪短袖限量預購中,只到 3 月底,凡預購期間皆隨機贈送工程師相關貼紙
https://reurl.cc/MZ60xn
喜歡影片的話!可以幫忙點個喜歡以及分享、訂閱唷!😘
━━━━━━━━━━━━━━━━
🎬 觀看我的生活廢片頻道: https://bit.ly/2Ldfp1B
⭐ instagram (生活日常): https://www.instagram.com/niclin_tw/
⭐ Facebook (資訊分享): https://www.facebook.com/niclin.dev
⭐ Blog (技術筆記): https://blog.niclin.tw
⭐ Linkedin (個人履歷): https://www.linkedin.com/in/nic-lin
⭐ 蝦皮賣場: https://shopee.tw/bboyceo
⭐ Github: https://github.com/niclin
⭐ Podcast: https://anchor.fm/niclin
━━━━━━━━━━━━━━━━
✉️ 合作邀約信箱: niclin0226@gmail.com
#工程師 #八阿哥 #前端 #後端
context程式 在 鄭匡宇激勵達人 Youtube 的精選貼文
這裡月風再次拜託各位社友 如果覺得他的演講不錯
請幫忙直接"複製轉貼" 或邀請你身邊的朋友一起參與喔^^
本月演講(2015/02/28)內容如下
PS 如果無法點入報名網頁 請先申請加入富豪居社團即可
https://www.facebook.com/groups/116754225073005/
================================================
這個社會 每個人都喜歡講好事 講未來 講憧憬 因為只有畫出一個大餅
他們才可以把"東西"賣給你
而我月風 偏偏只喜歡講黑暗面 因為 我就是將要把你帶回現實世界的人
2015/02/28的演講主題 我想 就叫他 "金錢遊戲"吧
這個世界上 有很多努力工作 為社會 家庭默默耕耘的朋友
也許 平凡的生活帶給你很多滿足
但 會不會在生命中某一個剎那 你覺得 人生其實很不公平?
為甚麼 有些人可以每天穿金戴銀 名車代步 談笑有鴻儒 往來無白丁呢?
而又是為甚麼 大多數的市井小民 用盡一生勞苦 汗水 卻總是覺得貧富差距越來越大 夢想離自己越來越遠?
而這個世界上 到底是甚麼原因 導致了那麼多不公平的事情 又是甚麼樣的力量 改變著我們的人生呢?
2月28號 月風就要來親身告訴你 這些沒人願意說 但血淋淋 赤裸裸的真相
~月風沒辦法讓你一夕致富 "也沒有任何投資商品可以賣給你"
但我希望 朋友們 你不要被人賣了還開心的替你屬鈔票~
這場演講 月風將要帶給妳們的內容就是 這些改變世界的 "金權遊戲"
=================================================
內容大綱如下 :
[國與國的金錢遊戲]
外匯是怎樣的一場戰爭? 我們又該怎麼玩?
債券市場的真正魅力何在? 為何世界最頂尖的交易員如此熱衷投入?
大炮一響,黃金萬兩 石油危機下 黃金是否有機會谷底翻身?
世界經濟是由少數家族所掌握的嗎? 傳言的羅斯柴爾德家族是世界首富?
通貨膨脹到底怎麼來 為何如此嚴重?
金錢遊戲的最終依歸 就是印錢
而印錢遊戲的結果 將如何改變我們的人生?
[政治圈的金錢遊戲]
政治人物靠甚麼賺錢?
你知道 當官發財還有等級之分的嗎?
貪汙 收受回扣 包娼包賭 壟斷工程及都市更新 哪個好賺?
有權力 因該怎麼賺錢
[股市的金錢遊戲]
印股票換鈔票 如何做到?
現在還希望公司上市? 別做夢了
怎樣的股票能讓主力獲利最多?
如果買到爛公司 主力如何全身而退?
掏空不稀奇 中國主力教你無中生有
股票抽籤很好賺? 天上掉下來的通常不是禮物
超級神準的投顧(或股友社)怎麼產生 如何一秒變身大師?
現代主力出貨法 外資 基金 通通難逃一死
籌碼分析? 劵商進出表背後的大騙局
[詐騙集團的金錢遊戲]
為甚麼叫你買黃金白銀的 要跟他斷絕往來?
市面上很"夯"的"外匯保證金"交易是甚麼 可以投入嗎?
外匯程式交易的美麗績效 到底如何產生的? 能夠複製嗎?
很多外匯交易團隊跟好心人士 他們賺甚麼?
只要一秒 化身外匯交易大師 無往不利
"海外房地產" 為何是白癡跟呆子在做的交易?
看好海外市場 ? 不透明的狼狽為奸你懂多少?
[房地產的金錢遊戲]
頂新集團買進帝寶 為何只用1%現金?
投資客全貸 超貸 靠邊站 真正厲害的建商 怎樣一毛不花就可以蓋一個社區?
甚麼是"後門條款" 為何跟建商配合 投資客不用繳一毛奢侈稅?
如果再回到 2008年 你知道如何一毛不拔快速翻身嗎?
為何某些區域 如此高的空屋率 建商仍然老神在在? 這些房子最後賣給誰?
房市的最新發明 房地產選擇權 這是啥東東 怎麼玩?
日本首富 堤義明的爆富遊戲
房地產大遊戲 是時代變化 還是大泡沫? 這場金錢遊戲 最後到底玩的是甚麼?
==========================================
以上這些內容 如果你有興趣
那剛好 你遇到一個專門以擋人財路為樂的人
就由親身經歷過這一切的我 月風 為你解開這些神秘的黑幕
二月二十八日 新北市
月風誠摯邀請你與我一同 ~認清真相 全力掌握自己的人生~
PS
(演講地點確認是新北市 地址承租完成會公告)
(報名網頁在下方
為了方便我們統計人數 請真的能夠前來現場的朋友再按參加喔)
https://www.facebook.com/events/382228201959916/?context=create&previousaction=create&ref=4&source=49&sid_create=1468303518
富豪居演講有三大保證!!
一.絕無從事任何傳直銷
二.不銷售任何商品&課程
三.絕不從事非法吸金
所以 大家用輕鬆的心情前來即可~
由於FB設定 已無法對全社團好友進行邀請,要參加的朋友請點"參加"以方便我們核對人數 謝謝^^
context程式 在 不知道大家是否跟小編一樣,常常覺得職場中不同角色之間的 ... 的推薦與評價
3️⃣上下文映射(Context Map):透過將所有定義好的「限界上下文(Bounded ... 的認知趨於一致,再把共同認知的結果帶進執行實作的階段,讓程式碼以及成果 ... ... <看更多>
context程式 在 React Context, Provider and useContext | PJCHENder 未整理 ... 的推薦與評價
範例程式碼. code sandbox 中 CounterBestPractice 資料夾內的寫法。 count-context @ pjchender gist; User Context @ pjchender GitHub ... ... <看更多>
context程式 在 [問題] 關於process context - 看板LinuxDev - 批踢踢實業坊 的推薦與評價
大家好 新手自學
最近在閱讀 Linux 有關 execution contexts 的觀念
對於 process context 這個名詞的意思不太確定
舉的例子是 :
一個程式 a,目的要開啟檔案後讀取,
這個程式 a 執行之後,從 user space 經由 c library read()
發出一個讀取請求給 kernel,接著 context 轉移到 kernel space ,
kernel 經由 IDE driver 去驅使硬碟讀取相對應磁區的資料,
在等待硬碟回應的這段時間,kernel 會把程式 a 阻斷 blocked 放到 wait queue 中
接著執行 context switch 去執行別的程式;
等到硬碟讀取完成之後,kernel 向 CPU 發一個 interrupt ,
再執行一個 context switch 回到程式 a,這時候就可以讀到硬碟回應的資料
經由上方的例子,想問的是
所謂的 process context 是否是指
一個程式執行之後成為 process 並儲存在 main memory ,
然後這個 process 就是要執行開啟檔案讀取的目的,
而這個目的會經由
user space ( user space context),
kernel space ( kernel space context) ,
ISR (interrupt context) 等相關的部分來完成這個目的
所以這整個 application process 的執行過程上下文,就稱為 process context ???
是這個意思嗎??
再請各位解惑了,
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.16.21
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1525184372.A.8FD.html
所以 admon 大大的意思是否是,我文章後面寫的 process context 解釋是對的,
但是 interrupt context 的部分除外
是這個意思嗎??
如果不對的話,可以再進一步解說 process context 的部分嗎?
謝謝
※ 編輯: shiningboy (42.72.16.21), 05/02/2018 00:05:51
... <看更多>