Friday, August 12, 2011

理工科phd必备高效工具

updated: 2013/10/12
理工科的phd们多不容易,除了要搞项目,还得攒论文。因此,高效率的工作模式无疑十分重要。
以下筛选了个人在使用过程中感觉能明显提高效率的工具,遵循少而精的原则,多数支持通用平台(win, linux, mac, etc.),希望后入门的phd们可以藉此做更高效的科研。部分工具对于研发人员也很有用。
数学计算
笔记整理
论文管理
参考文献
书籍管理
文本编辑
编程实验
注重开发效率:Python等脚本语言
注重运行效率:C, C++Java
注: IDE,还是首推eclipse
版本管理
集中式:SVN
分布式:GitHg
注:最大的git服务托管github
数据同步
云诺坚果云(大陆地区)
注:自己搭建,可以用ifolder
图表相关
数据分析,GNUPlot/QtiPlot(带图形界面)
python的可以看看matplotlib
数据可视化
比较全面的可视化:Gephi
图形自动生成:Nodebox
论文写作
LaTeX
注:配套平台包括TexMaker(通用)或Winedt(仅限win)。
报告演讲
latex beamer
pptkeynote相关软件

附:一份不太长的关于做高质量学术报告的指南
欢迎建议,持续更新ing...


Wednesday, August 10, 2011

网络流管理与交通流管理

曾经有幸听过一个交通流管理方向的专家做过一个研究报告。提到他们的研究成果被美国政府采用后,提高了接近十个百分点的性能(具体啥性能指标已经忘记了)。那时我刚接触网络流量管理这个课题不久,还只有个大概的认识。但即使如此,那个讲座还是引发了我不少的思考。

网络流管理跟交通流管理,貌似风马牛不相及的两个课题,其实有着惊人的内在关联。

从目的上看,两者都是为了提高系统的某种性能,包括容量、鲁棒性等,同时要尽量减少突发情况带来的损失,尤其典型的场景是拥塞避免。对网络来说,拥塞意味着大量的数据包挤占了有限的带宽,造成数据丢失(目的不可达);对于交通来说,则是为了减少堵车发生,也是为了保障可达性。但是两者在可控手段上和物理过程上的差异,造成了在实际应用中的天壤之别。

网络上的流量管理,特别是现代的互联网,已经被研究了二十多年,但一直到今天都没有有效的手段去达到让人满意的控制。而交通流管理,已经有太多行之有效的思路和手段。我曾总结说,现在的交通网在讨论解决的类似问题,至少十年前互联网的专家们就已经研究过了(所以搞交通网络的专家们翻翻互联网上的相关问题的研究论文,未必不是一个好思路)。

抽象的看,一个系统,要避免拥塞,要么从提高容量角度入手,要么从降低压力峰值入手。提高容量,对于交通网络来说意味着增加更多的车道,对通信网络则意味着升级设备。无论对交通网络还是通信网络,这都不是能即时有效的手段。因此,两者都想到了如何去降低压力峰值,或者说如何做好调度优化。恰恰在这一点上,交通网络上的控制显示出了巨大的可操作性。

相比较互联网中以接近光速穿行的信号来说,交通网络中的承载单元——典型的如汽车,不仅速度慢,而且随时随地可以停住。将载荷停住对通信网来说则意味着存储。无论是技术的限制还是机制的设计约束,随时随地的高性能存储对于现代的通信网络来说都是“不可能的任务”。因此在流量调度上通信网络的要求要高的多,也难得多。同时也因为互联网是多个自治系统的自由连接,在交换节点上大规模的部署新的调度技术更是难上加难。

那么,通信网上的流量管理就没有一点优势了么?

当然也不是。相比较交通网来说,通信网上的流量管理也存在显著的优势。一是对载荷的可控性。载荷在经过每个节点时都存在被任意处理的潜能;二是允许丢弃重传;三是可控。每个载荷都严格遵守“交通规则”。也正是从这几点出发,以MPLS为代表的相关技术成为了ISP网络中事实上的标准。

写到这里,突然想到除了交通网和通信网之外的另一张大网——电网,也存在类似的问题。电网的调度跟互联网类似,也不存在任意灵活的存储(目前的电力存储,还有太多问题,最显著的就是容量和吞吐率,其次是效率)。另一方面电网又没有通信网络可以任意丢弃重传的灵活性。因此,电力网络的调度将更加困难,也是下一步马上面临的更大的挑战。美国前几年的电力网故障造成大面积停电,中国西部大开发早了很多发电基地,却无法输送出来。这都是一些经典的例子。当然,凡事有利有弊,电网调度也存在它有优势的一点。因为电力是能源,其应用十分广泛,既然现在输送不出来,为何不能本地消化掉?例如东部的生产基地如果直接建造到西部去,即消耗了西部的富余电力,又降低了东部的用电压力,可谓一举两得。