失乐园

技术之路

BlogJava 联系 聚合 管理
  19 Posts :: 44 Stories :: 40 Comments :: 0 Trackbacks

2011年4月28日 #

linux下添加,删除,修改,查看用户和用户组

1,创建组

groupadd test

增加一个test

2,修改组

groupmod -n test2 test

test组的名子改成test2

3,删除组

groupdel test2

删除 test2

4,查看组

a),查看当前登录用户所在的组 groups,查看apacheuser所在组groups apac

 一,组操作

1,创建组

 

groupadd test

 

增加一个test

 

2,修改组

 

groupmod -n test2  test

 

test组的名子改成test2

 

3,删除组

 

groupdel test2

 

删除 test2

 

4,查看组

 

a),查看当前登录用户所在的组 groups,查看apacheuser所在组groups apacheuser

 

b),查看所有组 cat /etc/group

 

c),有的linux系统没有/etc/group文件的,这个时候看下面的这个方法

 

cat /etc/passwd |awk -F [:] ‘{print $4}’ |sort|uniq | getent group |awk -F [:] ‘{print $1}’

 

这里用到一个命令是getent,可以通过组ID来查找组信息,如果这个命令没有的话,那就很难查找,系统中所有的组了.

 

二,用户操作

 

1,增加用户

 

查看复制打印?

[root@krlcgcms01 mytest]# useradd –help

Usage: useradd [options] LOGIN

 

Options:

-b, base-dir BASE_DIR       设置基本路径作为用户的登录目录

-c, comment COMMENT         对用户的注释

-d, home-dir HOME_DIR       设置用户的登录目录

-D, defaults                改变设置

-e, expiredate EXPIRE_DATE 设置用户的有效期

-f, inactive INACTIVE       用户过期后,让密码无效

-g, gid GROUP               使用户只属于某个组

-G, groups GROUPS           使用户加入某个组

-h, help                    帮助

-k, skel SKEL_DIR           指定其他的skel目录

-K, key KEY=VALUE           覆盖 /etc/login.defs 配置文件

-m, create-home             自动创建登录目录

-l,                           不把用户加入到lastlog文件中

-M,                           不自动创建登录目录

-r,                           建立系统账号

-o, non-unique              允许用户拥有相同的UID

-p, password PASSWORD       为新用户使用加密密码

-s, shell SHELL             登录时候的shell

-u, uid UID                 为新用户指定一个UID

-Z, –selinux-user SEUSER     use a specific SEUSER for the SELinux user mapping

[root@krlcgcms01 mytest]# useradd --help

Usage: useradd [options] LOGIN

 

Options:

 -b, --base-dir BASE_DIR       设置基本路径作为用户的登录目录

 -c, --comment COMMENT         对用户的注释

 -d, --home-dir HOME_DIR       设置用户的登录目录

 -D, --defaults                改变设置

 -e, --expiredate EXPIRE_DATE 设置用户的有效期

 -f, --inactive INACTIVE       用户过期后,让密码无效

 -g, --gid GROUP               使用户只属于某个组

 -G, --groups GROUPS           使用户加入某个组

 -h, --help                    帮助

 -k, --skel SKEL_DIR           指定其他的skel目录

 -K, --key KEY=VALUE           覆盖 /etc/login.defs 配置文件

 -m, --create-home             自动创建登录目录

 -l,                           不把用户加入到lastlog文件中

 -M,                           不自动创建登录目录

 -r,                           建立系统账号

 -o, --non-unique              允许用户拥有相同的UID

 -p, --password PASSWORD       为新用户使用加密密码

 -s, --shell SHELL             登录时候的shell

 -u, --uid UID                 为新用户指定一个UID

 -Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mappinguseradd test

 

passwd test

 

增加用户test,有一点要注意的,useradd增加一个用户后,不要忘了给他设置密码,不然不能登录的。

 

2,修改用户

 

usermod -d /home/test -G test2 test

 

test用户的登录目录改成/home/test,并加入test2组,注意这里是大G

 

gpasswd -a test test2 将用户test加入到test2

gpasswd -d test test2 将用户testtest2组中移出

 

3,删除用户

 

userdel test

 

test用户删除

 

4,查看用户

 

a),查看当前登录用户

 

[root@krlcgcms01 ~]# w

[root@krlcgcms01 ~]# who

 

b),查看自己的用户名

 

[root@krlcgcms01 ~]# whoami

 

c),查看单个用户信息

 

[root@krlcgcms01 ~]# finger apacheuser

[root@krlcgcms01 ~]# id apacheuser

 

d),查看用户登录记录

 

[root@krlcgcms01 ~]# last 查看登录成功的用户记录

[root@krlcgcms01 ~]# lastb 查看登录不成功的用户记录

 

e),查看所有用户

 

[root@krlcgcms01 ~]# cut -d : -f 1 /etc/passwd

[root@krlcgcms01 ~]# cat /etc/passwd |awk -F \: ‘{print $1}’

posted @ 2011-11-14 14:00 狄浩 阅读(32443) | 评论 (0)编辑 收藏


在计 算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新 的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

Unix 系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开 的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
posted @ 2011-11-13 13:11 狄浩 阅读(312) | 评论 (0)编辑 收藏

      1、菜单window->Preferences->Java->Editor->Content Assist->Enable auto activation 选项要打上勾
      2、windows-->preference-->workbench-->keys 下设置Content    Assist    的快捷键
      3、window->Preferences->Java->Editor->Content Assist->Advanced   上面的选项卡Select the proposal kinds contained in the 'default' content assist list: 中把 Other Java Proposals 选项打上勾就可以了。
posted @ 2011-11-13 13:04 狄浩 阅读(300) | 评论 (0)编辑 收藏

    

linux太难用了!(一通鼠标点击,进入/etc)
学习linux,你忘记windows的思维方式了吗?
怎么安装软件阿?那一堆文件是干什么的阿?
学习linux,你还在浮躁吗?
进入linux,随便按了几下.赶紧重启进入win
学习linux,你用心了吗?
.......

首先,我想引用一下别人说过的一句话:除非在过去的十年你一直生活在山洞里,否则你一定听说过linux.

是的,现在听说过linux,会一点linux基本操作的人多如牛毛,然而真正能用linux做一点事情的确少之又少,这就造成了现在的状况:各大 linux论坛十分热闹,但我国linux人材却还十分紧缺.到底是什么原因造成了这样的状况? 纠其原因,只有两个字:浮燥!

如果在论坛里来一次调查投票,看一下在论坛里的人到底有多少人手头有一本以上的正规linux教材.我想这个数字不会超过30%. 如果再问一下,有多少人完整的读过各发行版自带的入门文档,系统定制文档,系统管理文档和系统安全文档,恐怕这个数字不到10%. 如果进一步再调查一下究竟有多少人静下心来学习过操作系统和计算机网络等和linux学习十分密切的专业课程,那么恐怕只有3%的数字都不到了.

这让我想到了98年前后IT泡沫时代的中关村.在中关村的大街小巷,到处是一个个意气分发牛哄哄的IT精英.他们戴着默镜,剔着小平头,张口闭口都是网络, 安全,信息,黑客,代码,产业.T恤背后写着三个字:别惹我! 然而最后IT泡沫一过,只有那些真正肯安安心心静心学习的人在IT界存活了下来.

现在国人学习linux的状况也是这样,学linux的人个个都意气分发,以为学习linux会用linux是多么了不起.学了一点皮毛就认为很牛了.但是那些企业用人单位却很难找到真正适合的linux人材.因此,我想就目前的状况发表一下我的看法.

首先,这篇文章是写给那些想成为linux高手,并真正想用linux做些事情的人.如果你只想做一个菜鸟,没事的时候在你双系统启动的电脑上偶尔选一次 linux,然后没事进去偷着乐,那就请你自便.另外,我想说明,和真正的牛人比起来,我自己还处于一个比较低的水平.我没有读过内核源代码,不知道 linux工作原理等等,但是通过摸索,至少我已经找到了通往高手的道路的方向.因此还是想说两句.

1,linux不是玩具

如果你想系统的学习linux,你必需清楚的认识到这一点.现在有很多人,号称是linux爱好者,但是他们大部分的事情还是用windows 做,而linux只是作为一个随便玩玩的系统.他们懂得一些linux的基本操作,知道有linux这个玩艺,也因为经常听人家说linux好就咬定了 linux就是好.只要有人说linux比windows差,那么他们就奋起反驳,他们也看不起用windows的人,认为用windows的人水平低. 但是自己用电脑的大部分时间还是用windows并且把重要的文件都放在了windows分区,因为他们骨子里只把linux当做玩具,没有真正领悟 linux的精髓所在.如果你真正想系统的学习linux,想用linux有所作为,那么请忘记windows的思维方式,慢慢感受和习惯linux的操作方式,总有一天你会真正体验到他的奥妙所在,从而从自己内心深处喜欢他,使用他,而不是为了赶时髦或向人炫耀而使用他.

2,手头有一本好的入门教材吗

"如果你还没有好好的读完过一本linux安装及入门教材就不要到初学者论坛来问题!因为你连问问题的资格都没有! " 这是我的一个比较偏激的观点.

如果你现在开始下决心学习linux了,那么第一件你要做的事情是到书店去挑一本好书.而不是到论坛社区去问该用什么版本,该如何学习 linux.一本好的入门教材可以让你快速领悟linux的操作方式,系统的基本使用等等.而且都是前人总结经验写出来的,他可以帮你搭起一个学习 linux的框架,对linux有一个总体的认识.就好比建一撞大楼前先打好地基,搭好混凝土框架.以后就可以慢慢往这个框架里添砖加瓦,最后建起大楼. 而那些想急于学习的,不想看书,只想靠混论坛来学习linux知识的人,就好比建一撞大楼,今天建好第一层,然后第一层就要全部粉刷好,装修好,家具买好住进去,然后第二天再开始建第二层.这样没有整体规划的学习是学不好linux的,最后的结果是浪费自己的时间,也浪费别人的时间. 如果你不信,可以让实事去告诉你,以一年为限,你和你的一个朋友同时从0开始学linux,计算机基础差不多.你去买几本好书自己慢慢看边看边做实验,让你的朋友整天到各大论坛瞎混零散的学些linux知识.也许一开始,你的朋友会比你懂得多,但是一年以后你的水平肯定在你的朋友之上. 在初学阶段,不要随便在论坛上发问,多看书是根本,即使真的非问不可的问题,也要先自己动手察资料解决.实在不行再来问,高手不会鄙视菜鸟,因为每一个高手都是从菜鸟过来的,他们都知道菜鸟的苦衷.但是高手会看不起那些自己不愿动手动脑不会学习解决问题而只想得到现成答案的人.那样的人会被高手在心里暗骂成不配用linux的蠢货.

你需要以下几种书:
一本好入门教材->一本linux指令参考手册->linux系统管理手册->讲解linux系统原理的书.

一开始,你只需要入门教材就可以了.并且严格安教材的讲解去学习,不要一天到晚想着去装显卡驱动啦,装游戏啦,装软件啦,这些都没有必要.你就当你自己的电脑不能上网,只能通过看书学习.慢慢看书,稳抓稳打.慢慢地就融会贯通了.这时候你再到linux初学者论坛去看看,你在那里早已经是高手了.

另外,一开始你要选定一本入门教材,但是不能只看一本,因为有些书上讲的,可能是另外的书上没有的.因此,重点选一本教材看完.然后再看两三本入门教材浏览一下.作为对第一本书的知识的扩充和巩固. 在看书过程中,如果你有什么不懂的,不要急于上论坛问,自己认真看几次,实在不懂没有关系,把问题放在那里.不要钻牛角尖不懂不肯放手,这种精神是好的, 但是方法是错误的.你尽管学下去,也许你看完书本以后的内容,就对前面不懂的内容豁然开朗了.这是在学习linux中常有的情况.

另外,现在很多入门书籍是针对非技术型用户的.(我把那些对linux本身不感兴趣,只想用他来上网,听音乐和打字的人称为非技术型用户,而把对linux本身感兴趣的人称为技术用户)
这些针对非技术型用户的入门书籍几乎通篇都是插图,讲解的内容都是如何在图形界面下操作.这些书籍并不能帮你成为一个高手.反而会让你养成倚赖鼠标和图形界面操作的习惯以后很难改掉.因此不能看这些书,一定要买那些一开始就从系统基本机构基本命令开始讲解的书籍.我看过的第一本linux入门书籍共有十多章,但是他从第十一章开始才大致的讲解了一下图形界面的知识.我很感谢这本书,让我一开始就脱离了windows的思维方式,给我以后的进一步学习带来了很大帮助.

完成以上的内容,你就完成了建大楼打地基建混凝土框架的过程了.可以接下来进一步学习了.

3,你看完系统自带的文档了吗?

当你完成入门的过程后,就可以开始读其他的文档,然后到论坛的精华区看看,向你建起来的大楼框架中添砖头了.当然 ,首先要读的,还是系统自带的文档.

绝大多数linux发行版都自带非常详细的文档.比如我一直在用的redhat,他有从系统安装到系统安全,针对不同层次的人的详尽文档.静下心来,把这些文档读完,比看任何论坛的精华区都有用.书籍和文档就好比是你每天都离不开的一日三餐,论坛区的精华文档就好比是点心和水果.你可以不吃点心和水果,但是决不能不吃正餐.

当然,不能为看文档而看文档,你一定要边看边安文档中说的做试验验证.这样才印象深刻,否则看过就忘记了等于没有看.

另外,如果真心想学习linux就不要吝啬,也不要害怕丢失数据而不敢做实验.我建议你去买一个小的二手硬盘,然后放开手干.不要怕丢失数据而不敢做,如果你没有学会技能,将来做了linux系统管理员或者网络管理员到那时因为不会而丢了数据就是大事情了.

4,学习linux不是逛自由市场.

经常看到有人问用什么版本的linux好,其实只要你认真学习无论什么版本都挺好的.要知道,开发linux发行版的人都是通读过linux内核代码,对 linux原理极其精通的人,而且每一个开发团队都对他的发行版做过测试后放出的.那些国际知名的大品牌更是如此. 因此,讨论什么版本好并无意义,关键是你是不是真心想学.不过,为了避免曲高和寡,最好选用的人多的版本,比如redhat manrake suse 等等. 国内有一两个linux版本做的也不错,但是国内的linux都是面向非技术型用户开发的,因此,如果你想成为高手,建议不要用国内的版本.
学习linux不是逛自由市场,选定版本就要静下心来学习.不要今天换版本明天要升级.这样对你没有好处.我见过一些人号称用过十几种甚至几十种 linux,向人谈论起来头头是到,好像懂的很多,但是如果你让他去用linux搭建一个web服务器,做一个linux网关,他就什么都不会了.他们把时间都浪费在了版本的转换上了.

5,你能看懂英文文档吗?

谈论这个问题,我有点低气不足,因为我自己的英语很差.但是, 至少我可以无障碍的读完一般的计算机文档.计算机英语很简单,只要熟悉了计算机专业英语,高中毕业的水平就可以轻松的阅读计算机文档了.如果你的英语实在太差了,连最简单的计算机英语文档都看不懂,那么在学习linux的同时,请赶紧学习英语.也许你说,你可以看翻译的文档,当我还是一个菜菜鸟的时候,也是这样认为的.但是,后来才发现,如果你想深入学习linux,看不懂因为文档实在是太难了.写的最好的,最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的.即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表.你去看看各大软硬件生产商的官方网站,有哪一个不是用英语作为其主站的? 长期用windows的人会很不习惯这一点,装个软件还要看半天文档,应为windows用起来实在太简单了.但是如果你想学习linux就必需学会看各种文档,而大部分的文档都是用英语写的.我发现很多人甚至连man文档都不会看,有什么命令不会用了就跑到论坛上来问,还装出一副可怜相,乞讨一个命令的用法.有这些时间还不如自己看看man文档,即使你一个一个单词的翻译成中文再自己看都比问别人强,因为别人的回答再怎么详尽都比不上man文档详尽.安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么.否则,说明文档都不看,结果出了问题再来找答案反而浪费时间! 古人说欲速则不达就是这个道理!

6,忘记windows的思维方式

思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度.现在很多人用linux.但是,他们用linux的方式完全是 windows的那一套方式.骨子里都是windows的思想.这样是不能领悟linux的精髓体验不到他的优越性的.我前几天看到一个朋友要把刚装了不到2天的mandrake 10 删除掉,我问他为什么,他说太慢了,受不了,还是用windows快.然后我留意了一下他用linux的方式,他的所有操作都带着windows的影子. 他连最基本的删除,移动文件这样的操作都要用鼠标,这样当然慢了!最后我只好说,你删除吧,你不适合用linux,linux不是这样用的.各位可以去看看那些linux高级用户,他们是怎样操作的.通常他们都是在X上开一个xterm或者rxvt终端,80%以上的操作都在这个终端下用命令完成,因为 linux的命令行十分强大,速度也十分快,简单的几个命令的组合就能完成非常复杂的操作.举一个例子:linux的常用命令find,去看看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会了就对他爱不释手.他的功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和 grep命令,那么他能完成非常复杂的操作,如果同样的操作你用图形界面的工具来完成,恐怕要多花十几陪的时间.因此linux高手经常会说:如果没有 find和grep我们还怎么活.但是现在大部分的linux初级用户受到windows影响都喜欢用图形界面的工具来完成一些基本的操作,我并不是说图形界面不好.只是由于linux和windows设计思想的不同他们的操作方式也有很大不同.在windows下用图形界面操作会比敲命令快,但是 linux是一个命令行组成的操作系统,他的精髓在命令行! 无论图形界面发展到什么水平这个原理是不会变的!

7,入门以后多学命令

当你看完了一两本入门书籍后就应该扩充自己的知识,多学习linux命令,但是不要在初学阶段就系统的学习linux命令,初学阶段只要学会书上提到过的命令就可以了.单靠学习各种命令而成为高手是不可能的,但不会命令而成为高手也是不可能的.这就好比学英语,什么语法都不懂,只捧着单词手册背单词是学不会英语的,但是没有单词词汇量英语水平也提不高的.

在linux中学习命令的最好办法是学习bash脚本编程.bash脚本比起其他语言来学习简单,但是功能却十分强大.通过学习bash编程,能让你掌握大量的linux命令.另外,买一本命令参考手册是必要的,遇到不知道怎么用的命令可以随时查询,这要比察man文档快.特别适合英语不好,看不懂man文档的人.

在linux中,命令可分为系统基本命令和应用程序命令.系统基本命令是所有的unix类系统都支持的命令,走到哪都不变,只要是unix类系统上就肯定有.比如ls,rm,rmdir,cp,cd,mv,cat 等等.这样的基本命令大约有200个,这些命令是一定要掌握的,我买了一本< redhat 7 指令参考手册>这本书非常好,他根据命令的常用指数分类,标明3颗星的为最常用命令,一定要掌握,两颗星的其次,1颗星的只要知道一下就可以了虽然现在都已经FC3了,但是经典的UNIX基本命令几十年来都没有变过!另外有些命令是linux特有的或者是某一个应用程序的可执行文件比如xmms播放器.这些只要知道就可以了,不知道也无所谓.有些命令比较少用,因此通常都记不住他的用法,对于这些命令至少要知道有这个命令,脑子里有印象,需要用的时候察一下手册就可以了,但是决不能不知道这个命令的存在!

8,学会管理系统

等到有了基本知识,也掌握了一定量的命令用法后,就可以进一步学习管理系统.这些内容入门书上会有,但是不会很深入.要深入的学习系统管理,就要去买一本类似之类的书.认真的看书并做实验,可以让你很快的进步.学习配置各种网络服务器,用linux搭建网络,这些都是学习linux系统管理和网络管理的好方法. 到了这个阶段就可以经常上网察察资料,看发布软件的官方网站文档和FAQ,看看论坛精华区文章.但是不能本末倒置,多看书还是根本.书籍和官方文档可以让你系统的学习,但是论坛可以让你学到一些小知识,小技巧.我本人也经常到论坛上来看看,因为即便是一个新手,也可能会发现一些你所不知道的小技巧,看论坛可以学到这些小技巧.但是我看文档和看论坛的时间比不会小于4:1 . 可以把平时积累的问题一次在论坛上发问. 但是初学的时候不要频繁上论坛,因为你要问的问题都在书上写着,耐心一点,你很快就能看到了.

9,了解系统结构

等你有了一定的系统管理知识,知道了/etc下那些配置文件有什么用,知道了一般的网络服务器如何配置后,就可以去了解系统结构了. 了解系统结构不是要你去看什么文件夹放什么内容,而是要学习一些原理性的东西.比如系统是如何引导的,引导后启动了那些东西.系统中哪些是最基本的库文件,有什么用等等.学习系统结构的最好方法是自己做一个linux系统,再也没有什么能比自己做一个linux系统更能学习系统结构的了.LFS (linux from strach)可以教你从源代码自己编译一个系统.通过自己编译一个系统,你就可以了结linux系统结构,知道哪些文件是干什么用的,以及他们如何协调工作.当然,在你达到LFS水平之前还有很多事情要做,比如学会如何编译安装源代码发布的软件和编译新的内核等等.到了LFS水平,那么在大多数 linux论坛上你就可以被人称作"高手"了!到了这个地步,就相当于一撞大楼已经基本建好,但是还需要粉刷和装修,真正的细活还在后面!

永远记住天外有天,人外有人的道理.即便有了LFS水平,在那些搞linux系统开发,通读过linux内核代码的人看来你还是一个菜鸟.因此, 请时刻保持虚心的态度.即便是在 论坛上只有一颗星级别的人,也有可能是一个潜在的,真正的高手! 大多数真正的高手平时都在搞研发工作,哪里有时间上论坛啊! 倒是有很多大学还没毕业的学生,整天混在论坛上.

10,学习专业课程

如果你不是计算机专业的,而想把linux学好,就一定要学习专业课程.学习微机原理,操作系统,计算机网络等等专业课程是必需的.为什么同时开始学习 linux,有些人学的非常快,不到半年就成了高手,有些人玩来玩去还玩不出名堂,玩了一两年还是菜鸟? 因为那些学得快的人有基础,他们都学过专业课程.同样一篇文档,没有基础的人可能看了三遍还不明白,基础扎实的眼睛扫两下就懂了! 这就是专业和非专业的差别! 因此,要想达到更高的境界就一定要学习基础的专业课程.

11,保持虚心学习的态度

我想再重复一遍天外有天,人外有人的道理!
保持虚心的学习态度不仅能让你学到更多知识,而且会让你受人尊重.

在linux 的世界里,如果你想靠混论坛,发水贴,换几颗星星增加一下级别,然后再面对菜鸟说几句牛哄哄的话来赢得别人的尊重是不可能的.即便是一个刚入门的菜鸟,也能分辨你回答问题的质量,从而知道你到底有多少水平. 另外,当你成了"高手"的时候,你也能从"菜鸟"那里学到很多知识.因为有很多问题是你从来没有想过的,认为自己肯定会的,但是实际遇到的时候会有困难. 而"菜鸟"们往往更善于发现这类问题.这就是中国人常说的"教学相长"!

在linux的世界里,越是水平高的人越谦虚,因为他们知道自己还有很多不知道的,而那些半瓶水就想晃荡的人反而自以为是,因为他们还不知道自己还有很多不知道的! 去看看,www.linuxforum.net 嵌入式开发和UNIX版块的牛人,他们很多都是有过好几年linux方面的工作经验,精通linux和unix的好手,但是每个人都保持着非常谦逊的态度,这些人是值得尊敬的

 

 

 

二、

当前社会对Linux人才需求+谈linux学习方法(转贴)
2006年11月30日 星期四 10:08

--=当前社会对Linux人才的需求 =--


大家好, 我是ChinaUnix论坛的Linux版的斑竹sakiulagi。 首先感谢这么多朋友来参加CU的活动。 我讲的这个题目太大。 能谈出来的只是我个人看到的一些事情和自己学习Linux中的一些想法和大家共享一下, 不太可能说能给大家指出一条赚钱的金光大道, 那我就是在讲传销,而不是在讲Linux了。 讲的过程中有什么错误希望大家指出。 有什么问题我们都可以讨论。


【1】 linux的发展方向和主要应用领域
企业级
不同类型服务器的细分, 其实就是安装了不同的服务, 然后针对这个服务对系统性能进行有针对性的调整。
集群/大规模的科学运算
Linux的优点: 低成本,高可靠性; 缺点: 专业人才少。
桌面产品
发展方向: 办公,政府,大公司采购
Microsoft的主要竞争对手, 政府策略
嵌入式系统
消费领域
电子消费产品

【2】 需要的技术型人才
设备驱动
Linux对各种设备的支持仍然落后于MS。 这个很多因素造成的,不过也留下了一个很大的缺口。
网络安全
大量的网络服务器的应用对安全的要求,包括服务器本身和其他的网络设备如路由器,防火墙。
OA
办公产品的开发,设计
系统管理
Linux服务器的日常维护,性能调整,系统架设
嵌入式开发
各种嵌入式系统上的开发。


【3】关注的基础知识
-操作系统 / Linux内核 的基础知识
基本的概念是最重要的, 比如很多网友问我的机器变慢怎么办? 其实就是你的某些资源被消耗殆尽了, 不外乎是首先检查瓶颈, 比如那个应用把系统内存吃光了。 如果操作系统好好学习一下, 很容易理解Linux, 甚至是一般的操作系统的很多看起来很深刻的东西。 内核不是什么高深的东西。 你在操作系统课上学的pv操作都可以看到, 一些UNIX的基础知识也很重要, 比如什么是文件系统, 什么是mount, 什么是设备文件, 甚至什么是linux? 分发版? 还是内核? 如果我说我的系统是Linux 9.0的, 这个说法确切么?
很多东西没有那么神秘的,关键是你的基础是不是够好。
-数据结构和算法
这个对开发人员尤其重要。不要管什么C/C++, java, 等等…… 语言不是最重要的,工具也不是最重要的,关键是你的思想。 如果你是一个开发人员, 那么这个基础就更是你的必修课了。因为学习数据结构和算法的过程就是培养一个人逻辑思维的过程, 我在这里不讲软件工程什么的,如果你的数据结构和算法都学不好,还怎么学习Design Pattern呢?
管理人员也是一样, 比如一个管理员不懂数据结构,可能只能依靠benchmark来了解文件系统性能,否则根据reiser4的dancing tree算法, 我们又可以多了一些根据来判断, 这个设计到底好在哪里?我相信任何一个Administrator都不会拒绝对自己的系统有更深入的理解的。
-C/汇编编程
在编程的思想和算法都已经学好的前提下,由于历史上UNIX和Linux都是用C写的。 大家也只好多学习一些C和汇编了。 如果Linux是用另一个语言写的,并且这个语言很流行,那么我可能就推荐另一个语言了。 这个是最基本的工具,能把你的思想变成现实的工具。是你和Linux系统的交流的共同语言。
即使是管理人员也要用, 总不能所有的软件都用rpm装吧? 再说对任何一件事物, 多了解一些内部的运行机制可以更好的理解它, 这一点大家可以同意吧?另外,如果没有一点编程知识的话,我觉得要维护一个安全的系统也是有一些难度的,如果了解了系统内部运作的机制,才能更好知道你的系统的漏洞在哪里,最简单的例子,一点编程不学,恐怕很难理解什么是buffer overflow. 而且在没有任何编程基础的情况下, 要理解操作系统的很多知识也是会遇到困难的。
-图形界面开发(Java, GTK+, QT)
随着Linux向桌面应用的发展,图形界面编程的人才将会有更大的需求。无论是用java还是用C/C++, 其实很多时候二者是结合的。
-网络
现在的社会,单独的一台计算机是没有多少用处的,所有的计算机都在网络上。现在这么多作网络安全的机会, 如果要是把网络, 比如tcpip的基础知识好, 不但有利于自己的进一步的学习, 同时对自己的职业前途也不能不说是一个很好的推动。
-日常使用和维护
至少会用vi吧? 至少会一点简单的shell编程吧? 无论你是用命令行,还是用图行界面, 只要用的熟练, 能解决问题,就可以了。 否则日常的工作怎么开展?
-HA/HP 集群
如果有条件可以看一下,这个是Linux的另一个很好的应用方向。
-个人能力
分析问题,解决问题。(这个在下面还会谈)。
-语言能力
总要看英文资料的,能看多少看多少,不能逃避啊。 很多人讲英文我不行, 谁帮我翻译成中文的。 这样一个比去新东方上课便宜的多的, 对你的英文阅读能力很有帮助的机会被浪费了……

(上面讲的这些不只是针对还在读书的同学们说的, 即使是已经工作了的网友, 如果有志于开始学习Linux的话, 那么我觉得很多的基础知识都有必要好好读一下。在这里之所以强调基础知识的重要性, 是因为现在的令人眼花缭乱的新技术太多, 其实万变不离其宗, 最终还是要依靠这些最经典的知识基础。 我前两天又看了一下UNIX第三版的白皮书, 是70年代发表的。 里面定义了什么是一个目录, 这个定义和我们通常的定义有些区别, 但是对理解文件系统的结构却有着很好的帮助。 我不是搞学术研究的, 和很多朋友一样, 我也只能业余时间看看这些基础的东西, 但是仍然觉得很有帮助。)


【4】 简单谈一下linux的学习方法
-看书
了解基础知识以后才有交流的基础。 大家可以先到网上找些电子书。 不过我个人更推荐买一本便宜的纸板书看看, 对保护视力有好处。 越是开始的时候, 越要多看一些书, 千万不要看到超过一页的文章就放弃了, 很多厚书反复读过和实践过之后, 就会成为你能力飞跃的第一动力。
-善用网络资源,学会搜索。
遇到问题先google一下, 通常都会有收获。 另外, 网络上的手册很多。大家只要好好看一看,就方便的多。经常有朋友问很多操作上的问题, 以我用的最多的Redhat为例, 官方网站上有全套的安装, 使用, 定制, 各种指南。如果通读一次, 至少是日常的使用不会有什么太大的问题。 同时还能对redhat linux有一个很好的理解。
-Linux版和CU的资源介绍(一句话,精华索引)
经常有网友很不满: 你不直接告诉我, 装什么蒜? 虽然没有给你一块钱, 可是指出的道路是通向一个金库的! 如果不是真的到了生死攸关的时候, 能深入学习一些还是深入一些, 不要只是看着一个答案, 就可以了。 当然如果真的是急事, 那另当别论。
这里, 我再次郑重向大家再推荐我们版的几个置顶帖子。 一个是“Linux 一句话精彩问答”。 这个是我们的斑竹bjchenxu来整理的, 里面包含了我们班上大量网友的智慧。 里面可以找到很多很多的常见问题和疑难杂症的回答。 如果你看过了linux的入门书籍, 了解了最最基本的知识, 那么这个帖子是继续学习的最好的途径。 另一个帖子是以前的斑竹lnx300和现任斑竹好好先生整理的精华帖子索引, 很多比较复杂的问题在这里也可以找到答案。 这两个都不是大百科全书, 可是他是Linux版的所有网友和几位斑竹的劳动的成果, 希望对大家的学习能有所帮助。
-讲究论坛上的交流的方式方法。
多学习别人解决问题的方法。而不止是知道一个答案而已。
交流的技巧。 (热心互助,不要抱怨。老手不要看不起新手,大家都是新手过来的,如果能帮助就帮助一下,不要冷嘲热讽;新手不要不耐烦,大家都是义工,并没有什么义务一定要回答谁的问题。互相指责不解决任何问题,真正的更好利用CU这个大平台才是最终的解决方法。)
-多多动手,多多实践
我在开始学习的时候,把系统里所有的可执行文件的manual page都看一遍, 然后把每个能试验的命令都运行一次。 我觉得只有试验才能得到第一手的资料。
-认真学习英文
中英文的资料各有各的有缺点,但有一点是肯定的。多看懂一些资料总是好的。而且很多时候还是英文的资料更全面, 更丰富一些。 比如关于多系统引导, GNU的网站上grub的手册是还是比较全面而细致的, 语言也简练的很。 GNU网站上的其他资料也很丰富。国内也由一些中文手册的翻译计划。

posted @ 2011-11-02 10:10 狄浩 阅读(421) | 评论 (0)编辑 收藏

最近几个版本的Eclipse默认鼠标移动到方法、属性等上面会出现悬浮窗提示,但鼠标下移后不会消失,编写代码的时候很烦人。

设置preferences-->General-->Editors-->Text Editors-->

when mouse moved into hover:选择Close hover

posted @ 2011-10-12 16:17 狄浩 阅读(1122) | 评论 (0)编辑 收藏

TRANSLATE(A,B,C) 两种情况:
1.B中相应位置在C中的对应的位置有相应的字符,如B的长度比C短或者B的长度和C相等,A中字符进行一一替换;
2.B的长度比C长,B中多出的部分,如果A中含有该字符,则将该字符从A中删除;
posted @ 2011-09-15 17:38 狄浩 阅读(494) | 评论 (0)编辑 收藏

SQL中如何把列中的行转换成列

2010-11-22 01:50

SQL code/*
普通行列转换

假设有张学生成绩表(tb)如下:
Name Subject Result
张三 语文  74
张三 数学  83
张三 物理  93
李四 语文  74
李四 数学  84
李四 物理  94
*/

-------------------------------------------------------------------------
/*
想变成
姓名       语文        数学        物理      
---------- ----------- ----------- -----------
李四       74       84       94
张三       74       83       93
*/

create table tb
(
Name varchar(10) ,
Subject varchar(10) ,
Result   int
)

insert into tb(Name , Subject , Result) values('
张三' , '语文' , 74)
insert into tb(Name , Subject , Result) values('
张三' , '数学' , 83)
insert into tb(Name , Subject , Result) values('
张三' , '物理' , 93)
insert into tb(Name , Subject , Result) values('
李四' , '语文' , 74)
insert into tb(Name , Subject , Result) values('
李四' , '数学' , 84)
insert into tb(Name , Subject , Result) values('
李四' , '物理' , 94)
go

--
静态SQL,指subject只有语文、数学、物理这三门课程。
select name
姓名,
   max(case subject when '
语文' then result else 0 end) 语文,
   max(case subject when '
数学' then result else 0 end) 数学,
   max(case subject when '
物理' then result else 0 end) 物理
from tb
group by name
/*
姓名       语文        数学        物理      
---------- ----------- ----------- -----------
李四       74       84       94
张三       74       83       93
*/

--
动态SQL,指subject不止语文、数学、物理这三门课程。
declare @sql varchar(8000)
set @sql = 'select Name as ' + '
姓名'
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from tb) as a
set @sql = @sql + ' from tb group by name'
exec(@sql)

 

posted @ 2011-09-14 17:23 狄浩 阅读(417) | 评论 (0)编辑 收藏

       儿子在2007年高考中以市状元及数学满分进清华的妈妈—— 我的教子经验:
       1、在吃饭方面:一碗,这是基本量。如他说妈妈我吃不完了,我说好然后让他下桌子,晚上吃时,就把他中午的放在他面前 ,吃完不够再吃新的。以后再没这问题。不要要求吃饱应七分饱,过量只有害无利,够身体消耗能量就好,这样大脑皮层沟壑多,利于记忆等;少吃肉多吃蔬菜水 果,不要身体累积脂肪影响大脑。

       2、放学后做作业:规定一时间,到时间就不准他做了,他说家庭作业不做完,明天会被老师罚的,但我告诉他,什么时间做什么事,不能挪用。第二天他一大早就 起来做,我同样不准,他是哭着上的学。这以后,他是先做完作业才吃晚饭,这以后,一直到高中毕业,都是以先完成作业为首任。从初中到高中,所有作业都是在 学校就完成。当时我是不准我儿子占用他玩和看课外书的时间压力用来做作业的。(好玩吧)

       3、教师告状及罚作业(关于批评):我儿子在小学一年级时也被罚过,我接他放学,等到他做完被罚的作业 ,同时听着老师数落儿子上课如何不认真、如何和同学发生事情等等。但我看儿子的眼神还是很慈祥,耐心等着儿子完成(内心独白:多写一次正好)。回到家后仔 细问情况,属于同学不对的,就不批评他;是自己的问题,但都是轻言细语给他讲怎么样注意及改正。有一点很重要,家长要用道理解除他有可能对老师产生的负面 情绪。打击小孩自信心的主要是家长和老师。如小孩在学校挨骂了,当晚当妈妈的要把事情了解清楚化解小孩的情绪,修补他的自信心,人的一生自信心很重要。

       4、注意力不集中:是否晚上睡眠不好?是否吃太饱?是否是听不懂课?找出原因,针对原因找解决问题的方法,不能一味骂小孩。如:如果娃娃的身体湿热重,人是不舒服的,自然没精力听课等。如果所有的原因找了都找不出原因,就可以考虑用佛门方法。

       5、好玩天性:要给他时间玩,动手本身也等于动脑,没什么不好,家长同小孩制定好课后到睡眠之间的时间,一切按作息表。玩纸牌游戏是一特教老师告诉的方法。我应用和实践了,是成功了的。我儿子在小学时,上课老师布置作业,他都是快速完成的。
       6、没事你要小孩多用左手玩抛接物,是锻炼右脑的,为上初中以后作准备的。家长和小孩每天玩一次纸牌加法,抽二张快速在他面前晃一下,让他快说出加出来的数,坚持到三年级时就做一次加法一次减法,五年级以后就不用了。锻炼注意力、快速反映能力、心算能力。

        7.曾看过一帖:关于小孩子的教育,我一直在思考一些问题,也跟大家交流下哈。我认为:
第一,进行时期教育,注重开发思维智力,不强迫他学什么。
第二,善待一切生命,教他学会换位思考,已不悦不强加于人。
第三,教他在做人做事时以水为榜样,遇事以柔克刚,遇困难绕道前行。
第四,学会知足常乐。
第五,宁静致远,淡泊名利,放心自由 
我就是用这几种方法教育孩子的。

一、家庭作业几件事:
       1、老师布置家庭作业要家长检查签字:我采取的方式是,请小孩自己检查,检查好拿来我签个字就行。在签字时询问:你检查后都没有错了吧,他确定说没有错, 家长就签字。但是,在他检查时也有没有检查出来的时候,你明看到有错的题,你不要给他指出来,让他明天的作业本有一个红差,面对这一情况,你只要说一声昨 天为什么没有检查出来既可,家长不要太严厉,不要让小孩有担心你打他的时候,一切以讲理为主。这样他下次检查就会认真很多。

       2、关于听写:关于听写,都知道川普不标准,我解决的方式是请他用默写的方式来完成。他不解,睁着大眼睛盯着我,我说没人给你念,你 能想到你所学的所有生字而能默写起,那不是证明你很棒。他老老实实回他书房去,老老实实把他的语文拿来放在我面前,我看这一举动,我说过来把你的书拿走, 妈妈相信你不会看,他又老老实实把书拿走。

       在一年级开学年家长要和小孩好好谈心,让他明白学习是他作为学生身份的主要任务,学习不是为家长学习,给家长没有关系,家长有家长的责任;让小孩自己检 查,是在学习上的事尽量让小孩自己管理。就避免了家长担责任:如家长检查签字后第二天小孩回家对你说,看嘛,你有一道题错了都没检查出来,那时家长就只有 无言以对。

       二、早期教育真的很重要!我们家很民主,能说出道理不会强迫他做什么。
       我家是从小孩能说话开始,做什么事都会征求他的意见,做错什么事时(包括打烂东西),请他讲前后事情经过,为什么会发生都请他讲出来,我不会批评骂他也不会打他,讲完后,指出出问题的地方和改正方式方法,然后说以后注意点。
       大一点的小孩,已养成一定的习性,这就要靠大人调整自己的方式方法给他讲道理:
       1、主要还是要让孩子明白他学生身份该有任务和责任。
       2、让他明白学习是为今后自己的人生打基础的一个阶段,自己的人生只有自己掌控了,才活得轻松、活得精彩。
       3、让他学会对自己的人生负责。

关于吃饭:

       1、吃饭少关系不大,我儿子在上小学了还曾正餐时只吃几口的,我不追着他,不吃就算了,但下一餐时把上一餐剩饭加热放在他面前。我的态度是:不愿吃剩饭,那中午就该吃完。

       2、尽量培养孩子吃蔬菜水果,你孩子不吃肉深得我心(能坚持最好)。我是每天每次给儿子削苹果二到三个给他(其他水果是附品)肉和饭随他吃多与少。我家在 高中以前就没给儿子买过有色饮料和袋装零食,只给他喝矿泉水或白开水或茶水。都说那类食品是垃圾食品,为什么会吃既花钱又称为垃圾的东西呢?请家长深思。

       3、你孩子不吃肉、吃饭少——老师都说她聪明,是会得这样的结果的。“就是常常不专心”,你仔细给孩子谈过为什么吗?不会只是粗暴的批评吧,你一定要找原因。

       4、“她营养不够”:一定要把零食取了,放各种水果,用水果代替,每天必须吃苹果和香蕉,这两样都给智力有关并有安神作用。

       5、要培养孩子的心量:不同小朋友发生恶意争执引伸到爱护花草,动物,昆虫,美丽的花,可以欣赏,不要伸手折,小动物特别是各种昆虫,是有生命的,培养小 孩子的慈悲心爱护它们,不能看到面前有蚂蚁,伸脚就去把它踩了,培养小孩尊重一切生命,一切身外的人、事物。小孩的心性就是在小时教育他对万事万物都要充 满友爱的心去对待。恒顺众生而得果报就是自己也一切顺利。

       在与同学相处和大人的接触中,难免有对小孩不好的事,也会遇到他认为不公平,不甘心的事。大人怎么给小孩子疏缓情绪呢?我告诉他,别人是没有义务对你好 的,人心是不平的,如大地有高山、河谷、平原。那么他对你好,你就该对别人充满感激之心,没对你好,那是他的处事行为,也是正常的。万事万物没有绝对的公 平。心量越大,所能获取的能量越大,不要求而自得更多。这道理学佛的人能明白。心量和慈悲心很重要,对孩子以后的人生和境遇差异有决定性的作用。就如李宇春说的态度决定了你是谁。

 

       问题:有些孩子可能天生就不爱学习,又顽劣,如果这样的小孩子,这种方式不知道会不会起到反效果?
       回答:孩子生下来是一张白纸,而且也聪明。错的是大人的教育方法而已。小孩子的教育从0岁开始:

一、 孕前父母的作为:
      首先人的健康体质是弱碱,父母双方要调理好身体,抽烟喝酒最好不要,饭食尽量偏疏菜水果,男方每天补充点维E,女方每天补充点叶酸。肉食类是酸性食品尽量减量。把身体调整有三个月后顺其自然要孩子,这样做是保证孩子有个健康体质,生下来后少生病带起轻松。

二、怀孕后:
       1、在母体内的胎教很重要。其中一点请母亲一定要每天抽点时间静静看书,内心不急不躁、听听音乐,总之要能心情放松。
       2、在吃的方面:不要吃肥肉、饼干等甜食,尽量不要让胎儿在母体内长得太大。在怀孕期间(五个月以后),能恰缝其会,能碰上昙花开放,把昙花用来蒸蛋吃,多多益善。其余饮食的注意事项一般人都懂的。

       尽量不要买活物来吃,要吃三净肉:不是点杀、不是为你杀、没有看到杀。比如鱼是死一小时后它的蛋白质人体才容易吸收,并不是杀活鱼来吃才叫味鲜,那只是一 种饮食习惯。尽量购买现成的,不要让家里的厨房变为冤魂聚集的场所。这样做也是为了小孩能顺产,并身体健食。

三、生下小孩后,对大脑发育的内容:
       1、母乳喂养很重要,是最好最安全的食品。保证了孩子健康,又避免母亲在40多岁后患乳腺癌的机率。刚生下小孩子,有可能发生乳腺体不通的情况,一定要弄通,大概是九个眼要通。不能为了所谓的身材而不给小孩子喂奶。

       2、我说了,我是在小孩子20多天后开始的早期早教。在孩子醒时,我会让小孩的小手抚摸各种手边的物品。众所周知,小孩子从出生后到一岁时大脑发育是飞速 的,在一岁到三岁又是一个阶段,在这个人生最重要的阶段,就不是你只请保姆带到,让小孩不哭就可以了。最需要是妈妈们付出心力的时候。

       要刺激大脑发育就用小孩的双后去抚摸这个世界。现在带孩子,家长对玩具都准备充分,对半岁以前的小娃就身边玩具给小娃娃,让他小手抚摸,母亲并给小孩讲 解,这是什么物品,有什么用处,记着从0岁到3岁都不要给小娃说:“车车、饭饭等,要直接说是汽车或吉普车、拖拉机或稀饭、馒头等,这样小孩会吸收大量词 汇。

       在小孩10来个月,睡眠时间不是很长后醒的时间在多些时,就可以去找整套的“什万个为什么?各类百科知识全书,365夜等”那些有图和文字的书。你手指图里的要件用图下面的文字给小孩讲。这是为了刺激小孩大脑皮层发育。

       到一定时候,当你再拿这书给他讲时,他会伸手翻下一页,那说明,他对这一页有印象,想要新鲜的了。如我们带小孩到大自然中,(我是每周的星期天都带小孩去公园,有山有水的环境)各类植物、枝叶、小草、小蚂蚁、小小蜗牛等都是让小孩观察的最好道具。

       以上是说让小孩通过手接触世界,其余时间在大人无空闲时,就给小孩放讲故事的磁带,我那时是菊萍姐姐讲的,现在的种类应该很多。在动画片方面我同儿子看得最多的动画片是胡萝娃的故事和对斗士星矢。我认为这两种是画面很美,又比较炫,对小孩的形象思维很好。

       与此同时淘一点有字幕的如讲弟子规,国学方面的浅显一点的东西,每天放给小孩子看。这样小孩子在无形中会接触到很多字词汇,如小时思维刺激得好,那他所看到的字、词慢慢就会搬家,无形中就会应用到其他地方。

       睡前听讲故事磁带,白天安排放有字幕的碟,讲百科知识图册(书店种类很多)成语故事书。以上刺激孩子的左脑及形象思维,余下就是你家长还要针对孩子的右脑 进行开发。右脑是左手的功能,每天抽一点空闲,同小孩玩游戏,用左手抛小球,用左手接等,你所能想到的,你心里大概给他规定个数,完成就做其他的了。

       另补充一个锻炼大脑的:画图画,我们不要求小孩画得很象实物。只要能用手去勾画线条就对大脑有作用。最怕有不懂教育小孩的会说小孩你画的车怎么不象呢?此时你要快纠正说那是宝宝画的变形汽车。

在0-3岁的教育中,用鼓励不能用打击的方式,不是要求他把实物画得多相式,而只是锻炼大脑皮层的沟纵。

       在饮食方面,我强调的是蔬菜水果。在小孩可以吃饭时,给小孩的碗里添的菜是各种蔬菜,不要给他添肉菜,因一般小孩子主动挟的是肉,而不会主动挟蔬菜,我们大人就在小孩子会吃饭菜时,引导他。水果:每天苹果香蕉是必须的。这样就不会把小孩养成小胖墩。
       大脑开发到一定程度,小孩子的求知欲望就比较强烈,大人该做的事满足他,找各种书给他看。

       我家对儿子早餐是:一个鸡蛋、一个苹果和水。
       我儿子从小就正餐吃得少,因都是他一放学回家就给他削二到三个苹果,然后做作业,然后吃晚饭。肉菜有,但我们大人都是先说吃蔬菜。我的朋友们都说我儿是投 入少产出多,高中毕业1.8米的净高,才100零几斤,不过这次放假回来是130多斤(学校选的体育是游泳、蓝球,现在这学期选的羽毛球)。

胃口不开问题:吃七分是常识。

       我认识一个医生朋友曾告诉我,千万不要强迫小孩子吃饭,小孩子是有几个生长发育期的,特别是青春期,饭量是自然会增的。如早早打开胃口,到发育期时他的饭量就过了,到青春期时你让他少吃点都不行了,小儿肥胖就是大人的爱心中膨胀了。

关于英语:
       上小学后开设了英语课,我要求是学一课必须记一课,他记了几课,他认为死记硬背那方法不好,很痛苦,我说你自己想个方法解决这个问题。几天后他给我汇报, 他想了一个方法,在电脑上打单词,采取无形记意的方法:在C1栏打上英语单词ONE,在D1栏上打上英语单词ONE,在E1栏打一个公 式:=IF(C1=D1,”YES”,”NO”),在B栏打上相对应的汉语,把E1打好后出现的是YES,指导E1栏朝下拖很多栏。在练习时:把D栏拖来 隐藏,把C栏的英语取消,看到B栏汉语在C栏就打出对应的英语,打对了,E栏就是显正确、没有打对显的是错。对出差错的英语学词就多思考一下,多打几次。 我要求他是每天开电脑第一个要完成五课的英语单词练习(是12345、23456、34567以此类推,包括电脑游戏里的单词都要记完)。完成练习后才能 在电脑上做其他事。

       这个方法对其他人有没有用我不知道,但我儿子在初二参加全国英语竞赛得过一等奖。我儿喜欢看NBA和足球比赛,有一天我看到他界面是中文的,我就和他谈英 超、米兰等,顺势漫不经心地说,你其实可以进英文网站看这些内容,对不懂的查一下就可以了,顺便可以提高提高英语阅读水平。第二天,真的就看到满界面都是 英语了。为了鼓励他,我偶尔会指着一个球员图片下一串串英文,问他是什么意思,他会很乐意给我介绍。 

       双手在电脑上盲打英语单词,坚持一段时间后,那些单词,会条件反射在大脑里、双手上反映出来。你让他用这方法,他不一定乐意。你可以先要求孩子学一课必须 记一课的英语单词,死记硬背那方法很痛苦,他想不到更好的方法时你再告诉他还有这样一种方式。如果他能自己想到方法那更好!

关于分数
       考试多少分不过多的发表意见,我的原则是学习是他自己的事。我只告诉他把卷子上错的题分析原因,是不懂还是粗心,自我修正就好。也不会问他这分数在班上排第几名(一直到高中毕业都是如此)。

关于粗心
       数学总会写错很简单的题,大人小孩都会很后悔地说,“好可惜如果细心点数学就是满分了”我也曾遇到这种情况,看到99分的卷子,就想怎么样才能让他不粗心 大意、不马大哈呢?大概在三年级时,机会是在别人的惨痛中到来,有个单位修住宅,修到一半时房子倒塌了。我带他到现场进行机会教育,从力学等方法讲,由于 计算上的一点误差会造成基脚支撑房子有差异,计算少了的那个点会下沉;从建筑材料上来讲,水泥少个标号、钢筋小一点、砖瓦质量次一点,那整个房子就是危房 了。为了他有个深刻的认识,我说如果就因你计算上的粗心大意造成别人的死亡(那事故死亡6人),人命怎么样来赔?上千万的经济损失怎么样来赔?从高考满分 来说,这个机会教育成功了。

 

        问题:你好,我把我8岁三年级儿子的几个特点写出来,请帮我分析一下,能否有改进方法?
缺点:
       1、注意力不集中。老师反映他上课容易走神,总是似听非听的样子,但你让他回答问题又能准确回答,不肯配合,哪怕他都会也不愿意举手。
       2、作业拖拉,贪玩。每天的课堂作业都要拖到放学前甚至放学后留在办公室里做完,几乎每天都这样,这点我最头疼了,但回家做又很迅速(这个我理解,做完有电视看,能出去玩)。而且我发现,他的动作也慢,每一个分解动作都充满着拖拉的现象。
       3、心智发育太晚,俗称没心眼,你批评他表扬他,都若无其事,也不放在心上。班主任反映教书6年,没碰到这么难搞的学生。
优点:
       1、成绩很好,特别是英语和数学,语文有时候因慢的原因经常来不及完成卷子,碰到大考我要不停地叮嘱一个星期,威逼利诱,他才能放心上,考出来的分数也是很高的。老师也总结:慢,准确率很高。
       2、喜欢手工,画画、橡皮泥、折纸、拼装玩具。
       3、爱阅读,记忆力强,只要你读过的字他看了都能记住,幼儿园时(没学拼音)就能独立看大量的书阅读量和2年级的小朋友差不多。

------------------------------------
互动交流:

       看到你这帖我很开心,你所列举的优缺点,只有一点我儿子没有,其中有五点是相同的。
       不同处:你的速度慢我的快。快是因为我前面介绍的用扑克牌训练出来的。凡事慢半拍,本身没什么问题,表明你儿子内心是平静的。为这点你可以列举一些因慢一 点而造成的违害的事刺激他,如遇危重病人需急时抢救,就因你慢的那三分钟而错过抢救最佳时间,那逝去的生命你能赔吗?就因你慢的那三分钟而错过上车(比喻 各种人生机遇)与自己精彩人生擦肩而过会给自己留下很多悔恨。要做到快与慢自己能掌控。你要了解问清楚课堂作业时间不做作业,他在做什么及为什么,请他给 你解释为什么,你根据他的回答再想怎么样处理。你给他讲课堂作业率先完成,看着同学还在做,自己内心应比较有优越感的,自己内心是很开心的,要不你试一 试?让他先找一个同学为目标,老师一布置作业看谁先完成。刚开始他的速度可能还赶不上别人,你让他记录看经过几次他能赶上,如赶上了你要奖励他(但不能先 许),与此同时每天同他玩一次纸牌,方法看前面介绍。玩纸牌加减法相应不枯燥,训练他瞬间集中注意力和反映能力。
       一、你说的缺点1、是正常的,根据你说的优点三,他吸收知识的能力很强,不懂的老师一点就通了,有新的知识点时他才可能抬眼看老师讲。我也遇到这样的情 况,下午接他放学时,稍早了一点,我就到他教室外看过他上课的样子,就给你说的相同,以后我对老公说千万不要去看他上课,看了你保证生气。回到家我曾问过 他,我说看到其他同学都能认真听课,为什么你在埋头玩自己的铅笔?不认真看着老师上课呢?他回答我是:上课是听老师讲又不是看老师讲。我认为不论是怎么样 的形式,只要他能听懂就好,以后我就这点上没有批评过他。老师以后也认识到就没批评他了。
       二、你说的缺点3,根据你说的三项优点,你儿子就不会是心智发育晚,不和人计较不会看老师脸色,那不是没心眼,恰恰说明你儿子心胸开阔,不玩心机,好难能 可贵,他的心是打开的也就是开了心窍的,这是很多家长求不来的。你所批评他的是什么呢?不过是迎合事俗观点罢了,道法自然,你可不要过多打压。
在这种情况下你要求你儿子(包括大人)做到:
       1、对成绩好与不好的同学一视同仁,遇到任何同学有不懂的问到他,一定尽自己知道的全力给同学讲解,舍得舍得,有舍才有得,这是心量,心量越大,得到才越 多。这是布施的原理。要让你儿子眼里看每一位同学都很顺眼,那他就没什么烦恼,这是很开心的状态。现在有一种现象,怕把自己懂的告诉同学,怕同学超越,, 心就不是开而是在关,这是让自己的路越走越宅。
       2、一定要尊敬师长,老师不论是不是在批评你,老师的出发点都和妈妈一样都是为你成为对社会有用的人。人的一生要报的恩里就有师长之恩。
       3、有这种情况,家长 和学生有说那老师教得不好的现象。我是这样教育我儿子的,不是老师教的问题,老师那种教学方法不适应你而已,全班有60到70人,老师不是面对你个体,不 可能只照过到你一个人,只有你调整自己,找出自己原因支适应老师的方法。这说的是德的培养,会受用终身的。
       另外,你可给你儿子增加一种杂志《科幻世界》,有一部份物理原理,天方夜谭天马行空的想象可以打开他的思惟,我是从我儿子5岁订到高中毕业。不知道你给你 儿子订书情况,我每年有7本左右,有一位特级教师曾告诉我,一本杂志里有一个知识点被孩子吸收,那订这本书就值得了。

顺其自然,放松为主,开心健康就好:这是人生比较好的状态,但一般人做不到,你要学习良好的心态。
       左手抛接物和玩纸牌——训练右脑、瞬间集中注意力、快速反映能力。两副纸牌:每次抽二张出来,在他面前快速晃过,让他加出那二张牌的数,每天练一次,训练 两个月后他的速度跟上也很快后,你每天就一次加法一次减法。 这是一特级教师告诉的方法 ,我应用了几年,很管用。家长 不要老喊他学习学习,家长只要同他一起玩训练右脑和纸牌,能顺利升学就好。如上面两样家长训练的好,男孩上初中高中后学习应没什么负担。

       多做布旋持戒忍辱等种种善行,及多看佛学书,学习佛理。其中最简单有一种念佛法门:一句阿弥陀佛。念佛人为十方诸佛护念,念佛功德不可思议,十方诸佛同声赞叹。你可以选择一种最适合你的方法:
念佛菩萨圣号-----每天在家静下心来念南无阿弥陀佛,念半个小时。
       每天念前能上香最好,家里不方便就面向西方合掌称念,念完,要把今天念经或念佛的功德作回向:愿以此功德庄严佛净土,上报四重恩下济三涂苦,若有见闻者同生极乐国。
       再回向:愿今天念佛(经)的功德回向给我的儿子,愿佛菩萨慈悲加持他,学业有成,身体健康,一切顺利。你坚持半年就会有很多意想不到的收获。

       2、 关于超前看书,他不看你是没有办法的,你老给他说要预习,他听了不一定做,当妈的要学习水的精神,遇困难绕着前行。

       你把儿子抱在怀里(让他感觉到话题有份量),语重心长给他讲现实社会的大环境,就业形势严峻,工作爸爸妈咪也没能力给你找,以后找工作全靠你自己。工作有 很多种,工作的环境差异也很大,如….(你给他举例),将来你要想有好的工作、生活,完全取决于你现在中学阶段认真努力的程度,在你这一生中,要想长大过 你理想的生活,宝贝就要珍惜你现在短短的三年初中。初一,你刚熟悉,转眼你就初二了,等你认真学点知识时,一晃就是初三了,时间过去再也不会回来只能成追 忆了。(高中同理)

       你现在要语气温柔给儿子讲,课本里的知识,所有的同学都在学,大家知道的相差不多,如果自己所知道的知识比别的同学多,你内心会特别自豪,不但爸爸妈妈开 心,老师也高兴,同时,你班上的同学也会很羡慕你,那时同学才来追赶你,就追不上了,你比别的同学知道的知识多,你学习起来就很轻松,你说妈妈说的对不 对?在这点上你要想办法激起他的自大心和自信心。你要注意,只能这样绕着讲,不能直接喊他看书学习。

      3、关于不懂就要问
      上初中高中后这句话真的很重要,不能堆积问题。你把儿子抱在怀里,给他讲,当天学的知识要搞懂,这样你学起来就没有负担,如果有不懂的而你又不急时处理, 堆多了,就会占用花掉你更多的时间,而且还人累心累,你说妈咪说的对不对?你和同学所学的是一样的,以后大家拉开成绩差距的,其中就看哪个能做到有不懂的 就及时问老师。老师最喜欢学生有上课没听懂下课后去问老师或同学的,爸爸妈咪、老师盼望的是你能掌握所学的知识,丰富你的学识。我儿子班上一个同学,就做 到问同学,常常有不懂的打电话来问我儿子,在高三时时间可以长达2个小时,那个同学最后上的是北大。

       4、青春期

       你儿子上初一,快进入青春期了,这个时期很重要,当你发现和他说话,他开始不耐烦时,就不能在他面前罗嗦,不要强行让他做什么,要顺着他的性子,你要以他 的意愿为主,尊重他对问题的取舍。这个时候小孩最容易反着大人的想法,如大人太强势,小孩就会顶撞,就形成小孩说话很伤人的习惯。在我儿子青春期时,每晚 啥时间睡觉,我们都不知道,都是我们先睡,也不主动找他说话,,各人做各人的事。等到初二下学期时,儿子主动来和我们谈话,说游戏、说学校里的事,我们就 知道我儿子顺利度过了青春期。

       另外,说一说语文,但又最没办法说的,除了上课认真、搞懂写那几种作文类型、多阅读书籍外,我也说不上来。最后,你如果把上面说的123落实好,让他发挥主观能动性,所谓的学习任务重也就轻松过关了。

       杂志:我现在记不住当时订哪些了,因为,儿子高考走后,书都送人了。《科幻世界》、《奥秘》、《读者》、《青年文摘》、小哥白尼系列的《趣味科学》、《军事世界》
--------------------------------

互动交流:
       一、一节课完全专注听讲是不可能的,如果听懂了就会放松。课上经常与同座讲话,你先问她是谁引起的,如是同学,你不要批评她,如果是她先找同学说话,你就当天的话题问她说的是什么样,是和上课学习有关的,也没啥,无关的就要给她指出来做错了。

       有三种严重错误:1、上课说话是对老师的不尊重,2、老师为了你们班上60多名学生能掌握知识,很辛苦地讲解;而你和同桌讲话,没认真听课,老师讲的内容 你没有听到,又辜负老师辛勤的劳动;3、又影响同学听课,你有什么权利去影响别人认真学习呢?你为什么不下课后才去问同学而让自己背上过错呢?讲完后请她 端个小板凳去面壁思过,仔细想一想妈咪批评的对不对?你该怎样当好一个学生?以后上课该怎样做才对?想清楚了来告诉妈咪。她一会儿会来给你说想清楚了,我 做错了。你说不行你还需要想想你为什么错,再想10分钟。

       二、你女儿今年上二年级,正好该及时训练她,你要让他每天用左手玩抛接物,训练他的右脑,还要让他玩纸牌,家长和小孩每天玩一次纸牌加法,抽二张快速在他 面前晃一下,让他快说出加出来的数,坚持到三年级时就做一次加法一次减法,五年级以后就不用了。锻炼瞬间注意力、快速反映能力、心算能力。画画是训练形象 思惟的也要跟上。不懂的一定要去问老师。

PS:二是很重要的,功夫做的好,上初中高中应轻松。

posted @ 2011-07-28 15:43 狄浩 阅读(323) | 评论 (0)编辑 收藏

1.走一条不一样的路

在有利于自己的市场中竞争,如果你满足于“泯然众人矣”,那恐怕就得跟那些低工资国家的程序员们同场竞技了。

2.了解自己的公司

以我在医院、咨询公司、物流企业以及大技术公司工作的经验来看,这一点所言不虚。

不同公司的运营模式差异极大。如果你理解企业的运营模式,那你就不一样了!在这家公司中(或者对客户而言),你是参与业务运营的资产,你的工作能直接产生效益!

3.与最优秀的人为伍

很早以前,我喜欢打篮球,被分配到一个水平比较高的队里。一开始适应的确很困难,但环境的压力越大(重大比赛),我的长进也就越明显。

每个领域其实都一样:你周围人的水平(以及对你的期望)越高,你就会变得越优秀。

4.制造差异

每年学习一门新编程语言。为什么不呢?不断尝试新事物,你关注的技术种类越多,脚下的路就越宽广,你的职业生涯就会日新月异。不知道几年后Java 的趋势如何?那就学习Clojure。学Ruby还是Python?这两种语言都可以试试啊。然后你才能知道哪种语言更适合某个特定的项目。看,掌握的语 言多了,才能在需要的时候信手拈来吧。

5.畏惧,是最大的敌人

还是直接从书中摘一句吧:“在畏惧中做出的职业规划,很可能会让自己后半辈子就一直被‘圈禁’在小隔断里,永远不会有创造明天辉煌的时刻。没错,那样是安全,但有意思吗?”

6.要成为多面手

如果你掌握了所在领域的知识,那你只能是一名专业人士。用PHP编程?花点时间设置一台Apache服务器,让PHP和MySQL都跑起来。一直在用jQuery?试试Prototype。你懂了吧。

7.一个字:做

别指望别人过来教你该怎么做,出去,自己学着去做!

8.找一位好老师

找一位好老师可以让你在学习技术的时候有的放矢。作者给我们讲述了别人是怎么指导他学习的(顺便说一句,作者在这本书里讲了很多个人经历的小故事,他居然从一位演奏家转行来做软件开发!):“好好研究一下目录服务,熟悉一种UNIX变体,然后再掌握一门脚本语言。”

请记住这句禅宗谚语:“循路觅宗师,形影不相离,师知吾亦知,吾乃成宗师。”

9.主动教会别人

教会别人是一种最好的学习方式。写一篇博客能帮你搞清楚一个问题。为此,你必须先掌握很多材料,同时还要有条有理地讲给别人听(写作技能)。如书中所言:“要想知道自己是不是真的明白,你就讲给别人听听。”

10.实践,实践,再实践(训练)

只有进行大量实践(花大量的时间)才能掌握某种技术。看的很多,写的很少,遇到问题,改一改,又去读代码……(这样下去是不行的)。

要特别警惕拖延症。其实,往往只要有了开头就好办了。

自我加压,效果会更好。我曾在一篇博客中提到帕金森定律:紧张的时限可以让你提高工作效率。为什么不把这个定律用到学习上呢,比如说在y时间内学会x?

11.从小处入手

每天都取得一项小成果,每天都要坚持做(写在博客上?)。这样一来,你只能让自己比昨天更进步,而不能说自己比上星期进步了一点。

12.享受过程

关注当下,而不是目标,享受那些在追逐未来目标的途中可能无暇顾及的小胜利。人总要生活在当下。我享受编程的过程,就像享受编程的结果一样。

13.不要丧失危机感

越是成功,就越容易犯重大错误。永远不要忘了危机感,特别是要认识到你今天所知道的,到了明天可能就会一文不值。过去的荣耀不能保你永远无虞。

据书中所说,你最好是要让自己能够“通用”,而不要对哪种技术或哪个公司产生依赖。你所掌握的某些技能,甚至你的工作,到了明天都可能会变得毫无价值。因此要不断提高/丰富/扩展自己的技能。

14.推销自己

为某个项目贡献自己的一份力量,写一篇博客,共享自己的源代码,成为对某个社区有用的人。

当然,做这些事可能需要激情,要看你的爱好,但这些事也会间接地推广你的工作成果,证明你的实力,提高你的知名度。

15.关注市场

书中还提到了“预警极客”,也就是那些始终引领技术发展的人。这些人说过的话往往带有预见性,他们提到事物也许过几天就会成为头条新闻。关注这些人,常看他们的Twitter和博客。

posted @ 2011-06-01 09:49 狄浩 阅读(254) | 评论 (0)编辑 收藏

 今天很荣幸能够在亚太软件研发团队管理年会上采访到姜志辉先生,请姜先生先给我们介绍一下你自己? 

我是一个喜欢写软件的人,喜欢软件行业的这样一个人,有些时候人很难找到自己和自己兴趣爱好相关的这样的一个行业,幸运的是我找到了自己,就是把我自己的兴趣、我自己的爱好和我自己的工作能够融合在一起的。所以如果要做一个自我介绍,我是一个快乐主义软件的消费者。

 那目前我们也知道国内采用敏捷方法来开发软件的团队越来越多,但是我们也了解到很多团队只是注意到这个敏捷的一种形,而没有注意到它的神,所以说我们想了解一下你对此有哪些自己的想法或者建议。 

我个人建议是这样的,要想能够应用敏捷必须有个思想上的转变,这个转变对于很多领导层来说非常的难。因为什么呢?因为需要在他的字眼里去除这两个字,“管理”这两个字,我认为在敏捷里边它有一个很重要的概念是领导,而不是管理。它更关注于人,更关注于人的本性,而且也关注于经济学,所以我个人认为,如果要学习敏捷,我认为应该有两点,第一点你要关注于人,关注于团队,第二个部分是关注于它背后的软件经济学,就像我做一个事情,怎么样做可能会更合理?

举个例子说,有很多人会有这样的一些误解,我前一段时间就有人问过这样的问题,说用了敏捷是不是不写文档了?这是一个误解。敏捷本身不是不写文档,它只是说做文档的目的是为了什么?是为了沟通。那么好了,就沟通这么一点来说,有什么样的方式能够更好的体现沟通呢?如果我们人很少,大家坐在一起,七八个人,三五人一个小团队,这个时候我们会发现,如果文档的目的是为了沟通,面对面的沟通、交流是最好的,所以这个时候应该取消文档。

但是如果我面对的可能是上百人的一个大团队,而且是分布式的,这个时候你会发现,如果面对面的沟通交流,效果不是那么好,其实不如文档的效果会更好,所以这个时候你会发现能够表达沟通意图的那个文档会比我们说的“沟通”,就是面对面的沟通交流会更好。所以敏捷关注的是背后的本质,它关注的是如何才能更好的达到实效,这是敏捷。

所以我说要想应用敏捷必须有两点转变,第一个点是对于软件团队基础建筑材料的不同,很多人把软件开发一直比喻成建筑,实际上不一样,它们的材料不一样。构建软件的基本材料是人。是人就有缺点,就会有弱点,所以应用敏捷、学习敏捷首先第一个是对人的认识,关注于人,关注于团队;第二点是可能要关注于敏捷背后的一些经济学,这是我个人的一些建议。

 很好的建议,目前采用敏捷的团队很多也在用Scrum,很多人说,一提到敏捷,那就是Scrum,对于精益,对于XP,包括对于看板,对于Crystal却不是非常的了解,那你能不能简单给我们大家介绍一下它们各自的特点。 

如果说介绍每一个各自特点,就像介绍每一个公司的每一个方法的招式一样,因为它们是实践。那么敏捷联盟之所以能够成为联盟,是因为有很多方法融合在一起。包括我们介绍这个敏捷的宣言,敏捷的原则,是因为在宣言这个部分,它们的价值观部分达到了统一。然后其次是在原则上达到了基本的一致,而在方法上它们各有各的不同,所以它们的关注点是不一样的,比如说Scrum它本身是一种开发框架,关注点是迭代的框架,严格的说,它是一个迭代闭环的关注点。

而水晶方法论,它可能关注的是一个什么概念呢?它可能更多的是关注如何能构建一个好的团队,一个团队它应该具有什么样的属性。包括极限,像Kent Beck。他们在把自己的一些成功的实践拿出来和大家分享的这么一个方法集,尤其到了第二版,像极限编程的第二版,它提出它自己的价值观、原则还有实践。包括还有一些我们从日本的经济方法里边提练的一些方法,它们是方法不太一样,但是本质是一样的。

如果我个人应用的话,我的推荐是,如果要想使用敏捷,可以从Scrum开始,为什么?因为它是最简单、最轻量的一个管理方法,而且它是从管理入手的,但是如果要想应用的话,我个人建议,可以从极限编程入手。我们的开发团队,可以自己去应用,可以不通过管理层。比如说你使用测试驱动开发,你使用重构,你使用持续构建,我想管理团队不会说阻止你应用这些实践,所以一个团队,它可以不通过管理层,而使用这些的敏捷实践,最佳实践。

如果通过管理层,Scrum是一个可以推广的一个方法,而关注于团队的建设我个人认为像水晶方法论可能会更合适一些。但是它们背后的本质,那个才是我们最需要关注的东西,实践的手法是我们用来进行借鉴和学习并且需要加以改造的。

 现在很多组织或者是企业都在,可以说在盲目的采用敏捷方法,以为它可以去解决传统方法的所有的弊端,遇到的所有的问题,但是你也知道,结果往往并不是非常的如意。那么您个人觉得敏捷无法解决的问题主要有哪些? 

敏捷首先无法解决的问题是思想的瓶颈。因为很多人在使用敏捷的时候,原本的出发点就错了,比如说我作为一个管理者,我为什么要使用敏捷,我是为了提高生产效率,提高质量,说白了它就是期望以更低的成本,完成更高质量投资回报的这样的一种方法。它希望是这样一个东西,它本质的思想没变,换句话说,它一开始就把敏捷当作一个工具,它在本质上,在思想上没有发生改变。

比如说他们没有关注于背后的人,没有关注于以人作为基础的团队,也没有关注于软件经济学,没有关注这些最基本的价值观和原则,而一上来就使用这样的一些方法,所以我说这个是很多团队最糟糕的部分,任何没有达到团队思想统一的流程,都会沦为一种形式。所以我说,最难的部分是这样的:他们没有关注于底层的这个真正的背后的思想,而关注于它的方法,或者形式。那么我们说这是敏捷,是很多人在敏捷失败的最基本的原因,不关注于本质。

 那么很多时候,我们的研发团队自己可能也是用了敏捷的思维,敏捷的方法。但是管理层却没有完成转变,所以说这种时候,常常会存在一些碰撞。那么在这个时候,敏捷团队的成员,或者是管理层应该是各自怎样,或者是去如何对待这种碰撞? 

提到这个问题,我想起祖尔•索伯斯基在《祖尔说软件》里边,在博客里边曾经提到过这个观念,说如果作为一个计算,作为一个估算,程序员和管理者两个之间发生了冲突,这个时候怎么办呢?我记得祖尔•索伯斯基当时提出的概念是这样的,你给出你自己真实的想法,然后让时间去证明它。所以不管是一个开发者还是一个管理者,我认为争吵是不必要的,最好的方法就是实践。

举个例子说,对一个东西它是否能产生这样的效果,那我去实践,我是一个开发者,我用实践来说话,我用实践来告诉你,这样一个策略性开发,确实提高了我的代码质量,给了我一个更容易理解、更容易沟通,而且变化更灵活的这样一个代码,而我以后适应变化也非常的好,这个用事实说话。而作为一个管理者来说,它更应该关注的是结果,就是我做这样一件事情,它给我带来什么样的结果,而不是它所谓的形式,一定要放开。

因为作为一个管理者来讲,作为一个程序员来说,它首先是需要尊重,而尊重是建立在什么基础之上呢?是建立在事实的基础上的,所以我个人建议无论是一个程序员还是一个项目经理,当他们有冲突的时候,最好的方法就是用实践来证明你的观点。

 证明给你的管理层? 

没错。

 那另外一个问题就是关于在日本剑道里面有,所谓有守、破、离三个方法。那所谓守,但是怎么来讲?就是在我们采用敏捷方法的过程中,其实大多数的组织和团队,还都是只能达到一个守的阶段?很少有能达到第二个阶段,就是破,那更不用说达到第三个阶段,达到离的阶段,那你认为应该如何做才能去达到第二个阶段,达到破这个阶段?

达到这个阶段有几种方式,第一种方式,我觉得你必须经过成千上万次的演练,就像我会投篮,我要有球感,我必须经过不断的投篮练习,不断的得到失败,从里面得到一些经验教训,这个是不可以越过的。所以我说,你要想达到破的境界,必须经过守这个阶段。但是如果老是经过守,我们的成本是不是太高了?所以有些时候我们可以请一些教练,就像宫本武藏在写《五轮书》的时候,他自己本身是一个剑道高手,为了达到更高的境界,他找禅师来帮助他找到剑术最高境界的本质,所以剑道最主要目的是能够战胜对方,就是在这一点上能够得到认识。因此我认为,通过教练,通过外部的一些环境,一些人员可以给我们提供帮助。

另外一个方式,就是能够不断的审视自己,反思、总结、改变,这很重要。比如说我今天用了这么一个招式达到这样一个效果了,那么好了,经过一段时间,我自己总结,我为什么能够做,我背后的目的是什么?不断地问为什么,不断地反思,不断地改进,不断地总结,所以我要说的概念是这样的:如果要想达到破的境界就必须经过守的境界,但是要从守达到破,不是你不经过思考的,我认为这种思考,可以寻求一些帮助,而反思改进是最好的方式。

 自己要主动,有时候也要借鉴一些外部的力量? 

外界的力量,可以借助一些外界的力量,因为外界的力量它看的可能更清楚,在你偏离方向的时候,它能帮你回到正确的位置上去。

 对,这就是教练的作用。那我们也了解到像80/20法则这个在软件开发中是一个非常有趣的现象,也是一个有趣的经济学的问题,那敏捷团队如何才能真正交付客户价值? 

尊重,首先是尊重,软件开发,我也一直在提到一个问题,软件开发是一种博弈。博弈有很多种,那么软件开发本身,它不是一种零和的博弈,什么是零和博弈?就是你牺牲某一个人的利益,以某一个人的付出作为代价来获得利益,当两个人加到一起的时候,它的结果为零。实际上有些时候,我们很多团队是这样的,有一段时间,我经常听到很多人提出这个问题,包括会间吃饭的时候有人提到这个问题。什么是好的软件?就是你做这么一个东西给用户,那么用户认为它很好,没有发现里面的问题,这就是一个好的软件。我们认为这个认识是错误的,这是一种零和博弈。一旦这种东西进入一种循环,一种恶性循环,往复的这样一个博弈,马上进入一种零和博弈,所以软件开发不是零和博弈,就是它不是说谁占了谁的便宜,或者谁的收益是以另外一个人的付出作为一种代价的,软件开发应该是一种非零和博弈,是双赢的。大家共同来完成这样一个事情,每个人在里边获得自己的价值,是这个样子。

那么在这个基础上,我们会发现,我们需要相互的不断的沟通,交流,反馈这样的一个过程。举个例子来说,我们在很多开发团队里边,用户会一直要求看我们的文档,或者看我们的进度,对我们进度进行评审。但实际上我们很多客户它真的会看你的文档吗?你的文档交付给它,我们大家都知道,我交付那个文档有些时候是没有任何意义的,而客户其实有些时候,拿着文档不看,那它为什么要求文档?实际上是对你没有信心。

 找到一种安全感? 

对,所以只要你能够通过一种方法,不断的给他建立信心,你们两个之间就会有尊重,那么有了尊重以后你们就会有了信任,有了信任就会有了沟通。那么你会发现,你们交互是双赢的,你交付给用户,通过反馈交付价值,而用户通过和你沟通,来创造符合它自己的更高的投资回报,是这样的一个过程。

 那我们也了解到,快速反馈是敏捷的一个基本的要求,那为了做到快速反馈,当然最有效的沟通是最关键的,这个问题是怎样才能进行最有效的沟通? 

有些时候确实存在着很多问题,就像一个优秀的歌手和它的制片人一样,一个电影的投资人和一个非常棒的电影演员(音乐人),它们之间一定会有冲突,因为一个是追求艺术的,我是一个摇滚爱好者,我追求艺术,那些人根本不懂我的艺术。但是作为一个投资人来说,他要求的是商业回报,所以它们两个之间一定会有这样的一些问题。

同样的方式,我们也会有这样的一些问题。前两天一个朋友给我又推荐了一个笑话,这个笑话概念是什么样子呢?是这样的,就是天很热,夫妻俩,然后这个妻子在里边去洗澡,洗完澡之后,这个丈夫也钻进去洗澡了,妻子刚出来,门响得很急促,妻子就很着急,拿过一个围巾把自己给围上了,到了门口,有个男子,拿了800美金,看到妻子就说,如果你把那件衣服脱了,我把这个800美金给你,妻子犹豫了片刻之后把衣服脱了,拿了800美金。过了一会儿,丈夫出来了。丈夫说刚才是谁敲门啊?妻子说是谁谁来敲门了,他说那他有没有提到他还欠我800美金的问题。那么看了这个笑话以后,说明一个什么问题呢?就是要和你的合伙人和你的伙伴分享你们之间的知识,这样才能避免一些不必要的风险。

所以刚才我讲了两个东西,一个是什么呢?一个是音乐界里边你的投资人和演员(音乐人)之间它们有的冲突。那么另外一个,一个小笑话是夫妻之间的东西。但是不管怎么说都是在一起合作的人,那么合作的人之间总会有一些分歧,这是不可避免的,夫妻之间也会吵架。但是最关键的问题在于你必须和你的合伙人一起来分享,否则你们会发现你们失去的东西会很多。

举个例子说,如果我们两个人在一块开发,我加班加点,我自己闭关,通过一个月我终于解决了一个难度很高的问题,结果在我汇报的时候,其中有一个人对我说,那个问题在两个月之前早已经解决了,这就是我刚才说的,如果不沟通,那么你会发现,你们浪费的时间、人员、这种精力、成本这样的一些浪费。

 那如何让这种沟通,彼此之间的沟通更加有效果一点或者更加有效一些? 

我觉得首先要学会把一个团队建立成一个能够相互尊重的团队,某一个固定的方法可能很难。举个例子说我的团队采用的方法是什么,是以学习和游戏为主的这样的一个方式,不一定适于你的团队。举个例子说,我的团队每天下午的五点会在一起打游戏,但打的游戏一定不是单机版游戏,是团队合作游戏,比如说魔兽世界,比如说CS,好多。比如说在玩儿魔兽世界时,也需要几个人相互的合作。

那么这种合作,就是你的法师,你的战士,你的盗贼,还有包括你的牧师,它们之间一定要相互合作的。中间任何一个人不到位,你是很难完成这个关口。好的,如果失败的话,我们会发现最后我们这个游戏玩儿完了以后很多人就会总结为什么?谁没有到位,建立起这样一个相互沟通,团队相互之间的交流的这样一个氛围。包括我们一块去攀岩,一块去骑马,一块去爬山,这些方式都是帮助我们团队建立沟通,建立交流,建立团队的这么一个非常好的方法,我的团队是这样用的。

但是到了你的团队是怎么做得呢?我想应该有更好的方法或更好的实践,但是我坚决反对以硬性的条文来规定我们团队之间应该进行沟通的,否则就像我刚才说的就会变为形式了。

 还是应该是一种自然的真诚的沟通? 

对,自然的真诚的,最好的话就是团队之间建立起一个相互尊重的、相互信任的这么一种关系。怎么建立?可以从其它的游戏规则里面去学习,打游戏也好,打篮球也好,只要是一种团队活动就可以举行,只要是这样的一种以团队为基础的非零和的博弈,只要是这种博弈,都可以学习。比如说我们一起看篮球,比如说我们一起看橄榄球,我记得米卢在世界杯之前,给国家队看那个橄榄球的电影,其实你会发现我们的软件开发完全可以像那种以团队作为艺术的,非零和游戏里边的任何一款进行学习,找到相互沟通的方法和密钥。

 很多东西其实都是相同的。另外一个问题是关于测试驱动开发的,我们也知道测试驱动开发是极限编程中十分重要的一个实践,从第一次系统提出TDD,到现在差不多也有十多年了,其中也是争论不断,但是很少有团队能够真正的去应用这个测试驱动开发,并通过测试驱动开发来去增强信心,你认为在这个整个的过程中,大家可能遇到的困惑,或者困境是什么,那开发的团队应该如何开始实践TDD? 

没错,问题有几个,我不能全列出来。举个例子来说,有的人为什么使用测试驱动开发?因为测试驱动开发流行了,所以我使用测试驱动开发。为了测试驱动而测试驱动,这种东西一定会失败,同样的方式,为了敏捷而敏捷一定会失败。

第二个部分,很多人认为测试驱动开发是浪费时间的,浪费我的成本的,很多人在心里上去排斥它,就是一个问题。思想上没有达到认识,它不知道测试驱动开发给我们带来了什么样的好处,所以有一个问题,测试驱动开发到底给团队带来什么样的好处,这个在思想上一定要达成共识。举个例子说,我们说测试驱动开发本身它不是测试,它不是测试。我很多人说,测试驱动开发是白盒测试或者黑盒测试。测试驱动开发它不是测试,它是开发,它是设计。它有一个很好的一个闭环。

首先我来解释第一个问题,说测试驱动开发浪费时间,实际上把我们软件开发分成几个流程,需求、分析、设计、实现、测试,这么几个部分,如果再加上一个调试,什么部分最浪费时间?我想很多人会选择调试,会选择设计,会选择分析,但是少有人会选择开发,也就是编码,少有人会选择这个部分。因为编码仅仅是当你的思想成熟的时候,然后进行开发的,所以作为测试驱动开发来说,你可能只是加上三行或者是五行就可以完成这个部分了,因为测试驱动开发代码很少,所以你耽误的时间只是几分钟而已,但是你获得好处是什么,你会发现你好像几乎不需要调试了。

当然这个可能有点绝对,但是这是从我个人的角度来看,几乎不需要调试了。 第二个部分,它给了你一个立即进入状态的这样的一个规则,就像我们很多人说,比如说像我原来开发的时候,这个地方应该怎么进行设计?我会花很多时间去学习,我会去思考。在思考之前我会去学习,买一些书籍,或者查一些相关资料,看看哪一个方案更好,那么最后什么时候去决定这个设计呢,当时间到的时候,我没有办法了,然后我赶快仓促的给出一个设计来。但是你会发现测试驱动开发是一个什么概念呢,一开始以故事的方式,以用户使用的方式来描述出你的,你是应该怎么去用的,那么很快通过代码把它表述出来,通过这种代码,说明这个代码是应该这样设计的,所以它给了你一个方式。

就像我爬山的时候,在我的前方定了一个大长钉,我的目标在那个地方,而且我能快速前进,那么好了,当我快速前进的时候,我完成了一个部分,紧接着下一步,所以它非常符合人性,人性是什么?人总是希望能大踏步前进,但是人能够做的事情是小步前进,而且我们会发现如果我们不能飞翔,那就快速的移动我们的步伐,达到飞的状态,所以我认为这是测试驱动开发的本质。

另外一块,从面向对象的这个角度来说,它也非常好。比如说我们在软件开发里面讲过一个什么?叫做高内聚低耦合。高内聚怎么解决的?我记得Peter曾经讲过一个概念,说什么呢?DIY原则,你把你自己想象成这个对象,然后你在那个世界里面,在那个领域里边,你应该具有什么样的职责或者行为。那么好的,我们会发现,用测试驱动开发,能够封装意图,就是那个对象到底要干什么,它的意图跟行为是一致的,好的,用测试驱动开发来封装我的意图,然后用一些手法,比如说重构,比如说设计模式,来解耦对这个意图的实现,它是非常符合面向对象的原则的。

第三个部分,测试驱动开发本身又能够与持续构建很好的形成一个反馈的闭环,所以我们说,如果使用测试驱动开发,能够认识到背后的本质,它符合经济学,因为它能够形成一个测试闭环,能够快速的找到问题所在,来节省我们的成本。它符合设计本身、高内聚低耦合的原则。我们会发现测试驱动开发本身是从能够让你符合人性的这个角度来出发的,如果能够认识到,然后快速的去做一些实践,实践过程中不断地反思,不断地反思再去快速的使用。

那么我的建议是这样的,就是每一次使用不要把它当作一种形式,认真地去体会测试驱动开发的好处。当然了,刚刚使用的时候会有很多问题,因为改变一个人的习惯会非常非常的难,这个时候需要一定的勇气,就像我戒烟一样,我已经戒了三次烟了,到现在为止还是没有戒掉,所以改变自己的习惯,需要点勇气,不过有一个好消息是应用测试驱动开发比戒烟容易的多。

 非常好的类比,最后一个问题是关于总结回顾的。我们也知道总结回顾是自我改善的一个基本的方法,许多团队都会定期,现在都已经习惯定期举行一些回顾会议,但是遇到的问题是,问题还是层出不穷,而且很多问题也是,你根本没有办法去好像是根治它们,那么作为您,如果说去面对这样的问题,您认为应该去如何去避免这种现象? 

我觉得有一个很重要的问题是,很多团队它不断的回顾,不断的总结,但是从来不改进。我们团队有一个很重要的概念就是持续改进,反思改进,就是遇到了问题以后,我们找到问题,找到问题,找到它。然后去解决这个问题背后的一些原因。比如说我们现在很多团队都是这样的,一个项目完了,就去评审,评审完以后给出很多的意见,说我们什么地方不成功,然后我们会列出很多条例,列完就列完了,我们再也没有去改进它,这个是很多团队最可怕的问题,因为很多时候我们不是不总结,是总结了从来不改进。

所以这里我想用两段话来回答这个问题。那么第一段话,是Kent Beck的话:“保持专注、适应、改进”,就是那句话,“保持专注、适应、改进!所以最后这个改进是要有的,不能光反思总结而不改进。第二句话是祖尔说的一句话:“软件开发是这样一个过程,你瞄准一个目标,瞄准、卧倒、射击、移动...” ,所以我们说在软件开发过程中,千万不要想大踏步前进,一步一步的前进,那么我们发现自己身上有一个问题,改正它,让它变成我们的一个习惯,再发现一个问题,然后再改进它,再变成我们的一个习惯。

所以在此我也给想使用敏捷的人一个建议,就是我们在使用一个实践的过程中,有些时候,不要一上来就把所有的实践都堆过来,这个时候更改非常非常难,找到我们最关注的部分,然后在这个部分的思想价值观达到了统一以后,去逐渐的去改变它,形成一个习惯,再加上一个习惯。什么是优秀的团队?优秀的团队只是有几个优秀的习惯而已,但是这些习惯的养成非常非常难。

还有一个好消息是这样的,在敏捷的实践里边很多的实践是相互套接的,就像刚才我们讨论了很多问题,它们都是离不开的,比如说沟通,反馈,交流,测试驱动开发,持续构建,它们都是连在一起的。那么迭代本身紧接着后面就是反思改进,反思改进完了下次迭代。迭代过程中我们需要测试驱动开发、持续集成,再后面围绕着一个迭代的过程,它们之间是相互连接的,只要你有一个好的实践,并且体会到了,你马上会有第二个,第三个,第四个实践。

posted @ 2011-04-28 15:54 狄浩 阅读(274) | 评论 (0)编辑 收藏