未分类

人人网的开源框架paoding-rose使用(1)

人人网的开源框架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中,大量使用原标记,原标记的确是很好用的东西。 

孔兄结婚,祝福一下啊!

大学舍友孔德胜兄弟4.12结婚,是个好日子,恭喜祝福一下哈! 

愚人节快乐

愚人节到了,是个很特殊的日子,哈哈!今天用blueprint重写了页面,页面是个大杂烩,弄成了四不像,四不像总算有点样子吧!只写了主页、注册、和登录的页面,明天有时间,把核心的一个页面写了!哈哈!

nginx和tomcat的集成笔记

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

宝鸡的一天

虽然我没有在宝鸡市区待过几天,看到我们宝鸡能这么漂亮,每个城市都有漂亮的地方了!我到过陕北,用不毛之地形容很恰当,就是原来的塞外,在学校就流传着学校要该做塞北大学的传言。现在呆在南京,民国时期的首都,好多的地方还保留着那时候的建筑,我的感觉就是,南京还是个大杂烩。曾经还在西安待过,那里也不是我的家,小时候,是在甘肃长大的,那里,现在想起来,够遥远的,也不知道现在是个什么样子了。下一个我的城市还会在哪里啊!现在感觉哪里都不是我的家啊! 

960CSS框架基本原理

本来是打算找一个模板直接使用的,没有找到到合适的,自己写好麻烦的啊!很早就知道960css的这个框架了,趁这个机会学学,找到一篇比较容易入门的基础,推荐阅读。&nbsp;CSS框架已经出现很长时间了,关于这些框架的用处也被我们讨论了很多遍了。有人说,CSS框架不够先进,还有人说这些框架大大的节省了他们的开发时间。在此,我们将不再讨论这个问题。&nbsp;前段时间,我了解到了CSS框架。经过对Malo、BluePrint和960做了实验对比后,我得出一个结论:我最喜欢960CSS框架。&nbsp;本教程将解释这个框架的基本原理,这样你就可以用960来快速进入开发。&nbsp;基本原理&nbsp;你必须知道一些基本原理来“学习这个框架是如何工作的”。你可以通过实验(或者是用firebug)来学习它,不过我也将会在这里为你介绍它。让我们开始吧。&nbsp;不要编辑960.css文件&nbsp;首先是一个小提示:不要编辑960.css文件,否则,将来你将不能更新这个框架。因为尽管我们需要布局我们的HTML,我们将创建一个独立的CSS文件。&nbsp;加载网格&nbsp;因为我们可以使用一个外部文件的CSS代码,我们必须在我们的HTML网站中加载它们,我们可以通过以下代码来实现:&nbsp;<link rel=”stylesheet” type=”text/css” media=”all” href=”path/to/960/reset.css” />&nbsp;<link rel=”stylesheet” type=”text/css” media=”all” href=”path/to/960/960.css” />&nbsp;<link rel=”stylesheet” type=”text/css” media=”all” href=”path/to/960/text.css” />&nbsp;这些做好了之后,我们必须添加我们自己的CSS文件。例如,你可以叫这个文件为style.css或site.css或者其它任何名字。用下面代码引用这个文件:&nbsp;<link rel=”stylesheet” type=”text/css” media=”all” href=”path/to/style.css” />&nbsp;容器&nbsp;在960框架中,你可以选择名为.container_12和.container_16的两个容器class。他们都是960px的宽度(这就是为什么叫960),它们的不同是分的列数不同。.container_12被分割为12列,.container_16被分割为16列。这些960px宽的容器是水平居中的。&nbsp;网格/列&nbsp;有很多列宽可供选择,而且在这两个容器里,这些宽度也不相同。你可以通过打开960.css文件来查看这些宽度。但是这对于设计一个网站来说是不必要的。有一个小技巧可以让这个框架更加易用。&nbsp;比如,你想要在你的容器里建两列(叫sidebar/content)。你可以这样做:&nbsp;<div class=”container_12″>&nbsp;<div class=”grid_4″>sidebar</div>&nbsp;<div class=”grid_8″>main content</div>&nbsp;</div>&nbsp;可以看到,你的第一列(grid_4)的数字加上第二列(grid_8)的数字正好是12。也就是说,你不必知道每一列的宽度,你可以选择列宽通过一些简单的数学计算。&nbsp;如果我们要建一个4列的布局,代码可以是这样的:&nbsp;<div class=”container_12″>&nbsp;<div class=”grid_2″>sidebar</div>&nbsp;<div class=”grid_6″>main content</div>&nbsp;<div class=”grid_2″>photo’s</div>&nbsp;<div class=”grid_2″>advertisement</div>&nbsp;</div>&nbsp;正如你所看到的那样,这个系统依然很完美。但是如果你想使用嵌套的列的话,你会发现它是有问题的。比如,如果后面三列都属于content列:&nbsp;<div class=”container_12″>&nbsp;<div class=”grid_2″>sidebar</div>&nbsp;<div class=”grid_10″>&nbsp;<div class=”grid_6″>main content</div>&nbsp;<div class=”grid_2″>photo’s</div>&nbsp;<div class=”grid_2″>advertisement</div>&nbsp;</div>&nbsp;</div>&nbsp;你会发现这错位了,不过不用着急,这正是我们下一节要说的。&nbsp;间距&nbsp;默认情况下,每列之间都有间距。每一个grid_(这里代表数字)class左右都有10个像素的间距。也就是说,两列之间,总共有20px的间距。&nbsp;20px间距对创建一个有足够宽的空白间距的布局来说是很棒的,它可以让一切看起来很自然。这也是我喜欢使用960的原因之一。&nbsp;在上面的例子中,我们遇到了个问题,现在我们就来解决它。&nbsp;问题是,每一列都有左右边距。而嵌套的三列中,第一列和最后一列是不需要边距的,解决方法是:&nbsp;<div class=”container_12″>&nbsp;<div class=”grid_2″>sidebar</div>&nbsp;<div class=”grid_10″>&nbsp;<div class=”grid_6 alpha”>main content</div>&nbsp;<div class=”grid_2″>photo’s</div>&nbsp;<div class=”grid_2 omega”>advertisement</div>&nbsp;</div>&nbsp;</div>&nbsp;我们可以简单的添加”alpha“样式来去掉左边的间距,添加“omega”样式来去除右边的间距。这样我们刚刚创建的这个例子在任何浏览器里面就很完美了(当然包括IE6)。&nbsp;样式&nbsp;好了,你现在已经完全了解如果用960框架来创建一个网格布局的基本原理了。当然,我们也可以添加一些样式到我们的布局中。&nbsp;<div class=”container_12″>&nbsp;<div id=”sidebar” class=”grid_2″>sidebar</div>&nbsp;<div id=”content” class=”grid_10″>&nbsp;<div id=”main_content” class=”grid_6 alpha”>main content</div>&nbsp;<div id=”photo” class=”grid_2″>photo’s</div>&nbsp;<div id=”advertise” class=”grid_2 omega”>advertisement</div>&nbsp;</div>&nbsp;</div>&nbsp;因为CSS使用特性来确定哪一个样式声明具有高于其它样式的优先级。”id“比class更重要。&nbsp;用这种方法,我们可以在自己的文件中重写那些被class设定的规则(比如宽度,padding,边框等)。&nbsp;我也添加一些样式,它们整整花费了我5分钟来整理整个例子。查看示例的源代码和样式声明。.&nbsp;搞定&nbsp;就这样。你已经学习了如果使用960框架来建立跨浏览器兼容性和整洁的布局了。当你完全掌握了960框架后,你将大大地减少编写CSS的时间。&nbsp;如果你还不理解,研究一下示例吧。&nbsp;我留给你的问题:&nbsp;你使用960CSS框架吗?或者你使用其它框架?你认为框架可以帮你提升你的代码吗?&nbsp;Translate From: divitodesign&nbsp;来源:http://www.qianduan.net/960css-the-framework-of-the-basic-principles-of.html

Fix Bug的五个阶段

写很很透彻,把码农解决bug的过程都包含进去了,至少我就是这样的。下面的文章和《各种流行的编程方式》有异曲同工,请你不要理解错了。本文来源,翻译如下:——————————————————一个非常严重和困难的bug,能够成就一个饱经沧桑深受压力的有经验的专业程序员的职业生涯。经受这种考验的创伤程度,相当你受到了一次严重的身体伤害,离婚,或是家庭成为的离世。研究人员在研究了计算机编程心理学后,得出了一个程序员们在解决一个困难的bug时的心路里程。这些不同的境界,很像为大众所知的K&uuml;bler-Ross Stages of Grief(这个模型描述了人对待哀伤与灾难过程中的5个独立阶段(否认,愤怒,耍赖,抑郁,接受)。绝症患者被认为会经历这些阶段),而且原因都很相似。就好像死亡所伴随的悲伤一样,fix一个bug是一个过程其初始化了一个事件,一开始是拒绝相信,其造就了你苦闷的情绪并开始逐步影响你的心智。这种苦闷的情结果会让你纠结要努力忍受,最终会你会找到一个满意的结果。了解下面这几个bug-fixing的阶段,会让我们更好的生存下来,并持之以恒,最终带来……关闭我们所有的bug的结果。第一阶段:抵触本阶段的状态: 多疑 Skeptical. 生气 Offended. 易怒 Petulant.1. 不理睬也许这个bug会安静地离开。2. 标记上“不是bug”也许这是用户的错,或是本地配置有问题。是的,我确信就是那样,一会就会好的。3. 就是一次小故障我想这就是一次小故障,很奇怪地发生了一次,它不会再发生的,虽然没有搞清楚是为什么发生了,不过这就好像我们的数据库,网格,浏览器或别的什么打了几个嗝一样。一会就会好的,我确信。4. 躲藏.我要休几天病假,也许他们会把这个bug转给别人的。5. 标记为“修改需求中”你看,我是按照需求实现的。如果你们想要改这个行为和UI,就一定要修改需求。也许他们会决定就这样了。6. 需要更多的信息我不能确定这是一个bug,除非我能在错误日志中看到一条特定的报错信息。7. 转给其他人我调查这个bug中看到了其它模块中我看不懂的数据,问题很大。我应该把这个bug转给开发那个模块的人。我可以在我的模块中检查一下那个边边角角的情况,但是正确的fix应该是在别人的模块中。反正那个在别的国家,我见不着他。第二阶段:接受本阶段的状态: 认命 Resigned. 被打击 Defeated. 被激怒 Annoyed.1. 接受现实行了,行了,行了!这是我的bug,我会修正它的。2. 把这个bug放到最后也许,我可以在我需要fix这个bug之前找到一个新的工作。3. 和你的经理讨价还价好的,你看,我可以正确地fix这个问题,不过我需要一个月。也就是说,我可以给这个问题贴个创可贴,那不会真正的解决它,但是我们可以避免用户的抱怨,这可以为我们赢得几天的时间。4. 为这个bug标记一个无耻的时间上帝啊,我希望这时间够了。第三阶段: 投入和沮丧本阶段的状态: 眼花 Giddy. 头晕 Light-headed. 紧张 Nauseous.1. 开始调查我能搞定它,我能搞定它!只需要小小的调整一下,小小的关注一下,多一点咖啡因,再加上一点时间,我能搞定它。2. Befuddlement.Shit. 这太扯了。我居然没有一点进展。这代码真是乱。这样的代码居然能编译和运行,真TMD的神奇,我有机会能搞清楚它什么不正常吗?3. 再次躲藏你看,很对不起。我不得不要去切除我的阑尾。再一次,是的,既然你提到了它,我的确有两个阑尾。现在我一个也没有了,你高兴了吧?。4. 犯贱好吧,总之,你到底期望什么?想让我在一个没有高级调试器的环境下改这个BUG。我是什么?千里眼吗?我在我的Commodore 64上一个更好的调试器!5. 瞎搞看看我试试这么改?Kao,这样不行。要不然这样搞?也不行。那么那样搞呢?Shit,虽然再糟糕。6. 绝望我不可能fix这个bug了。我是个糟糕的程序员。我太笨了。我在这个满是聪明人的地方干什么?迟早他们会知道我的能力太差,那时我就玩完了,在这也混不下去了。7.耻辱我的经理问我为什么我用了一个月的时候来fix这个只需要两天就可以解决的bug?老实说,我不知道怎么去读日志信息,我搞坏了我们的编译脚本。现在,我不敢去让别人来帮我,因为这样只会让我显得更愚蠢。8. 恐慌!这事变得比我相像的要复杂!而我开始觉得复杂的事变得简单……而我觉得简单的事变成需要重定半打的类。为什么我以前在我的经理前拍着胸说我可以搞定这个事?9. 通宵工作,远离朋友和家人(语无论次的喃喃自语,一阵一阵地大声咒骂)第四个阶段:愚蠢的快感本阶段的状态: 感恩 Grateful. 安心 Relieved. 极端地自我欣赏 Awfully Impressed with Yourself.1. 醒悟哦!我终于明白怎么搞定它了……2. 写正确的代码我真NB,我是编码机器!3. 测试牛!通过一个测试。真牛!又通过一个测试了。靠!有测试失败了。这是为什么……4. 隐藏测试失败反正这完全是一个不重要的测试案例。没有人会检查它,这个测试真是毫无意义。5. 提交代码我太牛了,厨房里有个馅饼可以庆祝一下吗?6. 关闭 bug.我听说那里有个馅饼可以庆祝一下第五个阶段: 与“完成”肉搏本阶段的状态: 焦燥不安 Twitchy. 神经过敏 Nervous. 迷信 Superstitious.1. 有人reopen了这个 Bug真的?他们发现了你引入了另一个bug? Shit – 那只是一个不重要的案例永远不会发生的。2. 修正以前的修正是的,我甚至检查了员工的年龄是一个虚数的情况,就是为了防止出错。3. 关闭 bug是的,贱货,你被关闭了。全部都关了,再也不用心烦了。4. 发誓以后再也不干这种事了5. 大家都意识到你现在是那个模块的专家了哦,不!现在他们又给了我三个那个模块的新bug没关系,现在你只需要GOTO 第一个阶段。此外,作为一个工作中的程序员,你会永远经历这些烂事,直到你——死亡,退休,或是被升到管理层。(全文完)原文网址:http://coolshell.cn/articles/4045.html

php快速框架的选择

php框架也是多多,了解一些mvc就能吹说写出一个什么样的框架,有了学java的经验,我在选择框架的时候,直接是在php比较专业的论坛中看大家的推荐,推荐的都比较多,也各有特点,我着重看了zend、codeigniter、thinkphp的架构和使用。 zend是官方的产品,完全的oop设计,作为企业开发的首选。 codeigniter轻巧简便,很轻量级。 thinkphp国产货,也是轻便灵巧的路。 都属于精品吧!zend作为的官方的产品,市场上面肯定有他的份额存在,而作为快速开发,还是有些臃肿了。codeigniter很灵便,看网站的介绍,也有很多成功的网站案例,毕竟外国货,虽说有全套的中文文档,还是少些。thinkphp灵巧,中文的文档也多,在功能上面也不逊色与codeigniter,比较推荐爱国者使用。

华为内耗问题浅析:十大文化成公司绊脚石

这边文章是别人邮件发我的,对于一个公司来说,少不了有很多问题,没有问题的企业我相信是不存在的,我的经验告诉我,只要和谐就好,这个道理我妈也懂的。&nbsp;“本位主义”文化、“各自为政”文化、“故步自封”文化、“站队”文化等归结一起,就是圈子文化,几种文化交织在一起,一个小地球也就出现了。&nbsp;“Yes Sir”文化、“喊口号”文化、“拍马屁”文化、“官僚主义”文化等我不知道国外是怎么样,但我肯定这个是我们的特色,大公司,小公司,哪里都有。&nbsp;“俄罗斯套娃”文化、“责权利不清”文化这些,我们的人情味太重了。&nbsp;原文网址第一财经的,邮件里面没有链接的地址,第一财经也打不开,不知道为神马!&nbsp;&nbsp;&nbsp;华为内耗问题浅析:十大文化成公司绊脚石&nbsp;&nbsp;http://www.sina.com.cn 2011年03月22日 01:03 第一财经日报&nbsp;&nbsp;&nbsp;郑爽&nbsp;一篇网上流传甚广的批判华为文化的文章:《华为,你将被谁抛弃——华为十大内耗问题浅析》出现在华为内部出版物上。且不谈华为文化的是是非非,单是从内部出版物大篇幅全文刊发该文的做法便能够窥见:华为不护短、不掩饰的文化特征鲜明。&nbsp;华为的反思,也是今天发展到一定规模的中国民营企业们应该共同思考的问题,一个曾经的高效能公司,为何会滋生不健康的文化,以至于拖累公司的竞争力?哪些不健康的文化,是公司变得高效能的绊脚石?&nbsp;“本位主义”文化&nbsp;高效能公司最为重要的是大家有共同的目标。缺乏共同目标的公司就像一支足球队中,三分之一的人把球门方向搞反了,还有三分之一的人不知道球门在哪里,那么,剩下那三分之一的队员即使再努力,也胜利无望。&nbsp;我们往往假设一个公司里,所有部门理所当然应该跟着公司的大目标走。其实不然,每个部门由于职能的差异,会有自己的小目标,“本位主义”文化下的企业每个部门只守着自己的一亩三分地,不顾企业大局。&nbsp;比如,公司的目标是为客户创造最好的服务体验,而电话客服部门的目标可能是每天打出更多的电话以完成指标,并以此考核员工业绩,此时电话客服部门员工会把“最好的客服体验”抛在脑后,每次跟客户通话的时候,只希望时间越短越好。&nbsp;英国秦业企业管理咨询顾问魏奕对记者表示:“这时候领导者需要保证每个部门和岗位的工作程序、工作职责、考核制度等都符合公司的大目标,并且频繁地、有规律地跟每个部门沟通:公司希望去哪里,以及为什么需要去那里,来保证大家的步伐一致。”&nbsp;“各自为政”文化&nbsp;部门间合作出现问题时总是彼此互相推卸,盯着别的部门的过错,却忘了自己也是决策或执行团队的一部分。经常在推出新的项目时不与其他相关部门充分沟通而一厢情愿地期望得到别的部门的全力支持。向领导争取资源时毫不顾及企业的能力和对企业总体的影响。总是自己的部门最重要,别的部门只是配角。&nbsp;这种文化的形成和信息不透明有关,公司需要创建信息共享的环境、表彰奖励积极共享信息的员工。魏奕谈道:“如果一个企业内部,各部门之间没有信息交流的途径,也没有共享信息的文化,容易形成每个部门各自为政,以自己为中心的情况,员工不容易看到其他部门在发生什么,也看不到自己部门对其他部门的价值,对整个公司的贡献是什么。”&nbsp;“故步自封”文化&nbsp;创新知识型的企业发展到一定阶段,在行业内拥有一定的优势时,故步自封的文化也会悄然滋生。毕竟,创新有一定的风险,即使大量的投入也可能面临失败,当企业发展得越平稳越好时,他们担心失去的东西也会越多,因而觉得维持现状也不错。&nbsp;而企业一旦缺乏创新机制,对变化持有恐惧心理时,便会以保守的心态被动地应付。它们总觉得现有的商业模式和运营机制还可以继续,就不要去动它。假若企业不懂得未雨绸缪,等到追随者迅速赶上时就会措手不及。&nbsp;当初,柯达故步自封地认为胶片市场依然会有很多追随者,数码产品有风险,也不会成气候,导致柯达最终亡羊补牢为时晚矣。&nbsp;“站队”文化&nbsp;有利益的地方,就会有争斗。拉帮结派似乎是人的本能,从幼儿园时代起,最有威信的“孩子王”屁股后面总是跟了一串懵懵懂懂的小家伙。&nbsp;而在公司里,站到了不同的队伍,待遇兴许会大相径庭,于是每人进入公司时都忙着观望和分析几位当红之人的前途,希望自己能站对队,靠在大树下好乘凉。但站队的风险也很大,站对了队伍,的确会获得更多的机会和优势;但如果一旦“改朝换代”之时,你想安然无恙几乎是奢望,甚至有可能“卷铺盖走人”。&nbsp;拉帮结派式的“站队文化”在任何类型的企业都或多或少地存在,在创新知识型的公司也难以避免。这种文化容易导致大家顾及的是自己小团体的利益,而不是公司的利益。争论的总是你对还是我对,而不是寻求真理在哪儿。严重的拉帮结派现象会导致企业内耗过大,影响整体目标的实现。这时就迫切需要完善而透明的监督机制。&nbsp;“Yes Sir”文化&nbsp;高效能企业总是特别宣扬和强调“以人为本”、以员工为中心的企业文化。但在实际工作中,有时往往只是把员工当作服从命令的机器人加以管理。&nbsp;员工只能默默地接受,甚至改变自己的想法去适应上级的指示,而无法以批评的眼光去分析、思考和消化管理层的决策。久而久之,导致的结果就是错误的决策无人指出而得不到纠正。员工们每天关注的也只能是do things right(正确地做事情),而不是 do the right thing(做正确的事情)。&nbsp;这种文化下的员工感受不到企业对他们的真诚之心和敬畏之心,而这些是作为生产资料的他们理应得到的待遇。在知识经济时代,企业的竞争最终还是人才的竞争,如果员工无法在&nbsp;岗位上施展自己的才华,无法获得足够的发展空间,那么企业的发展也是有限的,因为他们留不住人才。&nbsp;企业要做的是真正将员工的发展和企业的发展统一起来,把以人为本的管理战略摆在与经营战略同等重要的位置来实践,这样员工和企业才会有共同成长的一致愿景。&nbsp;“喊口号”文化&nbsp;是不是每天有很多的会议却只流于形式,是不是有太多空泛的发言诸如:“今年比去年有显著的增长,明年还望有更大的突破。”却不以事实和数据说话,缺乏分析和依据。这好比只浮在云中望森林,不落到地下看树木。&nbsp;“口号”文化甚至最终导致企业的核心价值观也只是贴在墙上的文字而已,员工不再自觉地去做对企业发展有利的事,只是应付敷衍了之。一些卓越如通用的企业,都将价值观作为激发员工工作热情和创造力的法宝,是企业核心竞争力的关键。一旦这种支撑企业成功的潜在驱动力量也流于形式后,企业很难获得持续而长期的成功。&nbsp;归根到底,喊口号之所以滋生是因为缺乏执行和相关指标利益的支撑,缺乏对口号在实践中的有效解读。这非但没能促进企业进步,还浪费人力物力。&nbsp;“拍马屁”文化&nbsp;科技创新型的公司很多都带有创业者的痕迹,这些公司的成功大都是个人带动整个公司的成长。一方面,由于一些领导者对自我认知存在偏差,刚性的执行力,喜欢“居高临下“的感觉,导致底下谁也不敢不愿去拆穿和戳破。而自古就有“顺我者昌,逆我者亡”。&nbsp;另一方面,曾经立下汗马功劳的拓荒者们一直用创业阶段的思想引领企业,无法与时俱进,而为了保护自己的既得利益,老臣们很容易推诿责任,也不惜指鹿为马;底下的人为了继续求得生存,也唯唯诺诺没人敢说真话。&nbsp;就这样马屁文化在公司蔓延开来。以领导为上,领导说的都是对的,凡是领导支持的,不管三七二十一大家都跟着支持,却殊不知这些都成了阻碍组织健康成长的因素。马屁文化盛行下的组织是脆弱的,因为大家对错误都会睁一只眼闭一只眼,自我免疫机能的正常运作需要征言纳贤,这也是对领导人的一种考量。&nbsp;“官僚主义”文化&nbsp;很多销售人员都有这样的经历:在产品销售之后,需要去财务部门开具销售票据并且交款,一件看似很简单的事情,对他们而言意味着遭遇难看的脸色、繁琐的手续和为此耗去漫长的时间。&nbsp;在特殊的历史文化背景下,中国企业的金字塔结构比发达国家的更为牢固。被杰克&middot;韦尔奇深恶痛绝的“官僚作风”我们不用学习便生而为之。公司发展到一定规模,人员扩张到一定数量时,层级便会越来越多,因而解决一件事情需要牵扯的人也越来越多。层层上报、层层沟通、层层下达命令决策,就这样一个月的时间便晃过去了。&nbsp;但对创新型公司而言,快速的市场反应能力是关键,这时办事拖沓、呈而不议、议而不决、决而不行的官僚作风便成了管理之痛。它使得信息不能迅速传达,沟通成本增加,导致在市场上的反应慢一拍,而且还瓦解员工的创新意识和主动性。&nbsp;精简机构就能杜绝官僚作风了吗?中智人力资源管理咨询有限公司产品开发总监周晶认为:“一个企业或组织的文化很大程度上与领导者个人的意识和风格有关系。公司的领导人要打造平等沟通的文化,要有接受批评的胸怀和承认错误的勇气。而且要有公开透明合理的考核体系。”&nbsp;“俄罗斯套娃”文化&nbsp;这种文化下的企业在招聘人才时主管领导总是怕新来的人比自己强而抢了自己的饭碗。进而有意无意地会找比自己能力差的人。&nbsp;周晶分析:“尽管创新知识型企业从不掩饰对人才的渴求,但在具体落实上,主管领导在选人和用人的标准上还是不可避免地会与行业标准出现分叉,有时不是考量对方的能力有多强,而是考虑对方会不会很好地听命于自己。”&nbsp;对显示才能的人才去压抑不让其出头。导致企业聘来的人越来越差,像俄罗斯套娃一个比一个小,结果企业走向平庸和衰落。&nbsp;“责权利不清”文化&nbsp;责权利不挂钩也是很多企业普遍存在的问题。一号店董事长于刚谈道:“项目和部门承担责任的人没有实权去调动资源以达到其赋予的目标,或达到其目标后没有合适和清晰的利益让其有成就感,这种责权利的脱节使得责任人巧媳妇难为无米之炊,且没有足够激励让责任人为该事业而全力付出。”&nbsp;趋利避害几乎是所有生物的本能,在公司里人们喜好权力,争相抢攻,逃避或转移责任也成了自然反应;而有的公司职位级别过多,岗位界定不清,缺乏定期评审和日常监督机制;另外上层领导权力过于集中,导致底层积极性不高,缺乏创新活动。&nbsp;伴随责权利不清的是公司管理混乱的局面。领导者应更新一把手的观念,适当放权激励积极性,确保组织结构适合企业战略发展需要并趋向扁平化,创造一种公平、和谐和高效的人文环境。&nbsp;●1.无比厚重的部门墙&nbsp;我们很多主管一般都只提倡自己部门内部相互协作,希望协作中能给自己组织带来好绩效,当自己部门要协作外部门时,就开始推三阻四了。&nbsp;●2.肛泰式(膏药式)管控体系&nbsp;年年都有TOP N,年年都持续改进,但问题却从来没见彻底解决过,这些问题也很少见有变化过。神马都是浮云,一切都是假把式。&nbsp;●3.不尊重员工的以自我为中心&nbsp;我们在人才的管理上落后别人一个时代,当大家都在为尊重人、激发人、培养人努力奋斗时,我们还在把员工当敌人看,当机器管。&nbsp;●4.“视上为爹”的官僚主义&nbsp;当所有的利益都来源于上级领导评价的时候,官僚主义是不可避免的,奢望通过什么减少简化来解决问题更是痴人说梦。&nbsp;●5.令人作呕的马屁文化&nbsp;凡是领导说的都是正确的,凡是领导支持的大家都需要支持。无人愿意去忤逆领导的意愿,无人愿意和领导深入讨论问题,上上下下一片祥和之声,敢于直言的更是寥若晨星。&nbsp;●6.权利和责任割裂的业务设计&nbsp;人都是趋利的动物,组织的设计更要十分精细,能深入到人的内心实际需求,而不是按下葫芦飘起瓢的胡乱指挥。&nbsp;●7.集权而低效的组织设计&nbsp;企业大了后很容易带来一个问题就是效率低下,组织复杂,这也被管理界称为大企业病……&nbsp;●8.挂在墙上的核心价值观&nbsp;我们一方面号召大家要实践核心价值观,一方面缺乏有效的动作和价值支撑,最后导致流于形式。&nbsp;●9.教条主义&nbsp;大家觉得只要是进口的就是优秀的,只要是书上的就是可以应用的。这一方面说明大家过分迷信洋人,一方面说明心里没底,或者说对组织什么都不懂,只能生搬硬套。&nbsp;●10.夜郎自大的阿Q精神&nbsp;当我们在快速发展时,很多矛盾都被掩盖了,一旦增速下降甚至减速,矛盾很容易就激化了。&nbsp;(五斗米/文 原文经编辑与删节)&nbsp;

axis1与axis2的较量

这里我并不说是axis1和axis2的什么不同,只是最近接触到了axis1和axis2的应用而已。 情况是这样滴。 公司的系统架构是公司外部系统的接口交互都要走公司的接口层,再由接口层将信息透传给公司内部的各个系统。 接口层使用axis2来架构,我这块的接口部分是使用axis1架构的,这个框架用了好几年,相当的成熟,看代码中的注释,最早的有02年写的代码,听说是很早那一批海归写的。 按理来说,高版本一般都会是兼容低版本的,况且对于axis来说,只要是标准的wsdl就可以,可还是有些区别的。 我使用axis1可以正常调用和返回,接口层可以调用也可以返回,看日志,调用的输入和输出都是正常,可在接口层那边就是取不到数据。同事和我整整查了一中午问题,公司对接口很厉害的高手也没有个办法。 最后,还是用最底层的办法来查,webService的本质还是xml,查看输入和输出的xml,输入没有什么问题,输出还是发现了一些端倪。 作为一个返回对象,属性内容是包含在ns的标签中的,在我们输出的xml文件中,ns标签标签中出现的是mutilhref="#01" ,在ns的标签外面,有个#01的标签,在#01中包含着输出的内容。接口层使用的是axis2取数据是从ns的标签中取的,当然是取不到标签外的值,axis1是可以取到的。 让接口层改用axis1,为了保持整个框架的统一,肯定不能改,我们改成axis2,时间不允许。有问题就google、baidu了,最近google搜索,都是搜索的繁体或者英文,简体的好些不是很方便,有时google还打不开,有些厌恶baidu的搜索了,现在用有道多一些。对于axis1和axis2的这个问题,整个网络上面,就只有一个09年的帖子提到,让关闭一些wsdd中globalConfiguration的sendMultiRefs设置为flase。 设置为false之后,再次调用,ns标签外的对象就被包含在ns中,不会采用引用的方式了。 在http://axis.apache.org/axis/java/reference.html有几个配置的解释,没看到有中文的解释,按照我自己的理解,意译下。 sendMultiRefs true/false flag to control whether multirefs are sent or not. 是否使用引用对象的方式 sendXMLDeclaration true/false flag to control whether the <?xml?> declaration is sent in messages 是否包含xml头文件的信息 sendXsiTypes true/false flag to enable/disable sending the type of every value sent over the wire. Defaults to true. 是否在每个值中都标注值的类型参数

1 24 25 26 77