April 10th, 2012 | Categories: Misc | Tags: ,

堃哥曾经吐槽过这个,起源应该是有个公司有个部门叫“技术部”。
吐槽的大概意思就是说,很少人做技术的时候,会被呼来喝去“嗨,技术!来给我重装个系统”“嗨,技术!我怎么上不了网了”之类的。当然了该公司该部门不是这样的,只是他觉得很土。
估计C8O当年回湖南的时候大概就这遭遇吧,听说还要包销杂志什么的。恁一个惨字了得。

贵站情况也差不多。不知道谁写的脚本不能用了,“这个脚本怎么不能用了,你修修呗”,“有空把这xx功能写了吧”,“xxx问题还没修好么”,“怎么又卡了”
工作情况也差不多,不过好歹俺还顶着个“总” ,嗯,就管我自己。整天耳朵里就是这个“页面”,那个“页面”,“前台”,“后台”什么的,听着巨别扭又不知道为啥的一堆词儿。

大公司里自然多数时候是术业有专攻,小公司就不可避免地要求你啥都能搞了。我这种啥都涉猎啥都不会的就更惨,反正就是。。学呗。切页面很慢,但也凑合能切,Flash AS 对着文档也能慢慢写点。

前一阵从朋友那知道之前熟悉的帮过忙的一个创业小公司——的一个美工,我当年对其很是不满,页面里一有表单就是 table 嵌 table 中间还嵌着 <form>,套的时候比较头大;浏览器兼容性细节经常需要返工两三次什么的。等到自己开始需要干这事了,搞 HTML 模板了,才发现这玩意真不是我这种苦逼 coder 能驾轻就熟的,据说需要点艺术天赋 … 我这天赋,估计也就是点几个 16×16 的 gif icon 还得被人骂惨了的那种吧,硬着头皮干达到一样的效果至少效率低一半。扯远了,重点是,一个月这哥们就两千(多)块,对的人民币你没听错。我真特么想把丫挖过来……在我见识了无数切的比那烂两个数量级以上的不管外包还是内包的在某些浏览器下打开直接就斯巴达了的页面之后。搞笑的是,我第一个思考的问题是花这两千块一天能多睡几个小时。

前两天看着新一批实习站务估计就要进来了,好几个张嘴就是技术闭嘴也是技术,就好像技术只要做了一个 xxx 功能然后贵站自然就变好了什么都有了。真是这样?历史上失败例子数不胜数啊。

今儿下午闲着无聊(为了避免特定的一个或几个人看到了提出质疑,我要再声明一下,不是不够忙,是忙过劲了需要休息),跟几个搞 php 的朋友讨论了讨论现在比较牛逼的框架啊模板啊 5.4 的新特性什么的。大家都沉浸在理想的海洋里,聊罢各回各家,各自面对的现实是 IE6 透明 png,是我第一次进了后台两眼一抹黑不知道咋操作的 dedecms,是老板布置的烦死人的项目。理想跟现实之间差距还是非常大,我国仍然处于社会主义初级阶段,农业学大寨工业学山寨,任重,而道远。赫然想起几年前参观北邮人办公室的时候,觉得真特么活力四射激情无限理想驰骋。可惜时间慢慢过去,北邮人团队貌似也不是当年心中的惊艳模样,当年那些牛叉的不行的孩子们也已经各奔东西为了一口饭面对惨痛的现实。

引用 xw2423 一句话结尾吧,“工友太辛苦”。其实还有半句“还是去运营商和体制内好啊”我倒未必认同。同学里有几个考公务员的了吧,现在在无比悲催的初级阶段艰难度日。各有各的苦。只是俺们圈里都是挨踢的民工比较多一些罢了。。。

2 comments (97 views)
April 10th, 2012 | Categories: Tech | Tags: , , ,

几件事吧。

第一件,Webkit 和 Opera 居然无视响应里的 Vary: X-Requested-With,于是华丽丽的我的页面破了,只好判断浏览器是这两种就加个?ajax并且在nginx里给他喀嚓掉防止多余的 cache
都特么二十一世纪第二个十年了,居然特么 Squid 2.7 就支持的玩意儿最新的 Chrome 都不支持,搞毛啊,IE6 也只不过是忽略 cache 直接取新的而已,Firefox 应该是去年还是前年就 fix 了。

第二件,PHP 5.4 的 htmlspecialchars() 在 GBK 下不干活了,调试了一下发现是 ext/standard/html.c 里 determine_charset() 里有个 return cs_utf8;,居然 ini 里还没的调
给丫改成 return cs_8859_15; 灭掉了这个问题。不然特么源代码正则替换了就得。。。www2 更新是贵站任何一个系统维护都烦的要死的破事儿。。。

第三件,PHP 5.4 编译完之后 PDO 不干活了,玩命 502,只要 construct 的时候设置了 PDO::ATTR_PERSISTENT => true 就一个劲儿的 segfault,php-fpm 还不好调试,加了个测试环境启单进程发现死在 zend_std_write_property() 这个函数里,放狗搜了一圈没收获。。。。。就琢磨先去了这个破参数吧。。。问问各位大神们。

第四件,紧接着发现使劲 500,Strict Standard 告警,error_reporting 特么设成什么都关不掉。。。。。。。nForum 用的是 cakephp 1.2,看来该换换了,又是大工程,不知道 xw2423 对 YAF 有没兴趣?

第五件,为什么想到倒腾 5.4 呢?因为据说性能好了不少。今儿贵站主站一度 load 飙到 90 多,还不是流量高峰的时候,IO 巨轻,百思不得其解,后来发现 php-fpm 使劲儿的 brk() … 把 CPU 打满了。。。调了半天 eAccelerator 参数也没用,最后把丫关了,就好了,不然几小时到几十小时就抽风十几二十分钟冒一堆 502,受不了。回头换 APC 试试

第六件,发现 IE6/7 下 plupload 跨域不好使,crossdomain.xml 我都改疯了,手头木有现成 flash 调试环境,暂且搁置了 … 貌似 Flash:Init 事件压根就没传回 js 里,喵的。IE8 一点事都没有。

UPDATE:还真错怪了 eAccelerator,今天又出了 502,发现是有人高并发大量满世界搜索的问题导致的。。。

UPDATE on Apr 12:没错怪他,他有个问题是 sched_yield() 锁死,今天被 DoS 的时候有幸碰到了,换了 APC 观察

1 comment (260 views)
April 7th, 2012 | Categories: Tech | Tags: , , ,

一言以蔽之,诚彼娘的坑爹

早上一大早起来打车捎上穆小迪童鞋跑到原来机房楼下麦当劳吃饭。吃完饭进去发通告切域名停服务下架一切顺利,十点多到了新机房
等布线等到一点多,然后开机,发现超了电,辗转腾挪又耽误半小时,总算是搞定了限电

开始挨个调试,发现线不通返工,又耽误半小时

然后主站起不来了,kernel panic。IBM 服务器诚彼娘的烂,重启一次十分钟,进了四五次 rescue 才终于想到一个 initramfs 里的旮旯配置把它弄好。

然后胡总的转换数据结构程序总是段错误,嗷嗷琢磨了半天最后神奇地主站能跑二站不能跑,现场 gdb 没调试符号真是伤人,缺一堆 debuginfo 包 sohu 源没有,centos 官方源又太慢。唉。

然后都调通就闪人了,六点多了。特地看了下各个线都正常。去吃饭。又是麦当劳。中午把我家兔忽悠了,本来是大概两点多就去港丽的。呜呜我的港丽
吃一半胡总来电话说转好了。

风风火火赶回家开站,突然开始卡了,交换机上联出方向狂丢包,像极了线虚了,赶紧联系运维接口人,人已经走了,只能明天了。。。。。

其实还有好多想说的,不过有些是不方便说的,算了。。。

贵站的维护,少有顺利,基本都是一个接一个的意外。不管是搬一半服务器莫名坏了,还是突然俩盘红灯,还是明明上次还能起来这次 panic 了,还是线不通、口不够、software NMI。。。

还好了。比去唐山强多了,至少有饭吃,不用长途奔袭,不用遭受回来都走到天津界了突然有个什么又坏了被迫折返的杯具。比前几年真是幸福很多了。

————————感想暨广告————————
想知道恶劣条件下运维的感受么?想拥有被上万用户指着鼻子骂又不知道该说啥的体验么?
不能分布式的情况下单机故障如何竭力避免?服务器短缺老旧机架资源还有限比如电不够的情况下如何保证运行正常?
如果你恨一个人,那么就让它来贵站当系统维护吧,也就是大家通常所说的技术站务,技站,当然,也有叫站技的,不好听而已

它需要:

具有一定的运维水平,知道网线怎么做,kernel 怎么编,服务器怎么管,怎么监控,费多少电,什么是 iLO/DRAC/IMM,熟悉 Linux 基本操作,偶尔还有 IBM 服务器插 Dell 盘柜需要刷成公版卡

具有一定的开发水平,知道咋写散列表,知道 IE6 所有常见 bug,知道 ajax 是什么玩意儿,能用 Zend API 扩展 PHP,能用一堆垃圾脚本光速完成各位站务老大们的诡异需求,友站出问题能杀出去以大公无私的精神帮助调试解决问题,偶尔还有 gcc 版本和 kernel 版本造成的诡异问题如何规避

体力超好,一天不吃饭还能在机房里高强度维护保证不出大错 ,回家睡不了几个小时又要被抓起来干活,休假不得安宁,甚至无论天涯海角 24 小时都要开机,只要在有信号的地方,电话响起,随时进入一级战备打开 SecureCRT。。。

有时要客串产品人员,从构思需求设计到效果图到后期和运营人员沟通全部一手包办。

有时会被敏感词要求配合查这个查那个删这个删那个,不管是半夜一点还是早上四点半。

看完这些还有兴趣的,直接评论留下联系方式吧。。。。。

10 comments (860 views)
April 4th, 2012 | Categories: Tech | Tags: , , ,

今天干了两件事,都和贵站即将上线的 nForum1.1 有关

一个是又调了调 IE6 的 css 兼容性,觉得不厌其烦,深思熟虑之后把这个加上了,IE6 访问每七天(好像是,可设)会弹个小窗

一个是被 IE6-8 在页面中有 flash 的时候 document.title 会加上/变成 window.location.hash 的值,极为不爽,官方 bug 报告页面如是说:
http://bugs.adobe.com/jira/browse/FP-240
https://bugbase.adobe.com/index.cfm?event=bug&id=2927932
感慨一下都这么多年了 Adobe 到底是干嘛吃的啊……

最后我的解决方法是这样的

if ($.isIE()) {
    document.onpropertychange = function() {
        if (window.event.propertyName == 'title' && document.title != window.origTitle)
            setTimeout(function(){document.title = window.origTitle}, 1);
    };
}

其中 $.isIE() 是 nForum 里用来判断是否IE的函数。然后如果要设置 document.title,就搞了这么个函数

$.extend({
    setTitle: function(title){
        if ($.isIE())
            window.origTitle = title;
        document.title = title;
    }
});

然后还发现了 syntaxhighlighter 和 jQuery.animate() 一起用居然也有问题 ,看下面大家说 XRegExp 1.51 就解决了,遂从 github 上搞了 syntaxhighlighter 最新的代码(最后一个 release 居然还是两年前),找了个虚拟机装了 node.js build 了一把,果然 ok 了。

然后发现 XRegExp 加载多次在 IE 里会报个脚本错误。。这个留给 xw2423 同学去搞吧,我当年就因为不厌其烦才把 MathJax 放在全站加载的。syntaxhighlighter 貌似是动态按需加载各种 parser 的,所以效率应当不是大问题。

baidu 联盟广告报错的事情懒得再查了,等上线观察一下收入吧。真是,都 21 世纪第二个 decade 了,居然还在搞 IE6,还在为各种不支持 ajax 的乱用 document.write() 的广告商(尤其是该死的 Google ADSense)伤脑筋,真是扯淡的一件事啊……

UPDATE: xw2423 解决了 IE9 下这段搞 title 代码占 CPU 特别多的 bug,其实就是把

if (window.event.propertyName == 'title' && document.title != window.origTitle)

改成

if (window.event.propertyName == 'title' && document.title && document.title != window.origTitle)
0 comments (134 views)
April 2nd, 2012 | Categories: Misc | Tags:

那什么…花了点时间搞定了WP 3.0 Multisite 和该死的 domain mapping。。。

找俺就这,找俺家三兔请猛击传送门

可耻地,后来发现 Multisite 还是不太灵活,反正就俩兔,索性装了俩 WordPress …

0 comments (115 views)
Page 2 of 212
TOP