DEVELOPER'S TOOLS Category

某友,在某大型组织的国内总部做manager,周五晚十一点四十忽然电话我,让我跑他办公室去帮忙搞定内部系统的收发邮件问题,因为他们的邮件系统近几天切换到了EXchange2007,导致现有的WEB系统平台亦需升级。他已经为此事折腾了十多小时了,情况没有任何改善。这个内部办公和信息化平台以邮件聚合为信息的核心,他确实需要整个系统在下周一恢复以便中国办公室数百员工能够在下周一正常使用此系统。
打车赶到他们大院,朋友在大院门口高兴地等待他想像中的救星。这次没有像以前一样被登记。在办公室坐定,没有理会以zend framework为框架开发的一大坨文件,按错误提示Google之,发现是zf的 bug,mail/protolcol/pop3.php,此文件中某处换行符写列为\n。而针对exchange这种windows系统,\n可能不能在任何时候都顶用。当然,一分钟后,系统从服务器自动抓取和分析邮件的功能就恢复了。
这时朋友的MSN中有家伙在欢呼——是他们系统承包商的工程师,也是最初此系统的开发者,他已经帮着折腾了一整天,这时仍蹲在MSN上保持热线联系试图解决问题——可惜的是,他们都没有试着把一个德语的站用google译成英文,当然也没有看到这种小众问题。我试了,于是成功了。
如此easy呀,终于有闲暇看看他新换的合用办公室了,大屋子里还从着另一位实习生美眉在加夜班,唔,忙碌着往欧洲打电话,年轻、漂亮,让人惊艳。
且慢,因为有些文件中的smtp配置是单独的,也需要修改。那么,问题出现了,系统以前收邮件用的是ZF的mail,发邮件用的是Swift,很奇怪的选择。
更奇怪的是,我竟然搞不定它。
1. 改配置后仍不能再发,内网电脑outlook测试帐号没问题,远程到我的某台windows服务器,oe测试亦无问题
2. telnet建立smtp服务器初始连接,starttls然后提示验证方式gssapi ntlm,这表明是可以正常到这一步的,当然没有继续试因为swift应该能搞定接下来的步骤
3. 继续折腾swift,有意义的google结论几乎没有
4.决定换成PHPMailer,仍然无法连接,这下主要是两种错误:
Unable to authenticate SMTP/Failed to connect to server/unable to relay
不用说,第三种故障可以很快解决,一般需验证才能向域外发信,测试果然是无ssl、无用户名密码时只能向域内发信。
5. 开始和前两种情况博斗但已经很累了,因为认识事情很简单但偏偏无法搞定,故费了大量的时间在日常检查上。也跑了swift和phpMailer的官方DEMO和自制demo,试过所有配置方式,均告失败。
6. 天色近亮,朋友还要上法语课。于是安慰他说当然还可以让邮件服务器管理员将此服务器ip设为不需验证。但我们都知道这种方式很愚蠢。
7. 回家睡了半天,下午参加了个活动。
8.晚上忙完例行的背单词任务,继续奋战。这次在自己机器上远程搞,因此可以利用机器上的十八般武器了——当然主要还是SmartSniff,在自己的outlook上配置然后试发,然后看抓到的包里的那一大坨smtp会话。
9.暂时不管抓到的东东,继续折腾配置,检查和确认几个测试服务器上的OpenSSL扩展都是开着的。
9.折腾一小时,老路看来是走不通了。可能是睡足了的缘故,忽然灵光一现,重新留意到STARTTLS和接下来的GSAPI还有NLTM,等等,为什么没有LOGIN?
9.妈的,Swift以前能发的原因是不是因为其默认验证方式是符合旧邮件系统的LOGIN?
10.好吧,仍然不行,虽然看起来似乎是解决了整个问题中最愚蠢的部分。虽然事实证明前面的一晚上其实是在更愚蠢的基本配置和代码检查、环境检查上转圈。
11.等等,telnet中的IP为什么和ping的IP不一致?妈的,我很清楚他们有很严密的防火墙,并且内外网解析成不同的IP,但我昨天在内网关了测试WEB服务器的防火墙也一样搞不定呀。并且嗅探到的dns解析过程也很他妈正常,也非常能确定这是一个被验证过的邮件服务器主机名。
12.死马当活马医,将配置文件中的domain name换成IP,结束了。
于是扔邮件给朋友,告诉他不用紧张了,现在是周日凌晨4点但我们已经把事情搞定了,早上当然可以多睡一会儿白天当然可以继续安心学法语。
那么,这就是一个从一分钟变成十小时的故事。这样的奇遇和巧合,不论在我还是菜鸟时,还是现在自以为是WEB及周边问题解决专家时,一直上演。
得承认,很多时候,除了使用基本功、我引以为自豪的想像力、无穷无尽的工具,还有他妈的——运气。
好运的是,如果想要解决一个问题,无论花了多少时间,我总能得到一个让同事/客户满意的解决方案——因为,如果从理论上可行,我会去找一解决这个问题的google记录档,或者,自己开始,如果从理论上不可行,那么,在最早回复他们。
Google不能告诉你一切,唔,至少,不能告诉你基于基本功的直觉,也不能告诉你分析、研究和解决问题的思路。
kolidon

这是前一阵在我在公司中对商务人员做的一个案例分析PPT中的几页,现在似乎是可以分享了。当然,作为一个WEB架构人员或者程序员,若不能对这些词汇详细论述和举一反三,是不合适的。
平台与环境
ASP.NET、JAVA EE、JAVA、C#、VB.NET、PHP、Python FLEX Redhat、CentOs、BSD Windows2003/Windows2008 Apache(Resin、Tomcat)、IIS Oracle9i/10g、Mysql4/5、MSSql Server
数据库
表、索引、触发器、存储过程、CRUD 多表联合查询 数据库镜像、主从结构、自动备份、同步 分库、分表 数据库调优、索引优化、查询优化……
前台表现(UI)
Smarty,freemarker,velocity,Jsp FLASH,XML,FFmpeg、FLv、WMV Javascript,Ajax,jquery, [...]

安装时,依然是在网上找的大补帖(I like it. Ha Ha.)文章在这儿,http://yuntian.name/?p=12
类似的这些文章可能都来源于IBM网站的这两篇:
·使用开源软件设计、开发和部署协作型 Web 站点,第 13 部分: Eclipse 中的 PHP 开发   如何创建、调试并共享文件 http://www.ibm.com/developerworks/cn/web/i-osource13/
·PHP 程序员的调试技术 http://www.ibm.com/developerworks/cn/web/i-osource13/
在我的COMPAQ N600C上,ubuntu7.04 + Nginx0.51按类似办法测试,一切顺利。
但在服务器(Win2003+IIS6+fastcgi for iis+php5.2.4+ZendOptimizer-3.1),无法断点调试。
折腾了小半小时,总以为是Eclipse的这个插件的问题,但既然大家都信誓旦旦,晕头下看php的error.log,在我使用Zend Extension Manager 加载Xdebug时,提示:Zend Optimizer is incompatible with Xdebug in Unknown on line 0
有兄弟遇到和我相似的问题。这儿的解决方案:
Setting up Xdebug on Mac OS X (or Win32 / Linux):http://debuggable.com/posts/setting-up-xdebug-on-mac-os-x-or-win32-linux:480f4dd6-0240-4a90-8fa1-4e41cbdd56cb
评论中Olivier同学说:I solved by turning off the Zend Optimizer in php.ini
恍然大悟。
那么,两个结论:
1. Xdebug必得使用zend_extension_ts来挂载;
2. [...]

如下为kolidon的看家法宝:
有几种编辑器:
Editplus、Notepad++、Ultraedit、VS express、eclipse for php
有几大浏览器
IE
firefox
opera
safari
有对应的调试工具
Httpwatch、IE developer Toolbar、Companion.JS
firebug、Yslow、DOM Inspector、Web  Developer
有专用的协议包捕捉工具和HTTP 捕捉工具
Ethereal、Fiddle
还有HTML及CSS工具
HTMLTIDY、http://validator.w3.org/、http://jigsaw.w3.org/css-validator/
有下载工具:
flashget早期版本(有时用来做些不能宣诸于口之事,比迅雷合适)
有系统平台:
win2003、win2008、Ubuntu、Centos
还有系统辅助:
MS Toolkits(Sysinternals)、VNC Vewer、putty
有WEB服务器及配套软件:
IIS6、IIS7、APACHE、LightHTTP、Nginx、.NET framwork、PHP、Python、fastcgi、php-fpm、Server-U、wu-ftpd
还有性能测试工具:
WAST、AB
有数据库管理:
EMS系列软件、PHPmyAdmin
最后,最有用的其实是:
Photoshop、Office中的excel

服务器维护日志20071002

In: DEVELOPER'S TOOLS

服务器跑IIS+php5,以isapi模式,PHP应用时常变慢。
最近下定决心,在本地测试了fastcgi for iis6,压力测试效果不错——虽然从程序响应时间来看似乎没有提升。
装上,果然天下太平。
不足的是,应用程序池在内存和CPU限制上似乎不太好办——限制CPU后即报错。
只能从fastcgi配置和php配置中单个页面执行时间上想办法。
[技术] 解决了一个头痛一年的服务器问题[补]

About this blog

致谢:
本博客近日收到第一笔捐赠 200元 人民币。
一旦捐赠人愿意公开昵称或姓名,将开设专门页面记录。


关注WEB应用系统架构,侧重效能、可用性研究。欢迎访问treeber.com查看本站整理自网络的非原创精华(筹建中)。