分类 WebBuild 下的文章

为Linode(UBUNTU server)添加SNMP

发表于 WebBuild

因为所在的godaddy服务器时不时受到GFW的亲睐,监控宝的短信几乎都是月初前两天就发光了,所以最终还是决定向Linode搬家。在此先感谢下Blogkid同学的帮助。

装上

AMP

环境之后,就准备试用下监控宝服务器监控,他们的监控是使用的SNMP监控(可以参照监控宝这里的安全指引第一部分)。因为在配置中自己遇到了一些问题,所以记录下。(不是所有的同学都会遇到问题,张磊同学就说他安装配置一帆风顺)。

我选择使用的server是Ubuntu 10.04 LTS,并且使用开源的Net-SNMP来做监控,如果有同学也选择的Linode并使用和我相同的系统如果在安装和配置Net-SNMP遇到同样的问题,下面的内容可能能用到。

因为Net-SNMP并没有为Debian用户编译好.deb包,所以只能到项目主页下载源码编译。

如果你也是拿到服务器第一步就来配置了,所以在第一步./configure的时候就遇到最基础的libc6-dev包没有的问题,此时报错会如下

configure: error: C compiler cannot create executables

。在Debian系下你只需要apt-get就可以了(我是直接root用户登录的):

apt-get install libc6-dev

同时我发现监控宝指引上的openssl的路径和我的不同(一般openssl是默认安装了好的),所以这里参数也需要改下(不过我并没有开启SSL,米钱),使用dpkg(dpkg -L openssl)可以查看,如我的路径是:/usr/bin/openssl。

接下来我发现在执行make的时候,又报错了:

/usr/bin/ld: cannot find -lperl

。这是因为系统没有安装perl这个lib,也可以使用apt-get简单的来安装(根据报错信息我们知道需要安装libperl-dev):

apt-get install libperl-dev

其实我们打开Makefile可以看到这里是调gcc来编译的。习惯了在desktop发行版上双击.deb包来安装软件的如我等小白明显就是一开始就可以弄好编译环境。

到此,应该你的Net-SNMP应该顺利编译安装上了。不过我杯具的是安装的是SNMPv3,不过配置好了之后监控宝却一直通信不上,试着用SNMPv2c的验证通信上了。

最后再次推荐下强大的监控宝。并且感兴趣的同学可以使用我的邀请链接注册(其实本文“很不厚道地”埋了很多这个链接),地址是:http://www.jiankongbao.com/invite/x2r3ro,这样我和你都能额外获得5条监控宝的报警短信,反正于大家都没坏处嘛。

JavaScript那些事及第十一期web标准化交流会收获

发表于 WebBuild

本期w3ctech交流会主题是《我和JavaScript那些事儿》,是很泛的话题,有幸听到了老潘阿当rank月影音速MM等同学的分享,收获很大。

既然话题是我和JavaScript那些事儿,我也插播下我自己与JavaScript的那些事。我几乎也是05年左右第一次开始接触javascript,当然记得第一次alert出来hello的时候的那个兴奋。不过很惭愧的是,后来一直没怎么深入学习。月影大侠也是05年开始玩js,现在是js界叱咤风云的人物,我却还基础的JavaScript都玩不好,更惭愧的是现在还每天坐在月影旁边。后来工作了之后项目承担点与JavaScript打交道较少,并且有月影、JK及rank等同学写好的脚本库和组件,加上自己懒惰的性格,学习得也愈少了。

以一个用瀑布型都玩不好的菜鸟的理解,我认为JavaScript可以说是一个人小鬼大的语言,他的很多特性使得他容易上手又难以精通。并且他从出生起就带着很多不完善的东西,就像老道说的可惜大家已经用上并且爱上他了,所以再要严格的来次涅磐就不大可能了,后面rank同学也说到了组件开发中接口的设计就说到了设计中的这一点要一开始就考虑到。还有就是JavaScript规范的相对混乱,在基于浏览器的开发情况下:核心部分是ECMA来制定,而DOM又是W3C来规范,BOM部分实现上各个浏览器各自为政。不过个人觉得JavaScript最好玩的就是他的弱类型及对象的prototype,这是一种很好的抽象。这样一切传参和返回都可以是任意类型包括函数。就可以玩出看上去可能有点非主流但是很帅很流行的闭包、泛函这样的东西。

接下来说下在交流会上得到的收获。

首先是吕婷同学的分享,分享了她自己学习JavaScript的过程,ppt很漂亮。

然后老潘分享了《JavaScript闭包实例》,开始之前他自嘲说这个话题很枯燥,基本大家都会睡觉了。结果还好,好像就一哥们睡着了(不小心被我发现了)。老潘的分享很好,基本用很容易理解的方式向大家介绍了闭包及使用中内存泄漏等风险。

然后阿当用一个tabView实现来说明组件开发,用多步修正的方法来演示,很不错,一步步带领大家思考怎样满足多变的需求及优化余地。相信刚接触JavaScript的同学也能很好的理解。

接下来是rank的分享,分享的也是组件开发。从需求实现使用迭代等方面说明了组件开发中的重点及大家容易忽视的一些点。比如接口的实现,既要做到统一又方便后面升级开发、要做到内部高效率又要使使用者能容易使用。

很巧合的是这次虽说话题是《我和JavaScript那些事儿》,不过讨论最多的是组件实现这个具体的话题上,可能因为分享者带来的话题有关系吧。其中很有收获的一点是月影突然带来的一个关于组件实现的一个很独特的观点。可能是因为我们过多的关注(样式)组件最终的“展现”形式而没有用一种归类抽象的观点来看问题。就拿样式组件来说,其实质其实是通过交互带来的样式反馈。月影同时用Twitter来类比,比如我(类比页面中的某ELement)fo了@akira_cn(类比页面中另一个Element如button等),然后月影受到某刺激事件如女朋友的表扬(类比页面中click等事件,这个事件可以是任何的,onclick,onmouseover或者onhit什么的无所谓),然后月影发出通知:“MM表扬我了”(组件中建立好的联系通道),接着我作为一个fo对这个通知作出反映:“恭喜,恭喜!请客!”(类比出现popup框或者将某块常用说到的tabView中某块content块显示出来)。

这次交流会收获很大,也特别感谢soso提供的QQ公仔奖品,感谢腾讯的同学热情的招待,感谢所有分享者的准备,感谢所有参与交流的同学。boboRobin一上午就在忙碌的布置会场,大家给他俩来点掌声。

同时,因为某些特别的原因,在这里特别祝福波波,不管他做出怎样的决定,希望他以后的人生路更加精彩!也特别感谢他带给我们这么好的交流机会和平台。

最后,交流会下一期就是一周年生日了,祝福我们的交流会!

“邪恶”的opener

发表于 WebBuild

源于空空这条推

百度搜索结果页的那句 var location; 宛如神来之笔……


发散一下,然后在JerryQu及好奇同学的教导下知道了window.opener这个神奇的对象,然后发现它实在调皮又邪恶。他的location属性是个奇怪的东东,是外域虽然不可读却是可写的。
比如我们在页面中这样写(实例可以在http://hi.baidu.com/ivershuo_h右侧友情链接中点击最后一个那个名为“测试”的链接玩):

<script type="text/javascript">
var u = ['baidu.com', 'google.com', 'ivershuo.com'], 
i = 0 , 
l = u.length;
setInterval(function(
){
    opener.location = 'http://' + u[i];
    i++;
    i = (i == l?i = 0 : i);
},2000);
</script>


这样在所有链接到这个页面的页面就会出现不停跳转的情况,就算是使用后退按钮退回到先前的页面也一样(这个页面的opener将一直指向打开它的那个窗体)。这样对于一个普通的用户来说会觉得很奇怪。
如果用setTimeout及大延迟时间,然后用户又一直没关闭open(链接执行)页及opener页,且用户回到opener页继续查看,就会导致看到某个时间正在看的页面突然跳转而不知道在后面“捣乱”的却是来自外域的另外一个页面。
而如果针对某个特定的链接来源页(如搜索引擎搜索结果页),还可以预先埋上opener.location的hash到指定的页面id元素上,加上定时还可以让页面“跳舞”。
而如果是搜索引擎快照这样可能导致某些小风险同域风险的页面呢?
p.s:猜测因同步自己twitter显示到网页上的缘故,服务器ip在天朝某些范围处于和谐状态,建议用google reader订阅我的blog,RSS地址:http://feed.ivershuo.com/shuo

标记语言设计的抽象程度思考

发表于 WebBuild

突然觉得HTML越来越乱了,现在满世界都在喊着HTML5,前端同学好像都把他当作了一个救世主。

HTML是一门标记语言(Markup Language),标记语言在于他的设计不需要逻辑功能,他最主要的作用就是用确定的标签(在html中是HTML elements)来容纳有不同的内容。其实世间万物本来就有他自己的意义的,在网页上显示出来的一切文本、图像、视频也是。一块巧克力不把它放到巧克力盒子里我们一样知道它是巧克力,只是为了方便生产、运输、卖出的识别我们大多会将巧克力用包装装起来。一个图像我们不用img标签包含,浏览器也是有可能知道它是一个图像的,从一定程度上来说,超文本标记语言的发展是浏览器工业化发展的一个象征。将同类的的东西放到同一个特定的“容器”中,在oop中来说,就是类的思想了。

于是,真正引发的问题就是这个容器究竟该设计得多“大”?这就是设计中经典的抽象程度的问题了。阴阳五行足够概括世间万物、但不能完全描述世间万物。在HTML中,使用标签(Element)和属性(Attribute)二维结合来描述超文本资源。无奈所有的东西都是不断发展的,互联网也不例外。其实HTML5中多出来video等标签就像HTML2多出来img标签一样正常,虽然我们确实值得欢呼,也不用太为此担心兼容——想想gif、png、jpeg——我是达尔文物竞天择思想的支持者。但是我觉得HTML的设计从一开始就没有很好的考虑抽象程度这个问题,可能是为了迁就使用上的方便,最明显的就是这门语言虽然有结构树(DOM)的层级、但是没有意义上的继承,不管是从标签上还是属性上。HTML生来就是有语义的,XHTML想解决数据和结构分离,结果被传道士努力得让大家都只在乎结构和表现的分离了。XHTML2曾一度想放弃向前兼容,还推荐将图像从img标签过渡到object标签,以达到更高的抽象程度,用以更“方便”地描述互联网上将来越多的不同格式的其他资源。HTML5又干脆弄出来一大堆的极度语义化的标签。那么Microformat的出现又是因为什么原因呢?

要看清楚这些,其实我们应该明白其实W3C是一个商业组织。WHATWG更是一个商业化——最明白就是浏览器竞争——的产物。很多东西其实就是商业杂交出来的(比如最明显的代表就是鼓吹“高尚情操”的video标签),HTML的一出生就流淌着商业的血。问题还在于离开商业一切都活不了。

不要再讨论HTML5好不好、HTML5什么时候出来、我们什么时候用它。

有些东西你在思考的时候永远很难想到,比如中国特色的双核浏览器,虽然或许这只是在揠苗助长。

这是个最好的时代,这是个最差的时代。或许一直以来就是。

脱掉衣服看身材,裸节又来了

发表于 WebBuild

知道为什么网页没有想象中很炫的效果吗?因为今天是一年一度的“CSS裸奔节”。

脱掉衣服,亮出身材,大家一起裸奔吧

想参与或了解更多,请点击http://www.webrebuild.org/naked

We Do The Same Thing

发表于 WebBuild

前天参加了w3ctech第六期的WEB标准化交流会,本期交流会的主题是:前端开发在研发流程中与其他岗位协作效率的提升。会上所有与会者对此话题都发表了自己的看法,也借这个机会了解了很多其他兄弟团队协作项目开发的经验。同时会上其他非前端职位的同学也发表了很多很有参考意义的看法。

随着交流会发表意见的同学越来越多,可以发现最终关键词一致性的落在了“沟通”上。崔凯通过“请吃饭”这一最明了的例子说明了良好的沟通方式可以有效解决跨团队协作中遇到的“困难”。月影在接下来两杯水的例子中用带有哲学又易懂的方式解释了如何从本质上解决跨部门协作难题,那就是我们放开各自心中的“成见”,通过换位思考再大家站到同一个视线上来看问题。如果大家还记得彪叔一专多长》的PPT的话,应该对引言中法拉利车队的故事印象深刻吧?

到场的同学都觉得前端需要和很多部门打交道,认为前端是“最累”的部门。这一点可能是因为到会者中大部分职业是前端开发的缘故。其实,每个部门都是“最累”的,我们需要与UE打交道,同样UE需要与PM与我们等部门打交道,我们需要和RD、QA、OP打交道,同样RD需要与PM与我们与QA与OP等部门打交道。每个部门都有需要协同合作的人和部门。当我们抱怨UE生气我们页面切出来与UE图相差的时候其实我们可以换位想想当RD将我们的HTML嵌套得“乱七八糟”的时候我们是多么生气的。

我相信在任何一家公司,所有部门的人都是在干同一件事情,那就是将这个项目这个产品做好,大家将自己各自杯子里的水倒干,拥有同样一份事业心将杯子叠到同样一个方向同一个目标。我们可以思考月影在会上提出的问题:你将你做的事情怎样看待?工作、职业还是事业?如果你不思考这个问题,那么工作中“被”遇到的问题将越来越多。相反,你就会知道你要做到什么程度会有成就感?什么时候要换家公司为互联网做贡献了。

这次交流会回来一直很有感想,因为自己所在的部门最近也遇到了一点事情。但是面对外界的质疑和猜想我们依旧保留那份创业心凝聚在一起,很高兴能和这样一群拥有事业心的同事并肩奋斗。

最后,以个人情感并代整个交流会组委会感谢腾讯北京公司提供的场地、茶水和礼品,感谢易联主机CEO tesion提供的奖品,感谢winterkejun分享的PPT,感谢所有到会的同学和所有关注w3ctech的同学。(p.s:特别赞扬在整个交流会中站着做记录的我们的场记吕婷MM,大家给点掌声!)