以后的IT路还很长(1)最近有两位兄弟同事离职了,蛮可惜了,在一个战壕一起一、两年了,人各有志嘛!希望他们发展更好些!目前的公司是个创业型的公司,公司从08年的50来个人,扩张到今年11年400多人,今年的目标是500人,扩张速度相当快,公司主要是做中国移动游戏这块的,也在扩展自己的业务和产品,但到底是要走什么样的路,看不清,公司内部也是跑马圈地。在公司里面,最苦的项目组是我们组和另外一个组,每周不停的上线、升级,修改bug,是谁都会奔溃的,我们组已经换了好几拨的人了。技术牛的、不牛的,能拼的、不能拼的,男的、女的,没小孩的、怀孕的、有小孩的,在项目中都出现过,一波接着一波。我入职后,离职的同事算上最近两位,一共4个。第一个离开是个小女孩,小小的一90后,特别能吃苦,我刚入职时,帮了我不少的忙,她的离职,对我有些影响,因为我还有同事,我们属于空降过来的,对老人都有些冲击,还有那段时间,问题的高发期,小女孩的压力不是一般的大啊!我想帮帮,有心力不足啊!最后,那段时间也挺过来了,压力太大了,当时我没有直面问题,我也跟在小女孩旁边,偶尔出出主意,压力我也算是有些体会,有些男娃真比不上她。最后,她就离职到了我们楼上的一家公司,现在偶尔和她聊天,工作也还是挺轻松,不用怎么的加班,也不用关系升级,比在公司时,笑的更多了。接着走的同事,是和我从上一个公司一块过来的,很聪明的一个小伙,当时要走,我很早就知道了,他走的时候,都挺担心的,他经历的事情还有些少,一边希望他能留下来,给他一些时间,整理整理自己的能力,感觉差不多了,再走,另外一方面,他现在走,也是好事,让他能多磨练磨练。他是走了,公司也是国内一家很不错的公司,就是加班多一些。现在,他工作,可没比在公司舒服些,呵呵!男人嘛!现在多一些压力是好事,不是什么坏事。之后,团队稳定大半年了,也就是最近,有两位同事接连离职了。这位同事离职,我得付一些责任,做了一些让人看着不舒服的事情,这个我道歉,另外一块,在他走后,就是我们团队中说的,谁接谁死的模块,现在,是由我来接的。另外一位同事的离职,是刚刚知道的,之前知道他还没有转正,就有些担心,刚过几天,他就离职了,有些吃惊啊!他也是和我从上一个公司过来的,过来是比我们晚了许多。他和我算是搭档,他做需求,我做研发,是想把事情的的确确做起来的。我很感谢这位兄弟的,也很感谢我们的老大的,没他们帮我,我那段艰难困惑的时间,真不知道怎么能过来。团队人员走的走,也在加入新的献血,总得把事情继续坚持下去。
5月6月牢骚一大把 5月过了就像把这个牢骚发发的,没找着机会,这次5月6月的牢骚一起发了。4月末项目中的短信发送出了问题,负责这块的哥们回家了,我跟了这块的问题,算是有人在处理,可也没处理个啥结果,心急啊,我也没个实质性的好办法。系统升级失败,回退到升级前的状态,还出问题,真是叫人无法理解,没法查啊!还是硬着头皮看代码,又不是这块的熟手,没办法改这个东西。最后为了过个安稳点的5.1,有了一个版本出来了,算是解决了正常使用,也遗留了一大块的问题,放到5.1后再处理了。5.1前的问题就这么过去了。原想是5.1休息休息,前两天我姐到武汉了,5.1就去了趟武汉,去那边了,没看见过太阳,我姐身体不太好,还带着小外甥,没出去转过哪里。回南京时,去火车站,半路公交车给坏了,下了一车人,还赶巧了,下车的那地方,就是黄鹤楼,进去一张门票是30还是60的,忘记了,没去,都6点多了吧!我还得找地方住呢,不然晚上要在雨下面待着了。5月份一上班,稀里糊涂的就去另外个项目做支援去了,当时没弄明白,事后才知道的,也不给人说清楚些。5月份基本都在这项目组里面,要给领导们做演示,加班加点的,没休息几天,休息了一次,还在搬家。今年的5月份,最倒霉了,啥倒霉事情还都赶到一起了。事情做完了,没落个是什么好,我认了,这真是我个人的问题。另外就是,演示的前一天中午,在领导要看系统的面前,电脑打不开了,最后的结论是硬盘坏了,项目代码都在我电脑上面,这个运气,真是赶上时间了啊!幸好代码曾经给一朋友发过一份,不然真就是完蛋了。硬盘坏了,这天灾,我也认了。后面接着还有,领导对我今年来的状况做了教育,今年来杂七杂八的事情,心一直静不下来,被教育是应该的。后面有的是,被别人在我后面说三道四了,o(︶︿︶)o 唉!这个我就有点伤心了,一个战壕里面都1年的兄弟了,不需要这样吧!说我做的不对的,我不介意,说一些乱扣帽子的,就不好了吧!这么久了,谁做什么,谁说什么,都知道,真不需要这样的。6月,我是打算好好干起来的,可就是没压住,事情还是有遗漏,这个遗漏啊,把这次升级弄的一团糟,o(︶︿︶)o 唉!现在也不知道咋办了,又乱起来了,比之前更加的乱。NND!!!!!
人人网的开源框架paoding-rose(2) 上次写过rose,说到文档不全,其实不是文档不全,而是我没有细细看,文档还是写的很详细的,而且源码注释很规范,加上源码注释和文档,rose框架还是很容易的掌握的。 在安全性设计上面打算采用spring security来实现的,把spring security集成到系统用了几天的时间,这样系统就是spring + spring security + rose的设计了。 其中的遇到的问题是spring security 需要配置自己的过滤器,而在rose的系统中只需要配置一个过滤器,配置两个过滤器就出抛出已经有过滤器的异常,我把spring security的过滤器去掉了,只配置了一个rose的过滤器,再按照配置spring security的方式配置好了。在配置过程中,就是一个不断尝试,试着配出来的。 配置好了,就是项目启动不再出现异常情况,运行也不报错了。可预期的结果并不是我要的结果。我过滤的方式是通过url来控制权限的,spring security对正常的url是可以进行控制的,对pathinfo格式的url就不能做控制。这个问题纠结了好久,我还询问过开发rose框架的作者,他给我的解释是rose本身就是一个独立的context,它的parent是root context,这样说来,rose就和spring security是属于两个context了,当然不能控制了。 根据日志记录,这样的解释说不过去,从日志记录中,spring security对url都是做过滤的,首先是rose对url进行过滤,接着是spring security进行过滤。在看rose源码的时候,有这样的一段注释。“如果一个请求在Rose中没有找到合适的类来为他服务,Rose将把该请求移交给web容器的其他组件来处理。” 这样才能解释通道理,也可以和日志记录对应起来。rose先做了处理,无法处理的时候才交给其他容器做处理的。 我想尝试先让spring security先来处理,这样处理之后,spring security却不会请求交给rose来处理,这块尝试了好久,没有找到解决的办法,最终只跟踪到spring security中的一个异常对象,在rose处理了,就不会把异常抛出,这个也是spring security不能处理rose请求的原因的。结果是我解决不了,引入spring security就放弃了。 引入spring security我是想偷工的,没有偷成。反过来也想想,引入了新框架进来,就会增加系统的负担,我还是希望系统轻巧一点。 可安全性总是要做的,了解spring security的原理,同理写一个了。spring security是按照面向切面的思路,通过过滤器来实现的。rose的过滤器很好用,不仅可以设置过滤器,还可以设置局部和全局的过滤器,还可以设置过滤器的权重,满足什么时候,什么场景,采用什么过滤器。 我写的基本可以用起来,满足了我的基本要求了。现在也仅仅是满足需求,对一些漏洞还需要继续的修补。
人人网的开源框架paoding-rose(1) 计划使用servlet+jsp来做,不打算使用框架的,估计是遭了框架的毒了,自己的设计思路还是框架的思维,这样下去,自己就像去写框架了,自己的能力自己了解,就算写出来,价值顶多是自己吹牛用用,还不足使用现成的。 现在开源社区的框架遍地开花,分不出来好坏,经典的配合不是ssh,就是ssi,我都用过,传说中的mvc模式,我感觉用起来还没有jdbc使用的方便。 去年人人把自己的框架开源了,曾经看过,没地方用,没细细看,很失误的啊!昨天半夜起来,把人人的paoding-rose下载下来,计划今天研究研究,看一下看传说中的人人框架。 人人paoding-rose的地址是:http://code.google.com/p/paoding-rose/ 版本还是2010年6月份1.01的版本,真的是好久都没更新了。 paoding-rose其实不能说是人人开发的框架,它是在spring2.5.6上面二次开发,开发了一些特性,更加能快速开发。 paoding-rose的lib包有9m大,这个我认为就很大了,看lib中,除了常用的jar包外,有spring,还有paoding-rose的包,另外还有veloctiy的包。veloctiy是个模板引擎,我是打算这次使用到项目中的,这下集中进来了,省了不少事情! 我学习的方法是,看demo,写demo,在写demo的过程中再看API的使用。 paoding-rose的文档太节约了,demo也很少,有些东西我是蒙出来的。文档和demo的说明,还算规范,源码中的注释写的很详细,虽说里面有些错误,但也不影响阅读。例子,这个写的,我就怀疑是不是写框架的人写的了,里面那么多明显的错误,也不改改。 网上除了人人在google上面的提供的文档外,没看到其他例子,写了一个,依照是第二个例子,也仅仅是做了一个查询而已,相当简单,看看就会。 下载地址是: 其中使用paoding-rose,有几个需要注意的 1.简单的dao,写接口就可以,在@SQL("")中写好sql就可以了,不用写实现类,这点很实用、快速。写实现类的核心就是写sql脚本,而paoding-rose就是把sql封装到了@SQL(),看源码,也就是动态解析生成,难度不大,不过这样的思想可不容易学啊! 2.controller层必须出现在controllers包中,名字必须满足***Controller,我就是因为没有这样做,害的我查了好几个小时,饭都没吃好,和官网上面的例子,一个一个做对比,才发现的,而且,这样关键的约定,我没有在官网的任何地方发现有说明,o(︶︿︶)o 唉!框架做的不错,就是文档做的有些差。这样的规定是一个框架的约定,我认为这样不太适合,我已经做好了注解,还要指明路径,才能找到controller,完全可以做成自动载入的,不过,想一想,在一个大型项目中,java类会很多的,完全靠自动扫描,也有些不现实。 3.很关键的一点,要注意其中那些原标记的使用。在paoding-rose中,大量使用原标记,原标记的确是很好用的东西。
nginx和tomcat的集成笔记在php下面,php+mysql+apche称之为黄金搭配,apache作为官方的web服务器,用户相当的多!在nginx出现之后,以绝对的高性能抢夺了大家的眼球,这些都是网络上说的。不过至少,有很多大型的网站都在用,比如新浪、搜狐、腾讯、豆瓣、人人等等等。我本来是打算采用php+nginx做为架构的,时间、能力不允许啊!还是回归自己的路了,tomcat当然是首选的服务器,数据库当然是mysql。这几个月,有些顺了,最近有些偏离轨迹,工作没做好,今天挨批了,认错。人啊!在顺一点的时候,真会忘乎所以的!受点打击是好事,能清醒不少!扯远了!还是继续原来的话题。我分别在win2008 和虚拟机ubuntu10.10上面搭建了nginx-0.9.6+tomcat-7.0.11的服务器,这样,还可以做负载均衡!win下面nginx-0.9.6+tomcat-7.0.11的搭建在http://nginx.org/en/download.html下载nginx,zip格式的是win平台的,tar.gz格式的是linux平台的解压之后,在DOS下面直接使用D:serverginx-0.9.6ginx.exe,就可以启动nginx,默认是80端口,打开http://localhost/ 就能看到nginx的欢迎界面!tomcat7依旧使用D:serverapache-tomcat-7.0.11instartup.bat启动,默认8080端口,打开http://localhost:8080/ 就能看到tomcat的欢迎界面!我的目的是能够实现就行,具体的一些细节配置信息,要根据时间的环境再配置。我的额配置如下:打开D:serverginx-0.9.6confginx.conf内容worker_processes 1;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream tomcat_server {server localhost:8080;}server {listen 80;server_name localhost;location / {proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;proxy_pass http://tomcat_server;index index.html index.htm index.jsp;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}完成,重启一下tomcat和nginxnginx的停止命令:D:serverginx-0.9.6ginx.exe -s stop再次打开http://localhost/ 就打开的tomcat的欢迎页面了,http://localhost:8080/ 也是可以访问的。ubuntu下面nginx-0.9.6+tomcat-7.0.11的搭建对了,我使用的jdk是1.6的版本,取当前最新版的稳定版本,安装jdk并且配置好环境变量,tomcat解压后,修改tomcat-7.0.11/bin/startup.sh的权限,简单就使用sudo chmod 777 *,其实这些shell脚本有可执行的权限就可以了。这时启动startup.sh,打开http://192.168.128.131:8080/ 就是tomcat的界面了,我的ubuntu的虚机ip是192.168.128.131,把防火墙关闭了。在linux下面安装软件就是麻烦,可能这就是证明是技术N人的方法吧!下载的linux下的nginx是二进制文件,需要编译,才能安装的,这样也稳定。解压nginx-0.9.6.tar.gz,进入nginx-0.9.6,开始编译sudo ./configure编译 很有可能出错,缺少依赖库,会有提醒的,根据提醒安装就行。我在ubutnu上面搭建了git服务器,现在只缺少g++,使用命令sudo apt-get install g++ 就可以安装好了。我之前配置过apache,apache使用的也是80端口,和nginx冲突,看修改端口,我嫌麻烦,就直接卸载了。sudo apt-get remove apahce2卸载之后,可能会有一些遗留无用的,使用sudo apt-get autoremove 可以自动卸载还需要PCRE的支持,在 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载就可以,我用的是8.02的版本,其实最新版是8.12的,他们的排序有问题,这个能用就行了。PCRE也是二进制文件,需要编译安装。解压pcre-8.02.tar.gz 进入pcre-8.02 快的话,可以用sudo ./configure && make && make install 一次搞定,我习惯一句一句执行,这样可以看看编译情况。PCRE好了之后,就开始编译nginx了,命令依旧可以用 sudo ./configure && make && make install使用sudo /usr/local/nginx/sbin/nginx 来启动nginx,打开http://192.168.128.131 就能看到nginx的欢迎页面。使用sudo /usr/local/nginx/sbin/nginx -s stop 来停止nginx。开始配置文件,我是把win下面的配置copy过来的。用sudo /usr/local/nginx/sbin -t 可以验证配置文件是否正确用sudo /usr/local/nginx/sbin/nginx 启动nginx,就可以发现这个时候,这次打开是tomcat的欢迎界面了!今天的任务就算是完成了!还有一些遗憾是,因为安装的时候,nginx用的是root权限编译安装的,tomcat用的是普通管理员,最后不能把tomcat和nginx作为开机的自动启动项。应该是可以设置的,今天的目的已经完成,暂时就作为手动启动额吧!现在操作linux,我都是使用ssh来完成的,现在公司里面,登录ssh后都有一些欢迎信息,还把一些常用的命令、目录打印了出来,方便使用,我也把tomcat和nginx的命令整理了出来,修改的方法如下:1.编辑 vi /etc/issue.net2.vi /etc/ssh/sshd_config 找到 #Banner /some/path 并修改。去掉#号的注释,然后把路径指向 /etc/issue.net 这个文件。改为:Banner /etc/issue.net3.重启 sshd服务或者重启机器,就能看到欢迎信息了我的 /etc/issue.net 内容Welcome to dapeng.metomcat7 /apps/tomcat-7.0.11/bin/startup.sh/apps/tomcat-7.0.11/bin/shutdown.shnginx sudo /usr/local/nginx/sbin/nginxsudo /usr/local/nginx/sbin/nginx -s stop注意:在ubuntu下面执行脚本或者命令,在脚本或者命令前加sudo