原创 [glibc] 帶着問題看源碼 —— exit 如何調用 atexit 處理器 [apue] 進程環境那些事兒

前言 之前在寫 apue 系列的時候,曾經對系統接口的很多行爲產生過好奇,當時就想研究下對應的源碼,但是苦於 linux 源碼過於龐雜,千頭萬緒不知從何開啓,就一直拖了下來。 最近在查一個問題時無意間接觸到了 code browser 這個

原创 pbjs 無法編碼 bytes 類型數據問題的解決方案

問題背景 之前寫過一篇《使用腳本收發 protobuf 協議數據 》,通過 pbjs 命令可以將 protobuf 二進制數據轉換爲 json: > pbjs msg.proto --decode ProbeIpv6Response < r

原创 [apue] 進程環境那些事兒

main 函數與進程終止 衆所周知,main 函數爲 unix like 系統上可執行文件的"入口",然而這個入口並不是指鏈接器設置的程序起始地址,後者通常是一個啓動例程,它從內核取得命令行參數和環境變量值後,爲調用 main 函數做好安排

原创 使用腳本收發 protobuf 協議數據 用 shell 腳本做 tcp 協議模擬 使用 shell 腳本自動申請進京證 (六環外)

問題背景 最近做了一個 ipv6 相關的功能,發現使用 getifaddrs 獲取的本地 ipv6 地址有可能不是真實的網絡 ipv6 地址: 例如上圖中通過 getifaddrs 獲得了多個本地 ipv6 地址,其中 <fe80> 開頭

原创 使用 shell 腳本自動申請進京證 (六環外) —— debug 過程 使用 shell 腳本自動申請進京證 (六環外)

問題現象 用 shell 腳本寫了一個自動辦理六環外進京證的工具 《使用 shell 腳本自動申請進京證 (六環外)》,然而運行這個腳本總是返回以下錯誤信息: { "msg": "目前辦理業務人數較多,請稍後再試。", "code"

原创 使用 shell 腳本自動申請進京證 (六環外) mac date命令

問題背景 外地車輛進入北京,需要辦理《進京證》,不辦理證件駛入後會被執法設備抓拍,一次罰 100 扣 1 分,目前唯一的線上辦理通道是下載《北京交警》App,註冊後添加車輛,就可以爲自己的愛車隨時隨地辦理進京證了。注意如果有違法記錄,需要繳

原创 使用 shell 腳本拼接 srt 字幕文件 (srtcat) shell腳本報錯 value too great for base SRT字幕格式

背景 前段時間迷上了做 B 站視頻,主要是摩托車方面的知識分享。做的也比較粗糙,就是幾張圖片配上語音和字幕進行解說。嘗試過自己解說,發現錄製視頻對節奏的要求還是比較高的,這裏面水太深把握不住。好在以 "在線 免費 文字轉語音" 作爲關鍵字搜

原创 Unix 系統數據文件那些事兒 [apue] linux 文件訪問權限那些事兒 linux /etc/shadow文件詳解 linux用戶認證機制 模擬密碼登陸過程

前言 Unix like 系統和 windows 的最大區別就是有一套標準的系統信息數據文件,一般存放在 /etc/ 目錄下,並且提供了一組近似的接口訪問和查詢信息,這些基礎設施讓系統管理看起來井井有條,下面就來盤點一下。 總覽 下面這個表

原创 三星電視無法下載《條款和條件、隱私政策》的問題 (消息代碼: 0-1)

問題背景 自打政治上不睦後,韓國產品在我國就遇冷了,前有樂天瑪特,後有三星,特別是三星手機,市佔率從第一到現在份額小到歸入"其它",另外像三星電視、顯示器的遭遇也都差不多。如果現在有人買三星產品,估計需要特別大的勇氣,因爲說不準啥時候因爲銷

原创 微光互聯 TX800-U 掃碼器無法輸出中文到光標的問題

問題背景 某檢測場有一批掃碼器,購於微光互聯,型號 TX800-U,用於在不同辦理窗口間掃描紙質材料上的二維碼,簡化錄入過程。掃碼器通過 USB 接入 PC 系統 (windows),自動安裝驅動,接電即可使用,掃描的信息會直接輸出在光標所

原创 使用二手 gopro 做行車記錄儀

背景 自打開了博客以後,一直在寫技術說明文,今天打算寫點程序以外的東西換換味口。前段時間在某魚上以 300 元的價格入手了一套完整的 gopro3+ 運動攝像頭,帶一張 32G SD 卡,兩塊備用電池,一個無線遙控,以及 N 多配件: 相

原创 [apue] 文件中的空洞 lseek函數與文件空洞

空洞的概念 linux 上普通文件的大小與佔用空間是兩個概念,前者表示文件中數據的長度,後者表示數據佔用的磁盤空間,通常後者大於前者,因爲需要一些額外的空間用來記錄文件的某些統計信息或附加信息、以及切分爲塊的數據信息 (通常不會佔用太多)。

原创 不要使用短路邏輯編寫 stl sorter 多條件比較

前言 最近工期緊、任務多,沒有時間更新博客,就水一期吧。雖然是水,也不能太水,剛好最近工作中遇到一個 sorter 多條件排序的問題,花費了半天時間來定位解決,就說說它吧。 背景 公司產品是一個跨端的數據傳輸 sdk,當下載資源時,會先從服

原创 boost::bind 不能處理函數重載 (error: no matching function for call to 'bind')

前言 最近任務多、工期緊,沒有時間更新博客,就水一期吧。雖然是水,也不能太失水準,剛好最近工作中遇到一個 boost::bind 的問題,花費了半天時間來定位解決,就說說它吧。 問題背景 項目中使用了 boost 的 ios_service

原创 使用併發 ssh 連接來提升撈日誌腳本執行效率 [Jenkins][Git]ssh原理以及與https的區別 ssh 遠程執行命令

問題背景 公司有個簡單粗暴的日誌服務,它部署在多臺機器實例上,收集的日誌記錄在每臺機器本地硬盤,寫一個小時自動切換日誌文件,硬盤空間寫滿了自動回捲,大約可以保存兩三天的歷史數據。爲什麼說它粗暴呢?原來它不提供任何查詢日誌的接口,想要獲取日誌