六月 17th, 2008

[Tech]强弱结对

周末和儿子一起玩一个玩具,一个很有意思的智力玩具,从简单得到4岁娃能享受的智力玩具。在玩的过程中儿子不停的问我:这样对吗?我说你认为呢?

其中发现两个事情:
1、孩子对自己的不确定,无信心
2、家长的权威

这和强弱结对编程很像,如果熟练的一方一直想要保持自己的权威这样的话会对刚进项目的人非常大的心里打击。

1、无法自己独立思考。这样非常容易不熟练的一方容易丢失沟通信息。
2、自信心建立缓慢。一整天面对大量的代码,一整天面对把你支来支去的伙伴。你肯定感觉很沮丧。
3、日后成为熟练程序员后也会同样的对待新手。这很显而易见,当权威总能有较好的结果的话,每个人都会去追求权威。这样就会恶性循环……

作者: kingfish 5:59 pm | No Comments »

四月 24th, 2008

[Tech]程序员,你打算怎么装你的笔记本?

经过很多天的反复格式化和重装系统,我的笔记本中的软件已经趋向稳定。感觉有些心得,所以与大家分享。

先说说我的硬件环境:Dell D620,2G 内存,80G 硬盘

先展示一下我的Ubuntu环境:

Ubuntu 7.1 Server 64 bit 作为 Host 操作系统,负责虚拟机的管理并提供操作 Guest 虚拟机的图形界面,能够浏览网页与聊天。主要思路是Host没有具体任务,大部分日常工作相关的事情全部在虚拟机上完成,虚拟机的灵活程度可以说已经很好很强大了。只是虚拟机中的Windows运行速度有些差强人意,但是灵活啊,你不用考虑到Windows的不稳定,你也不用考虑使用Ghost来恢复映像文件,一个硬盘就是一个文件。虚拟机也提供了很多非常有特色的功能,比如说基于某个硬盘的数据新建另一个硬盘等等。这种灵活无比的方案在我折腾了一个晚上映射Host的USB端口到Guest后而遭到放弃。实在不像一个Desktop机器,最后总结出来Ubuntu+VM的方案只适用于服务器,desktop需要更多的特性。

我在心灰意冷之后发现微软已经发布 Windows Server 2008,所以决心一试:

Windows Server 2008 64位 装完之后所占用的内存和硬盘让我大吃一惊,别管怎么说,新产品嘛。先说说好的地方:

  1. 画面更精致了(看出投入了大价钱)
  2. 搜索功能更强大了(有些不会用,但可以代替Launchy)
  3. 网络连接图标不闪了
  4. 关机更快了

但是还有一些不爽的地方:

  1. 有一些软件没有64位的版本,比如:招商银行专业版的64位版本还在开发团队的手中,当前无法使用
  2. 内存占用较大
  3. 硬盘占用较大

就在我在享受Windows2008所带来的好处与缺点的时候,又发现了一个好东西:PortableApps

此软件可以使我日常所用的工具放置在一个u盘中随时带走。这极大的减少了必装软件的数量,提高系统稳定性。经过几天的试用,我决定再次格式化计算机……

这次以Windows XP为主操作系统

已经平稳运行好几天了,说说得到的好处吧:

  1. 因为采用大量的portable软件所以ghost备份文件相对较小。
  2. 兼容性达到最高,几乎所有windows的软件都能够运行。
  3. 内存与硬盘占用较少,腾出空间给真正需要的应用。

总之,这回比较理想了,作为桌面用机,兼容性和快速恢复才是王道。

作者: kingfish 3:57 pm | 1 Comment »

三月 15th, 2007

[Tech]Java Pattern速查手册

很久以前弄的东西,找的时候还真不方便

Java Pattern 速查手册

作者: kingfish 12:45 pm | 2 Comments »

三月 11th, 2007

[Tech]软件工程

对于软件工程我已经思考了很长时间(估计有几年时间了),也在dev2dev的论坛上与很多人分享了一些心得。主要是今天受了大半天的刺激(上软件工程的课),所以把想说的话写到这里。

很多东西到了中国就有些变味道,就比如软件工程吧——拿来的,我们是真正用来解决“危机”吗?我想主要是为了以下两点吧……

Read the rest of this entry »

作者: kingfish 12:47 am | 3 Comments »

八月 5th, 2006

[Tech]About learning

在邮件组里面遇到新同学的问题,我简单的说了说自己的想法。放到这里等待大家的高见…

提问:
这几天正在努力的学习基础知识,发现自己不懂的地方还很多,有些东西心里明白
但就是不知道该怎么说,看来自己还停留在比较肤浅的层次,找工作倒不急,努力学习才是正道
学习贵在融会贯通,JAVA技术太过庞杂,层出不穷,要想融会贯通,灵活运用不是一件容易的事

这么多新技术,该怎么去学,我以前的思路是用到什么学什么,不用的话就不去管他,但这样好象有点偏激,而且容易造成自己的知识结构不完整。
我们该去追求深度还是广度,或者说我们应该偏向那一方,时间和精力是有限,困难的是怎么去把握这个度呢?
请教各位前辈
当一种新技术出现的时候 该怎么去面对?
当我们学习一种新技术的时候
该怎么去学习呢?有没有比较好的步骤和方法?

回答:
首先我不是精力旺盛的人,如果您精力旺盛请直接跳过这些文字,谢谢

我一般是
多看、少用、勤动手
多看就是什么都看看,非常简单的看,了解功能就成
少用就是尽量少的使用,不得已才选用,选择前途光明的东西
勤动手就是多看使用工具的源代码,进一步了解你所用的东西

用剪子同样能剃头,你新学会用推子也不能代表你剃头剃得好
推子我以前用不着,所以不想学了。但最近经常来平头的活,没有办法。
突然发现有电动推子了 ;-)

但说回来了,找工作的话似乎会用的工具越多越好,如果你想多写点东西的话我推荐你学学.net或者ruby,这样感觉更有分量。

你表达意思一般使用中国话,但是你学过英语之后可以用另外的语言来表达自己的想法,而且感觉表达的程度不一样。这就是为什么劝你多学几种语言的用意。

归根到底,你需要提高你对软件的理解、对面向对象的理解、对不同项目的理解、对身处环境的理解。

ps:怎么我说的感觉这么别扭呢,像个道士或者和尚说的吧。哈哈…

最近IBM给我们做项目,有个基于Hessian的远程调用的工具,死活不肯开放源代码
而且感觉过渡设计了。一不做二不休解剖了,重新做一个。唉,用开源的东西用习惯了……

好久不写blog了,这篇就当我的一篇文章吧

作者: kingfish 11:00 pm | No Comments »

十月 17th, 2005

[Tech]使用JasperReports

use jasperReport

程序流程是这样的:
0、在web.xml文件中添加上面两个servlet的映射,在struts全局映射添加跳转到GenerateReportServlet的名称。
1、用iReport做好xml文件
2、放到项目报表默认的目录
3、新建类(如:report1)继承ReportTemplet,如果需要直接打印的话就需要实现DirectPrintable接口
4、在action准备好的数据set到新建的类中(如:report1),并跳转至GenerateReportServlet
5、servlet拆开类中的数据,使用ReportUtils生成需要的东西。
6、反馈给客户端。
如果需要批量输出的话,新建一个BatchReportBag对象,把report1等报表对象set进去。同样跳转至GenerateReportServlet

实际情况可能比这个复杂,因为牵扯到代码翻译的问题。

作者: kingfish 12:52 pm | 1 Comment »

一月 27th, 2004

[Tech]mySQL学习笔记

学习mySQL主要就是想多一种数据库的选择,只要能用起来咱们再说别的。关系数据库说起来也用了一段时间了,说到这个又让我想起来一件事情。每当我问同事设计程序先从哪里入手。他们总是说先搞数据库设计再去编软件……。我记得Kent Back穿过一件T-shirt,上面写着:“你还在用数据库吗?”。我们当然不能一步就走到大师这样的一个水平。但是我们应到意识到数据库只是数据处理一种方法、一种途径。不是程序的主要,更不是全部。言归正传……

测试服务器是否正常
C:\mysql\bin\mysqlshow
C:\mysql\bin\mysqlshow -u root mysql
C:\mysql\bin\mysqladmin version status proc
C:\mysql\bin\mysql test

你也应该为root用户增加一个口令:

C:\mysql\bin\mysql mysql
mysql> DELETE FROM user WHERE Host=’localhost’ AND User=”;
mysql> QUIT
C:\mysql\bin\mysqladmin reload
C:\mysql\bin\mysqladmin -u root password your_password

在你设置了口令以后,如果你想要关掉mysqld服务器, 你能使用这个命令做到:

mysqladmin — user=root — password=your_password shutdown

看看有多少数据库
mysqlshow -u root -p
mysql> SHOW DATABASES;

看看数据库里面有多少个表
mysqlshow [数据库名] -u kingfish -p
mysql> SHOW TABLES;

使用数据库
mysql>user [数据库名]

察看使用的数据库
mysql> SELECT DATABASE();

删除数据库
DROP DATABASE [IF EXISTS] db_name

自己使用的一个数据库
mysql> GRANT ALL ON [数据库名].* TO your_mysql_name;

察看表结构
DESCRIBE [表名];

导入数据

为了装载文本文件“pet.txt”到pet表中,使用这个命令:
mysql> LOAD DATA LOCAL INFILE “[文件名]” INTO TABLE [表名];

日期转换成年份
SELECT name, (TO_DAYS(NOW())-TO_DAYS(birth))/365 FROM pet;

如果非空
WHERE death IS NOT NULL

为了找出包含正好5个字符的名字,使用“_”模式字符: //这个还是比较有意思的
mysql> SELECT * FROM pet WHERE name LIKE “_____”;

备份数据库
mysqldump –add-drop-table –opt test > backup-file.sql
改变表结构
ALTER TABLE t2 ADD PRIMARY KEY (name);

作者: kingfish 12:46 pm | No Comments »
Google