Shell's Home

Dec 9, 2011 - 1 minute read - Comments

吐槽招聘几件事

海投海发,要件不全 这TMD是招聘/猎头/投简历中最我X的事情了,没有之一。凡是招聘不写公司名字,不写工作地点(跨城招聘的时候),职位不写工作要求或者工作范围,一概视为不靠谱。同理,凡是简历不写自己名字(别笑,真TM有),联系方式的(哥们,我找您得烧纸是不?),工作资历或者技术专长(您干嘛来了),也一概不理。 另外,我好像写过,原来面试过一姐们,两次!这姐们一看就是内向人,话都说不利索。干IT起码得有能耐把一件事情讲述清楚(好听不是要件,易懂也不是,清晰不歧义才是),也得善于听明白别人的问题。这话都说不利索的主,您就算来八次都一样。明显是海投的时候,压根不记得这公司自己是不是来过了。 别笑,php跑到python地界上捞人的,您也差不多。事情一着急就满世界散传单的,您还指望来啥人? 乱叫乱收,文不对题 任何一个事情,信任和合作是成功的基础。所以从现在HR市场的运作来看,这事情就成不了。三四个人办的小公司,敢宣传自己资金雄厚。一个才学了半年电脑的人,做一个项目挂一个,敢说自己被多家公司挖角。 这事情是怎么来的?貌似开始的时候,小公司不说资金雄厚就没人关注。简历上说才学了半年,做项目全挂了就找不到工作。反正工作这个事情又没人核实,就拼命往里面注水。结果市场上充斥着注水猪肉,你还没辙。技术手段在高端市场是有效的,低端就不用想了。高端市场的人,往往在一个领域里面投入了相当的心血。为了简历注水被臭掉名声是不合算的。但是低端市场的人,学三个月电脑,来这个市场插草标卖一番,卖得不动,隔天就转了行。我听说过最夸张的传说是一个程序员三个月后去做了厨师,当然,另一个人也差不多,一个前端MM三个月后开了甜品店。不过后者是真心喜欢,前者算啥? 所以,这事情博弈下来,劣币驱逐良币,市场上就充斥着无效的信息。到处都是资金雄厚的公司和技术强大的程序员,偏偏HR说招不到人,程序员说找不到工作。 描述绕弯弯,内行听门道 HR懂不懂技术,招聘上就看的出。拿好听的词乱堆的,肯定是外行。 网管不叫网管,叫网络工程师。杀毒不叫杀毒,叫系统安全管理。要加班不叫要加班,叫抗压性强。工资低不叫工资低,叫做合伙。小公司不叫小公司,叫创业团队。薪水能开多低开多低不叫薪资面谈,叫待遇从优。会不叫会,一律叫精通。 MD我出门看个招聘,创业团队寻求合伙网络工程师,要求抗压性强,精通系统安全,待遇从优。 你干吗不干脆直说小公司低价招聘几个肯加班的网管,会杀毒就成,薪资面谈。这招聘写的我还以为google传奇在中国开服了呢。 招聘不妨写的肯切点,有啥说啥。尤其是在论坛之类的可以互动交流的地方招聘,大家不都是傻瓜。 关键不是你有多少,而是你给我多少 有些公司,招聘上面动辄写公司有多少多少投资注入。实话说,这有什么关系呢?如果一家有钱的公司,开3000薪水。一家小公司,开4000,我觉得还是后者更有吸引力。倒闭?找工作也就是一两个月的事。我们按照3500一个月算,差值就是7000。做半年基本就持平了。小公司只要能干上一年,肯定比号称有钱的主来的实在。 同样,类似的问题也有招聘上面写我们有多少多少大牛。实话说,这个也不重要,我们的直属领导和工作同事是不是大牛才是关键。后者对自己有直接帮助,工作起来也开心。要是总架构是个大牛,但是同事都是一帮菜鸟,那大家一起辛苦。所以我写过一篇blog,为什么大牛都爱扎堆。

Dec 8, 2011 - 1 minute read - Comments

python为什么叫好不叫座

python的招聘,看似火爆,各家都在抢人,还抢不到。但是实际操作一下,发现实际上还是较好不叫座。八成以上的人去应聘,都找不到心仪的工作。当然这个原因很多,我只说我听闻的几个。 1.python的快速开发名气 这是中枪最多的原因,这个传说是从阿北开始的。想当年他一人做豆瓣,几个月就出活了。后来一帮做系统的一听这名声,都投靠了python,而且无一例外的都是django。他们的希望,就是超越阿北的传奇。一个人三个月出个系统,那我们找三个人,加班加班,一个月也能出个系统了。好,后来的事情大家都懂了。 当然这个故事纯属虚构,很多公司在计划上还是半年出系统的。但是实际执行上,老板要求能多快就多快,工资能多低多低。这种公司你指望他开多少薪水?15K?别傻了。偏偏python这东西学的贼快,有三个月就能出来混事了,你和他们比工资低,傻了吧。 这帮人也许接触过网络开发,也许没有,不过他们应当都没看过“人月传说”。即使没看过,傻子也应该想到,阿北当时的工作状态和水准,要给自己发工资该发多少?找一帮接触电脑都没满一年的人来搞人海战术,那铁定是找虐的。 2.在找第二主程 我和thomas说过一个观点,一家IT公司永远也不应当停止招聘,他们只有提高标准和降低标准两个情况而已。在公司里面缺人的时候,标准低一点。在不缺人的时候,标准高一点。一旦停止招聘,停止HR相关的工作,有些大牛刚好出来你就抢不到。 去这样的招聘是很容易被鄙视的,因为标准很高。他们也不担心招不到人,反正只是碰碰运气而已么。有一些大公司发招聘你去了什么消息都没有,就是这种情况。 所以,对一些已经成熟的团队,你还是认识一下里面的人,多接触多聊聊比较好。一方面可以学一些东西,另一方面搞清楚里面现在是缺人还是爆仓。也许一家靠谱的公司,本来处于爆仓状态。讨论决定做一个产品,一下子就缺人了呢。 3.其实我们在找披着python皮的其他工种 python用途很广,所以老耿说过,我们不招python程序员。他的本意大概是,你是个好程序员,又刚好会点python,那就是我们找的人。如果不会python,学一下就是我们找的人。很多公司在表达的时候,其实反了过来。他们要找一个sa,会一些python,能够写程序,于是HR的需求出炉就是——python程序员。系统程序员,抓取分析,报表统计,凡是需要你会一些python,但是主要是其他工作的时候,这其实都是一样的。他们找的是披着python皮的其他工种。 你要是个程序,去了一准被鄙视。

Dec 7, 2011 - 1 minute read - Comments

啥叫智能

这年头的营销人员老爱乱用术语,瞎整个词就在那里吹。据说这是个营销行业历史悠久的传统,当年圆珠笔就叫原子笔,配合原子弹吹了一把。这年头连化肥都用上了纳米科技——估计真相是生产化肥的机器的某个核心部件使用纳米材料来减少磨损。营销在那里乱吹,搞的普通用户晕呼呼的也就算了——不晕就没法骗钱,没钱技术人员也就没工资。偏偏很多技术人员也不靠谱,居然也跟风晕。 我问你们,如果你告诉一个人,红灯的时候停车,绿灯的时候开车。然后他照做了,这个人叫智能么?如果你写个操作手册,看到上面有红头文件下发,就组织传达精神,这叫智能么?如果你写个程序,依次判断几个地方是否有文件,如果发现就加载执行,这叫智能么? 如果这叫智能,那你的脑子就是个图灵等效机。 偏偏有人说,我的程序会智能判断你的系统类型,然后加载合适的组件。。。 什么叫智能?相对来说,贝叶斯,相似性判断这些东西更接近智能。程序员没有写过,给某某用户推荐什么。但是很神奇的,程序会告诉你——有人和你兴趣相似,什么什么是垃圾邮件。 区别在哪里?一个是程序员预设了逻辑,然后交由电脑执行。这种情况叫智能太过了点,叫自动差不多。而另一个是程序员没有预设逻辑,程序由行为数据中学习到了下面的行为,如果要把这个称为智能还是有道理的。

Dec 6, 2011 - 1 minute read - Comments

拨号的几个简化

1.pptp client 安装pptp-linux,使用pptpsetup,按照man来。使用pon configname启动,poff关闭,plog看日志。 2.3g网卡拨号 应当使用usb_modeswitch进行编码转换,然后用wvdial拨号。MF190而言,至少我这里modeswitch会自动转换的。后者直接编辑/etc/wvdial.conf,然后输入wvdial开始拨号。wvdial有个包装叫做gnome-ppp,依赖很少,在其他桌面也可以用。我还没有研究出来怎么玩。 附,MF190使用的usb_modeswitch配置(debian自带): ######################################################## # ZTE devices DefaultVendor= 0x19d2 DefaultProduct= 0x2000 TargetVendor= 0x19d2 TargetProductList="0001,0002,0015,0016,0017,0031,0037,0052,0055,0063,0064,0066,0091,0108,0117,0128,2002" MessageContent="5553424312345678000000000000061e000000000000000000000000000000" MessageContent2="5553424312345679000000000000061b000000020000000000000000000000" MessageContent3="55534243123456702000000080000c85010101180101010101000000000000" NeedResponse=1 CheckSuccess=20 附,MF190可用的wvdial.conf: [Dialer Defaults] Modem = /dev/ttyUSB2 Init1 = ATZ Init3 = ATE0V1 Init5 = ATS0=0 Init6 = AT+CGDCONT=1,"IP","uninet" Init7 = AT+CFUN=1 Modem Type = USB Modem Baud = 460800 New PPPD = yes ISDN = 0 Phone = *99# Password = any Username = any Stupid Mode = 1 3.

Dec 5, 2011 - 1 minute read - Comments

python conf 2011无线组网总结和分享

这次python conf 2011结束了,具体成败sting去总结。我主要负责网络部分,把网络部分的总结一下吧。总体来说,网络不算成功也不算失败。在现有条件下,资源没有都发挥出来。但是万幸的是,关键部分还没有掉链子。下面是具体总结。 1.没在场地里面拉好线并且实地测定过所有地点信号的不算部署完毕。 这次的会场平时不允许进入,只能在工作日去,所以只能在会议前一天跑现场。而且进入时没有长网线,墙壁上也没有网线接口。因此是会议前一天先根据具体环境完成了设定,支支下午去买了线,第二天早上部署的。这留下一个严重隐患,我把设备间当成了贵宾室,凭经验估计信号覆盖范围的时候出了错,信号没有覆盖到贵宾室,而且没有考虑门口。第一天的嘉宾和志愿者们,是否感觉信号像渣一样(尤其是杨毅涛)。其实这主要就是因为根本没有考虑到信号覆盖的问题所致的。 要解决这个问题,必须先知道会场结构,包括贵宾室,设备间,签到处等等重要但是部署时又不容易想起来的地方。然后估算需要多少个多强的AP才能覆盖。例如本次的贵宾室,最佳方案是拉40米网线到贵宾室,然后再架一个AP。会场往往没有线,需要自带网线。因此最好是有人知道会场大致结构(手绘亦可,但是标注一下承重墙),然后计算AP位置和网线长度,再去购买。或者直接买一箱网线,配上水晶头打线剪自己做。会议前至少一天去部署,用android测试每个点的信号强度,最好都达到-70db以上。完成后把电线和网线都用胶带封在地上,以防绊倒。 2.足够的AP和信号。 在估算AP和信号的时候,这次经验是,多一个天线,信号强10db。支支的三天线AP信号明显强于我的双天线AP。AP的信号是和距离的立方成反比的,一个AP保证20-30米的无阻挡会场是没问题的。但是每穿一道墙,信号就会下降大约20db。低于-70db就开始出现大量掉包了,-80db的时候tcp重传严重,导致基本无法使用。 一个AP可以接入的客户端是有限的,按照我看下来,大约在50上下(TP-LINK)。这个和事先估计一致。本来我想用6个AP,但是很难凑够这么多,而且带宽不足,就没借这么多。预定就是需要一些人没有设备或者接不上去的,否则就是所有人都不能顺利上网了。结果有一个AP在连接10个设备后就会崩溃,所以等于无法容纳用户。大部分用户都拥挤在同一个AP上,导致踢掉非常严重。会场峰值时刻,300人,有120个设备试图获得IP或者已经获得成功,但是AP在线只有20/50(AP1/AP2),即40%左右的设备被踢掉或者自动断开了Wifi(部分手机为了省电会发生这样的事情)。如果三个AP完好,120人在线刚刚好支撑的起来(20/50/50),但是这样的话连线设备可能还要多一些。 下次部署的时候,除了要考虑信号覆盖问题,还要考虑预留一些AP作为备用。因为会场AP都是民用过去支持,这些设备以前也没有做过大容量测试。我只能说TP-LINK的两台机器很给力,说到50就到50,多了就不能支撑,但是不死机。有台机器就频频死机,这样就需要备机更换。 另外,我们这次最高三个AP,因此分别设定为1/6/11频道就行了。如果AP还要多,请注意让同样频段的设备分到会场的远端。 3.世界真的很麻烦,有的时候有位置却没有电源。 这次电源还算给力,从墙上引出了不少拖线板,基本满足组委需求。至于普通听众就抱歉了,自带拖线板坐到边上的,互相交错给便携设备还能充个电。中间听众只有依靠地接。偏偏地接基本都拉给了组委的摄像机,周围一圈的人可以沾沾摄像机拖线板的光,其他人就只能相信电池续航了。 我们的AP3,第二天搬到了贵宾室那个方向。反正上面只能接不到10个人,给贵宾室小规模用用还可以。结果线只有30米,拉不到贵宾室。合适的位置又没有电源。只好委屈在后门口接了一下,把贵宾室的信号提高了不到10db。 据说有的会场更恶心,只有一两个电源接口。这种会场就必须带够插线板和移动设备来保证电力。 3.留出会议运营所需资源。 这次还算成功的一点,是为大会组委和志愿者/嘉宾保留了一路AP。大会的签到系统,嘉宾演讲都需要Wifi支持,为了让听众上网导致演讲失败就本末倒置了。为嘉宾保留的是AP1,上面还有一些比较活跃,或者着急使用网络的普通听众,一般大约20人左右,相对比较空。可是这个AP又不敢开放给听众使用,一使用就怕嘉宾没法演讲了。 wifi管理者比较怕的问题,主要就是有人使用wifi下载比较大的内容。因此开始的时候,会议需要网络的时候,我都用平板监控网络使用状况。如果有人正在使用大流量,就准备踢人。幸好,大家都很安分(或者是AP上不来)。后来也就放松警惕了,结果老外演讲的时候延迟很厉害,我差点就跑去拔掉AP2的电源了。这会断开所有人的网络,但是演讲者的使用就通畅了。 按照雨苍说的,组委wifi组一个重要任务往往就是封锁各个debian/ubuntu镜像的下载。我们这次没有出现这么恶劣的问题,谢天谢地。 4.会场的网络使用有非常强的峰值效应 这次会议只有2M带宽,因此我一直担心不够。后来开始看看还不错。但是休息的时候一直接到wifi很慢的投诉,空下来一直测不出。我第二天休息的时候去测试了一下,我的天,带宽全满,延时超高。说明演讲者水准很不错,大家专心听会,不怎么用网络。一休息,得,网络不够了。 这个没法解决,要解决只有增加带宽,或者在不休息的时候再使用一些比较耗费流量的业务。一个缓解的办法是使用qos系统,但是这次dir-825没有前往会场,所以没机会调试qos系统。 相对来说,路由器的NAT让我很放心。TP-LINK普通路由器的NAT在支撑80-90人的极限在线的时候仍然很稳健,速度不快是带宽问题,路由器没有崩溃就是万幸。 5.根据具体情况配置。 WEP比较节约资源,所以我们开始配置的是WEP信号。但是测试下来,苹果系统对WEP的支持非常差,基本接不上去。所以就不要节约了,使用WPA/WPA2。 运营商的接入情况比较多变,而且很难控制。这次运营商给我们的是一个内网IP,192.168.1.2。他们已经有了一个路由器在前面。我使用了双重NAT方案,而且避开192.168.1.x网段,来避免修改它们的路由器(我们无权控制)。 这次我们使用的是192.168.0.1⁄24网段,三台AP的连接模式是一主多桥。一个主router负责DHCP和NAT,其余的全部当单纯的AP使用。从1到3分别分配0.1-3的IP,2/3的DHCP关闭,1的DHCP从20开始分配起,直到254,共计最高容纳234人在线。20以前的IP让组委的人作为静态IP预留。如果还要多,建议使用192.168.2.0/23网段,最高可以容纳500人不到,足够大部分的会展使用。如果再不够——你们考虑10网段吧。 最后的经验总结。 1.会前勘察真的很重要,尤其是会场平面结构,承重墙位置,会场部署,电源插座位置,一定要提前至少三天确认。提前一天的时候要配好所有AP,备件和网线到会场部署,然后测试信号。 2.会场带宽一定要大,万一实在不够大,想办法ban掉debian/ubuntu的镜像,然后做qos或者squid。 3.自带足够材料,如果没有胶带/接线板/剪刀,那很多事情就要抓瞎。 4.据说TP-LINK之类的路由器在人数多到一定程度的时候会自爆,推荐使用高级设备或者电脑来做NAT/DHCP。不过我至少肯定100人的时候还没问题。

Dec 2, 2011 - 1 minute read - Comments

从网页中爬链接的一个小技巧

没啥好多说的,从verycd中爬所有的ed2k链接。 lynx -dump -listonly -nonumbers <http://www.verycd.com/topics/XXX/> | grep ed2k >> ed2k.txt 要看到ed2k未转码的内容也不难。 import sys, urllib with open(sys.argv\[1\], 'r') as fi: print urllib.unquote(fi.read())

Dec 1, 2011 - 1 minute read - Comments

五网融合——看起来很美

本文是一篇牢骚文。 大学的时候,和传播学老师讨论三网五网融合问题,我说,这就是一个概念性问题。从技术上说,音频信号视频信号从以太网走已经不是什么新鲜事情(当时04年),只是尚没有产生足够影响的工业标准。手机网络情况特殊,不好说,金融网络的融合依赖于电子加密技术(当时不清楚,现在来说,应当是电子授信技术)。这些事情的技术准备已经充分完成,将来几个融合也是顺理成章的事情,没什么好专门提出来炒作的。 事情的发展证明——是我太天真了。虽然三网融合并没有技术难度,但是有炒作性,也能触动某些人的神经。时至今日,不但三网融合没有完成,反而情况越来越糟。上海的网速只有国际标准入门级网速(4M)的四分之一这个事实常年不变不说,而且几个网的入门技术难度越来越高,门槛越来越高,各大运营商都把用户当作自己手里的筹码,仗着垄断优势倒行逆施。我们数数这些年,电视网互联网接入手机网络的“发展”: 1.机顶盒改造 这是有史以来,我听到被骂的最严重的技术改造,没有之一。我老爹,原本会看电视的。在完成改造后,只会看八个台。因为他一直不能理解电视遥控器和机顶盒遥控器的区别。为什么电视开了还得开机顶盒,机顶盒遥控能关电视,但是不能开电视。电视能看八个台的时候就不能看机顶盒,机顶盒有的时候还会死机。当然,他老人家没有我这么详尽而专业的表述,在我问他情况的时候,他反复只有七个字,太麻烦了,不会用。作为一个六十岁不到的人,我觉得他应当还没有太过失去正常的学习和操作能力。这种人学不会操作电视,只能说明机顶盒太麻烦了。无独有偶,外公和大舅操作电视经常有问题,楼下阿婆也不会看电视,种种迹象表明,这不是一个个例。 机顶盒改造的原理是这样的(请技术小白跳过这段)。首先通过RF射频线(同轴缆线)将机顶盒和小区机房连接,在这个连接技术的基础上封装出一个eth网络来,然后让视频信号通过eth走,而不是PAL或者NTSC格式的RF信号走。机顶盒通过AV接口输出信号,再输入电视机内部。因此,在使用的时候须要打开电视,将信号调整到AV输入模式,将电视机作为一个纯粹的显示器用。然后再通过调整机顶盒来操纵电视跳台或者音量,更进一步的可以拥有历史播放等进阶功能。 看起来很美,但是由于要多一个机顶盒,因此必须同时使用两个遥控器。对老阿婆们来说,这就是一个让她们永远搞不懂的事情。而且,由于机顶盒的软件稳定性不高,我在一年多的使用中,碰到了两次死机。就是任何输入没有响应,不要通过开关关闭,而是直接拔掉电源,再接上,设备就恢复的故障。这是典型的内核死机。作为程序员尚且觉得麻烦,老阿婆们可想而知。 至于机顶盒最大的针对对象——年轻人呢?实话说,我老婆虽然要求家里装电视,但是我一般用不到。我大部分时间都在上网,基本不看电视。有新闻也是看微薄而不看电视,网上娱乐也比较多。就算要看节目,土豆优库的内容多,可以自由前进后退,还没有太多广告骚扰。我要电视干吗?我老婆也就偶尔看看湖南卫视用。我想湖南卫视要是关门,她就会直接退掉电视线的。 2.有线通宽带 上面说到,有线电视是使用eth来传输信号的,所以理论来说,这个也可以作为宽带接入用。在某些人看来,这也叫做三网融合。其实如果这个叫做三网融合的话,那电话拨号上网也可以叫三网融合了。 有线通是使用电视网络为基础的上网业务,我简单点评来说,网络延时长,选择性封锁ed和bt协议。打给客服,她们说,我们只承诺保证http流量速度。我说协议上没写所以我们要按照国家标准——我们有权更改协议不另行通知。 我有权不用你们的服务。 3.上海电信IPTV 电信是网络的总接入商,任何其他网络运营公司必须向电信结算网络费用。所以其他ISP的接入永远比电信延迟高一些——除了教育网。 仗着这点,电信不但耍流氓,在正常的网络http数据流中插入广告,而且准备涉足电视业务。最近电信不是被调查是否垄断么?除了移动可能在搞他们外,电视媒体界也是候选之一。上海电信的IPTV是利用我们的上网带宽,将电视信号从电信机房传输到终端的一个方法。实话说,P用没有。特性和情况和OCN的机顶盒没什么区别。年轻人嫌没用,年纪大的不会用。 而且,这玩意是吃上网带宽的,不过电信一般会给你一定补偿,将1M升级到2M或者4M,多余的带宽你不能用,但是可以为IPTV额外提供带宽。不过最近带宽还是不够用,电信就在上海推了一个新业务——FTTH。 4.光纤接入 FTTH的全称是光纤到户。具体来说要从ADSL说起。原先从小区电话机房里面部署一台边界路由器,然后在电话交换机上面搭载一台ADSL调制解调器。这个设备和家里的设备配成一对,把你的电话线模拟成一根网线。没有概念的朋友,买个电力猫回家就明白了,只要有两根以上质量不差的电线,就是可以模拟成网线的。你在家里通过这根模拟出来的网线,把自己的电脑连接上边界路由器,通过PPPoE协议拨号上网。 ADSL有个问题,带宽最高只到4M,还得信号过关。电信想想,我的小区电话机房这么密集,干脆用光纤直接从机房接到用户手里得了。接到大楼里面,部署一个核心路由器,大家共享这根光纤带宽的,叫做FTTB(光纤到楼),而接到家里的,就叫光纤到户。 光纤到户其实是一种非常好的技术,光纤技术经过多年发展,成熟而稳定。通过单模光纤替代ADSL,能够提供5倍以上的带宽,真正让上海进入宽带世界。但是电信居然就能把这么好的想法给硬生生做成体验差到没边的业务。 上面说了,光纤是ADSL的替代品。从实现上说,原本是ADSL猫来完成的eth模拟行为,现在由光纤转换器来完成。用户其实只要在边界路由器上直接拨号就应当可以上网。可是电信为了在上面捆绑IPTV,或者为了将来的其他业务扩充,或者我们更不惮怀着最大的恶意揣测的其他行为,居然在这个光纤转换器上绑定一个路由器。于是,原本我们是拿外网IP的,现在就变成内网了。什么区别?如果你开ed/bt,速度自然下去。有很多游戏机不支持。只能支持几台设备,不能多支持(好像加交换机也不行)。 太恶心了,我弄个10M光纤,往往就是一家人上网的,一个人用那么大带宽干吗?(我是例外)现在?想一家人上网可以,订他们的一个什么业务,我不知道要不要加钱。把我们自己能做的事情硬生生做成只有电信授权才可以,你干吗不说你不授权我就不能上床算了。而且即便如此,还是缺这个缺那个功能的。好比套子必须选用指定牌子,否则无法保证你们满足计划生育。。。 5.3G接入 这TMD也是一个相当值得吐槽的地方。3G接入在其他国家都相当标准了,中国非出一个自己的TDSCMDA,速度慢不说,还发热大辐射大信号不稳定。不仅如此,我用了多年的移动号码,还不能用WCDMA,因为移动没有这个业务。我买的每一台android手机都是个悲剧,因为android基本只支持wcdma的3g接入。有人建议我干脆买两台手机,一台专门打电话,一台专门上网。问题是,那联系人呢?总之,这是一个悲剧。 6.电子支付 我了个去,我就没见过电子支付这么不靠谱的东西,居然全中国都在掩耳盗铃。 基本每一家,都是用IE的插件来做安全的。实话说,不但不支持大多数系统,而且这本身就不怎么安全。更值得吐槽的是,很多银行的网银看似密不透风,但是往往转头一看——他们还提供更加便捷的服务——换句话说就是更加不安全——这不和本身就不安全一致? 实话说,中国的支付现在还是大幅依赖于支付宝,而且支付也只限于小额。五网合一的正式形态,应当是使用硬件加生体密码,加上3g网络和签名技术,做成标准的认证授权服务来使用的。说直白点,网银使用起来和普通网页没有任何区别,就在付钱的瞬间,需要一个小小的独立设备,通过3g网络进行请求确认。设备上显示付款的目标金额等等信息,你可以同意,然后用你的指纹加上密码确认。或者否认这个请求。这样不但安全性相当惊人,而且兼容各种系统,甚至可以包括手机。目前的手机看似能够完成这一系列工作,但是手机上毕竟是可以安装各种软件的,包括针对这个系统编写的病毒也并非不可能。 综上所述,一个相当大的问题就是,本来接入商应当干干净净的提供接入业务。可是中国的接入商不是,非要在接入上捆绑别的。偏偏这捆绑的东西非常差劲,我们得费尽心机给去了。例如电信捆绑的iptv,3g手机。其实三网融合的核心在于,我们没有电视接入供应商,没有电话接入供应商,只有网络供应商。在网络供应商提供的带宽基础上,我们的电话和电视都通过网络实现。这样我们可以在上面变换各种花样,使用先进的业务。例如十年前就出现的ip电话业务,其实在三网合并后的形态,就是人人家里一个qq而已。例如我们现在一毛钱一条的短信业务,其基于网络的目标形态就是gtalk或者任何一款IM。由于手机随时在线,你给好友发消息他可以即时收取(真的是即时)。这和短信有什么区别?而且功能更强大。又例如iptv业务,其真正的目标形态,应该是土豆优库之类的进阶业务,更接近youtube和Netflix的混合体。说的更直白点,netflix是web1.0类型的传统网络电视经销商,而youtube是web2.0形态的网络电视经销商。中国的所有iptv都做的是一个四不像的怪物,核心目地是骗钱。说明白点,如果中国真的玩多网融合,短信不要钱,电话不要钱,电视不要钱,银行服务不要钱,那这堆单位怎么活?只有一个网络供应商活的很滋润。 其实说白了,中国的电信/移动/电视,都是垄断行业。本来各司其职相安无事。现在世界大潮非逼着他们变成一样的供应商,他们就都希望变成那个最后中选者。偏偏他们都基于自己的经验去做三网融合,结果就不伦不类四不像。又偏偏,我们没什么替代选择,再恶心也非用不可,所以开始我就说了,这只是一篇牢骚。 希望?早点把中国电信的总结算商身份给去了,让其他isp可以交叉结算。通常来说,战国时代才有的玩头。可惜,这个更加触及某些人的利益了。

Nov 28, 2011 - 1 minute read - Comments

python中dict的插入复杂度估算和排重复杂度估算

在做分词核心词典数据结构分析的时候需要,就先写一篇吧。 具体可以参考python源码解析读书笔记(一)——内置对象,这里面有说: 7.dict对象的索引方案 dict对象的索引方案使用的是哈希表,而且是开放地址法的哈希表。当装载率达到一定规模后,会新申请一块内存,将有效数据复制过去。最小的表空间为8个对象,当装载率超过2/3时,会扩大规模到当前active的4倍(超过50000个对象为2倍)。目前为止,在对象被删除后,其表空间并不释放。因此曾经增长的非常大的dict对象,可以定期复制以回收空间。 最初的表项空间为6个以内,满了之后,会自动扩张到24个,有效16个。从大致来说,如果要放下N个表项,大概就要扩张T次,他们满足以下关系。 A0*(8/3)^(T-1)<N<A0*(8/3)^T 而每次扩张,就要进行全表项复制,因此复杂度大约是O(N)量级。当扩张到放下N个表项时,就需要进行的复制的总数是: sum(i, 0, T-1){A0*(8/3)^i} 这是一个典型的等比数列求和问题,我们知道问题的答案应当是: A0*3*((8/3)^T-1)/5=A0*(3/5)*(8/3)^T-(3/5)*A0 因此,(3/5)(N-A0)<O<(3/5)\*((8/3)\*N-A0)。如果只考虑数量级的话,插入的复杂度量级为O(n),即哈希表的平均插入复杂度为n级。 也许有人奇怪,哈希表的插入复杂度为1级阿,怎么得到n级的结论的?看上面,都说是放下N个表项时的总复杂度了。 我们可以和红黑树对比一下,红黑树的平均插入复杂度为logn级,平均查找复杂度为logn级。哈希表的平均插入复杂度为1级,查找复杂度为1级。但是红黑树在一点上比hash优秀——他的插入时间基本稳定,hash table的插入时间有可能会暴长。 于是,当我们有N个元素,需要进行排重的时候,我们可以set化。假定set和dict基于一样原理运作,我们的时间复杂度为O(n+m)级,m为排重后元素个数。其实按照最差情况来说,也可以认为是O(n)级。

Nov 24, 2011 - 1 minute read - Comments

正好聊到django——论他的模板问题

首先先广播一个纠错,我那篇《几个模板的性能对比》,对cheetah模板没有做渲染处理,只生成了对象。因此性能出现严重误差,在此向所有被误导的朋友致歉。 ——不过这并不影响django慢到渣的结果。 Shell: 他们用了django的orm,映射到了mysql 我一点办法都没有 mysql唯一能做的,就是一写多读 或者可以加入handlesocket Bill: 为什么facebook以前好像用mysql能处理那么NB. Shell: 多久以前的事情啊? 而且你得想,他们以前还用php呢 他们自己开发了hiphop,把php编译为了C 同样,我估计mysql他们也做了手脚 那玩意我学不来 而且,即使学的来,也不可能在django固定了范式的前提下 ——起码得给我修改范式的机会吧 Bill: 你可以改django嘛. Shell: 太麻烦了 django已经积重难返了 这个问题,并不来自于django本身,而是来自于所有学django的人 Bill: 为什么这么说? Shell: 由于他们的努力,django变成了一个固定的商业标准 试图对django进行修改的行为,哪怕是正面的努力,都会受到已经存在于上面的系统的抵制 例如,我开发一个django的分支,允许使用其他模板,你觉得会如何? 压根不会有人理我 因为大家都使用现有的模板系统,并且在上面做了无数的代码 很多人甚至无法升级django的版本 很多app也已经使用了现有的模板 如果我对django整合cheetah,那只能限于自用的范畴 Bill: 这么说还真是一条不归路了.. Shell: 除非他们的维护者作出很大的努力 说白了,就是官方强推 Bill: 不过到时候遇到瓶颈了,怎么办.. Shell: 但是,这样一来,很多人就根本不会升级了 怎么办? 要是有办法,他们还会找我么? Bill: 靠硬件.. Shell: 他的页面就是3-5秒的打开时间 硬件上再增加,一个花钱,另一方面,也不可能增速啊 只能增加并发访问量 Bill: 也有点增速效果吧..处理速度快乐 快了 Shell: 怎么会呢? 你想,靠硬件是怎么靠的? 换更高频率的机器,还是加同样的机器?

Nov 23, 2011 - 1 minute read - Comments

新手?新手!

《新手?为什么需要关怀》在42区上挺热,看到很多人留言说新手,诚惶诚恐。我说你们也别太那啥了,一般只要不是求作业求妹子的,基本都还是能忍的。就算你问问题前言不搭后语,问题叙述的乱七八糟,老是求解释。通常我最多告诉你看某文档就不再回话——意思是事情到此为止。你不用担心我恼怒或者生气,我的时间很宝贵,没空浪费在这么无聊的事情上。如果下次你问出个有内涵的问题,咱们不妨讨论讨论。 写这篇的主要目地,是给新手一个指导。我不知道现在所谓新手的水准,以我在42区上看到的而言,是高的吓人。但是我实际接触到的,可能如一位朋友所说的垃圾,水准是差的吓人。其中有很多是不高兴学,或者打算做了再说的。您走好,这篇文章不是给您的。这篇文章是告诉一些真的是新手的程序员,如何稍微的提高一点水平。我假定你们会用vc写一些简单的程序,拖拖拉拉控件能做一个简单的计算器。在计算机上,我相对偏向实用。您和我说在算法课上能拿多少分,对我今天所说的内容意义不大。所以无论您课业上不及格也好,满分也好,本文告诉你如何成为一位牛逼或者可以装逼的程序员——如果你做了整个过程,学到了东西,那就是前者。如果没学到,没关系,至少你可以拿着本文的经历去装逼。 首先,请保存好你们的照片什么的,然后,把你们面前的电脑格式化掉。对,所有windows的内容一点不要留,已经是linux的朋友,请确保你“没有”windows了。作为程序员,你无论如何都需要自己做很多事情,直接使用linux是一个良好的开端。但是学linux是痛苦的,只要有退回windows的可能,你就没法真的学会linux。学着用linux工作和学习(对于某些人来说,娱乐更重要,在这方面,linux确实不怎么样,幸好,如果您是这样的人,本文也没看的必要了),并且熟悉整个系统,最快需要2-3个月的时间,慢的话需要半年到一年的努力。你需要不断磨合,学习新的程序使用方法,请教前辈,实验,最终能够掌握这一系统。掌握的标准是什么?你知道哪些事情是不能用linux做的。之所以这么说,是因为新手根本不知道哪些事情是不能用linux做的,他们所有事情都没法用linux做。而老手会使用最合适的方法来用这个系统。 当你已经能够熟练使用linux,甚至比windows还熟的时候,你的桌面装什么东西就随便你了。我的桌面是win7,因为老婆需要。我知道不少程序员的桌面是mac,这也很好。不过一旦你熟悉了linux,你最少会装个虚拟机来做开发,并且觉得试图在windows下做这些事情很蠢。windows的console是cp936编码的,网页很多都是gb2312编码的,但是用gb2312去读他们却未必能行(这是因为windows下的gb2312/gbk说的都是gbk,抽风啊)。linux下面大多数term都是utf-8,世界清静很多。windows下开个小网页服务器要跟着一个图形管理界面,linux下服务就是服务。总之,如果你真的打算开发,你会发现windows其实非常不友好。所谓友好是指已经被微软封装过的部分,还有他们的文档——那个真的非常不错。 第二步,你得打造一个自己的工作环境。我知道你习惯了微软的IDE,进入linux后还试图用一些WYSIWYG的系统。不是每个WYSIWYG都是错误的,然而作为最适合你的程序而言,他未必就是WYSIWYG的。你在windows下一般用什么开发工具?vs?盗版吧?好吧,你是学生。但是你能用vs编译一个linux kernel么?在没有SDK扩展包的情况下,vs也不能用来做android开发吧?这就是vs的真相,将一些特定的开发,做相当程度的简化,以换取大量的初级开发者。当然,你会反驳说vs可以开发WDM,或者做DDK级调试都可以。然而,这也是特定领域——凡是微软给你能做的领域,你都可以做。但是微软不允许你做的领域呢?虽然微软允许的范围很大,但是作为初学者,了解开发是如何工作的更加重要。 你可能需要一个编辑器,通常这只有三个选项,vim/emacs/其他。而后你需要一个编译器,如果使用C,多半就是gcc。调试工具一般会选用gdb,编译项目管理工具一般是make。这四者的用法都可以google到,并且通过合适的配置配合到一起,达到和vs类似的结果——你写一些代码,然后按开始调试,程序就开始一步一步运行。到你需要的地方,输出一些数据看看?然后再继续运行。和vs没有什么太大差异。不过作为自行配置环境努力的回报,你有两项比较大的优势。一个是你的各种工具都是千锤百炼的,最优化的工具,他们一定真的能工作,而且可以信赖。另一方面,当你需要改变工具的时候,你可以保持其他工具不变。例如,你现在需要通过go语言快速的开发一些web程序,你需要将gcc换成gogcc,gdb也需要换掉。然而make只需要新增一些规则,vim/emacs也无需变化。回想一下你在vs里面如何编写go代码?——这个——好像——似乎——需要第三方插件吧。找找看?运气好的话有收费插件可以达到这个目地,找一个破解版来——如果开发者都对破解无动于衷,你还如何指望别人来尊重你的知识产权?也许你想,我可以不使用go语言来编写。好吧,go的效率是编译型语言中比较高的,你要和go比效率,可选的只有C语言。那么你准备在vs上用C开发一套web?——我尊重你的选择,并为你逝去的人生默哀。 第三步,找一个合适的项目。这点我在《如何参与一个开源项目》一文中有说,不过那篇文章建议你尽量做一些代码之外的工作。为了磨练你的水平,你可能需要做一些和代码有关的事情。不过无所谓,大概来说事情是不变的。找一个合适的项目,和他的领导者谈谈,看看有什么可以干的,并且努力干完。 第四步?没有了,继续这么干吧,应该没多久,你就是N个项目的参与者,有一定的代码贡献,并且和一些大牛们交流一些业界最新的东西。如果这样都不算入门,我真不知道你入门的标准是什么了。 听起来很简单,那么事情的难点在哪里? 关键在于,无论事情看起来多么困难,多么不可能,你觉得多么辛苦,你都立刻,马上的去做。而不是看完文章后点一下“mark”,“like”,“+1”,然后让他躺在你庞大的文库里面生灰。