Shell's Home

Py 有什么缺点?!

Dec 21, 2011 - 1 minute read - Comments

在 2011年12月21日 下午2:24,Zoom.Quiet 写道: > 在昨天内部分享交流中,俺回顾了 PyCon2011China 中透露出的 Py 最新使用/发展和体验; > 最后有同学问: > Python 有什么缺点!? > 直接HOLD 住了俺的思路… > - 是也乎!? > - 世界上没有完美的语言 > - Python 相比各种开发语言也有缺点,当然的! 可是,是什么呢?! > > - 没有 {} ? > - 不支持多CPU ? > 大家在学习使用过程中,对 Python 有什么失望的地方?! > - 兼听则明 现在不满意的,就是我们努力的方向.. > > PS: > - 俺现场憋出的回答是: > - 由于 Py 历史上积累的好用模块太多,会导致开发人员更加懒惰,不思进取,不论什么都可以直接搜出可用的现成模块来! – > 人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦! > 俺: http://about.me/zoom.quiet > 文字协议: http://creativecommons.org/licenses/by-sa/2.5/cn/ > > – > 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表) > 规则: http://code.google.com/p/cpyug/wiki/PythonCn > 发言: python-cn@googlegroups.com > 退订: python-cn+unsubscribe@googlegroups.com (向此发空信即退!) > 详情: http://code.google.com/p/cpyug/wiki/PythonCn > 严正: 理解列表!

小米手机入手体验

Dec 21, 2011 - 1 minute read - Comments

很好很强大 LTN和我说的时候,开头用的词就是,我的小米不打算卖你了。既然前面有“我的”两字,可见东西差不到哪里去的。入手之后感觉很好,起码比g2强多了(233)。我把一些直观体验说一下吧。 手感不错,性能优异 机器的手感沉实,屏幕贴上膜后手感流畅,g2上的光膜也很滑,但是偶尔沾水就阻力大了。小米的膜很少出现这种现象,而且触感很灵敏——当然,太灵敏了也是个问题,经常手不小心碰到返回键,然后程序就没了。 程序滑动很流畅,不愧是双核的。内存足够大,ROM也够了。我完全不折腾app2sd之类的问题,也不管内存回收,每个程序都跑的很流畅。这种表现让人用着很省心。 周边齐全 我到小米的官网上,看到了后盖,保护壳,贴膜,背贴,耳机,数据卡的官方销售。虽然和小米2000元的价位比,这些周边并不便宜,但是他们很方便。作为智能机爱好者,往往会买一些国外的水货机,这时你就知道我在说什么了。往往表面膜坏了,只能买第三方的膜,偶尔尺寸还不匹配。还有的时候线控坏了,买一个很贵,还不知道好不好用,有时候还没地方买。后盖摔坏了,也没地方配,只能去店里花大价钱修。这些问题,每个都不大,但是解决起来很麻烦,不解决很恶心。 一些问题 屏幕偶尔会卡死,大约三秒后恢复。猜测是双核cpu全部耗尽,导致失去响应。更进一步猜测,还可能内存耗尽——虽然看起来不大可能。 原配膜为了保证使用,尺寸精度相当精确,只要错一点,就没法贴上去。我自己贴了半个小时,结果满脸青春痘。没办法,只能出钱找了个专业人士。其实卖的时候,完全可以让客户选择贴好了发出来。 ROM版本控制的隐患 在一周的周期上,说这个并不合适。不过我入手后,ROM自动升级。然后就出现了有时突然没有信号的问题,只能重启。 我肯定这个问题不是真的没信号了。将手机切入飞行模式,返回后有一瞬间信号是恢复的,过三秒左右信号就没了。而且手机状态中有信号数据,但是手机打不通。这个问题反复出现,经常是在某处没有信号,重新恢复信号后就出bug,死活保持无信号状态。 按照我前一个手机的经验(G2),这个往往和手机的ROM或者基带有关。我前一个手机的所有ROM中,有两个有这个问题的,有两个没有。而按照网络上一个帖子的说法,楼主在降级后问题也消失。反复印证下来,推测很可能是因为最新升级的ROM有这个问题,而我升级后就出现了问题。 这个属于ROM版本控制和测试的不严密,在一周不到的时间内我无法确认这点。但是我希望不是,因为一旦是ROM版本控制问题,将来后续问题还会层出不穷。个个都是莫名其妙的出现,没有精力一个个的跟。

某日的一点小事

Dec 20, 2011 - 1 minute read - Comments

三四年前,尚在前一家公司上班。晚上加班到9点,坐9点半的末班车回家。从漕杨路开出没一站,还没到中潭路,我看到旁边有个MM,打扮入时脸庞明丽。奇怪的是,晚班车上人不多,座位都有空,她却不坐,只是在门口站着。晚上灯不好,看不出什么表情。再过一站,到了镇平路,这MM要下车了。迈开两步,不知道怎么回事,身子一软直接摔了下去。我当时就蒙了,什么情况? 开始我也没有反应过来,只当是MM一个步子不稳摔在地上,等到MM摔到了地上,一动不动,才发现情况好像不对。晚上加班,身无长物,对着一个MM也不怕抢劫。何况车上人也不少,又是封闭站台内。我当时一没结婚二没女友,多少还有点英雄救美的情节。刚刚打算去扶,MM却在地上抽了起来。这一下又把我吓了一跳,迈出去的步子也缩了回来。一个MM倒在地上抽搐,这——是什么情况? 那时已经知道了彭宇案件,车撞上老人是不敢扶的。可是事发突然,脑子到也没转到这方面去。反倒是在为什么抽搐上,我心存疑惑。是癫痫发作?有些外伤性癫痫会在年轻人身上发作,症状的却包括抽搐。还是毒品反应?毒品反正中好像没包括急性抽搐的。药物中毒?记得一氧化碳中毒或者氰酸化合物中毒都有抽搐反应。还是疾病?狂犬病和病毒性脑炎也有急性抽搐反应。大家别笑,在步子迈出去再收回来的一瞬,我真的想了数种急性抽搐的可能。想到癫痫,氰酸化合物,狂犬病,病毒性脑炎,这些词在脑海里盘旋。别的感觉没有,净感到害怕了,背上凉嗖嗖的。 然后,下面一个小女孩,抱住了倒下去的MM往外拖。我也不知道这个小女孩多大,我在看女性年龄上向来没有什么眼光,一倍左右的差距是很正常的。大概猜猜,最小不小于10岁,大的话,我知道某些30多岁的MM还是能冒充10岁小女孩的。不过身材较小毋庸置疑,刚刚倒下的MM个头不算大,小女孩却拖不动。我想想,是福不是祸,是祸躲不过。走上去,和小女孩换了个位置。因为还是害怕,也为了避嫌,没敢抱MM,直接从背后穿过腋下,抓起MM的两只上臂往外拖了一把,小女孩抬了一把脚,旁边也有个阿姨来托了一把。最后我们把这个MM抬出了车厢。 然后,就是比较让我放松的事情了。在站台上把MM放下,站台工作人员就走了过来。估计是刚刚看到了情况,和列车司机打了个招呼。MM倒下的位置正好在门上,要是关门,虽然不至于伤人,但也不是很恰当。工作人员看了看情况,一个小女孩,一个胖子(那时候还没减肥),一个50多岁的阿姨,把一个MM拖出来,看上去也不像是偷东西的样子(主要是小女孩衣着干净整齐,像是邻家小妹去补习班的样子,我也是一副死程序员的样子,还带着上班用的电脑包——他当然不知道包里面是空的,上海阿姨就更不说了,地球人已经不能阻止他们了),就没多留心我们,去查看这个MM的情况。小女孩和阿姨还是不放心的样子,继续陪着。我上班上累了,加上也怕麻烦,就回到了车上。不过一分钟,车就关门继续行驶了。 车门一关,事情抵定,中国人天生的好奇心和凑热闹情节就冒出来了。我想,顶好刚刚顺手去看看热闹,那个MM到底为什么倒下呢?但是转念细想,要是撞上麻烦,无论是惹上官司还是染上疾病,都很麻烦的样子。加上今天加班也累了,明天过来还要继续。也就随他去了。 这事情我一直没想起来,直到小悦悦的事情发生后,我才想起。在我过去的日子里,还有这么桩事情。也不知道那个MM是什么情况,怎么样了。小女孩为什么敢去帮忙,现在好不好。不过,这至少不是一个悲剧,无论从哪个角度来说。

linux tty部分源码阅读

Dec 19, 2011 - 1 minute read - Comments

1.事情从file开始 file的定义在include/linux/fs.h中,其中有两个field,一个叫file_operations *f_op,一个叫void *private_data。file_operations定义了所有file能够进行的操作,在tty这个层面而言,drivers/tty/tty_io.c能看到有个叫做file_operations tty_fops的东西,下面有个叫console_fops的东西。两者区别不大,就是write函数进行了一下包装而已。从这里可以看出,系统将某个file的读写操作,转包给了tty_io.c这个文件。这个转包的手法非常类似虚函数。如果将tty_io.c里面的函数看作一个类的所有成员,那么tty_fops就是虚函数表,而f_op就是虚函数指针_v_ptr。 2.tty_io的二转包 tty_io做了什么?他直接转包给了ldisc来处理这个事情。从tty_struct的结构我们能够看到,有这么一个field,tty_ldisc *ldisc。而tty_ldisc.h文件里面,我们能看到这个结构又有这么一个成员,tty_ldisc_ops *ops。同样手法,第二次使用。目标是tty/下面很多n_开始的文件,例如n_gsm,估计是处理手机的。我们的目标看起来像是n_tty.c中的tty_ldisc_ops tty_ldisc_N_TTY对象。 3.n_tty做了些什么 n_tty也做了很多转包,例如对于n_tty_write而言,他使用了tty->ops->write这个函数。我们从struct tty_struct中可以看到这个field,tty_operations *ops。目标是谁?看起来像是pty.c,他里面有很多定义,例如tty_operations master_pty_ops_bsd,tty_operations slave_pty_ops_bsd,tty_operations ptm_unix98_ops,tty_operations pty_unix98_ops。 4.pty总不转包了吧 以write而言,pty.c做的很简单,就是tty_insert_flip_string而已。不过之后调用了tty_flip_buffer_push,这个又会调用flush_to_ldisc,这个里面会调用ldisc->ops。从上文中我们知道,这个函数的实体在n_tty.c的n_tty_receive_buf。 5.n_tty_receive_buf做了些什么 这个函数对每个字符依次处理,如果是普通字符,就调用n_tty_receive_char。这个函数会调用put_tty_queue,经过两次转手,最终,这个字符进入了read_buf。这是一个循环队列。

android几个常识

Dec 16, 2011 - 1 minute read - Comments

内存问题 首先,总内存量需要被各种CPU划出部分使用,剩余才是系统可用内存。这个概念差不多相当于电脑上的共享显存,系统对划走的内存是没有管理能力的,因此在/proc/meminfo中找不到这部分内存。这部分内存既不能优化也不能使用,因此其实是不可使用内存。厂家出厂内存(标称内存)和可使用内存一定存在差,具体多少看各种机型。htcg2是288m标称191m可用,p81hd是512m标称288m可用。 可用内存是linux kernel能管理的内存,这部分再会被划出一些供系统使用/服务使用/常驻程序使用。这部分是可以优化的,少编译一些ko模块,少开一些服务,少一些常驻程序,内存就会节约一点。 最后,剩下来的内存才是程序实际能用的量,htcg2和p81hd都在100-150M上下。不过程序退出时,内存并不交还给系统。而是当系统内存不足时(memory threshold,通常24m),由系统分析目前内存中,使用频率最少的一块,然后去释放这个内存。通常而言,你在系统中开了三五个程序,然后按Home退出到桌面,再进入时程序还处于退出当时所处的状态,这就是因为还在内存中没有释放的缘故。而当你开的程序比较多,例如十多个程序,也是由Home退出到桌面,再进入最老的一个程序时,程序已经处于初始的状态。这就是因为内存不足,系统帮你杀了这个程序的缘故。如果用Back键退出,程序会直接关闭,内存释放,这个无关系统是否有空余内存。 所以,对android而言,内存只代表两件事情。一个是所能运行的最大的程序。如果总内存不足,一些一次性需要内存比较大的程序就会无法运行,特征是一运行就退出,系统没有提示错误。另一个是同时在内存中不关闭的程序的数量。内存越大,在机器中就可以保持越多的程序处于打开状态。对于新打开程序(此时内存请求较多),或者程序突然申请大量内存,系统就开始释放其他程序,此时系统会稍慢。但是在考虑是否需要使用内存优化软件的时候,不妨这么想。内存优化软件运行的时间,一般比直接kill进程还长呢。 如果觉得自己内存不足,想要优化的话,需要非常注意系统中的服务。系统中一般会有很多服务在运行,很多都是消息通知类的,例如fackbook的新消息,twitter的新消息通知,google plus的消息通知,还有微信,等等。这些消息通知每个大概都是5-10m内存不等。有的时候,如果你不需要消息通知,关闭消息通知可以有效关闭服务,例如ubersocial的消息通知是可以关闭的,而google plus和facebook就没有这个选项。如果你觉得这两个的消息浪费内存,那只有卸载他们。至于微信,你可以使用程序中的退出功能关闭微信。一旦关闭,通知服务会自动关闭。 内核模块问题 一般而言,系统内核会编译进很多东西,但是也有不少东西是不编译进去的。这些可以动态载入的东西,就叫内核模块。对android而言,其实普通用户没必要在意到底机器内的某个模块是模块形式还是编译进入了内核,所以下面统称内核功能。无论是模块还是内核形态,只要能用,就称这个功能打开。 内核常用的几个功能有,cifs,tun。 cifs是用于smb挂载的内核模块,如果内核中有这个东西,你就可以把你的某个samba服务器当作机器本地的sd卡来用。samba服务器可能听起来很陌生,不过windows文件共享就是一种samba服务器。也就是说,拥有cifs,可以将windows下面的文件当作机器的本地sd卡来随意读写。这对于家庭内使用android是个很方便的事情。 不过cifs现在用的比较少,因为ES文件管理器有个功能,可以把远程文件转换成一个http流。视频之类可以以http流模式工作的文件就可以直接远程打开。 tun是一个很重要的内核模块,因为openvpn/anyvpn都需要使用这个东西来工作。没有tun模块,这两个程序将无法工作。 存储形态问题 任何一个android设备都一定会搭配一块存储。这块存储会被切分为多个区域,模拟成一个硬盘的多个分区来使用。我们来看一个内核的启动参数,以下数据来自我的P81HD。 console=ttyS1,115200n8n androidboot.console=ttyS1 init=/init initrd=0x62000000,0x800000 mtdparts=rk29xxnand:0x00002000@0x00002000(misc),0x00004000@0x00004000(kernel),0x00008000@0x00008000(boot),0x00008000@0x00010000(recovery),0x00078000@0x00018000(backup),0x0003a000@0x00090000(cache),0x00100000@0x000ca000(userdata),0x00002000@0x001ca000(kpanic),0x00080000@0x001cc000(system),-@0x0024c000(user) bootver=2011-08-05\#2.06 firmware\_ver=0.2.3 能明显看出,存储使用的是nand,编译是针对rk29xx的,所以模块叫做rk29xxnand。mtdparts里面规定了rk29xxnand的分区特性,每组三个数据,第一个是大小,第二个是起始位置,第三个是分区名。其中userdata实际大小256m,表上面写的是1m,因此1相当于256字节。下面可以再看一下mount表。 /dev/block/mtdblock8 on /system type ext3 (ro,noatime,nodiratime,data=ordered) /dev/block/mtdblock6 on /data type ext3 (rw,nosuid,nodev,noatime,nodiratime,errors=continue,data=ordered) /dev/block/mtdblock5 on /cache type ext3 (rw,nosuid,nodev,noatime,nodiratime,errors=continue,data=ordered) 可以看出存储编号是从0开始的。分区后,存储的内容即是以ext3格式存储。 系统组织问题 android的系统组织很有意思,并不是按照FHS来组织的,却部分兼容于FHS。 android最基础的一个分区是system,这个分区被mount到/system。/etc一般都是直接link到了/system/etc下面,由此可见这个分区的重要性。这个分区一般存放所有系统内置的,不能更改的程序和数据。例如系统的内置app,framework,java基础库,so库,系统程序,等等。一般的刷机包里面,都是以zip格式打包了system的新内容。一旦这个内容被替换,系统就有了新特性。一般一个system的大小是200m-500m,不会全部用满,会留出一些方便后续的升级改造。 data里面是系统内置的存储区域,这个区域常常被误叫为手机内存。实际上内存是ram,这块类似于rom。一般是500m上下,程序安装后就是装到了这个,包括数据也保存在这里。如果这个区域不足,系统就不能安装新程序。因此有些人想出了app2sd的把戏,说白了,就是通过bind,把sd卡上的一块区域映射到这个区域的某个目录下,使得某个app的数据可以存储到sd卡上。当然,这个能够转移过去的只限于数据,代码好像是不能转移的。而且,mount需要时间,sd的读取一般也比rom更加慢和麻烦。因此app2sd后,系统启动速度会变慢,程序运行也会变慢。 一个更好的扩充data的方案(当然,也更危险)是,通过修改刷机包,将上面kernel参数改变掉,并且重新分区nand。这样,data区的大小可以增加到1g左右,而user区的大小会减小相应的量。这样处理后,手机上可以安装更多的程序,而且没有什么后遗症。 cache里面是缓存,这个直观感受并不多,也很少用满,所以不解释。程序里面一般会列出,使用多少缓存,就是指的这个区域。 权限管理问题 android手机的权限很有意思。和macbook有点类似,但不完全相同。 android手机的每个程序,都有一个权限和他相关。规定的事情可以做,不规定的不能做。估计是给程序新建了一个身份,可以做的事情做成组,然后对身份加组。但是其中,有一类特殊的权限,正常情况下是任何程序都无法申请的,即是sid权限。学过linux的应当知道,就是可以切换成root身份的权限。 android的root,基本方法都是通过某种方法将/system改成可读写,然后用自己做的su替换/system/bin/su文件。自己做的程序,会以一些方法验证某个程序是否具有su的权限(一般是弹出对话框确认),然后让他们可以拥有最高权限。可以su的程序,他们的权限表就没有意义了。 adhoc问题 adhoc是一种常见的wifi形态,特征是没有一个ap(常见的路由器即是一种ap),全部由普通的客户端电脑来进行网络连接。 android的wpa_supplicant文件做过一些修改,过滤了adhoc网络的essid。所以,如果你使用adhoc模式共享了网络,你的android设备将无法使用。 但是android是可以做出adhoc的。这是很悖论的一个事情,android自己做出的网络分享,另一台android是无法使用的。

家庭网关,三网融合

Dec 12, 2011 - 1 minute read - Comments

Sunny Sunny<sunnyboyme@gmail.com>: 要做一个关于home gateway的论文,讨论不同服务下的 Service Level Agreement (SLA),带宽,延时,数据包 schedule 策略 等等。不知大家有什么好的 想法/Question/Hypothesis,或者 以往的使用体验。 希望来个 头脑风暴,呵呵 ~~ shell: 我好像全都部署了,就是不整那么多名词而已,不知道你要干啥。 出口是光纤,20M下行/1M上行。路由器是dir-825,上面部署iptables arptables 还有tc。可以控制端口进出,还有控制机器的访问权。tc负责控制QoS。 后面主要是两台机器,一台atom,上面放2T硬盘,作为NAS/开发服务器/电视的长期支撑设备/家里的定时通知机器/闹钟/将来准备接个摄像头做更好玩的应用。 另一台amd x955 8G,两个人用。一个DVI连接显示器,一个HDMI连接电视,可以看看高清电影,开发也很舒服,一般开虚拟机干各种应用。 其余设备都走了网线或者无线,最近考虑装一个网络电话。 电视是三星的,上面集成了一个简单的android,就是app market是专用的,里面没有vnc/rdp客户端,否则我连atom都不需要登录就可以直接访问各种服务器了,更方便。 电话,电视,网络,全部走在了ethernet上面,不知道算不算三网融合。不过我吐槽过一篇文章,这年头不知道要电视和电话干吗用。给我视频网站和手机就能很high了。 在 11-12-11,Sunny Sunny<sunnyboyme@gmail.com> 写道: 哇咔咔,不错不错,可以拿来当模板用~~ 不知道你的电视和电话走网路时候用的是什么协议?或者说,用的哪家公司的服务? 电视走网络(IPTV?)会带来巨大流量,相比普通电视/数字电视有什么优势? 在 2011年12月12日 上午9:16,Stone Zhang<kelxzhang@gmail.com>写道: 其实,我感觉三网融合现在最大的问题是,在三层没有连上的时候,如果可以打电话。 就是说,在断网时(就是物理连上,但拿不到IP )普通用户如何能够打电话。 还是就是收费问题。 何必走专用协议呢?现在中国没有一家服务是大到可以称为标准协议的。 电话我还在考虑,用SIP还是skype。前者有很多现成的网关,也很容易和普通电话通话。后者看样子也不差。反正我手头有atom服务器,用skype长期开机也是没什么问题的。 电视更简单,直接上youku/tudou/verycd搜索就好。其实你本心的想一想,我们到底是为了解决问题而发明标准还是为了制造问题而发明标准?使用目前已经存在的服务能解决需求就好了。这些点播唯一的缺陷是还缺少一些连续播放的视频DJ/选材制作,我在吃饭的时候看节目往往还要自己挑。所以目前我吃饭的时候都在看电影,atom机器一天能下N部高清下来,就是我怕现在的导演们没那么多时间去拍。。。 视频走网络有什么好处?论广播能力,格式兼容性,不如RF。论节目,也比电视台差了很多。但是电视走网络胜在制式可以几乎无限上升,目前我看1024x768已经觉得不够清楚了。你觉得目前的IPTV,就算加上数字电视机顶盒,能够到多少分辨率? 至于电话问题,断网是极端情况。虽然网络比电话线不稳定,但是也不是天天断的。有网络用网络,没网络用手机。android加上sipdroid也可以当作sip客户端用。如果手机都走不了,那问题就不在三网融合的设计上了。 你可以想想,网络电话到底有什么优势?电话到底干吗用的?在我们业务类型大幅变化的时代,讨论如何将上个世纪的业务完全不差的照搬到网络时代真的有帮助么?我们真的需要在网络时代,等待一个前向兼容的标准么?实话说,这是中老年业务。我家里没有普通电话,外婆和岳母说要装一个,我和老婆都没什么兴趣。因为除了多交钱,没有任何帮助。要找我们,手机总能找到。手机找不到,电话也找不到。 传统认为,使用可以容忍的语音标准,提供持续而稳定的服务是电话服务的第一要素。实话说,在网络时代,这个可能要改为低成本,高可用性。网络(尤其是中国网络)已经把我们训练的很有抵抗力,对无法服务的系统基本可以接受,只要这个系统大部分时候能跑通。让我选择十年保证故障在1小时以内的普通电话服务,我宁可选择一年保证故障在五小时以内的网络电话服务,只要这个电话服务可以: 1.大部分时候打的通,比移动/联通打不通的机会低。 2.便宜,我可以和远程一聊数小时,甚至干脆保持一两天不断线。 3.功能集成,例如视频电话?多人电话? 为什么不选择后者呢?我正在准备把老婆家里的设备做一下定制,让她的电脑可以很方便的视频保持和我服务器的连接。这样岳母可以通过她家里的电脑和我这里保持持续通讯几个小时,甚至可以一边吃饭一边聊天,双方还能互相可见——免费。我不觉得普通电话业务能够提供这种优势,更不提昂贵的话费。 另一个例子是我一个朋友,也在shlug里面。他十月去日本,带的是一台iTouch。在日本可以很容易的连上wifi,速度还很快。通过skype打电话回家,价格便宜服务稳定。如果是我,我更希望带一个3G设备,直接用当地的3G接入保持持续通讯。你觉得带传统手机出国然后办理套餐需要多少手续和多少钱?这是一个移动电话被网络服务比下去的例子。也许有人说中国的网络没这么好——好吧,看看五年前的网络,看看今天的,想想看五年后,这个论点还有没有优势。 同样,在网络时代抱着电视不放也将会是种无谋。目前网络视频还是替换不了普通电视,不过这天总会来的。

吐槽招聘几件事

Dec 9, 2011 - 1 minute read - Comments

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

python为什么叫好不叫座

Dec 8, 2011 - 1 minute read - Comments

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

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