Everything For Linux

来源:互联网 发布:大数据魔镜使用方法 编辑:程序博客网 时间:2024/06/11 22:23

计划中的第二步也做出来一个雏形,基本可以使用,但需要改善的地方还有很多,以后再一点点去完善。

代码已经上传github: https://github.com/ma3232335/EverythingForLinux.git

1. 与第一版的主要区别
这一版还没有完全做好,但外观上在完成后基本与第一版preview类似,细节上有一些小变化,去掉了search按钮,去掉了前面编号的显示,加入单行下划线,加入单行hover,修改了选择行背景颜色。效果会在最终完成后第一时间补上。search按钮已经没有了存在的必要,之所以去掉,是因为后台结构发生了变化。

与前一版的区别主要体现在后台功能实现上。
第一版时使用前台QT,后台调用mlocate命令的模式,这种方式比较简单所以很快就做了出来,但有一个致命的缺点就是做不到即时搜索,完全像Windows下Everything,性能上达不到即时搜索,所以才会在当初加入了一个search按钮来进行点击搜索。

这一版中改变了原有的模式,性能提升很多,做到了真正的即时搜索,再加上做的一些性能优化,几乎可以达到Everything一样快速。这次采用了前台QT,后台连接sqlite数据库的模式。sqlite是一个轻量级的数据库,安装使用都很方便,如果采用更加重量级的数据库,比如mysql,oracle,相信速度可以做到更快,但是那样会导致安装使用变的很麻烦, 会很不方便,得不偿失,这样一个小工具没有必要去借助那样一个庞然大物。

2. 软件结构
借鉴了locate命令分locate和updatedb这样一个结构,locate命令负责从数据库中查询,updatedb负责更新数据库的,这样做可以在权限上对两个命令区别对待(后面会单独对locate数据库权限问题做一个单独讲解)。

这个版本中类似locate,同样采用查询和更新数据库分开的结构,分两个部分,everything和everything-updatedb。

everything-updatedb是一个单独的命令行命令,负责将locate命令的数据库转换并保存在sqlite数据库中,数据库文件保存在/var/lib/everything/everything.db中,表名也是everything,字段有4个,ID, NAME, PATH, TYPE。

everything是一个GUI的搜索程序,依然使用QT编写,前台负责接受用户的输入并将查询结果进行展示,后台连接到everything-updatedb创建的数据库,按照前台传入的关键字返回搜索的结果。

整体效果图:


3. 功能

1)搜索
搜索方式和前一版有了区别,不再需要在输入关键字后点击search按钮,只需要输入想要搜索的关键字,搜索结果后实时的在下面进行展示。
搜索关键字中可以使用通配符"*", 如果关键字中没有通配符,会在匹配到所有文件名中包含关键字的文件,不论关键字是在开始还是结尾。如果关键字中通配符,这只匹配符合这个模式的文件,例如:输入“*123”,只匹配"123"结尾的文件。默认关键字大小写敏感。

后续还需要完善和添加一些功能,比如关键字大小写敏感可以设置,正则表达式的支持等。

2)更新数据库
程序运行时会首先弹出窗口询问是否需要更新数据库,如果需要就点击unlock按钮,如图所示:


点击unlock按钮后,会弹出另一个对话框,提示用户输入当前用户密码,因为everything的数据库文件只有root用户才有修改权限,所以需要在后台使用sudo命令去调用updatedb和everything-updatedb,输入密码对话框如图所示:



输入密码正确后(有3次机会),会开始更新数据库,首先会更新locate数据库mlocate.db,然后根据再更新everything用到的数据库everything.db,更新状态及结果会被展示在第一个弹出的对话框中。如图所示:



最后更新数据库成功后可以开始使用。

3)右键菜单
这个与preview版中保持一致。


4)双击打开


4. 总结
拖到现在才把这些代码实现,笔记补上,说实话也意识到自己效率真的实在太低了。真的是应该学习一下如何管理自己的时间,提高各方面的效率。

最近在找工作上遇到一些挫折,面试时发现没有自己的特点,特长或感兴趣的方面。很多方面都懂一点,但都不是很深入;对不懂得东西都有兴趣,但大都是三分热度。自己也觉得这样只会让自己碌碌无为,擅长的东西不需要多,只需要一技之长即可。而且换工作的原因也没有想好,纯粹为了跳槽而跳槽,眼看同学现在的福利等方面比自己高出不少,心生浮躁,真不应该,还是要静下心来,好好计划安排一下,仔细思考,选择一个方向,一个自己感兴趣的,可以把所有时间花在上面的方向。今后可能这个小工具也会在完善的差不多后搁置一边,希望自己选择的这个方向可以让自己拥有一技之长吧,奋斗吧,马上奔三的自己。

后续会补上软件细节实现讲解,以及做这个的时候遇到的问题及解决方法,

0 0
原创粉丝点击