原创 最低成本搭建 golang 透明代理

目標 由於衆所周知的原因,golang.org 無法直接訪問,golang 文檔和安裝包無法下載,golang.org/x/net 等官方包無法下載。 常見解決方案是無腦掛代理,解決一切問題,但爲了以最小成本解決,我折騰出了這種方法,完全本

原创 爲 7-Zip 寫一個存檔格式插件 (6):7-Zip 的插件機制

插件機制 上一篇文中,我們已經實現出了自己的存檔包格式處理類,但估計你也像我一樣,不想直接發佈集成該格式的 7-Zip 安裝包,畢竟用戶電腦上可能已經裝了 7-Zip,再裝一個就重複了。再加上如果這樣發佈的話,我們就要跟隨 7z 官方的更新

原创 爲 7-Zip 寫一個存檔格式插件 (5):實戰

大概瞭解了存檔包的處理流程,我們就可以開始搞事了。一步一步來,讓我們先來寫個虛擬存檔包,也就是在代碼中寫死一些文件項目,每次打開該類型的存檔包都固定返回這些項目。作爲存檔格式的識別依據,我們就只規定一條,只要後綴名是 .zzz,就認爲它是我

原创 爲 7-Zip 寫一個存檔格式插件 (3):理解 SplitHandler

作爲入門,我的選擇是從 SplitHandler 下手,因爲這裏不牽扯任何壓縮和哈希算法邏輯,也沒有任何文件結構,僅僅是把 .001、.002、... 這樣的序列文件合併爲一個文件,從實現邏輯上來講是最簡單的。 整個文件代碼太長,這裏不貼出

原创 爲 7-Zip 寫一個存檔格式插件 (2):IArchive.h

之前只知道 7z 的作者是 Windows 用戶,7z 是在 Windows 上開發出來的。現在看了源碼才知道,作者深受 Windows 影響,代碼中大量依賴 COM 接口,但並沒有使用 ATL 庫,其實是作者自己修改簡化後的 COM 接口

原创 爲 7-Zip 寫一個存檔格式插件 (1):7-Zip 簡介

7-Zip 簡介 最近閒着沒事,出於探索(折騰)精神,就想搞個大新聞。想來想去,就拿 7-Zip 下手吧。正好我手頭有一個自定義格式的文件包操作庫,但一直懶得寫一個圖形管理工具,能直接讓 7z 支持這個格式豈不美哉? 本文不會深入介紹 7z

原创 爲 7-Zip 寫一個存檔格式插件 (4):實現 CHandler

在上一篇文中,我們講了 SplitHandler 中的整體結構,剩下的就是實現存檔包的操作邏輯,也就是實現 CHandler 類。 再次明確一下,我們的目標是實現一個只讀的存檔包格式插件,所以這裏只討論 IInArchive 接口的實現。