中国大陆开源镜像站汇总

1.企业贡献:

搜狐开源镜像站:http://mirrors.sohu.com/

网易开源镜像站:http://mirrors.163.com/

2.大学教学:

北京理工大学:
http://mirror.bit.edu.cn (IPv4 only)

http://mirror.bit6.edu.cn (IPv6 only)

北京交通大学:
http://mirror.bjtu.edu.cn (IPv4 only)
http://mirror6.bjtu.edu.cn (IPv6 only)
http://debian.bjtu.edu.cn (IPv4+IPv6)

兰州大学:http://mirror.lzu.edu.cn/

厦门大学:http://mirrors.xmu.edu.cn/

上海交通大学:
http://ftp.sjtu.edu.cn/ (IPv4 only)
http://ftp6.sjtu.edu.cn (IPv6 only)

清华大学:

http://mirrors.tuna.tsinghua.edu.cn/ (IPv4+IPv6)
http://mirrors.6.tuna.tsinghua.edu.cn/ (IPv6 only)
http://mirrors.4.tuna.tsinghua.edu.cn/更多...

ArduSat:利用开源硬件制造的微型卫星

拥有自己的太空卫星,这是一件多么酷的事!

位于美国加州的 NanoSatisfi 在 Kickstarter 为自己的开源卫星项目 ArduSat 筹资。他们打算利用开源硬件 Arduino,制作一个体积娇小,而且拥有基本探测功能的微型卫星。

ArduSat 的体积还不如一个鞋盒大,它的长宽高都只有 10 厘米;重量非常轻盈,在 1 千克左右。而小小的身躯内,却有 25 种传感器,包括 3 个摄像头、一个盖革计数器、分光仪、磁力计、GPS、二氧化碳探测器等等。

ArduSat 的结构可以看以下视频。对比一般的卫星来说,它的结构不算复杂:一个十字偶极天线、几片太阳能电板、一个容纳元件的 CubeSat 结构、装载着 Arduino 和传感器的电路板、UHF 射频收发器、飞行控制计算机。

由于 Arduino 是开源硬件,因此 ArduSat 的优点之一,是拥有强大的自定义性,你可以为自己的卫星编写程序,让 ArduSat 飞上太空之后,按照自己的指令去行动。你不必为自己的代码出错而担心,代码都先由开发 ArduSat 的 NanoSatisfi 进行测试,找出其中是否有 Bug。

当 ArduSat … 更多...

Linux 动态库剖析

转自:IBM developerWorks 中国

进程与 API

M. Tim Jones, 顾问工程师, Emulex Corp.

 

简介: 动态链接的共享库是 GNU/Linux® 的一个重要方面。该种库允许可执行文件在运行时动态访问外部函数,从而(通过在需要时才会引入函数的方式)减少它们对内存的总体占用。本文研究了创建和使用静态库的过程,详细描述了开发它们的各种工具,并揭秘了这些库的工作方式。

库用于将相似函数打包在一个单元中。然后这些单元就可为其他开发人员所共享,并因此有了模块化编程这种说法 — 即,从模块中构建程序。Linux 支持两种类型的库,每一种库都有各自的优缺点。静态库包含在编译时静态绑定到一个程序的函数。动态库则不同,它是在加载应用程序时被加载的,而且它与应用程序是在运行时绑定的。图 1 展示了 Linux 中的库的层次结构。
图 1. Linux 中的库层次结构
Linux 中的库层次结构。

developerWorks 上 Tim 所著的其他剖析…… 系列文章

更多...

看看有没有掌握C【转载】

以下是某前辈说的话,很久很久以前就看了,一直在机子里保存着。当是勉励自己。

———————————————————————————————————————————

我所说的掌握,是指已经视C、C++、Java、PHP等类似语法或者pascal这类完全不同语法的编程语言及相关软件为干活的工具,能够根据实际的需求,随心所欲的选择语言、工具、平台,进行独立或者协同开发,或者领导开发。

之所以要特别提到C,并不是因为C更优秀之类的理由。一个真正的程序员,是肯定了解CPU,了解OS的,ASM和C都是理当掌握的基础。学习是个枯燥的过程,对于不同基础,不同条件的人,花费的时间可能会有很大的差别。就我的感觉,没有三年的刻苦学习,就不会有牢固的基础。这一阶段,你不会有什么实质的成果,没有办法把知识拿出来向他人炫耀。如果你认为自己轻易就很“厉害”了,那只是说明了你的浮浅和无知。

之后,在实战中体会到了程序设计的艺术,丝毫不会被语法、库函数、算法、软件结构、设计模式等限制住之后,这时就应该开始考虑广度了。光被动的积累经验是不够的,主动的结合早先的理论知识来指导自己,会得到另一次巨大进步。这个时期,个人的意志,生活和工作环境都是至关重要的。当然最关键的还是主观能动性。经历了多次的成功和失败之后,你要么成为了高手,要么成为所谓老手(就此停止,从此走下坡路)。软件开发是一个不间断的学习过程,保持年轻的心态很重要,不能满足于自己的成功经验。

不要担心记忆力的下降,也不要担心不能面面俱到。那些能把任何语法,任何算法都牢记于心的,一般都是初学者。作为“掌握”了C的人,是不需要记住每一样东西的,你的目标肯定不是成为生物版的man手册。更实质的是驾驭语言工具,分析和解决实际问题的能力。如果你思考时会几乎忘了开发工具(当然,前提是已经选好了最适合的工具),那说明,你真正掌握了C。就像一个学英语的人,某天突然发现自己早已在用英语思考了,这样的境界,可称为掌握了。… 更多...

图像识别练习(字符验证码、车牌号、身份证号)

光学图像识别(OCR)是非常有用的技术。在验证码识别、车牌号识别、文字识别方面,基于字符的识别技术算是比较容易上手的了(相比图文识别)。

闲来看到有朋友研究验证码识别,一时手痒,野比自己动手来做做验证码识别。当然,肯定只是简单的验证码。

名为验证码,实际上并不限于,还可以识别车牌号、身份证号、门牌号等各种乱七八糟的内容。

识别的流程很明确:

1、预处理图像

2、做y轴的投影

3、分析直方图分区

4、根据分区拆分图像为多个字符(很关键,拆得越好,后续识别率越高)

5、丢弃空白或无效字符

6、自动旋转字符(如果有倾斜),识别字符

如果样本中个图像有粘连,则可能造成分区不准确。这种情况下,需要进行旋转,但是怎样自动旋转,是个难题。

目前已可拆分出字符,下一步准备研究如何识别。(如果单个字符比较规范,可以利用现成的OCR控件)

这里有一些例子。

普通的验证码(毫无难度)

带干扰的验证码

较高强度干扰(目前使用的分区算法不能解决,需要更好的算法,比如动态阈值)

CSDN的验证码(毫无压力)

身份证号码

车牌号

补充个QQ验证码,用单一阈值方法,识别很困难,需要结合字符宽度进行判断

这是单一阈值分区的结果(没有限制宽度),可以看到效果很差。

继续研究如何优化分区算法,如何识别单个文字(可以考虑多重识别+样本训练)。

 

附上太平洋网站验证码。

有些粘连,但是可以通过固定字符宽度解决(宽度基本一致)

参考这张图(获得整个宽度,然后除以字符数得到每个宽度,分别提取)

二值化我用的Otsu算法,参考文献:”A threshold selection method from gray-level histograms”, IEEE Trans. Systems, Man and Cybernetics 9(1), … 更多...

Visual Basic 6 何以长盛不衰?

新闻来源:MSDN Magazine

微软刚刚将其 Windows 系统对 Visual Basic 6 程序的完全兼容支持延长到了 Windows 8 的整个产品周期. Visual Basic 6 最早发售于 1998 年, 所以现在来看 VB6 程序将至少被支持 24 年. 相比之下 .NET Framework 1.1 (2002 年发行) 则仅仅被支持了 7 年, 到了 Windows 7 (2009) 便被微软抛弃了. 我的一个学生曾经开玩笑说过 Visual Basic … 更多...

创意:你从未见过的开播仪式

创意是叛逆,是打破常规,是具有新颖性和创造性的想法。创业和创意一字之差,创业也需要创意,QQ,人人网,新浪微博等网络形式的诞生都不叫创意,因为它们都是从 ICQ,Facebook,Twitter 等模仿过来的,也没见有二次创新。创意强调的就是新,是你从未见而过的。下面这两个视频绝对可以称为有创意。

一、你从未见过的开播仪式

TNT 公司在比利时的高清电视频道的开播仪式是你不可能想象到的。他们在一个普通的小镇上的一个普通的广场上放置了一个大个儿的红色的按钮。在半空中悬挂着一个指示牌,上面写着“Push to add drama (按下开戏)”,有人会来按这个按钮吗,按了之后会发生什么?

 

二、最强悍的报纸翻页器

更多...

裸设备

在计算机,特别是在类Unix操作系统中,裸设备是一种特殊类型的块设备文件,允许以直接访问硬盘的方式访问一个存储设备,而不经过操作系统的高速缓存和缓冲器(尽管可能仍旧使用硬件高速缓存)。应用程序如数据库管理系统可以直接使用裸设备,启用它们来管理数据的缓存方式,而不将这些任务推给操作系统。

FreeBSD系统中,所有的块设备实际都是裸设备。为了简化缓存的管理以及增强可测量性和性能,FreeBSD 4.0中停止了对非裸设备的支持。

在Linux中,裸设备被反对并列入了移除计划,因为可以通过使用O_DIRECT标志来替代。[1]为了代替访问裸设备文件,应用程序可以(且必须!)通过启用O_DIRECT标志来访问一个文件,且高速缓存将被禁用。由于现在裸设备仍然有一定用户群且仍有一些应用程序没有对O_DIRECT的支持,有关在Linux内核中将裸设备移除仍然是一个有争议的话题。裸设备是一种设备文件系统(major number 162)。Linux为裸设备预留了(i.e. 0),通常情况可以在/dev/rawctl找到它。有人主张,裸设备技术可以将一个裸设备绑定至一个已有的块设备[2]。“已有的块设备”可能是Linux所能支持的所有类型接口的磁盘或CDROM/DVD。(如,IDE/ATA或SCSI)

 

转自维基百科… 更多...

美国奥巴马总统下令,所有政府单位要开放 API 出来

笔者观察到即使是先进者美国,也在奥巴马的支持下,通过了类kickstarter群众募资平台的法源基础。进一步给予已经蓬勃发展的第三方支付,线上创新金流法律上支持的力道。这预计也将创造数以百万计的工作机会,鼓励更多的创新。

奥巴马发备忘录,要政府开放API

这两天,又看到奥巴马的新动作–他直接下了一个备忘录给联邦政府各级单位,限期要各单位在十二个月内完成美国政府资讯长发布的二十一世纪数字政府战略的规范,三个月内要看到每个单位放上网页,公开说明实行进度。

这个二十一世纪数位政府战略规定了什么呢?笔者简要如下:

1. 政府应将开放资料,内容与Web API为基本任务。尤其是既有高价值的资料,应尽速透过Web API开放。

2. 建立共用平台,节省政府支出。(例如未整合采购与开发的各单位做法)。

3. 以民众为导向,用现代技术及行动科技提供更好的数位服务。

4. 用新科技提升安全与隐私。

关于为什么要这么做的整体战略思维,欧巴马在备忘录中说得很清楚:

Ultimately, this Strategy will ensure that agencies use emerging technologies to serve the public as effectively as possible. As a Government,

更多...

关于FCKeditor在FireFox下采用JavaScript赋值异常的解决方法

最近一个项目,用到了FCKeditor,客户说在FireFox下异常,检查了一下,果然有bug,添加功能正常,编辑功能异常。

很久没用FireFox了,而在Chrome和IE中一切正常,所以没有发现这个bug,真是惭愧,呵呵。

因为整个站点的所有请求都是采用的Ajax,所以对FCKeditor进行赋值操作时也必须用JavaScript,之前是直接调用的FCKeditorAPI.GetInstance(“xxx”).SetHTML(“xxx”),但是现在发现FireFox不支持这个函数。

具体原因可能是此函数的实现是调用的innerText进行赋值操作的,而FireFox不支持innerText这个属性,必须用textContent。个人看法,错了的话请轻拍,呵呵。

看来,直接用API是不行了,只能是自己动手丰衣足食了。

检查DOM元素,找到了FCKeditor的编辑域对应的body,对其内容赋值FCKeditorAPI.GetInstance(“xxx”).EditorDocument.body.textContent=”xxx”;

完美解决,呵呵。

 

notice:

对FCKeditor进行操作之前,一定要等待FCKeditor载入完成,否则操作必定失败,最好的方法是自己实现FCKeditor_OnComplete()函数,在FCKeditor载入完成之后会自动调用这个函数。

如果一个页面有多个FCKeditor,则可以实现FCKeditor_OnComplete(xxx),其中xxx将会是载入完成的FCKeditor元素。

在后台取值并在前端赋值的时候,数据必须进行HTML转码,否则如果取到的数据包含HTML元素的话,整个DOM文档结构会被破坏。

下面附上两个很巧妙的HTML转码和解码函数,非常另类,非常给力,非常有创意,非常好用:

// Html转码
function HtmlEncode(encodeHtml) {
var div = document.createElement(“div”);
var text = document.createTextNode(str);
div.appendChild(encodeHtml);
return div.innerHTML;
}

// Html解码
function HtmlDecode(decodeHtml) {
var temp = document.createElement(“div”);
temp.innerHTML … 更多...