谷歌宣布奖励攻克Chrome浏览器黑客6万美元

据国外媒体CNET报道,谢尔盖·格拉祖诺夫(Sergey Glazunov)在谷歌宣布Pwnium黑客竞赛不到两个星期的时间里,成功找到并利用Chrome漏洞,完美绕开浏览器沙盒安全机制,成为全球第一位领取到谷歌6万美元奖金的人。谷歌Chrome部门副总裁桑达尔·皮查伊(Sundar Pichai)昨日通过其Google+主页宣布了这一消息。格拉祖诺夫成功地利用了Chrome安全漏洞,绕过沙盒,取得了整台机器的控制权。

在昨日ZDNet的采访中,Chrome安全小组成员贾斯汀·舒尔(Justin Schuh)也表示“格拉祖诺夫的确成功地以登录用户的身份夺取了系统的控制权。”舒尔称这一过程“令人印象深刻”,并表示格拉祖诺夫绝对值得6万美元的奖励。

格拉祖诺夫是第一位从谷歌Pwnium黑客竞赛赢取奖金的人。该项目由谷歌在今年二月末发起,并承诺向找到Chrome安全漏洞的人才奖励共计100万美 元的现金。其中,最高单项奖励为6万美元,赢取条件必须是通过Chrome/Windows 7本地账户登录,并只利用Chrome自身漏洞夺取系统全面控制权的人。

网易科技

Java 与 F# 的并行程序处理对比

Azul System的Cliff Click博士是多核心JVM系统方面的专家,之前发表了一篇博文,首先比较了Java与C语言和C++的性能表现,但同时也讨论了C#和.NET。以下三个Cliffs博士的评论让人十分感兴趣:

在标题”Places where C/C++ beats Java for obvious reasons”下:

“值类型,例如复杂类型,在Java中需要一个类来支持”

“Value Types, such as a ‘Complex’ type require a full object in Java.” – Dr Cliff Click

Cliff忘记提及的是.NET同样提供值对象和比复数更加引人注意的humble hash table。

考虑一下以10,000,000个整数/单精度浮点数 填充hash表,这个任务可以使用Java来完成,如下:

package hashtablebenchmark;import java.util.HashMap;public class Main {    public static void main(String[] args) {        int n = 10000000;        for (int j=0; j<10; ++j) {            long startTime = System.currentTimeMillis();            HashMap hashtable = new HashMap(n);            for(int i=1; i<=n; ++i) {                hashtable.put(i, 1.0f / i);            }            System.out.println("m[100] = " + hashtable.get(100));            long time = System.currentTimeMillis() - startTime;            System.out.println("Took: " + time / 1e3 + "s");        }    }}

同样的程序在F#中不仅仅代码更短并且速度要快上17倍:

let n = 10000000let m = System.Collections.Generic.Dictionary(n)for i=1 to n do  m.[i] <- 1.0f / float32 iprintf "m[100] = %f\n" m.[100]

特别值得提及的是,Java初始化花费6.967s、稳态花费5.733s,而F#只用了0.414s。

实际上,F#通过这个测试后我们便想给它更大的工作量,而在这台4GB内存的机器上,Java不可能再做更多了。

在别处的评论,Cliff也这样写到Java:

“有非常好的多线程支持,并行程序设计在Java中很容易实现”

“Very Good Multi-Threading Support. Parallel programming is just easier in Java.” – Dr Cliff Click

之后又有:

“并非我如此关注C#而是…我认为JIT编码处理基本上比Java要慢”

“Not that I track C# all that closely but… I believe the JIT produces substantially slower code than Java” – Dr Cliff Click

允许我们在其他方面来证明,Computer Language Shootout软包含了一个格式良好的spectral-norm测试,最快的Java解决方案是一个173行的并行程序。其实现用F#来写只需要24行代码:

let A i j = 1.0 / float((i + j) * (i + j + 1) / 2 + i + 1)let inline mul A (u: _ []) (v: _ []) =  System.Threading.Tasks.Parallel.For(0, v.Length, fun i ->    let mutable vi = 0.0    for j = 0 to v.Length - 1 do      vi <- vi + A i j * u.[j]    v.[i] <- vi) |> ignorelet AtAu u v =  let w = Array.create (Array.length u) 0.0  mul (fun i j -> A i j) u w  mul (fun i j -> A j i) w vdo  let n = 5500  let u, v = Array.create n 1.0, Array.create n 0.0  for i = 0 to 9 do    AtAu u v    AtAu v u  let u, v = vector u, vector v  printf "%0.9f\n" (sqrt(Vector.dot u v / Vector.dot v v))

在Java代码中,大量的代码都是用来实现并行化。与之相反的是,F#在处理并行化上只用了两行代码。可见,并行程序设计在Java中可不是那么easy。

Java串行程序初始花费了12.722s稳态花费12.299s,而冷启动的F#只用了12.18s。在8核 2xE5405 2.0GHz Xeon的机器上,Java并行程序初始化花费1.839s稳态花费1.820s,而冷启动的F#并行程序只用了1.60s。事实证明,Java在每一个测试中都表明CLR的JIT并不是“处理基本上比Java更慢”

最后,Cliff并没有提到其他两个设计上(Java性能)的不足。首先,Java的泛型代码导致性能大幅下降,由于它使用了许多不必要的装箱操作。其次,JVM栈缺少尾部递归支持,这不仅仅对这个函数式编程的年代带来越来越多的障碍,而且唯一的一般解决方案也比需要的慢上10倍。

原文链接(需要FQ),OSChina原创编译

30 个用于杂志网站的 WordPress 主题

WordPress 已经形成了一个非常完善的生态链,为 WordPress 开发的各种插件、主题越来越丰富。本文介绍 30 个适用于杂志网站使用的 WordPress 主题,其中也包含一些收费的主题,制作非常精美。

免费的 WordPress 杂志主题 Snips

Snips

DotNews

DotNews

Render Magazine Theme

Render Magazine Theme

Polar Media Magazine WordPres Theme

Polar Media Magazine WordPres Theme

Oracle Mag Theme

Oracle Mag Theme

收费的 WordPress 杂志主题 Continuum – Magazine WordPress Theme

Continuum - Magazine WordPress Theme

Deadline – Premium WordPress News / Magazine Theme

Deadline

Avenue – A WordPress Magazine Theme

Avenue

Newscast 4 in 1 – WordPress Magazine and Blog

Newscast 4 in 1 - WordPress Magazine and Blog

BigFeature – WordPress Theme

BigFeature

Repro – Premium WordPress News / Magazine Theme

Repro - Premium WordPress News - Magazine Theme

theDawn Premium All-in-one WordPress Theme

theDawn Premium All-in-one WordPress Theme

Boulevard – A WordPress Magazine Theme

Boulevard - A WordPress Magazine Theme

Big City – Personal and Blog WordPress theme

Big City - Personal and Blog WordPress theme

Reaction WP : Responsive, Rugged, Bold

Reaction WP  Responsive Rugged

Super Skeleton WP: Responsive

Super Skeleton WP

London Live 3 In 1

London Live 3 In 1

Sprout – Magazine & Blog WordPress Theme

Sprout

Insignia – a Magazine / Community / Blog theme

Insignia

Mosaico – Unique Magazine Theme

Mosaico

Brewpper – A Premium & Dynamic News Theme

Brewpper

SwagMag – WordPress Magazine

SwagMag

Bangkok Press – Responsive, News

Bangkok Press

A – Personal Blog WordPress Theme

A - Personal Blog WordPress Theme

Backstreet – Blog & Magazine Theme

Backstreet - Blog & Magazine Theme

Retro Portfolio

Retro Portfolio

CookingPress

CookingPress

Strings Music and Art Magazine WordPress

Strings Music and Art Magazine WordPress

Website – responsive WordPress theme

Website - responsive WordPress theme

Advance WordPress Magazine

Advance WordPress Magazine

一个人是否能成为程序员是上天注定的

本文的作者 Swizec Teller

本文的作者 Swizec Teller

本文的作者是一个斯洛文尼亚共和国的独立程序员,自称是“戴帽子的黑客”,他使用Pascal、Delphi、 C/C++、Python,PHP,node.js等语言编程,他曾是著名的开源论坛phpBB的几个主要模块的开发人,先后为 hipstervision.org等五家公司网站的创始人或合作创始人,他目前的主要收入来自postme.me这个明信片网站。

程序员是一种特殊物种,好的程序员尤其是这样——在我们这个行当里很多人都试图把编程归入一种复杂的技术学科,但它实际上更倾向于一种艺术。它实际上更接近数学,音乐或电视剧《Firefly》里的Kaylee魔法。

好的程序员有一种特殊的直觉,一种天赋,这种天赋很难描述,更不容易得到。

几个星期前,@zidarsk8 跑到我这说“老大!我发现这样一个人!我还在在教他如何编程!但我发现他已经比我优秀了!他一个月前还不知道到什么是变量!太邪门了!“

他要我一定要在博客里写写这件事。为什么有些人就简单的学会了?他们有什么特殊之处?是否任何人都可以学会编程?还是只有有一定天分的人才能成为一个不错的(先别谈优秀)程序员?

我记得一年前曾辅导过一个高中的孩子。大概是担心考不过他的计算机课程,跑到我这来求助。一个月里,我把我知道的全教给他了,至少这些知识能让他通过考试。

快到月末的时候,他已经知道了所有关于循环、变量赋值的知识,甚至还明白了函数是一组能做某些事情的代码。我跟他父亲道别时说的话是“是的,他什么都知道了。只需要一些实践去掌握它们。”

Sheep

Image via Wikipedia

我不知道他是否考过了那个课程。如果他过了,那是老师的荣幸…而就我根据我高中时的记忆,老师们并非都那么幸运。并不是因为我不是个好老师我才这样说——我从很多受这个孩子推荐来到我这里的其他学生那里都收到了一封“谢谢你!出色的通过!耶!”的邮件——有些人很简单就是不能成为程序员。永远成不了程序员。更别说成为不错的程序员了。

不能编程的羊

Jeff Atwood在2006年曾写过关于把不能编程的山羊从能编程的绵羊中挑出来的文章,里面提到过一项研究,这些研究声称找到了一种能预测一个人将来的编程能力的测试。

测试非常的简单:

a = 5b = 20a = b现在a和b的值是什么?

有很多像这样的问题。只有44%学生的大脑里养成了固定的赋值思维模型——包括有些理解甚至是错误的。余下的人都答错了,或者是没有答。

更糟糕的是,在一个学期的编程学习后,这个比例没有任何变化。只有44%的理解了赋值的过程。

很显然,有些人就是学不会。

我想可能还有个更简单的测试 ->

Passion (novel)

Image via Wikipedia

热情

有时候,当你给一个有上进心的年轻心灵(任何愿意学习编程的人,年龄不是问题)两种工具和一个难题。他会使用这两种工具创造出4种工具。他会搜索互联网,发现更多的工具…很快,他有了20种工具,请问你还让我解决什么问题?

这就是热情!

心无杂念的对编程的热情。没有问题需要解决时仍然对编程入迷,甚至兴奋。甚至把解决一个已知的问题也当作一次普通的练习…这就是卓越之处。

多大岁数才开始学习编程,这并不重要——很多研究显示,在我们这个世界里,编程的工龄并不是水平的指示符——重要的是你对这个行业有个热情的心。

因为,一旦有了热情,你就拥有了所有其它的一切。

[本文英文原文链接:Programmers are born not made ]

Windows Phone Tango 功能演示视频

我们之前已经知道即将发布的Tango带来的新功能以及限制,国外的Windows Phone Hacker团队今天为我们带了一个Tango 功能演示视频,包含新的状态栏图标,改进的彩信功能等等,他们同时还发布了一个解锁版的模拟器提供下载(解锁版的模拟器可以支持大多数的任务): Tango演示视频

我们之前已经知道即将发布的Tango带来的新功能以及限制,国外的Windows Phone Hacker团队今天为我们带了一个Tango 功能演示视频,包含新的状态栏图标,改进的彩信功能等等,他们同时还发布了一个解锁版的模拟器提供下载(解锁版的模拟器可以支持大多数的任务):

演示视频:

模拟器下载地址1:ftp://[email protected]/tangoemulator.zip
模拟器下载地址2:http://www.crocko.com/2EAB73BF5BD343F1967E7E5546512055/tangoemulator.zip
模拟器下载地址3:https://rapidshare.com/files/1778895253/tangoemulator.zip