社区开发经验总结【2010-06】【工具整理】埋头做东西已经快两年了,是时间整理一下期间用到技术了。?先列个需要
社区开发经验总结【2010-06】【工具整理】
埋头做东西已经快两年了,是时间整理一下期间用到技术了。
?
先列个需要整理的概要:
?
系统状态监控开发流程,以及产品、开发、测试、运营协作上线流程紧急需求处理故障以及处理旧系统改造团队管理招聘新知识学习freeMaker发布管理压力测试与性能调优文档管理
社区要素整理:
1、帮助:虽然看的人很少,但是这个也是不可少的;
2、操作提示:比帮助更重要,但是不能太多,不然会干扰用户;
3、用户反馈接口:让用户可以直接进行反馈;
4、排行与推荐:将优质的信息和意见领袖凸显出来,从而活跃社区;
5、事件营销:每个成功的产品都借助一次或几次重大事件来让自己走入大众的视野。即使对于一般的产品事件营销也是不错的获取用户、推广自己的机会,只是之前自己要做好准备,确保有新的服务或者将原来的服务提升一个数量级;
6、个人中心与用户设置:供用户查看自己信息,以及进行设置;
7、管理后台:供管理员进行各种管理;
8、统计:系统的体温表,粗粒度了解系统的状态;
9、监控:系统的神经,了解社区的必要手段;
10、KPI:关键指标,一定要不断审视自己选择的指标是否是Key。建议限制在一两个范围
11、静态发布:可以用cms,也可以自己简单实现;
12、反垃圾:在中国做互联网必备的,基于关键词、基于特征、基于频度,可以结合者来做;
13、关键点突破:社区一般都很宽泛,最后找一个突破点做的足够强;
【最后:欢迎看到这篇文章的同学也发表一下自己的观点~】# 删除60天前的数据文件find ${base_dir} -ctime +60 -exec rm -f {} \;mkdir -p ${cur_dir}cd ${cur_dir}# 保存top信息cur_file=stastics_`date +"%F-%H-%M-%S"`.txt# 机器ip信息ifconfig >> ${cur_file}# cpu、内存统计echo '' >> ${cur_file}echo 'cpu、内存、load等top统计:top -n 1 -b -c' >> ${cur_file}echo '--------------------------------------' >> ${cur_file}top -n 1 -b -c >> ${cur_file}# 磁盘空间统计echo '' >> ${cur_file}echo '磁盘空间统计:df -h' >> ${cur_file}echo '--------------------------------------' >> ${cur_file}df -h >> ${cur_file}# io统计echo '' >> ${cur_file}echo '磁盘io统计:iostat -xk' >> ${cur_file}echo '--------------------------------------' >> ${cur_file}iostat -xk >> ${cur_file}# 进程统计echo '' >> ${cur_file}echo '进程统计:ps aux' >> ${cur_file}echo '--------------------------------------' >> ${cur_file}ps aux >> ${cur_file} 3 楼 liudaoru 2010-06-10 开发流程,以及产品、开发、测试、运营协作
代码开发步骤
1、从trunk上创建一个新branch, 名称规范为[appName]_[yyyyMMdd]_[user]_[funcName], e.g. app_20100519_bwl_world
2、开发在branch上进行,开发的branch也有自己的发布目录wendaServer-release;
3、测试完毕后将branch上的代码merge到trunk上,并重新编译;
4、Trunk上代码确认完毕后将对应的发布目录进行打tag操作,tag规范为[productName].[appName].[yyyyMMdd], e.g. w.app.20100603
开发流程:
1、产品提出需求草案;
2、产品、技术需求文档进行讨论,确认开发的范围;
3、产品给出最终的需求文档;
4、技术进行概要设计,然后根据需求的重要程度确定不同的审核级别;
5、审核完毕技术进行开发,并确定提测时间点;
6、技术提测,测试书写测试用例,并开始测试;
7、如果性能相关,则需要技术和测试一起进行压力测试;
8、测试完毕无问题,待产品最终确认效果后上线;
9、上线完毕后,确认上线效果;
疑惑的问题:
是否严格按照开发周期进行?
如果过于严格则导致功能分散,并出现赶进度的情况。如果不严格要求,则无法衡量技术的工作量。 4 楼 liudaoru 2010-06-10 紧急需求处理
所有紧急的事情都应该进行整理组织,并根据紧要程度确定排期,同时将排期周知相关人员。
同时紧急事情一定要口头或其他方式周知领导,或者直接需要领导批准。 5 楼 liudaoru 2010-06-10 故障以及处理
出现故障后最关键的是尽快恢复服务,然后尽可能保留现场,并做后续追查。
每个一两个月应该把所有的故障拿出来分析,看看哪些可以改进的。 6 楼 liudaoru 2010-06-10
旧系统改造很头疼的一件事,特别是文档和注释都很少,则更致命。
现在一般处理的方式是边看代码变增加注释,然后慢慢整理文档。同时可以借助一些功能修改来了解实现方式,再找个时间完整的看一遍代码。 7 楼 liudaoru 2010-06-10
新知识学习负载不能持续太多,否则很难学习新知识。每隔一段时间(一两个月)都应该梳理一下,即使很忙。有段时间吃了很大的亏,就是因为太忙了,然后觉得应该所有的时间都来做事情,结果事情越忙越乱。而如果这时停下来,然后整理一下,再把不合理的任务拒绝掉,把不重要的任务推延掉,这样就容易理顺了。
功能不在多,而在精,非常速做好东西不应该是常态。而且这种东西的质量也很难保证的。 8 楼 liudaoru 2010-06-10
招聘很有难度的活,不过做多了应该就有规律了。在此经验不多,因为没有真正招到过人,虽然面了很多。
面试的流程一般是:
1、笔试,算法、语言之类
2、自我介绍,大致介绍自己的经历,特长啥的
3、根据简历询问一下做个的东西,同时说说自己对这个东西的看法,以及中间出现过什么问题,怎么解决的之类
4、怎么获取新知识,看看学习能力
5、询问做的不太好的笔试题目,并进行提示,看看面对疑难问题时的态度;
6、找几个业务相关的题目询问一下,看看知识面和专业相关能力;
7、询问对公司有什么想了解的,套路 9 楼 liudaoru 2010-06-10
团队比较失败,不过还是总结一下。
主要还是明确任务,充分沟通,定期检查,然后多向自己的老大请教。
另外大家对工作的态度不尽相同,不应求全责备,人尽启用就好。实在不行就尽早向领导申请调换。
对更入手的同学要多多关注和关心,多检查。这样任务做好了,慢慢就有信心了,不能一上来就很复杂的任务。 10 楼 liudaoru 2010-06-10
文档管理文档对系统来讲非常重要,而这里的文档包括了代码注释。
一般需求文档和设计文档都是必备的,但是只有这两个很不够。因为这些文档是开发之前的,开发之后的文档更重要,对于小的功能则可以合并到一个文档中,如果复杂的功能则通过svn地址进行链接。
完毕的文档应该包括一个总述文档、需求文档、设计文档、功能说明和运维文档,以及代码注释。
总述文档应该全面说明功能的背景,开发时间,开发人员,测试时间,测试人员,上线过程,部署机器,统计和监控等信息,同时还有概述性的说明需求,以及设计和试用。说白了,总述文档是概要了解一个功能的第一个文档,相当重要。当人员流动,就可以借助这个文档了解当时的方方面面。
一个项目的上线不应该以上线为终结,而应该是以总述文档整理完毕为终结标志。
需求文档和设计文档需要在上线完后进行修正,因为开发过程中很难完全不变的按照产品设计和代码设计进行,总有各种调整。所以最终要进行一次信息同步。
运维文档是说明都有哪些功能,需要什么用户角色,有什么注意事项,统计在哪,怎么监控之类的。同时还有部署在那台机器,出了问题怎么处理等。 11 楼 liudaoru 2010-06-10
工具整理ssh连接工具:SecureCRT
mysql连接工具:Navicat Lite for MySQL, MyManager.exe
编辑上传工具:WinSCP
IE调试工具:HttpWatch,InstantSource,IETester
FF调试工具:Modify Headers,Firebug
页面原型构建:Axure RP
统计计算:Excel(很强大,嘿嘿。。。)
页面截图:SnapIt
文本编辑器:EditPlus(正则用的很爽。。。)
日常管理:google calender、Office Onenote
流程图、架构图:Visio 12 楼 liudaoru 2010-06-11 Editplus中按照tab切割:
([^ ]*)\t([^ ]*)\t([^ ]*)\t([^ ]*)
整行数据:
(.*)\n$
替换:
update u set s='\1' where n='\2'; 13 楼 liudaoru 2010-06-11 用wiki做知识整理很重要,这样很方便知识传承。 14 楼 liudaoru 2010-06-11 经常性的做各种备份,包括保存主要的页面,各种统计信息等,这样方便以后进行整理分析。 15 楼 liudaoru 2011-04-22 http://hi.baidu.com/optical/blog/item/4bc9e8cd3b38bc580fb34589.html
fuser命令在linux系统中用来根据文件或文件结构识别进程。
使用权限:
超级用户
语法格式:
fuser [ -c | -d | -f ] [ -k | -K { SignalNumber | SignalName }] [ -u ] [ -x ] [ -V ]File ...
使用说明:
此 fuser 命令列出了本地进程的进程号,那些本地进程使用 File 参数指定的本地或远程文件。
对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。
每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。
c 将此文件作为当前目录使用。
e 将此文件作为程序的可执行对象使用。
r 将此文件作为根目录使用。
s 将此文件作为共享库(或其他可装载对象)使用。
进程号被写入标准输出(在进程号之间有空格的行中)。
一个换行符被写入标准错误(在每个文件操作数的最后一个输出之后)。其他所有输出被写入标准错误。
此 fuser 命令不会检测有 mmap 区域的进程,其中相关的文件描述符已从此被关闭。 16 楼 liudaoru 2011-04-25 netstat -tan | awk '/^tcp/ {++state[$NF]} END {for(key in state) print
key,"\t",state[key]}'