Shell's Home

四川行 - 成都-磨西

Mar 28, 2013 - 1 minute read - Comments

成都 以前没来过成都,第一天下午到的成都。找地方住下后,先去订了一张到磨西的车票。结果还没有了——貌似冬天车票也很紧张阿。订了一张去泸定的,离磨西50公里左右的样子吧,也有车过去,需要转一下。 晚上在蜀九香吃的火锅,排队排了快一个小时,但是相当值得。外面就能闻到阵阵香味,进去吃的时候,一个红油锅子里面放着各种香料。我们能看到的只有辣椒,花椒,大块的生姜,还有大葱。但是那个香味看上去不像是这么简单的样子,吃过之后味道一天都散不掉。火锅料有酥肉,豆皮什么的。我们后来点了一道黄辣丁,上来居然是几条鱼。放在锅子里面煮开,鲜的很。各种食材在火锅里面涮一下,很快就变得红中透金。吃之前要在油碟里面过一下,解辣。我猜是因为辣椒素是脂溶的,因此,用水是洗不掉的。涮过的食材,上面会粘附一层辣椒油,而且会有部分溶解到食材的脂肪中。试图在茶杯中洗一下的同志可以省省了。在过油之后,表面的辣椒油会被洗下去一层。不得不说这是个很聪明的办法,因为我吃了一块洗过的和一块没洗过的,后者导致我第二天肚子一直不是很舒服。。。 成都-磨西 磨西是古羌语,是宝地的意思。成都在东,磨西在西南的方向。去往磨西的路往西南走,开始100多公里是高速。而且开到荥经,google地图上的高速已经结束了。实际上高速一路延伸,一直到汉源附近。据朋友说,这条高速8月才通车。车到石棉县再向北转折,沿着大渡河开往泸定。 原本按照地图,我们应当过二郎山隧道的。车上有个女的去过,告诉我们那里风景很不错。可惜,照我们这家客栈老板的说法,现在那里堵车,过去要多堵两个小时。所以现在货车一律走二郎山,客车就从石棉那里绕过来。 高速路段的风景乏善可陈,真正的风景是从汉源下了高速后开始的。汉源那里有个水库,过了水库旁边的隧道,能看到一条非常宽阔的河。水面碧绿,车就在水旁边开。很多路段,车甚至不是从山体上切割出来的,而是在水面上架桥蜿蜒过去。 接近石棉,地势就越发高昂陡峭。房子就建在山坡上,远远看去好像一座山上一层的岩体裸露一样。旁边的山体有很多就是这样裸露出来的,底下是大块的岩石和松软的土。这里的土还不是江南那里的那种粘土,而是粗沙土一样的东西。这样的房子在地震的时候发生滑坡是一点不奇怪的。 过了石棉,道路就狭窄起来,只有沿着山体切割出的一条2车道国道。国道下面就是大渡河,河水不是绿色或者蓝色,而是苹果绿中泛出一种乳白的色泽。配合翻滚沸腾的波涛,还有碎石裸露的河床,我猜我大概知道为什么河水是这种颜色。大渡河在某些河段非常凶,平静的河水在一个小口突然下跌,下面就是急速的河流。如果落差再大点,大概就会形成瀑布了。 车行到彩虹桥,司机就让我们下车了。泸定还要往北50多公里。从彩虹桥下车,上当地的黑车,不过一刻钟的功夫就能到。 磨西 磨西是个不大的镇子。地图上看,镇子基本是西北-东南走向,宽度大约500米,长度大约1公里出头。但是地图上绝对不会告诉你,磨西这里的主要街道有10-30度的坡度。在路上走着,就仿佛在爬山一般。 我们是下午到的磨西,晚上就住这里,第二天再去山上玩。驴妈妈这么安排其实很不合理,因为磨西往成都的车只有早上七点半的一班,而山上七点是没有车下来的。所以我们下午只能逛磨西古镇,第二天玩一天,第三天转车才能回去。如果第一天上山,第二天住磨西,就可以直接订票回成都了。 我们住的是一缕时光,网络上评价不错。老板是个藏族,他儿子是个帅哥哦。酒店有wifi,我们现在就在用wifi上网写文章。 晚饭我们在一家藏族餐馆吃的,老板娘汉语都不怎么说的好,而且一边干活一边用我们不懂的语言唱歌,肯定是藏族无疑。我们吃了土豆包子,牛肉包子,还有酥油包子。酥油包子我们吃的不大习惯,不过牛肉包子很赞。我们还点了奶茶,牦牛酸奶,还有手撕牛肉。奶茶看起来确实很有藏族特色。老板拿点粉末放进去,然后拿一大壶茶一冲,倒出来就是奶茶了。喝起来有点奶粉味道,又有点酸酸的。酸奶很小一碗,不过确实不像是外面卖的酸奶,因为没有任何稠的感觉,就像是面霜一样一坨一坨的。手撕牛肉很贵,不过是我们吃的最好吃的东西。就是汤煮牛肉,放一点辣椒和盐巴。牛肉没有煮的特别烂,但是很鲜,很香。加上辣椒后就非常好吃。 不过不得不说,这玩意有些人就是吃不惯,有兴趣尝试,不要勉强。 海螺沟 海螺沟是贡嘎山脚下的一条冰川,最低点3600米上下。来海螺沟玩,主要是看周围的雪山,尤其是贡嘎山主峰,7400多米。还有冰川和大冰瀑布。 这里不得不说海螺沟的坑爹之处,我还以为门口80的票已经包括到山上了呢。结果门口的票只包括门票和一个多小时上山车的车票,要上山顶还要坐150的缆车。缆车会把我们送到4000米左右的高度。我们去的时候运气不大好,又是云雾天气。坐在缆车里什么都看不见。上到山顶,居然瞬间转运,出门就看到天开颜,露出西边的山麓和顶上的积雪。 如果昨天的景色已经用掉了惊心动魄这四个字,我就不知道该如何形容今天的景色了。整个大山仿佛漂浮在云雾上方,从东南西三个方向包围着我们。周围的其他雪山都是黄黑色的岩石上有积雪,仿佛斑纹一样。贡嘎山主峰就在西南方向,整个全是白色的,非常显眼。说是说7400米,世界第41高峰。但是看上去也不怎么高的样子。实际上是因为我们本身就已经在山下,因此感觉不出。 云雾天看山是要运气和耐心的。云雾偶尔会被风吹散,露出大山。几分钟内又会笼罩回去。能不能看到,看到多少,全靠运气。难怪山里的人多数都信佛教,希望得到神灵的庇佑。我们没有跟团,因此多留了点时间。两个多小时的时间里,天总共开颜了四次,加起来20分钟的样子。我们基本看到了所有的景色,包括冰川和大冰瀑布。唯独贡嘎山顶始终笼罩在一团云雾之中,不肯显露真颜。 海螺沟的冰川和大部分人想象中不同,它并不是白色的,而是灰色的。因为向下流动过程中,夹带了大量泥沙的关系。在冰川的上游,有个非常罕见的冰瀑布。冰川从瀑布上出来,跌落在下面继续向下。和普通瀑布差不多,除了里面走的不是水,而是冰。下冰川的路途非常狭窄危险,我们不想让当地人抬下去,所以就没下去。 向上走,可以看到小片的红石。据说这东西在燕子沟比较漂亮,是由高原旱藻在石头上生长造成的。因为是特殊气候条件下生长的藻类,所以当拿回家后就会慢慢死亡失去颜色。 最后说一句,要去看山一定要戴墨镜。去高海拔地区可以提前买点牛肉干或者糖块之类的,以补充能量,防止高原反应。 温泉 海螺沟下来,我们坐车到了二号营地的温泉酒店。酒店那里猴子很多,我们寄放在前台的一包甘蔗就被猴子抢走了。鉴于普吉岛的经历,我建议大家离猴子们远点。 既然是温泉酒店,温泉就是酒店最大的特色。这里的温泉水很热,高达60-80度。经过引出后,温泉池日夜冒出热气,整个温泉区域都散发着一股浓郁的硫化氢气味。 酒店有对住客提供一套浴袍和浴巾,如果买门票来泡就只有租了。可以房间里换好衣服出去,也可以用他们的更衣室。不过鉴于现在这个天气,我建议还是更衣室换好衣服就赶紧往温泉池里面跳吧。 温泉池的温度大约是40-45度,一般来说,越高温度就越高。池子里面有漂浮的细细的雪花一样的物质,酒店说明这是钙质沉淀,我觉得靠谱。碳酸钙的溶解率是随着温度变化的,从高温到低温的时候,会有大量碳酸钙溶出。但是酒店在泉眼的说明文字——让我怎么说呢。上面居然说这个泉水是“氢泉”。废话,只要是个泉水,里面都有氢。要是说游离氢离子——难不成泉水的PH值小于5?那还能不能泡了?真是,一点文化基础都没有的乱忽悠。吐槽不能。 泡过温泉会让人觉得暖洋洋的,很舒服,而且皮肤很滑。另外,运气好的话泉水区有很多美女哦。我在泡的过程中有好几拨美女路过,很多都是夫妻一起来的(恩,我家喵也算一个),甚至一家人协老带小一起来。 磨西-成都 从磨西回成都是个麻烦事,因为早上的班车7点半就发车了,而酒店8点才开出班车。因此回到磨西镇上我们需要自己找出路。 幸好,昨天有个女的,和我们说她能帮我们联系上泸定的司机,司机在经过彩虹桥的时候把我们稍上。讲好回程车票150一人,到彩虹桥的车钱30。估计她大概在里面总计赚了30-50。能解决问题就好,要是我们等一天,或者打车去泸定再走,花费只会更多。 回成都的路上,天气放晴(就阴了一天半,什么人品。。。),我们得以看到大渡河的真面目。真的是非常险峻而漂亮。到了石棉以下,河水渐渐宽阔,整个江上广阔无垠,又是另一番气象。如果有机会过的话,这段风景不可错过。

python插件技巧

Mar 20, 2013 - 1 minute read - Comments

简述和通则 何谓插件。 在实现某个功能时,经常需要对一个功能提供多种实现。例如短信网关接口各异,但是对系统而言,发送代码是一样的。 通过一套特定的机制,在成型的产品中,增加一个独立的文件,即可实现定制化实现。这套机制被称为插件机制。插件必须满足下面几个要求。 对于已经发出去的产品,插件机制可以通过增加文件,并少量修改(一般1-3行)产品源码,即可为产品添加新的功能。 对于产品主分支,带有插件不会影响主分支的正常工作。 插件机制的以上两个特性对产品定制非常有帮助。因为使用插件进行定制开发的项目,不需要独立建立分支。只需要在主分支上添加几个文件即可。分发补丁时也格外容易。 禁止在python主目录下直接放置插件,所有插件必须在python下级目录下存放。 插件的命名必须使用前缀师命名规则,所有同类型插件,要么在一个目录下独立存放(目录下没有其他代码),要么在一个目录下拥有同样的前缀(其他代码不得使用这个前缀)。 替换型插件 最简单的插件手法,就是某个文件提供提供某些函数,在变更功能时用另一个同样实现这些函数的文件替换掉原始文件。这甚至称不上一个插件手法,只能算打补丁。 替换型插件的提升,就是在文件中不直接提供函数,而是从某个其他文件载入这些函数。例如以下代码: from abc import * 原始是从abc文件中取得所有符号。当有新的文件abc2提供时,将原始文件替换为abc2,补上去,即可改变代码。注意这行代码一般不在一个大的文件中的某一行,而一般存放于一个独立文件。因为大文件相对容易修改,不能用新的代码替换。而独立文件相对固定,在打补丁时可以用新的代码直接替换。 替换型插件适用于,对于某个客户而言,只需要在多组实现中静态的选择一组的情况。替换型插件的优点是工作原理简单直观,排查容易。缺点是对于一个功能不能提供复数组实现。 配置型插件 另一种插件手法基于文件或配置。在某个目录中,放置某个功能的多个实现。在加载时,载入全部插件。在使用时,根据配置动态选择。这种手法被称为配置型插件。 配置型插件是一种非常重要的编程技巧,他为程序提供了非常优良的可扩展性。 例如下面的例子,简述了一种配置型插件的实现: funcmap = {} def register_func(name): def _inner(func): funcmap[name] = func return func return _inner 在具体实现中 @register_func(name) def func1(....): pass 在__init__.py中,import一下新的文件。在原本的funcmap中,即可出现新的name和func的对应。 配置型插件适用于大多数场景,其优点是工作原理简单,可以为一个功能提供复数组实现。缺点是使用上限制比较大,必须和逻辑结合,思考困难。 动态加载 动态加载插件是一种插件技巧,并不特定用于替换型或配置型插件。 当需要加载插件时,通过python代码访问文件系统,枚举出特定文件并加载的技巧,称为动态加载。以下代码是配合上面的配置型插件的例子,实现动态加载的例子。 def load_plugins(): for filename in os.listdir('plugins'): if filename.endswith('py'): __import__(filename[:-3]) if filename.endswith('pyc'): __import__(filename[:-4]) 动态加载的优点是,可以通过放置文件来增加/修改功能,而不需要修改代码。缺点是,由于需要访问文件系统,因此效率并不高。如果每次加载都需要动态查询,那么系统效率会大幅下降。 热加载插件 热加载是一种比较高级的技巧。在程序执行中,不退出进程而动态的将最新的组件加载进来的能力,被称为热加载。 简单的热加载就是在每次执行功能的时候,检查是否有新的组件。由于这样会带来很高的系统负载,因此除非必要,否则不要滥用热加载。 更复杂一些的热加载,需要用新的实现替换原有实现。这涉及几个编程上的限制。 热加载有几个限制,必须严格遵循: 在所有访问前,必须检查文件。 如果要进行热替换,不得将原有文件的导出符号作为值使用。即,无论是文件的导出数据,导出函数,都不得作为其他对象的赋值内容。 热替换内,不得保存私有数据。所有数据必须在上下文中,或者全局中存放。

vpn转代理

Mar 19, 2013 - 1 minute read - Comments

背景 贝壳自己的vps蒙难,不能正常工作了。所以贝壳买了一个vpn。是pptp/l2tp系列的。用起来很好用,但是这类ip-based vpn有几个不便。 不能自动设定客户端路由表,实现智能翻墙选择。 每个需要翻墙的设备均需要拨号,而目标设备有容量极限。 不能实现非侵入式翻墙,打开之后连p2p都翻了。 与此相反,代理式翻墙可以比较有效的解决这些问题。一个点拨号,其他点可以共享代理。不需要翻墙的直接访问不设定代理就好。唯路由表没有办法。实际上,为了使得代理可以使用路由表选择,贝壳还是花了一番功夫做了antigfw项目的。 闲话少说。这次贝壳就展示一下如何在debian下设定pptp vpn,并且利用代理无缝共享的。 linux下的vpn设定 安装pptp-linux这个包,然后按照说明使用即可。 pptpsetup --create <TUNNEL> --server <SERVER> [--domain <DOMAIN>] --username <USERNAME> [--password <PASSWORD>] [--encrypt] [--start] 自己填充用户名密码服务器,就会在/etc/ppp/peers/下面生成对应的文件。使用pon tunnelname就可以拨号了。 路由设定 初始设定好的vpn不具有智能路由,因此必须添加一些内容。 首先使用chnroutes.py这个程序,得到ovpn下常规用的路由表。当然,我们可以用linux下的路由表,但是他的old gateway存放在了/tmp下面,对此我并不是很喜欢。所以我只用了他的路由 表信息,其余自己处理。如果你不确定自己执行时的默认路由,理论上也应当需要下面的一些配置。 使用下面这个topptp.sh,可以将输出的routes.txt转换为pptpup和pptpdown两个文件。 #!/bin/bash ETHGW=192.168.1.1 cat > pptpup <<EOF #!/bin/bash export PATH="/bin:/sbin:/usr/sbin:/usr/bin" EOF cat > pptpdown <<EOF #!/bin/bash export PATH="/bin:/sbin:/usr/sbin:/usr/bin" EOF sed "s:route (S*) (S*) net_gateway 5:route add -net 1 netmask 2 gw $ETHGW:g" routes.txt >> pptpup sed "s:route (S*) (S*)

lxc的文件共享映射和严重安全隐患

Feb 9, 2013 - 1 minute read - Comments

在lxc中,可以利用mount bind指定guest可以访问某些host的路径。例如: lxc.mount.entry = /home/shell /var/lib/lxc/{vmname}/rootfs/home/shell none defaults,bind 0 0 注意,/home/shell是你希望共享的主机路径,/var/lib…/shell是映射到的目标路径。 这个工作的基础原理,是在虚拟机启动的时候,自动执行mount,添加一条bind映射,将host的路径挂到guest可以访问的路径里去。 由此,我发现了一个lxc在文件共享时的严重bug。 user@guest:~$ mkdir -p ttt/123 user@guest:~$ cd ttt/123 user@host:~$ mv /var/lib/lxc/{vmname}/rootfs/home/user/ttt/123 . user@guest:~/ttt/123$ cd .. user@guest:(unreachable)/user$ ls -l 好了,现在guest在host的~user/目录下,host上本来不应当被看到的东西全被看光光了。 更严重的是,如果此时sudo成root,在host中可以以root的身份做任何事情。 结论:暂时来说,不要在host和guest之间直接共享任何数据。

fork两问

Feb 1, 2013 - 1 minute read - Comments

问题1 以下代码。 int main() { fork(); fork(); fork(); printf("---n"); return 0; } 编译后执行./a.out | wc -l,输出多少? 问题2 以下代码。 int main() { fork(); printf("b"); if (fork() == 0) { write(1, "a", 1); }else{ write(1, "c", 1); } return 0; } 编译后执行./a.out,输出多少? 答案 第一个是8,因为pipe会继承。 第二个是cabcbbab,结果不恒定,原因比较复杂。至少应当能看懂2个a2个c4个b,c先出ab后出最后一个是b。

修正问题,让debian testing使用lxc

Jan 23, 2013 - 1 minute read - Comments

目前debian testing里面的lxc是无法运作的。原因是live-debconfig这个包只在sid中存在,而lxc是借助这个包来做系统初始化设定的。没有设定就结束初始化会挂掉系统。 解决方法如下: dget -x http://ftp.de.debian.org/debian/pool/main/l/lxc/lxc_0.9.0~alpha2-4.dsc 可能因为没有key而无法解压,用dpkg-source -x解压开内容即可。 aptitude install autotools-dev docbook2x libapparmor-dev libcap-dev linux-libc-dev 然后进入目录,dpkg-buildpackage -rfakeroot -d进行编译。 退出目录,dpkg -i lxc…进行安装。 到/usr/share/lxc/packages/,wget http://ftp.cn.debian.org/debian/pool/main/l/live-debconfig/live-debconfig_4.0~a15-1_all.deb。 然后再执行常规操作。 lxc-create -n vm0 -t debian lxc-start -n vm0 启动正常了。 在debian wheezy 3.2.0-4-686-pae下测试通过。

封抢票插件究竟封的谁

Jan 19, 2013 - 1 minute read - Comments

12306抢票插件被工信部封杀的事情相信大家都听说了,具体我就不细说了。 首先说明一下我的立场。我不需要春节回老家,用不着。所以我也不抢火车票。你们不用质疑我吃不着葡萄说葡萄酸,也不用骂我仗着技术欺负你们。我只是把我看到的和想到的说出来,仅此而已。 我先简单说一下,抢票插件的工作机理。需要说明的是,由于我自己不用,封杀后也比较难找到渠道弄一份来。我是通过作者叙述反推和猜测工作机制的。如果有问题,请联系我,我尽量修改。 此事合不合理 个人认为,12306抢票工具,主要简化了铁道部系统登录,刷票,购票的过程,使这个过程更加简洁。就我个人理解而言,抢票插件是针对铁道部的12306定制的一个http工具组。他的主要功能,就是在铁道部不合理的UI上,加了一层包装,方便用户使用,仅此而已。 为什么这么说?我们反过来看,站在程序员的角度,如果要恶意抢票,有什么办法? 使用phantomjs。phantomjs是一个headless browser,每个phantomjs实例大约是20M内存,可以模拟一个独立的浏览器。如果网络撑的住的话,一台8G内存的机器,最多可以开启400个会话,模拟400个浏览器同时登录。由于12306没有限制一个IP可以登录几个人,因此在phantomjs上面写抢票插件,可以做到400个浏览器同时刷票的效果。 使用python开发定制化爬虫。这个是我的专长领域,我用这种技术对多个网站做过爬虫,抓上面的内容。采用这种技术的情况下,每个实例大约消耗8M内存。因此上面的机器可以支撑1000个浏览器。 把程序改用go写,并且将程序并行化。我没这么做过,不过大致估算了一下,租个4G内存的云主机,大约可以支持2000个以上的会话,相当于2000人同时抢票的效果。按照盛大云的价格来算,租个10天用来抢票只要160块,即使是个人也可以轻易租上百台,相当于20W个人同时抢票。 以上估算有两个问题,一个是校验码,一个是支付。 校验码通常使用OCR可以解决,铁道部的校验码本身重码率就很高,内容识别出来就等于知道答案。而OCR,对于有经验的程序员来说,只是成功率问题而已。 退一步说,OCR不解决也不是什么问题。OCR和支付让人工来做,其余事情系统自动处理。这样的系统也不是没有。 好吧,你们想象一下看看,以上一个系统,是怎么样一个存在?20W人同时抢票,你觉得自己胜算几何? 当然,你会反驳说花个近2W租服务器写程序有什么了不起的。是没什么了不起的,不过如果你抢不到票,花10块帮你抢票你做不做?一天只要抢200张票就够服务器开销哦。只要抢个400张票就可以满足开发成本哦。你觉得20W人连续不断抢票,一天抢不到1000张么?你太天真了。 这才是真正不合理的事情。 这些事情,抢票插件都没做。 封的住么? 我很怀疑这件事。别人不说,我专长就是写python爬虫。所以很明白,你要封掉爬虫,从技术上很难,得从业务上下手才行。至于行政手段,脑子进水了吧。 为什么?拿前几天的一个小事来说吧。我想看小说,某个网站允许看,但是只有会员才能下。没办法,我拿chromium调试了一下,然后写了个python脚本爬下来50多M的小说。加起来总共也没花10分钟。然后我去网络上问了一下谁有兴趣,把程序传给他们,就不管了。 看,爬虫就是这么简单的一件事情。 而且还有github在。如果要联合几个朋友写个爬虫,每人一个页面,我估计也是几个小时内可以完工的。 行政手段?那最多只能让普通用户找不到可用的插件,却不会让程序员写不出可用的代码,更不会让心存恶意的人止步。 密码学常说,不能指望对方不了解你的机制来保护安全(术语称为黑盒机制)。必须让所有人都能够看到过程。在这种情况下,你的信息仍然是安全的,那才是真正的安全。 当你的网站不安全,抓几个用漏洞的人来处分掉就假装网站安全了?你的改进呢?你的补丁呢?你是鸵鸟么? 铁道部的网站,就是这么个黑盒。明明大部分程序员都可以很容易的爬来爬去,却禁止让一般民众接触到这个事实,假装这件事情不存在。 事情的后果 也许有人说了,既然都写的出,你为什么不写一个?上面说了,我没必要抢火车票。再说,大部分抢火车票的程序员有好用的插件,为什么还要自己写一个? 现在,我假定普通人再也不能通过简简单单的装个插件抢火车票了。你们没发现这意味着什么么?这意味着有知识和能力者,和普通人,被彻底的分开了。尽管以前,有技术的翻墙,没技术的被墙。我们仍然可以假装这个事情和我们没有关系,可以假装这个世界仍然很美好。但是今天,有技术有知识有资本的仍然可以凭借技术弄票,没技术的就只能干瞪眼。 这是更大的不公,而且可以产生恶意的寻租。 原本程序员写个刷票程序是没什么好处的。虽然刷票快,但是普通民众也可以装个刷票工具来刷票。你那20W刷票大军碰到全国的刷票机器,恐怕也得缩着。既然普通人不能使用插件了,只能用浏览器慢慢的刷。那么,允许我大胆的猜一下——职业刷票者的黄金时代到了。 租个云主机,然后用专用的程序帮别人刷票。通过淘宝先交易,付定金,拿身份证,刷票卖。整个流程链太成熟了。现在唯一的麻烦——普通人自己有刷票工具——都不存在了,真完美。 别以为做技术的多清高,真清高就不会有做木马的了。 封掉插件便宜了谁 在讨论抢票插件前,先弄明白,谁在用抢票插件?是大多数不会技术的普通民众。谁在消费抢票插件?是各大浏览器厂商。这本就是不应存在的东西,你见过有刷秒杀的工具,你见过刷淘宝的工具么? 浏览器厂商为什么拿抢票插件当卖点?因为那玩意做的烂,你还不能不用。 封掉抢票插件便宜了谁?我不知道,反正不是每个买不到票的人。 此事不合理和不合法 而且,此事开了一个很不好的先河。网络不是法外之地,要封人也要讲一个合理合法。先不说抢票插件的合理性,单从合法性而言就显然不对。工业和信息化部作为行业管理部门,主要是管规划、管政策、管标准,指导行业发展,但不干预企业生产经营活动。你什么时候见过一家公司做了个产品,工薪部上去指手画脚的? 除非这个产品影响了整个行业生态。就像当初的QQ和360。 抢票插件哪里影响到计算机行业生态了?他只是影响了12306这一家网站的稳定性吧。如果因为网站的稳定性就可以让工信部出手约谈的话,那搜狗爬虫乱爬我网站,我写了robots.txt他也不管,这事工信部管不管啊?电信给我访问里插广告,这事情工信部又管不管啊?

2.4G网络冲突问题

Jan 9, 2013 - 1 minute read - Comments

由于2.4G是各个国家共同保留的一个非牌照频率,如果商家打算做什么无线通信的玩意,又不打算申请频率,那就只有用2.4G。因此,其实很多设备在无意中都在使用这个频率,他们之间会互相干扰的。 蓝牙 无绳电话 部分微波炉 无线网卡 无线门铃 深圳某地铁公司的信号闭塞系统。。。 某种设备的信号,对其他设备来说就是噪音。高速传输设备,尤其是wifi,在高噪音的环境下速度很慢。 因此,建议在复杂环境下的wifi用户尽速迁往5G频率。你家要是无线环境很干净(例如我这里,屋子电磁屏蔽好),那就不是很着急。

2013南方周末事件后续1

Jan 8, 2013 - 1 minute read - Comments

事实变化 首先和大家道歉。在上一篇《传播学角度分析2013南方周末事件》中,我提到一个事实,就是审稿的人自己动手。现在事情还原出来,并非如此。从描述来看,动手的还是报社总编和副总编。具体可以看《南方周末》编辑部披露2013新年特刊制作过程指违反编辑流程。这总算解我一个心头疑惑,为什么宣传部会干出这么蠢的事情,公然违反编审原则。 当然,这不是说他们不傻。要评价的话,大概就是40的智商可以升到60了。为什么?尽管没有自己动手,但是在审稿通过上严重违反流程,直接导致新闻事故。 什么是新闻流程 我曾经南方日报社出过差,貌似听过他们的编辑讲解采写流程。不过脑子里没印象了。现在脑子里记得是其他报业的采写流程,而且也不真切。要是有编辑看到里面有错,麻烦帮我纠正。 首先我们从采写说起。报业得到新闻线索,先是记者得去现场,这个称为采写。采写回来的稿件称为待编稿,然后就是编辑部的事情了。 编辑部有几种来源,记者采写,新华社稿件,还有对于大型事件,编辑可以自己写点评。无论哪种来源,编辑对原始材料进行编辑,交给版面主编审查。这一步主要是看文章方向,立意,尺度,如果不合格,就退回去再改。 编辑大约是下午2点-4点上班,要在晚上8点前搞定稿件。 通过版面主编审核的稿件,就是基本就初稿了。然后稿件会交给主编,校对,审读走流程。这个流程每个报业都不一样,我记得的流程是主编,审读,校对,不知道有没有错。流程走过后,稿子就会存在系统里面,由排版部门进行排版。根据版面的特性,排版部门也会有微调。例如删去几个字,保持行的利用率等。但是一般不做内容调整了。 排版大约是晚上9点到11点之间,最晚不能晚于12点。 排版后,好像会由版面主编,总编,和宣传部的人再看一遍,把握文章尺度和原则。如果这里过了,版面主编,宣传部的人,总编会在版面上签字,确认内容可以出版。这个叫签版,谁签版谁负责。这期间编辑不能走。因为如果出现问题,需要再修改。如果被枪毙,就需要用替换稿件填充。所以编辑要随时待命。 12点前,逐个版面签字确认后,就送印刷厂了。印刷厂最迟2点拿到稿子,大约4-6点左右完成印刷,然后6点前就要由物流发行到全市。迟了就是新闻事故。常规日报就是这样出出来的。 这次呢? 从更新一些的信息来还原,这次的事件,流程是这样的。 编辑写稿子,然后主编审核,给毙了。改了内容,和宣传部沟通后,给过了。到这里为止,和普通新闻稿件流程也没什么异常。 然后去排版,排版过了,宣传部还要修改。从这里开始,问题就来了。传统上说,如果一篇文章到了排版流程,还是有异议。主编一般会用备稿替换。但是题词这么大个东西,没法换稿子,编辑又放假。所以主编和副主编根据宣传部指令操刀,跳过新闻流程,直接改内容。结局就是这么一份四不像的玩意。 为什么不在修改后走流程呢?关键在于这个时间点。如果是晚上9-12点间,一切好商量。编辑还在,排版也在,校对都在。问题是时间一到,按照传统就OK了,大家都走人了。突然出现无法出版,要再召集大家回来走流程,就会拖过晚上2点的期限,导致来不及印刷,一样是新闻事故。 当然,我从南方系看到的时间表和我记忆中并不一样。不知道是因为休假的关系(休假的内容需要提前做好),还是因为南方报业的时间本身就不一致。但是无论如何,如果内容修改拖到照排之前,出新闻事故几乎是必然的事情。 问题在哪里? 从一开始就有问题。对于不能替换的内容,一定是事先定稿。要干预修改都应当在定稿期间做。哪里有重要报道到上印刷机前才开始修的。所以事情可以定性,这是一个新闻流程事故。问题是谁是始作俑者。 其次,万一出问题,也不应当强行修改。万不得已的情况下,删掉稿子,用备稿替换,重新编辑。当然这也是新闻事故,但是程度小很多,不至于搞到今天这样沸沸扬扬。然而对于特别重要版面,完全可能没有备用可选。 目前的问题是,具体情况到底如何?只有员工的回忆和披露,没有调查,没有真相。我也觉得事情中有些蹊跷的地方,无法自圆其说。然而,编辑们的要求是调查真相,而不是一味的推卸,这是理性诉求。相反,是不是有某大佬事情,现在尚没有定论。然而某些人对此大动干戈,才是让人感到他在欲盖弥彰的原因所在。 最后,对于引起群众热议的事情,不应当使用暴力手段。群众的特征是你不顺着他说,好事都能变成丑闻,何况原本就是丑闻。当然,以贝壳个人的分析,这未必是幕后的本意。很可能是事已至此,只能如此一搏以自救。

传播学角度分析2013南方周末事件

Jan 7, 2013 - 1 minute read - Comments

也许blog又要被封了。不过管它呢。总是计较封与不封,自我审查内容,和墙内何异? 题记 Freedom consists not in doing what we like, but in having the right to do what we ought. — Pope John Paul II 始末 不多评述,请看这里 评论 之所以我会特意上来写一篇,是因为这严重的违反了传媒理论。我说的不是传媒自由,或者舆论监督。中国历来没这东西,我已经不是很奇怪了。然而传统上,管理媒体的手段叫做“述而不作“。白话来说就是挑话说。有些事情说,有些事情不说。有些不能不说的事情往轻里说,有些没啥大不了的事情往重里说。这种伎俩在宣传上是常规手段,即使以新闻自由而著称的美国,也不能免俗。你看共和党的报纸有骂自己人的么?都是轻描淡写吧? 然而,挑话说的基础,就是说话的人和审稿的人必须分离,即编审分离。为什么分离?一方面,有一部分原因是因为审稿人并没有精力亲自操刀写所有的文章。然而另一方面,则是警惕一人稿的视角同一化问题。最后,也是最重要的。必须让编辑有权力不发稿件。如果编辑认为发稿件会严重影响他的声誉,他有权不发。如果稿子非发不可,往往会署名新华社稿,或者是化名稿。这是整个新闻系统的传统。 在此之上,才是传媒管理手段。大部分传媒管理手段都是通过指令的形式下发。例如XX事件不许报,XX事件要重点报。不要想当然的认为传媒管理手段是破坏新闻自由,天下新闻何其多,天天写你没兴趣的东西,报纸不亏才有鬼。传媒管理手段在任何报业都必然存在,只是中宣部利用传媒管理手段表达自己的意志而已。好一点的媒体,这些指令都是公开的。例如某个事件不许报,会有明令,哪个范围不许报。糟糕一点的就是黑审查,对外只是含糊的说,这些东西不合格。编辑就得漫天猜,这又踩着哪路神仙的线了阿。 本次事件和上述情况都不同。本次事件最恶劣的一点,就是强行删改作者稿件,还居然署原作者名。如果对稿件不满意,退。还不满意,删。这都是报业常态了。我们曾为报业做采编系统,业务逻辑中居然有三重审查系统。实际上只有第一重和质量管理有关,后两重都是意识形态管理。然而对内容不满,处理方式也是退稿,或者不让上。从来没听说过有业务需求是审稿者自己可以操刀修改稿件的。在系统中,唯一有权利又审稿又操刀的只有主编,而且主编操刀一般都会把名字列在首位,大半作者也觉得很光荣——如果不是被主编骂了个狗血淋头的话。 然而本次事件首开先例,审稿者自己操刀修改内容。这本就违反常规流程。更SB的是,丫居然还改出一堆错误。短短的150字按语,被人挑出数个错误。这操刀者的水准可想而知——我觉得他的小学语文老师应当剖腹自尽以谢天下。 得,既然出了新闻事故,总要有人负责吧。本来这种传媒责任是谁写谁负责,审查人员最多同责。然而作者很无辜阿——这TM不是我写的,写个新年题词还不多检查检查谨防出错阿。谁想到上面直接修改内容,还改出了错误。所以按道理说,让作者负责是不对的。不过估计这次上面拉不下脸,硬要搞作者,编辑们看不下去了。 ——想也知道,这种事情本来就不是自己问题。要是这么搞也可以,干脆别混了,反正哪天一个不小心也会流弹中到自己头上。编辑们必然人人自危。 现状 配合官媒态度,还有夺权发声明的强硬手段,这必然是幕后黑手在自救。如果事情是最上面授权,早就全国指令下去,一字也不会多说了。必然是上面觉得这事情办的很蠢,在考虑是否要和此人做切割。幕后黑手狗急跳墙,试图做成铁案,好让自己脱身。 审查之殇 未成年而夭则称殇,新闻审查已经是潮流,照例不应用殇字。然而和传媒比起来,审查和新闻管理手段确实如同小孩子一样。本次传媒对应上所犯下的最大错误是,使用传统媒体的手法处理新媒体,把听众当作没有思考能力的白痴来处理。这就如同白天却蒙着眼睛走路,捅到马蜂窝还不肯摘下一般可笑。 我曾在大学学传播学的时候,和老师讨论过传播路径和审查机制。当时的共识是,对具备中心路径的传播模式,会产生审查。审查的效果是消除广告和不实消息,问题是信息可能被操纵。离散的传播模式则没有审查,好处是信息比较全面,坏处是广告和不实消息比较多。 当时我就曾经想设计一种传播工具,具备消除广告和不实消息的能力,又不会被中心节点控制。作为结果,我给老师提出了一篇论文,论述了一种分布式系统——Diet。借助点对点信息传播模式工作,使用公钥签名信任体系鉴定个人。每个人和其他人会产生一些逻辑关系,每个人在阅读消息后,可以决定删除或者传递给下一个人。 是不是很眼熟?是的,当时我没有能力实现的系统,和今天的微薄非常类似。当然,我当时并没有提出140字限制。而且在新闻自由的美国也不用考虑中心节点消除的问题。所以微薄的形态和我想象中略有不同。然而微薄确实实现了一个无中心管理的自媒体群,而且随着用户的完善还会产生过程流。 如果审查继续下去,会不会有人把分布式的版本实现出来?我不知道。这太踩中宣部的线了。但是从理论上,这一工具完备,而且很难封锁。 然而从本质上,破除审查的,并不是工具,而是每个人在畏惧之前的一小步。我们都是凡人,要我们无所畏惧的抵抗,或者为别人奋斗是不可能的。然而在我们屈从别人的意志,自我审查,抹灭良心之前,可以向前走一小步。这是个人的一小步,然而会是社会前进的一大步。我们不需要英雄,我们更不能够把希望寄托在英雄身上。“让某个人带着时代的意志奋斗”这种话就和“你什么都别做就好”一样,是彻彻底底的谎言。我相信,谎言无法替代真相。哪怕我们最终不能获得成果,然而顺应自己的良心,向前走的这一小步是非常重要的。也许这一小步,能为别人,为你个人带来短暂的光明。