<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>电驴软件开发 :: easyMule</title>
<atom:link href="http://www.verycd.com/groups/eMuleDev/feed" rel="self" type="application/rss+xml" />
<link>http://www.verycd.com/groups/eMuleDev</link>
<description><![CDATA[致力于为互联网提供免费开源的快速下载和分享软件,并希望能吸引更多的开源爱好者这以及P2P网络技术爱好者...  这里主要讨论技术问题,如果你要提交版本使用反馈，请转到 电驴使用反馈组]]></description>
<pubDate>Sun, 03 Jan 2010 00:53:05 +0000</pubDate>
<language>zh-cn</language>
<lastBuildDate>Sun, 03 Jan 2010 00:53:05 +0000</lastBuildDate>
<generator>VeryCD.com</generator>
<webMaster>webmaster@verycd.com (webmaster)</webMaster>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<ttl>4</ttl>

	<item>
		<title><![CDATA[为什么还在用MFC？]]></title>
		<link>http://www.verycd.com/groups/eMuleDev/676669.topic</link>
		<description><![CDATA[        既然是新版本，为什么还是离不开MFC？为什么不用WTL呢？        ]]></description>
		<pubDate>Thu, 21 May 2009 01:13:09 +0000</pubDate>
		<dc:creator>lbblscy</dc:creator>
		<guid isPermaLink="false">topic-676669@verycd.groups</guid>
	</item>
	<item>
		<title><![CDATA[easymule 代码分析]]></title>
		<link>http://www.verycd.com/groups/eMuleDev/672742.topic</link>
		<description><![CDATA[        开始分析easymule的代码，写个文档，大家分享。才看了个大概，有多少写多少，以后更新。<br /><br /><br /><br />1  概况<br /><br />emule使用vs2005或vs2008开发，使用vc++/mfc。<br />主要有个解决方案组织：easyMule和easyMule_libs。<br />easyMule_libs包括十个项目，主要是第三方库。<br /><br />    * cryptlib 加密<br />    * CxImage 图像<br />    * id3lib    id3lib is a software development library for reading, writing, and manipulating ID3v1 and ID3v2 tags.<br />    * libpng    png图像<br />    * resizableLib    mfc自动缩放对话框，自动调节内部控件大小与位置<br />    * sqlite3    数据库<br />    * tinyxml   c++xml解析器<br />    * zh_CN   简体中文<br />    * zh_TW   繁体中文<br />    * zlib   压缩<br /><br />easyMule是主要的代码，包含一个项目。源码位于src目录中。其代码如下：<br /><br />    * header files    头文件<br />    * hotkey    热键<br />    * kademlia    kad网络<br />    * resource files    资源文件<br />    * ui layer    界面层<br />    * work layer    工作层<br /><br />代码分析中数据为重，流程次之，功能再次之。<br /><br /><br />2  基本数据<br /><br />    *      代表一个实例    <br />          o     代表多个实例<br /><br /><br />    * CemuleApp：    继承于CWinApp，主应用程序类。由mfc框架创建。<br />    * CemuleDlg dlg：        主对话框，CemuleApp::InitInstance()中创建。<br />    * CPreferences thePrefs，CStatistics theStats：    前者掌握着程序的大部分配置数据，后者则进行各种统计。thePrefs和theStats是这两个类的唯一的实例。它们的特点都是有很多的成员变量，而且还是静态的，这种方式可以保 证它们的唯一性，而且把这些变量统一到一个类管理。但是实际上并不需要了解每个变量的含义。<br />    * knownfiles = new CKnownFileList()：  它内部维护了一个已知的文件的列表和取消了的文件列表。一个文件对应一个hash值。knownfiles 所需要做的工作就是能够根据一些信息查找到对应的CKnownFile实例。<br />          o CKnownFile  一个文件对应一个CKnownFile实例。具体存取文件信息，操作文件。功能多参见文档1。<br /><br />    * CSearchList：    是emule中的搜索列表，CSearchFile是这个列表中的元素。<br />          o CSearchFile：    是它保存了某个文件和搜索相关的信息。在这个类的定义中嵌套定义了两个简单的结构SServer和SClient，表示了该搜索文件的可能来源，服务器或者其它客户端。<br />    * CServerList：    是emule中负责管理服务器列表的类。在CServerList中，每个服务器的信息是一个CServer实例。<br />          o CServer：    结构比较简单，保留服务器的各种信息。<br />    * CServerConnect：    客户端和服务器之间的所有通信，CServerConnect内部有一列表，可以保存若干CServerSocket类型的指针。<br /><br />    * CListenSocket负责监听某个TCP端口。它只是内部有一个CClientReqSocket类的列表。而CClientReqSocket能够自动完成emule的packet识别工作。<br />          o CClientReqSocket类和CUpDownClient类之间存在着对应关系。它们都表示了另外一个客户端的一些信息，但是CClientReqSocket类主要侧重在网络数据方面，即负责两边的互相通信，而CUpDownClient类负责的是从逻辑上对网络另一边的一个客户端进行表达。<br /><br />    * CDownloadQueue是下载队列类。这个队列中的项目是CPartFile指针。<br />          o CPartFile类是emule中用来表示一个下载任务的类。CPartFile类中Gap_Struct来表示文件的下载情况。CPartFile内部维护一个CUpDownClient的列表，如果知道了该文件的一个新的来源信息，就会创建一个对应的CUpDownClient。<br /><br />    * CUploadQueue是上传队列类。这个列表类中只有以CUpDownClient为元素的列表。上传队列类列表中有两个列表，上传列表和排队列表。<br />          o CUpDownClient 类的作用是从逻辑上表示一个其它的客户端的各种信息，它是emule中代码量最大的类。我们注意到，定义它的头文件是UpDownClient.h，但是却没有对应的CUpDownClient.cpp，而它的实现，都分散到 BaseClient.cpp，DownloadClient.cpp，PeerCacheClient.cpp，UploadClient.cpp和 URLClient.cpp中。<br />    * CGlobalVariable 全局变量类。包含了很多全局的重要数据、类实例的引用。<br /><br /><br />3  流程<br /><br />参考文档：<br />1 eMule源代码解析     好文章，转来转去不知源头 <a href="http://hi.baidu.com/elseif/blog/item/3b5faac40b19c1a88226acc1.html" rel="nofollow" target="_blank">http://hi.baidu.com/elseif/blog/item/3b5fa...cc1.html</a><br />2 几篇emule文章    <!--deny_url_v2 W3VybD1odHRwOi8vaHVzdGxnLmJva2VlLmNvbS9jYXRhbG9nXzcuaHRtbF1odHRwOi8vaHVzdGxnLmJva2VlLmNvbS9jYXRhbG9nXzcuaHRtbFsvdXJsXQ==--><u style="color:#666;font-weight:bold;">http://hustlg.bokee.com/catalog_7.html</u> <span style="font-size:10px;color:#999">(http://hustlg.bokee.com/catalog_7.html)</span><!--End deny_url_v2-->        ]]></description>
		<pubDate>Thu, 14 May 2009 15:11:11 +0000</pubDate>
		<dc:creator>herberthb</dc:creator>
		<guid isPermaLink="false">topic-672742@verycd.groups</guid>
	</item>
	<item>
		<title><![CDATA[为什么不在统计信息页面就不统计]]></title>
		<link>http://www.verycd.com/groups/eMuleDev/657577.topic</link>
		<description><![CDATA[        为什么不在统计信息页面就不统计<br />谁能告诉为什么要这么设计呢?-?        ]]></description>
		<pubDate>Mon, 20 Apr 2009 08:41:49 +0000</pubDate>
		<dc:creator>icedream_linxi</dc:creator>
		<guid isPermaLink="false">topic-657577@verycd.groups</guid>
	</item>
	<item>
		<title><![CDATA[想从easymule换回VC版的emule,未下载完的文件应如何移过去？]]></title>
		<link>http://www.verycd.com/groups/eMuleDev/505295.topic</link>
		<description><![CDATA[        想从easymule换回VC版的emule,未下载完的文件应如何移过去？<br />最近感觉easymule速度比较慢，而且设置上太少，还是原来VC的emule用起来习惯，但是现在easymule的下载队列里仍然有未完成的文件，看了一下下载目录里每个文件有两个相关的下载文件，好象和原来的emule方式不同，请问这样如何转移easymule里未下载完成的文件？只需要简单地把下载目录里的文件拷贝到新安装的VCemule的income目录下就行了吗？<br />谢谢！        ]]></description>
		<pubDate>Sun, 04 Jan 2009 14:23:31 +0000</pubDate>
		<dc:creator>xworld</dc:creator>
		<guid isPermaLink="false">topic-505295@verycd.groups</guid>
	</item>
	<item>
		<title><![CDATA[求助 电驴中进度条的进度条颜色有什么意义]]></title>
		<link>http://www.verycd.com/groups/eMuleDev/316949.topic</link>
		<description><![CDATA[        求助 电驴中进度条的进度条颜色有什么意义        ]]></description>
		<pubDate>Thu, 07 Aug 2008 12:10:21 +0000</pubDate>
		<dc:creator>meixiang1989</dc:creator>
		<guid isPermaLink="false">topic-316949@verycd.groups</guid>
	</item>
	<item>
		<title><![CDATA[[公告]easyMule开源社区开通了！]]></title>
		<link>http://www.verycd.com/groups/eMuleDev/215536.topic</link>
		<description><![CDATA[        为了让大家更方便的研究easyMule，并使easyMule越变越好，我们启用了一系列的交流机制，以增进开发者之间的信息共享。<br /><br />现在，您可以：<br />. 在<a href="http://www.VeryCD.com/groups/eMuleDev" rel="nofollow" target="_blank">VeryCD的Groups</a>里进行讨论。<br />. 加入QQ群104839，以获得即的沟通。<br /><br />. 通过<a href="http://www.emule.org.cn/download/" rel="nofollow" target="_blank">emule.org.cn</a>获取最新Release版的代码（页面最下方）<br />. 或通过<a href="http://code.google.com/p/easymule/source" rel="nofollow" target="_blank"> google code上的svn </a>获取最新代码。（之后即使在不发布版本的时候，也会不定期的把我们最新的修改即时更新上去）<br />. 在<a href="http://www.VeryCD.com/groups/eMuleDev" rel="nofollow" target="_blank"> VeryCD的Groups</a>里提交你的修改patch。（我们会把一些不错的修改合并到主分支里，注名您的名字一起发布，让所有的easyMule用户都可以享受到你的修改）<br />. 在<a href="http://www.VeryCD.com/groups/eMuleDev" rel="nofollow" target="_blank"> VeryCD的Groups</a>里提交程序的bug<br /><br />. 在<a href="http://www.VeryCD.com/groups/eMuleDev" rel="nofollow" target="_blank"> VeryCD的Groups</a>和<a href="http://code.google.com/p/easymule/w/list" rel="nofollow" target="_blank"> google code的wiki </a>里找到相关的文档。（目前我们提供的文档还不够完善，之后如果我们有新的文档会即使更新上来，以供大家参考。大家也可以提出自己对文档的需求，或是提交自己写的文档供大家分享）<br /><br />p.s. <a href="http://code.google.com/p/easymule/" rel="nofollow" target="_blank"> 这里 </a>是我们在google code上申请的开源空间，欢迎大家访问及提出意见。        ]]></description>
		<pubDate>Mon, 10 Dec 2007 08:00:19 +0000</pubDate>
		<dc:creator>fengwen</dc:creator>
		<guid isPermaLink="false">topic-215536@verycd.groups</guid>
	</item>
	<item>
		<title><![CDATA[[讨论]怎样帮助大家更好的研究eMule]]></title>
		<link>http://www.verycd.com/groups/eMuleDev/213758.topic</link>
		<description><![CDATA[eMule是一个很好的开源项目，一些网友很有兴趣研究和学习它。<br />但是很可惜，由于各方面的原因，大部分网友很快的遇到一些障碍而兴趣也很快的消散了。<br /><br />其实eMule不是一个很高深的项目，大家也都有很好的编程基础，<br />可能只是缺少一个很好的环境和推动者。<br />现在，我们希望能在这方面做出一些贡献，建设一个好的开源社区，以及提供一些帮助，便于大家学习，交流和进步。但对此我们是新手，在国内也没有找到可以参考的案例。<br /><br />所以希望大家来谈谈怎么来建设一个好的开源社区。也希望这个社区以后能成为中国最好的开源社区，为中国的软件技术和开源事业做出一些贡献。<br /><br />希望大家各抒己见，积极参与啊。：）<br /><br />（如果目前没有什么想法的，也希望能告诉我们，你在研究eMule的过程中遇到哪些障碍，以便我们总结出来，为后来者铺平道路，或是想研究或是修改哪一部分，希望得到哪些信息。等等等等。）]]></description>
		<pubDate>Tue, 04 Dec 2007 07:55:33 +0000</pubDate>
		<dc:creator>fengwen</dc:creator>
		<guid isPermaLink="false">topic-213758@verycd.groups</guid>
	</item>
	<item>
		<title><![CDATA[easyMule 开发心得 --- 电驴(easyMule)策划过程]]></title>
		<link>http://www.verycd.com/groups/eMuleDev/207159.topic</link>
		<description><![CDATA[        <b>一、引言</b><br /><br />  easyMule 终于顺利发布了,用户从不同角度给了我们很多意见和bug反馈，包括用户体验，新功能使用建议等，先向所有参与测试的驴友们表示感谢；产品虽然发布了，但是还有很多地方需要改进，我们也会继续努力。 <br />  <br />  正如大家所理解的，<a href="http://www.VeryCD.com/groups/eMuleBeta/206184.topic" rel="nofollow" target="_blank">easyMule</a> 其实主要首先是要体现这个&quot;easy&quot;,我们希望更多的用户能更加简单方便的掌握骑驴技巧，找到“上了驴就不想下来”的骑驴感受，让更多的网友们加入到分享队伍中来，体验&quot;分享互联网&quot;的激情和冲动;而且我们最重要的要保持一点，不破坏网络平衡性，不去为了这个产品的的快速资源获取而去破坏其它emule mod的利益。另外，开发组成员也达成一直共识，我们将一直以开源的自由软件精神来为用户提供最好的软件，同时我们是希望能吸引更多的开发者来参与，大家一起把电驴做得更好！<br />  <br /><b>二、策划过程  <br /></b><br />  在整体策划过程中，我们一直以良好的用户体验和给用户带来的价值为标准，根据用户之前使用emule中的不便，产品策划经过多次的探讨，大家在很多地方有的意见也不统一：<br />  <br />   项目产品用什么名称好？<br />   怎样才能简化用户的流程操作？<br />   是否该让用户看到服务器列表?<br />   Kad信息显示给用户的意义在哪里？<br />   如何能让用户更方便的理解和管理下载任务？<br />   如何方便快速的加强电驴&quot;分享&quot;特性？<br />   边下边看这个功能到底好不好？<br />   是否要任务的拖放下载？   <br />   ...<br />   <br />  想做的事情很多，用户又是千差万别，不同的用户有不同的喜好，满足所有用户的需求是<br />不可能的,但最重要的是发现用户的各种潜在的最迫切的需求，并结合互联网的趋势，并且创造一些新的需求，以适应将来的发展。<br />   <br />   电驴开发组现在收集用户反馈有很多地方：<br />一个是我们的社区有<a href="http://www.VeryCD.com/groups/eMuleBeta" rel="nofollow" target="_blank">emule beta反馈</a>和用户形成的直接互动，每一个版本的发布改进在emulebeta group上都会和用户形成直接的互动，热心的驴友甚至会直接发mail来告诉我们他们的功能改进想法；<br />一个是我们现在的版本卸载理由，每一个用户卸载的时候，用户可选择是否发送卸载理由给我们，最后我们从这些收集的反馈中以及自己的骑驴过程体验，总结下来最重要的就是以下几点:<br />   <br />  1) 非热门资源下载速度偏低<br />  2) 操作过于复杂<br />  3) 性能稳定性需提高<br />  <br />  开发组第一阶段优先考虑解决的用户反馈的速度慢问题，因为中国的特殊国情，大部分的<br />的内网用户下载速度更加的慢. 所以开发组大概用了两个月左右的时间推出了了支持Low2Low的正式测试版，并且采用了多种策略来实现，直至最终的Low2Low稳定版发行。<br /><br />  ”操作的复杂”可能老驴已经驾轻就熟了，已经不觉得，但是对于新手来说这还是一个比较大的问题，一开始我们是想做一个兼容方案，一键切换，老的用户还是可以用老的，新用户用新的，最后发现这种兼容在将来做新功能时候不太好做。后来我们仔细分析了操作复杂的原因：<br />  1) 初级用户很难理解服务器,Kad等概念，包括“传输”，这些都是比较偏向开发层次的术语，但对于高级使用来说，他们又挺喜欢要换自己的服务器，喜欢观察Kad网络的连接搜索情况。国内的的大部分下载工具，大部分都是有一个明确的下载任务管理，这培养了一大部分用户习惯，使得这些用户来骑驴的时候不知道已下载任务在哪里，下载中的任务该怎么管理。<br />  2) 选项过于复杂，初级用户一点开选项，看到太多的内容，已经看乱了，难以想清楚去哪里才能找到一个他想要的设置。而其实大部分的选项用户是不需要去设置的，是那些对网络理解比较深入的高级用户才会想去设置的，对于一般用户来说，有些基本的设置就足以满足他的需求，并且可以让驴跑的很好。<br />  <br />  分析完了之后，我们来看一个基本用户的骑驴流程：<br />  <br />  <!--coloro:red--><span style="color:red"><!--/coloro-->搜索到想要的资源----&gt;|<br />　　　　　　　　　　|----》下载资源 -》分享资源 -》评论资源<br />  导航分类发现资源----&gt;|<!--colorc--></span><!--/colorc--><br />  <br />  这样一个基本的主要框架就出来了：<b>&quot;资源&quot; - &quot;下载&quot; - &quot;分享&quot; 【 &quot;高级&quot; - &quot;选项&quot; 】  </b><br /><br />  <b>&quot;资源&quot;</b>页面中我们主要完成：<br />    1) 资源的分类导航,方便初初级用户，不知道怎么用？马上就点！<br />    2) 资源的搜索，资源的搜索包括“VeryCD站内搜索”和“电驴网络搜索”，<br />    VeryCD作为互联网最大的资源聚合站点，拥有非常丰富的资源，用户只需要知道关键词，按下F3，输入关键词，马上就搜！排在最前面的就是你最想要的资源。<br />    电驴网络搜索这个我们还是保留，因为毕竟有些资源在VeryCD站内并没有发布或收集，但是却在整个电驴分享网络中，这种分布式资源是真正的分布在世界各地的机器上，任何一个机器上都有可能有你想要的资源。    <br />  <br />  <b>&quot;下载&quot;</b>页面中完成下载任务的管理功能，清晰体现下载中任务的管理，下载完成任务的管理，下载完后的任务可直接可打开或定位文件夹查找。<br />  <br /> <b> &quot;分享&quot;</b>页面中主要完成分享文件的管理，并且可根据文件来查看对应分享上传用户；甚至考虑既可分享目录操作，也可分享你其它下载目录下单个文件操作（最终由于开发任务进度，我们考虑在将来完成这个功能）；<br /><br /><b>三、easyMule 功能特色具体介绍</b><br /><br /><b>全新界面，使用更简便更直观</b><br />  1)完全简化主界面UI，采用页签Tab方式，其实也是兼容老的emule操作习惯，用户明确知道有哪些功能页面。我们的原则是“简单流程不花哨”即可。<br />  2)服务器/KAD/统计信息，单独分“高级”功能组<br />  3)精简“选项”设置，兼容初级高级用户，默认只显示基本设置，需要调整设置只需要切换“更多”。<br />  4)搜索用特殊搜索按钮实现，方便直观，凸显互联网“搜索”的重要性，并且兼容下载任务的添加，既可输入关键词搜索，也可输入下载地址建立下载任务。<br />  5)提供新建任务对话框，可以用户直接输入下载地址，选择下载目录，并且可以批量下载。     <br /><br /><b>内网穿透，下载速度明显提升</b><br />  这个Low2Low功能全面保留并且稳定发布，全面提升内网用户的下载速度。<br />  <br /><b>边下边看，精彩内容在线播放</b><br />  满足用户看热门美剧/韩剧的需求，全局一次最多只能有一个任务&quot;边下边看&quot;，内部对整个文件在全局网络的平衡性和文件调度平衡性做好调度优化。<br />  <br /><b>磁盘缓冲，最大限度保护硬盘</b><br />  emule的内部代码的磁盘缓冲控制非常弱小，对于爱惜硬盘的一些驴友来说，最大1.5M的设置实在太小了；easyMule使用了全新的内存缓冲实现，可设置范围扩大了很多（512K-16M），满足部分内存很大而且需要保护硬盘的用户<br />  <br /><b>全能下载，多种协议全面互通</b><br />  除了支持ed2k协议下载外，也可支持http/ftp协议下载，http/ftp下载完成后，算完hash值，之后该下载文件就可以加入到分享资源队列中，成为ed2k网络中可分享的资源，提升其它电驴用户的下载速度。<br />  <br /><b>快速搜索，一键直达搜索结果</b><br />  按F3,输入关键词，即可快速在VeryCD站内查找各类资源。<br />  按shift+F3,切换到电驴网络搜索（既可以通过电驴服务器搜索，也可以通过Kad网络搜索）<br />  <br /><b>任意下载，下载目录任意指定</b><br />  以前emule下载必须先下载到一个指定临时目录，下载完成了后还需要移动文件到&quot;Incoming&quot;(已下载)目录，当有时候用户设置跨磁盘分区设置的时候，移动文件带来很多性能消耗，这一点一直有用户抱怨为什么不能采取其它下载工具的做法；这次改动后，easyMule下载目录可以在新建任务的时候任意指定，这样下载完成后再也不需要移动文件了。<br />  <br /><b>持续分享，我为人人人人为我</b><br />  虽然用户文件下载时候可以任意指定下载目录，但下载完后easyMule可保持该下载任务处于分享状态，而不是原来的emule的做法，只把emule\incoming下第一层目录下的文件分享出去。        ]]></description>
		<pubDate>Mon, 12 Nov 2007 09:45:40 +0000</pubDate>
		<dc:creator>godLaugh</dc:creator>
		<guid isPermaLink="false">topic-207159@verycd.groups</guid>
	</item>

</channel>
</rss>