原创 通用makefile是如何煉成的(III)

前面我們已經完成產品信息的整合,接下來我們把系統相關的信息,以及編譯命令分別整合一下。具體實施仿照產品信息的整合方法 觀察main.mk, 諸如RM := rm -f 是屬於操作系統相關的命令,所以我們單獨集中到system.mk #

原创 makefile必知必會(II)

makefile必知必會(II) 定義變量 makefile的變量定義有三種方式 1.        立即賦值 a:=b 2.        延遲賦值 a=b 3.        條件賦值 a?=b 4.        附加賦值 a+=

原创 通用makefile是如何煉成的(II)

上一次我們完成了圈地運動,順利拍下一塊叫做build的地塊。今天,我們就要在上面立個牌坊 一般情況下,我們總會在makefile中加入一些產品信息。比如產品名稱,版本號,以及產品的特性開關(宏),等等 直接在main.mk中添加相應的內

原创 linux shell中的命令自動補全(compgen complete)與 命令行參數解析

很多時候,當我們寫一個腳本時,我們總會提供一些可選的命令選項。當可選項比較多的時候,比如git, 如果能夠提供命令自動補全,無疑是錦上添花的事。而且個人認爲,這種方式,比採用將命令做成選擇菜單要更好一些。 假設我們現在這樣一個腳本,腳本

原创 通用makefile是如何煉成的(IV)

現在我們的主makefile已經是這樣的 # main.mk # include build/systems/system.mk ## 定義產品信息。這裏BUILD_SPECS設置爲spec.mk PRODUCT_SPECS :=b

原创 讀書報告之《修改代碼的藝術》 (II)

今天繼續從本書的第二章學習, 昨天我們已經總結了下面三個內容 1. 降低修改的風險 2. 需要修改大量相同的代碼 3. 時間緊迫,必須修改 今天繼續第四點 4. 修改時應當測試哪些方法 作者提出了影響結構圖的概念。說穿了,就是

原创 用python實現wireshark的follow tcp stream功能

長話短說,wireshark有一個follow tcp stream功能,這個功能很方便。美中不足的是提取出的stream 數據沒有時間戳等其他信息,在分析數據的延時和丟包問題時就有些力不從心了。這裏簡單用python實現了一個簡單fol

原创 一個簡單RPC框架是如何煉成的(VI)——引入服務註冊機制

開局篇我們說了,RPC框架的四個核心內容 RPC數據的傳輸。RPC消息 協議RPC服務註冊RPC消息處理 接下來處理RPC服務的註冊機制。所謂註冊機制,就是Server需要聲明支持哪些rpc方法,然後當客戶端發送調用某個聲明的rp

原创 doxygen + doxypypy + docstring 生成python文檔

1 原生doxygen對python註釋的文檔化支持情況 默認情況下,doxygen可以同時支持兩種風格的python註釋,原生的docstring和類似java doc風格的##。不過實際使用時不是十全十美 """@package d

原创 python 計算校驗和

校驗和是經常使用的,這裏簡單的列了一個針對按字節計算累加和的代碼片段。其實,這種累加和的計算,將字節翻譯爲無符號整數和帶符號整數,結果是一樣的。 使用python計算校驗和時記住做截斷就可以了。 這裏僅僅是作爲一個代碼樣本,權作標記,直接

原创 一個簡單RPC框架是如何煉成的(IV)——實現RPC消息的編解碼

之前我們制定了一個很簡單的RPC消息 的格式,但是還遺留了兩個問題,上一篇解決掉了一個,還留下一個 我們並沒有實現相應的encode和decode方法,沒有基於可以跨設備的字符串傳輸,而是直接的內存變量傳遞。現在的RPC reque

原创 一個簡單RPC框架是如何煉成的(III)——實現帶參數的RPC調用

上一篇,我們制定了一個很簡單的RPC消息 的格式,但是還遺留了兩個問題 我們並沒有實現相應的encode和decode方法,沒有基於可以跨設備的字符串傳輸,而是直接的內存變量傳遞。現在的RPC request不支持帶參數的請求命令。如a

原创 讀書報告之《修改代碼的藝術》 (II)續2

這裏作爲(II)的第二個續篇,繼續複雜的嵌套if else 的處理。 爲了保持篇幅不會太長,以一篇新的文章形式給出。 化簡複雜的if else語句,基本的手段 針對頭重腳輕的if else,使用return快速返回,從而減少嵌套

原创 讀書報告之《修改代碼的藝術》 (I)

《修改代碼的藝術》,英文名《Working Effectively with Legacy Code》,中文翻譯的文筆上絕對談不上“藝術”二字,愧對藝術二字(當然譯者不是這個意思)。書中第三部分不論是例子還是解說都有點混亂,遠不如《重構—

原创 一個簡單RPC框架是如何煉成的(V)——引入傳輸層

開局篇我們說了,RPC框架的四個核心內容 RPC數據的傳輸。RPC消息 協議RPC服務註冊RPC消息處理   接下來處理數據傳輸。實際應用場景一般都是基於socket。socket代碼比較多,使用起來也比較麻煩。而且具體的傳輸通道使