JRuby核心成员投奔Engine Yard
新闻来源:Computer World
Sun公司的JRuby团队正在离开他们的老东家Sun,投奔Engine Yard公司。他们声称这是因为Oracle并购Sun后的前途不明朗的原因。Sun的新闻发言人已确定了这一消息的真实性。
在两年半前,Sun招募了Charles Nutter 和Thomas Enebo,这两人叫“the JRuby Guys”,他们主要实现在Java虚似机上运行Ruby,后来Sun又招了一个叫Nick Sieger的人。今天,这三个核心开发人员会在下周一的时候到新公司上班。他们认为Oracle可能会不支持他们继续在JVM上运行Ruby这个事情,而JRuby又是他们的未来。
Engine Yard。成立仅两年、总部设在旧金山的Engine Yard,主要业务是为使用开放原始码开发环境Ruby on Rails的开发者处理系统布署和作业等事项。该公司协助开发者透过所谓的云计算,或第三方数据中心,执行应用软件。Engine Yard曾经从New Enterprise Associates和Amazon.com两家公司募得投资1500万美元。该公司正在进行云计算平台 ...
一些单元测试的Guideline
Jimmy Bogard 曾经写过一篇文章: 《从单元测试中获益》,这这篇文章中给出了下面三条规则:
“测试名应该从用户的角度描述是什么和为什么” – 这样一来,程序员可以从名字就可以知道用户需要什么样的软件行为。
“测试也是代码,同样也需要我们更多的爱” – 真实运行在生产环境下的代码不仅仅只是我们需要去关心和花心思的代码。对于单元测试中的代码同样也需要易读易维护,以及可重用的特性。“我非常痛恨那些又长又复杂的测试代码,如果一个测试需要30行的单元测试代码,请把其放在一个方法中。一个长的测试步骤只会激怒程序员。如果你在正式的代码中都没有这么长的代码,那么为什么我们需要在测试代码中容忍这样的情形呢?”
“不要只用一种固定的模式或组织风格” – 有些时候,对于一些特殊的测试案例,标准的类设计模式,或一个固有的测试装置可能并不能有效的工作。
Lior Friedman 加上: “第0条 – 测试应该只测试单元其外部的行为,而不是内部的结构”。或者说,只测试对一个单元的期望,而不是这个单元的构成。
Ravichandran Jv 也加上了他的条例:
一个测试一个断言(如果可 ...
如何检测浏览器是否支持CSS3
如何检测用户的浏览器是否支持CSS3,我们需要使用HTML,CSS和JavaScript来完成这件事情。下面是步骤。
1)先制作下面的HTML
<span id="check" rel="Detect"></span>
2)然后书写下面的CSS
#check {
display: none;
width: 0;
height: 0;
}
#check[rel^="D"] {
display: block;
width: 0;
height: 0;
}
3)下面是JavaScripts的检测脚本
请确保下面的代码放在HTML文件头。
[javascript]
<script type="text/javascript">
var obj = document.getElementById("check");
var file="special.css";
if (window.getComputedStyle)
&n ...
15个Web在线WYSIWYG编辑器
基于WEB的HTML 编辑器,WYSIWYG所见即所得的编辑器,或是一个富文本的编辑器,是我们在开发WEB应用时接收用户输入时必需要考虑的问题。下面是一些开源的WEB在线的WYSWIG编辑器。
1. FCKeditor
FCKeditor 这些在线编辑器中最著名的一个,其功能相当的强大,很像一个Web的Word软件。它可以方便地和ASP, ASP.NET, PHP, Java, Perl, Phyton 等Web开发语言所集成。并支持皮肤,拼写检查。其还可以配置成一个轻量级的编辑器。而且,它还有很多相当酷的功能。
2. NicEdit
NicEdit 是一个基于Javascript 编辑器,它可以很容易地被集成到任意的网页中。它还可以把网页上任何的element/div 转成可以编辑的标准的控件。
3. TinyMCE
TinyMCE 是另一个很有名的所见即所得的编辑器,其受LGPL license控制。Wordpress的编辑器用的就是TinyMCE的。
4. jwysiwyg
jwysiwyg 是一个基于 jQuery 的WYSIWYG 插件,相当小,只有7kb的 ...
Internet 技术演变图
点击图片看大图
程序员惯用的解释(Top 25)
下面是程序员日常工作当中惯用的解释,或是口头禅。我们可以从这一个侧面来看看的程序员的特征和性格,相信你我都说过很多这样的话。不要太认真哦,呵呵。
在我这边的电脑上可以工作啊……
我重来没有听过这样的事
昨天还能正常工作呢
好吧,这算一个BUG
这怎么可能?
这应该是机器或是环境的问题
操作系统更新了吗?
一定又是用户那边的错
你的测试数据一定有问题
我从来没有碰过那边的代码!
是的,是的,我会准备完成
一定是你搞错了
哦,这正是我们开发的功能
我就快准备好了
当然,还需要做的就只剩修改这些小Bug了。
我会马上做完的
最近太不顺了
我不可能测试所有的case!
那根本不可能做到
我记得我已经改了这个bug了
我做完了,只不过还没有测试过
程序应该可以工作,只不过还没有测试过
一定是有人改了我的代码
你的机器上一定中了什么病毒或木马
就算是程序有问题,那又怎么样?
呵呵,是这样的吗?希望你能分享你所经历的程序员的解释。
程序员犯的非技术错误(Top 5)
对于程序开发者来说,有两种技术需要我们掌握,一个是技术上的能力,另一个是非技术上的能力。不幸的是,许多程序员过多地关注了技术上的能力,而忽略了非技术上的能力的培养,因此,我们的程序员们经常会有一些很不好的习惯,这里我们例举了程序员们最常犯的5个非技术的错误,与大家共勉。
目录
1.- 缺乏团队纪律
2.- 过度自负
3.- 沟通不畅
4.- 忘了用户
5.- 不懂工作的轻重缓急
1.- 缺乏团队纪律
“Discipline is the bridge between goals and accomplishment.” Jim Rohn.
纪律是一个最有价值的技能,不仅仅只是在软件开发领域,同样在其它领域也是一样的。但对于现实来说,我们很难找到即有才华又有纪律的人。这正如足球队一样,非洲的球员们才华相当的出众,可惜他们总是独自为阵,团队纪律性不足,所以可以有好的成绩,但却无法赢得最后的胜利;而德国队的队员个人技能平平,但其有很强大的团队纪律性,所以,总是能打入最后的决赛并获得冠军 ...
(免费在线)新书推荐:搜索的用户界面
题外话:剑桥大学出版社很有意思,允许作者把书的全部内容放在网上,例如:Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze, Introduction to Information Retrieval, Cambridge University Press. 2008.
《搜索的用户界面》的作者Marti Hearst是加州大学伯克利分校研究信息可视化的一位大儒,她有很多带有认知心理学加设计的尝试,在信息检索这门学科里的信息可视化领域很有地位。我斗胆把她的新书的梗概在这里描述一下,习惯看英文的朋友们可以点击链接去看英文原文,不喜欢看英文的朋友们可以有选择的看看我这里的总结,然后硬硬头皮,跳进去啃一些具体章节吧。本书可能收益的人有:对搜索有兴趣的学生,工业界做设计和评估的专业人士,对技术中的人本主义感兴趣的人,书痴。
译文:本书综述
本书概括了信息寻找过程中人的方面,并专注于其中被用户界面可以支持的方面。本书描述一些用户界面的一般方法论,尤其是搜索的用户界面以及如何评估好的搜索界面。本书 ...
Python 自然语言处理
推荐一本免费的在线电子书,《用Python进行自然语言处理》, 用NLP 工具包(开源免费,Python)来进行文本分析。特别适合初学计算语言学的学生。好像没有好的中文切词。当然,免不了需要提一下 Dan Jurafsky 教授,大家可以搜索一下,找找他的讲义。
简要翻译一下提纲:
(书的主站点:http://www.nltk.org/)
序言
用Python进行语言处理
使用文本语料库和辞典资源
处理原始文本
结构化变成
词语的分类和标签
学习文本分类
从文本中信息抽取
分析句法结构
创建基于特征的语法
分析句子的意思
管理语言学数据
后记:直面语言带来的挑战
Natural Language Processing with Python
— Analyzing Text with the Natural Language Toolkit
Steven Bird, Ewan Klein, and Edward Loper
0. Preface (extras)
1. Language Processin ...
关于 Chrome OS 的一些推论
最近Chrome OS被炒作得火热。
为什么还有一年后才发布的产品这么早会公布于众?其实不难想象,一个系统级别的产品的推行必须要跟很多OEM厂家谈合作。而你几乎不可能只是秘密地跟一个大公司的2-3个工程总监就能把这种合作谈定,而大多数的OEM公司,例如 DELL, Asus, Acer等这样的公司都不是技术为主导的,商业人士会很早参与意见和项目的计划,一旦知道的人多了,其实也没什么能保密的了。虽然,这样荒腔走板的发布很可能像伤害Android一样伤害Chrome OS。
为什么Chrome OS和Android是如此独立的两个东西,看似又是在解决一个方向上的问题呢?其实也不难推测。Android是Google买下来的公司,其带队的Andy Rubin肯定是个对移动设备的能力有远见的大佬,而Chrome浏览器的领袖 Linus Upson是做V8 Engine的,一定对云和未来的Web Apps有着更坚定的远景。当两个这样强势的团队在公司各自划定地盘以后,融合的可能性就相对小了。
另,人们对netbook的遐想自然会把所有可能的技术都考虑一遍,尤其是Android这样先进而开源的 ...
BT雷人的程序语言
这个世界从来都不会缺少另类的东西,人类自然世界如此,计算机世界也一样。编程语言方面,看过本站《6个变态的C语言Hello World程序》的朋友们一定对BT和另类不会陌生,但那都是些小儿科,真正的BT和另类要是从语言级上来完成。让我们来看看其中一个比较另类的语言BrainFuck。看到这个程序语言的名字,请不要以为这是一个搞笑的语言,这是一个“严肃事情”,请大家用“最虔诚的态度”来阅读本文。
目录
BF语言介绍
BF解释器
Hello World
其它另类语言
BF语言介绍
Brainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于“绿王八”的原因,这种语言有时被称为brainf**k或brainf***,甚至被简称为BF。这种 语言,是一种按照“Turing complete(完整图灵机)”思想设计的语言,它的主要设计思路是:用最小的概念实现一种“简单”的语言,BrainF**k 语言只有八种符号,所有的操作都由这八种符号的组合来完成。
BF基于一个简单的机器模型,除了八 ...
整洁代码的4个提示
虽然这样的文章非常的多,并且,就算是对于编程新手来说,也是非常的简单和显而见,但是,在我们进行Code Review过程中,我们还是能够看到那些非常混乱的代码,所以,有些时候,你会在想,是不是这样的规则太多了,导致我们的程序员记不住。虽然我们在以前的文章中一遍又一遍的说过(比如:《优质代码的十诫》),千言万语总结一下,无论你用什么样的语言,最最基本的编程原则就是下面这四条。
1 – 简短的方法
简单才会易读,简单才会容易,简单才能重用,简单才能保证质量。把一件事搞复杂,是一件简单的事;而把一件事变简单,这则是一件复杂的事。KISS-Keep it Simple Stupid是一种哲学,Do one thing, Do it best也是一种哲学。这些都是在告诉我们,做设计,做产品,不要把所有的东西一下子都考虑进来,否则将会让你的事情变成一团糟,剪不断理还乱,就是这样道理。把复杂的事情,困难的事情,逐步细化,分解成一个一个简单而单一的事情,然后再把他们拼装起来完成一个复杂的事情,是我们如何完成一个巨大并复杂的项目的通用方法。
编程也是这个道理,维护代码的成本会比你创造代码的成本要大得 ...
与Martin Fowler关于敏捷方法的问答
2009年6月23日,Martin Fowler到公司访问,与我们开了一个小型座谈会并顺便拜访了他在ThoughtWorks的同事们。
以下是座谈的内容:
1、如何在常规业务中应用敏捷方法?
常规业务(Business As Usual)是指使公司业务正常运营而进行的一些日常业务活动,对于IT部门而言则包括系统维护、技术支持以及应用更改。这些工作相对于独立的软件项目而言即琐碎又零散,但又是不可或缺的。“如何在常规业务中应用敏捷方法?”,这是我们向Martin提出的第一个问题。Martin阐述道,首先需要澄清一下对项目的定义,传统的项目运作方式是集中一批业务人员、开发人员和管理人员进行产品开发,开发完成后将产品交付系统运行和支持部门,项目也就随之结束了。在敏捷方法中,项目是一个持续性的过程,系统随着业务的需要不断地更改和重构,参与项目的人员也相应地在不断地增加或者减少。笔者的理解是只要系统仍在支持业务运营,项目就不会结束,因为业务几乎不可能不变更,并且必要的重构也不可避免,对于ThoughtWorks的顾问们来说这意味着他们和客户的业务关系也不会结束,呵呵,双赢的策略!
2、集中 ...
Java构造时成员初始化的陷阱
让我们先来看两个类:Base和Derived类。注意其中的whenAmISet成员变量,和方法preProcess()
public class Base
{
Base() {
preProcess();
}
void preProcess() {}
}
public class Derived extends Base
{
public String whenAmISet = "set when declared";
@Override void preProcess()
{
whenAmISet = "set in preProcess()";
}
}
如果我们构造一个子类实例,那么,whenAmISet 的值会是什么呢?
public class Main
{
public static void main(String[] args)
{
Derived d = new Derived();
System.out.println ...
Ksplice Uptrack — Ubuntu更新不用重启
Ksplice是马萨诸塞州坎布里奇的一家新兴厂商,它开发的软件可以帮助计算机用户保持其操作系统的安全性而且不需要经常麻烦的重新启动就可升级操作系统,Ksplice被评为麻省理工10万美元创业竞赛的6个入围项目之一。
Ksplice是Web/IT类冠军,它将与其他5个类别的入围者争夺总奖金。该公司是去年由四个麻省理工学院校友成立的,
Ksplice目前支持Linux内核的更新,但它声称其免重启更新技术工作在目标代码层,可以适用于任何操作系统或者用户空间应用。该公司说,其技术对安全更新来说特别有益,可以解决因不方便重启而使安全更新不能及时生效的问题。
昨日他们在剑桥发布了Ksplice解决方案,运用这种技术将实现无缝更新,从企业软件、系统补丁乃至Linux内核的更新都不需要重启就可以直接完成,改变了数十年来计算机运行最新代码需要重启的麻烦问题。
相关链接:
Ksplice Uptrack 主页在这里:http://www.ksplice.com/uptrack/
安装指南在这里:http://www.ksplice.com/uptrack/download
Top 200的全球开发者BLOG
本文源自这里,文中列出了全球前200名的开发者的BLOG。有的可能你很熟悉,有的你可能还不知道。这些BLOG的排名通过查看,Google PageRank, Technorati Authority, Alexa Rank, Google links, Twitter Grader Rank等等,形成的综合排名。如果你对此感兴趣的话,你可以看看这篇文章——《如何制作一个Blog排名》
下面是前200名的排名。希望对那些有日常浏览Blog习惯的人有帮助。大家可以下载更为详细的Excel表格。
本排名截止至:2009年第二季度
其中:TT = This Time 本次名次LT = Last Time 上次名次
TT
LT
Blog
Author
Twitter
1
6
Scott Hanselman’s Computer Zen
Scott Hanselman
shanselman
2
2
Coding Horror
Jeff Atwood
codinghorr ...
22个开源的PHP框架
PHP 是一个被广泛使用的来进行Web开发的脚本语言。虽然有很多其它可供选择的Web开发语言,像:ASP 和Ruby,但是PHP是目前为止世界上最为流行的。
那么,是什么让PHP如此流行?PHP 如此之流行是因为比起别的语言来,它更容易学习,网上有一大堆相当相当不错的PHP教程可以让你快速地马上就可以进行Web程序的开发。虽然PHP是是简单的,而且是容易上手的,但用它编程还是有点麻烦,尤其是一些反复在用的功能。不过,幸运的是,很多开发团队早就注意到了这点,现在在网上,PHP有许多的可以信任的PHP Framework 可以缩短我们的开发时间。这些框架被一个巨大的社区所支持,因些,如果你有什么问题的话,一定会有人乐意帮你去解决。
废话少说,让我们来看看这22个PHP的框架。
迄今最有前途的框架
1. Zend Framework
Zend Framework 是一个面向对象的,由PHP5写成的框架。其基于一个简洁和友好的许可证协议,并基于了一个经过了相当严酷测试的代码库开发而来。这是一个松散的几乎没有耦合架构设计,你可以方便地把其和其它框架混合使用。
2. Symfony
...
十个让你变成糟糕的程序员的行为
之前本站发表过《优秀程序员的十个习惯》以及《程序员需要具备的基本技能》,那是我们需要去学习和培养的。这里,我们主要讨论十个糟糕程序员的特征,主要是需要让我们去避免和小心的。
1) 情绪化的思维
如果你开始使用不同颜色的眼光来看待这个世界的话,那么你可能会成为一个很糟糕的程序员。情绪化的思维或态度很有可能会把自己变成一个怪物。相信你经常可以看到很多很糟糕的程序会使用下面的这些语句:
我的程序不可能有这种问题。
Java就是shit。
我最恨的就是使用UML做设计。
需求怎么老在变,没办干了。
受不了这些人,他们到底懂不懂啊。
…… ……
这些带着情绪化的思维和态度,不但可以让你成为一个很糟糕的程序员,甚至可以影响你的前途。因为,情绪化通常都是魔鬼,会让你做出错误的判断和决定,错误码率的判断和决定直接决定了你的人生。
2) 怀疑别人
糟糕的程序总是说:“我的代码一定是正确的,我怀疑编译器有问题”,“我这应该没有问题吧,STL库怎么这么难用啊”。我曾经见过有程序员这样使用STL类:map<char*, char*>,当他发现这样放入字符串后却取不出来,觉得那是 ...
Linux/Unix 新手和专家教程
你正在找一些高质量的Linux 和 UNIX 的教程吗?如果是,这篇文章会告诉你到哪去找到这些教程。这里我们将给出超过30个相当的不错的 Linux 和 UNIX 在线的教程。
需要大家注意的是,他们都是英文的,也许有一些也经被翻译到了中文社区,你可以搜索一下。但不管怎么样,我的建议是应该尽可能的去阅读英文。
Linux 和UNIX 的新手培训教程
免费的新手Linux教程
Introduction to Linux – 这是来自IBM的教程,用于给那些想学习Linux的人。
Linux Desktop 101 – 这是一个 14周 课时的教程,主要用于学校里教学生如何在一个PC上运行一个Linux操作系统。
Hands-On Introduction to Linux – Machtelt Garrels 的一个格式相当不错的教程。
Real Time Linux Introduction – 一系列的介绍Linux的教程,来自National Institute of Standards and T ...