gentoo 系统中 mysql 5.1 与 amarok相互block问题的解决办法

mysql-5.1.45
amarok-2.3.0.99

问题,开启amarok[embedded] USE后,链接默认MYSQL编译出来的libmysqld.a的时候出错:

Linking CXX shared module ../../../../../lib/amarok_collection-mysqlecollection.so
/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/mysql/libmysqld.a(client.o): relocation R_X86_64_32 against `mysql_server_last_error' can not be used when making a shared object; recompile with -fPIC
/usr/lib64/mysql/libmysqld.a: could not read symbols: Bad value
collect2: ld 返回 1
make[2]: *** [lib/amarok_collection-mysqlecollection.so] 错误 1
make[1]: *** [src/core-impl/collections/sqlcollection/mysqlecollection/CMakeFiles/amarok_collection-mysqlecollection.dir/all] 错误 2
make: *** [all] 错误 2

而如果去年embeded USE的话,amarok需要连接到已经启动的mysql服务器,额外为了这个软件再启动一个mysql实在不协调,所以不能去掉这个USE。

需要修改的地方有3个,
1. 在/etc/make.conf的CFLAGS中临时加入 -fPIC,重新编译mysql-5.1.45。编译完成后去掉,防止影响系统上其他的包。

2. 修改mysql-5.1.45的ebuild, 注释一行,
# RDEPEND="!media-sound/amarok[embedded]"
我是把这个文件拷贝到自己创建的portage树中做的,否则emerge --sync后又回来了。

3. 同2, 修改amarok-2.3.0.99.ebuild,注释一行,
# embedded? ( <dev-db/mysql-5.1[embedded,-minimal] )

对这几个文件重新ebuild xxx digest一下。

这样,amarok与 mysql-5.1.x就能存了,amarok也能使用mysql-5.1.x的libmysqld.a了。

当然也不是完善的方法,可能破坏系统的完整性,系统维护更复杂了,如果暂时不需要,还是mask掉mysql-5.1,更直接了当些,等gentoo开发者们处理好这个问题再改回来。

这个问题自从amarok使用embedded mysql和mysql发布5.1.x以来一直存在,现在终于不完善解决了,先这么用着。

opera浏览器常用命令大全

一、常用命令简介

1、页面操作类
 
Forward 前进
Back 后退
Fast forward 快速前进(前进到最前一页)
Rewind 快速后退(后退到最后一页)
Reload 刷新
Stop 停止
Reload all pages 刷新所有页面
Wand 填写已经保存的站点用户名和密码,默认快捷键是Ctrl+Enter
Enable automatic reload | Disable automatic reload 开启/停止自动刷新(注:“|”符号表示两种状态的切换,这是一个组合命令,当前标签没有锁定则锁定,当前标签被锁定则解锁。下面不再重复。)

2、标签窗口类:
 
Lock page | Unlock page 锁定标签/解除锁定标签
Switch to previous page 转到上个标签
Switch to next page 转到下个标签
Page up 向上翻页
Page down 向下翻页
Go to start 转到页面顶部
Go to end 转到页面底部
Scroll 滚屏(向下滚动,慢速)
Scroll up 向上滚屏
Scroll down 向下滚屏
New page 新建浏览器标签
New browser window 新建浏览器窗口
Reopen page 撤销已关闭页面(Undo命令在页面使用,和Reopen page作用相同。)
Detach page 分离当前页面到新窗口
Duplicate page 创建页面副本
Close page 关闭当前页面
Close window 关闭当前窗口
Close all 关闭全部窗口
Close other 关闭其它窗口

3、链接类
 
Copy link 复制链接
Open link 打开链接
Open link in background page 在后台标签打开链接
Open link in background window 在后台窗口打开链接
Open link in new page 在新标签打开链接
Open link in new window 在新窗口打开链接
Download URL 目标另存为
Save link 目标另存为(和Download URL一样的)
Download URL as 保存到下载文件夹
Copy image 复制图像到内存
Copy image address 复制图像地址
Use image as desktop background 使用该图像作为桌面壁纸
Load all images 重新装入所有图像
Load image 重新装入图像
Save image 保存图像
Save background image 保存背景图像
Copy document address 复制本页面地址
Add to bookmarks 添加到当前网址到书签
Go to page 转到页面。
 
单独使用该命令,弹出地址栏输入框,输入确定后,弹出新的窗口。如果在快捷键中定义Go to page,"bbs.deepin.org",就是访问深度论坛首页。可以连续组合,比如New page & Go to page,"网址1" & New page & Go to page,"网址2" & New page & Go to page,"网址3",以此类推,注意网址要加引号。New page表示新建一个页面,“&”符号表示命令并列,按照整段命令的前后顺序执行。
 
Go to homepage 转到主页
Paste and go 粘贴并转到。此命令主要是在地址栏粘贴已复制的文本(网址)然后转到该链接。
Go to parent directory 转到站点上级目录。

4、文件操作类
 
Open document 打开文件
Save document 保存文档
Save document As 保存文档为
Print document 打印文档
Print preview | Leave print preview 开启/结束打印预览
Save window setup 保存会话(快捷组)
Insert session 在当前窗口打开已经保存的会话
Open session 在新窗口打开已经保存的会话
Select session, -1 管理会话
New bookmark 新建书签
Save bookmarks as 保存书签为
Export bookmarks 导出书签
Export bookmarks to HTML 导出书签为HTML
Import bookmarks 导入书签
Import explorer favorites 导入IE收藏夹
Hide opera 隐藏Opera(老板键,默认快捷键为Ctrl+H)
Exit 退出Opera
5、编辑类
 
Copy 复制文本
Cut 剪切文本
Delete 删除文本
Clear 清除文本
Insert 插入文本
Paste 粘贴文本
Select all 全选文本
Redo 重做文本修改
Undo 撤销修改
 
(注:Undo是个跨域命令,在页面使用Undo,可以回复刚才关闭的页面,此时作用同Reopen page。如果在输入框使用Undo,那么恢复刚才删除的文字。)
 
New note 新建笔记
Copy to note 复制到笔记
Find 查找
Find next 查找下一个
Find previous 查找上一个
Enable inline find | Disable inline find 启动/停止在页面中查找(这个模式启动之后,关键词可以在搜索框那里输入)
Find inline 进行在页面中查找

6、查看类
 
View document source 查看网页源代码
Enter fullscreen | Leave fullscreen 启用/结束全屏模式
Enable handheld mode | Disable handheld mode 开启/停止小屏幕模式
Enable mediumscreen mode | Disable mediumscreen mode 启用/禁止适合宽度模式
Select author mode 启用网页作者式样模式,即使用站点设置。
Select user mode 启用用户式样模式,即用户模式。
Zoom out 缩小。比如Zoom out, 100即缩小100%。具体数值可以自行设定。
Zoom in 放大。比如Zoom in, 100即放大100%
Zoom to 缩放到。比如Zoom to, 200即缩放到200%
Set alignment, "hotlist", 6 | Set alignment, "hotlist", 0 显示/隐藏面板
Set alignment, "browser toolbar", 6 | Set alignment, "browser toolbar", 0 显示/隐藏工具栏
Set alignment, "personalbar", 6 | Set alignment, "personalbar", 0 显示/隐藏个人栏
Set alignment, "pagebar", 6 | Set alignment, "pagebar", 0 显示/隐藏标签栏
Set alignment, "status toolbar", 6 | Set alignment, "status toolbar", 0 显示/隐藏状态栏
Set alignment, "document toolbar", 6 | Set alignment, "document toolbar", 0 显示/隐藏地址栏
Set alignment, "site navigation toolbar", 6 | Set alignment, "site navigation toolbar", 0 显示/隐藏导航栏
Enable menu bar | Disable menu bar 显示/隐藏菜单条
Enable scroll bars | Disable scroll bars 开启/禁止滚动条
Customize toolbars, -3 自定义工具栏,“-3”这个参数需要带上,不带上表示进入自定义的第一个页面,即皮肤选择。
Content block mode on | Content block mode off 打开/关闭页面阻止内容模式(Opera 9.0 新加入命令)

7、页面内容类
 
Enable display images | Disable display images 允许/禁止显示图像
Enable embedded audio | Disable embedded audio 允许/禁止网页中的声音
Enable GIF animation | Disable GIF animation 允许/禁止播放GIF图片动画
Enable javascript | Disable javascript 允许/禁止JavaScript
Enable plugins | Disable plugins 允许/禁止插件
Enable cookies | Disable cookies 允许禁止cookies
Enable proxy servers | Disable proxy servers 启用/禁止*敏感詞*服务器

8、管理类
 
Delete private data 删除私人数据
Empty page trash 清空访问页面回收站
Empty trash 清空回收站
Manage accounts 管理帐号
Manage bookmarks 管理书签
Manage contacts 管理联系人
Manage links 管理链接
Manage, "links" 管理链接(标签窗口模式)
Manage wand 管理Wand
Manage cookies 管理cookies
Manage, "notes" 管理笔记
Manage, "transfers" 管理下载
Manage, "history" 管理历史
Show preferences 工具菜单中的首选项

    9、其它
 
    Execute program 执行程序。这是个相当重要和有用的命令,我们可以通过此命令调用系统中的各种程序。它的格式为:
 
    Execute program, "程序路径以及程序名", "参数"
 
    例如调用IE:Execute program, "iexplore.exe", "%l"

附:
 
关于变量的定义
 
%u = 当前显示网页的地址。常用于打开当前网址,或向下载工具传递本页所有链接。
%l = 当前选择的链接,常用于向下载工具传递当前链接。
%t = 当前选择的文本。比如常用的“转到URL”的命令为“Go to page, "%t"”。
%s = 来源于当前显示文档的字符串。用于查看当前文档源代码。
%c = 剪贴版内容。
%i = 显示的搜索结果个数(用于search.ini中)。 

Hotclick search 搜索,比如Hotclick search,200表示用google搜索当前圈选文本,200为search.ini中某个搜索引擎下“Search Type=”后面指定的数值。
 
Show popup menu 调用菜单的重要命令。比如:
 
Item, "菜单"=Show popup menu, "Browser Menu Bar", , "菜单", "Panel Windows"
 
这个是调用[Browser Menu Bar]菜单,名字取名为“菜单”(可以去掉,但是逗号不能省略),使用的图标是Panel Windows。
 
Focus address field 聚焦到地址栏
Focus chat input 聚焦到聊天输入
Focus quick reply 聚焦到快速回复
Focus search field 聚焦到搜索框
Get mail 接收邮件
Read mail 阅读邮件
Compose mail 写邮件
Read newsfeed 阅读新闻推送


二、菜单修改

菜单配置文件默认位置Opera""defaults""standard_menu.ini,如果你创建或启用了自己的菜单,那么它会创建到 C:""Documents and Settings你的用户名Application Data""Opera""Opera""profile或者C:""Program Files""Opera""profile,视你的安装方式决定。不推荐修改默认菜单,建议创建一个菜单副本,避免升级的时候菜单被新版Opera替换。创建方法是工具菜单->首选项->高级->工具栏->菜单设置那里选择一个Opera默认菜单,名字是Opera Standard,然后点击旁边的副本按钮。

在standard_menu.ini中常用的右键弹出菜单名如下,在standard_menu.ini中搜索即可找到:
 
右键点击页面空白处的弹出菜单:[Document Popup Menu]
右键点击图片的弹出菜单:[Image Popup Menu]
右键点击链接的弹出菜单:[Link Popup Menu]
右键点击已拖选文本的弹出菜单:[Hotclick Popup Menu]
右键点击回复框以及记事本空白处的弹出菜单:[Edit Widget Popup Menu]
右键点击托盘图标的弹出菜单:[Tray Popup Menu]
右键点击标签栏空白处的弹出菜单:[Pagebar Popup Menu]
右键点击当前激活标签栏的弹出菜单:[Pagebar Item Popup Menu]
右键点击其他未激活标签栏的弹出菜单:[Pagebar Inactive Item Popup Menu]

Opera最上方的菜单项目名称如下:
 
文件菜单:[Browser File Menu]
编辑菜单:[Browser Edit Menu]
查看菜单:[Browser View Menu]
书签菜单:[Browser Bookmarks Menu]
饰件菜单:[Browser Widgets Menu]
新闻推送菜单:[Browser Feeds Menu]
邮件菜单:[Browser Mail Menu]
聊天菜单:[Browser Chat Menu]
工具菜单:[Browser Tools Menu]
窗口菜单:[Browser Window Menu]——默认没有开启,在工具菜单-首选项-高级-浏览中勾选“显示工具菜单”即可显示。
帮助菜单:[Browser Help Menu]

软件集散地 http://www.my219.cn/

如上图。说明:
 
1、绝大多数都是Item、Submenu、Include开头,每一行对应着右键菜单的一个项目。--------------------1这样的表示菜单中的分隔符。不喜欢的命令项目删除就行了,或者在该行最前面加上分号“;”。
 
2、加上分号“;”,表示该项目不在使用的菜单中显示,被当作注释处理。比如工具栏菜单[Browser Tools Menu]下面的:
 
Item, 69887 = Manage cookies
 
它实际上位于Opera菜单->工具->高级的上面,作用是管理Cookies,不过我们看不见它。
 
3、69887这个数字,表示该项目的名称,它对应的是Opera目录下.lng文件中的条目。现在Opera语言文件中的数值经过换算,所以你在语言文件中找不到69887这个项目。不过我们可以自己指定名字,比如:Item, "管理cookies" = Manage cookies,不加引号也是可以的。
 
实例:
 
来看一下[Document Popup Menu]即右键点击页面空白处的弹出菜单,图中绿线圈住的项目前面加有“;”分号,所以在实际菜单中不会看到。紫色项目,调用的是[Frame Menu]和[Document Background Menu]两个子菜单,需要在框架和背景图片上点击右键才能看到,平时是看不见的。

 

如图:

软件集散地 http://www.my219.cn/

GCC 4.5 发布

in

GNU 编译器套装 GCC 已发布新的 4.5 版本。GCC 4.5 现在需要 MPC 库,改进了编译器优化,能够更好的支持 C++0x,对 libstdc++ 进行了增强,支持新的 ARM 处理器等。

查看 GCC 4.5 Changelog 可了解详情。你可以从 GNU 的 FTP 及其镜像站点下载 GCC 4.5。

改写了一个xmind的ebuild

XMind是一款开源且跨平台的思维导图软件,相比其他同类软件功能更强更专业。不过它的高级版要收费,在些提供的是基础版,不过一般情况也够用了。

提供一个ebuild,希望能为使用Gentoo Linux的人员提供方便。
xmind-3.1.1.ebuild

# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
 
inherit eutils
 
DESCRIPTION="This is a sample skeleton ebuild file"
HOMEPAGE="http://ubuntu-tweak.com/"                                                                          
# SRC_URI="ftp://foo.bar.com/${P}.tar.bz2"                                                                   
RELDATE=200912022330                                                                                         
SRC_URI="http://dl.xmind.org/xmind-portable-${PV}.${RELDATE}.zip"                                            
 
LICENSE="GPL"                                                                                                
SLOT="0"                                                                                                     
KEYWORDS="~x86 ~amd64"                                                                                       
IUSE=""                                                                                                      
 
DEPEND=""                                                                                                    
RDEPEND="${DEPEND}"                                                                                          
 
src_install(){                                                                                               
        XMIND_HOME=/opt/xmind/                                                                               
        insinto ${XMIND_HOME}                                                                                
        # cd ${S}                                                                                            
        cd .
 
        doins -r *
        # fperms 755 /usr/local/xmind/xmind
        fperms 755 ${XMIND_HOME}/XMind_Linux_64bit/xmind-bin
        fperms 755 ${XMIND_HOME}/XMind_Linux_64bit/xmind
        fperms 755 ${XMIND_HOME}/XMind_Linux/xmind-bin
 
        # Create openproj wrapper   /usr/bin/filename   exec file name                     exec dir    libpat
h
        make_wrapper xmind "${XMIND_HOME}/XMind_Linux_64bit/xmind-bin -data \${HOME}/.xmind" \${HOME} ${XMIND
_HOME}/lib:${XMIND_HOME}
        // newicon "${FILESDIR}"/openproj.png ${PN}.png
        make_desktop_entry XMind "xmind" ${PN} "Develop"
}

一张效果图:

在 Emacs 里面使用 Cscope


简介

对于浏览源代码来说,在 Emacs 里面也有很多工具可用,比如自带的 etags 就
不错,不过功能不如 Cscope 强大。 Cscope 并不像 etags 那样属于 Emacs ,
它是一个独立的程序。它是一个具有完全 Unix 血统的程序,用于帮助开发人员
浏览源代码。它最初(那还是 PDP-11 的时代)是由 Bell 实验室开发,并且多年
以来一直是 AT&T Unix 商业发行版的一部分。它已经被用于管理超过两千万行代
码的工程。在2000年4月,多亏了 Santa Cruz Operation, Inc. (SCO)
Cscope 的源代码在 BSD license 下开放了源代码。

Cscope 的发行包里面有个 xcscope.el 能很好地用于 (X)Emacs 。它处于源代
码包的 contrib/xcscope 目录下。该目录下面还有一个名为 cscope-indexer
的脚本文件,用于处理源代码并不是在一个文件夹下面的情况。


安装和配置

首先到 Cscope 的主页 上去下载最新的源代码包,编译安装。要在 Emacs 里面
使用,首先必须把 xcscope.el 拷贝到 load-path 里面包含的目录里面。并在
~/.emacs 里面加上 (require 'xcscope) 就可以了,或者,如果你希望在打开
c 或者 c++ 文件的时候才加载 xcsope ,可以写:

 
(add-hook 'c-mode-common-hook
	  '(lambda ()
	    (require 'xcscope)))

如果源代码全部处于同一个目录下面,现在就可以使用了。否则,如果源代码有
多层目录,或者其他地方还有附加的源代码,则需要 cscope-indexer 脚本。把
那个脚本拷贝到系统 PATH 里面去(如 /usr/bin/)。如果所有的源代码以及子目
录都是在同一个目录下面的,只要执行 C-c s I(cscope-index-files) 就可以
生成 Cscope 的数据库,接下来就可以使用了。


使用简介

默认是的快捷键都是绑定到 C-c s 的前缀上面,如果嫌麻烦的话可以自己更改
快捷键绑定。这是默认的用于查找的键绑定:

 
C-c s s         Find symbol.
C-c s d         Find global definition.
C-c s g         Find global definition (alternate binding).
C-c s G         Find global definition without prompting.
C-c s c         Find functions calling a function.
C-c s C         Find called functions (list functions called
                from a function).
C-c s t         Find text string.
C-c s e         Find egrep pattern.
C-c s f         Find a file.
C-c s i         Find files #including a file.

下面是在搜索到的结果之间切换用的快捷键:

 
C-c s b         Display *cscope* buffer.
C-c s B         Auto display *cscope* buffer toggle.
C-c s n         Next symbol.
C-c s N         Next file.
C-c s p         Previous symbol.
C-c s P         Previous file.
C-c s u         Pop mark.

更详细的使用说明请参见 xcscope.el 文件头部的注释。

QProcess 关闭其管理的进程的两个方法比较

QProcess 是QT库中用于管理其他进程的类,它有两个关闭其管理的进程的方法,分别是,
kill()
terminate()

这两个方法有一些区别,kill()更强势,在linux/mac下给进程发送SIGKILL,进程会无条件的退出,在windows下是使用terminateProcess函数实现,进程也会无条件退出。
terminal()稍微好一些,在windows上可通知进程做最后的处理,也可能进程不处理这个消息。在linux/mac上给进程发送SIGTERM信号,进程也能做一些退出前的处理。

一般情况下,这两个方法够用,但对其管理的进程的退出指令都不太友好。如果对管理的进程行为比较了解,可以使用能友好的方式,如,现在很多Linux/Unix程序都能处理特定的退出信号,如SIGINT, SIGQUIT, SIGUSR等,进程收到这些信号做完善处理后退出。

这么做缺点要需要了解不同平台进程管理的调用,编写平台相关的代码。

BT扩展协议:magnet协议

  BT下载模式已经在潜移默化中改变着,这跟网络版权问题有很大关系。那么BT下载的未来是什么呢?BT下载的未来Magnet URI!什么是Magnet URI?Magnet URI模式与以往的BT下载有什么区别?请看本文详解。

  你是如何使用BT下载

  首先,你从浏览器中找到你感兴趣的内容,下载相应的torrent文件。然后,你用一个BT下载客户端软件,打开这个文件。这时,客户端软 件就会根据torrent文件中的网址,自动连接Tracker服务器,从它那里接收到其他正在下载该文件的人的网址名单。下一步,软件就一一与名单上的 网址取得联系,从他们那里获取文件的片段,直到整个下载完成。

  从这个过程中,我们可以看到,Tracker服务器是整个BT下载的灵魂,文件可以不存在,但是Tracker服务器却不能不存在。要是连 不上它,BT下载根本没法启动,因为你无从知道,找谁索要文件。就是由于这个原因,Tracker服务器成为了版权组织打击的重点。他们的想法很明确,只 要除掉了Tracker,BT下载就完了。他们的理由是,虽然Tracker本身不传递内容,但是为传播盗版提供了便利,是犯罪的协助者。更何 况,Tracker服务器的网址是公开的,很容易找到它的所有者,逃都逃不掉。

  在这种形势下,Tracker提供者的日子都很难过。海盗湾是世界排名第一的Tracker提供者,它已经在被追杀了。排名第二的 Demonoid从今年9月15日起,就一直处于维护状态,不知道何时重新开放。其他的Tracker提供者基本上也是在法律诉讼的阴影下度日。那些不提 供Tracker服务,只提供torrent文件索引服务的网站,比如Mininova、Torrentz、isoHunt,日子稍微好过一点。但是明摆 着,版权组织收拾完Tracker以后,就要收拾它们了。比如,今年8月,Mininova就在一场官司中败诉,荷兰法官判决,该网站必须移除所有侵权内 容的torrent文件。

  既然,Tracker服务器在法律上很难立足,那么有没有办法,在不使用Tracker的情况下,依然使用BT下载呢?

  2002年,纽约大学的两个教授Petar Maymounkov和David Mazières发表了一篇论文,提出了一种真正去中心化的“点对点”下载模型,他们把它叫做Kademlia方法。Emule率先在软件中支持这种方 法,KAD网络就是这样来的。到了2005年,BT软件也开始跟进了。目前,所有主流的BT下载客户端软件都支持这种方法。在BT下载中,这被叫做DHT 协议(Distributed hash table,分布式哈希表)。

  为什么有了DHT协议以后,就不再需要Tracker服务器了,真正实现了去中心化的点对点下载?

  根据我对这个协议有限的理解,它是这样做的:

  每一台加入BT下载的计算机,都被称为一个节点(node),有一个自己的ID。这个ID是一个哈希函数值,通过对要分享的文件内容或它的 元数据进行哈希运算而得到。这就是说,如果两台计算机正在下载同一个文件,那么它们的ID应该是彼此相似的。于是,每一台计算机就通过寻找与自己相似的 ID,来找到自己可以与之交换数据的其他节点。

  DHT协议的另一个巧妙之处在于,每一台计算机只保留自己附近的一部分节点信息。因此,为了得到更多的节点信息,就必须采用接龙方式,在一 个个节点之间跳跃,逐步得到全网的节点分布图。这种信息获取方式,就保证了整个网络没有单个的中心,即使一个节点下线了,依然可以通过其他节点来获取文 件,因此也就不需要Tracker服务器来告诉你,其他节点在什么地方了。

  我对这个协议有一个细节还不是很清楚,我不知道,当BT下载刚刚启动的时候,如何获得第一个外部节点的位置?需不需要有人告诉你,你首先应 该去找谁?如果需要的话,那么这个协议或多或少还是有一个中央服务器的。但是,如果不需要的话,那就真的是纯粹的去中心化的分布式下载协议了。

  现在所有主流的BT下载客户端,都支持DHT协议,也就是说,它们都能在没有Tracker的情况下完成下载。事实证明,它们不仅能完成, 而且还能完成得很好!海盗湾和Demonoid的Tracker服务器都已经关掉了,但是如果你使用它们以前的torrent文件,依然能够完成下载。为 什么?这就是DHT协议在发挥作用啊。所以,正是由于DHT可以取代Tracker,海盗湾才会宣布放弃Tracker模式。---www.002pc.com

  什么是 Magnet URI

  magnet: URI 计划 主要是用来鉴别p2p网络中的可用资源,是基于内容或元数据而非名字或位置,尽管它可以被其它应用程序使用,但主要的用途还是在p2p这一部分,已支持的 软件包括 Azureus, BearShare, DC++, gtk-gnutella, Kazaa, LimeWire, FrostWire, Morpheus, Shareaza, TrustyFiles 和 uTorrent。

  它会根据文件内容的hash生成一个独特的指纹,有点类似于ISBN。这样,任何拥有此文件的人可以生成基于文件内容的指纹。它的另一个优势就是跨平台性,因为它是以普通文本存在,你可以简单的复制粘贴即可完成分享。

  Magnet 链接由一组参数组成,它们之间的顺序不是很重要。最普通的是 “xt”,下面是一个示例

  magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C

  其它的参数初步是这样定义的:

  “dn” (“显示名称”):显示此文件名

  “kt” (“关键词”):指定搜索方式而非特定文件

  “mt” (“其它文件列表”):用一个URI指向一个列表,如其它的一些项目

  特定程序的参数,必须以“x.”开头

  标准还建议2个同种类的参数最好在后面加上数字1、2等,如:

  magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7

  Magnet URI这样做有什么好处?

  显而易见的好处是,整个下载网络的可靠性提高了,每一个节点都是可以被替代的。另一个好处是,审查变得更困难了,因为每次下载的路径都是不 一样的,而且每个节点都是动态变化的,导致实际上无法追踪谁在下载。此外,magnet URI只是一个字符串,非常容易传播,根本无法禁止。

  因此,从这些方面考虑,magnet URI取代Tracker模式是大势所趋,迟早成为主流的BT下载方式。

  根据TorrentFreak的消息,下一步,海盗湾连Torrent文件也不打算支持了,将彻底放弃传统的BT下载模式,只提供Magnet URI。当然,这样一来,BT下载和emule下载就是同一种东西了,因此很可能这两者最终也会统一起来。

magnet协议,也就是哈希分布。现在的BT下载服务是需要一个tracker服务器来储存BT种子文件,但是magnet URI协议是不需要tracker服务器的,原理类似于电驴,但不完全是电驴的翻版。magnet每次连接的源头都是不固
定的,也就没法查封源头。在BT被封锁以后magnet将是主流下载方式。

新的p2p下载格式:metalink

metalink是将多个下载地址存放在一个后缀为metalink的xml文件中,使得下载地址更加的可靠。metalink的一些下载工具还可以通过允许从不同的下载地址那里下载不同的块来获得更高的下载速度。所以说,metalink下载更快,更方便,更可靠。metalink网站主页为http://www.metalinker.org/。

metalink的下载工具有很多,windows下有Net Transport 以及Orbit Downloader等,linux下可以使用aria2。如果使用firefox,可以下载并且安装DownThemAll插件。关于metalink的更多下载工具可以参看http://en.wikipedia.org/wiki/Metalink#Client_programs。

metalink主要用于一些自由软件的下载。例如,在metalinker.org网站上面就提供了opensuse,sabayon,ubuntu, mandriva, fedora 10以及openoffice的metalink链接。更多链接可以参看http://www.metalinker.org/samples.html。另外,MidnightBSD也提供了metalink链接,参看http://www.midnightbsd.org/download/。我尝试用DownThemAll插件下载MidnightBSD的metalink链接,使用铁通宽带下载速度也还算挺快的。

从实用角度来说,如果一个文件有多个下载镜像,例如像各个linux发行版以及自由软件,都可以用metalink的方式来下载。而metalink3.0支持的协议类型有ftp,http,ed2k,rsync,magnet。如果事先知道某个文件的多个镜像地址,那么就可以到http://www.metalinker.org/generator/填写相应内容,生成自己所需要的metalink文件,然后利用该metalink文件来进行下载。所以说,metalink对于实用来说也是很方便的。我使用这个网站生成了一个freeSBIE的metalink文件,使用Firefox下的DownThemAll插件其下载速度还算是相当不错的。

BT下载不死!Magnet(磁力链接)开创网络BT2.0时代!!

 在中国的BT门户被XX广X关闭之前,海盗湾经历了同样的遭遇,甚至更惨。不过法律终归跟不上技术的脚步,Magnet技术让海盗湾得以继续发展——编者

  20世纪60年代,美国国防部高级研究计划署(ARPA)提出要研制一种崭新的、能够适应现代战争的、生存性很强的网络,目的是对付来自前苏联的核进攻威胁。翻看一下历史就能知道,苏联当时把全球第一颗人造卫星送上了太空,美国感觉到了压力,于是他们随后也搞出了另一个足以改变未来世界的东西——APRANET,当今互联网的雏形。APRANET的宗旨之一是去中心化,原因很简单,存在中央节点无异于存在致命节点,单点失效,将导致整个网络功能失效。

  互联网上依靠中央节点才能正常工作的应用其实不在少数,比如我们再熟悉不过的BT。也许你会说:BT不是P2P下载吗?而P2P是没有中心节点的,我们所下载的文件实际上存放在每个网友的电脑中,像FTP这样的应用才是经典的中央节点应用——这话只说对了一半,BT是P2P应用没错,但如果说BT没有中心节点,不会出现“单点失效”,这种看法其实是错误的。

  仔细想一想,BT真的不需要中心节点吗?如果是,那为什么国内BT站点关闭后会给下载BT资源带来不便,甚至出现BT客户端无法工作的情况?答案只有一个,BT并非一个去中心化的应用。那BT的“命门”在哪呢?也许你听说过BT Traker服务器。

  而这个BT Traker服务器也就是目前我朝有司大力打击BT下载站的重要和主要罪证之一,因为这个服务器的存在,且不管技术手段如何,从表面特征上看来,这些网站如同直接提供视频内容一样。正是因为这个服务器的存在,成了这些BT站点供认不讳的证据。滔天罪恶,证据确凿:“你们提供中心下载的服务器,上面全是未经许可的视频内容”。

关于世界最大BT资源分享网站海盗湾关闭Tracker服务器的消息

  BT Traker服务器关闭将会产生怎样的后果?请看下图:

点击查看下一张

点击查看下一张

网友的回帖(海盗湾,BT江湖排名第一,Mininova排名第二)

  海盗湾(The Pirate Bay),自称“世界上最大的BT分享网站”,是一个专门存储、分类及搜索BT资源的网站,同时它也运行着世界上最大的BT Tracker服务器。2008年11月15日,海盗湾称其规模已经达到了2500万独立Peers,注意不是种子,Peer可以认为是参与海盗湾“分享计划”的实际用户(电脑)数量,截至2009年12月,海盗湾注册用户已经达到400万,尽管下载资源是不需要注册的。但它的名声似乎不是很好,洛杉矶时报(Los Angeles Times)称其是世界上最大的非法下载辅助者(帮凶?)之一。

  海盗湾正式成立于2004年10月,除了拥有辉煌的“业绩”,同时也麻烦缠身。根据记录,控告海盗湾的案件有34起之多,其中涉及音乐行业的21起、电影行业9起、游戏行业4起。2009年成为斗争最激烈的一年,2009年4月17日,瑞典斯德哥尔摩的法院以侵犯版权罪判处海盗湾4名创始人各1年的监禁,并处以约3000万瑞典克朗的罚金。

  随后发生的事情更让人感觉BT的“大限”终于还是到了。11月17日,海盗湾决定永久关闭他们的Tracker服务器,12月初全球第二大BT服务网站Mininova删除了网站上大部分非法文件的BT Traker。Mininova表示,为了避免支付罚款,除了删除所有侵权文件的BT Traker之外,他们别无选择。

  有人比喻,一个时代结束了,MPAA(美国电影协会)和RIAA(美国唱片行业协会)成了这场斗争的赢家。表面上看确实如此,在这场斗争中MPAA和RIAA最想“除掉”的就是BT Tracker服务器,而且他们做到了。

  也许一个时代结束了,但BT时代真的结束了吗?答案是否定的。MPAA和RIAA“除掉”了BT Tracker服务器,卡死了当前BT工作方式的“命门”,但随着新技术的引入,BT Traker对于BT分享已经变得不再重要,甚至有些多余,事物的发展结果有时就像是开了一个玩笑,而这次的玩笑就开在了MPAA和RIAA身上。为什么会这样?想搞明白这些,我们必须先梳理一下BT分享的实现方式。

  用户是怎样通过BT下载文件的?基本过程应该是这样:一、找到.torrent文件,二、使用BT下载客户端软件打开这个文件。三、对于用户来讲,只要花时间去等就可以了。

  而对于客户端软件来讲,它会根据.torrent文件中的网址自动连接Tracker服务器,从它那里接收到其他正在下载该文件的人的网址名单。下一步,软件就一一与名单上的网址取得联系,从它们那里获取文件的片段,直到整个下载完成。从整个过程不难看出,BT Tracker服务器是一个中央节点,任何客户端都可以在其上找到“同伴”——只要其他人也在下载或分享同一个文件。所以MPAA和RIAA盯上了BT Tracker,因为消灭所有.torrent文件几乎是不可能的,但通过一些“努力”,消灭BT Tracker服务器则完全有可能实现。

  官司赢了,一个时代结束了,我们不妨称其为是BT1.0时代,BT1.0时代致命的缺点是因为其存在中央节点,也就是BT Tracker服务器。然而,官司输了,并不代表整个BT时代的终结,一个新的时代已经悄然开始,我们可以称其为BT2.0时代。>>

在BT2.0时代,Magnet(意译:磁铁、吸铁石)成为未来BT的发展方向,Magnet真的可以挽救BT吗?经笔者亲身试用,在支持Magnet URI之后,海盗湾似乎获得了新生,下载速度并非越来越慢,相反,速度表现让人满意。最关键的是,Magnet不需要Tracker服务器,也不需要.torrent文件,仅需要一串字符就可以进行文件下载。

海盗湾LOGO与未来BT的“图腾”

点击查看下一张

海盗湾上的BT资源已经加入了Magnet下载方式

点击查看下一张

点击查看下一张

Worlds most resilient tracking. ——节选自海盗湾博客

  博文的题目是“世界上最稳定的tracking”,文中提到:“随着DHT+PEX技术的不断成熟,发现对端(Peer)并协调通信已经变得容易实现,而Tracker服务器变得不再重要,甚至显得有些多余,所以我们将关闭服务器。”文中还说服务器现在被安置在了一家博物馆中。看来,关闭Tracker服务器是计划之内的事情。一切尽在掌握?

  Tracker服务器和“BT种子”即将双双退役,取而代之的是DHT+PEX网络和Magnet Link,DHT网络是分布式存在的,所以不存在“被拔线”的问题,而Magnet Link仅是一串字符,所以也不再需要.torrent文件。这里出现了三个关键词:DHT、PEX和Magnet Link,这三点是未来BT的核心,下面我们就来说一说它们都可以实现怎样的功能。

  DHT:2002年,纽约大学的两个教授Petar Maymounkov和David Mazires发表了一篇论文,提出了一种真正去中心化的“点对点”下载模型,他们将其称为Kademlia方法。2005年,BT软件开始引入这种技术,在BT中被称为DHT协议(Distributed Hash Table,分布式哈希表)。

  DHT是一种分布式存储方法。DHT的作用是找到那些与本机正在下载(上传)相同文件的对端主机(Peer),当然,实现这一过程并不依赖Tracker服务器。在DHT网络中的每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。这种信息获取方式保证了整个网络没有单个的中心,即使一个节点下线,依然可以通过其他节点来获取文件,因此也就不需要Tracker服务器来告诉你,其他节点在什么地方。

  PEX:是Peer Exchange的简写,我们可以将其理解为“节点信息交换”。虽然DHT解决了去中心化的问题,但要在没有“中心协调员”(Tracker)的情况下实现高效寻址,就要借助PEX。PEX所提供的功能有点类似于以前的Tracker服务器,但工作方式却非常不同,我们可以打个比方来说明。

  小赵在A班,她不认识B班的小何,也不认识C班的小温,但小赵认识同班的小王,而小王认识B班的小何,也可能还认识C班的小温,或者小王仅认识B班的小何,但小何认识C班的小温,而小温又认识同班的所有同学,结果就是小赵可以“无限”地延伸自己的关系网,不管怎样,总有一条沟通途径可以将这些同学联系在一起,待小赵“认识”了小温后,他们就可以直接沟通了,在P2P世界里,就是进行上传与下载。>>

Magnet links:有网友将其称为磁链。DHT+PEX解决了BT“寻址”的问题,但是如何告诉BT客户端找(寻)什么又是另外一个问题。在.torrent文件中包含的内容就是用户真正要下载的文件的特征信息,或称为“电子指纹”,BT客户端知道了要找什么,也知道如何去找,于是P2P方式的下载、上传就实现了。以前BT客户端通过.torrent文件得知“要找什么”,现在,文件的“电子指纹”不再存放于.torrent中,而被放在了Magnet links中。

  magnet:?xt=urn:btih:36684b463ca2aa2f9347b18e9f6b1a9090bdb073&dn=Microsoft+iSCSI+Initiator

  上面是笔者打算下载的一个文件,Microsoft iSCSI Initiator,按照以前的方式,我们需要下载它的.torrent文件,然后才能下载这个文件本身。但是,在新的模式下,我们不需要下载.torrent文件,只需知道它的Magnet URI,一个资源定位信息,其他都不需要。只要把这个地址告诉下载软件,软件就会开始自动下载。

  我们来分解一下这个地址:

  magnet:协议名。

  xt:exact topic的缩写,表示资源定位点。BTIH(BitTorrent Info Hash)表示哈希方法名,这里还可以使用SHA1和MD5。这个值是文件的标识符,是不可缺少的。

  dn:display name的缩写,表示向用户显示的文件名。这是一个可选项。

  tr:tracker的缩写,表示tracker服务器的地址。这是一个可选项,本例中并未出现。

  精简一下上例,仅需要magnet:?xt=urn:btih:36684b463ca2aa2f9347b18e9f6b1a9090bdb073就够用了,如果附加dn(display name),在使用上会更加方便一些。

  Magnet Link的好处就不用笔者多说了,至少包括两点:网络的可靠性得到了极大的增强;不存在“被拔线”的风险。由于不存在所谓的中央节点,审查将变得更加困难,“单点失效”的问题也就不存在了。此外,Magnet URI只是一个字符串,非常容易传播,根本无法禁止。因此,Magnet URI取代Tracker模式将是大势所趋,迟早会成为主流BT下载方式。

  细心的网友可能看出了DHT+PEX+Magnet Link模式中的一个问题——BT客户端的“第一步是如何迈出的”,套用在介绍PEX时使用的例子,那就是小赵是怎么“加入”A班的呢?这确实是个问题。解决这个问题依然需要一台服务器(bootstrap node),不过这台服务器所起的作用与Tracker不同,它仅负责接纳小赵进入A班,当小赵与A班中的同学“搭上了话”,之后这台服务器就没有什么用处了。bootstrap node可以是不同BT客户端厂商独立运营的,也可以是几家联合共用,总之,它是分散的,只要在客户端软件中内置一张表单,那客户端就将有非常多的入口可供选择。

  说了这么多,到底Magnet这块“吸铁石”表现如何?是骡子是马总要拉出来溜溜。于是笔者找来了目前已经支持Magnet的BT客户端μTorrent

BT客户端之一 μTorrent

  μTorrent是众多BT客户端之一,在安装过程中我们可以看到,它已经支持Magnet URIs。

点击查看下一张

μTorrent下载BT资源,速度144.4KB/s

点击查看下一张

对端用户列表

  我们下载的资源来自海盗湾,所以对端资源都来自国外,如果有一天Magnet被彻底“本土化”,且用户量达到一定规模,其表现应该可以完全媲美传统的BT下载方式。看到这里相信您已经明白了,海盗湾为什么会乖乖地关掉他们的BT Traker服务器,看来这次MPAA和RIAA与海盗湾斗法虽然胜了第一回合,但接下来要如何对付DHT+PEX+Magnet Link模式,这应该是个比较让人头疼的问题。>>

Catch Me If You Can

点击查看下一张

Catch Me If You Can(猫鼠游戏)

  在《猫鼠游戏》这部电影中,警察与“盗版者”之间玩的是游击战。海盗湾的BT Tracker服务器也曾有过类似的经历——在几个国家间迁来迁去,在不同的IDC中东躲西藏,但版权组织始终对其“不离不弃”,并最终得手。事后我们在同一时间,很巧合地听到了三种声音,版权组织说,我们赢了;海盗湾说,我们不跟你玩了;广大围观群众说,BT还好好的啊,这些年那两个家伙到底在搞什么?

  放弃Tracker模式,改用Magnet,对于网友来讲几乎没有任何成本,仅需将当前BT软件升级即可,甚至连操作习惯都不会发生任何变化,因为你无需换用其它BT软件,在国内,比特精灵、比特彗星都已经开始支持Magnet。所以,您可能已经进入了BT2.0时代,只是您自己还不知道。

  “我们并不提供实体下载资源,所有资源都是网友自发上传的……”相信您经常会听到类似的辩解,这句话看似有理,从技术角度讲也没有任何漏洞,但多少感觉属于狡辩。事物在不停发展,这就造成了监管上的缺失,待监管手段日趋完善时,事物可能又一次向前发展,导致监管手段再次落伍。新的BT分享方式将传统Tracker服务器所提供的功能进行了“分解”,所有BT用户成为Tracker服务器的一份子,核心消失了,在这种情况下,版权组织又该将反盗版的大棒挥向谁呢?

  题外话:

  Internet的本质是什么?或者说,Internet的价值是什么?回答肯定是五花八门。笔者愚见,去中心化与没有“势差”的信息传递是Internet的本质。当电话出现时,人们的沟通方式发生了革命性的变化,但还是不够好,于是手机出现了,依然不够好,于是论坛、QQ出现了,又不够好!于是Facebook、Twitter出现了,似乎还是不够好,那接下来会是什么?也许是类似DHT网络工作方式的一种信息传递方式——没有中心、信息传递不受阻挡。

  技术,在这里我们只讨论技术,因为技术是第一生产力,新技术不仅会提升生产力,同时,新技术也能生产出“全新的方式”,新方式带来的是人们行为的改变,而人们行为的改变,也许会改变这个世界。

(pconline)

PS:BT下载永远不会覆灭,反而会在挫折中更加强大,即将普及的大陆同样如此!顶BT!

                                                                                          

nullfxp 2.0.xx在64位mac os x snow leopard 上的编编译注意事项

环境: Snow Leopard 10.6.2 开启了64位模式。

xcode 3.2.1 g++ 4.2.1

qt 4.6.2 32位库

nullfxp 2.0.xxx

开始:
qmake -spec macx-g++ -r

注,这里要指定spec,否则会生成xcodeproj项目文件,还需要使用mac 开发IDE编译项目。

现在出现一个问题,nullfxp 中包含的libssh2.pro生成的Makefile没有指定 -arch 选项,编译出来的为64位库libssh2.a。

而使用qt的界面部分指定了-arch i386(因为qt库是32位的),最后链接的时候出错:

libssh2.a: file is not of required architecture

那么需要手动修改下libssh.pro中的Makefile, 指定-arch选项:
CFLAGS = -pipe -O2 -g -fPIC -arch i386 -Wall -W $(DEFINES)
CXXFLAGS = -pipe -O2 -g -fPIC -arch i386 -Wall -W $(DEFINES)

这样可以链接了。

还有一个问题,最后编译的时候,出现链接不到zlib库的问题:
alog.o obj/moc_taskqueuemodel.o obj/moc_taskqueueview.o obj/qrc_nullfxp.o -F/Library/Frameworks -L/Library/Frameworks libssh2/src/libssh2.a -lssl -lcrypto -framework QtSql -framework QtGui -framework QtNetwork -framework QtCore
Undefined symbols:
"_inflateEnd", referenced from:
_comp_method_zlib_dtor in libssh2.a(comp.o)
"_deflate", referenced from:
_comp_method_zlib_comp in libssh2.a(comp.o)
_comp_method_zlib_comp in libssh2.a(comp.o)
"_deflateEnd", referenced from:
_comp_method_zlib_dtor in libssh2.a(comp.o)
"_inflateInit_", referenced from:
_comp_method_zlib_init in libssh2.a(comp.o)
"_deflateInit_", referenced from:
_comp_method_zlib_init in libssh2.a(comp.o)
"_inflate", referenced from:
_comp_method_zlib_comp in libssh2.a(comp.o)
_comp_method_zlib_comp in libssh2.a(comp.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [../bin/nullfxp.app/Contents/MacOS/nullfxp] Error 1
make: *** [sub-src-make_default-ordered] Error 2

这需要修改nullfxp的Makefile文件,加上-lz指令,使其能链接zlib库。

至此,编译就能完成。

Syndicate content