Shell's Home

Dec 16, 2011 - 1 minute read - Comments

android几个常识

内存问题 首先,总内存量需要被各种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,为什么大牛都爱扎堆。

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可以交叉结算。通常来说,战国时代才有的玩头。可惜,这个更加触及某些人的利益了。