This blog is rated 🔞, viewer discretion is advised

PyPy performance post is very misleading

PyPy performance post is very misleading. PyPy only has better printf performance than C in the particular case where you print the same expression twice. Specifically, their JIT figures out that it can decode the value only once instead of twice, which C cannot do because libc's printf is all run-time, so PyPy is about twice as fast since decoding is almost all of the work. If you change the test to anything where you're printing different expressions, PyPy is no faster than C. It seems to me that this post was either intentionally misleading or they didn't understand why their compiler was doing so suspiciously well on this benchmark (any time you're handily beating C is cause for suspicion). Moreover, as soon as PyPy has to print to an output stream instead of just creating a string in memory, the performance tanks becoming 7x slower than C.

via

Posted

archive

Chromecast的操作系统和硬件是什么

前几天的chromecast签名绕过破解)

Is it really ChromeOS?

No, it’s not. We had a lot of internal discussion on this, and have concluded that it’s more Android than ChromeOS. To be specific, it’s actually a modified Google TV release, but with all of the Bionic / Dalvik stripped out and replaced with a single binary for Chromecast. Since the Marvell DE3005 SOC running this is a single core variant of the 88DE3100, most of the Google TV code was reused. So, although it’s not going to let you install an APK or anything, its origins: the bootloader, kernel, init scripts, binaries, are all from the Google TV.

简单的说,有Android的内核,没有Bionic / Dalvik。没法装apk。Chromecast的功能是作为一大坨二进制包直接当膏药粘到一个精简版android上的。

拆解Chromecast的硬件是:

  • AzureWave AW-NH387 802.11 b/g/n WLAN, Bluetooth 3.0, and FM combo module

  • Marvell DE3005-A1 System-on-a-Chip。

  • Micron MT29F16G08MAA 16Gb NAND Flash memory

  • 512MB of low-voltage Micron D9PXV DDR3L SDRAM

SoC的资料很少,业界猜测是1.2GHz ARMv7双核,从512MB RAM 2G ROM 来看,这35刀的货就是个废品啊。还是我大MTK和Allwinner是业界良心。

另外Chromecast的镜像功能,也是用websocket发明。NIH综合征很严重。

Posted

archive

关于BREACH/CRIME的一些思考

最近很火的一个问题就是暴破TLS/SSL的 BREACH 攻击。我觉得有一些解决办法:

  1. hack一种兼容gzip,但是能对内容进行adaptive compression的技术。比如把用户输入不纳入Huffman coding范围,只压缩页面的其他部分。这样无论你在user input 做什么花样也不能影响最终conten length

  2. csrf上做文章。由于大多数场景下,web framework是需要保证 csrf 是 per session的。目前基本都是服务器生成什么csrf,客户端下一次就需要传入一模一样的。我们可以发明一种聪明的技术,给客户端的csrf加入一些per request的变长noise,需要通过特定算法,最简单的比如XOR,才能还原csrf。其中这个变长的noise不是随机生成,因为随机生成可能被概率统计出noise level然后过滤掉,而是根据用户输入用一种变长散列生成的。比如用户输入为空,csrf为e0bc6e08a2fda853eef,用户输入为 user@gmail.com,csrf为 b594e902c7fe6b1748d13aefaf63a ,但是实际服务器端的csrf都一直是 04b58236f5 。

目前业界的mitigation我觉得比较搓:

  1. 禁用gzip。这个没意思了。
  2. 给html添加一些随机padding垃圾数据。这个不是等于禁用了gzip么。浪费空间浪费传输
  3. 在http头做文章。因为gzip只影响http body。这个缺点是需要js。兼容性不好
  4. 禁止频繁请求。这个最直接。哈哈。

Posted

archive

肉鸡国真的有那么多网络部队天天去黑美帝吗?

NSA笑而不语啊

看到XKS 真心吓尿了!PRISM什么的比起来弱爆了。

这一系列事件,最让人感到恐怖的,不是gov的强大能力,而是Snowden这个私人第三方承包商,一个在夏威夷年薪20万美元的网管,也就是乙方,非编制,派遣工,都能接触到这么强大的工具。

其实GFW的运营商,启明星辰,不也是这么屌的么。参考Freebuf的大作:《揭秘黑客界:黑吃黑到底谁吃谁

全世界的这些工具,被非公众利益滥用,也不远了。美帝当然就是好莱坞和各种版权组织来用NSA一阳指戳死做盗版的,肉鸡国当然就是各种河蟹,其实就是各级通管局用来收黑钱的工具罢了。

Posted

archive

MTK三卡三待?

《MTK首推三卡三待》

http://news.mydrivers.com/1/270/270542.htm

国际厂商LG率先采用了该方案,并且搭载三卡三待方案的LG Optimus L4II已经在巴西上市,真够迅速的。

MediaTek Intros Triple-SIM Platform for Android Phones

http://www.pcmag.com/article2/0,2817,2422336,00.asp

LG Electronics utilized MediaTek's dual-SIM platform for its Optimus L4II smartphone, currently selling in Brazil.

http://www.mediatek.com/_en/03_news/01-2_newsDetail.php?sn=1114

The cutting-edge solution, which comes in response to widespread demand for multi-SIM devices in emerging markets, was recently commercialized in Brazil by Optimus L4II smartphone from LG Electronics.

Posted

archive

alternate-protocol:80:quic

今天发现youtube 的视频cache服务器支持UDP 上的 QUIC SPDY了。

accept-ranges:bytes
alternate-protocol:80:quic
cache-control:private, max-age=24288
content-type:video/mp4

好玩的是youtube的URL有:
fallback_host:tc.v11.cache6.c.youtube.com

Posted

archive

为什么很多机器不能升级Android 4.3 (4.0/4.x/ICS/JB)

Android 4.3发布了。最好用的功能不是媒体报道的那些,而是可以对每个app进行单独的权限设置

今天在reddit上看到一个帖子,解释了为啥很多Android机器不提供ICS和JB升级,我蛋痛,所以就来翻译下:

  • OEM不直接从Google得到Android的源码
  • 做SoC芯片的厂商可以从Google得到源码,然后开发BSP(Board Support Package)。里边包含了驱动和优化
  • BSP就交付给OEM厂商,厂商就可以给设备发布Android升级包。

所以。现在的手机厂商都在等SoC厂商发布Android 4.3 BSP

例如,高通(Qualcomm)前不久宣布对Snapdragon S3芯片放弃Android 4.2.2的BSP开发。所以HTC就不得不宣布 One S 不再有升级。骚尼(Sony)的Xperia S, SL, Acro S 和 ION 同理。因为都是基于 S3 SoC

如果大家还记得的话,Thunderbolt 和 Sensation (包括LTE版本) 都用的是 Scorpion MSM8655,高通宣布不继续支持,所以用这个芯片的OEM也没得玩了。(译者注:狗日的海信EG900,原来我错怪你不能升级JB了)

但是三爽(Samsung)是个例外。他们本身是SoC提供商(Exynos系列),自身本身也是OEM厂商。所以自家的嫡系真是碉堡了。不过Galaxy S II 的 LTE 版本用了高通的Scorpion SoC,也就不再更新了

虽然这个系统不完美,但是这就是业界的现状。

译者补充:为什么G家亲儿子可以升级,因为G家牛逼,可以跟SoC谈判,保证超长时间的芯片支持周期。

tl;dr 一句话:艹你娘的蛋的高通。

Posted

archive

Google ChromeCast的问题

目前我觉得的问题:

  1. 授权问题:

You may not publicly distribute or ship your Google Cast application without written permission from Google, per the terms of service described below

  1. 无论是pad/phone通过wifi,还是红外遥控,延迟是否巨大?
  2. 是否支持外挂字幕?.ass 特效字幕?
  3. 是否支持音频输出?
  4. 是否支持HDMI passing through

同时,我越来越觉得Google像Microsoft了。很多 NIH 综合症。Airplay不支持也就算了,现有的Miracast,DLNA都被华丽的无视了。非得自己搞个专有的websocket协议。

Posted

archive

Sally-Anne test

好吧,看了这么久acfun居然学到了姿势

这是一个心理学和认知学的实验。Sally-Anne test

Sally和Anne在同一个房间

Sally有一个盒子

Anne有一个篮子

这两个容器都是有盖不透明的。

现在Sally把一块饼干放在盒子里,然后出门离开了

Anne 随后,把饼干从 盒子 取出来,放到自己的篮子里,盖好。

一会儿,Sally回到房间。这个时候她去寻找自己的饼干,请问Sally会去 盒子 还是 篮子 寻找?

心智不成熟,小于四岁的孩子会回答:篮子。

其他参考:

译言: http://article.yeeyan.org/compare/322659

http://www.huanqiukexue.com/html/newgc/2012/1031/22806.html

Posted

archive

android cid

this pdf

http://events.ccc.de/congress/2010/Fahrplan/attachments/1781_27c3-android-geolocation.pdf

注意看截图:

20801,其中MCC=208,MNC=01
LAC=0403
CID=61E00

有这个信息之后,我们打开国产CID定位工具:

http://www.minigps.net/map.html

就得到了基站位置。

在自己手机上也可以直接通过下边命令来即时刷新:

  # logcat -b radio RILJ:D | grep SM | grep REGISTRATION_STATE
  # logcat -b radio RILJ:D | grep SM | grep OPERA

当然,这些信息可以通过Android的 ##INFO##直接看到。

Posted

archive

《以理服己》里边的逻辑bug

想去瞅瞅看看 李笑来 的 bitcoin 讲座,结果发现尼玛1200大洋收费的。屌丝就默默逆了。但是看到他其他讲座,有个叫《以理服己》,于是看了会儿。其中第二课第二页,出自:

http://www.duobei.com/room/course/1057408405

大概就是说,生男生女全靠男性。跟女性无关吧。

原因是男性染色体是 XY,女性是 XX,所以全靠男方决定。

这个说法是错误的,逻辑有bug的。

原因很简单,男性不是只提供一个X,或者一个Y,而是一次性一大批好几亿个。一个精子在皮质反应(Cortical reaction)之前,活性和前进速度是受到环境影响的。这个环境是否或者对X,或者对Y有选择性偏见呢?这个不能完全否定吧?

一个结果(result) 是由提供者(provider)和选择者(filter)共同决定的。

input -> process -> output

第二个不算bug的bug,

the Flat Earth Society,这个不是个普通社团,而是一种类似 trolling is a art 的搞笑的人。你去跟他们争就输了。

Posted

archive

RSS · Next

YY一下下一代RSS应该提供怎么样的技术:

  • share aggregation。跨平台跨服务的分布式分享聚合,用于分析和排名
  • inline comments in readers,RSS里提供一个特殊的字段,用来标记Disquz/G+/Twitter的嵌入评论框的id。阅读器可以选择提供一个UI按钮嵌入或者弹出评论窗口。Wordpress这样的生成平台也应该提供一个评论交互API
  • 支持HTML5 Push和浏览器notification。
  • RSS over APNS/GCM/MPNS
  • 或许应该有一个统一的JSON feeds标准?

Posted

archive

[zz]百度地图的研发们

http://www.douban.com/note/284760511/

三鲜
主页 广播 相册 喜欢 活动 发豆邮
去年我开始有抬头纹
2013-06-27 01:11:37
今天发现,百度地图的研发们都玩起新浪微博,互相 at 得不亦乐乎,看样子是经常齐刷刷地去登山、长跑。在我心中他们都是同一类的人,龙叔也如是说。

这种感觉很奇怪,我离开快一年了,他们看上去变得更凝聚温馨。以前我高嗓门的架构讲座、开会时候对项目代码的怒斥,突然感觉就像只是破坏团队氛围的东西。记得我写的那个树状脑图,讲模块劣化的现象、原因、改进措施,21寸显示器两屏才显示得完,经理看了一个劲的笑,其他同事充满不理解不赞同,有人还公然拥护全局变量,我操。

去年我一个人重构搜索后端,披星戴月,脑浆迸裂。说是重构实际上就是重写。除非当时内部的人,很少人愿意相信地图搜索引擎的代码的所有函数都只传一个参数,而这个参数就是传说中的全局变量,每个服务模块这个全局结构体的成员变量大概四五百个吧,是的真的就是这样。你可以说出这种代码的弊端有啥吗?函数完全无法复用?函数功能不明确?函数涉及的变量不明确?函数相互依赖导致少调用一个就coredump?操,你完全错了,这些都不是重点,这样搞法会导致代码压根就没有函数的概念,每个「函数」都上千行,逻辑完全混乱、bug 横飞,没任何人知道程序真正做了什么,没人敢碰别人的全局变量,同样的数据只敢在刚接收到 request 的时候 copy 一个过来用,最终这个全局结构体就有了这样的变量:query, query1, query2, queryword, word, QueryWord, origin_query, search_query 等不甚枚举,各有各的归一化,各有各的分词,各有各加载的资源。

写到这里,发现沦为吐槽,其实我不喜欢在豆瓣写槽文。算了继续。

牛逼的是,对于这样一个还没引入用户行为调权的复杂系统,它竟然不是幂等的。也就是说,对于同样的请求,它结果是随机的。为啥随机?因为各种没初始化、各种变量混用。你说为啥现在线上百度地图的搜索是稳定的?你让那帮家伙把 cache 关了试试。其他不随机的 bug 就更不用说,那套 ranking 过程中全是整型溢出、double 被误转成 bool,鸡飞狗跳。

更牛逼的是,我重构的时候把那些扯鸡巴蛋的 bug 都修了,系统不再随机了,但是搜索质量下降了,PM 不让上线。这个现象倒是符合逻辑的,因为一旦系统在某个时期有 bug,之后的策略优化就会对这个 bug 有倾向性。当时项目排期很紧,其他几个人的项目都等着我重构完才能开搞,结果跟同事讨论之后决定让我去主动仿造原来那些 bug(是不是很厉害?是不是闻所未闻?),我一顿狂改之后搜索质量有所回升,但仍然达不到原来的效果。这时候唯一的出路大概只能加策略优化 ranking,但如果再经历几次立项、审批、测试沟通、写MRD/TDD,这次重构就彻底无法善终。万般无奈下我给偷偷调整了一堆参数,尼玛,搜索效果终于持平。

这时候又面临一个牛逼的事情。前俩月其他同事加的代码要 merge 到我的项目里来,diff 一下有上千行,我得看明白他们的逻辑才能穿插到新版来。又一轮闷头搞,途中又发现各种 bug,其中有个同事的函数让我很欣慰,因为它真的比其他人短,才十几行,不幸的是,他忘记写 return 了,于是又鸡巴是个随机的东西。

最终上线之前还被 OP 们摆了一道。OP 分为 searching 和 indexing 两堆人,我们需要更多的 searching 机器,还得约 OP 出来磨嘴皮子。这头 searching 机器申请还没个着落,那头 indexing 的 OP 又频繁找我谈,扯逼淡的是,我不知道他们想跟我谈什么,我敞开问那哥们就傻笑。后来才搞明白他们是想让我劣化 indexing 程序的性能,以降低机器闲置率,提高他们的 KPI。明白之后就再没理他们。

这个项目总共做了三个多月,比预期延了一个月。快结束的时候我经理离职了,结束之后测这个项目的 QA 也离职了。这坨新的东西不见得有多好,但可以称之为「可维护的」系统,代码量只有原来的 1/3,搜索性能提高50倍。

在某些部门,所谓优化搜索策略变成了研发人员乱搞的游戏,乱想一个法子,在代码堆里胡写那么几行,让 PM 评估个几百个随机 query,发现效果似乎提升了那么零点几个百分点,我操,立马上线!立马有 KPI!立马可以申请专利!

话虽如此,那帮同事都是纯朴善良的人,只是那个地方严重挫伤了我对技术的情感,所以后来选择离开。临走前又推了一次 code review 和 unit test,失败告终。在我看来写代码是工程师的基石,这个不达标其他都是扯逼蛋,代码写得有板有眼了,才有资格给我谈做项目、做事情、做人。工程师最终要的能力是「抽象」和「拆解」,这个百度很多人都听过,但是首先应该从代码上实践出来。百度人还喜欢谈「知行合一」,这个就是抽自己嘴巴的话。

本来想些的不是这些,先这么着,算是留个记录。

添加到豆列 分享到 推荐 98人 51人 喜欢 喜欢

Posted

archive

GNURadio, AirProbe, libosmocore for OS X 10.8 Mountain Lion

First you need to install Homebrew

Then you need to install GCC from XCode "command line tools"

  $ brew install gfortran umfpack swig
  $ sudo pip install  numpy Cheetah lxml scipy matplotlib
  $ brew tap ksnieck/homebrew-gnuradio
  $ cd /usr/local/Library/Taps/
  $ mv ksnieck-gnuradio/ titanous/homebrew-gnuradio
  $ brew install gnuradio
  $ brew install rtlsdr gr-osmosdr gr-baz --HEAD

There's like a shitton of dependency for GNURadio, you'll possibly need a fast Internet connection or wait.

Posted

archive

银行系统bug了?

@老赵
打了招行和支付宝两边的客服,确认了:招行这边扣款已经发生,支付宝交易也已经提交,但是因为从昨晚开始招行这边系统出错,支付宝已经堆积了大量从招行这边没拿过来的款项,已经收到大量客户电话,但需要到周一两边交易核对成功之后再处理。假如我着急还款的话,需要我再换一次,但千万不要使用招行。
(1)| 转发(5) | 评论(4) 6月22日 16:18来自新浪微博

@ACE1997:RT @Arctosia RT @jiezitui: 上海工商银行网络现全面崩溃,ATM等全面停止服务,工行内部系统一级抢修中……

Posted

archive

2013-06-20 发生了啥事

【银行大闹钱荒 宏观信号拒绝“放水” 】没见过隔夜上30%的交易员,人生是不圆满的。6月20日,疯狂的一天,足以载入中国银行间市场史册。当日银行间隔夜回购利率最高达到史无前例的30%,7天回购利率最高达28%。近年这两项利率往往不到3%

《央行择机推存款保险制度若破产每账户或赔50万》

第二件事:

http://www.solidot.org/story?sid=35250

今天(2013/06/20)下午三点左右,中国大陆的用户访问境外使用StartSSL、Thawte等提供的免费SSL证书作为HTTP加密访问方式的IP地址疑似被中国国家网络防火墙屏蔽。

陈少举(1916) Neutral 发表于2013年06月21日 11时22分 星期五
今天(2013/06/21)上午10点左右,有推友报告开始陆续解封。
我自己的也在11:15分左右解封。

感觉这次是一个技术警告(或称为技术示威),告诉大家墙目前具备了什么样的能力。

买证书去。

我补充一下这个情况:

  1. 墙可以伪造TTL返回让人traceroute/mtr感觉是国内省级骨干网,或者是出国最后一跳出了故障。这个因为Unix和Windows的初始默认TTL值样本太显著了。

  2. IP屏蔽是单向的。

Posted

archive

2007-2012 法国 高考作文 题目

法国高考叫 Le Baccalauréat,简称 le bac 。按照分科,三道题目任选一道。

2012年

文科

1、人们在工作中到底获得了什么?
2、是否所有的信仰都是与理性相悖的?
3、评点斯宾诺莎《神学政治论》一段关于“国家”的论述。

经济社会科

1、与生俱来(无法抑制)的欲望是否存在?
2、工作,仅仅就是为了做个有用的人吗?
3、评点伯克利在《论消极服从》中关于“公权力”的一段论述。

理科
1、没有国家(政府)我们是否会更自由?
2、我们是否有责任追求真理?
3、评点卢梭《爱弥尔》中关于“教育”的一段论述。

2011年

文科
1、人们是否可能证明一个科学假设
2、人类是否必然对自身估计过高
3、解读尼采的《快乐的知识》节录

理科
1、文化是否使人类偏离自然
2、违背事实是否仍可能坚持真理
3、解读帕斯卡的《思想录》节录

经济社会科
1、平等是否危及自由
2、比起科学,艺术是否不那么必要
3、解读古罗马哲学家塞内卡的《论恩惠》节录

音乐舞蹈科
1、自制力是否取决于自知之明
2、感受到不公正是否加深对公正的理解
3、解读尼采的作品节录

2010年

文科
1、对于真理(相)的追求是否可能没有利害关系
2、为了给自己一个未来,是否应该忘记过去
3、解释托马斯·阿奎那的《神学大全》节录

理科
1、艺术是否可能避免(不要)规则
2、快乐取决于我们吗
3、解释霍布斯的《利维坦》节录

经济社会科
1、某些科学真理是否有可能是危险的
2、历史学家的作用是否是评判
3、解释杜尔凯姆的《道德教育》节录

2009年

文科
1、语言是否背离思维(或:语言是否可以忠实地反映思维)
2、历史的客观性是否以历史学家的公正性为前提
3、评点叔本华在《作为意志和表象的世界》一书中的一段有关匮乏和欲望满足的论述:“欲望,也就是匮乏,是所有 快感的前提条件…所以,所谓心满意足不过是某种痛苦的释放。”

理科
1、期盼得到不可能的事情是否荒谬
2、世上是否存在任何科学都无法解释的问题
3、评点法国哲学家亚历西斯·德·托克维尔在《论美国的民主》中有关鼓励民众参与民主的一段文字:“因此,给民众 以管理琐事的机会,比让他们参与管理国家大事更能激发民众对公共事务的关心。”

经济社会科
1、从交换中我们能得到什么
2、技术进步是否改变人类
3、评点英国哲学家约翰·洛克在《人类理智论》中有关人的道德不是与生俱来的一段文字:“我承认,在违法分子的 社区内部,他们自己会遵守正义和平等的规则,但是,循规蹈矩并不是他们的天性,只是因为他们的社区内需要实行必要的规矩。”

2008年

文科
1、感知能力是否可以来自教育
2、对于活体的科学认知是否可能
3、评述萨特的《伦理学笔记》中的一段文字

理科
1、艺术是否改变我们的现实意识
2、演示是否确认现实的唯一手段
3、评论叔本华的《意志与表象的世界》中的一段文字

经济社会科
1、人们是否可以不受磨难而满足欲望
2、认识他人是否比认识自己更容易
3、评述托克维尔的《论美国的民主》中的一段文字

2007年

文科
1、若有所悟是否就是对于思想桎梏的解脱
2、艺术品是否与其他物品一样属于现实
3、解释亚里士多德在《尼格马科论伦理》中有关“责任”的论述

理科
1、欲望是否可以在现实中得到满足
2、脑力劳动与体力劳动的比较有什么意义
3、解释休谟在《道德原则研究》中的有关“正义”的论述

经济社会科
1、人们是否可以摆脱成见
2、我们可以从劳动中获取什么
3、解释尼采在《人性,太人性》中有关“德行”的论述

对比一下我们的:2013年江苏卷高考作文题:

材料作文:一群探险者去山洞探险,进入后点燃蜡烛,发现有一群蝴蝶,于是退出去了。过了一段时间,探险者们再次进入,却发现蝴蝶飞到山洞深处了,小小蜡烛影响了蝴蝶的生活环境。作文要求考生根据一点点细微的变化,自定主题。

还可以看看 我国1949-2012高考作文题

Posted

archive

WinRT绝壁是实习生赶工出来的。

证据1

证据2

这么多2b的错误,到处都是!真心怀疑是应届实习生做的啊!!!!

记得上一篇blog

Another reason for the quality gap is that that we've been having trouble keeping talented people. Google and other large Seattle-area companies keep poaching our best, most experienced developers, and we hire youths straight from college to replace them.

至于wns和mpns为毛区分成两陀米田共我就不吐槽了。这API设计更加奇葩的是:使用X-* 返回头作为返回成功与否标志。老夫写了这么多API没见过这么奇葩的。

微软真的不行了。赶快滚粗吧。

Posted

archive

bluetooth dongle blacklist otg android linux

贪便宜去淘宝买了个10元的USB蓝牙适配器

一查:Cambridge Silicon Radio Ltd

USB\VID_0A12&PID_0001&REV_1989

结果linux内核屏蔽了这个设备。

http://lxr.free-electrons.com/source/drivers/bluetooth/btusb.c?v=3.0#L96

  static struct usb_device_id blacklist_table[] = {
      /* CSR BlueCore devices */
      { USB_DEVICE(0x0a12, 0x0001), .driver_info = BTUSB_CSR },

所以如果你也有CSR芯片(BlueCore® BC7820™)的蓝牙,那么恭喜你,Android OTG和Linux都没法用。

当时觉得悲剧了。via

Posted

archive

绿色版JRE

Windows下一些程序打包进了JRE

一些没有。

对于没有的,可以共享嘛。导入下边的注册表

  Windows Registry Editor Version 5.00

  [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6]
  "JavaHome"="D:\\Media\\images\\yEd\\jre"
  "RuntimeLib"="D:\\Media\\images\\yEd\\jre\\bin\\client\\jvm.dll"

这样就可以公用JRE了。

via

Posted

archive

Google Plus is a piece of crap

That's what happens when you put together a bunch of Indian PM and Indian coders

  trace:CustomError
      at new Wza (https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw:607:24)
      at Lv.q.myb (https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw:1794:53)
      at Jda (https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw:113:214)
      at Ida (https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw:111:221)
      at ag.q.jd (https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw:771:425)
      at Jda (https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw:113:214)
      at Ida (https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw:111:221)
      at ag.q.jd (https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw:771:425)
      at https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw:141:63
      at $da.execute (https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw:797:81)
  context.location:https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en.MM2nmUD9sr4.O/m=b,s/am=AAHhGADElx2FYAJBBsgAAIAxAB-ggWQIklGAYP7_-397BHABAAAC/rt=h/d=1/rs=AItRSTN8InaGcWBwBsF5rTap5RX6vnBjtw
  context.top.location:https://plus.google.com/u/0/
  context.buildLabel:es_oz_20130519.13_p2
  context.version:oz.home.en.MM2nmUD9sr4.O
  context.historytoken_:
  context.propertyId:119
  context.nwTimeSinceLastLoad:140591
  context.nwIsWidgetVisible:false
  context.nwCurrentUnreadCount:0
  context.nwNotificationTypes:2,3,16,20,24
  context.call-stack:Sda(object, object, null)
  Qda(object, null, object)
  mg(object)
  Jda(object)
  Ida(object, false, object)
  [Anonymous](object)
  [...circular reference...]

Posted

archive

Python zfec howto/example

To install

  $ pip install zfec

Suppose I have two blocks of data and want a third block as redundancy

  >>> zfec.Encoder(2, 3).encode(['ab', 'cd'])
  ['ab', 'cd', 'en']
  >>> zfec.Decoder(2, 3).decode(['ab', 'cd', ], [0, 1])
  ['ab', 'cd']
  # somehow lost the second block, use the third block the recover
  >>> zfec.Decoder(2, 3).decode(['ab', 'en', ], [0, 2])
  ['ab', 'cd']

In the above example, k=2 and m=3

ref: https://pypi.python.org/pypi/zfec

btw Trivial secret sharing

  secret = 123
  a, b, c = [int((random.random() * 256)) for x in range(3)]
  d = map(xor, [secret, a, b, c])

so 4 players has each a share of secret.

This is kinda lame... Shamir's scheme is much better

Posted

archive

get rid of example.com for Django's default site

Suppose you have the following model:

  class MyModel(models.Model):
      def get_absolute_url(self, *args, **kwargs):
          return '/show/%s' % self.pk

The "View on site" button on admin will always take you to example.com, which is bullshit.

Even if you override it with ABSOLUTE_URL_OVERRIDES in settings.py.

The solution is to fuck Django's default Site in your models.py:

  from django.contrib.sites import models as SiteModels
  SiteModels.Site._meta.installed = False

Posted

archive

比奥数题还脑残的Python题

下边的问题是在CPython interactive shell 里按顺序执行的,请在 下划线处 ____ 填上答案。

  >>> x = [1, 2, 3]
  >>> for number in x:
  ...     number += 1
  ... 
  >>> print x
  __________________
  >>> print 1 == True
  __________________
  >>> print 0 == False
  __________________
  >>> print 2 == True
  __________________
  >>> item = 'x'
  >>> print item == "y" or "z"
  ___________________
  >>> l = [1,6,4,2,3,9,4,6]
  >>> l = l.sort()
  >>> print l
  ___________________
  >>> ll = [lambda: n for n in range(5)]
  >>> print [l() for l in ll]
  ___________________
  >>> my_gen = (i for i in range(10))
  >>> print(3 in my_gen)
  ___________________
  >>> print(7 in my_gen)
  ___________________
  >>> print(2 in my_gen)
  ___________________

via

Posted

archive

微软到底出了什么问题

最近HN上有个关于Linux 3.1内核tickless新特性的讨论,然后一位微软员工,自称来自NT内核组,发个帖子抱怨微软:

See, component owners are generally openly hostile to outside patches: if you're a dev, accepting an outside patch makes your lead angry (due to the need to maintain this patch and to justify in in shiproom the unplanned design change), makes test angry (because test is on the hook for making sure the change doesn't break anything, and you just made work for them), and PM is angry (due to the schedule implications of code churn). There's just no incentive to accept changes from outside your own team. You can always find a reason to say "no", and you have very little incentive to say "yes".

Another reason for the quality gap is that that we've been having trouble keeping talented people. Google and other large Seattle-area companies keep poaching our best, most experienced developers,

More examples:
- We can't touch named pipes. Let's add %INTERNAL_NOTIFICATION_SYSTEM%! (Oh, and let's make %INTERNAL_NOTIFICATION_SYSTEM% inconsistent with virtually every other named NT primitive.)
- We can't expose %INTERNAL_NOTIFICATION_SYSTEM% to the rest of the world because we don't want to fill out paperwork and we're not losing sales because we only have 1990s-era Win32 APIs available publicly.
- We can't touch DCOM. Let's create %C#_REMOTING_FLAVOR_OF_THE_WEEK%!
- XNA. Need I say more?
- Why would anyone need an archive format that supports files larger than 2GB?
- Let's support symbolic links (Can I have a one on my review score now?), but make sure that nobody can use them so I don't get blamed for security vulnerabilities (Great! I got that one on my review score, and now I get to look sage and responsible!)
- We can't touch Source Depot, so let's hack together SDX!
- We can't touch SDX, so let's pretend for four releases that we're moving to TFS while not actually changing anything!
- Oh god, the NTFS code is a purple opium-fueled Victorian horror novel that uses global recursive locks and SEH for flow control. Let's write ReFs instead. (And hey, let's start by copying and pasting the NTFS source code and removing half the features! Then let's add checksums, because checksums are cool, right, and now with checksums we're just as good as ZFS? Right? Do I get a one on my review score now? And who the hell needs quotas anyway?)
- We just can't be fucked to implement C11 support, and variadic templates were just too hard to implement in a year. (But ohmygosh I turned "^" into a reference-counted pointer operator. Can I have my patent cube and one on my review score now? Oh, and what's a reference cycle?)

简单的说,就是NT内核

  1. 改进都被臃肿的官僚枪毙了。
    2 牛人都去Google了
  2. 做内核的都是现招应届毕业生。造轮子NIH综合症高发群体

在大学的时候也接触过微软技术体系,感觉是有牛逼的地方,有亮点,但是偶数代会把奇数代的技术否定掉。记得有个哥们花了很大力气学习翻译了.NET Atlas AJAX,结果beta一完毕,整个AJAX体系就变得面目全非了。

微软的内部已经死掉了。Wintel 没有希望了。PC也将继续没落。

btw 想起了一幅图

Posted

archive

n-body 舞蹈

看到这个demo:n-Body Choreographies v. 0.9

js写的太看了。赞一个。

其中很多模型我觉得比较好理解啊:

比如:

D(10,8/3) 这个可以看成两个质心互绕,其中每个质心就是5个球体。。。
D(10,5/2) 这个可以看成2个质心一个收缩一个膨胀
D(8,9/4) 也类似2个质心。。。

很多看似复杂的轨道把 trajectory 关了就发现简单规律了。人脑的模式识别真是个神奇的东西~~~~~~~~~~~~~~

让我想起了几天前fallark发的那个分解质因数的javascript

都是超赞的东西~

via

Posted

archive

PonyORM - python的新一代黑魔法级别ORM

简单的例子,来自官网

python的查询代码:

  select(c for c in Customer
       if sum(c.orders.price) > 1000)

通过PonyORM翻译成SQL:

  SELECT "c"."id"
  FROM "Customer" "c"
    LEFT JOIN "Order" "order-1"
      ON "c"."id" = "order-1"."customer"
  GROUP BY "c"."id"
  HAVING coalesce(SUM("order-1"."total_price"), 0) > 1000

以前觉得peewee的查询语法很clever,比Django那种丑爆的 price__gt=1000 好出一条街。那么PonyORM就超出其他python ORM一条银河系了。

这个PonyORM的黑魔法在哪里呢?

  1. 首先select(x for x in ...) 这是一个generator comprehension,和list comprehension不同的是,返回的是一个惰性求值的生成器,于是
  2. 该表达式bytecode可以反编译
  3. 把Python的AST翻译成SQL的AST
  4. 分离和优化查询。
  5. 把SQL AST生成为特定数据库的query
  6. 执行SQL query
  7. 把返回构造成python对象,并且缓存。

出自PonyORM开发者 u/amalashkevich。更加详细的黑魔法解释可以在stackoverflow上看到。

可以说Peewee和PonyORM的设计才是优雅的。但是PonyORM更加高级,基本接近了LINQ和超过了Hibernate HQL。

顺便提一下,有一个另外类似的ORM——PQL,用于MongoDB:

比如:

  pql.find("a > 1 and b == 'foo' or not c.d == False")

翻译成MongoDB的查询:

  {'$or': [{'$and': [{'a': {'$gt': 1}}, {'b': 'foo'}]}, {'$not': {'c.d': False}}]}

很可惜它是基于字符串的翻译,而不是原生python表达式。

其他讨论

Posted

archive

I/O模型

I/O模型
看了这个帖子,归纳了一下自己理解的 I/O 模型,不知道对不对。

下边我们假设这样一个场景:

我 去食堂打饭。需要从3个得到3样东西:4两米饭,回锅肉,素菜。

  1. blocking: 打饭的人多啊,哥一直排队等,知道买到3样东西完毕。
  2. non-blocking 去食堂一看,卧槽,那么jb多人排队,算了不吃了。这里的我就是一个 fd (file descriptor),这样做急性子的人就叫做 O_NONBLOCK 属性。如果你尝试让一个急性子买饭,人少还好,人多了他会直接抛出一个异常报错。
  3. sync 先买米饭,再买回锅肉,再买素菜。如果临时回锅肉卖完了怎么办?等食堂师傅一直炒出下一锅为止。而且必须先买到回锅肉再买素菜!
  4. async 哪个窗口人少就先买哪个,哪个窗口先出锅就先买那个。

再说说unix 5种IO模型:

  1. 复用 (multiplexing): 寝室5个好基友一起去买饭。到了食堂一看卧槽这么多人,于是都纷纷叫你帮买了。这样,你就作为一个调度器被复用了。窗口人多,菜也不全,就先看到有啥就先买着呗。没有就傻等呗。
  2. SIGIO 我觉得在窗口傻等不行,打通了炒锅的师傅,他们每出一道菜,就通知我一下,我看看有没有自己需要的。你作为一个上菜的信号的接受回调,这样,你就可以一边在手机上看YY小说一边等上菜了。但是比如TCP这种SIGIO信号居多的菜,你监听了一会儿就觉得快崩溃了!

Posted

archive

关于码畜的定义

码农的定义就不用说了。

码畜的定义:

> If you answer to managers and build CRUD apps to support their careers rather than your own, then you're not a professional.

如果你的职业生涯就是给你的上级写CRUD应用。那么你就是码畜。

via

Posted

archive

ITU这个2b,让人不吐槽不舒服。

话说E.164这个标准还是挺重要的。电话国家区号。比如中国是 +86

好吧。我们去看下官网:

http://www.itu.int/itudoc/itu-t/ob-lists/icc/e164_763.html

卧槽,哪里可以下载???????

查看源码——有pdf和doc下载。。。。。但是页面上没有????

用F12开发者工具一看,卧槽,尼玛居然需要水平滚动,下载icon在页面最右边!!!!!!!body的水平width是1910px!!!!!!我了个大艹!!!!!!

尼玛水平滚动也就算了,footer文字为毛position根据窗口固定?

好了。下载pdf ,一打开:

尼玛逼的,怎么搞技术的都这么脑残,不懂 natural sort 呢?

后来发现为啥不用natural sort了。这尼玛坑爹的国家区号是变长的。

+123 123456
+12 3123456

可能是两个来自两个国家的不同号码,这个没法区分。

怎么办?ITU这帮聪明人想了个办法:

比如 0 - 9 个位数区号,只有 +1北美 和+7毛熊。

然后没有1或7开头的二位数、三位数区号。

这设计让人泪流满面!!!!让我想起了牛逼的兲朝IPv9网络

tg还曾经让 ITU 这个婊子去把网络审查标准国际化。

Posted

archive

365icl.com 的通讯

ipaddr=118.123.8.95
port=8000
ipaddr_auxiliary=125.64.16.139
port_auxiliary=8000

分析协议是件蛋痛的事情。

国产软件是多么不靠谱。。。。自带一个MapInfo MapX的地图组件,搞得客户端飞JB大。。。。

Posted

archive

对于通讯的一些感受

今天地震,然后家里就断网了,就无聊听电台。然后就听了下350MHz - 370MHz。一开始以为是跳频,后来发现是多频道时断时续而已。一些感受:

我觉得普通JC是最苦逼的职业。基本就是被总台呼来唤去的民工。半个小时处理的事情基本就是解决停车纠纷啊,菜市场打架啊,银行卡被盗刷500元啊之类的鸡毛蒜皮事。真心蛋痛啊我日。

模拟信号语音交流感觉在“微信”时代真的落后了。

我们需要一个更加原子化、更加 IP 化的交流通讯方式。总台可以PUSH任务到人员,人员可以update情况,这一切需要一个更加优良的 UX 设计。我观察到比如一个很苦逼的事情就是手台里说手机号码。。这个在21世纪是很尴尬的。从市民报告,到总台分配,到解决,都应该数字化。

前几天看到reddit众在互相通气Boston PD的scanner,后来mod出来阻止这种严重泄密危害警员安全的行为。但是同时也感觉别人社会发达,居然有人把scanner做成了Internet Radio向所有人开放!

加上今天地震的一些报道,我觉得这个社会的信息化还有很大发展空间。感谢伟大的MTK,智能终端的普及指日可待,智能社会正在以势不可挡地到来。

个人觉得码农要以时代责任感去下岗一大批吃干饭的社会工作文科生。

Posted

archive

Re: python标准库貌似没有实现链表?

发信人: draculalord ( 嗯?), 信区: Python
标 题: 也谈链表及其他Re: python标准库貌似没有实现链表?
发信站: 水木社区 (Mon Mar 21 18:49:46 2011), 转信

实际上刚开始学习一些高级语言的时候我也有同样的疑问,而且即使有链表对应物的语言,链表常常也很少被实际使用。
如果是在国外听数据结构的课,老师一般会警告你这只是一个理论概念,实际应用应该实际考察,在通常情况下链表不是一个很好的结构。
通常链表会作为一个很好的反例,告诉大家脱离实际硬件环境来谈论所谓算法复杂度是没有任何意义的。
这是因为,链表已经不适合当今的计算机硬件发展。当今的计算机硬件对内存是否连续更为敏感,而链表恰恰会破坏这种顺序读取。
由于locality很差所以常常造成page fault和cache miss
这也是为什么大多数教师不再推荐使用链表的原因。而且现今的硬件内存拷贝实际相当迅速。
并且python的list算法不是通常的单项表,也不是通常的数组。
具体可以看这里:http://wiki.python.org/moin/TimeComplexity
在List末尾append/pop都是O(1)的,
如果要在头部或者中部插入是O(n),任何破坏连续性的操作都会被要求realloc,所以任何此类操作都是O(n)
但是当今的常用硬件,使用C写的链表和python的list,在insert的时候只有n>50000才让链表比list快那么一点点。
这还没有考虑其他实际操作的复杂度。加上前面说的破坏locality,导致链表完全没有吸引力。在对象特别多的时候通常我们直接抽象它为数据库,也不要去想什么链表了。

在需要用到linked list特性的地方,比如常常需要从头部append或者pop
这时候有python的deque. (这里我记错了,特此更正,deque如果做insert还是会导致内存拷贝/移动,这里面的关键思想就是目前硬件的内存拷贝相当快,不是相当长的东西都可以接受)
deque也不是通常的简单数据结构,它是经过认真权衡过后得到的一种混合式数据结构。
他是一个链式块结构,每个块包含62个对象,以此来平衡对locality的优化和对push, pop的优化。有人问为啥是62个而不是其他数:那是因为deque是个双向链表,一个节点64个指针,一个指向前一个指向后,剩下就是62个指针用来指向对象

要做到对insert到中间的优化是用btree和array结合的办法,有个第三方包blist
但是我估计很少有应用会真正用到这个。insert是O(log n)
http://pypi.python.org/pypi/blist/

其实python是大师设计的语言,他们来决定底层具体的数据结构,作为一般人,你没有必要去质疑大师们精心设计的东西。
如果你真的对性能有很大要求,python也许并不适合你,python不是作为纯粹针对高性能计算诞生的东西,
他是一种胶水语言,它只对常见的List长度,常用的算法结构进行优化。他希望达到的目的是把现实的应用抽象出来,让使用者不用关心具体的数据结构和算法。
pythonic是一种面向大众的编程态度

如果你要用它来做其他事情,可以看看有没有你需要的第三方模块,或者可以用C来实现自己的一个模块,python本来就是C写的,所以这实际上也一点不困难。
比如python里面没有一个数据结构是能用来很好表示数值运算中使用的大型矩阵或者数组的,这时候就诞生了第三方包:numpy

via

Posted

archive

新闻是个坏东西

  • News misleads
  • News is irrelevant
  • News has no explanatory power

    The more "news factoids" you digest, the less of the big picture you will understand. If more information leads to higher economic success, we'd expect journalists to be at the top of the pyramid. That's not the case.

  • News is toxic to your body
  • News increases cognitive errors
  • News inhibits thinking
  • News works like a drug
  • News wastes time
  • News makes us passive
  • News kills creativity

via

Posted

archive

听水车们讲大数据在国内的发展

发信人: Nineteen (..), 信区: Database
标 题: Re: cassandra集群的去中心拓扑真是帅啊
发信站: 水木社区 (Sat Mar 9 10:03:09 2013), 站内

就像@immars提到的,开源项目们在一两年后开发出来的东西比论文原型在性能上差了一个层次,其实不仅仅是性能,其他方面差得会更多。

然后其他公司一看,不错,有东西能应付应付需求,接着就开始大用特用,坚持个一两年,东西尽管被改个面目全非,但仅限于补丁摞补丁,在外围小刀,想深入大改?门都没有,老板们会说了,先满足业务需求。最常听到的说法是:tmd我们都要死了,你丫还想花那么长时间大改?

团队规模在“快死了”的状态中不断成长,成长的另一个原因是层出不穷的运维事件和用户“永远都没办法满足的需求”,话语权也变得越来越重。

集群规模越来越大,最后发现确实搞不定了,一边开始上各种歪招,比如云梯居然在优化jvm;另一方面开始组织力量研发自己的系统,后者三大互联网公司貌似都尝试过,百度的yangzhengkun,腾讯的zhuhuican和阿里的wangjian。

但是遇到阻力很大,阻力的一部分就来自于前面提到的“团队”,抢饭碗吗?另一部分则是互联网公司缺乏大型平台的研发经验,各种没耐心,各种弯路,各种交学费。腾讯和百度是属于交了学费退学那种。

阿里还在向前走,远没走到头,这也是为什么阿里云梯系统还在的原因,它不仅得在,还得加强,因为淘宝业务增长太快。

可以看看论文出来到现在多长时间了,如果有渠道,可以去了解了解google技术进步的速度,它跑得越来越快,差距越来越大,这不是成功打击了对手是什么

从另一个方面也容易理解,开源出来自己的系统加强竞争对手的技术基础设施吗?还没到共产主义社会。至于傍了大腿的项目们,人开源出来的从来不是它生产环境使用的现网系统,或者过时或者阉割。

至于有人说“这么说开源项目都是坏的了?”,不是这样,开源的螺丝钉、离合器、甚至发动机都不差,但是指望开源的空间站、宇宙飞船没有问题...还是算了吧,凑合用用就好,真有心,还是自己造。

发信人: penny1983 (一只熊猫,两种表述||熊猫永不受伤), 信区: Database
标 题: Re: cassandra集群的去中心拓扑真是帅啊
发信站: 水木社区 (Wed Apr 10 10:31:16 2013), 站内

开源实现没有靠谱的啊。

Paxos 算法和满足实际需求的系统之间还存在大量的鸿沟, fault-tolerant sytem 即

使写伪代码都不容易写对,Google开发chubby时候专门写了一个state machine
语言和相应的编译器,把用state machine 表示的算法转为c++,而且在chubby一致性检
验和容错方面投入了巨大的精力。

 Google的chubby一开始也是基于第三方商业数据库,但是由于商业库的replication问

题(bug,无法证明replica算法正确),google不得不自己实现kv db 用于实现multi-
paxos。这一过程也是一把辛酸啊,参加google的论文
Paxos made live-An Engineering View。

Posted

archive

1915年,北京 盆糕 【老照片】

国内把切糕的英语翻译说成 Xinjiang glutinous rice cake, nut cake,不如这个1915年照片名字起的好:Cake Of Millet & Jujubes。感觉盆糕和切糕差不多?

From Flickr via reddit

Posted

archive

reddit砖家说:共产主义是NP-complete问题,所以不可能实现,除非

除非P=NP

Economics is interesting because it is fundamentally the attempt to solve not just lots of problems, but a single GIGANTIC problem: the "resource scarcity" problem.
Basically, we are trying to split up all the resources in such a way as to maximize the overall utility of those resources to each agent.
How does this relate to the question at hand? Well, As a computer scientist, its fairly obvious to me that this problem is NP-complete, meaning that it is highly unlikely that any central-planning agency (even one that had perfect information) could ever solve it to any degree of correctness in any reasonable amount of time.

tl;dr 中央集权解决不了任何问题。计划经济其本身就是个问题。

via

Posted

archive