Monthly Archives: June 2018

Python自动单元测试框架PyUnit

在Python中进行单元测试需要用到自动单元测试框架PyUnit,Python2.1及其以后的版本都将PyUnit作为一个标准模块(即python的unittest模块),如果你很out,那么你需要从PyUnit网站下载源码安装后才能使用。 一、Python单元测试范例 测试最基本的原理是比较预期结果是否与实际执行结果相同,如果相同则测试成功,否则测试失败。为了更好地理解自动测试框架PyUnit,下面会以对Widget类进行测试为例说明之: #widget.py #将要被测试的类Widget class... Read More | Share it now!

[转]EB2/EB3雇主支持绿卡申请之三部曲

对于大部分留学美国读本科或硕士,并且顺利获得工作签证的同学而言,通过雇主提交EB2/EB3申请,是获得绿卡的常见方式。当然,这并不限于身在美国的申请人。即使身在海外,也可以由美国雇主提交EB2/EB3申请,通过雇主支持(sponsor)来获得绿卡。至于赴美读博的留学生,如果条件合适,则有可能不需要雇主支持,可以自己申请杰出人才(EB1A)或者国家利益豁免(NIW),本篇不作讨论。 网络上关于EB2/EB3的材料非常多,整个过程显得很复杂。对于第一次接触这个流程的同学来说,劳工证(PERM),打广告,排期等,各种专业词汇看得目眩。宋和孟律师事务所(Song... Read More | Share it now!

[转]跟我一起写 Makefile

原文:https://blog.csdn.net/haoel/article/details/2886 概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual... Read More | Share it now!

Haystack[转]业内公认难题,如何解决小文件存储

https://code.facebook.com/posts/685565858139515/needle-in-a-haystack-efficient-storage-of-billions-of-photos/ http://www.sohu.com/a/112191770_222486 作者简介 陈闯,花名“战士雷欧”,白山云科技超级攻城狮。 Linux内核、nginx模块、存储架构开发老司机,7年以上存储架构、设计及开发经验,先后就职于东软、中科曙光、新浪、美团,擅长独立进行Haystack、纠删码等各种项目研发,爱好不断降低IO、挑战冗余度底线。白山滑板车选手专业十级,会漂移,正积极备战方庄街道第6届动感滑板车运动会,家庭梦想是为爱妻赢得无硅油洗发水。 正文 背景: 当今互联网,数据呈现爆炸式增长,社交网络、移动通信、网络视频、电子商务等各种应用往往能产生亿级甚至十亿、百亿级的海量小文件。由于在元数据管理、访问性能、存储效率等方面面临巨大的挑战,海量小文件问题成为了业界公认的难题。 业界的一些知名互联网公司,也对海量小文件提出了解决方案,例如:著名的社交网站Facebook,存储了超过600亿张图片,专门推出了Haystack系统,针对海量小图片进行定制优化的存储。 白山云存储CWN-X,针对小文件问题,也推出独有的解决方案,我们称之为Haystack_plus。该系统提供高性能数据读写、数据快速恢复、定期重组合并等功能。 Facebook的Haystack简介: Facebook的Haystack对小文件的解决办法是合并小文件。将小文件数据依次追加到数据文件中,并且生成索引文件,通过索引来查找小文件在数据文件中的offset和size,对文件进行读取。 Haystack的数据文件部分: Haystack的数据文件,将每个小文件封装成一个needle,包含文件的key、size、data等数据信息。所有小文件按写入的先后顺序追加到数据文件中。 Haystack的索引文件部分: Haystack的索引文件保存每个needle的key,以及该needle在数据文件中的offset、size等信息。程序启动时会将索引加载到内存中,在内存中通过查找索引,来定位在数据文件中的偏移量和大小。 面临的问题: Facebook的Haystack特点是将文件的完整key都加载到内存中,进行文件定位。机器内存足够大的情况下,Facebook完整的8字节key可以全部加载到内存中。 但是现实环境下有两个主要问题: 1.存储服务器内存不会太大,一般为32G至64G; 2.小文件对应的key大小难控制,一般选择文件内容的MD5或SHA1作为该文件的key。 场景举例: 一台存储服务器有12块4T磁盘,内存为32GB左右。 服务器上现需存储大小约为4K的头像、缩略图等文件,约为10亿个。 文件的key使用MD5,加上offset和size字段,平均一个小文件对应的索引信息占用28字节。 在这种情况下,索引占用内存接近30GB,... Read More | Share it now!