每天写出好代码的5个建议

成为一个优秀的程序员和成为其他优秀的专业人员一样,需要尽可能多的做一些有质量的工作。有句很流行的话可以总结:做,正确做事,立马就做。(Do it. Do it right. Do it right now)

0. 将一天要做的事情列成清单

完成复杂活动(activity)的最好方法是将其拆分成简单的各项活动。每天早上,将你一天要完成的活动进行拆分,然后制定一个相应的日程安排表,这样能够帮助你:

  • 更好的理解这个活动。
  • 每天都有一个集中的目标。
  • 提高你的估计能力,几天之后,你会发现你能预测一天的工作量。

1. 一次只做一件事

集中于一项任务比同时做多项任务更多产,不同的研究已经证明这个观点,并且发布在不同的媒体上(例如CNN)。

集中精力工作25分钟,休息5到10分钟。你可以用诸如“番茄工作法”这种流行的技术来帮助你管理时间。还有工具能帮助你测量你花在各项不同任务上的时间,我最喜欢的是CoolTimer,这里也有10个不错的时间追踪应用程序

2. 正确做事

以下两个是考察事情是否正确完成的关键:

  • 要为解决方法感到到自豪,因为这不仅仅只是个普通的解决方法,这是个好的方法。遵循“软件质量金字塔”的原则
  • 解决方法至少要经过一次检查。在你的同事中,请一位你尊敬的优秀开发人员检查你的方法,并接受他的真诚建议。

3. 不要半途而废

众所周知,若仍有一个玻璃杯需要清洗,则不能说已经洗完了。粉刷墙壁或驱车前往某处这些事情上我们也认可同样的道理,但在软件开发上我们却不这么认为了。即便我们没有完成所有的单元测试,或者我们没有核实实现方式是否符合用户的需要,我们也说完成了任务。这是典型来自Hope Driven Development的行为,是非常有害的。

需求没有更改时,只有当你百分之百确认再也没有必要改善那个解决方法时,才能算完成任务。

4. 与其道歉,不如补救,而放弃最不可取。

如果你要花额外的时间来完成一些代码的测试,或者重构不可读的类,那么就去做,因为这是为将来投资时间。但是如果你在某件事上面卡住了或者将项目拖延的太久,那么寻找一个更容易的方案。它可能不如你目前正在实现的方案优雅,但至少你有方案。确保记录下来以应对这个项目将来的风险,并且有些东西需要重新审查。

——————————————————————-
你可能对以下文章也感兴趣

各种语言的运行时刻性能消耗
我从PHP退役了
25款适用于开发人员的Firefox 4插件
Javascript:C语言和Self语言一夜情的产物
5本免费的Java电子书

——————————————————————-
译文出处:伯乐在线 – 职场博客 – 程序员
译文链接:http://www.jobbole.com/entry.php/971

原文:Alberto Gutierrez 翻译:敏捷翻译 – 唐瑭

如需转载,但请注明原文/译文出处、译文超链接和译者等信息,否则视为侵权,谢谢合作!

 

Hadoop快速入门

目的

这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等。

先决条件

支持平台

  • GNU/Linux是产品开发和运行的平台。 Hadoop已在有2000个节点的GNU/Linux主机组成的集群系统上得到验证。
  • Win32平台是作为开发平台支持的。由于分布式操作尚未在Win32平台上充分测试,所以还不作为一个生产平台被支持。

所需软件

Linux和Windows所需软件包括:

  1. JavaTM1.5.x,必须安装,建议选择Sun公司发行的Java版本。
  2. ssh 必须安装并且保证 sshd一直运行,以便用Hadoop 脚本管理远端Hadoop守护进程。

Windows下的附加软件需求

  1. Cygwin – 提供上述软件之外的shell支持。

安装软件

如果你的集群尚未安装所需软件,你得首先安装它们。

以Ubuntu Linux为例:

$ sudo apt-get install ssh
$ sudo apt-get install rsync

在Windows平台上,如果安装cygwin时未安装全部所需软件,则需启动cyqwin安装管理器安装如下软件包:

  • openssh – Net

下载

为了获取Hadoop的发行版,从Apache的某个镜像服务器上下载最近的 稳定发行版

运行Hadoop集群的准备工作

解压所下载的Hadoop发行版。编辑 conf/hadoop-env.sh文件,至少需要将JAVA_HOME设置为Java安装根路径。

尝试如下命令:
$ bin/hadoop
将会显示hadoop 脚本的使用文档。

现在你可以用以下三种支持的模式中的一种启动Hadoop集群:

  • 单机模式
  • 伪分布式模式
  • 完全分布式模式

单机模式的操作方法

默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。

下面的实例将已解压的 conf 目录拷贝作为输入,查找并显示匹配给定正则表达式的条目。输出写入到指定的output目录。
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-*-examples.jar grep input output ‘dfs[a-z.]+’
$ cat output/*

伪分布式模式的操作方法

Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。

配置

使用如下的 conf/hadoop-site.xml:

<configuration>
<property>
<name>fs.default.name</name>
<value>localhost:9000</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

免密码ssh设置

现在确认能否不输入口令就用ssh登录localhost:
$ ssh localhost

如果不输入口令就无法用ssh登陆localhost,执行下面的命令:
$ ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

执行

格式化一个新的分布式文件系统:
$ bin/hadoop namenode -format

启动Hadoop守护进程:
$ bin/start-all.sh

Hadoop守护进程的日志写入到 ${HADOOP_LOG_DIR} 目录 (默认是 ${HADOOP_HOME}/logs).

浏览NameNode和JobTracker的网络接口,它们的地址默认为:

将输入文件拷贝到分布式文件系统:
$ bin/hadoop fs -put conf input

运行发行版提供的示例程序:
$ bin/hadoop jar hadoop-*-examples.jar grep input output ‘dfs[a-z.]+’

查看输出文件:

将输出文件从分布式文件系统拷贝到本地文件系统查看:
$ bin/hadoop fs -get output output
$ cat output/*

或者

在分布式文件系统上查看输出文件:
$ bin/hadoop fs -cat output/*

完成全部操作后,停止守护进程:
$ bin/stop-all.sh

完全分布式模式的操作方法

关于搭建完全分布式模式的,有实际意义的集群的资料可以在这里找到。

 

你在业余时间都开发过什么?

这多年来,我面试过很多程序员。最近,我在思考一个事情,究竟通过一个什么样的问题能够最大的获取一个人对于编程的能力和热忱的信息。

我总结出来,只有这个问题具有最强的钻透力:

你在业余时间都开发过什么?

我喜欢这个问题,因为它一次触及到了很多方面。业余时间是一种很宝贵的资源,你通常会把它用到你最感兴趣的事情上。如果把这种资源用于开发,这是一个 很强的信号,说明你热心于此。另一方面,如果得到的回复是“啊?”或“在业余时间?”,这也许能很好的提示你,他可能不是你要找的人。

而他们所做的是些什么事情,也是一个有趣的指示器。他们是否对开源项目捐赠过代码?是否有过把一种工具移植到一种新语言上?利用一些新科技开发出一些很酷的工具?根据他们开发的东西以及开发的原因,你能真正的洞悉他们的思想动机和挑战精神。

这个问题同样能让你了解到他们保持技术更新和自学的能力。如此多的新技术和新思想不断的产生,要想不落伍需要付出努力。你几乎不可能在“工作时间”做这种事情。

这就是我为什么喜欢这个问题、所有面试都要提出这个问题的原因。

你最喜欢的问题是什么?

更新:

非常感谢你们对这个特殊的话题的各种反应和观点。我完全没有想通过这么一个问题就简单的对应聘者进行分类的意思,这只是在我依据个人经验得出的一个小 小的观点。我主要想表达的是,我想弄清一个人究竟对什么感兴趣。如果有人说“一天的工作后,为什么我还要在家工作呢?”,我完全赞同!但这种事情不应该被 看成是“工作”。

也许,或者你应该偶然在家做的事情。我平均每周会用2-3小时在家去实现我的一些想法,或测试某些新技术,或只是读一本好书。这很难说无法做到。

而且,我认为,随着时间的积累,这越发显得重要。当你在某个领域积累了很深的知识和经验,这会成为你观察问题的多棱镜。扩展知识面会让你在新项目上产生有创意(甚至令人惊讶)的想法,对过去棘手的问题产生新思路,或带来很多个人乐趣。

关键就是对编程的一种渴望,如果不敲键盘,手会痒痒。

原文:Matan Amir
译文:外刊IT评论

resin 4 版破解方法。

how to crack resin 4.

工具:jd http://java.decompiler.free.fr/

利用jd打开resin 4目录下的lib/pro.jar

将源代码另存出来。再用eclipse打开LicenseStore.java

查找init()函数,将init()函数中的

/*  69 */     this._personalCount;

/*  70 */     this._professionalCount;

改为

/*  69 */     this._personalCount = 100;

/*  70 */     this._professionalCount = 100;

 

然后编译为class文件,用winrar将class文件加入到lib/pro.jar,覆盖原来的文件。

即可。

验证:运行 resin,在浏览器中打开http://127.0.0.1:8080/resin-admin。破解版是有图表的。

 

 

resin 3.1.xx版破解方法。

工具:jd http://java.decompiler.free.fr/

利用jd打开resin 3.1.xx目录下的lib/license.jar

将源代码另存出来。再用eclipse打开LicenseStore.java

查找init()函数,将init()函数中的

this._serverCount;

改为

this._serverCount = 100;

然后编译为class文件,用winrar将class文件加入到lib/license.jar,覆盖原来的文件。

即可。

验证:运行 resin,在浏览器中打开http://127.0.0.1:8080/resin-admin,查看config,看到connection-max为1048576,即破解成功。

 

TCP ports

hmux://127.0.0.1:6800
accept-thread-min 5 keepalive-max 128
accept-thread-max 10 keepalive-select-max -1
accept-listen-backlog 100 keepalive-timeout 15000
connection-max 1048576 socket-timeout 65000
keepalive-connection-time-max 600000 suspend-time-max 600000
http://*:8080
accept-thread-min 5 keepalive-max 128
accept-thread-max 10 keepalive-select-max -1
accept-listen-backlog 100 keepalive-timeout 15000
connection-max 1048576 socket-timeout 65000
keepalive-connection-time-max 600000 suspend-time-max 600000