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
- Everything for linux前言
- Everything for linux Preview
- Everything For Linux
- Thank You For Everything
- A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux(or, "Size Is Everything")
- In Linux, Everything is a File
- The ideal length for everything on the Internet
- 启动自己的linux, everything include toolchain, rootfs, kernel...
- 数年不关注,Everything for windows已经进化得很厉害了
- Everything Do
- EVERYTHING,NOTEPAD2
- everything 教程
- everything 教程
- Everything使用指南
- Hack, Everything!
- Everything使用
- Everything 使用说明书(Everything FAQ)
- Linux 下使用Recoll实现文件名快速搜索(像windows下的everything)
- Hdu 1205 吃糖果【思维题目】
- 窗口滑动协议的简单理解
- IO流的合并流实现
- CentOS7在VM中连接Xshell
- Log4J日志配置详解
- Everything For Linux
- 用于记录应用程序运行次数,如果使用次数已到那么就要给出注册提示;
- 关于覆写
- SSH框架总结
- android 获取 imei号码
- C语言小编程之闰年判断
- 在Java中使用递归算法删除一个带内容的目录。
- 各种排序算法的分析及java实现
- BZOJ_P4419 [SHOI2013]发微博(STL+Set)