本文為 2024年2月工作生活總結。
研發編碼
一些警告修正記錄
這個月修正了個人所負責的工程警告,這些警告其實是前人的代碼遺留的,我續寫的代碼,除printf函數的%d、%ld格式,都在寫的過程中改了。
下面記錄一些典型的警告及應對措施。
未使用的變量:
警告:未使用的變量‘cur_num’ [-Wunused-variable]int cur_num = 0;
措施:刪除變量。
變量賦值了,但未使用:
警告:variable listid set but not used [-Wunused-but-set-variable]int listid = -1;
措施:刪除變量,如果是調試用的,則在編譯時加上參數-Wno-unused-but-set-variable
。
結構體地址賦值:
警告:格式 ‘%s’ expects argument of type ‘char*’, but argument 4 has type ‘fooInfo_t {aka fooInfo}’ [-Wformat=]snprintf(abc, sizeof(abc), "%s", foo[i]);
措施:該警告其實應該是筆誤,但沒有嚴重影響。該語句意在賦值結構體的第一個元素,而該元素地址和結構體地址相同,又有大小限定,所以不會有影響。加上該語句后還有結構體成員賦值的代碼,因此更是筆誤。
sftp下載證書錯誤
某國產化系統,使用curl實現sftp數據下載,報錯:
error code : 60, error message : SSL peer certificate or SSH remote key was not OK
在初始化curl時,加上如下語句,不認證服務端證書:
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
程序可維護性的思考
過年期間,接了若干電話,均和數據上傳有關,有的數據字段不符合數據庫要求,如本不能為NULL的字段卻沒有值,有的是日期錯誤,如年月日字段寫了20001351。不管何種問題都需要人工操作。其實方法之前和運維提到過,現在又重復了。對此問題,需考慮如何較方便修正,如程序自動判斷出錯的數據,將其拷貝到單獨文件。如對外提供http接口,可臨時修改參數而不需要重啟容器,等等。有的已經落實到代碼上,有的還未想到較好的方法。
單步調試
這個月連續有幾個不同的疑難問題。運維在會上提出,領導過問,提到要掌握斷點單步調試。這么些年,我的調試能力僅限于printf和看代碼。有2個動態庫工程,有1個是html+go+c++混合工程,有一個涉及網絡連接服務器的多線程工程。要在eclipse里調試,還是有難度的。像網絡客戶端程序,雖然可以在ecplise將請求的返回值修改讓程序走走下去,但不如直接聯調好,我甚至為了調試,自己在本地實現對應的服務端。還有那個混合工程,因為網頁上有自動補齊功能,輸入不同參數十分方便,但要到ecplise里高度,也是較難的。但總有辦法,比如將網頁參數轉換后,保存到文件中,需在eclipse中調試時,走單獨的入口讀取文件,再單步跟蹤。對于大型復雜且不熟悉的工程,單步是有優勢的。
生活記錄
今年過年回家,妹妹妹夫一家子初二來家里,初三去表伯家,初四去二姨家,初五在家包粽子,初六上南寧,然后上班,月底大錘大妞上學,恢復日常生活兩點一線、輔導作業,時不時加班的生活。
育兒記錄
這個月回家過年,晚上7點多天黑下來,抬頭就看到參宿了,冬季那幾顆著名的星星都很亮,如天狼星,畢宿五,五車二,南河北河三。甚至還看到了閃閃的老人星,大錘繼續吵著要買望遠鏡。在月底,終于買了一臺,但天公不作美,南寧連著陰天雨天,無法看星星。