在python3下使用pyxmpp2

发表于 WebBuild

这两天在玩一个东东,刚好要用到xmpp,之前有用过php版滴xmpphp,不过php实在不适合玩这个。又找了下nodejs版本滴,可是发现真是各种括号密集,属于那个特工冒死偷到最后一页代码的笑话滴那样。所以虽然对python不熟悉,还是找了python版滴来用了。据说pyxmpp是在python下最符合XMPP协议的package,而pyxmpp也推出了最新的pyxmpp2。像我这样滴潮人当然就折腾这个了。
折腾过程遇到个菜鸟坑,所以记录下,顺便更新下大半年没更新滴blog。
为了显得潮,我将python3也装上了,因为pyxmpp2需要依赖dnspython,问题就出在这里。
其实pyxmpp2项目主页也有提到,那就是需要检dnspython的python3 branch参考)。
完成之后滴demo可以点这里玩。
这个事情告诉我,详细看README滴每一行是多么重要。
python3改动较大,同时遇到了几个坑,虽然py3自带了一个2to3滴工具,不过还是顺带推荐下这个文档,在转到python3下开发滴同学建议先看下。

继续阅读 »

做什么事?

发表于 WebBuild

如果要问有一家公司在做的事是“让世上没有难做的生意”,那么这家公司是哪家?我想应该很多人都知道那是阿里巴巴。
很多人听说过“企业文化是一家公司的灵魂”这句话,不过很多人会觉得这就是一句虚话是一句屁话。其实,真正用心去想一下,事情其实就是那么简单。
我发现符合社会认知的“成功”的大公司,他们做的事情其实都是只有一件。虽然他们做的产品不同,虽然或许他们做的产品有很多。
微软让“计算机进入家庭,放在每一张桌子上”,麦当劳要“控制全球食品服务业 ”,“只要是图片都是我们(柯达)的业务 ”,百度想“让人们更便捷的获取信息,获得所求",腾讯要做“最受尊敬的互联网企业”,阿里巴巴要“让世上没有难做的生意”... ...
其他的都是手段,上面说到的才是目的。记得之前马云有说过他不会做b2c,不过后来做了。做不做b2c只是一个手段,他最终要的还是“让世上没有难做的生意”,“通过发展新的生意方式创造一个截然不同的世界”。说得好像很伟大,其实人性本来就是想要所得,然想要得到别人的也得给别人所得。现在社会最简单通用的体现就是钱,想想货币之前呢?所以做到了,就是“顺便”把钱也赚了,google就是最明显的例子。我记得我爸对我说过钱在别人口袋,不会很容易就到你自己口袋里来。
用一个实例说下。我去百度这家公司之前,其实对这家公司没啥看法和理解。在百度两年,发现这家公司发展成现在这么大,其实做的事情一直没变,确实也是在“让人们更便捷的获取信息,获得所求”,做“简单可依赖”的产品。做知道是因为发现很多中国用户在query“为什么xxx”、“怎样xxx”这样sentence,而不是像英语系国家用户一样通过 key words 在找答案,而百度的搜索引擎去整个互联网获取这样信息或许更难。百度MP3是因为用户有歌的需求(这里是“听”不是下载,应该这样能明白百度mp3向ting转型,因为之前的带宽情况下用户要“听”歌先下载是最好的方式)。还有很多产品,不过本身目的都是要“更便捷的获取信息”,就算包括像先前的百度有啊这样的产品,他的使命更多是用户要获得的信息而不是让商人更好的做生意。有人说阿拉丁使百度更不像一个搜索引擎了,网页搜索引擎也是现阶段网民获取信息最便捷的方式,而或许以后百度还真的就不是做现在看到的网页搜索引擎这个产品呢?
大家应该也会发现一个现象,一旦网上有网民“抱怨”腾讯产品,总会遇到腾讯的同学出来耐心的解释。因为要做“最受尊敬的互联网企业”有一条文化就是“重视员工利益,激发员工潜能,在企业价值最大化的前提下追求员工价值的最大实现”,所以我遇到的腾讯的腾讯不管是在职的还是已经离开的对腾讯公司都是有很好印象的。而腾讯内部“道德操守”也是一条高压线。
一家公司要做的事情决定了这家公司做的产品,也决定了这家公司能走多远。或许有同学会说有得这些所谓的冠冕堂皇的文化是后来公司长大了才成文的,不过你会发现成文不重要,重要的是确实是一开始有没有说,他一直就是这样做的。而不管是光明还是龌龊的事,总是基于这个信条的。
现在创业的公司很多,一片繁荣的现象。不过有些公司在做什么样的事呢?其实产品不重要,做的事才是重要的,做产品原型不是做事,写代码不是做事,推广产品也不是做事,这些只是在弄产品而已。移动互联网、lbs、电子商务这些概念现在都很火,很多人一股脑扎堆在里面。很多人做的事是“拉一批人干活,哄骗vc投钱,上市”,那么真正做的事就是“想上市”而已。当然这也是在做事,不过就算拉到这样一批做这个事(上市)的人,那么成功上市之后呢?有多少在做“上市”这个事的人有想过事情做完之后干什么呢?
所以如果有人要我打工,而问一下做啥呢?回答是做一个很多人都会用的东西,有投资不愁吃穿,还有期权,最终会有一笔钱,也有啥地位。那其实许诺的是空的,这个事一开始是基于“很多人一定会用”才能走到下一个分支的。能为别人带来什么才有人用的,也才知道要做的是什么。能为别人贡献才能得到别人的回报,能为整个社会贡献才能得到社会的回报。社会是人组成人,社会特性也就是人的特性,人都是利益化的。一开始谈自己的收益和一开始谈能为别人带来什么是不同的做事态度,最终做事的方式和得到的回报也会不同,虽然其实本质是一个事。
如果一开始要做的是网页搜索引擎,那么可能就不会有现在的百度;一开始要做的就是在线电子商务平台,那么阿里巴巴可能就止步b2b商城不会有现在的淘宝支付宝了;一开始只想做一家餐饮公司,那么麦当劳或许只是和你楼下的小菜馆一样。抛开做的产品,看做的事,如果你要做的是“让世界更加欢乐”,那么会做什么呢?迪士尼是先做了个主题公园。
其实不止是做企业,其他也是一样,包括人生和建立一个国家。“独立宣言”下建立的美国奉行民主,打着“翻身做主人”口号的某国家,大家可以看到,恩,有了主人之后当然还要一群奴隶来服侍主人。

继续阅读 »

慎用windows下软链,记录一次纠结的IE9安装历程

发表于 WebBuild

早两天$M发布了IE9,于是很兴奋的想装一下这个我最不喜欢的浏览器的传说中最优的版本。不过安装过程出现了点意外,所以在这里分享下。首先给几个想要安装IE9浏览器的同学一些建议性的提示:

  1. 到这里下载离线安装包版本吧,如果你的网速和我一样很慢。
  2. 记得安装之前将这个页面给出的前置安装条件如更新包等准备好。

好了,回归正题。我是上面的条件都做好了,不过安装过程一直还是提示安装没有成功,也没有明确的错误提示,这就是windows下很多软件的优良传统,只告诉你安装成功或失败,而不告诉你具体为啥原因,更好的传统是不会显示的给你个log信息。然后我只能人肉去找它的log看了,跑到C:\Windows\Logs,果然有个“IE9_NR_Setup.log”的文件,结果发现这个文件根本就是坑爹,啥有用的信息都木有!就是把他的安装界面步骤用个文本描述了一遍而已。然后不知道是最近RP暴涨了还是咋滴,居然让我随便的一不小心在C:\Windows这个下面发现了一个“IE9_main.log”的文件(当时就火大,尼玛随便在我windows目录下放log这样滴文件干啥,$M你真是伤不起啊,有木有!有木有!!)。不过在这个文件发现了一行最重要的信息:
Process exit code 0x00000011 (17) 
[The system cannot move the file to a different disk drive. ]

因为家里用的老爷机C盘空间太小,又装了多个系统不敢随便格了重装Windows,那是各种引导的纠结,你们懂的。所以给windows下的User和'Program files'目录给放其他盘然后搞了个软链。顺带友情提示下,在windows vista以上版本系统已自带mklink.exe工具。

如果你也和我这样的情况,那么下面我做的可能就是你要做的了。

首先删除c盘下'Program files'这个软链,然后将原来的'Internet Explorer'放回到它“真正”的位置,安装IE9,然后将升级完的'Internet Explorer'再放回去(做这一步的时候你需要有多系统或者借助PE盘,因为windows不允许直接拷贝这个目录出去),然后重新将软链建立。That's all.

用好奇的话说,这样我就“治愈”了IE9啦,哈哈。这个文章里面用了好多“潮流”的词汇,是因为我发现现在连Qwrap的作者JK同学都比我潮了,我居然又一次成为WED最out的淫了,所以最近准备在好奇的带领下深刻学习各种脸饼少女啦。

然后,希望这篇文章永远不要遇到哪个倒霉蛋在下面留类似下面的言:“谢谢,正好遇到和LZ一样的问题”。

继续阅读 »

你在找的正在找你——百度WED前端开发招聘

发表于 WebBuild

你是不是正在找一份前端开发方向的工作或实习机会呢?

如果回答是:“是!”。那么太有缘分了,我们也正在找你。

我们是谁?

  • 我们是WED——百度电子商务技术研发部前端开发团队。
  • 我们是专业的前端开发团队,致力于为百度电子商务产品的用户打造最佳体验。
  • 我们是年轻的技术团队,明年1月份才迎来她的第三个生日。
  • 我们是充满快乐的团队,她的官方全称是Web Engineering & Development,但更多情况我们称为:We Enjoy Days~
  • 我们是拥有很多美女、很多帅哥、很多牛人的优秀团队。

加入WED团队,你可以做这些事情:

  • 为百度最优秀的互联网产品改善用户体验
  • 让自己亲手开发的作品被亿万人使用
  • 和众多技术牛人一起钻研最新前端技术
  • 和许多优秀团队进行技术交流
  • 为Web标准和W3C做点自己能做的事儿

加入WED团队,你可以拥有这些:

  • 一边工作一边聊天、搞笑、吃零食
  • 随时表达你的想并得到关注和支持
  • 技术全面发展、辅导和长期的培养计划
  • 享受亲如兄弟姐妹的团队氛围
  • 个人自由支配的时间和发展空间
  • 得到为团队成员精心设计的有趣纪念品

加入WED团队,你可以同我们一起分享这些评价:

  • WED团队是强大专业的团队,快速响应需求,有效率有质量地完成任务
  • WED团队是无所不能的团队,看似不可能实现的交互效果,在不经意间被轻松搞定
  • WED团队是创新求变的团队,我们不时有新想法,迎接新变化,不断给新的惊喜

如果

(你决定成为国内最专业前端开发工程师
&& 你喜欢轻松愉快地工作
&&你享受团结、自由、像一个大家庭般的团队氛围)

只要你接触过这些技术中的一部分

(html/xhtml、css、页面架构和布局
|| Web标准、表现与数据分离、html语义化
|| JavaScript或ActionScript
||php、ruby、python或perl)

只要你能做到

(热爱前端开发这个事业
&& 有很好的学习能力和逻辑思维能力
&& 不错的团队意识和沟通影响力 )

那么,点击下面的链接,加入我们吧:

http://hr.baidu.com/www/job/jobDetail.action?jobId=2259

你也可以直接将你的简历发送给我

继续阅读 »

为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一上午就在忙碌的布置会场,大家给他俩来点掌声。

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

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

继续阅读 »