从阆中热线最牛站长说起

第十九条互联网新闻信息服务单位登载、发送的新闻信息或者提供的时政类电子公告服务,不得含有下列内容:

  1. 违反宪法确定的基本原则的;
  2. 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;
  3. 损害国家荣誉和利益的;
  4. 煽动民族仇恨、民族歧视,破坏民族团结的;
  5. 破坏国家宗教政策,宣扬邪教和封建迷信的;
  6. 散布谣言,扰乱社会秩序,破坏社会稳定的;
  7. 散布淫秽、色情、赌博、暴力、恐怖或者教唆犯罪的;
  8. 侮辱或者诽谤他人,侵害他人合法权益的;
  9. 煽动非法集会、结社、游行、示威、聚众扰乱社会秩序的;
  10. 以非法民间组织名义活动的;
  11. 含有法律、行政法规禁止的其他内容的。

第二十条 互联网新闻信息服务单位应当建立新闻信息内容管理责任制度。不得登载、发送含有违反本规定第三条第一款、第十九条规定内容的新闻信息;发现提供的时政类电子公告服务中含有违反本规定第三条第一款、第十九条规定内容的,应当立即删除,保存有关记录,并在有关部门依法查询时予以提供。

第二十三条 国务院新闻办公室和省、自治区、直辖市人民政府新闻办公室,应当对互联网新闻信息服务进行监督;发现互联网新闻信息服务单位登载、发送的新闻信息或者提供的时政类电子公告服务中含有违反本规定第三条第一款、第十九条规定内容的,应当通知其删除。互联网新闻信息服务单位应当立即删除,保存有关记录,并在有关部门依法查询时予以提供。

第三十一条 国务院新闻办公室和省、自治区、直辖市人民政府新闻办公室以及电信主管部门的工作人员,玩忽职守、滥用职权、徇私舞弊,造成严重后果,构成犯罪的,依法追究刑事责任;尚不构成犯罪的,对负有责任的主管人员和其他直接责任人员依法给予行政处分。

——节选自《互联网新闻信息服务管理规定

因为“阆中热线最牛站长”的事情而写这篇文章。可能因为关注得太晚,网络上的声音基本已经被埋没,只看到一个大致的事件始末介绍[来源]:阆中热线接到电话,被“阆中某部门”要求删除“四川省委书记、省长回复网友10条留言”的帖子,该贴直指阆中天然气、阆中嘉陵三桥等阆中民生问题。其他同类网站均已照办,偏偏阆中热线的管理员拒绝了该部门的要求。之后“某部门”抬出《互联网新闻信息管理规定》,并以关闭网站作威胁,而阆中热线则在头版头条刊登广告,声称宁死不屈。之后事态扩大,南充市委宣传部要求网站整改,而阆中热线启用国外服务器继续坚持,并宣称删除违法帖需下达书面通知,否则不予以受理。最后阆中市宣传部致电阆中热线,表示“并未要求整改、删帖”,并召开紧急会议,调查删帖电话到底是谁打的。最终阆中热线被关闭,其域名lz08.cn无法访问。

因为没有读过被要求删除的帖子,不知道其内容是否有违反规定。但有一点是可以肯定的,那就是我们的管理规定制定得太不完备了。

首先一个是违法内容的界定含糊不清。比如十九条的“损害国家荣誉和利益”,没有具体的尺度,于是负面新闻都可以理解为损害国家荣誉;再比如“煽动非法集会、结社、游行、示威、聚众扰乱社会秩序”,根据宪法,集会、结社、游行、示威都是公民自由,公安机关依法备案登记和维持秩序,游行本无非法一说,如果认定没有备案的就算非法,而策划和倡议是备案的先决条件,在这一条中却成了“煽动”。这样的规定很难作为网站管理人员的实施准则,出现阆中热线管理员拒绝删帖的情况也不奇怪,在他看来被要求删除的帖子根本就没有违反规定。

第二就是司法程序描述不清,这个也是笔者认为最需要改进的。比如第二十条规定的网站的义务,发现违反规定的帖子要立即删除,第二十三条进一步明确各级政府新闻办是监督部门,发现网站没有删除的要通知网站删除,可是全文都没有说明具体通知的内容格式和下达方式,也没有明确给出删除信息的时限和对违法内容认定不同时的申诉办法。也难怪阆中热线提出“删除违法帖需下达书面通知,否则不予以受理”,你看这不就有电话口头通知删帖,然后拒不承认的事情发生么。

第三是对权力部门约束不力。第二十六到第三十条则大费笔墨书写追究网站责任的方案,具体到什么情况罚款多少,什么情况关闭网站,相比之下,第三十一条追究监管部门人员的责任则显得十分轻描淡写,也不具备可操作性。

中国互联网管理现状,法律缺乏,法规含糊不清,灵活度太大,监管部门繁多,行政审批效率低下,官员滥用职权封杀网络民意现象普遍。考虑到中国的政治体制现状,这种互联网监管状况的转变恐怕需要相当长的时间。而阆中热线的站长不畏强权,据理力争的勇气和态度值得所有站长学习。

Continue Reading

渐进封锁

外交部说:中国的互联网是开放的。

可是,竟然容不下一个Google。

中国大陆对Google的封锁可谓处心积虑,先有媒体抹黑,后有监管部门驱逐,接着技术手段封锁,现在连SSL也不放过。

人民日报刊载署名为“网友”的评论文章,其作者使出吃奶的力气使劲摸黑Google,努力把Google描述成19世纪那个贩卖鸦片的东印度公司,说它强行向世界输出美国式价值观。人民日报还真有这样敢写不敢认的作者,这也难怪,文章用东印度公司比喻Google,不也正好隐隐道出当今北京政府倒退回150年前闭关锁国的政策。

可惜偏偏这回Google推销的不是人人憎恶的鸦片,而是美国人的价值观。我们为什么要抵制美国人的价值观?仅仅因为它不是我五千年华夏文明演化出来的东西,仅仅因为它是个舶来品?可是我们延续千年的儒家思想,也曾被孔子周游列国四处推销。我们六十多年前就曾用舶来的马克思主义打倒了中国几千年来的传统。我们何以对马克思这个旅居英伦的德国人的价值观如此珍重,却偏偏对战胜英伦自立成国的美利坚价值观如此鄙夷?

是为摸黑,然后便是驱逐。

中国政府依法管理互联网。可是说到具体依据什么法,却没有一个“有关部门”的同志能说的清楚。这是中国特色,到底违反了哪条具体的法律,这条法律的执行界限在哪里,怎么解释,都没有详细的说明。要求政府给出具体解释,他们就说你“妄想凌驾于中国法律之上”,“置中国司法主权于枉顾”。终于Google屈居一国两制下的香港。

但这不是终点,互联网是连接的,还要禁止国民使用Google的服务。为什么一国政府要对一个商业公司下此毒手?就因为它不听话,就因为Google这家美国公司天真的认为应该依法办事。

于是方校长建设了防火长城。Google旗下的诸多优秀互联网应用已经被禁止,Youtube视频分享网站不能用,Picasa网络相册不能用,Blogspot博客服务不能用,Document在线文档编撰也被禁止。这些网站到底违反了那条法律,非常不问青红皂白,全站封锁?这个问题没有答案,因为答案总是一句泛泛而谈的“依法管理”。

最后一块阵地是Gmail。这是Google旗下一个SSL安全加密的电子邮件服务。很多人一直认为Gmail肯定是安全的,毕竟它的用户非常多,涉及整个电子商务领域。Gmail使用SSL安全加密技术,不能实现关键字审查,而如果完全封锁Gmail,就等于把依赖Gmail开展电子商务业务的人们逼上街头,加剧社会动荡不安。可是我们想错了,方校长使出了最流氓的行径。每一段时间自动断开Gmail的SSL连接,然后一段时间内无法访问。这会给人一种Gmail不稳定的假象。如果商务人士不满Gmail的断断续续,就会改用其它电子邮件服务,而大多数人都放弃Gmail之后,政府便可堂而皇之地封锁Gmail。

这是国家级防火墙的又一次升级。现在是针对Google的https连接,下一步很可能针对所有的加密连接。也会以后会对SSL握手直接做出拦截。届时中国的互联网将是一个巨大的局域网,与外界的联系,只能通过审查系统监视下的无加密实现。

Continue Reading

中国不需要不投反对票的人大代表

最近翻看新闻,一条题为《“最老”人大代表申纪兰:55年从没投过反对票》的消息映入我的眼帘。从第一届人大开始,到本届人大,80岁的申纪兰一共当了55年的人大代表。面对记者,她自己认为最自豪的事情竟然是“从来没有投过反对票”!一个人大代表,代表自己选区的千百万人民群众,来到首都参加人大会议,监督审议政府工作,参与公共政治生活,居然从来没有投过反对票!这算什么人大代表?她到底是人民的代表还是奴才的代表?

新中国的历史并不一帆风顺,经历过大跃进,经历过大饥荒,打击过右派,闹过文革,后来又经历了改革开放,经历了89学运,加入了世贸组织,才走到今天。新中国60多年的历史,发生过许多次人道主义灾难,有过许多次意识形态论辩,在跌跌碰碰中成长。作为人大代表,不能代表自己选区的群众,在人大会议上据理力争登高一呼也就罢了,总得用好自己手中的选票,尽力避免不幸的发生才是。

考虑到中国的政治环境,尤其是建国后30年的政治环境,反对党中央的决定就意味着政治生涯的终结,甚至还会遭到迫害,不投反对票尚情有可原。然而如此人大代表竟然非但不以之为耻,反而引以为荣,却真是全国人民的悲哀。中国不需要不投反对票的人大代表。

中国人民需要的人大代表,是深入群众的代表,是敢于为人民说话的代表,是善于发现和纠正政府工作缺陷的代表,是真正愿意在人民代表大会制度框架下推动社会民主自由公平进步的代表。

Continue Reading

友爱部停止服务原因分析——FastCGI模式下PHP可能因长进程中断服务

今天晚上发现无法打开友爱部的中文圈主页,就连桄欣结的博客站点也无法打开。翻墙之后重试,结果发现依然打开不能,看来不是因为GFW发力。于是用SSH远程登录服务器,检查系统资源使用状况,发现内存使用533MB,CPU占用12%,均属正常范围。又检查网络套接字状况,发现有20个到64.71.130.98的连接处于CLOSE_WAIT的状态,其他连接均在两个以下。看来也不是网络Socket连接数用尽的原因造成停止服务。重启lighttpd之后,发现服务恢复工作,但是大约过了五分钟,就无法刷新界面,一切和之前一模一样,浏览器提示正在连接,然后一直等到超时。进一步检查了Unix Socket状况,找到了根本原因:今晚twitter.com出现中断服务状况,部署在友爱部的twip软件耗尽了fastcgi的所有守护进程,所以PHP页面均无法打开。

这得从lighttpd和PHP的工作模式解释。PHP并没有为lighttpd这种服务器设计的独立模块,而是通过FastCGI接口实现的一种CGI方式的协作。lighttpd启动的时候会调用PHP的CGI模块,然后启动一个FastCGI进程,这个进程会根据配置文件中的描述,启动20个PHP解释器进程。然后lighttpd把所有以.php为后缀的请求都转发给FastCGI进程,后者则会自动选择一个空闲的PHP解释器进程来执行PHP程序。这种工作方式有点像Worker模式的服务器。本来PHP脚本的执行时间很短,这种多路复用的方式可以保证在最小进程创建、销毁开销之下执行PHP脚本,以提高响应速度。但是这种模式有一个漏洞,如果某个PHP脚本的执行时间不可控,在较高并发访问状况下,可能会出现所有PHP解释器进程均处于忙碌状态而无法使用的状况。这种状况一旦发生,会导致其他正常PHP脚本也无法执行,因为FastCGI不能分配任务,只好等待。而客户端的症状就是网站假死,客户端一直提示“正在连接”或者“正在等待响应”。

今晚的情况就是如此。友爱部的Twip是一个用CURL库转发Twitter请求的程序,它的执行时间受Twitter服务器工作状况影响,今晚赶上Twitter停止工作,于是大量CURL请求无法满足,处于等待Twitter响应状况。Twip的程序脚本耗尽了所有空闲的PHP解释器进程之后,网站上的其他PHP页面也就无法打开了。

目前我还没有想到解决这个问题的有效办法,毕竟所有PHP程序之间是共享FastCGI的,切换成Apache这样的服务器目前也不可能。降低配置文件中CURL请求超时时间是一个办法,但是不能从根本上解决问题。

Continue Reading

這個春節比較冷

春節期間一直沒有發文章,一來是因為天氣冷,不願意打字,二來是這個春節過得實在單調,沒什麽特別值得記錄的東西,再就是一些個人的瑣事已經寫進日記本,也沒有必要拿出來曬。

剛回家的時候很冷,下了飛機沒有脫去外套,全然沒有以往春節回家時渾身冒汗的感覺。這樣的天氣對於沒有暖氣的南方,自然還是躲在被窩裡寫寫畫畫,或者用手機上上QQ逛逛校內比較好。也有時候跑到外邊去跟朋友們聚聚,人多總算暖和一些,如果自己一個人在家,我實在不願意坐在電腦前面,頂著動的全無思想的大腦寫文章。

後來過年的那幾天終於還是暖和起來了,可以穿少少出門打球,也可以逛逛商場,或者同平日裡散在五湖四海的同學們喝茶看電影。走親戚串門本來也少不了,奈何跟我年齡相仿的小弟跑去當兵,回不來家。其他親戚全是長輩,也沒有什麽共同話題,每次見面問的最多的就是有對象沒有,面對這種問題總是頭大得很。每每同學出來碰頭,說起家長,大家都煩這個問題。更有推友分享:剛上大二的時候,鄰居家女同學結婚生娃了,媽媽教育道“千萬別學她,要以學業為重,不要談戀愛”;到了畢業工作,媽媽總是抱怨“妳看鄰居XXX,孩子都會打醬油了,妳還不快點,想當‘剩女’啊”。唉……成長的煩惱!

從回家那天起,老爸總不停旁敲側擊地試探,想給我介紹對象。開始我還裝傻,不做正面回答以免麻煩上身。終於有一天頂不過老爸的絮叨,乾脆挑明了直問,他才抖出消息,有個XX校長介紹的XX局長的女兒(聽到這複雜關係我已經暈掉)也在北京,中央財經大學畢業的(千萬別讓我找文科生啦,很難溝通的)……還說什麽就算不處對象,找個回家的伴也好。末了老爸丟下一句:你有無興趣給個準話,我好答覆人家。頓時我感到形同大赦,斬釘截鐵做出否定答覆,這下世界清靜了。不料自那天開始,老爸就不停旁敲側擊地試探,想瞭解我是否已經有女朋友。

婆婆媽媽這個詞語在我家行不通。喜歡逛商場買衣服的是我爸,喜歡在菜場討價還價的是我爸,家裡做飯的是我爸,喜歡嘮嘮叨叨說個不停的也是我爸。倒反我媽比較爽快,做事情條理清晰,雷厲風行。看來婆婆媽媽的性格是誰做飯誰養成,可以理解為柴米油鹽的燻陶。

放假前考慮要做一個團隊內部使用的任務管理系統,把軟件項目、結構、人員、工作任務整合起來。設想比較宏大,考慮了許多特性。用一句話概括基本上就是以時間線為消息交互平臺,以結構、團隊、計劃、缺陷為項目組織方式,以工作表為個人工作安排輔助工具的一個系統。在家期間只畫了一些支離破碎的介面草圖,設想了一些典型的Use Case。不過看圖就覺得這個東西很複雜,尤其是瀏覽器端的邏輯比較多,不可能用以前的開發方式實現。

飛到北京之後突然想明白了。CRUD式的開發已經不能使用,而應該讓服務器端服務化,瀏覽器端單元化。把服務器端設計成一堆Ajax的API,服務器腳本也不需要複雜的面向對象,只要檢查數據合法性并組合成SQL就好。瀏覽器端則把不同的功能分散在不同的單元中,然後用DIV構建介面框架,用JS分別實現具體功能。這樣作為入口的PHP腳本只負責寫一堆configuration,綁定到入口PHP的template負責介面框架的DIV構成,和加載必要單元的JS就好。單元化的JS腳本被加載之後,自動完成自己的初始化,用Ajax聯絡服務器腳本API實現具體功能。

考慮明白這一層,基本上整個構想都可以實現,用純Web技術實現RIA倒也不是癡人說夢。

Continue Reading