2013年9月 ’ 的文章存档

趣文:程序员最常见的谎话

整理编译自 Quora  上的问答贴:What are the most common lies told by programmers?

大部分答案是以下内容的变种:

○ 这个任务简单;

○ 我就快做完了;

○ 如果有 Bug,绝不可能是在我的代码中;

○ 下个版本中我就会加上单元测试;

○ 我以后再给代码写注释和文档;

原问答贴有 72 个回复,摘编部分如下: 阅读全文

深入探索 Java 热部署

简介

在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对于某些大型的应用来说,每次的重启都需要花费大量的时间成本。虽然 osgi 架构的出现,让模块重启成为可能,但是如果模块之间有调用关系的话,这样的操作依然会让应用出现短暂的功能性休克。本文将探索如何在不破坏 Java 虚拟机现有行为的前提下,实现某个单一类的热部署,让系统无需重启就完成某个类的更新。 阅读全文

非码农也能看懂的“机器学习”原理

我们先来说个老生常谈的情景:某天你去买芒果,小贩摊了满满一车芒果,你一个个选好,拿给小贩称重,然后论斤付钱。

自然,你的目标是那些最甜最成熟的芒果,那怎么选呢?你想起来,啊外婆说过,明黄色的比淡黄色的甜。你就设了条标准:只选明黄色的芒果。于是按颜色挑好、付钱、回家。啊哈,人生完整了?

呵呵呵。 阅读全文

创建高安全性PHP网站的几个实用要点

大家都知道PHP已经是当前最流行的Web应用编程语言了。但是也与其他脚本语言一样,PHP也有几个很危险的安全漏洞。所以在这篇教学文章中,我们将大致看看几个实用的技巧来让你避免一些常见的PHP安全问题。

技巧1:使用合适的错误报告

一般在开发过程中,很多程序员总是忘了制作程序错误报告,这是极大的错误,因为恰当的错误报告不仅仅是最好的调试工具,也是极佳的安全漏洞检测工具,这能让你把应用真正上线前尽可能找出你将会遇到的问题。
当然也有很多方式去启用错误报告。比如在 php.in 配置文件中你可以设置在运行时启用
启动错误报告
error_reporting(E_ALL);
停用错误报告
error_reporting(0);
技巧2:不使用PHP的Weak属性
有几个PHP的属性是需要被设置为OFF的。一般它们都存在于PHP4里面,而在PHP5中是不推荐使用的。尤其最后在PHP6里面,这些属性都被移除了。
注册全局变量
当 register_globals 被设置为ON时,就相当于设置Environment,GET,POST,COOKIE或者Server变量都定义为全局变量。此时你根本不需要去写 $_POST['username']来获取表单变量’username’,只需要’$username’就能获取此变量了。
那么你肯定在想既然设置 register_globals 为 ON 有这么方便的好处,那为什么不要使用呢?因为如果你这样做将会带来很多安全性的问题,而且也可能与局部变量名称相冲突。
比如先看看下面的代码:
if( !empty( $_POST['username'] ) && $_POST['username'] == ‘test123′ && !empty(
$_POST['password'] ) && $_POST['password'] == “pass123″ )

{

$access = true;

}
如果运行期间, register_globals 被设置为ON,那么用户只需要传输 access=1 在一句查询字符串中就能获取到PHP脚本运行的任何东西了。

在.htaccess中停用全局变量
php_flag register_globals 0
在php.ini中停用全局变量
register_globals = Off
停用类似 magic_quotes_gpc, magic_quotes_runtime, magic_quotes_sybase 这些Magic Quotes
在.htaccess文件中设置
php_flag magic_quotes_gpc 0

php_flag magic_quotes_runtime 0
在php.ini中设置
magic_quotes_gpc = Off

magic_quotes_runtime = Off

magic_quotes_sybase = Off

技巧3:验证用户输入
你当然也可以验证用户的输入,首先必须知道你期望用户输入的数据类型。这样就能在浏览器端做好防御用户恶意攻击你的准备。
技巧4:避免用户进行交叉站点脚本攻击
在Web应用中,都是简单地接受用户输入表单然后反馈结果。在接受用户输入时,如果允许HTML格式输入将是非常危险的事情,因为这也就允许了JavaScript以不可预料的方式侵入后直接执行。哪怕只要有一个这样漏洞,cookie数据都可能被盗取进而导致用户的账户被盗取。
技巧5:预防SQL注入攻击
PHP基本没有提供任何工具来保护你的数据库,所以当你连接数据库时,你可以使用下面这个mysqli_real_escape_string 函数。
$username = mysql_real_escape_string( $GET['username'] );
mysql_query( “SELECT * FROM tbl_employee WHERE username = ’”.$username.“‘”);
好了,在这篇简短的文章中,我们阐述了几个开发过程中不能忽视的PHP安全性问题。但是最终是否使用,如何使用还是开发人员来决定的。希望这篇文章能帮助到你们。
译文:oschina

关于 shell 脚本编程的10 个最佳实践

每一个在UNIX/Linux上工作的程序员可能都擅长shell脚本编程。但大家解决问题的方式却不尽相同,这要取决于对专业知识的掌握程度、使用命令的种类、看待问题的方式等等。对于那些处在shell脚本编程初级阶段的程序员来说,遵循一些恰当的做法可以帮助你更快、更好的学习这些编程技巧。下面,我们就来讨论这些能帮助你学习shell脚本编程的方法吧。
阅读全文

经典论文翻译导读之《Dremel: Interactive Analysis of WebScale Datasets》

[译者注]从头到尾读懂一篇国外经典技术论文!相信这是很多技术爱好者一直以来想干的事情。本系列译文的目标是满足广大技术爱好者对原始论文一窥究竟的需求,尽量对原文全量翻译。原始论文中不乏较晦涩的学术性语句,也可能会有您不感兴趣的段落,所以译者会添加【译者预读】【译者总结】等环节帮助大家选择性的阅读,或者帮助读者总结。根据译者的翻译过程,论文中也难免缺少细节的推导过程(Google的天才们总是把我们想的跟他们一样聪明),遂添加特殊的【译者YY】环节,根据译者的理解对较为复杂的内容进行解释和分析,此部分主观性很大难免有误,望读者矫正。所有非原文内容皆以蓝色文字显示。

废话不多说,大家一览为快吧! 阅读全文

如何雇一个产品经理

在一个初创公司干招聘有段时间了,在初创公司招人跟在大公司是相当不一样的。在Yahoo! Search ,感觉好像我们总是在招人。我每周要做5-8个面试。像是有永无止境的简历,面试和录用协议。现在我不总在做招聘经理了。工作的时候,也就只招聘很少的几个产品经理。但是公司也总在招聘,我经常是面试团队的成员。在大公司,你首先能注意到的就是分工很细致。在初创公司,大家都要或多或少做各种事情,所以你需要的是全能手。更重要的是,未来是难以预测的,所以你得招聘适应性强的人。你可能认为你要找个来干某项特别工作的人,但是没准几个月之后情况就变了。这跟大公司的招聘方式不同,通常招聘的时候,你脑海里就知道你要的是什么职位的人,而且发生变动的可能也很小。在Yahoo! 招聘到的人,大多数可能都不适合初创公司。我记得一些以前招聘的对话,差不多都像是这样的—— “好吧,我不太确定他们是完美的候选者,不过看起来都挺适合这个职位,那就都收了吧。” 在大公司这样可能有用,在初创公司的话,这就是找死的想法。
阅读全文

数据即代码:元驱动编程

几个小伙伴在考虑下面这个各个语言都会遇到的问题:

问题:设计一个命令行参数解析API

一个好的命令行参数解析库一般涉及到这几个常见的方面:

1) 支持方便地生成帮助信息

2) 支持子命令,比如:git包含了push, pull, commit等多种子命令

3) 支持单字符选项、多字符选项、标志选项、参数选项等多种选项和位置参数

4) 支持选项默认值,比如:–port选项若未指定认为5037

5) 支持使用模式,比如:tar命令的-c和-x是互斥选项,属于不同的使用模式

经过一番考察,小伙伴们发现了这个几个有代表性的API设计:
阅读全文

20款最流行的响应式jQuery插件

本文将例举最流行的20款响应式jQuery插件,开发者可以从中挑选出最选合你网站的一款。

1. LetteringJS 

Lettering.js是一款漂亮的jQuery排版插件。它取代了传统的排版方法,包括网站中的排版字体。
阅读全文

GNU C 、ANSI C、标准C、标准c++区别和联系

GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。它在编写linux的时候自己制作了一个标准成为 GNU C标准。ANSI 美国国家标准协会,它对C做的标准ANSI C标准后来被国际标准协会接收成为 标准C 所以 ANSI C 和标准C是一个概念

总体来说现在linux也支持标准C,以后标准C可以跨平台,而GUN c 一般只在linux c下应用
阅读全文