T上西北

IT行业学习和工作的方式有感

该文已经在博客园那里发表了,反响不错,决定也贴在这里。后面顺便在加几篇文章的链接。


这几天对几个网友的请教方式颇感无奈。这里举2个实例:

  1. 有个网友因为项目比较急,而且之前也没有怎么接触过该项目的一些相关知识。正好我对这方面熟悉,于是找到我给出一些建议和提示。我大概知道了其要点,然后从头到尾给出了一些架构和技术上的要点。我觉得凭这些应该没有什么大问题了。没想到在未来几天里,该网友一直问我一些我已经解答过的问题。更意外的是同一问题问了至少5遍。我很郁闷,就问了一句,你工作几年了,他告诉我4-5年。我不再说什么了。如果工作4-5年,按照我的理解是不应该有这样的情况的。
  2. 另外一个网友因为一个小问题卡住了。我说了一下我的想法。他说他以前也做过,没有问题,而且特别坚持自己的意见。最后我只能说可以试一试我的建议。一个礼拜之后,他看见我,问我同样的问题,我惊诧道,“你还没有解决吗?”。他说还没有。我继续把我的建议重复了一遍。他过了一会高兴的回答我说可以了。

在上面的2个实例中,我感概太多了。

 

针对第一件事情,我觉得至少存在以下方面的问题:

  1. 做事情太着急了
  2. 应该有把握整个project的能力
  3. 应该能够控制自己的心态
  4. 问问题之前最好总结一下,或者是思考一下人家给你的提示。不要一二再再二三的去问同一个问题大于3次。

  对于工作4-5年的人,已经培养了自己解决问题,分析问题的方法。而且在把握一个项目上应该有一定的经验。冷静思考,沉着应对,都是现在浮躁的环境必须要有的。这些技能和心态和技术没有直接的关系。对中国的IT业,我一直认为是比较浮躁的。在这样的环境下,难道不能有自己的做事风格来行走着浮躁之面上吗?

 

针对第二件事情,我觉得可以这么理解:

  1. 每个做IT人骨子里或多或少都自以为是,包括我自己也是。请教别人时还是那样
  2. 既然自己没有解决,何不试一试别人的建议呢,也许会给你带来意想不到收获。
  3. 多听听人家的意见或建议,对自己是有帮助的。放下一些不必要的面子。

如果坚持自己是对的,又不肯听从人家意见,那你问人家干嘛呢?

 

对待学习,对待工作,我们确实应该保持自信,但这绝不是自以为是。虚心请教他人,听取别人意见,在整个过程中我们会学到不少东西。别总以为自己是对的,每个人的知识面和知识的掌握程度都是有限的,这样自己的理解出现偏差和错误在所难免。

 

从另外一个角度上讲,我们在处理学习和工作上,应该知道一件事情如何去做,如何以什么样的心态去做。对于一个工作4-5年的人出现上面的情况我觉得实在不应该。这样的情况在刚工作时存在。随着自己的阅历增长,在态度,方式上都会逐渐成熟,都会有自己的一套方法。这些方法在面对一些复杂事情,未熟悉事情都是有帮助的。

 

所以我的想法是:

  1. 戒浮戒躁,踏踏实实做事情
  2. 谦虚,自信,不是自以为是
  3. 有自己的做事风格,包括工作方式和心态。
  4. 沉着,冷静,从大局考虑。
  5. 做事情(例如向别人请教)前自己先做好必要的准备,想想。
  6. 态度
  7. 沟通。

上面的情况中,我是否真的让人家明白了,也许自己以为说清楚了。后来我也开始有些着急了,我心里还是告诫自己应该平和一些。尽管有些做的不好,我也一直按照上面的思路做。

 

暂时就这么些,有什么以后在补上。

 

今天教师节,Happy Teachers Day!

 

继续阅读:

Joyo搜索框是如何完成中文自动填充的?

今天跑到Joyo网去看看我需要的书到货没有,顺便搜索了一下其他书籍,我发现有自动填充,原来没有发现呢。汗颜。

案例:

如果我输入de,下面会有”德语“,”德川家康“等条目出现,伴随有多个搜索结果。

 

问题:

Joyo是怎么实现的呢?

 

分析:

当然我不可能看到其源代码和数据库schema。下面按照我自己的思路来解决这个问题。

首先看看Joyo网的效果:

  • 当你输入”de”,会出现以下结果:

         

         我们可以看到会出现以”de“发音的汉字,当然也包括英文。

  • 当输入”deyu”会是什么效果呢?看图:

         

       这是输入一整个”deyu“的拼音,所以下面都是以德语开头的,当然要是下面有“德育”的,也会显示的。

 

  • 看看输入”de yu“会是什么效果?我猜是没有结果。事实上也是:

        

        这说明是中间不能有空格的,除非“德语”是“德 语”,下面才有结果。

 

从上面你能得出什么结论?

我的结论是:

  • 拼音是按照汉语的顺序来的,如果有空格,那么拼音的相应位置也有空格。例如”德语”对应是”deyu”,”德 语”则是”de yu”。
  • 字母区分大小写的。

 

既然有上面的结论,那么怎么去做呢?对于程序不大的,很简单,直接在数据库里设置。

假设数据库里有一个表名叫item_t.之所以选择item,那是因为Joyo买书,卖CD等各种商品,所以不能以book_t来代替。

item_t应该有如下字段:

  • id    每本书的id
  • price 每本书的价格
  • name 每本书的名字,是中文就是中文,是英文就是英文
  • name_alias 用来存储上面的拼音的。

 

这里特别要介绍一下name_alias,这个field是关键。在录入的时候应该存储相应的拼音。按照一般习惯,英文书名应该存储英文。汉字的存储拼音。

 

实现

既然有了上面的分析,还有什么不能解决的呢。很明显要用到ajax技术。为了查找精确,应该到name,name_alias来2个field都查询。写一条SQL:

 SELECT id,name FROM item_t WHERE name LIKE “%keyword_you_search% OR name_alias LIKE ‘%keyword_you_search%’

你也许会问,这里输出的是整个书名啊,和输出结果有出入。的确如此。

那么Joyo到底是怎么做的?我猜想她将每个用户输入的关键字都存储起来的。这样在查询就方便一些。但是最终也不会离不开第一步。

 

引申

有人也许会问,你说的也太简单了吧,那么Google中国会怎么处理呢?我也不知道。

单从Google首页来看,其实和joyo差不多。但是有个问题是Google应该不太会用SQL Server或Oracle等数据库的做法去存储,因为这非常不利于查询等操作。

所以上面的name_alias可能行不通,不然每次都需要人工去输入,这得多大的功夫。唯一可能的就是自动去处理。

如何处理呢?最差的一种就是将每个汉字的拼音都拿出来。相信这也不是什么难事,不然Google的输入法是怎么做出来的呢。

接下来的事情怎么做,我想大家都知道。

 

更多

这里不介绍Ajax的使用方法,有人可能会提到没法输出中文,这些都是基本知识啦,这里不详述。

最后欢迎大家拍砖。

eShortcuts

太不容易了,这么多shortcuts for e。决定每天背诵一遍。最主要是多用。

  • alt-p
  • alt-j
  • flash

Controller

  redirect_to

  • rea
  • reai
  • rec
  • reca
  • recai

render

  • ra
  • ral
  • rf
  • rfu
  • ri
  • ril
  • rit =>render :inline => "<%= ‘hello’ %>", :type => :rxml
  • rl
  • rn
  • rns
  • rp
  • rpc
  • rpl
  • rpo
  • rps
  • rt
  • rtl
  • rtlt
  • rts
  • rcea
  • rcec
  • rceca

verify

Model

  • Ctrl-alt-shift-s  Show db scheme for current model
  • bt
  • habtm
  • ho
  • hm
  • va
  • vaif
  • vc
  • vcif
  • ve
  • veif
  • vi
  • vp
  • vpif
  • vu
  • vuif

ERb

  • ft
  • lia
  • liai
  • lic
  • lica
  • licai

Migrate

  • mcol
  • mccc
  • mtab

Ruby

  • :
  • doo