分类目录归档:Excellence Article

《从技术走向管理》

对领导 了解领导的沟通风格。 别不屑于拍马屁,人人都喜欢听好话,你领导也不例外。 领导安排的事情要第一优先处理,并及时反馈,如出差的时候到了目的地让领导知道你到了。 给领导汇报要出选择题,而不是问题!领导喜欢部下反应问题时同时提出过个方案供他选择。 领导讨厌部下问直接怎么办或只提供一条路没有选择。 部下说”我以为“,”我知道“,不经请示擅自做主捅了漏子不可收拾,出了问题推卸责任,说”我以为“的词语换成”我错了“。 他也喜欢部下提供有效的反馈信息是同时提出自己的建议。 站在领导和公司的角度看问题。 领导喜欢你能随时报告你的工作进度,不喜欢倚老卖老,埋头做事却什么都不讲。 领导不喜欢自以为是,自持功高,拉帮结派要挟领导。 绝对不要猜测领导的想法,因为你无法达到领导的思维层次。 与领导沟通有错就认,不要辩解,不要犯同样的错误。 与领导沟通时那上笔纸记录。 与领导沟通前设想他会有的疑问,提前准备答案。 让领导的话只说一遍。 你要绝对相信领导的要求总是合理的,领导说的就算错了也要坚决执行,因为你无法完全清楚领导的全盘计划。 满足领导的业务需求的同时,你得考虑他的感情需求。 不要对领导说”应该“,”不应该“,你应该改用”建议“。 工作需要改进的地方自己提前交代,不要等领导说出来。 对下属 安排下属做他们擅长的事情。 向下属解释分派的工作,令他有全面的理解,并引起他对这项工作的兴趣。 分派工作时给与下属所需的资料,由他来决定处理的方法。 分派工作时定出完成工作的时间表的工作标准。确定下属完全明白要求。 关注下属的优点,充分的利用下属的有点而非克服缺点。 绝对不要试图改变下属的性格与特点。 在他发错前提前纠正,别等着他都错了才去骂他“你个蠢蛋“。 不到不得已,绝对不要用上你的职位权利来让下属被迫听你命令,正确的方式是以个人魅力让下属跟你。 就算下属错了,指出错误也是需要艺术的说法,不能开口就提问题,尽量先说他值得赞赏的地方,然后在说某某地方还需改进…一样以来下属自信心不会受到打击。 下属的生活问题也是需要多关注关注的,要不然说不一定那天他就跑去跳楼或者跑幼儿园去了。 定期请下属吃饭,喝了酒心里话才会说出来,才能更好的融合团队。 员工一般非为四种: “态度好能力差” – 在领导看来,这种更有培养前途,所以这说明态度好的人才容易当官 “能力差态度差” – 这种人建议干掉,但干掉也得要有“艺术”不然又一个跑房顶或者幼儿园去了 “能力好态度差” … 继续阅读

发表在 Excellence Article | 标签为 , | 一条评论

DedeCMS 5.6版本的Nginx环境伪静态化

Linux环境下dedecms5.6实现伪静态的方法,5.5 5.3应该也适用。 1.首在在后台开启伪静态. 2.然后栏目和文章设置成动态浏览. 设置方法为:在后台系统设置sql里执行以下语句 将所有文档设置为“仅动态浏览”,update dede_archives set ismake=-1 将所有栏目设置为“使用动态页”,update dede_arctype set isdefault=-1 改成1就是静态。动态转换为静态后需要重新生成HTML。 3. nginx设置重写规则. 内容为: rewrite “^/list-([0-9]+)\.html$” /plus/list.php?tid=$1 last; rewrite “^/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$” /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 last; rewrite “^/view-([0-9]+)-1\.html$” /plus/view.php?arcID=$1 last; rewrite “^/view-([0-9]+)-([0-9]+)\.html$” /plus/view.php?aid=$1&pageno=$2 last; break; 修改channelunit.func.php文件 原来大约113行: return $GLOBALS["cfg_plus_dir"].”/view-”.$aid.’-1.html’; 修改为: return … 继续阅读

发表在 Excellence Article | 标签为 , , | 一条评论

500 OOPS: cannot change directory错误

其实这个错误都遇到过好几次了,就是因为默认centos selinux限制了,不过今天居然一时没想起来 现在再做个记录吧: 他的系统是CentOS,是RH派系的。我把vsftpd安装配置好了,以为大功告成,但客户端访问提示如下错误: 500 OOPS: cannot change directory:/home/ftp 原因是他的CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。 //查看SELinux设置 # getsebool -a|grep ftp ftpd_disable_trans –> off 或者 ftp_home_dir–>off //使用setsebool命令开启 # setsebool ftpd_disable_trans 1 或者 # setsebool ftp_home_dir 1 //查看当前状态是否是on的状态 # getsebool -a|grep ftp ftpd_disable_trans –> on 或者 ftp_home_dir–>on … 继续阅读

发表在 Excellence Article | 标签为 , | 留下评论

MySQL 先排序再分组的问题

group是分组,想先排序如何办? 建一个表试试 – – 表的结构 `test` – CREATE TABLE IF NOT EXISTS `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(16) NOT NULL, `phone` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; – – 导出表中的数据 `test` – INSERT … 继续阅读

发表在 Excellence Article | 标签为 , | 留下评论

Django 1.2.1 CSRF verification failed. Request aborted.

I was getting this 403 error today while attempting to make a POST request to a view: 403 Forbidden CSRF verification failed. Request aborted. Help Reason given for failure: CSRF cookie not set. Hopefully this saves you some time because … 继续阅读

发表在 Excellence Article, Programming | 标签为 | 4 条评论

Windows平台安装Python2.6 和 MySQL-Python

Python 版本:2.6 下载地址:http://www.python.org/download/releases/2.6.1/ 下载msi文件并安装 MySQLdb版本: MySQL-python-1.2.2.win32-py2.6.exe 下载地址:http://home.netimperia.com/files/misc/MySQL-python-1.2.2.win32-py2.6.exe 参见:http://sourceforge.net/forum/forum.php?thread_id=2316047&forum_id=70460 常见问题: 1.ImportError: DLL load failed: 找不到指定的模块。 —————————————————————————————————- D:\Program Files\Python2.6>python Python 2.6.1 (r261:67517, Dec  4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)] on win32 Type “help”, “copyright”, “credits” or “license” for more information. … 继续阅读

发表在 Excellence Article, Programming | 标签为 | 一条评论

AMQP协议介绍

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 AMQP在消息提供者和客户端的行为进行了强制规定,使得不同卖商之间真正实现了互操作能力。 JMS是早期消息中间件进行标准化的一个尝试,它仅仅是在API级进行了规范,离创建互操作能力还差很远。 与JMS不同,AMQP是一个Wire级的协议,它描述了在网络上传输的数据的格式,以字节为流。因此任何遵守此数据格式的工具,其创建和解释消息,都能与其他兼容工具进行互操作。 AMQP规范的版本: 0-8        是2006年6月发布 0-9        于2006年12月发布 0-9-1     于2008年11月发布 0-10      于2009年下半年发布 1.0 draft  (文档还是草案) AMQP的实现有: 1)OpenAMQ AMQP的开源实现,用C语言编写,运行于Linux、AIX、Solaris、Windows、OpenVMS。 2)Apache Qpid Apache的开源项目,支持C++、Ruby、Java、JMS、Python和.NET。 3)Redhat Enterprise MRG 实现了AMQP的最新版本0-10,提供了丰富的特征集,比如完全管理、联合、Active-Active集群,有Web控制台,还有许多企业级特征,客户端支持C++、Ruby、Java、JMS、Python和.NET。 4)RabbitMQ 一个独立的开源实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。RabbitMQ发布在Ubuntu、FreeBSD平台。 5)AMQP Infrastructure Linux下,包括Broker、管理工具、Agent和客户端。 … 继续阅读

发表在 Excellence Article | 标签为 | 留下评论

软件构建中的理想设计特征

1、最小复杂度。设计的手艺好目标就是要复杂度最小,避免作出“聪明的”设计,因为“聪明的”设计常常难以理解 2、易于维护。 易于维护意味着在设计时为做维护的程序员着想。 3、松散耦合。松散耦合意味着在设计时让程序各个组织称部分之间的管理关系最小。通过应用类接口中合理还凑向、封装及信息隐藏等原则设计出相互关联尽可能小的类。减少关联也就是减少了集成、测试和维护时的工作量。 3、可扩展性。可扩展性是只可以增强系统功能而无须改变底层结构,可以改变某一个方面功能而不影响其他部分。 4、可重用性。可重用意味着代码可以在其他系统的组成部分中重复使用,降低整体的成本和提高生产效率。 5、高扇入。高扇入就是说让大量的类是有那个某个给定的类。这就是意味着设计出的系统很好的利用较低层次上的工具类。 6、低扇出。低扇出就是让一个类里少量或者适中的使用其他的类。高扇出说明了一个类使用了大量其他的类,因此可能变得过于复杂。 7、可移植性。可移植性是说应该设计的系统很方便的移植到其他的环境中。 8、精简性。精简就意味着系统没有多余的部分。这样有利于后面的单元测试。 9、层次性。层次性就意味着尽量保持系统各个层次保持可分解,使你能在任何层面观察系统。 10、标准技术。一个系统所依赖的外来的,古怪的东西越多,别人在第一次想要理解它的时候就越头痛。尽量使用标准化,常用的方法,让整个系统给人一种熟悉的感觉。

发表在 Excellence Article | 标签为 , | 留下评论

关于PHP最佳实践方法的两个PPT

Best Practices of PHP Development View more presentations from Matthew Weier o’phinney. Everyday Best Practices of PHP Development View more presentations from Matthew Weier o’phinney.

发表在 Excellence Article | 标签为 | 留下评论

利用CodeIgniter缓存进行攻击

CI自带的缓存系统确实很方便,但她存在一个很大的弊端,看缓存系统的源码: CI把md5(index.php+uri_string)作为缓存文件名(没完全copy,详见libraries/output.php) 这个uri_string允许URI串夹杂垃圾信息,比如: http://ci-site.com/index.php/index/index/1 http://ci-site.com/index.php/index/index/1/2 http://ci-site.com/index.php/index/index/1/2/3 上面三个请求,CI将生成3个不同的缓存文件 问题来了,假如攻击者写一个并发访问脚本: 每秒并发访问100次(任何adsl用户都有足够带宽发起攻击) 循环访问 index.php/index/index/1 至 index.php/index/index/10000000 那么服务器将生成一千万个首页垃圾缓存,在同一个目录里面! 假如你的网站首页html有10kb(一般来讲,10kb作为首页不算大) 这个缓存目录的尺寸将达到:10kb x 10,000,000 = 100GB 完成攻击所需时间:大约27小时 更重要的是CodeIgniter本身并没有提供更详细的缓存检测机制和缓存容量限制机制,加入你没有对cache目录进行磁盘配额限制的话,那么一轮并发高的缓存攻击将有可能将硬盘塞满,之后网站就会变得异常缓慢。而且更要命的是CodeIgniter本身没有缓存清除机制,只能干等着缓存过期或者手动清除,CodeIgniter最大的优势在于它的性能和学习曲线。 总觉得CodeIgniter本身就是一个半成品,没有缓存清除机制也就算了,还没有模块化缓存(即只缓存页面某个或者某几个部分)的的机制,CodeIgniter这么优秀的Framework在缓存方面算是做得很失败了,不过得益于它优秀的扩展性能,仍然有很多解决方法,况且任何Framework都不是完美的。 解决CodeIgniter大体上有四种方法 1)关闭缓存,我觉得这基本上算不得一种解决方法,因为这牺牲了网站的性能 2)架设缓存服务器,对于一般的中小型网站来说这也比较奢侈,且不说squid或者vanish的学习曲线有点长,也没与服务器设备。 3)增加严格的检测机制,这是一个非常可行的方案,比如对URI每个传入参数的类型进行严格的验证,在一个页面显示前进行详细的处理,比如ID为10000的记录数据库中根本不存在,那么使用show_404()方法输出404页面,这个页面并不会被缓存,假如没有增加这个验证,程序输出的页面将会被缓存,只是页面的某个区域的内容为空而已。比如显示文章的区域是空,侧边栏和头部都是从模板中继承过来了,仍然被缓存了。 4)使用其他cache类替代CodeIgniter的缓存类,比如APC

发表在 Excellence Article | 标签为 , | 2 条评论