0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用deepin-IDE的AI能力實現(xiàn)文件加密擴展

深度操作系統(tǒng) ? 來源:深度操作系統(tǒng) ? 2024-12-30 09:22 ? 次閱讀

經(jīng)過多輪迭代,deepin 文件管理器(dde-file-manager)的擴展功能已經(jīng)趨于穩(wěn)定,看到越來越豐富的文管新功能,作為一名技術愛好者,也想自己動手寫個插件擴展一下文管的功能。
我選擇的開發(fā)工具是 deepin-IDE,原因有兩個:一是 deepin-IDE 本身集成了文管的插件模板,對研發(fā)者而言只需要通過引導創(chuàng)建模板代碼,然后在上面修修改改即可,不用再去閱讀大量的文管源碼;還有一個原因是 deepin-IDE 已經(jīng)支持了較多的 AI 能力,包括注釋添加、代碼翻譯、修復bug、解釋代碼、代碼審查、生成單元測試和生成提交信息,正好借此機會看看能帶來多少的效率提升。

首先說下結論,有模板 + AI的助力,整個開發(fā)過程體驗下來還是非常順暢,讓我僅用不到兩個小時的時間就把功能加上,接下來就分享給大家完整的開發(fā)過程。

Part 1 準備工作

首先通過應用商店,下載最新版本的 deepin-IDE :

6b7d61a8-c36c-11ef-9310-92fbcf53809c.png

啟動 deepin-IDE,首先看到的是最近訪問頁面,點擊下圖中的按鈕,在彈出的引導界面選擇文管插件,隨后按照向導一步一步的完成配置。

6ba052bc-c36c-11ef-9310-92fbcf53809c.png

引導完成后在工程樹可以看到插件模板的代碼結構:

6baa8002-c36c-11ef-9310-92fbcf53809c.png

在這個模板里面有說明文檔,按照指引將工程配置一遍,在編譯后插件文件會自動安裝到指定位置,文管檢測到插件變化,提示用戶進行更新:

6bbfde48-c36c-11ef-9310-92fbcf53809c.png

為了測試插件是否安裝成功,打開文管并選中某個文件右鍵,已經(jīng)可以看到新增的右鍵菜單:

6bd68a94-c36c-11ef-9310-92fbcf53809c.png

這些右鍵菜單都是插件模板已經(jīng)實現(xiàn)的功能,我們要做的是修改這些代碼,在這個過程中就可以體驗 deepin-IDE 的 AI 輔助編程功能。
需要注意的是,如果想要體驗完整的 AI 功能,還需要做一個準備工作,就是登陸 AI 插件關聯(lián)的網(wǎng)站:在 IDE 界面的消息界面,會彈出 AI 插件登陸提示:

6be9a58e-c36c-11ef-9310-92fbcf53809c.png

點擊登陸按鈕,完成登陸后就可以使用全部的 AI 功能。到這里,所有的準備工作就算完成。

Part 2 解釋功能

要新增加密功能,第一步應該在文管中添加右鍵菜單。找到對應的源文件,閱讀代碼并定位到如下的位置:

bool MyMenuPlugin::buildNormalMenu(DFMExtMenu *main, const std::string


¤tPath,


const std::string &focusPath, const


std::list&pathList,

bool onDesktop)

{

...

//通過代理創(chuàng)建 action,此 action 在堆區(qū)分配,不自行釋放將內存泄露!

autorootAction{m_proxy->createAction()};rootAction->setText("角標管理");

//通過代理創(chuàng)建 menu,此 menu 在堆區(qū)分配,不自行釋放將內存泄露!

auto menu { m_proxy->createMenu() };

//?級菜單在Hover中創(chuàng)建,以減少一級菜單顯示的性能開銷

rootAction->setMenu(menu);rootAction->registerHovered([this, pathList](DFMExtAction *action) {

if(!action->menu()->actions().empty())return;autofavoriteEmblemAct{m_proxy->createAction()};favoriteEmblemAct->setText("角標設置為favorite");favoriteEmblemAct->setIcon("emblem-favorite");favoriteEmblemAct->registerTriggered([this,pathList](DFMExtAction*,
bool) {

std::for_each(pathList.begin(), pathList.end(), [this](conststd::string &path) {setEmblemIcon(path, "emblem-favorite");

});

});

...
return true;

}

代碼注釋很詳細,添加的方法也很簡單,只需要自己創(chuàng)建一個菜單和 Action,通過接口注冊進去就可以了。具體的邏輯是寫在 Action 的回調里面處理,用?觸發(fā)菜單時會自動執(zhí)行。 以上對代碼的理解是基于個人的經(jīng)驗,在這種對代碼不是很熟悉的場景下,正好可以試試 AI 的解釋功能。 選中這段代碼,右鍵點擊解釋代碼選項,得到如下的結果:

6bfb53ba-c36c-11ef-9310-92fbcf53809c.png

著重看紅色方框里面的內容,其中功能描述部分還是比較準確的,和個人的理解相近,除此之外 AI 還把函數(shù)的參數(shù)都解釋了一遍,這比自己閱讀代碼得到的信息更多。 不過這個功能還是存在槽點,后面羅列出來的具體步驟還是有些繁雜,不如“show me the code”來的更加直接。 但換個場景想想,假設我正在翻看其它語言的代碼,或者涉及到算法、shader 代碼,解釋功能的優(yōu)勢就體現(xiàn)出來了,就像文言文里面的白話注釋,可以不用,但不能沒有。 所以啊,在當前 AI 功能眼花繚亂的背景下,只有在合適的場景、合適的需求下去使用,才會得到事半功倍的效果。

Part 3 智能問答

理解到代碼的大概意思,接下來就是手搓代碼的過程。 第一步將模板中已有的代碼進行修改,比如去掉多余的Action,修改菜單名字等,讓其符合我的最終需求,效果如下:

6c18e862-c36c-11ef-9310-92fbcf53809c.png

有了界面,接下來就是添加加密和解密的邏輯。 對于不怎么使用加密工具的研發(fā)者來說,并不知道使用什么加密工具以及如何什么樣的參數(shù)。在這個場景下,相信大部分的小伙伴已經(jīng)不假思索的打開 ChatGPT 進行問答操作了。 不過這次是在 deepin-IDE 里面,我直接展開 deepin-IDE 左側的問答界面6c34115a-c36c-11ef-9310-92fbcf53809c.png進行查詢,在進?了多番連續(xù)的問答后得到如下答案: ?

6c3bc6e8-c36c-11ef-9310-92fbcf53809c.png

Part 4 代碼補全

為了把加解密功能加進去,我在對應的類中添加了兩個函數(shù),分別用于加密和解密,然后開始輸入代碼,在敲完函數(shù)體回車后,就得到 deepin-IDE 的代碼補全提示:

6c58707c-c36c-11ef-9310-92fbcf53809c.png

敲擊快捷鍵 Ctrl+T 填入對應的代碼,隨后再次利用這個功能,便快速得到完整的函數(shù)代碼:

6c6e2890-c36c-11ef-9310-92fbcf53809c.png

以同樣的方法,我把代碼解密的函數(shù)代碼也補充完成。 體驗下來,補全的代碼解決了我大約 90% 的工作量,不過并沒有完全符合功能需求,原來的文件還遺留在本地。 我在靠后的位置先寫上注釋,說明需要刪除原來的文件,隨后輕點回車,不待我反應過來,補全內容已經(jīng)直接呈現(xiàn):

6c8f9340-c36c-11ef-9310-92fbcf53809c.png

為了保持和之前一樣的優(yōu)雅,我愉快的按下了 Ctrl + T 快捷鍵。隨后多次、重復的使用 AI 代碼補全功能,將剩余的函數(shù)一一實現(xiàn)。 最后編譯整個工程,然后隨便找了個“README.md”文件試了試成果。這是文件里面原來的內容:

6cbaf756-c36c-11ef-9310-92fbcf53809c.png

接下來進行加密操作: 1、右鍵該文件,選擇加密選項。 2、在當前目錄隨即出現(xiàn)了一個新文件,名字后面加上了“encrypted”后綴,之前的文件也被刪除。 3、打開該文件,可以看到里面的內容已經(jīng)被加密,無法正常閱讀。

6cd2d6d2-c36c-11ef-9310-92fbcf53809c.png

如果仔細觀察,還會發(fā)現(xiàn)文件圖標的左下角多了一個愛心圖標,表示這是一個加密文件。解密也是同樣的操作,它會把文件名恢復為原來的名字,左下角的加密圖標也會消失。

Part 5 單元測試

功能是完成了,但為了保證代碼質量,單元測試也是不可缺少的一環(huán)。 在 deepin-IDE 里面也提供了這個功能,選中一段代碼,讓 AI 生成測試內容,看看效果如何:

6cf75b24-c36c-11ef-9310-92fbcf53809c.png

這個工程沒有使用任何測試框架,但 AI 還是把測試用例的大體結構搭建好了,和大多數(shù) AI 輔助功能一樣,還是需要自己動手修改。不過粗略估計,該功能大致可以節(jié)省 50% 左右的工作量。

Part 6 準備工作

為了完成開發(fā)閉環(huán),接下來就需要把代碼提交到倉庫。 在常規(guī)的提交方式下,我們會根據(jù)經(jīng)驗總結修改的內容,形成提交信息。 在 deepin-IDE 里面,可以直接根據(jù)修改內容生成提交信息,甚至把總結的依據(jù)也羅列出來。右鍵點擊 CodeGeeX > 生成git commits,如下圖所示:

6d1f8e32-c36c-11ef-9310-92fbcf53809c.png

隨后在智能問答界面,會輸出提交信息和提交依據(jù):

6d2a5e5c-c36c-11ef-9310-92fbcf53809c.png

最后一句的總結可以說非常的準確,同時也節(jié)省了不少思考時間。

Part 7 審查代碼

當然,如果害怕提交的 PR 被其他人暴力 Review,自己可以在本地進行預先審查。 具體可以通過 deepin-IDE自帶的代碼審查功能,方法還是通過選中代碼和右鍵菜單觸發(fā),得到如下結果:

6d2a5e5c-c36c-11ef-9310-92fbcf53809c.png

這里我選取的是加密函數(shù)的代碼,總計有僅有12行,但 AI 功能給出的代碼審查建議竟然多達10條之多,我一度懷疑自己的編碼質量怎會降到如此程度,不過細細看來,AI 還是審查得過于嚴苛了。 建議研發(fā)人員將其作為參考信息,提取有用部分進行自查即可。

Part 8 總結

deepin-IDE 中的 AI 能力在持續(xù)不斷的完善。而在本次的使用過程中,也用到了 deepin-IDE 提供的插件模板功能,較為明顯的降低了從頭開始寫文管插件的難度,隨著后面各類系統(tǒng)工具的集成,deepin-IDE 在開發(fā)效率上的提升也會越來越明顯。
最后,十分感謝社區(qū)用戶Mozart的投稿,也歡迎大家踴躍投稿,分享你的新發(fā)現(xiàn)和新玩法。
GitHub:https://github.com/linuxdeepin/deepin-unioncode 官方網(wǎng)站:https://ide.deepin.org/zh

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • AI
    AI
    +關注

    關注

    87

    文章

    30998

    瀏覽量

    269304
  • 文件加密
    +關注

    關注

    0

    文章

    24

    瀏覽量

    6077

原文標題:利用 deepin-IDE 的 AI 能力,我實現(xiàn)了文件加密擴展

文章出處:【微信號:linux_deepin,微信公眾號:深度操作系統(tǒng)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    deepin操作系統(tǒng)介紹

    希望從自己的能力和對桌面操作系統(tǒng)的理解,能給 Linux 的用戶與開發(fā)者更多的選擇。我們也相信 deepin 能夠得到更多用戶的認可與喜愛,成為開源世界的最佳選擇。? 一、 deepin 操作系統(tǒng) 先說 Linux 操作系統(tǒng),它
    的頭像 發(fā)表于 12-23 09:08 ?367次閱讀
    <b class='flag-5'>deepin</b>操作系統(tǒng)介紹

    deepin榮獲2024年度開源社區(qū)獎

    近日,由中國科協(xié)科學技術傳播中心、中國計算機學會、中國通信學會和中國科學院軟件研究所聯(lián)合主辦、CSDN 承辦的 2024 年開源創(chuàng)新榜評選活動圓滿落幕。經(jīng)過嚴格的評選過程,deepin 榮獲 2024 開源創(chuàng)新榜“年度開源社區(qū)獎”,這也是 deepin (深度) 社區(qū)連續(xù)
    的頭像 發(fā)表于 12-20 15:13 ?270次閱讀

    deepin社區(qū)落地開源生態(tài)發(fā)展合作倡議

    為共同推動做強做優(yōu)做大創(chuàng)新操作系統(tǒng)生態(tài),積極響應由 deepin(深度)、龍蜥(OpenAnolis)、開源歐拉(openEuler)、鷗棲(OpenCloudOS)及開放麒麟(openKylin
    的頭像 發(fā)表于 12-17 09:35 ?194次閱讀

    如何在虛擬機上安裝deepin系統(tǒng)

    如果你想在 Windows、macOS 或 Linux 發(fā)行版上體驗 deepin 系統(tǒng),但又不想冒險破壞現(xiàn)在的電腦系統(tǒng)環(huán)境,通過虛擬機來安裝則是一個理想的選擇。
    的頭像 發(fā)表于 12-05 14:43 ?259次閱讀
    如何在虛擬機上安裝<b class='flag-5'>deepin</b>系統(tǒng)

    deepin文件管理器問題解答

    deepin 文件管理器憑借其獨特的設計贏得了用戶的青睞,盡管如此,它在用戶體驗方面仍有改進的空間。因此,我們策劃了這次文字采訪,旨在深入探究其設計理念、用戶面臨的問題以及未來的發(fā)展規(guī)劃。我們期望通過這次交流,為用戶傳遞有價值的信息,并為產(chǎn)品團隊提供一個展示和溝通的平臺。
    的頭像 發(fā)表于 12-05 14:32 ?166次閱讀

    socket 加密通信的實現(xiàn)方式

    在網(wǎng)絡通信中,數(shù)據(jù)的安全性至關重要。Socket 編程作為網(wǎng)絡通信的基礎,實現(xiàn)加密通信是保護數(shù)據(jù)不被竊取或篡改的重要手段。 1. SSL/TLS 加密 SSL(Secure Socket Layer
    的頭像 發(fā)表于 11-12 14:18 ?429次閱讀

    C加密算法的實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《C加密算法的實現(xiàn).pdf》資料免費下載
    發(fā)表于 09-20 11:10 ?1次下載
    C<b class='flag-5'>加密</b>算法的<b class='flag-5'>實現(xiàn)</b>

    利用華企盾安全U盤實現(xiàn)居家辦公文檔的安全加密

    泄露的問題。 什么是安全U盤 安全U盤是一種新型的加密數(shù)據(jù)處理設備,也就是常說的USB存儲設備,它是由北京華企盾科技責任有限公司開發(fā)的,可以使用它來儲存和加密數(shù)據(jù),通常使用它來保護重要的文件,比如電子表格
    的頭像 發(fā)表于 05-21 11:20 ?392次閱讀
    <b class='flag-5'>利用</b>華企盾安全U盤<b class='flag-5'>實現(xiàn)</b>居家辦公文檔的安全<b class='flag-5'>加密</b>

    華為云正式發(fā)布CodeArts IDE for Python

    近日,華為云正式發(fā)布CodeArts IDE for Python,這是一款內置華為自主創(chuàng)新的Python語言服務,提供智能編程、靈活調試能力的可擴展桌面開發(fā)工具,為華為云開發(fā)者提供卓越Python編碼體驗。
    的頭像 發(fā)表于 05-08 14:58 ?506次閱讀

    【操作指引】鐵威馬NAS加密文件夾創(chuàng)建和使用教程

    共享文件夾是一個網(wǎng)絡存儲空間。您可以建立數(shù)個共享文件夾來存放不同類別的數(shù)據(jù),或提供給不同的用戶或用戶群組來存取文件。 ? 一旦加密共享文件
    的頭像 發(fā)表于 04-02 14:17 ?929次閱讀
    【操作指引】鐵威馬NAS<b class='flag-5'>加密</b><b class='flag-5'>文件</b>夾創(chuàng)建和使用教程

    擴展包x-cube-ai實現(xiàn)SVM支持向量機嗎?

    擴展包x-cube-ai實現(xiàn)SVM支持向量機嘛
    發(fā)表于 03-22 07:26

    防止AI大模型被黑客病毒入侵控制(原創(chuàng))聆思大模型AI開發(fā)套件評測4

    在設計防止AI大模型被黑客病毒入侵時,需要考慮到復雜的加密和解密算法以及模型的實現(xiàn)細節(jié),首先需要了解模型的結構和實現(xiàn)細節(jié)。 以下是我使用Python和TensorFlow 2.x
    發(fā)表于 03-19 11:18

    IBM積極推進Ceph擴展,以打造AI領域的底層數(shù)據(jù)存儲基石

    BM正著手擴展Ceph的塊和文件存儲功能,希望將其定位為Storage Scale并行文件系統(tǒng)之下面向AI工作負載的后端數(shù)據(jù)存儲。
    發(fā)表于 02-20 16:15 ?407次閱讀

    應用方案:實時數(shù)據(jù)加密

    應用方案:實時數(shù)據(jù)加密 利用CPLD設計加密電路方便可行,能夠較好地實現(xiàn)加密功能。AG32系列MCU產(chǎn)品,在芯片內部內置了CPLD邏輯,可以
    發(fā)表于 01-15 08:57

    【飛騰派4G版免費試用】為歐拉系統(tǒng)安裝可視化界面(deepin

    設計、加密存儲、獨立安全域等特性,以滿足高要求的安全場景。 輕量化設計:輕量級微內核架構,模塊化和服務化設計,滿足5G和邊緣計算場景對低時延和高并發(fā)的要求。 AI能力:提供AI引擎和訓
    發(fā)表于 01-05 21:19