程序员的自我修养、高效实践和自动化

2009年9月1日 robertbao 1 条评论

[程序员的自我修养]

程序员,只是个职业而已,不比其他职业高贵,也不比其他职业低贱。这里不谈程序员自我修养的微观实践,只从宏观的角度谈谈程序员的道路选择。

我这里说的程序员,是指广义的,IT行业中常年与编码打交道的那么一群人,他们的称呼有可能为:程序员、软件工程师、高级软件工程师、架构师、系统管理员等不一而足。

两个典型的场景:

  1. 国外四五十岁,甚至头发花白的程序员依旧在第一线编程,对他们,我们不由心生尊敬
  2. 如果有看到国内这样的人,恐怕很多人都是内心充满鄙夷:怎么混的这么惨,还在写程序?

也无怪乎人们这样想,其实这样想的人心中隐含的有朴素的价值判断:老外那么大年龄的程序员收入多高,国内的这么大年龄的还在编程序,收入又低又没前途。

确实对于目前国内的情况来说,好像摆在大龄程序员面前的就只有两条路,要么升职转向管理要么转行不干程序员了,否则就只有留着被鄙视。

的确悲哀,很多有才华的程序员不能在专业的道路上继续专精,很是浪费。不过这就是现实,服从现实还是遵从内心,这是个问题。

[程序员的高效实践]

作为一个程序员,也当每日三省吾身,努力地让自己成为一个高效的程序员,不断地在细节上精益求精,切实地消除浪费、提高效率。

在《Programming Perl》一书中,Larry Wall说:懒惰、傲慢和缺乏耐性是程序员的三大美德,其中的两点都与程序员的效率有关。只有高效才能减少需要完成的工作量,保持懒惰;只有缺乏耐性才不会浪费时间去做本该计算机做的事,保持高效。

要做到高效,根本上是在思想方法上下功夫,但是具体实践细节也不容忽视,下面我列出一些比较有效的实践:

  1. 首选键盘而非鼠标,文本编辑用vi或emacs,手不用离开键盘
  2. 花点时间学习你手边常用的快捷键,如windows的、word的、ide的
  3. 减少重复,用自动化脚本代替你的工作,windows下可以学习AHK
  4. 少用长长的树状列表,多用搜索
  5. 保持清洁
  6. 保持简单
  7. 用好正则表达式

[程序员的自动化]

为什么是程序员?

我想不出还有什么职业比程序员更接近计算机,让机器代替我们工作,让我们享受自动化带来的快乐。

自动化的好处?

自动化最少能带来下面两个显而易见的好处:

  1. 减少工作量,减轻重复劳动
  2. 减少手工工作出错的机率

把什么自动化?

我们无法把每件事都自动化,所以先把事情分分类[1]

  1. 只做一次的事情:既然只做一次,我想就没太大必要自动化,要做成自动化会比直接做事更花时间
  2. 重复做的事情:只要有重复就一定能找出其中共性的部分,马上把它抽取出来,开始自动化

如何自动化?

可以考虑按下面4个步骤来进行:

  1. 手动去做一遍:首先要确定你可以手动执行此流程,或许你可以写下此流程,这样一是确保不会遗漏步骤,二是可以强迫你好好再想上一想
  2. 编写每个步骤的脚本代码:把每个步骤转成由命令行或小程序组成的脚本,并单独测试每个步骤,确保每个步骤的脚本都是正确的,有些参考资料[2]可以帮到你
  3. 把所有步骤的脚本合在一起:如果在这步能够渐增式合并的话,可以将最终脚本的错误率降至最低
  4. 最后别忘了测试:写个自动化脚本即使我们用不到TDD[3],最后的测试还是不要忘了

自动化脚本举例

参见我以前所用的一个oracle数据备份脚本的片段:

day=`date ‘+%Y%m%d’`

su – oracle <<EOF
rman target / nocatalog;
run {
allocate channel t1 type disk;
sql ‘alter system archive log current’;
backup format ‘/back/rman/last/arch/arc_%d_%T_%u_%s_%p’ archivelog all delete input;
release channel t1;
}
exit
exit
EOF

mt -f /dev/rmt/0mn eod
cd /back/rman
tar cvf /dev/rmt/0mn last/arch/arc_$day_*


注释:

  1. 国外也有人用四象限法把事情按是否重复和简单还是复杂分为四类
  2. Windows下可以参考《Win32 Perl Scripting》,Unix下可以参考《Advanced Bash Scripting Guide》
  3. TDD:测试驱动开发,Test-driven development,利用测试来驱动软件程序的设计和实现,极限编程中倡导的一种程序开发方法
分类: WORK 标签: ,

Java SE for Business–Java收费版

2009年7月25日 robertbao 3 条评论

现在访问Sun的JDK/JRE下载页面,可以看见在通常的JDK/JRE下载项之下已经悄然加上了Java SE for Business,

java-business.jpg

Sun对此官方的描述是:

Faster access to critical fixes, a longer support roadmap, and enterprise features designed to reduce the cost of deployment. Each JRE or JDK version you select for download is made available in binary format and includes the related license files and other documents.

说的很清楚,Sun要靠提供JDK/JRE的服务和第一时间的补丁修正来赚钱了,不知这是不是Sun被Oracle收购后的盈利压力造成,确实Sun守着Java这棵摇钱树这么些年,花出去的钱如流水,真金白银却赚的很少,反而是处处被IBM抢得先机。看样子现在Sun是该让Oracle教教它该怎么赚钱了。

分类: WORK 标签: , , ,

以实际行动庆祝建党88周年

2009年7月1日 robertbao 3 条评论

不错,不错,招商银行以实际行动庆祝建党88周年,今天股价又涨了不少,看来最近的这次投资还算是成功。最近金融板块集体狂欢,银监会下发《关于进一步加强信贷管理的通知》,看样子是可以被理解为银行股的长期利好。中金公司最新研究报告也继续看好银行股走势,预计银行业在下半年将进入盈利稳定增长通道,将2009 年和2010年行业盈利预测分别上调3%和14%。我也认为银行股仍有不少的上涨空间,当前的股价还是远被低估了,继续持有一段时间再说。

jiandang_88.jpg
stock_zhaoshang.jpg

分类: PASTIME 标签: ,

网站配色方案

2009年6月3日 robertbao 3 条评论

下面是本站的配色方案,色系的选择以简约、清新为主,冷暖结合。

web_color.jpg

下面是我比较常用的几个色彩选择:

web_color_01.png

web_color_02.png

web_color_03.png

web_color_04.png

分类: WORK 标签: ,

Mysql主从服务器配置

2009年5月29日 robertbao 1 条评论

虽然Mysql与大型商用数据库服务器,如Oracle、DB2等相比,在功能、性能和稳定性等方面差距不小,但Mysql对于中小型的数据库应用远远能够满足需要,绝对不失为一款优秀的数据库软件。下面我介绍一个Mysql中稍微高阶的特性,在Windows下进行Mysql服务器主从配置的过程,所使用的Mysql版本为5.0.12。

1、准备工作

从Mysql官方网站下载Mysql解压包mysql-noinstall-5.0.12-win32.zip,注意是解压包,不是安装包。

解压为两个目录:

mysql-5.0.12-master和mysql-5.0.12-slaver

2、主服务器配置

2.1、修改mysql-5.0.12-master/my.ini,其中

[client]
port = 3306
[mysqld]
server-id = 1
port = 3306
binlog-do-db =test
binlog-ignore-db=robertbao
log-bin=mysql-bin

2.2、运行mysql-5.0.12-master/bin/mysqld.exe

2.3、进入命令行,创建同步用户

grant replication slave,reload,super on *.*
to robertbao@'localhost'
identified by '123456';

2.4、查看主服务器状态

show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | test | robertbao |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

3、从服务器配置

3.1、修改mysql-5.0.12-slaver/my.ini,其中

[client]
port = 3308
[mysqld]
server-id = 2
master-host = localhost
master-user = robertbao
master-password = 123456
master-port = 3306
port = 3308

3.2、运行mysql-5.0.12-slaver/bin/mysqld.exe

3.3、进入命令行,参照主服务器状态数据,执行操作

slave stop;
change master to master_log_file='mysql-bin.000001',master_log_pos=106;
slave start;

4、结果

在主服务器命令行中

use test;
create table mysite;

然后在从服务器命令行中

use test;
show tables;

能看到

+----------------+
| Tables_in_test |
+----------------+
| mysite |
+----------------+
1 row in set (0.00 sec)

说明主从服务器数据已经同步成功,在主服务器中建的表在从服务器中也有了。

分类: WORK 标签: ,