2008年12月31日星期三

2009五大目标

1. 爬10座1000米以上的山,今年只爬了3座1000米以上的
2. 练到一天能做100俯卧撑,现在只能做50个
3. 体重降到65kg, 今年已经成功的降到70kg了
4. 至少钓一次鱼,顺便烧烤
5. 来一次超过50km的骑行

2008年12月25日星期四

Linux之磁盘管理

fdisk -l, 查看所有硬盘信息
// .. TODO

2008年12月23日星期二

Linux之解压缩

列几个最常用的

.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName


.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName


.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName


.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName


.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz


其他见原文:http://soft.zdnet.com.cn/software_zone/2007/1009/542973.shtml

Ubuntu中装nvidia显卡

1、下载驱动
http://www.nvidia.com/page/home.html
在下下载的就是NVIDIA-Linux-x86-100.14.23-pkg1.run这个文件

2.停止GDM进程
sudo /etc/init.d/gdm stop
按Ctrl+Alt+F1,登录后

3.进入下好的驱动所在目录(用ls命令确认文件在不在)
sudo sh NVIDIA-Linux-x86-100.14.23-pkg1.run
安装过程中,
如果提示有旧驱动,询问是否删除旧驱动,选Yes;
如果提示缺少某某模块(modules),询问是否上网下载,选no;
如果提示编译模块,询问是否进行编译,选ok;
如果提示将要修改Xorg.conf,询问是否允许,选Yes;
接下来就是等待安装完成

4.安装完成就回到终端,重启GDM
sudo /etc/init.d/gdm restart

原文:http://doc.linuxpk.com/80140.html

2008年12月22日星期一

2008年12月15日星期一

DB2隔离级别和锁一点总结

四种级别由高到低要牢记:RR, RS, CS(Default), UR
任何级别的写得时候都需要加X锁,这样保证没有Lost updates
UR读不加锁,所以有Dirty Read
CS读只对当前游码加S锁,所以有可能有Nonrepeatable Read
RS读对读取到得到的结果级都加锁,只会有Phantom
RR读也对读取到得到的结果级都加锁,连Phantom都没有(why?)

参考: http://blog.chinaunix.net/u1/33594/showart_327266.html

2008年12月14日星期日

SQL之集合操作

和集:UNION
保留重复行的和集:UNION ALL
交集:INTERSECT
集合相减:EXCEPT

后面两个用法似乎我还没咋用过啊

2008年12月13日星期六

Create Table中不熟悉的用法: LIKE, GENERATED

LIKE: 按已有表结构生成另一种表
CREATE TABLE MYBOOKS LIKE BOOKS

GENERATED: 字段是自动生成的,最普通的情况是自增
CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
FICTIONBOOKS INTEGER,
NONFICTIONBOOKS INTEGER,
TOTALBOOKS INTEGER
GENERATED ALWAYS AS (FICTIONBOOKS + NONFICTIONBOOKS)
)

2008年12月10日星期三

一个合格程序员该做的事情(ZZ+Mark)

一个合格程序员该做的事情——你做好了吗?


程序员每天该做的事

1、总结自己一天任务的完成情况
最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多 (恰好前几天刚才开始这样做)

2、考虑自己明天应该做的主要工作
把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作 (经常列TODOs, 但没有合理规划过)

3、考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法
出错不要紧,最重要的是不要重复犯相同的错误,那是愚蠢 (没做到)

4、考虑自己一天工作完成的质量和效率能否还能提高
一天只提高1%,365天你的效率就能提高多少倍你知道吗? (1+0.01)^365 = 37 倍 (没做到)

5、看一个有用的新闻网站或读一张有用的报纸,了解业界动态
闭门造车是不行的,了解一下别人都在做什么,对自己能带来很多启示 (用google reader + CSDN)

6、记住一位同事的名字及其特点
你认识公司的所有同事吗?你了解他们吗? (基本还8错,人缘还可以)

7、清理自己的代码
今天完成的代码,把中间的调试信息,测试代码清理掉,按照编码风格整理好,注释都写好了吗? (没做到)

8、清理自己的桌面
当日事当日毕,保持清洁干劲的桌面才能让你工作时不分心,程序员特别要把电脑的桌面清理干净 (没做到)

程序员每周该做的事
1、向你的老板汇报一次工作
让你的老板知道你在做什么,这很重要。可以口头、书面、邮件,看你老板的工作方式而定 (每周有例会)

2、进行一次自我总结(非正式)
这周之内自己表现得怎么样?该加分还是扣分? (没做到)

3、制定下周计划
把下周要做的事情列出来,一样要分清楚优先级 (没做到)

4、整理自己的文件夹、书柜和电脑文件
把桌面以外的地方也要清理干净,电脑的文件夹,收到的邮件,把过时的垃圾全部清理掉 (没做到)

5、与一个非公司的朋友沟通
它山之石,可以攻玉 (做到了)

6、看一本杂志
找一本适合自己的专业杂志 (没怎么看过计算机杂志)

7、纠正自己或同事一个细节上的不正确做法
《细节决定成败》看过了吗?没看过强烈建议先看看(找本看看先)

程序员每月该做的事
1、至少和一个同事一起吃饭或喝茶
不光了解自己工作伙伴的工作,还要了解他们的生活(做到了)

2、自我考核一次
相对正式地考核自己一下,你对得起这个月的工资吗? (没)

3、对你的同事考核一次
你的同事表现怎么样?哪些人值得学习,哪些人需要帮助? (没)

3、制定下月的计划,确定下月的工作重点 (有时)

4、总结自己工作质量改进状况
自己的质量提高了多少? (没)

5、有针对性地对一项工作指标做深入地分析并得出改进的方案
可以是对自己的,也可以是对公司的,一定要深入地分析后拿出自己的观点来。要想在老板面前说得上话,做的成事,工作上功夫要做足。 (没)

6、与老板沟通一次
最好是面对面地沟通,好好表现一下自己,虚心听取老板的意见,更重要的是要了解老板当前关心的重点 (没,都是老板找我)

程序员每年该做的事
1、年终总结
每个公司都会做的事情,但你真正认真地总结过自己吗? (有时会)

2、兑现给自己、给家人的承诺
给老婆、儿子的新年礼物买了没有?给自己的呢? (哎,做得不够)

3、下年度工作规划
好好想想自己明年的发展目标,争取升职/加薪、跳槽还是自己出来干? (有时会)

4、掌握一项新技术
至少是一项,作为程序员一年要是一项新技术都学不到手,那就一定会被淘汰。
掌握可不是看本书就行的,要真正懂得应用,最好你能够写一篇教程发表到你的blog (真的没做到啊,这个很重要啊)

5、推出一种新产品
可以是一个真正的产品,也可以只是一个类库,只要是你创造的东西就行,让别人使用它,也为世界作点贡献。当然如果真的很有价值,收点注册费也是应该的 (没做到)


6、与父母团聚一次
常回家看看,常回家看看(会的)

2008年12月8日星期一

NEO

今天参加了一整天NEO培训,听得我晕晕沉沉的,只有三句话给我留下了深刻的印象:
1.做一个开发团队的Leader,一定要在一两个领域有极深的水平才能服众
2.做技术深了很好转管理,做管理深了很难转技术,所以初期应以技术为重
3.在Lab打下的技术基础有多深,今后(商务,咨询,行业)的路才能走多远

2008年12月6日星期六

ClearCase & ClearQuest

人称CC+CQ, 原来这才是企业级的软件开发和质量管理控制平台阿

2008年12月5日星期五

SQL之data-change-table-reference

这也是偶还没用过的SQL,还是用例子说话:

SELECT salary FROM OLD TABLE (UPDATE employee SET salary = salary * 1.07 WHERE empno = '000220'); 这条语句取出update之前的数据

SELECT * FROM FINAL TABLE (INSERT INTO customers (cust_name) VALUES ('Lamarr')); 这条取插入后的数据
注意,这个方法非常有用,可以取出自增的字段

SQL之MERGE

之前一直没用过这个语句,学习一下:
MERGE INTO employee AS e #要merge到这个表里
USING (SELECTempno, firstnme, midinit, lastname, workdept, phoneno,hiredate, job, edlevel, sex, birthdate, salaryFROM my_emp) AS m #merge的内容,也可以是表和视图
ON e.empno = m.empno #merge的条件
WHEN MATCHED THEN UPDATE SET (salary) = (m.salary) #有冲突就更新,可以删除
WHEN NOT MATCHED THEN INSERT (empno, firstnme, midinit, lastname, workdept, phoneno,hiredate, job, edlevel, sex, birthdate, salary)VALUES (m.empno, m.firstnme, m.midinit, m.lastname,m.workdept, m.phoneno, m.hiredate,m.sex, m.birthdate, m.salary) #没冲突就插入

详细的说明在这:http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/doc/r0010873.htm?resultof=%22%4d%45%52%47%45%22%20%22%6d%65%72%67%22%20

2008年12月4日星期四

程序写得又快又好的秘诀

原文在这:http://www.limodev.cn/blog/,很多关于程序员成长好文章值得阅读(TODO),今天只读了''程序写得又快又好的秘诀",以下是摘要:
1.程序写的好才可能写的快,写不好何谈写得快。不好的程序会带来大量的bug,然后改bug生bug,程序永远写不完。
2.能写出接近一步到位,不出bug的程序员才是真正的高手
3.开发的前期一定要慢,需要耗费大量时间思考,即使没有文档也要思考
4.写完代码不要着急编译运行,要先review代码,如果没有pair那就自己Review。这样能大大减少debug的时间。
5.在Review的时候除了检查潜在的错误也要看能不能改进设计,如果能改进不要犹豫,开始重写代码,这里多花些时间是值得的。
6.多和别人交流,把自己的想法和思路讲给别人听,讲的时候实际上就是非常好的自我review

STAF/STAX

公司最近组织连续12小时的STAF/STAX的讲座,可见STAF/STAX地位和作用,可惜没时间听啊。有空一定要研究下
先记住这个网站:http://staf.sourceforge.net/
STAF:Software Testing Automation Framework, 名字够吓人,STAF 通过服务的方式提供一个自动测试框架。
STAX则是一个运行testcase的引擎。他是基于Python的...
这关系咋有点像Web service和BPEL引擎呢?

DB2 Everyplace的前辈Michael Rosett

今天竟然搜到了前辈牛人Michael Rosett,他已经去Google了啊
网址:http://www.linkedin.com/in/michaelrosett
原来Rosett开始写DB2e的时候还是个刚出道不久的本科毕业生啊,他现在可能还在寻思,几年前老子初学练手写的这堆垃圾代码还有人维护吗?

Java中的文件路径

今天一定在这里解决这个问题,通过路径读文件一般就3种方式,但他们完全不同:

1. File myFile=new File("myfile.txt");
上面这么写是从当前路径读文件,当前路径指启动当前Java进程的路径,不同的情况这个路径都不一样,在eclipse里一般是当前项目的路径,在Servlet里一般就是Servlet容器的路径。这个路径的绝对值可以通过System.getProperty("user.dir"))取到。这个方法同时可以通过绝对路径取文件,如File myFile=new File("D:\\temp\\myfile.txt"); File myFile=new File("/usr/user1/myfile.txt");

2. InputStream myFileStream = this.getClass().getResourceAsStream("myfile.txt");
从当前类所在路径读文件, myfile.txt应该是和当前这个类在同一个目录中的文件。如果路径前放了个"/", 如this.getClass().getResourceAsStream("/myfile.txt"),那就是从当前classpath开始读了

3.InputStream myFileStream = this.getClass().getClassLoader().getResourceAsStream("myfile.txt");
这个容易和第2种混淆,它是指从classpath开始找文件,前面加不加"/"都一样,其实它相当与this.getClass().getResourceAsStream("/myfile.txt"), 与这个有相同效果的还有
Thread.currentThread().getContextClassLoader().getResourceAsStream("myfile.txt")或
Thread.currentThread().getContextClassLoader().getResourceAsStream("/myfile.txt")
ClassLoader.getSystemResource("myfile.txt")或
ClassLoader.getSystemResource("/myfile.txt")



下面这个代码
package com.test.path;
import java.io.File;
class TestPath {
public static void main(String[] args) throws Exception {
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println(TestPath.class.getClassLoader().getResource(""));
System.out.println(ClassLoader.getSystemResource(""));
System.out.println(TestPath.class.getClassLoader().getResource(""));
System.out.println(TestPath.class.getResource(""));
System.out.println(TestPath.class.getResource("/"));
System.out.println(new File("").getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
}
}
它的输出:
file:/C:/TestArena/bin/
file:/C:/TestArena/bin/
file:/C:/TestArena/bin/
file:/C:/TestArena/bin/
file:/C:/TestArena/bin/com/test/path/
file:/C:/TestArena/bin/
C:\TestArena
C:\TestArena

2008年12月3日星期三

CODESET, TERRITORY, COLLATE

create table会用到这三个参数
CODESET其实就是codepage,表示你可以在数据库里存什么样的文字,GBK当然指可以存中文或者英文。UTF8或者USC-2这些Unicode当然啥文字都支持了。
TERRITORY填国家号比如CN, UK之类,它会影响日期和事件的格式。
COLLATE是指String类型(char, varchar)的比较方和排序的方式,IDENTITY是最快的,它根据bit来比。其他的方式会依赖字符集,精确一些但是开销大。

详细的说明(其他的都不用看了)看infocenter:
http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.admin.nls.doc/doc/t0004617.html

DB2 marks

http://db2bookmarks.com/

ADMIN_CMD

如果想在JDBC里执行DB2命令,如reorg,使用ADMIN_CMD这个存储过程就OK
CALL SYSPROC.ADMIN_CMD ('REORG TABLE TEST.SCT1')

Solid State Drive (SSD)

1.SSD其实就是企业级U盘,可以取代传统硬盘
2.SSD的存取速度大大超过传统硬盘,直逼内存的速度
3.如果用SSD来实现DB的存储,数据访问速度可提高1000倍,最后的响应速度可以提高10倍
4.SSD虽然在局部极大提升速度,但是终端用户感觉不明显,它主要的作用是能大大的提高系统的并发处理能力和吞吐量,也就是提高一台服务器可支持的客户量。
5.SSD的可擦写次数是有限的,所以最好用于读操作的应用,如BI
6.某些公司,如baidu已经开始使用SSD提升局部的性能了,用SSD来保存索引是个好主意
7.SSD的发展可能改变传统的软件开发模式,很多用cache的地方都可以不用了,因为硬盘和内存已经快一样快了,也许有一天DB2就和Solid DB一样快了

2008年12月2日星期二

Reorg & Truncate

Reorg: 整理page或者index碎片,当使用alter命令改变表结构时,会产生碎片,表停留在Reorg Pending状态,读写操作都会被阻止
两个存储过程来查询Reorg的状态
REORGCHK_TB_STATS
REORGCHK_IX_STATS


Truncate: 清空表而不写日志,当表数据量大时必须使用。可惜DB2没有Truncate指令,汗,有两种方式达到同样的效果
1.alter table tablename ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE;
2.import 一个空文件

第一篇

希望这是唯一的一篇废话。
十年前刚来北京的时候,我还是个踌躇满志的小伙子,渴望成为一名技术高手。可是现在我发现我还是一无无成,仍旧停留在初级阶段,宝贵的时间都被浪费,和高手的差距也越来越大。我的黄金十年就这样逝去了。
我再给我十年来完成这个目标,希望这个Blog能祝我一臂之力。