2014年2月 ’ 的文章存档

迪杰斯特拉算法

Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。

Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。

其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。
阅读全文

使用python/casperjs编写终极爬虫-客户端App的抓取

1.缘起

随着移动互联网的发展,现在写web和我三年前刚开始写爬虫的时候已经改变了太多。特别是在node以及javascript/ruby社区的努力下,以往“服务器端”做的事情都慢慢搬到了“浏览器”来实现,最极端的例子可能是meteor了 ,写web程序无需划分前端后端的时代已经到来了。。。

在这一方面,Google一向是最激进的。纵观Google目前的产品线,社交的Google Plus,网站分析的Google Analytics,Google目前赖以生存的Google Adwords等,如果想下载源码,用ElementTree来解析网页,那什么都得不到,因为Google的数据都是通过Ajax调用经过数据混淆处理的数据,然后用JavaScript进行解析渲染到页面上的。

本来这种事情也不算太多,忍一忍就行了,不过最近因业务需要,经常需要上Google的Keyword Tools来分析特定关键字的搜索量。
阅读全文

关于好程序和好产品的思考

从小接触电脑,大学开始系统学习软件工程,工作了继续编码,编了这么多代码,我在思考我所做的一切的意义在哪里?也请码农兄弟们和我一起思考一下,我们耕种的作物到底给别人,给社会,给我们自己,有多大的贡献。有时候我在想我们学了这么多东西,意义在哪里,是为了做什么?我们学了组成原理,数据结构与算法,各种语言,设计模式,各种架构,软件工程,敏捷开发,项目管理,云计算,大数据等等,那么这些东西最终的目的又是为了做什么呢?

flappy bird游戏源代码揭秘和下载—移植到html5网页浏览器

前言:

     我们分析了flappy bird的代码思路(flappy bird游戏源代码揭秘和下载),也移植到了android平台(flappy bird游戏源代码揭秘和下载后续—移植到android真机上),现在我们要把代码移植到html5网页浏览器。听起来很棒吧,想不到也可以直接在网页上运行!从window/mac电脑系统, 到android/ios移动系统,再到html5网页浏览器,编写一次,到处运行,这正是cocos2dx editor的神奇之处。
阅读全文

denyhost防止SSH暴力破解

1 denyhost 简介及ssh安全

对外提供的服务器,每天都会被恶意扫描,试图暴力穷举密码,达到入侵的目的。从而控***务器,占用资源、网页挂马、垃圾广告、更会影响我们业务的正常使用和数据的安全。

所以:

第一 设置一个强密码是很有必要的(基于字典和纯数字是十分不理智的)

第二当有人恶意扫描是使用denyhost此类软件拒绝服务;

第三 使用其他技术手段,如虚拟IP等;

第四 有些硬件防火墙也有此类功能;

第五 关闭不必要的服务和端口
阅读全文

我的Javascript之旅——对象的原型链之由来、new关键字的玄机

本人是Javascript菜鸟,下面是前几天学习Javascript的旅程心得,希望对和我一样的入门者有点用,也希望高手批评指正。

以问题开始:

function Base(){}
var base = new Base()

上面两行代码会创建几个对象(object)?

要回答这个问题,先明确一下Javascript里object的概念。

Objects

在Javascript里,几乎一切都是object(Arrays、Functions、Numbers、Objects……),而没有C#里的class的概念。object的本质是一个name-value pairs的集合,其中name是string类型的,可以把它叫做“property”,value包括各种objects(string,number,boolean,array,function…),指的是property的值。
阅读全文

提升团队编码效率的10个提示

Voja Janjic是一位自由的Web开发者,拥有多年的从业经验;此外,他还是一位出色的网络管理员。近日,Voja撰写了一篇文章,谈到了如何提升团队的编码效率,如何提升团队中每一个成员的工作效率。毕竟,团队是由一个个成员构成的,如何在保证提升每一个人的效率的基础上提升整个团队的效率就是一个非常重要的议题了。

与其他活动类似,Web或软件开发也是个社会性活动,如果你是个开发者或设计师,那很有可能你会身处在一个团队之中。团队由不同的人构成,每个人都有不同的习惯、动机、工作与编码风格。本文旨在介绍一些让团队更具效率和生产力的提示。
阅读全文

探索推荐引擎内部的秘密

随着 Web 技术的发展,使得内容的创建和分享变得越来越容易。每天都有大量的图片、博客、视频发布到网上。信息的极度爆炸使得人们找到他们需要的信息将变得越来越难。传统的搜索技术是一个相对简单的帮助人们找到信息的工具,也广泛的被人们所使用,但搜索引擎并不能完全满足用户对信息发现的需求,原因一是用户很难用恰当的关键词描述自己的需求,二是基于关键词的信息检索在很多情况下是不够的。而推荐引擎的出现,使用户获取信息的方式从简单的目标明确的数据的搜索转换到更高级更符合人们使用习惯的上下文信息更丰富的信息发现。
阅读全文

Objective-C相关Category的收集

Categories是给你得不到源码的classes增加功能的一种方法。这个页面收集一些相关的Category,并且持续更新,你可以订阅关注。作者是Fille Åström,是@ IMGNRY的联合创始人和开发者。

阅读全文

代码规范的那些事儿

作为一个苦逼的程序员,因为种种原因经常需要阅读别人写的代码。您是否有因代码杂乱冗余而心生厌恶,您是否有过因代码晦涩难懂而抓狂,您是因代码低级的逻辑错误而愤概,您是否因代码结构不合常规而需要到处查找,您是否因看到几百甚至上千行代码的方法而望洋兴叹,您是否因代码缺少注释而猜测以及花很多时间去理清楚前后逻辑。苦逼的我全部遇到过并且很多很多,这些代码的作者从世界500强顶级IT公司到几十人的小公司同事,从印度美国新加坡人到中国人,从七八年的老人到刚入行的菜鸟。相信您也遇到过。这些人有一些共性,应付任务,个性十足以及不思进取!如果您是程序员菜鸟,那么您一定遇到很多并且既是肇事者又是受害者,这是必经之路;如果你是业界大牛,不用说您眼里别人的代码都或多或少都有问题,遇到的情况更多!
阅读全文