GNOME 桌面眺望台(关注新技术)
Leaftag:让您在桌面上贴标签http://www.gnome-cn.org/newsitems/leaftag-rangninzaizhuomianshangtiebiaoqian
Leaftag 是个桌面系统的标签构架。通过一个基本库(libleaftag)和一组工具(tagutils),它可以让您在文件上贴上标签(类似于 gmail)。这将非常方便以不分等级的方式来管理和组织计算机中的文件。
目前已有 Python 的绑定 leaftag-python 。以及 leaftag-gnome ,它是用于 GNOME 桌面的插件和相关工具 ,当前其含有一个用于Deskbar 的处理器 ,Nautilus 的支持也即将推出。
Galago - Linux桌面之上的Presence
http://www.gnome-cn.org/Members/jcome/docs/galage-the-presence-on-linux-desktop/
当前,即时信息在我们的生活中越来越普及了。从前,这还极限于 geeks 和自己的少数几个朋友,当我们开始跟更多人联系时,事情变得复杂了。Christian Hammond 在此对 Presence 管理 (Presence Management)问题进行考察研究。
下一代 桌面 Applets
http://www.gnome-cn.org/Members/jcome/docs/thinking-about-applets.htm Gimmie:让桌面的任务管理更简单,更有效。
http://www.beatniksoftware.com/blog/index.php?p=34 仍然无法深刻理解tags。
mp3的tags用来表义,随文件流转。
但是,这里的tags定义又不一样了。
tags以uri为目标建立(不论是文件,文件夹,URL,归根结底都是URI)
以对的形式存储在数据库中(即使是sqlite,它也是数据库)。
那么tag的作用是什么?
1,如果文件被移动,删除,目前的leaftag是不会把它查询出来的,因为有个判断,如果不存在了,就不输出这条记录了。
2,如果文件被覆盖呢?假设原来是一张狗狗的照片,给他设定了一个tag,叫做pic_dog,本意是以后所有关于这只狗狗的照片都作这个tag。很遗憾,这张照片叫做IMAGE000.jpg,很多相机都输出这种垃圾名字,然后,后来又被覆盖掉了,而且,被一个人的照片覆盖掉。结果,这个人的照片就到了pic_dog这个tag了。
3,我有能力为多少文件,文件夹作tag?如果忘了作tag怎么办?
4,tags库应该是支持导入导出的,但是,文件系统上的文件在重新安装系统后被重新组织了,那么,tags库的导入导出的作用是什么?
5,tags是脱离文件的,单独存储在数据库中,那么这个tags甚至只对某台机器或者某个用户有意义。为什么我不用Desktop Search呢?
6,这样的Tags又跟管理健全的BookMarks有什么区别。
7,应该是要允许用户编辑tags的属性的,也应该允许用户建立新的Tags。
那么,有没有一种可能用户建立了几百个tags。
这又跟杂乱的文件有什么区别?
8,怎么样方便的为URL作tag,在浏览器里面右击,那么资源管理中的URL呢。
还是需要一个单独的工具,让用户把URL拷贝进来进行tag?
目前的leaftag是面向uri的,跟内容无关,那么这样的tags还容易出现各种各样的问题。那它的应用领域到底在哪里?
多此一举?纯粹的概念炒作?还是什么其他的? 没有人愿意来讨论这个话题?
希望得到各位的指点。 某家大公司对Linux的绝对垄断是解决Linux现有问题的唯一出路。
唉,不要说垄断,就是几家强有力的公司组成寡头也行。 偶这水平只能当听众。:evil:
大虾讲详细点......
鼓掌!!! :D:D:D 这个东西从我们比较弱的用户角度来看,也说不出大的道理来。但是毫无疑问的是, Gmail 的 tag 确实是非常好用,非常有助于管理数量众多的邮件。
刚才看了 对岸的 jserv 的blog 《搜尋技術的進步對於郵件與桌面系統的衝擊》,刚好他也提到这个leaftag ,有兴趣的可以看看。 楼上的能直接发邮件到tag确实很不错。 这个东西从我们比较弱的用户角度来看,也说不出大的道理来。但是毫无疑问的是, Gmail 的 tag 确实是非常好用,非常有助于管理数量众多的邮件。
刚才看了 对岸的 jserv 的blog 《搜尋技術的進步對於郵件與桌面系統的衝擊》,刚好他也提到这个leaftag ,有兴趣的可以看看。
第一个需要解决掉的问题就是tag怎么随文件流转的问题,而不会导致tag丢失。
初次之外,我倒是可以想象出tag的一些用处,明天再细说。 想清楚了一点:
最开始的想法:
添加tag:
如果用户对文件有写权限
1,使用Extend Attr真正的将tag跟文件绑定
2,同时将tag写入database
如果用户对文件只有读权限:
1,不进行Extend Attr设置,只将tag写入database
如果用户对文件没有任何权限:
1,不要作任何tag,因为你不能访问的资源作了tag也是没有意义的。
使用Inotify监视文件的变化来更新database.
现在的想法:
chipx86不用Extend Attr是有道理的:
使用文件系统的扩展属性,必须在挂载时加上user_xattr选项
1,文件系统不同,这个可能不被支持
2,用户不知道怎么打开这个选项
3,即使加上了这个选项,也不能保证文件内容被覆盖时,tag丢失。
比如:
/tmp/test文件,我通过setxattr("/tmp/test","user.tag","abc",1);
来为他设置一个tag,叫做abc.
如果有一个文件/root/a,拷贝过来覆盖test,那这个EA仍然存在。
虽然使用EA设置TAG可以解决掉文件被移动时tag丢失的问题。
但是,文件被删除时,却需要使用Inotify来监视文件系统,效率不合算,而且,你能同时监视多少文件,Beagle设置了8192个文件。
如果不用Extend Attr,当文件被移动时确实会发生tag丢失的问题,但是,文件被删除时却没有任何影响,只要原始文件不再存在,我只需要Sync一下database就可以了。当文件被覆盖时,使用扩展属性也好,不使用扩展属性也好,效果都是一样的,一样会出现tag跟原始内容不一致的问题。
总不至于每次有写入操作都提示用户这个有tag,有可能造成tag和内容不一致,你要不要更改tag。
另外,如果我要为tag重命名,比如,原来的tag叫做abc,一堆文件已经被做了这个tag,我现在要修改这个tag名为“XXX项目文档”。如果使用了扩展属性,那可就麻烦了,我可能要给一堆文件重新setxattr();
如果使用数据库,Easy,只需要更新一下数据库里面的内容就可以了。
同时,EA的使用也确实无法解决remote resource的问题。
综合以上情况,采用EA的方式其实也没有什么太大的好处。
OK,到这里可以明确一点,简单的事情,简单的解决,还是只使用数据库算了。
我们可以作什么
1,GUI Tag Manager
leaftag为每个tag定义了三个属性:描述,隐藏,图片。
GUI Tag Manager的作用就是管理tag,增加,删除tag,修改Tag名,修改TAG的属性。
2,Tag virtual IO.
在GNOME里面就是gnome-vfs,在KDE里面就是kio.
比如tag://可以在资源管理器里面列出所有的tag(文件名就是tag名,图标就是tag的image属性指定的)
点击每个tag,列出被标记为这个tag的所有文件。
tag://<tagname>可以列出被标记为tagname的所有文件。
3,Quick Acess on FileExpolor ToolBar。
资源管理器工具栏,提供一个可以列出所有tag列表的combo box。
点击其中的某一项,列出属于这个tag的所有文件。
4,Tag Setter。
右击文件->属性,提供一个设置tag的页签。
同样,在这个页签也可以新建tag,然后在设置。
5,Tag Droper。
a,On Screen或者Under Systray的工具,点击后,鼠标改变,然后再点击资源管理器里的任何文件,这个文件将被tag.
b,拖放任何文件到kio_tag://<tagname>,这个文件都将被tag.
c,拖放文件到On Screen或者Under Systray的工具中的某个tag类,这个文件将被tag.
6,Tag Exporter。
a,备份属于某个tag的用户可以备份的所有文件,按照文件系统组织不变的进行备份,这样便于恢复是可以进行同步,而不是造成恢复后tag丢失,同时,备份数据库中的所有信息。
(别人的文件或者网络URL你就不用管了,你只能管好自己的文件,然后保留好自己的tag)
7,Tag Importer。
导入所有文件,并导入数据库。
8,tag Share。
可以将自己的tag库share给其他人使用,这样别人也就不需要自己去建立自己的tag体系。
9,Browser Tag
右击浏览器中的某个页面,可以将这个URL tag到仓库。
10,open/save with tag support.
打开文件对话框可以使用tag支持,来选择某个tag中的某个文件。
保存也一样。
另外,还可以有mail tag,比如在发送Mail时,可以向某个Tag 发送邮件,属于这个tag的所有的Mail地址都可以收到(不过这个还不如addressbook的Mail组好用)。 Tag不是万能药,在Gmail上用的好好的,拿到Desktop上就未必好用了。
比如,一个用户千辛万苦的tag了一堆东西,系统crash或者忘记备份而重新安装了系统。下一次他可能就不那么愿意再做tag了。
其次Tag不应该当成万能药,其实,我个人觉得,URL, Mail等非本地文件,就没有必要tag了,现在的bookmark已经很好了,而且,web2.0也会把bookmark公用出来,tag可能还不如这个好用。Mail地址,IM帐号之类的,还是不要作tag,每个都有很强大的工具支持。
Tag Share的作用也是不明显的,大家未必会愿意用。
真正有用的是Tag给了大家一种脱离文件系统物理组织来管理文件的方式。
他不能替代搜索,也不能替代任何老的工具,可能只是一种新的方式。
而且,概念上有很多问题,前面列了一些,这里再列一条:
如果tag是一种新的文件管理方式,难道我就不需要关心文件到底放在哪里吗?
那我怎么给这个文件作tag,不是还是要找到这个文件,然后点几下?
另外,如果每次都要右击,然后选择,那我自己宁可不做tag了,太麻烦了。
还不如直接Desktop Search. 个人认为桌面上的 tag 就是本地文件系统的书签, 浏览其中书签用来记录你喜欢的网页,这里的 tag 则用来标记你的硬盘上的重要文件,以便能方便的找到他们,所以,tag 最重要的功能并不是用来实现位置无关的文件存储,而是为了方便文件的分类及查询。 Desktop search 可以很容易的搜索到你硬盘里的内容,也许给 Desktop search 配备一个书签功能,上面这些 leaftag 就不需要了。
至于这些 tag 工具,如果是独立于 Desktop search 工具,而文件系统有没有提供 “Extend Attr“,那么,实现起来就有些笨重了。 如果有 winfs 这样的文件系统,那么,实现一个 tag 工具也是轻易而举的事。
我认为最好的办法就是由 Desktop search 工具(DST)来提供标签功能,就相当于在 google 中找到自己喜欢的网页然后把他收藏到书签(可设置关键字)中一样,在 DST 搜到喜欢的内容时便可以把他加入到自己的书签中,并打上相应的 tag。从技术上来说,DST 本身就需要解决文件更新(添加/修改/删除等)之后同步自己的索引数据库的问题,这样的问题不需要再在 独立的 tag 工具中再解决一遍,在 DST 的索引数据中添加一个 tag 岂不是很容易的事吗?:) 至于如何分别文件 A 是否被替换,他附带的 tag 是否应该删除/同步等都可以借助 DST 来实现了,比如在索引数据中保存可以唯一标识一个文件的 meta 信息比如(uri+文件大小+MIME, EXIF, MD5...) 就很容易区分文件是否变动了。
另外, 浏览器的书签工具记录的绝大多数是 WWW 上的一个唯一的 URL (本地的除外),互联网上的其他人可以访问这些 URL 所指的资源,所以他才有共享,导入/导出的意义,而桌面上的 tag 工具明显是一个只希望在自己的系统中使用的工具,你肯定不会把你电脑里的所有内容公诸于世。
:mrgreen: 不行,如果我想用tag,而不想用Desktop Search呢。
当然,也可以让用户:要用tag必须要用Desktop Search。
那么,我个人觉得,愿意用tag的就不多了,很可能这个功能要成为鸡肋。
最开始的想法是:有了Desktop Search还要tag干什么?
想了N天才想清楚,他最大的作用确实是忽略物理位置的组织文件的方式,其实也就是你说的分类,在我看来,实现起来应该是virtual folder。
也就是,你有一种Directory browse的功能,还有另外一种Tag browse的功能可用。
而且,我确实不认同ChipX86提出的对remote resource Tag 的想法,理由就是:
不是你的,你拿不到的,你不可控的,不要去瞎tag。
Tag things under your control,才是正道。
关于扩展属性问题,实现起来并不困难。
最大的问题也确实就是守护,更改,和索引问题。
man setxattr, man getxattr你可以看到相应的API。
beagle现在使用inotify最多监视8192个文件,当然你也可以监视更多。
但是总是有一个限度的,而且,效率又会怎么样?
另外,如果一个Tag要重命名,你不得不对被标记为这个Tag几百个,甚至上千个文件进行扩展属性的重新设置。
我个人认为:
Tag,应该是跟Desktop Search,Directory Browse对等的一种方式。
Tag是粗放的,仅靠分类。
Desktop Search是细粒度的,靠meta信息和全文内容
Directory Browse是原始的。 是不是可以发展一个tag的文件系统 :?: 是不是可以发展一个tag的文件系统 :?:
这倒是不必要了。
有几个选择:
1,使用Extend attr,也就是文件系统扩展属性。
man setxattr, man getxattr
2,使用FUSE,作虚拟的文件系统
3,使用VFS扩展,比如台湾的CATFS实现。
页:
[1]
2