Quantcast
Channel: 未分类 –懒得折腾
Viewing all 759 articles
Browse latest View live

李硕:周灭商与华夏新生

$
0
0

李硕:周灭商与华夏新生

  上篇

文王八卦

据说周文王在忍痛吃掉了儿子的肉之后,才被商纣释放。这似乎流于野史传说。但在商人的殷墟遗存和甲骨文献里,这种行为再平常不过……

公元前一千余年,《旧约》中以色列大卫王之世,《封神演义》的传说时代。正当壮年的商纣王君临“天下”,统治着亚欧大陆最东端的华北平原。

此时的周文王,只是一个远在西陲(今天陕西)的小小部族酋长。好几代人以来,周族都臣服于商朝。文王周昌已经年过五旬,[1]在那个年代已经是十足的老人,且又痴迷于怪异的八卦占卜,更给这个撮尔小邦笼罩了沉沉暮气。

一支商军突然开到西部,逮捕了周昌,将他押解往商朝都城——朝歌。这是商人一次惯常的惩戒征讨。数百年来,商王对于他征服之下的数百个邦国、部族,都是这样维持统治的。

这次的结果却迥然不同。

尘封梦魇

三千年后的今天,河南安阳殷墟,黄土掩埋着殷商王朝最后的都城:朝歌。

一个世纪以来,考古学者在这里发掘出了数量惊人的被残杀的尸骸,一起出土的甲骨文显示,他们死于商人血腥的祭祀典礼。累累骸骨告诉世人:这里掩埋了被忘却的血腥文明,梦魇般恐怖而悠长的岁月。

在殷墟一座宫殿旁边,发掘出一百多座杀人祭祀坑,被杀人骨近六百具。这些尸骨大都身、首分离,是砍头之后被乱扔到坑里。两个坑内还埋着十七具惨死的幼童。这座宫殿奠基时也伴随着杀人祭祀:所有的柱子下面都夯筑了一具尸骨;大门则建造在十五个人的遗骨之上,其中三人只有头颅。

商王陵墓区有一座人祭场,比操场大两倍以上,出土近3500具人骨,分别埋在九百多个祭祀坑中。尸骸很多身首异处,有些坑中只埋头骨,或者只埋身躯,甚至是在挣扎中被掩埋的活人。王陵区之外也有人祭现场。比如后岗一座坑内,埋着73具被杀者的骨骸,大都是20岁以下的男性青少年,甚至有十多具幼儿的尸骨。商人文化所到之处,如河南偃师、郑州的商代早期遗址,甚至东南到江苏铜山,也都有大型人祭场的遗址。

多年的自然变迁和人工已经破坏殷墟遗址,整个商朝共有过多少这样的人祭现场,就无法确知了。这些遗址时代早晚不同,说明人祭的做法曾延续了很多年。它绝不是某位暴君心血来潮的产物,而是一个文明的常态。

但在被考古学家的铲子揭露之前,中国古史文献从来没有提及商人的这种习俗。

文王之子——周武王灭商之后,朝歌城被废弃、掩埋,商人的这种风俗也消散如云烟。但周朝人又为什么删除了对那个血腥时代的记忆?这和他们的兴起、灭商、建立周朝又有什么关系?

甲骨文和考古发掘向我们提出了这些问题。如果尝试解答它,还必须从上古的儒家经书、古史文献中,搜罗吉光片羽般珍稀飘渺的信息,将它们和考古材料拼合,还原那湮没三千年的恶梦——不,事实。

商朝和它的臣虏:羌、周

商人兴起于东方。他们统治的核心区在今日河南省东北部,属于华夏世界的东方。对于西部的异族,商人称之为“羌”,甲骨文这个字形如大角羊头,代表居住在山地、放牧牛羊为生的人群。这只是一个泛称,“羌”人包含着无数互不统属的松散族邦、部落。

商纣王之前二百年,一位商王的王后“妇好”率军征讨西方,把商朝的势力扩张到羌人地区。那次远征在甲骨文献中的规模最大,全军有一万三千人。和西部蛮族相比,商人有先进的青铜冶炼技术,兵器坚固锋利;他们还有记录语言的独特技术:文字,由此组建起庞大军事和行政机器,以及高度分工的文明。这都是蛮荒部族无法想象的。

商人从没有用自己的文化改变蛮夷的想法。他们只想保持军事征服。商王习惯带着军队巡游边疆,用武力威慑周边小邦,让他们保持臣服,必要时则进行杀鸡儆猴式的惩戒战争。商朝的本土并不比今天的一个河南省大太多。

对于“周”这个西方部族,商人有点说不清它的来历,因为它太渺小了。周人史诗讲述了自己的早期历史,也混杂了大量神话。传说周族始祖是一位叫“姜嫄”的女子,她在荒野里踩到了巨人的足迹,怀孕生子后稷,繁衍出了周人氏族。商周语言中,姜就是羌,所以周人也属于广义的羌人,他们形成部族后,才给自己冠以“姬”姓,而把周围其他部族称为“姜”姓。这标志着他们之间的血缘关系已经疏远,可以相互通婚。按照西方的风俗,同姓、同族的人不能通婚。

到文王周昌的祖父——古公亶父一代人,才有了比较可靠的记载。周人原来生活在深山之中,和野蛮民族(其实就是他们的近亲羌人)没什么区别。古公亶父带着族人迁出深山,沿着一条小河来到渭河平原的边缘,开始进行农业垦殖,从此脱离野蛮,进入了一种更“文明”的生活方式。

这些史诗掺入了周人的自我夸耀,只是部分可靠。从考古发掘看,这个时期关中渭河流域的文明形态都差不多,各族邦都不过几千或万余人,过着种植谷子、高粱,饲养牛羊的生活。他们最主要的农具是磨制石器,居家使用粗糙的灰陶,上层族长才有一点外地输入的奢侈品,比如玉器和铜器。周人并不比羌人邻居们“文明”多少。在商人眼里,他们都同样落后,根本不是值得尊敬的对手。

古公亶父带给周族的最大变化,是他投靠了强大的商王朝,成为商人在远西地区的统治代理人。

在彼时,周族不过是个万余人的小部族,对统治着数百万人口的庞大商朝有何用处?

正如殷墟考古发掘所揭示,商人相信,上帝和祖先神灵主宰着人世间的一切祸福,而异族人的血肉,则是奉献给上帝和祖先的最好礼物——甲骨文中的“祭”字,就是一只手拿着肉块奉献于祭台。他们祭祀用人最主要的来源,就是羌人。甲骨文的人祭记载中,羌人占了被杀者的一大半。他们被称作“人牲”。

亶父带领周族投靠商人之后,最主要的职责就是为商朝提供羌族人牲。这是被后来周人刻意掩埋、忘却的历史,但出土甲骨文泄露了一点信息。

周族自己没有文字。甲骨文“周”字是商人所造。商人对杀人献祭有一个专门的动词:“用”。无数片关于祭祀的甲骨文都记载,商王“用”羌人男女和牛羊奉献神灵。甲骨文中的“周”,是“用”和“口”两个字的合写;《说文解字》对“周”字的解释也是“从用、从口”——在商人看来,“周”族特征,就是缴纳供“用”的人口。【甲骨文图版:用羌】

商人的“周”字还有一种更可怕的写法:“用”字的小方格中点满了点。甲骨文这种点代表鲜血,它来自被杀的人牲,是神明最新鲜的饮食。甲骨文还有专门描绘用鲜血献祭的字:一座凸起的祭台上,用点表示的血液正在淋漓滴沥下来。

从血缘关系讲,古公亶父和周人的这种行为,是对家乡族人的无耻背叛。靠着捕猎羌人,周族成了商朝在西方的血腥代理人,也得到了相应的报酬。锋利的铜兵器可以帮助他们捕获猎物;商人马拉战车的军事技术,可能也在这个时候输入了周族。

亶父以来三代人、近百年时间里,周人都在努力趋附商朝。按照传统婚俗,周族首领应当隔代迎娶姜姓的夫人。[2]亶父的夫人就来自羌人,说明在他当年结婚时还没有背弃西方盟族。但他的儿子季历、孙子周昌(文王),两代人都是从东方迎娶夫人,这表明了他们投靠商朝的姿态。

周人宣称这两位夫人都是商人,甚至是商王之女。这只是他们对周边羌人的吹嘘。商人实行族内婚,严密保护着自己高贵血统的纯洁性,绝对不会将王室之女嫁给远方蛮夷。商人的姓是“子”,而季历和周昌的两位夫人,分别姓“任”和“姒”,她们只是来自臣服于商的外围小国而已。不过任、姒两位夫人的母国,还是比周人先进的多。在周人眼里,她们俨然是从天界下凡的女神一般,后世史诗中充满了对她们的歌颂声,甚至称她们为“大任”、“大姒”(《诗经·大雅·思齐》、《史记·周本纪》)。

两代东方新娘给周族上层带来了巨大变化。丈夫可以不懂妻子家族的语言,但母亲必然会全面影响儿子一代。东方文化随她们来到西部,最神秘、“先进”的当属甲骨占卜之术,它融合文字、占算和沟通鬼神的通灵术于一身,被商人发挥到了极致。其中,对卜骨纹路进行解读和运算的部分属于“八卦”。[3]到文王周昌老年时,开始痴迷于这种来自东方的神秘运算技术。由此,周人和古中国的命运开始发生转折。

文王野心:八卦

文王周昌年幼时就继承了族长之位。实际上,他的父亲季历很可能早夭而没有当过族长。季历的妻子、周昌的母亲大任来自东方,商朝显然支持幼年周昌继任周族之长。他成年后继续从东方迎娶妻子大姒,也是沿袭祖父亶父以来投靠商朝的政策,同时保障自己的权威。[4]

掌握甲骨占卜和八卦推算技术的,都是巫师家族,他们世代传承此职,将其作为家传绝技秘不示人。后世人传说,周文王在被商纣囚禁期间,将八卦推衍为六十四卦,这种说法也许有一定来历,但周昌接触和演算八卦的开端肯定更早。可以想象,当老年周昌对“八卦”发生兴趣后,肯定对占卜师软硬兼施,采用了各种手段,终于迫使他们交待出了卦象运算原理。

商、周时代,偶或有沉迷占卜之术的上层人士,但老年周昌的惊人之举,就是从中获得了背叛商朝、取而代之的启示。这显然远远超出了作为商人臣属的本分,而且背离了自祖父亶父以来的立国之本。

周昌究竟是如何推衍、论证的,现在已经不得而知。但现存《周易》中的《彖辞》部分,据说就是文王周昌所作,其中有些语言确实显露出不臣之心,比如“宜建侯”、“履帝位”、“建侯行师”这类语言,已经明显超出了臣子本分,充满反逆杀机(屯、履、豫卦)。

多个卦的《彖辞》都显示,“东北丧朋、西南得朋”。东北方不利而机会在西南。商人统治中心河北,正是周人的东北方,这无疑预示着和商王决裂之机已到,需要联络西部羌人、甚至西南方深山的各族为同盟军。而后来武王灭商时,西南民族蜀、髳、微等确实参战(坤、蹇、解卦);文王《彖辞》中出现最多的,是“利涉大川”一词——从关中到商都朝歌,必须渡过黄河,习惯山居的周人不习水性,这显然是老年周昌最关心的问题(需、讼、同人、蛊、大畜、益、鼎、涣、中孚等卦)。

沉溺在卦象演算中的周昌忽视了一点:他求教的占卜师来自商人控制的东方,他们和故乡的同行有密切联系。周人老族长的不臣之心,完全有可能通过占卜师的通信网传向朝歌,而商朝首席祭司又是商王的心腹。于是,商朝军队带走了老周昌。

《史记》等文献完全没说这是一场战事。也许商军像以往征收羌族人牲一样来到周族,顺便带走了周昌。从当时的实力对比看,老周昌的造反念头实为异想天开。所有周族人,包括他的儿子们——后来的武王发、周公旦等等,显然都被这个想法吓坏了。商人军队执法般轻而易举地带走周昌,足以说明周人被震慑之深:他们根本没有追随首领、对抗商人的实力和勇气。

周昌被捉走,把所有的难题都留给了儿子们。夫人大姒为周昌生了好几个儿子,长子伯邑考,次子周发、周旦此时已经成年。他们唯一能做的,就是去朝歌向商纣王求情,祈求他宽恕周昌因老迈糊涂而产生的妄念。

《史记》记载,几个从商朝叛逃到周的臣子(闳夭、散宜生等),带着礼物到商都祈求纣王。这显然不是全部实情:见到叛臣只会增加商纣王的愤怒,何况此时周族也难以吸引到商朝的投诚者。商纣是异常聪明的人,“知足以距谏,言足以饰非”,周昌的儿子们不出面,他肯定不会宽恕周人(《史记·殷本纪》)。

文王诸子这次去朝歌的屈辱经历,只是在他们灭商、夺取天下之后,才被隐讳了起来。事实上,他们在朝歌经历的远不止是委屈羞辱,更是如梦魇一般的血腥惨剧。

天邑商:朝歌鬼神世界

旧史的零星记载说,周昌长子伯邑考到朝歌之后,被商纣王处死且做成了肉酱。周昌在忍痛吃掉了儿子的肉之后,才获得释放(皇甫谧《帝王世纪》)。这确实显得过于荒唐,似乎只能流于野史。但有了今天殷墟的考古发现和甲骨文献,我们才知道,这种行为对于商人再也正常不过。

以往数十年里,周人一直在向商朝提供羌人俘虏。对于这些人在朝歌的命运,周人可能有一些模糊的了解,却不会有太具体的观感,因为西部并没有商人的人牲祭祀场。只有在老周昌和儿子们相继到达朝歌之后,才亲眼目睹了那些经自己之手送给商人的俘虏的下场。

按照甲骨文记载,商人用活人献祭的方法有很多种。比较常见的是“卯”祭,这个字是人或牲畜被掏空内脏之后、对半剖开悬挂的形状,如同今天屠宰流水线上悬挂的猪羊。事实上,羌人俘虏也确实常和牛、羊一起被杀死“卯”祭。【图版,甲骨文“卯羌及牛”】

其他献祭方式包括奉献人牲的内脏、鲜血、头颅。加工人牲方法有烧烤、滚汤炖烂、风干成腊肉等等,都有专门的甲骨文字。这都是加工食物的方法,因为他们就是奉献给神灵的饮食。按照习俗,神明享用祭品时也施加了祝福,所以典礼结束之后,献祭者将分享祭品。

这自然会得出一个惊悚的推论:商人,特别是上层商人,很有可能是食人族。但这并非只有考古证据。历史文献中除了伯邑考被做成肉酱;另一位对纣王有异心的小国君“鬼侯”也被做成了肉干,分赐给其他邦君为食。

按商人观念,异族的酋长、贵人是最高级的人牲,他们给这种酋长叫“方伯”,再多的普通人牲也抵不上一位方伯。周昌或者他的继承人,正是商人眼里的一位“羌方伯”。

但这次被“用”的为什么是伯邑考,而不是他的弟弟武王发、周公旦,或者惹出这场风波的老周昌自己?

在犹太《旧约》里的上古时代,上帝最喜欢接受长子作为祭礼。商人未必有这种礼俗,但他们确实喜欢用青壮年男子或儿童献祭,极少用老年人(对某些特定的神则用青年女子)。而且,商人习惯用占卜选择祭品,他们应当对伯邑考、周发、周旦等兄弟进行了认真考察和占算,来确定谁最适合做成肉酱。毕竟,用来祭祀的牛、羊事先也要认真检查,看它们的毛色、肥瘦,以及有没有疤痕、暗病,这种记载在《春秋》中屡见不鲜。老周昌的儿子们如何经历过这一关,他们的感受如何?旁人将永远无法得知。

无论如何,老周昌重获自由。而且,他和儿子们还有了意外收获。

首先,商纣王对他们的悔过非常满意,尤其是周昌吃下自己儿子肉的表现。这大概象征了他衷心归化于商人文明世界的姿态。纣王授予周昌“西伯”身份,让他代表商朝管理更大范围的西方事务。

还有,在这次朝歌之旅中,周昌父子获得了面对面观察商人高层的机会。除了那些足以让人疯狂的血腥祭祀,他们还发现,商朝远不是他们在西陲时想象的“天邑商”——如同仙界般悬浮在天空的神圣都市。这里虽然富丽堂皇,但所有的人,从商纣王到他的兄弟子女亲人,都和周人一样普通,没有任何神圣之处。

最关键的是,商人世界并非一个团结的整体。和任何一位族长、首领一样(甚至更加严重),纣王身边充斥着心怀不满的兄弟和宗族成员,他的儿子们为争夺继承权明争暗斗。闳夭、散宜生等向周人暗送秋波的商朝臣子,应当是在这时和周昌父子们建立联系的。周武王灭商之后扶植的傀儡、商纣之子武庚,此时肯定也对周人进行了试探拉拢,更不用说商纣那些早已心怀不满的叔伯兄弟们,比如稍后被处死的比干。在这些人看来,周族人和他们那些西方亲属羌人部族,也许是可以利用的潜在力量。如果商纣王一意孤行、不尊重这些贵族的利益,就有必要联络异族,里应外合发动政变。

商纣王和他身边的觊觎者们,都没有想到扶植周族可能带来的危险。

商人称霸中原已长达六百年,从没有外来威胁可以动摇它的统治。而且,商人一致认为,天界的上帝、诸神主宰着人间一切祸福命运。已经死去的历代商王、贵族,也都进入天界成为神灵,拥有大小不一的神力。那些神灵非常“现实”,只保佑向他们献祭的人。奉献的人牲、牛羊越多,诸神就越高兴,会保证献祭者享受人间的一切。

商王最重要的工作,就是向天地、山川、祖先之神不停献祭,祭祀日程表排得满满当当,如同营养师的菜单。在甲骨文记载中,商王会一次宰杀、奉献三千名人牲,以及一千头牛。能够保存到现在的甲骨文只是九牛一毛,这肯定不是商人规模最大的祭祀。

由于商王垄断了向诸神祭祀的权力,也就独享了诸神的福佑,理所当然要征服、统治大地上的所有民族。当然,这也是为了给诸神提供更多的祭品。

在这种思维方式下,商人自然成为了一个以纵欲著称的民族。向神明献祭的人和民族就可得到天佑,于是不必顾及什么道德戒律,更不必担心未来的忧患。《史记》记载了纣王建造酒池肉林、男女裸体集体淫乱等种种荒唐行为。其实,这和他敲骨看髓的故事一样,都是将整个商族的丑恶集中到了一个人身上。种种酷刑、血腥的杀祭,都是商人集体而非纣王一人的娱乐方式。

他们还从上到下沉溺在酗酒恶习之中,终日少有清醒的人。纣王在位以来,来自西方的人牲数量在减少,但作为酿酒原料的粮食在不断增加(周昌怠工以后,纣王正试图在东南方开辟新的人牲来源)。

商王之下的贵族们死后成为小神,但他们也必须保佑后世商王,不能只顾及自己的子孙。在纣王之前二百多年,商王盘庚刚刚把都城迁到朝歌,他身边的贵族们大都不满。盘庚将他们召集起来训话,公然威胁说:不要以为你们死去的祖先会帮助你们,因为他们都在我先王的身边,跟着享受了我奉献的祭品,所以会优先保佑我盘庚,不会纵容你们![5]

兹予大享于先王,尔祖其从与享之。作福作灾,予亦不敢动用非德。予告汝于难,若射之有志!

据说商人早期是经营畜牧和商业的民族,所以他们把被统治的人视同牲畜,并且用生意人的思维和诸神打交道(《山海经·大荒东经》,《世本·作篇》)。商纣王觉得天下是他一人的产业,其他商人贵族也认为王位只能在商人内部传承。周人只是他们的工具而已,永远没有爬到主人位子上的可能。

太公阴谋

在周昌父子们周旋活动于朝歌时,他们也许还遇见了一位后来共同参与改写历史的人物,就是太公吕尚——后世所谓的“姜太公”。他族姓为姜,属于周人的传统盟族,羌人。

《史记》说太公吕尚是“东海上人”,在渭水边垂钓遇到文王而被重用。这种叙事模式来自《战国策》的说客故事,不足采信。更晚的野史小说《封神演义》,则有姜太公曾在朝歌城里卖面粉、当屠户的故事。在商周之际,世袭阶级身份是不可能改变的,根本不会有出身平民的暴发户。太公必然出自羌人中的吕氏部族,是一位典型“羌方伯”之子。

但这并不排除太公曾有在朝歌生活的经历。《史记》中记载确凿的,是姜太公在后来周人的灭商事业里作用巨大,特别是提供了许多阴谋秘计,“其事多兵权与奇计,故后世之言兵及周之阴权,皆宗太公为本谋。”这种阴谋算计,和羌人、周人在西陲山地的简单淳朴生活格格不入。只有“文明”世界才能塑造出如此阴沉工于心计的人。

那么,出身羌人上层的太公吕尚,为何有着如此复杂难以捉摸的经历,并最终和周人走到了一起?

结合周人以往为商朝所作的工作,可以推测,太公作为羌人吕氏部族的首领之子,可能是被周人俘获或者诱捕,然后作为人牲送到了朝歌。那时的太公和文王都还年轻。但某些变故使他侥幸保住了性命(比如占卜结果并不适合作祭品等),便在朝歌城内作为一名贱民生活下来,直到见到了被押解来的老周昌和追随而来的儿子们。

如此的话,老年太公和周昌在朝歌城内的再次会面,一定极富戏剧性,特别是在老周昌父子们经历了作为“羌方伯”的种种遭遇、伯邑考被“用”之后。这次相见的细节已混淆在种种传说中无法复原,但结局很清晰:这些有着同样惨痛经历的人达成共识,太公谅解了周族人以往的暴行,认可了老周昌的灭商梦想——虽然动机来自他未必理解的八卦推算。他悄悄和周昌父子们一起回到了西部,共同投身到灭商大业中。

带着在朝歌的惊悚、悲哀、新知和收获,老周昌和剩余的儿子们回到了故乡。他们离开时只有忧虑绝望,归来时却已经团结一致,带领全族投入了这桩豪赌事业:翦商。这个事业已经裹挟了包括周人在内、从东方商都到西部远山的各种政治势力,一旦开启就不可能中止,如同置身深山峡谷中的漂流之舟,或者苦撑到辽阔富饶的新家园,或者在激流乱石中撞得粉身碎骨。

这桩事业中,新加盟的太公吕尚为周人提供了极大帮助。司马迁《史记》记载,太公给文王周昌、武王周发父子策划的,都是阴谋诡计、密室之谋,大多没有记载下来。但他能给周人的教益不止于此。

和周人、羌人相比,商人的文明更加发达,分工专业化程度和生产效率更高。以太公可能在朝歌城内从事过的屠宰业为例(倒不仅是来自《封神演义》的戏说,在很多早期文明中,屠夫职业确实与贱民身份密切相关),商都的这个产业早已脱离了小作坊经营阶段。屠宰完的人牲肉、骨利用很充分,不同部位、器官被分拣归类,进入下一轮生产环节。在1930年代发掘的殷墟手工工场区内,有专门加工人腿骨的作坊,经过初步拣选的成年人腿骨被捆扎在一起,等待下一步精细加工,可能是制作束头发的骨簪。在其他的商代作坊区中,还有专门用人头盖骨制作碗的遗迹。周人不会这样利用人骨,但这种分工、专门化的生产方式,则是太公能够带来的真正进步。

此外,年轻的周发(武王)还娶了太公的女儿,周公旦可能也娶了另一位姊妹。由此,周人重续了和羌人的世代婚姻,两个亲缘部族终于在灭商大业之下团结起来。

下篇

周公解梦

朝歌城的经历、长兄的惨死,显然给武王造成了无法愈合的精神创伤。他的后半生都无法摆脱失眠和噩梦的困扰。

周命维新

从朝歌返回之后,老周昌对翦商事业非常乐观。他的创意终于得到了儿子和族人的响应,他们看到了商人内部的裂痕,还获得了太公为代表的羌人同盟军。再加上卦象显示的各种预兆——目前族人们还不懂如此高深的玄机,但他们早晚会为之折服——翦商大业注定前途光明。

周昌甚至按照朝歌的排场给自己加了王位。从此,他才成了和商纣王平等的王、历史上的“周文王”。当然,这只是在周人的小范围内,悄悄瞒着商纣王的耳目。

从朝歌回来之后,文王的身体还算康健,记忆力却迅速下降。后来周人史诗说他“不知不识,顺帝之则”,其实是典型的老年痴呆症状(《诗经·大雅·文王》)。

这些已经不重要,因为他有限的时间和智力,都已投入了将八卦演算为六十四卦的工作,这也许是他解除丧子之痛的唯一方式。后世卦师们的衣食之源——《周易》由此产生。

但这对于翦商事业没有任何助益,具体工作都由儿子们进行。除了丧命商都的伯邑考,现在成年的只有周发和周旦。对于老周昌一意孤行开创的这桩事业,他们依旧视为畏途。

和庞大、发达的商王朝相比,周族力量毕竟太弱小了。周旦(周公)性情柔弱,从不敢质疑父亲的决策,但也无法胜任太多建设性工作。周发则努力担负起这桩事业,这应当是他被文王指定为继承人的重要原因。

周昌父子的翦商事业,已经被古代经学家、现代历史学者讲述过无数遍。他们举族迁往更适合农业种植的平原地区,借着商纣王授予的“西伯”头衔,拉拢、团结周边羌人等部族,对不愿服从的部族、方国则进行武力征服。

周人扩张非常迅速,他们的势力甚至开始伸展到关中之外。被征服者提供了衣食资财,使周族男子得以从生计劳碌中解脱出来,组建全民皆兵的武装。周人传统的氏族、家支都被打散,青壮年在军事单位中重新编组。

在扩张过程中,周人还创立了“大学”,也叫辟雍或明堂。这个最早的大学的事业,不是学习研究文化,而是对所有周人男子进行军事训练,最基本的必修课是射箭,最先进、难度最高的则是驾驶战车作战。

在经典文献的描述中,辟雍是一座环水的高大建筑,其实就是护城河环绕的武装堡垒。周王和儿子们都居住在堡垒中。这座辟雍成为周人征服南北西东的力量之源:

镐京辟雍,自西自东,自南自北,无思不服。皇王烝哉!

——《诗经·大雅·文王有声》

从朝歌返回之后,文王周昌又活了九年。他去世后,周发即位自称武王,但仍然继续文王的纪年。按照他的解释,父亲的在天之灵依旧指导着翦商大业。

周公解梦

但武王周发始终生活在恐惧和焦虑中。

朝歌城的经历,特别是长兄伯邑考的惨死,给他造成了无法愈合的精神创伤。再加上翦商事业的压力,担心失败的恐惧,使他的后半生都无法逃脱失眠和噩梦的困扰。

《逸周书》中以多个以“寤”为题的篇章,都记载了武王的恶梦之痛(《寤儆》《和寤》《武寤》《武儆》)。他常常辗转终夜无法入眠,黎明时分恍然睡去,却又梦到翦商之谋泄露、商纣王震怒,联络好的盟友们都不敢反抗,整个周族旋即遭受灭顶之灾:

呜呼,谋泄哉!今朕寤,有商惊予。欲与无□,则欲攻无庸,以王不足,戒乃不兴,忧其深矣!

——《逸周书·寤儆》

每次他从恐惧中醒来,都要派身边的小臣去请弟弟周公,向他讲述梦里的惨状,以及对谋商事业能否成功的忧虑。商王家族世代向上帝献祭,他们肯定能得到上天的保佑,试图翦商是否是逆天悖伦之举?

对于这种恶梦,周公也只能尝试用梦来缓解。他宽慰说,他们的母亲大姒曾梦到商都朝歌生满了荆棘,这就是上天降下的商人将亡之兆。虽然上帝享受了历代商王的祭祀奉献,但他不应该因为这种小小的实惠而偏袒商王。

为了使自己的解释圆满,周公一次次进行发挥和阐释:王的使命,应当是使天下所有的人生活在和平、公正之中,这就是所谓“德”。上帝应该只保佑有“德”之人,替换掉没有“德”的君王或王朝,以有德之人代替之。只要武王努力修“德”,就一定能在上帝福佑之下战胜商王(《太平御览》引《周书·程寤》,《逸周书·大开武、小开武》)。

武王从未能真心信服这种解释,恶梦一直陪伴他到成功灭商以至去世。如果真有那位全知全能的上帝,长兄伯邑考为什么还会惨死在朝歌?

他宁可相信实力决定一切。只有在战场上彻底消灭商朝军队,周人才能从恐惧中解脱出来。所以武王真正信赖重用的是岳父太公。每天晚上,他都在和岳父密谋富国强兵的种种方案,拉拢周边小邦、分化商人高层的种种策略。

但密谋结束之后,他依旧会辗转反复无法入眠,朝歌人祭场的一幕幕在眼前挥之不去,惨死兄长的魂灵随时会降临他的卧室。每次从恶梦中挣扎而醒时,窗外已开始泛白,弟弟周公正守候在榻边。

周公名“旦”,字形是半轮太阳正从地平线上升起,意为清晨。他确实是武王在每个恶梦之晨看到的第一个人。武王的侍卫亲随——“小子御”早已习惯,看到他失眠和恶梦,不待指令也会向周公求助。

于是,武王在周公的宽慰鼓励中稍稍振作,开始新一天的工作。史书没有记载,周公自己是否逃脱了噩梦的纠缠,以及他自己是否相信那些关于“德”的说教。但每个黎明前被兄长召唤的时刻,他都从容清醒如白日。周公显然已认真考虑过自己的定位:他无力承担父亲开启的正义而疯狂的事业,也无法给死去的长兄报仇。但这个使命和它带来的压力,注定要由他们兄弟二人一起承受。

他对“德”的阐释,只是作为普通人的美好愿望:他们不想无故被杀或者杀人,只渴望生活在一位圣明君王统治下的安定中。但和所有普通人不一样的,是他的兄长周发必须成为那位有“德“君王。不然整个周族将死无葬身之地。

如果说武王的使命是成为帝王、翦商和建设人间秩序,那么他周公旦的使命,就是做这位帝王的心理辅导师,塑造和维护他的伟人形象,如此便于愿足矣。

牧野鹰扬

文王死去两年之后,武王终于集结兵力,发动了对商朝的进攻。

但是,当他们到达黄河边后,忽然又停止进军,班师撤退。第一次出征草草结束。

周人和盟友都不理解武王的想法。其实,武王曾多次和太公、周公秘密讨论:以周人现有的兵力,完全无法对抗商军,要征集更多的部族做同盟军,则势必泄露翦商之谋,这显然是一个两难的处境:

“余夙夜维商,密不显,谁和?”(《逸周书·大开武》)

在两者间权衡取舍许久之后,武王终于决心发起这个冒险之举:公开与商朝决裂,并发动一次有限的试探进攻。这是他向所有被商朝统治的部族发出的振臂一呼:已经有人率先揭竿而起,亮出你们立场的时候到了!

当独夫暴君得意之时,似乎所有人都屈服于他的淫威。但只要第一个、第二个反对者站出来,他们身后会立即涌现一支追随者大军。被血腥人祭摧残已久的部族们纷纷赶来投靠周人。沿途加入周军的“诸侯”——部族和小国,其实多数不过是新石器水平的农业聚落——多达八百个。

这些未经统一训练的乌合之众是无法作战的。所以武王及时退回了关中。他需要时间把这些新盟友们锻造成一支更大的军队。

商纣王本该用雷霆之怒来惩戒周人的叛逆,如同十二年前逮捕文王一样。但他立刻发现,哪怕在商朝内部,他的权威也在迅速下降。对他公开表示不满的高官和亲人越来越多,推翻他的阴谋正在宫廷中酝酿。他忙于扑灭朝歌城内的反对派,处死了叔父比干,关押囚禁了更多的人。越来越多的商朝臣僚叛逃入周,带来了朝歌反对派们求援的呼声。

又经历了几百个不眠之夜后,周武王发动了真正的远征。西部联军沿着当年文王被捉入朝歌之路前进。

刚刚压平国内反对派的商纣王也集结起了大军,准备一举荡平周人和所有的叛逆民族。双方在朝歌城外的原野——牧野集结,即将发起决战。

这个彻底改变中国历史、再造华夏文明的日子,在文王周昌被抓到朝歌的十三年之后,公元前1046年二月一日的凌晨。双方军队连夜集结备战。连绵篝火映红了旷远夜空,人和牲畜的走动喧哗声终夜不休。

严冬即将过去,淡淡晨雾飘散在原野间,枯草上凝结着闪亮霜露。当天空现出幽深的蓝色——这个武王每每从恶梦中惊醒的时刻,双方军队列阵完毕。

周人和他们的同盟军,总共四万五千人;至于商纣王集结的军队,则像树林一样多的无法计算,“殷商之旅,其会如林”(《诗经·大雅·大明》),后来的说法是共有七十万人。而且新的部队还在源源不断开来。

据说,商人内部的反对者已经约定,在两军接战之前倒戈,向纣王发起攻击。但随着两军距离越来越近,他们迟迟没有动静。或许他们也被商人自己的庞大兵力吓坏了。

周人联军列成方阵,向殷商的矛戟丛林走去。他们因为紧张而越来越拥挤,盾牌互相碰撞挤压,每走几步都要停下来重整队列。前排敌人的面貌越来越清晰,紧张气氛陡然加剧,联军将士终于再也无法挪动脚步。

一方是统治中原六百年的主人,一方世世代代为主人提供人牲祭品,这将是一场实力对比悬殊的屠杀。弱势一方随时都会在恐惧中崩溃奔逃。

武王最后的阵前动员:

今日之事,不过六步七步,乃止齐焉,夫子勉哉!

——《史记·周本纪》、《尚书·牧誓》

就在这短暂而沉寂的对峙之间,一小群联军战士挤出队列,向殷商军阵走去。带领这百十人走在最前面的,是年过七旬的的权术家、以老谋深算著称的太公吕尚。没人知道,他何以忽然抛弃了所有阴谋、诈术、诡计,像一介武夫般怒发冲冠直向敌阵。

也许他只想改变羌人作为人牲悬挂风干的命运,他在朝歌已经看得太多。

在后世周人的史诗中,太公在那个清晨变成了一只鹰盘旋在牧野上空。他面前的敌军阵列瞬间解体,变成了互相砍杀混战的人群。武王的部队旋即启动,三百五十辆战车冲向商纣的中军王旗之处……

当淡淡阳光穿透晨雾,洒向原野间的纵横尸骸时,六百年商王朝已经终结。

维师尚父,时维鹰扬。涼彼武王,肆伐大商,会朝清明。

——《诗经·大雅·大明》

纣师虽众,皆无战之心,心欲武王亟入。纣师皆倒兵以战,以开武王。武王驰之,纣兵皆崩,畔纣。纣走……

–——《史记·周本纪》

新商人

周人和他们的同盟军开进了朝歌城。

商纣王已经在绝望中自焚而死。除了纣王亲党,所有势力都在他的倒台中获得了满足。王宫的仓库都已空空如也,据说纣王将所有宝物堆在身边点燃殉葬,但从灰烬中只寻找出几块“天智玉”。太公建议武王不要追查宝物的去向:投诚的商人显贵多是些唯利是图之辈,应当犒劳一下他们。周军继续向各地进发,征讨顽抗的商军,倒戈的商朝贵族则充当向导。

平定商朝全境不是问题,周武王和周公、太公焦虑的,是让商朝上层接受被征服的事实。之前双方的秘密联络中,商人上层只是把这次战争看做一次联合铲除商纣的权宜之举,之后的商人仍旧将保有自己的王朝。局势至此,周人显然不会承认这点。

在熟悉商人典礼的太公主持下,武王在朝歌举行了向上帝献祭的仪式,如同商人以往的所有仪式一样,被砍下的头颅是敬献给上帝的礼物,只是这次的头颅换成了烧焦的商纣王、以及他的妃嫔和亲信们,而奉献祈福者换成了周武王,十三年前的人牲伯邑考的弟弟。

之后,武王向商朝臣工训话,宣布商王朝从此被周王朝取代,享用过祭礼的上帝也转而成为周族的保护神。

武王用了商人最熟悉的交易逻辑来论证:上帝此举并非心血来潮的冲动,以往虽然是历代商王献祭,但祭品中的谷物是由周人先祖——姜嫄之子后稷培育的,所以上帝心中早已对周族青睐有加,将商人的天下转托给周人:

在商先哲王,明祀上帝,亦维我后稷之元谷,用告和、用胥饮食,肆商先哲王,维厥故,斯用显我西土!

——《逸周书·商誓》

商纣的儿子武庚被任命为新商王。几个月后,商地逐渐稳定,武王留下三位刚成年的少弟——管叔、蔡叔、霍叔等驻扎商都、监视武庚朝廷,自己带主力班师西归。

纣王的脑袋、还有他曾重用的所有臣子都被押解到了关中。武王在自己的都城镐京再次举行祭天典礼,宣告他正式平定了中土,成为上帝在人间的唯一代理人。

武王要抚慰父亲的屈辱、长兄的惨死。实际上,在向商人复仇的过程中,他已经变成了一个不折不扣的新商人。

这个典礼仪式也完全按照商人的惯例进行:纣王的一百名幸臣被押解到祭台下,用斧钺砍断手脚,任由他们在血水里翻滚挣扎。他们喊叫的声音越大,挣扎翻滚的越剧烈,就说明奉献给上帝的祭礼越丰盛。

还有在牧野战场上顽抗的武将、商人核心氏族的四十名族长,他们被剥光衣服,投入到沸水翻滚的大鼎中(《逸周书·世俘》)。

然后,武王身穿天子之服,在音乐声中走上祭坛,向上帝和祖先之灵汇报灭商过程。生的、熟的人牲躯体被抬上祭坛,正式奉献给上帝和周人列祖列宗。纣王和妻妾们的头颅、战争中斩获敌军的耳朵,都被堆放在巨大的柴堆之上焚烧,焦香的烟火气是上帝最喜欢的食物——这是商人的说法。

除了这些惊悚的祭品,山川天地诸神还要享用一些稍为正常的食物:宰杀了五百零四头牛奉献给上帝和周先祖;还有二千七百零一只猪、羊、狗,作为奉献给山川、土地诸小神的祭品。

按照商人的仪轨举行完所有典礼,武王周发合理合法地成为了人间的新统治者。

但他仍旧不能摆脱失眠和恶梦的困扰。

他再次巡游新占领的疆域,试图找到上帝转而福佑自己的迹象,却始终未能如愿。当武王登上西山、俯瞰朝歌城,发现自己还生活在昔日恐惧的回忆中。他的健康状况每况愈下,在灭商当年的年底终于一病不起。

当武王再次经历过一个漫长的失眠之夜后,小子御陪着周公旦出现在卧榻前。武王说起了自己还没来得及完成的事业:

那些曾追随纣王作恶的商臣和部族,至今尚未全部铲除,随时可能发起反攻;自己的长子周诵还不到十岁,其余的尚在襁褓之中,根本无法治理新兴的王朝;除了周公之外,诸位弟弟都还年轻,只有周公能够接手治理这个新王朝。此事没有其他选择,所以连占卜都没必要了。

而且,在周公即位之后,朝歌城必须毁灭,那里是罪恶的大本营;父兄们在那里遭受的患难血泪要随之一起埋葬。武王已经为周公选好了新都城基址:在位居天下之中的河南平原上、一个小山环抱、三水汇流的盆地内。武王甚至给这座还在脑海中的新城起了名字:“度邑”,周人由尘世升入天堂的过渡之城。

以往宽慰从噩梦中惊醒的武王时,周公总是引经据典滔滔不绝,这次他却一句话也说不出,只能跪坐在榻前俯身哭泣,任泪水打湿衣裾(《逸周书·度邑》)。

二人商谈的具体过程已经湮灭。但当武王去世时,继位的仍是少年成王,周诵。周公以叔父身份辅政,宣布了营建度邑的决定,只是改名为洛邑——他意识到了天界与人世间不可逾越的界限。朝歌城中所有的居民,从贵族到工匠、贫民,都要迁徙到这座尘世新都(今洛阳市)。

周公制度

叛乱立刻在东方爆发。管、蔡、霍三兄弟质疑周公表面推让王位,实际上却掌控着朝廷实权,这种虚伪的把戏只能欺骗一个孩子。

三人是文王朝歌之难后长大的一代新人,没有当年惊弓之鸟的凄惶经历,视周人的天下为理所当然。朝歌繁华富丽,生活比周人旧地舒适得多,商王的宫阙和种种排场,正应由他们享用,怎能轻易付之一炬?他们联合新商王武庚起兵,要保住这块商人的最后天堂。

周公和关中故地的周人已经预计到了商人的反抗,但没有想到自己的青年们被东方世界同化得如此迅速。军队再次向东方开去。腐化的军队不堪一击,管叔战败身死,蔡叔、霍叔被俘,武庚逃亡到了北方戎狄之中。

朝歌城被夷平为废墟。文王、伯邑考、武王和周公的所有梦魇都永远埋葬于斯。

周公开始颁布他的新政令。所有新政的出发点,就是往昔那些清晨他开导兄长的关于“德”的说法。这些说法对武王从未发挥药效,但周公如今有了全面推行它的机会。

杀人祭祀的风习被严令禁止,甚至宰杀牛羊也不能超过十二头。周公开始营建新洛阳,奠基时的祭礼只有两头牛;次日拜祭土地之神,用了牛、羊、猪各一头。

不仅如此,周公还要消灭有关朝歌的一切,自己和兄长遭受过的梦魇都要永远深埋。既然不能斩杀尽所有的殷商遗民,就只能修改他们的记忆,让他们自以为和别的民族没有任何区别。商王的甲骨档案库早已随着朝歌焚烧一尽;其他各种文献记载也被秘密审查、销毁。

周公还开始重新编纂历史。新的周公版历史说:商人和其他民族没有任何区别,他们的王朝也是禀受天命所建,历代商王和宰辅们都仁慈智慧、兢兢业业。只是末世的纣王丧心病狂,才导致了商王朝的终结。至于周族,也自然没有了为商朝充当帮凶的污点。

商人几百年的血腥暴行都归于纣王一人,他负荷着千百万人的罪恶,被涂抹成了完全丧失理性的疯子,以至孔子的学生子贡怀疑:关于商纣暴虐的很多说法都是后世人的虚构:

子贡曰:“纣之不善,不如是之甚也。是以君子恶居下流,天下之恶皆归焉。”

——《论语·子张》

周公五百年后的孔子就是商人后代,他和子贡等弟子们传承的,却是被周公修改过的知识。人们或许能感到,纣王恶行的传说过于虚妄,但不知道这后面隐去的事实是何等恐怖。

这正是周公的目的,他不想后人也生活在恐惧和仇恨中,虽然他和兄长已终生无法摆脱。

还有,民族的隔阂必须打破。商人的族内婚被严厉禁止,所有贵族都不得在本族内结婚,而应当与其他部族、方国的上层联姻。为了巩固新的周王朝,周公还把周人、羌人分封到新占领的东方,让他们在各地建立新诸侯国。商人也都被拆散分配到这些新邦国中,他们将和各地的土著民族通婚混血,互相同化,形成新的世袭统治阶级。

混血、统一、开放的新华夏民族由此诞生。周人、商人、羌人的划分永远成为历史。

周公继续完善着他的道德理想。他制定了种种礼节,希望让人们学会控制欲望,把社会规训得和善、节制、长幼有序。这些说教和规范形成了种种儒家经书,被统称为“周礼”。

当初激发父亲翦商灵感的八卦、六十四卦,也要重新进行阐释,消除那些野心和投机的成分。据说《周易》的《爻辞》是周公所写,它与文王名下的《彖辞》区别极大,不再鼓励任何投机和以下犯上的非分之想,全是一位君子应当如何朝乾夕惕、完成社会角色的励志说教。[6]周公兄弟们从未能理解父亲对八卦的狂热。那个冒失之举虽然最终收获巨大,但毕竟给他们的家庭和国族带来了太多磨难和风险。如果再次面临这个选择,他们恐怕没有勇气投身于斯。

商人和神灵做交易的理论,也要做彻底修改。给神灵、祖先的献祭只是表达虔诚敬意,不需要、也不允许无限丰厚。神灵不再是贪得无厌的嗜血饿鬼,而是保佑有德者、惩戒无德者的最高仲裁,维系着周公倡导的人间道德体系。

在商人的功利、血腥、残暴已然登峰造极之后,周公创建了一套全新文化:节制欲望、善待他人、克己复礼、勤勉拘谨。这就是正在形成的新华夏族的样板品格。

周公还以身作则,每次面见年少的侄子成王时,他都战战兢兢如对严父,虽然他是成王事实上的监护人。每向成王表达完自己的意见,或者听成王说出每句话,周公都要以头触地、长跪稽首许久。

至于逐渐长大的成王,和所有青年们一样,开始萌生叛逆心理,对这些繁缛礼节和道德说教渐渐不满。而且周公一直掌握大权,在反对者看来,这无疑是虚伪和言行不一的表现。据说在数年间,成王曾命令周公居住在洛阳,不得到关中朝觐。最后,可能是周公奉还大政、交出所有权力之后,他才与侄子和解,回自己封邑度过晚年。

他委实无法向侄子解释自己这种对道德的近乎病态的依赖:这是他和父亲、兄长生命中的不能承受之痛,已无从向年轻一代谈起,就像伯邑考的死因不能触及一样。

周公在归政后不久死去,埋葬在文王和武王的陵墓之旁。最后岁月里,他和侄子成王关系如何,史书完全没有记载,但从他死时的寂寥来看,侄子显然还对这位道德楷模心存芥蒂。

周公的道德事业是成功还是失败?恐怕言人人殊。但他彻底埋葬商都记忆的努力无疑是成功的,至少在考古学家的铲子掘开殷墟之前是如此。

尾声

经过十几年历史记载的空白之后,35岁的周成王忽然病重弥留,命悬一线。

但他仍按照天子之仪轨,挣扎着梳洗、穿戴起最庄重的冕服,端坐到朝堂之上,对臣工们发表了临终训话。他历数祖父文王、父亲武王以来的功业和教诲,告诫太子和臣工永保勤勉,不要丧失先辈们的翦商大业。

在臣僚们看来,这番景象恍然周公重生。

显然,在独自为政之后,成王渐渐理解了叔叔的某些用心:

王曰:“呜呼!疾大渐,惟几,病日臻。既弥留,恐不获誓言嗣,兹予审训命汝:昔君文王、武王宣重光,奠丽陈教,则肄肄不违,用克达殷、集大命。在后之侗,敬迓天威,嗣守文、武大训,无敢昏逾……”

——《尚书·顾命》

临终训话结束之后,臣僚退去。成王挣扎着脱下了礼服,回到病榻上。次日,成王去世,太子康王继位。

华夏历史沿着武王和周公修改后的轨迹继续前行,直至今日。

[1] 注:周人是姬姓,自《史记》以来习惯称文王姬昌、周公姬旦等。但按周人自己的习惯,姓只能用来称呼女性,男性只能称氏,周族首领的氏就是“周”。所以如果我们尊重周人的话,只能给文王叫“周昌”,其他以此类推。

[2] 这可能是部落氏族时期的婚俗遗风,主要为了防止出现父子娶同辈近亲。

[3] 这种“八卦”运算体系起源于淮河流域,而早期商人就在那里崛起,所以八卦和甲骨占算属于商人及东方文化一系。

[4] 《竹书纪年》载季历被商王杀死。但杀死季历的未必是真正的商人,而可能是和他妻子大任类似的商人外围邦国。春秋时还多有国君、公子到妻子或母亲之国淫乱,最终激起仇杀的事件。这很可能是季历的真正死因。历史文献多对季历生平语焉不详,可能也和他死得不甚光彩有关。至于为商王所杀的说法,则可能来自周人灭商后改写的历史。

[5] 《尚书·盘庚》。按,《尚书》有今文和古文两个版本,一般认为今文版是真,古文版是后人伪造。《盘庚》篇今、古文都有,定然是真。但古文《尚书》里还有一些篇章,讲商王遵守各种德行,甚至服丧三年,今文版本中却没有。这说明后人在伪造古文《尚书》的时候,给商人加上了他们本来没有的道德观念。

[6] 现存的爻辞掺入了后人的发挥,但周公的意见仍可能包含其中。

作者附言:两位大学同窗为本文提供了帮助,首先是芝加哥大学人类学博士、中国社科院历史所的林鹄师兄,他在本文酝酿阶段贡献了许多有见地的想法,本文第一节殷墟考古部分的文字,就直接来自他的著作;北大历史系的韩巍教授审读了全文,并提出了宝贵意见。在此一并致谢。


React.js Top 10 Articles for the Past Month (v.May 2018)

$
0
0

React.js Top 10 Articles for the Past Month (v.May 2018)

For the past month, we ranked nearly 1,100 React.js articles to pick the Top 10 stories that can help advance your career (0.9% chance).

Tweet of the month
  • Topics in this list: Patterns, Tutorial, GraphQL, Medium.com clone, Context, Learning React, Recat Native, Instagram clone, React 16.3
  • “Watch” React.js Monthly Top 10 on Github and get email once a month.

As an article ranking service for professionals, we take quality very seriously and make sure each article you read is great. Mybridge AI considers the total number of shares, minutes read, and uses our machine learning algorithm to rank articles. This is a competitive list and you’ll find the experience and techniques shared by the React leaders useful.

Course of the month:

A) Beginners: The Complete React Web Developer Course (with Redux)[5,106 recommends, 4.8/5 stars]

B) React Native: The Complete React Native and Redux Course. [16,415 recommends, 4.6/5 stars]

Rank 1

React in patterns: A free ebook about common design patterns used in developing with React.js. Courtesy of Krasimir Tsonev


Rank 2

Learn React.js in 5 minutes. Courtesy of Per Harald Borgen


Rank 3

A complete React with GraphQL Tutorial — RWieruch. Courtesy of Robin Wieruch


Rank 4

Build simple Medium.com on Node.js and React.js. Courtesy of Krissanawat​ Kaewsanmuang


Rank 5

How to Use React Context to Build a Multilingual Website Pt.1. Courtesy of Alex Devero

……[Part 2]


Rank 6

Gooact: React in 160 lines of JavaScript. Courtesy of Paul Marlow


Rank 7

How to React ⚛ Let’s see how learning React ⚛ in the right order can make it less overwhelming. Courtesy of Kent C. Dodds


Rank 8

React Native YouTube Replica. Courtesy of Marlon Decosta


Rank 9

Build an Instagram clone with React — Part 1: Create the UI. Courtesy of Christian Nwamba

……[Part 2]


Rank 10

React 16.3 — New Context API, Updated Lifecycle Hooks, New Ref API. Courtesy of Maximilian

That’s it for React.js Monthly Top 10. If you like this curation, read best daily articles based on your programming skills on our website.

Machine Learning Top 10 Articles for the Past Month (v.May 2018)

$
0
0

Machine Learning Top 10 Articles for the Past Month (v.May 2018)

For the past month, we ranked nearly 1,400 Machine Learning articles to pick the Top 10 stories that can help advance your career (0.7% chance).

  • Topics in this list: Roles of ML, Learning Paper, Virtual Stuntman, Annotated Transformer, Differentiable Plasticity, Medical image datasets, RNN/LSTM, Keras, CNNs, PyTorch, Audio
  • “Watch” Machine Learning Monthly Top 10 on Github and get email once a month.

As an article ranking service for professionals, we take quality very seriously and make sure each article you read is great. Mybridge AI considers the total number of shares, minutes read, and uses our machine learning algorithm to rank articles. This is a competitive list and you’ll find the experience and techniques shared by the Machine Learning leaders useful.

Course of the month:

A) Beginners: Data Science A-Z™: Real-Life Data Science Exercises Included.[11,909 recommends, 4.5/5 stars]

BDeep Learning: Advanced Computer Vision. [2,166 recommends, 4.7/5 stars]

Rank 1

Rules of Machine Learning: Best Practices for ML Engineering. Courtesy of Martin Zinkevich


Rank 2

Lessons Learned Reproducing a Deep Reinforcement Learning Paper. Courtesy of Matthew Rahtz


Rank 3

Towards a Virtual Stuntman. Courtesy of Xue Bin (Jason) Peng


Rank 4

The Annotated Transformer — Harvard NLP.


Rank 5

Differentiable Plasticity: A New Method for Learning to Learn — Training plastic neural networks with backpropagation. Courtesy of Thomas Miconi and Jeff Clune and Kenneth O. Stanley

……[Research Paper]


Rank 6

The unreasonable usefulness of deep learning in medical image datasets.


Rank 7

The fall of RNN / LSTM. Courtesy of Eugenio Culurciello


Rank 8

Keras and Convolutional Neural Networks (CNNs). Courtesy of Adrian Rosebrock


Rank 9

Tutorial on implementing YOLO v3 from scratch in PyTorch. Courtesy of Ayoosh Kathuria


Rank 10

Looking to Listen: Audio-Visual Speech Separation. Courtesy of Inbar Mosseri and Oran Lang

……[Research Paper]


<Bonus>

Open Images Dataset V4

That’s it for Machine Learning Monthly Top 10. If you like this curation, read best daily articles based on your programming skills on our website.

三和大神:中国的CyberPunk

$
0
0

三和大神:中国的CyberPunk

什么的是三和大神
主要是三个关键词

1 穷,住着8块一天的大通铺或者干脆睡大街,吃着3块一碗的挂比面,上着1块钱一小时网
2 懒,什么班都不想上,想着日结一天可以玩三天
3 奶头乐,日夜泡在网吧里练就一身网游技术,不用去想明天的生活

这三个要素,共同组成了尼国特色的社博朋克了,肥肠爆笑
说实话,尼国社会达尔文主义者西方哪个国家没有去过,不知道高到哪里去了,哪会没见过懒逼穷逼,至于这么大惊小怪的吗?
三和大神为什么会这么受到关注呢?

第一次知道三和大神,是在戒赌吧各位老哥的嘴里
各位戒赌吧老哥,输光了整副身家,在家里瘫痪,第二天高炮就要上门拿零件了,
仍面不改色上网发帖:打不了跑路三和,日结一天阔以玩三天,赌一票还能修修车灯,生活还不是美滋滋
画面感可以说是非常强烈了
那么这个老哥嘴里人间天堂三和人力市场到底是个什么样的地方呢?三和大神都是些什么人呢?

首先,三和有着整个中国甚至全世界最低的生活成本,2块钱两升的大水,上网不要身份证一块钱一小时包夜五块,三块钱一碗的挂比面,8块钱一晚的大通铺,连跟红姐谈几个亿的生意也只要一百块。
网友看到这里可能有点不服啦,你把印度和黑非洲放在哪里?你还真别说,三和真就不虚这些最强王者。
三和坐镇风水宝地,旁边靠着世界最大的高科技产业中心深圳,有着源源不断的用工需求,用着世界最便宜和手机和电脑;
世界最大的小商品集散中心广州,用的劣质小商品比黑叔叔们还便宜;
不仅如此,在这里治安良好犯罪率失业率双低,挂靠巨型都市,享受惬意的城市生活。
不用担心黑帮和军阀的流弹四处飞射,也不用跑二十里地去打水拿着长矛去狮子嘴里抢肉,楼下一碗地沟油盖饭6块钱唾手可得。
深圳作为实质上的中国人均收入第一城市,按照购买力平价计算,其实已经完全赶超了相当一部分,甚至大部分发达国家城市。在这样一个风水宝地可以说找遍全世界也没有第二个。

然后,各位三和大神,都是所谓的农民工二代,或者是城乡结合部二代。他们在非常小的时候就已经适应了城市生活。
看着电视上着网的他们都有着极强的获取资讯的渠道和能力,对于人权或者尊严这种奢侈品有了一些不切实际的的幻想,过多地了解了这个社会成因和现状,更难适应他们现有的生活环境。
他们绝无成为城里人的可能,但是他们也接受不了农村的生活
在这个现在这个商品社会的消费结构下,一成买生存,三成买生活,六成买未来。
在中国绝大部分人有手有脚基本就饿不死,但是有很大一部分人结不起婚租不起房,而受过高等教育的人大部分也买不起房给不起孩子提升阶级水平的教育。
三和大神作为社会底层劳工,在能力和生活质量的矛盾中找了一个混吃等死的平衡。
当然在都市白领和有房中产等其他阶级中也有不少有着同样心态的人,但是令网友惊诧的是,竟然在这么低的生活水平竟然也有人能搞找到平衡未免太厉害了。
不过其实也没什么好惊诧的,遍布蟑螂的大通铺,2块钱的大水,三块钱的挂逼面,本来就不是专门为三和大神准备的。
各地的工厂工地的宿舍,民工聚集的城乡的结合部,生活质量本来就差不多是这样的。
中国巨大的贫富差距一直就是中国工业的发动机之一,中国各大城市享受的超低价的公共服务和劳动力就是这些农民工提供的,就像《北京折叠》里写的那样,他们一直以非常低的生活成本生活在各大城市的边边角角,被隔离于市民和媒体的目光之外。
天天上班也不是不行,但是流水线工厂的日均12-16小时的工作强度,富士康的十四连跳,社会达尔文主义者见怪不怪的一些工厂老板的手段,大家应该也都知道了。当然绝大多数人都忍得了,但是其中也有极少的一部分的人受不了,这也不奇怪吧?
实际上不少三和大神已经试过了,工作了四五年,实际上并没有提升多少生活质量

最后,因为中国电脑网络和移动网络的普及,中国人进入了全民上网的时代,今天的中国是前所未有的资讯爆炸的世界。任何人都可以在网络上留下自己的足迹。

这些人的存在没什么稀奇的,他们在过去未来现在都一直存在,只不过他们以前都呆在农村,也不会上网,没人能看到这些人。
随着中国各大城市的迅速发展和房价上涨,城乡结合部和城中村的范围不断挤压,人口密度迅速上升,在深圳三和成功地建设起了一个在规模上和文化上不逊色世界上任何一个城市的贫民窟
但是在奶头乐娱乐至死的世界里,三和大神们卖掉身份证和它附带的所有基本人权,玩玩免费网游,撸撸小贷,日子美滋滋,居然也没造成什么重大的社会混乱。
因为在网游世界里,他们已经完成了阶级跃升,在文创产业高度发达的今天,奶头乐的效用已经发挥到了前所未有的程度。别管人家是月入五千还是月入五万,你花一块钱的一小时就能享受到跟他们一样的快乐。
管他是几个亿的老板富二代还是教授工程师,还不是跟你一样,玩LOL农药和传奇?还不是一样用AV满足性生活?有什么区别,就算有,有多大?
绿洲和攻壳机动队在这一刻前所未有地这么贴近生活,天朝特色社O会主义赛博朋克,诚不欺我

说实话这么一群人实际上是消灭不了的,削减社会福利饿不死他们(虽然本来就没有)。大家惊诧的是,这么一群中国人活出了印度和黑叔叔的风采。因为中国在多年的经济成长之后,阶级固化问题开始显现,各阶级失去阶级跃升的渠道,一个人维持自己原有的的生活阶级和生活方式并不要那么大的努力,。其他阶级也各有各的混吃等死者,只不过没有三和大神这么强的视觉冲击力。想通了这一点。三和大神们像印度人民一样开挂欢乐多,像黑叔叔一样日结玩三天,像日本草食男一样撸撸av做几个亿的生意就没什么可奇怪的了吧。

北大校园工人访谈记录发布之后,部分工友被警方带走问话

$
0
0

北大校园工人访谈记录发布之后,部分工友被警方带走问话

那些年的兄弟

前言

2018年5月1日,公众号“为了他们的微笑”发布文章《五一|不应被遗忘的群体——2018年北大校园工人访谈全纪录》,文章详细记录了北大校园工人的生活状况,包括当中不签劳动合同、超时加班等违法乱象。

文章于当日便被删除。由于公众的注意力主要集中在北大的百廿校庆,工人的访谈记录一事很快淡出人们的视线。

然而,事情后续的发展出乎我和其他参与回访的同学们的意料!

通过这几天的回访,我和其他同学陆续发现一些熟识的工友受到来自领导层的压力。而最让我吃惊的,是在回访工友时得知部分工友在报告发布当天被警方带走问话!

浮出水面

5月1日下午,公众号“为了他们的微笑”发布访谈记录之后,不到3小时就被删除。令我感到奇怪的是之前比较熟悉、经常一起打球并参与了访谈的几位保安接连几天都处于失联状态。

后来终于打通了某位保安的电话,然而令我吃惊的是,他的第一句话表示今后将断绝往来。当时我完全无法理解,一再坚持要见他一面,最终他同意了。见面之后,感觉他回答问题时支支吾吾,欲言又止,在我不停地追问下,这位工友终于吐露了他的遭遇:就在从5月1号下午报告发布不到四个小时,他就被自称北京市公安局的若干名警察带到学校附近的青龙桥派出所进行问话。

随后我又找了一下另外几位失联的工友,也是同样的遭遇。通过综合他们反馈的信息,事件的总结如下:

事件经过

在5月1日访谈记录发布当天,部分北大工友(目前知道的有三位)被自称北京市公安局的若干名警察带走至北京青龙桥派出所。从文章发出到有工友被带走,时间间隔不超过4个小时。

据目前了解的情况来看,被带走的工友都是北京保安服务总公司文安分公司下的北大保安,而且被询问的问题不少与北大的同学有关,诸如“此次访谈背后是否存在组织”“学生是否收了境外资金的钱”等。

在被问到这些问题时,工友们表示此次访谈是校内部分同学们善意的举动,报告内容也都是事实,并没有什么境外势力。在审讯期间,警方对工友甚至出现暴力举动,并威胁给工友的母亲打电话,甚至威胁要抓捕工友的家人。

在这种状态下,两名工友被连夜审讯,期间甚至被戴上手铐,在将近24小时过后才被放出来。警察甚至告诉某工友,只要他今后能时时汇报学生这边的新情况,就给他一定报酬。最后某工友不解地问警察,他们有什么罪,学生有什么罪。警察表示从目前来看工友和学生都无罪。

如果没罪,这就实在令人难以理解了,警方为什么摆出这么大的阵势?

我的困惑

出于对他们的保护,我不能透露是哪几位工友。

对于警方的行为,我和其他知道此事的同学表示难以理解,也难以接受。

不过值得一提的是,北大保安群体是此次访谈记录当中的重要部分,保安归文安公司管辖,在访谈记录当中有多处谈到文安公司的不合理用工现象,而从北京文安网找到的资料显示文安公司的背景如下:

得知这些消息后,我和其他同学不知道该说什么:文安公司违法现象如此严重如此普遍没人管理,警方却有精力因为一篇披露了文安公司用工不合理现象的访谈报告大动干戈。

近期鸿茅药酒事件与伊利事件不断地刷新人们的认知底线,如果不是在现实当中演绎出来,难以置信这样的逻辑竟然真的存在。

而与此等行为相比,北京大学同学们的行动才是当代社会应该提倡的。2015年北大的一群同学做了第一份后勤工人调研报告,在社会上造成了一定影响力,北大官方发声支持:这体现了北大学子的责任担当与人文关怀。

而如今2018年,当北大的同学们再次为校内工人发出声音时,在看似平静的舆论表面之下,却存在着如此多现实的困境!

百年前北大教授李大钊先生高举“劳工神圣”的大旗呼唤号召北大学子对工人们的关注,而如今北大同学的一份校园工人的访谈报告竟让警方如临大敌。试问北大同学们的举动究竟何错之有?北大工友何错之有?

五一|不应被遗忘的群体——2018年北大校园工人访谈全记录

来源:微信“为了他们的微笑” 作者:工人情况访谈小组

摘要

2015年底,北大某学生社团曾牵头组织过一场关于校内工人的调研并发布报告,该社团调查了工人的劳动权益状况、食宿生活条件、业余生活以及日常人际关系等方面。15年底的调研报告引发了学校师生和全社会的广泛关注,平日被符号化的工人有了鲜活的形象,燕园里另类“地下室生活”的一角也自此被揭开。

带着对2015年调研报告与校内工人的再关注,北京大学生命科学学院2015级本科生展振振等十余个院系的五十余名北大同学自发成立2018年北大工人情况访谈小组,以前述报告聚焦的内容为基础,进行了为期十天的集中访谈,写下这篇记录。

对于大家最关心的工人工资待遇与工作时间问题,在我们搜集到数据的279名工人中,有6人的月收入在每月2000元以下,一些工人甚至不得不打两份工,50%的工人工资集中在2500-3000元/月,这也是北大工人工资平均状况。工作时间方面,访谈结果显示41.3%的工人休息情况不符合劳动法规定。54.27%的工人告诉我们存在加班费的缺失。仅有10.05%的工人的加班费是根据劳动法获得的。由此我们看到,2015年的调研报告着重指出的工作时间与工资这两个问题,并没有明显的变化。

关于工人的合同持有情况和社保情况,访谈结果显示43.0%的工人没有签合同,在签了合同的工人中,至少有20.6%的工人手中并无合同。同时,77.19%的工人表示单位没有按照法律为自己缴纳五险一金。

除此之外,工人的食宿生活条件也是我们关心的重点,当我们走入工人宿舍时发现,工人的生活空间依旧相较狭小,通气条件仍然有限,地下室闷热和潮湿的环境没有得到明显的改变。

关于工人的精神生活方面,访谈结果显示,对文娱活动有需求的工人占38%。但与此同时,在工人群体中,没有时间和精力娱乐的占到29%。相当一部分工人反映工作时间过长,工作强度过大,由此也导致工人们下班后缺少休息时间,缺少精力。

上述所说仅仅是调研的一小部分,我们把这些内容列在开头,是希望能引起大家的重视,报告很长,但希望你能仔细看完,看完后会对北大工人的生活状况有更深入的了解。

我们在文末也提出了我们的建议,希望所有关心校内工人的老师、同学和朋友们能够仔细思考,共同建言献策。百廿校庆,两个甲子,校内工人不应被忽视,而本应属于劳动者的五一劳动节更不能让他们缺席。

目录

第一部分 前言

访谈过去时

访谈进行时

访谈的后续

第二部分 校园工人劳动权益现状

一、经济待遇现状及改善

合法权益的改善

学校洗碗间—校园外包单位的一角

二、精神生活与人际关系

匮乏的文娱生活

单调的人际关系

北大的平民学校

三、边缘化的身份

割裂的学工关系

被遗忘和不被尊重的身份

四、“被消失”的工友之家

第三部分 结语

 

前言

Foreword

访谈过去式

夜里11点半,北京大学的艺园美食屋依然灯火通明,由于售卖夜宵的缘故,这里关门通常会比较晚。此时,如果你正好路过,便可以透过玻璃窗看见小白房内还剩下的几位工人,他们正熟练地收拾食材、擦拭桌子、清洗地板,耐心地做好一天的收尾工作。不少同学在错过饭点时,喜欢来艺园美食屋吃上一碗热气腾腾的麻辣烫或者一份外酥里嫩的煎饼,而这些工人们的劳动正是我们便捷的生活不可或缺的条件。从清晨到深夜,从百讲到未名湖,燕园各处都活跃着工人们的身影。

无论是艺园美食屋的叫卖大叔,还是第二教学楼内的保洁大姐,亦或是学校南门的保安小哥,他们都是美好校园运行过程中不可或缺的体力劳动者,在本文的叙述中,我们暂且将他们称为北大校内工人。

他们是日夜奋战在校园各个岗位的普通劳动者,是北大学子们朝夕相处却依旧陌生的群体。

 

2015年底,我校某学生社团曾牵头组织过一场关于校内工人的调研并发布报告,该社团调查了工人的劳动权益状况、食宿生活条件、业余生活以及日常人际关系等方面。15年底的调研报告引发了学校师生和全社会的广泛关注,平日被符号化的工人有了鲜活的形象,燕园里另类“地下室生活”的一角也自此被揭开。

报告以专题介绍的形式,揭示了用人单位违反劳动法规、工人合法权益遭受侵犯、较为恶劣的食宿条件、下班后乏味的地下室生活、僵硬的劳动管理体制等诸多现象。

报告反映工人的合法待遇受侵害状况严重,且校方在对用人单位的审查和监管方面做得并不到位,存在漏洞。例如,超过三分之一的后勤工人在入职以后,单位没有与其签订劳动合同;只有不到10%的单位未全额给劳动者缴纳社保;超时加班情况普遍,大多数工人每天工作少则9小时,多则十余小时。

 

 

 

对此,校方进行了回应。首先,校方对于进行调研的同学热情与责任心给予充分的肯定与赞许,;其次,对报告本身能否科学客观地反映北大校内工人的真实情况表示质疑;最终,针对报告所反映的现实问题,做出了积极整改的决定和承诺。

 

两年后的今天,当我们回顾2015年底的调研报告和校方的回应时,就报告本身和其所产生的效果仍存在以下疑问和困惑:

1、2015年底的调研报告是否真实全面地反映了校内工人的状况?接受访谈的100人样本是否具有广泛代表性?《说明》里表示2015年采访的对象主要隶属于劳务外包单位及合作经营用工,学校直属用人单位的工人状况又是如何?

2、校方已在2015年底的回应中表达了积极整改问题的态度和决心,那么现在工人待遇的改善情况和生活现状又如何?经过查询,在《说明》发出后的两年中,我们没有找到有关此事的任何后续进展。不过我们发现:在调研报告的首发平台—微信公众号“北大马会”上,内容已被发布者删除。

 

3、两年时间里,燕园又走入不少工人与学子,二者目前的关系又如何?校园工人在原报告中被还原成了立体的群体,如今的工人是否重新走向标签与符号化?未名BBS上投诉帖的背后,作为投诉主体的学生和大多数情况下被投诉主体的工人是怎样真实的想法?

 

学一小白房是学校营业时间最长的餐厅之一
按早上七点到晚上十一点计算
除去中午休息的两小时,工作时间长达十四个小时
访谈进行时

带着对2015年调研报告与校内工人的再关注,发起人生命科学学院2015级本科生展振振通过线上招募,召集了十余个院系的五十余名北大学子,成立2018年北大工人情况回访小组,以前述报告聚焦的内容为基础,于近期进行了为期十天的集中回访。

为使此次调查的样本尽可能具有广泛代表性,我们在2015年的基础上扩大了样本量,一共调研了303位工人,占学校工人总数的10%。调研对象囊括北大校内绝大多数工人岗位,按工作单位可分为:餐饮中心、动力中心、校园服务中心、公寓服务中心,其中既包括校内直属单位,又包括这些直属单位下的外包单位。采访中我们按照行业特点确定对象比例,以小组为单位进行访谈,将个体访谈与集体访谈结合,力求真实、全面、客观地反映现象。

 

访谈的后续

访谈结束后,来自经济学院、法学院、医学部、中文系、经济学院等院系的同学组成成果汇总小组,将访谈的原始材料整理成稿。

报告主体分为五个部分,首先我们以专题的形式,对工人的经济待遇现状和改善情况、文娱生活与人际关系、身份认同等方面进行阐述。同时,对于在访谈中所了解到的在工人中比较受欢迎、影响力较大的团体–工友之家,我们也用一定篇幅进行介绍。在报告结尾,我们对上述问题进行了总结与反思,并提出了我们的思考与解决建议。

 

校园工人劳动权益现状

Labor rights

在本次访谈所覆盖的303名工人中,有男工217人(71.6%),女工86人(28.4%);按工作环境和住宿环境划分,有食堂后勤101人(33.3%),保洁、园林、动力中心76人(25.1%),建筑工100人(33.0%),保安26人(8.6%)。由于某些客观限制(例如难以接触到很多工人),所以我们不能完全按照分层抽样的原则确定各单位样本量,例如保安岗位的同质性较强,用工情况较其他单位简单,故只访谈26人即可基本反映保安群体的全部状况。

年龄和工龄

 

访谈对象以中年工人为主:40岁以上的占60%,30岁以下的年轻工人仅占17.53%。而根据男性年满65岁,女性年满60周岁的退休规定1,有95.24%的男工和51.61%的女工在退休年龄以内。

 

校园工人的流动性比较大,接近三分之一在校工作不足半年,57.3%的工人在校工作不足两年,其中有91.9%属于外包单位、合作经营单位或劳务派遣单位。在男工中,24.9%的工人有10年以上的工作经历,而女工中这一比例仅为4%。

 

工资待遇

 

截至目前,北京市最低工资标准为每月不低于2000元。但在我们搜集到数据的279名工人中,仍有6人的月收入在这以下,一些工人甚至不得不打两份工,接近1/3的工人月收入在5000元以上,这部分工人全都来自于建筑工,占我们访谈比例的1/3,,除了他们之外,50%的工人工资集中在2500-3000元/月,这也是北大工人工资平均状况。

在四个职业中,保洁园林动力中心的工人工资明显较其他三个职业低,这不仅体现在平均工资上,还体现在只有他们中还有人拿着2000元以下的工资。一名大姐这么告诉我们:“(干保洁)刚开始确实是受不了,后来慢慢地就适应了,想着为同学们、北大同学孩子们打扫卫生,感觉挺好的,也挺自豪。就是说,这个工资太低。定的太低了,保洁。”

 

我们将工人工资按2000元以下,2000~2500,2500~3000,3000~3500,3500~4000,4000~5000,5000以上分类整理,区间取中间值,2000元以下按2000计算加权平均,求得各职业平均工资

在加班方面,学校工人的加班形式不一,有的采取每天超时加班,有的采取休息日加班,有的采取总轮流休息综合工时制,劳动法规定加班时长如下:

 

而在这个问题上我们访谈到的269个工人中,他们提供的休息情况如下图:

 

我们可以看到,41.3%的工人休息情况不满足劳动法要求。

除此之外,我们还发现两个现象:

一、只有建筑工人才会日结工资,表面上他们有自己选择休假时间的权力,但迫于工程进度和养家压力,没有生病都会出工,每月休假往往达不到4天。按这样计算,78.9%的工人休假情况都不满足劳动法要求。此外,由于平时开支靠工头发零花钱,“日结”≠“日发”,每到年底,建筑工集体讨薪成为常态,例如2016年底沙特国王图书馆。

二、保安所在的文安公司虽然采取综合工时制,即综合计算周期内的某一具体日(或周、或月、或季)超过法定标准工作时间是允许的,但同样需要遵循劳动法延长工作时间每日不得超过三小时,但是每月不得超过三十六小时的规定。北大保安在轮休制下,每周休息时间不足一日,同样涉嫌违反劳动法。

2018年北京市最低工资标准目前为11.49元/小时(见《关于调整北京市2017年最低工资标准的通知》,京人社劳发〔2017〕149号),我们结合工人的上班时间来看看工人们的工资:

 

我们按15年调研报告的方式算了一笔新帐。还是以在农园二层某窗口工作的阿姨为例,一天工作10小时,每月工作26天。按劳动法第44条,她的加班工资应该是22天*2小时*11.49元/小时*1.5(平时加班)+4天*10小时*11.49元/小时*2(休息日加班)=1677.54元,加上北京市2017年的每月最低工资2000元,并且单位没有缴纳社保,除去个人所得税,能拿到接近3700元工资,但实际只能拿到3150元左右。

我们发现,这中间有500元左右的差额,那么这个差额是怎么出来的?在分析加班费怎么给这个问题的时候,我们找到了答案。

 

54.27%的工人告诉我们不存在加班费。仅有10.05%的工人加班费是按照劳动法给的。我们看到,2015年的调研报告着重指出这个问题后,在工作时间与工资这两个问题上,并没有大的变化。

与此同时,我们又将关注点放在工资条上,因为工资条作为劳动仲裁的重要依据,那么用人单位会给出怎样的工资条呢?按《工资支付暂行规定》,用人单位在支付工资时应向劳动者提供一份其个人的工资清单。

 

仅有17.29%的工人把自己的工资条拿到了手上。对于签字后收回的做法,我们不是很能理解,工人应有权保有工资条。

合同和社保

1)合同持有情况

依照《中华人民共和国劳动合同法》,劳动合同是劳动者用于确立,证明劳动关系,维护合法权益必不可少的。

 

本次调查对象来自不同单位,因为管理等多方面的原因,直属单位在合同,社保等方面更好。总体看来,43.0%的工人没有签合同,在签了合同的工人中,至少有20.6%合同不在自己手里。

 

2)社保状况

很多工人都是因为在老家赚的钱不多,所以跑到北京来打工以养家糊口。尤其是对于在老家没有办社保的工人来说,在到了法定退休年龄或者失去劳动能力后,便失去了生活的保障。从前文关于年龄的统计我们可以看到,学校存在雇佣超龄职工的现象,或许是因为这些工人在劳动力市场上更廉价。另一方面,当工人满50岁以后,便不再为其缴纳社保,这使得工人老无所依。本次共调查了285位工人的社保情况,数据如下:

 

食宿条件

2015年的调研报告给我们展示了工人不一样的生活环境,此次调研,我们发现工人住宿的地点较之前没有发生较大改变,约一半的工人仍住在地下室,集中在36楼、39楼、42楼、45乙楼、畅春园、畅春新园公寓的地下。

 

 

访谈时一位工人向我们倾诉,在11月大兴大火之后,他们曾一度被要求搬离,但由于无处可去,之后仍然住在地下室。

 

根据《北京市人民防空工程和普通地下室安全使用管理办法》,地下室内不得设置上下床,人均面积不得少于4平方米,但当我们走入工人宿舍时却发现,狭小的个人空间,有限的通风条件,闷热和潮湿的环境仍然没有得到改变,唯一让工人高兴的是,在2015年的调研报告发布后,宿舍被重新粉刷了,床和柜子更换了,部分宿舍装上了空调。

 

位于某楼地下的工人宿舍

据统计,除了在食堂有工作的工人外,其余吃饭基本上都要花钱,其中光华楼内工作的工人是例外,在楼下有专属的工人食堂。统计中有13%的工人吃饭被扣税,除了校园保安,还有不少保洁工人,也就是说往卡里冲100元实际只能消费85元,每次刷卡都会扣除额外15%的税。多数买饭的工人会选择学一食堂,艺园食堂以及燕南食堂等便宜窗口,包吃的工人时常吃到的是食堂买剩下的饭菜,如果剩下的是好菜就吃好的,一般的就吃一般的.

 

学校洗碗间–外包单位的一角

以洗碗间为例,所有食堂的洗碗间都被一个私人老板承包了,在洗碗间工作的人,共计有两百人左右。

这两百人日常的工作是怎么进行的呢?一般而言,早上六点到七点之间开始工作(要值班的早上五点就要到),清洗昨天以及早上的餐具,一直到中午十一点。这时能稍微休息会,吃中饭。到了十一点半以后,食堂开始营业,就要开始收餐具了。期间一直站着,倒剩饭剩菜,把盘子收好,在密集的人群中穿梭过去,送到洗碗间。

下午一点,人群渐渐散去,收餐具也就结束了,但是,实际上为了完成所有的工作,他们还需要继续干到一点半乃至两点。这些时间是不算在加班里面的。到了下午四点钟,经历两个多小时的休息之后,他们又要开始晚上的工作了。这时会一直干到晚上七点,重复与中午一样的工作:收餐具,送餐具,洗餐具,收餐具,送餐具,洗餐具。七点吃了晚饭,回到在地下室的宿舍洗漱,休息。

 

这是正式工一天的生活,洗碗间的工作是非常累的,双手经常要泡在水中,长时间的处在消毒水和水汽弥漫的空气当中,对碗筷的要求也很高。所以很少有人能坚持干下去。跟一顿饭几千人次的人流量比,一个食堂的正式工只有五到十个人。巨量的工作加重了正式工的负担,所以,老板还雇了小时工,他们只负责中午或者晚上的收餐具工作。

他们吃什么呢?洗碗间作为承包单位,吃的饭是自己做的,往往是炒土豆丝,凉拌豆芽等素菜。有时候食堂会卖剩下一些菜,他们也可以吃一些,剩的菜五花八门,如果有一些荤菜,就可以吃得好一些。

虽然有休假,但是这种休假更像是玩文字游戏:每月有两天的假期,但是这两天假是拆分成四个半天来算的。这半天如果是上午,就是干到中午十点或十一点,休息到下午四点,继续上班,如果是下午,就是一点下了班之后,休息到晚上。也就是说,每次不过是少干了3个小时的时间,老板把这三个小时,叫做半天。

与巨大的工作量相比,更令人难以忍受的是洗碗间的待遇问题。

正式工的工资为三档:2600元(普通员工),2900元(领班),3200-3500元(主管)。小时工的工资是8元/小时,远低于北京市非全日制最低工资小时标准22元/小时。

按《关于调整北京市2017年最低工资标准的通知》[1]对正式工而言,按每天九小时估算,休息时间都放在周末,那么每月(30天)的工资也应为11.49*(8+1*1.5)*22+11.49*2*9*4+11.49*2*6*4=3780.21元。如果算上超时加班以及节假日工作时间,工资能达到4000元以上。

然而现实却十分荒诞,他们所拿到的,是固定不变的工资,大多数普通员工拿到的都是2600元至2900元之间,即使是加了班,工作超了时,也没有什么加班费的说法,同样,也是没有劳动合同、没有社保的。

外包单位雇佣的大都是45岁以上的工人。他们劳动能力有所下降,已经到了退休年龄,受制于之前恶劣的工作环境,也不会有退休金。双手还能劳作,还有孙辈需要抚养,他们就不愿意也不可能闲着养老。但是年老体弱,大多数单位都不可能要他们,就只好来这里。不干,找不到其他工作。干了,就得拿这个工资。

超时的劳动,休息时间的缺乏,薪水的低廉,严重违规的劳动条件。难以想象,在2015年的调研报告发出两年之后,洗碗间的两百位工人们仍然过着这样的生活。

品质校园的背后,我们很少注意到洗碗间的工人们竟承受如此待遇。学校在规范外包单位用工合法性时,应在何种范围行使自己审核与监督的权利与义务?

精神生活与人际关系

 

精神文化生活是人的基本需求,人际关系也能反映出人的精神生活质量。那么北大工人们的业余生活是怎样度过的呢?

访谈结果显示,下班后选择玩手机、玩游戏(57.3%)和看电视(40.4%)的占了绝大多数,其他的生活方式均未达到10%,看书和锻炼、散步加起来也只有8.0%。据我们了解,玩手机的工人多是玩一些手游,看看快手视频,再刷刷朋友圈就睡觉了。选择看电视的工人则是对智能手机不熟悉或者根本没有智能手机,花几十元买来一个二手电视,“看两年坏了就扔了,再买一个”。此外,我们访谈到的工人大部分住的都是八人间的集体宿舍,爱人儿女都在老家或者分居,定期进行视频聊天,成了很多人的选择。

这也与我们走访的经历相符。最常见的情景之一就是推开宿舍的门,几个工人或者坐在床上、或者围坐在电视机旁边,目不转睛的看着(大多是抗日神剧),时不时的闲聊几句。“不看电视还干啥,下了班也干不了啥事情嘛,也就是有啥看啥。”那些没有电视机的宿舍,宿舍里却是相对安静,工人们往往躺在床上玩着手机,跟家人视频,彼此没有什么交流。有些人会在宿舍喝些酒聊聊天,气氛才热烈一些。有的宿舍情况要更糟糕一些,宿舍里没有WiFi。甚至连手机信号都没有,一进宿舍就失联了。“宿舍里装网络很麻烦,还要自己买路由器自己拉网线,不像你们学生,宿舍里都是装好了的。”

即使是看书,也显得很奢侈(4.3%),在我们调查到的工人中,有11位工人业余生活会读书,而且全是保安。但是据他们说,即使是读书,也只是消遣,读读小说与成功学。只有2个人仍然在读着专业书籍。虽然很多人是慕名而来,抱着来这里学习考取文凭的目的,但是在这里呆了几个月之后,能坚持看书的也很少了。不规律的上班时间,频繁的加班(加班时一天工作16小时),宿舍里不上班就打游戏的室友,导致他们很难能有一个合适的氛围静下来学习。

建筑工地的工人们,精神生活更加匮乏。他们住在简易板房里,只有12V的电源,用来给手机充电。同样没有网络,出了宿舍,走到路口才有wifi,有时候去那跟家里打个视频电话。在宿舍里就是洗洗衣服聊聊天就睡觉了。与其说精神文化生活,不如说是消磨时间。

某些东西是数据中无法体现出来的,在我们的访谈中,提到业余生活,有的工人会愣住,在我们的进一步询问下,才会说一两句:“能干啥,就歇着呗。七点钟才下班,下了班就挺晚了,出去也干不了啥,在宿舍玩玩手机也就打发了。”

 

对文娱活动有需求的工人占38%。而与此同时,在工人群体中,没有时间和精力娱乐的占到29%,也相当普遍,在访谈中,大家都普遍反映工作时间太长,工作强度太大,导致工人们下班后缺少休息时间,缺少精力。总的来说,工人对网络有一定的需求,达到16%。除此以外,还有极少一部分工人对班后的精神文化生活持无所谓的态度。

繁重的工作,有限的休息时间,让许多工人的精神领域陷入空虚和匮乏。他们很少有娱乐的时间和机会。尽管如此,我们仍然发现很多女工人喜欢唱歌跳舞,男工人喜欢下棋打球,他们都对这些活动表现出很大的兴趣和渴望,但是因为缺少平台以及必要的精力,他们的爱好无法实现。

我们还遇到了一些工人,这部分工人一直在校内寻找为自己开放的课堂,他们希望加入一些社团,学一些感兴趣的东西,诸如书法,乐器等。而由于工作时间的限制,他们往往很难有完整系统的时间投入兴趣中,“老师每周的课都是留作业的,但是下了班就七点多了,收拾收拾哪还有时间呢?而且宿舍里还很吵闹,静不下心来,只有趁着休息时间别人都不在练一练。”采访中,一位工人在谈及他报的一个兴趣班时如是说。

 

 

在人际关系方面,根据统计,受访的303人中,很少与人交流的占14.2%,主要与家人、室友、老乡、同事交流的占到50.5%,其他人际关系广泛的仅有1.7%。

调查反映出工人的人际关系普遍范围有限。部分工人很少进行人际交往,而人际交往的建立模式较为单一,以旧有关系为主,局限于亲人、老乡、同事等纽带,拓展面较窄。

根据我们的访谈,工人反映阻碍人际关系的原因主要有:

1、工作时间差异。部分宿舍不同工种的工人混住,上下班时间差异较大,常有部分工人回到宿舍时其他人已经休息的情况。调查员在某间宿舍访谈时,只有一位工人坐在床上看手机,其余几位工人已酣然入睡。这位工人表示自己上下工时间不固定,而且经常在夜间干活,“大家时间都不一样,就不去打扰了。”当调查者约晚9:30离开时,还有部分工人正在回宿舍的路上。

2、缺乏交往平台。由于校内工人组织的缺乏,以及工人对其了解、参与程度度低,工人的人际关系的发展主要依靠传统社会关系。如通过老乡关系相约一起打工。

3、岗位流动性强。一些岗位因工作辛苦等原因,流动性较强,难以深入沟通。调查员在某宿舍听工人们讨论自己的工龄,都没有超过一年。此外有些性格较为外向的工人也反映,跟室友关系不错,但室友也会经常变动,“工作太辛苦,很多人干不动,往往还没熟起来就换人了。”

4、工作强度大、工时长及休假少。工人在下班后普遍反映较累,所以常常只想休息,不愿聊天或出去玩。

5、领导禁止串宿舍。部分宿舍区禁止串宿舍,限制了下班后可交往的范围。

综上,工人的人际交往常受到多种因素的限制,因此社会关系普遍较为局限。

北大的平民学校

2006年,北京大学继承蔡先生的“劳工神圣”的真谛与精神[2],重新创办了北大平民学校。平民学校目前已经运行了十二期,每年三月份定期举行开学典礼,选举班委,开始为期三个月的教学活动,包括主课、计算机、英语兴趣小组、课外教学活动,直到六月底结业。平民学校的教员包括大学教授和学生志愿者,教授给工人普及大学通识教育;学生教工人学英语,使用计算机,培训基本技能。

作为关注校内工人学习发展和丰富业余生活的机构,平民学校在工人中的印象究竟如何呢?

在同一些工人和学生志愿者的交流中,我们发现平民学校对工人的学习和生活起到了一定的促进作用,但是仍然存在着一些不足。

在授课内容上,平民学校的主课包括文学诗歌,科技,还有心理健康,法律知识,由北大教授直接讲解,覆盖面很广,以介绍性、拓展知识面为主。英语和计算机是两门大课,为了将来择业储备技能,不少年轻工人都会对此特别认真。英语课和计算机讲课的都是学生志愿者,准备比较充分,讲课时从最简单的开始讲起。

对于学习课程,一位工人表示:“学的东西有用处,就是用的少还是不熟练。”几位志愿者说“我觉得好像工人们平时接触电脑的机会不是很多,要用Office的机会就更少了,感觉他们在计算机课上学到的东西不容易记住,更不容易掌握了。”“我觉得这些课的性质更偏讲座类,要说收获可能看个人了。”“老师上课可能不必要地讲了很多工人听不懂的知识”。

平民学校每期学员100名左右,覆盖全校工人的3%。在选拔方式上,学员名额为分配制,每个单位的名额是相对固定的,而且领导指定居多。总的来说,参与者很多是本职工作比较轻松或直属单位的年轻人,如勺园西餐厅、百讲、幼儿园,体力劳动量大的工人很少,在一些外包单位,如洗碗间、物业公司中,几乎没有工人听说过平民学校有名额。

从出勤情况看,每节课出勤率大约2/3,工人因为加班或者劳累,不一定愿意来上课。每次都有拿不到结业证的,全勤的很少。单就英语课来看,参加的工人越来越少,到期中之后,甚至出现了一次只去两三个人的情况。

在平民学校里,主要负责和决定授课内容的是学生志愿者和老师,但作为平民学校的主体,工人的主体性并不强,仅仅是作为一个被授课的对象存在。这种不对等的权力关系也导致平民学校并不能完全符合工人的需求。一位工人回忆,在讲到劳动法时,很少涉及工人在劳动权益、劳动纠纷上的规定,这种缺乏也导致工人们面临劳动权益受损害时,很难能拿起法律武器为自己维权。而且,工人,学生,教师三者之间交流少:一般只有班委和老师接触稍多,普通学员和老师基本没有接触;很少有学生志愿者在课后和工人交流;学员间除了上课、偶尔几次外出游玩和排练外,也没有其他活动,学员间除了可能有的私人关系外几乎没有什么集体关系。就如一位志愿者所说:“几乎就是上课的关系,没有其他交流,除非是同事。”

总体而言,我们认为在平民学校里,工人主体性的缺乏,使得平民学校的开展受到了较大的限制,校内工人的需求也未能得到有效的满足。

边缘化的群体

割裂的学工关系

未名BBS作为发声主体为学生的平台,透过它所呈现出来的学工关系是学生与工人之间的权利关系不对等。工人们自己一般没有BBS的账号,一旦发生纠纷(例如食堂投诉),BBS上的投诉帖一般是学生单方面呈现问题,并非问题反映的不符合实际,而是矛盾另一方的缺失本身就反映出体制的不健全,直接后果是被投诉员工经济上的处罚(实际上是有投诉,必处罚),间接后果是真相可能被隐藏。

在我们深度访谈的17位后勤工人中,有8位工人说到了自身和学生老师的交流情况。有6位提出和学生的交流太少,工作得不到学生的尊重和理解的问题。

在我们调查的204位学校后勤职工(178位食堂、保洁工人和26位保安)中有47位职工反映曾经遭遇学生投诉或者与学生发生冲突,占调查总数的23%。

 

1、近一段时间bbs举报历史

我们抓取了未名BBS2017-2018的第二学期燕园食宿版的投诉情况。投诉的帖子主要有几种情况:食堂人员服务态度差,建议撤换菜品,食堂卫生环境不好,餐具不洁或菜品中出现异物以及外来人员用餐挤占用餐空间。直接涉及学工关系的是餐具不洁一项,该类投诉在本学期中有83例,外加投诉服务态度的帖子7例,共90例。在所有研究样本中,发声的几方有:学生及其代表食堂监督员,餐饮中心以及食堂经理等直接管理人员,而唯独缺少了员工这一直接矛盾的主体。

2、bbs投诉的特点

投诉同学主观情绪较大

我们看到:BBS上一条题为《凌晨看到楼里保洁大叔工作》的帖子的评论区中有的同学跟了如下的一条帖子:“不过其他的说得有理诶……一般去反应情况只是希望食堂改善,没人是奔着让他们扣工资去的。”这是食宿版留出空间让学生发帖的本意,但是实际情况却并非如此。同学们进行投诉时,发出的帖子却带有一定的主观情绪,例如《震惊,……》、《我发誓,……》、《……,这是要毒死校长吗?》等等,这些帖子更多的从表达个人不满出发,并不利于问题的解决,当事人也无法对此进行回应。最终只有官方的处理结果,摘取一段官方回应“对于你在就餐时的不愉快感到抱歉。食堂已经对员工进行批评,并对员工进行再培训,严格要求,避免此类事故再次发生”。

同学和员工之间直接交流途径的缺失

当出现投诉帖时,处理结果是经过两方代理沟通得出。一方是监督员代表学生,一方是餐饮中心代表工人,但是矛盾的直接双方却缺乏直接交流。在学生看来,只有一个双方代理人之间沟通的处理结果,并不清楚一些具体的细节,便容易主观上根据自己的感受做出一些推断;而在工人看来,容易理解为学生不理解,没有体谅他们的工作。

投诉的后果

BBS上曾有一题为《论食堂被舆论监督吓坏》的帖子,

 

“包子凉了宁可不卖也千万不要被发帖‘天啊噜,学一食堂包子冰冰凉’,……,千万别拍照片发论坛上啊”一段反映出食堂员工受投诉帖影响之大,一旦发生投诉,罚钱在所难免,金额从100元到1000元不等。但是这种处罚结果并不会展现给同学,而是食堂内部的决定。在调研中,学一食堂一位工人向我们反映:“也会有学生投诉,这时领导的做法是扣工资和扣分,所谓扣分就是如果因为投诉扣了两分,之后每个月的工资都会扣掉200元,没有理由。”

住在畅春新园负责教学楼清洁的一位大姐向我们反映被学生举报厕所异味较大之后被扣工资50元。一部分同学对此也有所反映,BBS上有两条帖子写道:“本来一件小事,偏偏扣了500.食堂表个态,大不了说几句,下次注意点就过去的事,谁去扣的钱?扣的钱没有到学生手里,挨骂的成了学生。这件事到底从谁手里解决心理都有数,干什么都可能遇到极品顾客,但是极品顾客向你老板抱怨个小事,老板一下子扣好几百,那就是老板的锅。”, “所以有时候感觉,要是能有办法绕过上面和他们沟通就好了……自己也不会变成扣工资的直接原因……”

不仅BBS,为了进一步说明同学和后勤服务人员之间的直接交流的缺乏,我们举在访谈中了解的一个案例。之前负责某宿舍楼清洁工作的大姐屡次发现有学生大便之后不冲水和把卫生纸扔进坑里导致下水管道堵塞的行为。如果卫生间出了任何问题,都由她负全责。一旦有异味被同学举报,面临的就是罚钱。于是,她试图告诉学生不要在做这样的不文明行为,却苦于没有任何渠道。最后没有办法她就在厕所门上贴了一个条子,上面写着“上完厕所要冲水,你是北大博士”。但是,很快被宿管撕了下来,并且被严厉批评,说这是“侮辱北大同学”。

由此,我们可以看出,主要问题在于:一、现实中学工关系的不对等。一旦出现摩擦纠纷,工人面临的是经济制裁,而工资则是他们生活的保障。站在管理者的角度,施以经济压力是简单有效的约束手段,但是对工人而言,则是影响生存的惩罚。正是这种难以承受的压力成为了学工关系割裂的首要原因。二、发声渠道的缺失。处理纠纷和判定错误的基础是充分听取双方的意见,目的则是更好地建设校园,提供更好的服务。但是这种无形中取消一方辩解权的制度,却恰恰做不到这两点,自然问题会不断出现,建设和谐校园的一大方面—和谐的学工关系也难以真正达成。

被遗忘和不被尊重的身份

掏不出的证件和标签化的形象

在我们的话语体系里以及文安公司的招工信息中,北大保安都被塑造成一个维护校园秩序和有上进心的群体,但是在现实的接触中,误会和不理解依旧在师生与保安个群体之间的关系中占主要部分。进校门查证件是保安的职责所在,目的就是为了防止不明身份的校外人员进入学校带来音画,道理上讲的通的问题却常常不被师生所理解。“有的老师和同学嫌麻烦,不到跟前你不跟他要也不会主动出示,有时候还会抱怨说都走了多少遍了还查,但是人太多我们这流动性又大,很难记得住所有人,这也是职责所在啊,但是还是不被理解,其实只要提前掏一下证件双方就都好做了,也不会一帮人堵在后面。”据他们说,有的时候拦电车被车撞,查证被吼,查车被领导骂,被一些老师威胁辞退等情况也时有发生,有个保安说到“自己也很委屈,有时候也想发火,但是还是忍下来了,只能一遍遍解释,情绪肯定也不会太好”。门岗的人流量确实很大,很容易发生一些矛盾,但是他们的心声却很难表达出来。

被遗忘的群体

在食堂收餐盘的保洁员在工作中同样是被忽视的,燕南和勺园食堂的餐盘回收处,在处于工作台后的保洁员和送餐具的学生之间设置了一道隔板,隔着这层隔板,学生只能看到工人的收餐具的手,而工人则只能看到学生的手和餐具。他们的音容笑貌,他们的言谈举止都被省略了,展现出来的只有一双忙碌的手,迎来送往的都是餐具,用个不恰当的比喻,人与人之间的关系被人与物之间的关系所代替了,而隔板背后的人是谁已经不在重要。可是,他们毕竟是活生生的人,跟所有人一样,有自己的生活轨迹,有自己的想法,他们也住在北大,为北大的发展奉献着自己的劳动,劳动的成果被称赞着,劳动的主体却被遗忘了,甚至自己的容貌都只能隐藏在隔板后面,更不用说名字、年龄和籍贯,一些同学有时候想要微笑感谢都无从做起。

 

在我们的访谈中还有一个与我们息息相关却被我们忽略的群体,那就是宿舍楼内的保洁员。他们三班倒着上,一般是早中下午各一次,每两层楼一名保洁员负责。他们的身影往往被我们忽略,或者从来就没有出现在我们的视线里。“我在公寓楼(内干)保洁,每天三点上班、你们都睡觉了,我们上班,厕所刷刷。”有的学生不知道或者不了解楼内的保洁员,有的同学并不体谅他们。《凌晨看到楼里保洁大叔工作》一帖评论区里,有这么一句话“之前从来不知道宿舍楼里还有保洁”,在访谈中一位阿姨说:“有些学生嫌弃保洁人员,在厕所门上贴告示被说是侮辱学生,一些学生乱丢垃圾,尿到饮料瓶里,一些学生嫌厕所臭,被举报扣工资50。”从上述材料可以看出来,宿舍楼内的保洁员虽然就在我们生活的地方工作,而我们对于他们的存在却很陌生,对于他们的态度也不甚友好,这一定程度上也构成了他们主体性的缺失的原因。

学校工会

工会在我国是体现工人主体性和维护工人权益的主要组织形式,在《工会法》中的定义为:“工会是职工自愿结合的工人阶级的群众组织”,《工会法》第二章第十条则指出:“企业、事业单位、机关有会员二十五人以上的,应当建立基层工会委员会;不足二十五人的,可以单独建立基层工会委员会,也可以由两个以上单位的会员联合建立基层工会委员会,也可以选举组织员一人,组织会员开展活动。”

通过查询北京大学官方网站的资料,我们明确北京大学是存在工会的,《劳动合同法》第64条规定:“被派遣劳动者有权在劳务派遣单位或者用工单位依法参加或者组织工会,维护自身的合法权益。”但是,在我们访谈到的工人中,只有3%的工人对于工会有一定的了解,参加工会的比例更是只有1%。在以上我们提到的组织和活动中,一些工人介绍说工会的会费为一年50-60元,而工会组织活动的频率很低,工会的人员并没有向工人具体地介绍过工会的参与方式和运作情况。这就导致很多人对工会一无所知,即便有的工人交了会费,实际参与度却依然很低。据工人反映,工会的常规活动是发放一些慰问品,如食用油等,而且慰问品的价格,与所交会费大致相符,比市场价稍低,“像团购一样,东西比市场价便宜些”,一位工人笑称。

由此反映出的两个问题,一是工会本身作为工人的自组织,在丰富工人生活,维护其合法权益方面的实际职用并不理想;二是工会的参与机制和覆盖范围还有待于进一步改进。另外,工会所组织的活动基本为定期活动,并无日常活动,这也进一步削弱了工会在工人之中的影响力。

“被消失”的工友之家

工友之家是我们在调研过程中发现的一个工人和学生一起自发组建的文娱平台,但是自2015年的调研报告后就消失了。从访谈的结果来看,工友之家是工人们丰富生活,打发业余时间的好去处,在校内工人中影响广泛。

一位来北大工作了七年的工人说:“那时候下班没什么事情,工友之家的活动一个不拉的都参加了,什么唱歌,大合唱,跳舞,电影,讲课,量血压血脂,按摩推拿等等,一下了班,吃了饭就过来了,当时活动都在二教地下,虽然地下环境灰尘很大,但是大家玩的都很开心。”

 

我们在网上找到有关工友之家

在二教地下开展活动的照片

“我不会跳舞唱歌,一开始是我同事带我过去,看着其他人跳,认识了很多人,后面我就一直自己去了。”有的工人还介绍说,“跳舞一开始是学生带着跳,后面去跳的几个大姐自己就结伴组成了舞蹈队,还动员了想学的一起参加,舞蹈队的人一有时间就聚在一起,不光跳舞,还相互帮忙。”

除了活动,工人眼中的工友之家似乎更像一个集体,在那里工人走出了原子化的社会关系和标签化的形象。同一单位,同一住处原本陌生的人熟悉成了朋友,学生和工人的隔阂被打破,热心的同学们给工人带来了温暖。

“现在的人都好现实,这些学生不图名不图利,真不容易。当年工友之家可红火了,人可多了。那时候有同学会打着拍子教大家唱歌,指挥大家合唱。这些学生平时生活中都很关心我们,真比得上亲人了。”

与工人相比,工友之家在校园学生中间的影响力要小得多,从16年开始,工友之家的声音逐渐减少,入职稍晚的工人甚至没有听说过工友之家。据说跳舞的场地被改造,没了地方,同时不少单位因为对工人和学生接触存在某种顾虑,因此限制本单位的职工参与工友之家的活动。

“以前还能和学生工人一起娱乐,在学校能有个家一样的感觉,现在在楼里值班,就我一个人,经常加班到12个小时以上”。某师傅来北京六年了,在北大换过两份工作,虽然已经有五十多岁了,但为了还贷款,仍然在外打拼。刚来时该师傅想学英语,通过一次偶然的机会遇到了工友之家的学生,学到不少有用的知识,之后便融入了那个集体。2016年之后,该师傅换到了学校外包的物业公司,平时负责楼内维护秩序,登记进出人员,楼内有很多老师,但平时更多的是被叫去打杂,没有交流,一年来的这种工作让他感觉很闷,他很怀念过去在工友之家的日子。

和该师傅一样,对工友之家表达类似想法的工人还有很多,大家都对工人之家的消失表示疑惑和惋惜。

结语

Epilogue

在此次访谈结束后,当我们汇总出访谈数据,并与2015年的报告进行对比之时,我们发现在学校进行整改两年后,工人待遇中不合法的现象仍然泛滥。四成以上的工人拿不到自己的劳动合同,七成以上的工人没有完整的社保,半数工人的加班费仍然不明不白。直属单位的工人依旧是劳务派遣为主,外包公司占据了学校大量的工作岗位,却游走在法律之外。地下室拥挤的生活并未得到根本改善,两点一线,乏味枯燥构成了生活的大部分。

当我们放下统计数据,放眼社会,何处是归途?学校仅仅是社会的缩影,校内工人只是千万北京外来务工中的一员,等待他们的不应该是诸如大火之后的搬迁,还应该有我们的关注。

真正品质校园的建设,离不开劳动者的汗水,也离不开对劳动价值的承认与尊重,在依法治国的今天,值五一国际劳动节、北大120周年校庆和马克思诞辰200周年到来之际,我们尝试以下呼吁:

1、校方及后勤主管部门增强责任意识和担当意识,切实重视本访谈所揭示的问题,会同各方加强监督和管理,敦促相关用人单位严格遵守法律法规,调查在用工方面存在的不合法现象,及时纠正劳动合同缺失、不合理罚款、发放加班费不规范、漏缴社保等违法之处,切实保障工人的尊严与合法权益,积极改善工人食宿条件,并将调查和整改的详细结果尽早向校内师生进行公示。

2、校方协调后勤等部门在工人日常活动场地和资金等方面给予大力支持,为校内工人提供能够在日常进行文娱休闲和自我提高的平台。

3、校方加强制度建设和监督机制,切实保障学生和工人的参与权。如可借鉴食堂监督员制度,建立校内工人权益保障与监督小组,由校方、学生、工人、用工单位等各方产生相应代表组成。

4、所有关注关心北大工人的师生,能够共同努力,关注校内工人权益,助力学校的后勤用工制度建设,推动北大早日向世界一流大学迈进!

北大百廿校庆,校内工人不应被忽视,而本应属于劳动者的五一劳动节更不能让他们缺席。

最后祝广大的劳动者节日快乐!

2018年北大工人情况访谈小组

2018年5月1日

 

注:1、为保障受访工人的隐私,所有身份信息均在不影响访谈分析结果的前提下进行了相应处理,请勿直接对号入座。

2、本访谈所展现的只是北大校内工人现状的一部分,我们欢迎校内媒体/自媒体等个人或组织针对相关问题开展多角度的调研与思考。

3、由于各种限制,本访谈定有诸多局限之处,如果您对本访谈以及访谈所揭示的问题有任何意见或建议,请发信至pkulabor2018@163.com。

[1] 北京市的最低工资标准调整为每小时不低于11.49元,非全日制从业人员小时最低工资标准提高为22元/小时。

[2] 1920年,在北京大学的五一纪念会上,蔡元培校长发表了题为“劳工神圣”热情洋溢的演讲。他提出“凡是用自己的劳力做成有益他人的事业,不管他用的是体力、是脑力,都是劳工”,并强调“劳工当自尊,不当羡慕其他不劳而获之寄生物”。

The State of Cryptocurrency Mining

$
0
0

The State of Cryptocurrency Mining

For those new to the blog, I am the lead developer of Sia, a blockchain based cloud storage platform. About a year ago, myself and some members of the Sia team started Obelisk, a cryptocurrency ASIC manufacturing company. Our first ASICs are going to ship in about 8 weeks, and our journey with Obelisk has given us a lot of insight into the world of cryptocurrency mining.

One of the reasons we started Obelisk was because we felt that coin devs in general had a very poor view into the mining world, and that the best way to understand it would be to get our hands dirty and bring a miner to market.

Since starting Obelisk, we’ve learned a lot about the mining space, as relevant to GPUs, to ASICs, to FPGAs, to ASIC resistance, mining farms, electricity, and to a whole host of other subjects that coin developers should be more aware of. We aren’t able to share everything that we know, but we’ve pulled together information on a set of key topics that I think will be helpful to cryptocurrency designers and other members of the cryptocurrency community.

ASIC Resistance

We’ve been pessimistic on ASIC resistance for a long time, and our journey into the hardware world solidly confirmed our position. Hardware is extremely flexible. General purpose computational devices like CPUs, GPUs, and even DRAM all make substantial compromises to their true potential in order to be useful for general computation. For basic hardware development, most algorithms can see substantial optimization just by taking away all of that generality and focusing on one specific thing.

The vast majority of ASIC-resistant algorithms were designed by software engineers making assumptions about the limitations of custom hardware. These assumptions tend to be incorrect.

Equihash is perhaps the easiest target, as a lot of people were quite confident in the equihash algorithm, and we’ve been saying for close to a year that we know how to make very effective equihash ASICs.

The key is to make sorting memory. A lot of algorithm designers don’t seem to realize that in an ASIC, you can merge the computational and storage pieces of a chip. When a GPU does equihash computations, it has to go all the way out to off-chip memory, bring data to the computational cores, manipulate the data, and then send the altered data all the way back out to the off-chip memory.

For equihash, the manipulations that you need to make to the data are simple enough that you can just merge the memory and computation together, meaning that you can do most of your manipulating in-place, substantially reducing the amount of energy used to move data back and forth, and also substantially decreasing the amount of time between adjustments to the data. This greatly increases efficiency and speed.

Needless to say, we weren’t the least bit surprised when Bitmain released powerful ASICs for equihash. The Bitmain ASICs are actually substantially less performant (5x to 10x) than our own internal study suggested they would be. There could be many reasons for this, but overall we think that it’s pretty reasonable to assume that more powerful equihash ASICs will be released in the coming months.

We also had loose designs for ethash (Ethereum’s algorithm). Admittedly, ethash was not as easily amenable to ASICs as equihash, but as we’ve seen from products on the market today, you can still do well enough to obsolete GPUs. Ethash is by far the most ASIC resistant algorithm we’ve looked at, most of the others have shortcuts that are even more significant than the shortcuts you can take with equihash.

At the end of the day, you will always be able to create custom hardware that can outperform general purpose hardware. I can’t stress enough that everyone I’ve talked to in favor of ASIC resistance has consistently and substantially underestimated the flexibility that hardware engineers have to design around specific problems, even under a constrained budget. For any algorithm, there will always be a path that custom hardware engineers can take to beat out general purpose hardware. It’s a fundamental limitation of general purpose hardware.

Hardfork Resistance

A lot of people believe that computing is broken up into 3 categories: CPU, GPU, and ASIC. While those are the categories that are generally visible to the public, in the chip world there’s really only one type of chip: an ASIC. Internally, Nvidia, Intel, and other companies refer to their products as ASICs. The categories as known to the public are really a statement about how flexible the ASIC is.

I would like to use a 1 to 10 scale to measure flexibility. At one side, a ‘1’, we’ll put an Intel CPU. And at the other side, a ‘10’, we’ll put a bitcoin ASIC. Designers have the ability to create chips that fall anywhere on this scale. As you move from a ‘1’ to a ‘10’, you lose substantial flexibility, but gain substantial performance. You also decrease the amount of design and development effort required as you sacrifice flexibility. On this scale, a GPU is a ‘2’.

Generally speaking, we don’t see products developed that fall anywhere between a GPU and a fully inflexibile ASIC because typically by the time you’ve given up enough flexibility to move away from a GPU, you’ve only got a very specific application in mind and you are willing to sacrifice every last bit of flexibility to maximize performance. It’s also a lot less costly to design fully inflexible ASICs, which is another reason you don’t see too many things in the middle.

Two examples of products between a GPU and an ASIC would be the Baikal miners and the Google TPU. These are chips which can cover a flexible range of applications at performances which are substantially better than a GPU. The Baikal case specifically is interesting, because it’s good enough to obsolete GPUs for a large number of coins, all using the same basic chip. These chips appear to be flexible enough to follow hardforks as well.

The strategy of hardforking ASICs off of a network is going to lose potency the more it happens, because chip designers do have the ability to make chips that are flexible, anywhere from slightly flexible to highly flexible, with each piece of flexibility costing only a bit of performance. The Monero devs have committed to keeping the same general structure for the PoW algorithm, and because of that commitment we believe that you could make a Monero miner capable of surviving hard forks with less than a 5x hit to performance.

Equihash is an algorithm that has three parameters. Zcash mining happens with one particular choice for these parameters, and any naive hardfork from Zcash to drop ASICs would likely involve changing one or more of these parameters. We were able to come up with a basic architecture for equiahsh ASICs that would be able to successfully follow a hardfork that chose any set of parameters. Meaning, a basic hardfork tweaking the algorithm parameters would not be enough to disrupt our chip, a more fundamental change would be needed. Despite this flexibility, we believe our ASIC would be able to see massive speedups and efficiency gains over GPUs. We never found funding for the equihash ASICs, and as a result our designs ended up on the shelf.

The ultimate conclusion here once again wraps back to the capabilities of ASICs. I think there are a lot of people out there who do not realize that flexible ASICs are possible, and expected that routinely doing small hardforks to disrupt any ASICs on the network would be sufficient. It may be sufficient sometimes, but just as algorithms can attempt to be ASIC resistant, ASICs can attempt to be hardfork resistant, especially when the changes are more minor.

Monero’s Secret ASICs

A few months ago, it was publicly exposed that ASICs had been developed in secret to mine Monero. My sources say that they had been mining on these secret ASICs since early 2017, and got almost a full year of secret mining in before discovery. The ROI on those secret ASICs was massive, and gave the group more than enough money to try again with other ASIC resistant coins.

It’s estimated that Monero’s secret ASICs made up more than 50% of the hashrate for almost a full year before discovery, and during that time, nobody noticed. During that time, a huge fraction of the Monero issuance was centralizing into the hands of a small group, and a 51% attack could have been executed at any time.

Monero’s hardfork appears to have been successful in shaking the ASICs. I don’t believe that the ASIC designers attempted to build flexibility into their ASICs, but now that Monero has announced a twice-annual PoW change, we may see another round of secret ASICs with more flexibility. The block reward for Monero is high enough that even if you think you have only a 30% chance of your ASIC surviving the PoW hardfork, it’s more than worthwhile to pursue a hardfork resistant ASIC.

My strong guess is that Monero is going to have another round of secret ASICs built, and that these ASICs will be more conservative and flexible, attempting to follow the hard forks that Monero puts out every 6 months.

Other Secret ASICs

We’ve heard rumors of plenty of other secret ASICs. People who own secret ASICs tend not to talk about them very much, but as of March 2018, we had heard of secret ASIC rumors specifically for both Equihash and Ethash, and then for many other smaller coins that don’t have any ASICs on them yet. We believe a full 3 different groups were actively mining on Zcash with different ASICs prior to the Bitmain Z9 announcement.

We know of mining farms that are willing to pay millions of dollars for exclusive access to designs for specific cryptocurrencies. Even low ranking cryptocurrencies have the potential to make millions in profits for someone with exclusive access to secret ASICs. As a result, an informal underground industry has been set up around secret mining. The heavy amount of secrecy involved means it’s disconnected and mostly operates off of rumor and previous relationships. But it’s nonetheless a very lucrative industry, and even when things happen like the Vertcoin hardfork, the setback to secret miners is dwarfed by the returns of the successes.

At this point, I think it’s safe to assume that every Proof-of-Work coin with a block reward of more than $20 million in the past year has at least one group of secret ASICs currently mining on it, or will have secret ASICs mining on it within a few months. The easiest way to detect this is GPU returns, however as ASICs continue to infiltrate every coin on the market, that will cease to be a reliable metric as there will be no GPU-only coin to use as a baseline, at least not one that is large enough to sustain all of the massive GPU farms that are out there.

The ASIC game has become such an advanced game because there is so much money on the table. Even small coins can be worth tens of millions of dollars, which is more than enough to justify a high-risk production run.

Manufacturer Exposure

Manufacturers that sell ASICs to the public, like Bitmain, tend to be less exposed than consumers to things like ASIC hardforks. Using Sia as an example, we estimate it cost Bitmain less than $10 million to bring the A3 to market. Within 8 minutes of announcing the A3, Bitmain already had more than $20 million in sales for the hardware they spent $10 million designing and manufacturing. Before any of the miners had made any returns for customers, Bitmain had recovered their full initial investment and more.

In this case, a hardfork doesn’t hurt Bitmain. Bitmain made a profit off of Sia, and there’s nothing the developers can do about that. And it seems that was the case for the Monero miners that Bitmain announced as well. Bitmain didn’t even get to announce the miners until after Monero announced their hardfork, and still it seems that they sold enough obsolete hardware to customers to make back their costs and turn a hearty profit.

The mining game is weighted heavily in favor of the manufacturers. They get to control the hardware production, the supply, and they know more about the state of the industry than anyone else. The profitability of a miner largely depends on variables that the manufacturer controls without disclosure to anyone else.

In the case of Halong’s Decred miner, we saw them “sell out” of an unknown batch size of $10,000 miners. After that, it was observed that more than 50% of the mining rewards were collecting into a single address that was known to be associated with Halong, meaning that they did keep the majority of the hashrate and profits to themselves. Our investigation into the mining equipment strongly suggests to us that the total manufacturing cost of the equipment is less than $1,000, meaning that anyone who paid $10,000 for it was paying a massive profit premium to the manufacturer, giving them the ability to make 9 more units for themselves. Beyond this, the buyer has no idea how many were sold nor where the difficulty would be when the units shipped. The manufacturer does know whether or not the buyer is going to be able to make a return, but they buyer does not. The buyer is trusting the manufacturer entirely.

If a cryptocurrency like Sia has a monthly block reward of $10 million, and a batch of miners is expected to have a shelf life of $120 million, the most you would expect a company could make off of building miners is $120 million. But, manufacturers actually have a way to make substantially more than that.

In the case of Bitmain’s A3, a small batch of miners were sold to the public with a very fast shipping time, less than 10 days. Shortly afterwards, YouTube videos started circulating of people who had bought the miners and were legitimately making $800 per day off of their miner. This created a lot of mania around the A3, setting Bitmain up for a very successful batch 2.

While we don’t know exactly how many A3 units got sold, we suspect that the profit margins they made on their batch 2 sales are greater than the potential block reward from mining using the A3 units. That is to say, Bitmain sold over a hundred million dollars in mining rigs knowing that the block reward was not large enough for their customers to make back that money, even assuming free electricity. And this isn’t the first time, they pulled something similar with the Dash miners. We call it flooding, and it’s another example of the dangerous asymmetry that exists between manufacturers and customers.

At the end of the day, cryptocurrency miner manufacturers are selling money printing machines. A well-funded profit maximizing entity is only going to sell a money printing machine for more money than they expect they could get it to print themselves. The buyer needs to understand why the manufacturer is selling the units instead of keeping them for themselves.

There are a few reasons it would make sense for a manufacturer to sell a money printing machine rather than keep it. The first is capital — manufacturing is an expensive process with a lot of lead times. If the manufacturer doesn’t have enough money to build their own units, then it makes sense to sell the units instead, and use the money from sales for production. It boils down to the manufacturer selling future revenue to get revenue today, which is a very common transaction in the financial world.

Another reason the manufacturer may sell money printing machines instead of running them is the electricity costs of running them. If the manufacturer can only get a certain deal on electricity, then there may be someone else with cheaper electricity or better datacenters who would be willing to buy the units at a price that’s higher than what the manufacturer values them at. Most manufacturers however have access to good electricity deals, and unless you have some deal with free electricity or are otherwise running a cutting edge professional operation, you are not likely to do better than the manufacturer.

And finally, the manufacturer may have some other reason that they want money quickly instead of making a longer term investment into the hardware themselves. This is likely not the case in cryptocurrency mining though, because the shelf life of miners tends to be under two years, and to a business that’s not a long time at all to wait for healthy returns.

Manufacturer Agility

In the traditional chip development world, it takes about 2 years to go from launching a development effort to getting a chip out out the door. In the case of the Sia and Decred miners we built, it looks like we’re going to be at about 13 months total from project launch to product delivery. If we had to do the same thing again, I think we could do it in about 9 months.

A huge portion of the time spent is on full-custom routing for the chip. There’s a much faster development process called place-and-route which trims about 3 months off of the chip development time, but produces chips that are 2x-5x slower than what a full-custom team can produce. We think that if we used a place-and-route design methodology, we could get our product delivery timeline close to 6 months.

We believe it took Bitmain about 5 months to create the A3 miner, and we believe it took Halong about 9 months to create the B52 miner. We suspect both of these were completed using place-and-route methodologies, especially given the relatively poor performance of each.

Those are timelines for creating a chip from scratch. If the goal is to chase a hardfork, the timelines are a lot shorter. If you know in advance that you are going to need to redesign your chip, there are a lot of shortcuts you can take to reduce the overall time required to get to market. Changing a design to meet a tweak is going to take much less time than starting from scratch, a good team with a well-planned base architecture can probably complete designs in about 2 weeks. From there, with some help from a hot-lot, you can get a new set of chips in about 40 days. These then need to be packaged, which is going to take around a week, and then sent to the manufacturer for assembly. Finally, you have to get the units to a datacenter and start mining.

If you had all the wafers, parts, and everything reserved ahead of time, we believe that you could upgrade a chip to adapt to a hardfork and have miners mining on the new hashing algorithm in about 70 days, at least in theory. In practice, Bitmain would probably require 3–4 months to adapt an existing chip to a hard fork, and if they hadn’t reserved wafers in advance they’d be looking at 4–5 months. Any company that is not Bitmain can probably add another 30–60 days to these numbers.

Economies of Scale

Some people already understand the situation with economies of scale well. The more money you spend, the more effective each dollar is. This effect is maintained throughout every level of scale that I’ve been able to peer into, including scales where you are going from billions of dollars to tens of billions of dollars.

The most simple way that this manifests is in volume orders. If you order one hundred thousand heatsinks, you can get one price. If you order one million heatsinks, you get a better price. As you continue to scale up, the price falls off. This effect is in place for almost all parts in the hardware industry, and it happens because manufacturers get to the point where they can buy and dedicate equipment to your order, and then keep that equipment at 100% efficiency. As you scale up, you gain greater customization and specialization in addition to cost savings, meaning your products become more effective as well as cheaper.

At some point, it makes sense just to buy out all the capacity at the manufacturer. A huge component of manufacturing price is paying for equipment. Equipment that is idle 50% of the time is going to have 2x the effective per-part price than equipment that is in use 100% of the time. As you increase lead times and order volumes, you can start getting fully dedicated equipment running nonstop for you, which again pulls the price down substantially.

In a similar sort of turn, someone has to manufacture that equipment. If you scale up to the point where you are continuously ordering specific equipment, the manufacturer can start to dedicate pipelines to you and keep their own equipment operating 100% of the time, and so the equipment you use for manufacturing is getting cheaper now on top of being in use all the time.

And that’s just the beginning. At every step, each provider, manufacturer, etc. is going to be taking margins, typically somewhere around 30% depending on how commodity your orders are. If you have enough money, you can start to engage in vertical integration, cutting out the margins of your manufacturers by either buying them out or creating your own margin-free entity.

Hardware goes through a lot of steps. There’s the acquisition of raw materials like iron and oil, the refinement of these materials, and then they get manufactured into base parts that can be sold for more general products. Those base parts often have lead times that are 6+ months, which means that suppliers typically keep a huge number of them in stock, so that they can provide customers with parts on faster timelines. Every step typically introduces both a middleman and inefficiency, especially because each step is targeted towards general use parts instead of a specific product. If you have a specific product that has enough volume / scale to justify dedicated supply chain elements, you will shave costs, you will shave lead times, you will improve product quality and performance, and you will get ahead of what anyone without that type of scale can achieve.

To present a very rough number, it seems to me that every time you 10x the amount of money you are spending, you can save about 30% per part. That is to say, if you are spending $100 million on mining units, you might get units for $500 each. And if you are spending $1 billion on mining units, you can squeeze that price down to $350 per miner just by having more money to throw around. And then if you jump to $10 billion, your per-miner price might drop to $245. Your mining machines aren’t just getting cheaper though, they are also becoming more customized and higher performance. You don’t just build a dollar moat with scale, you also build a quality moat.

Playing Dirty

When we started Obelisk, we had numerous separate sources reach out and warn us that Bitmain plays dirty, and that if we try to manufacture in China, we will be stopped.

With that in mind, we brought up the issue to everyone we worked with, and proceeded cautiously with an American manufacturer that owned a facility in China. This was attractive because the prices were close to half of what we would have paid to manufacture in America, and manufacturing was going to be one of our largest expenses by far.

We did everything we could to keep the entity disconnected from Obelisk, and we hid the name of the manufacturer from our website or any public data, and we were very careful with who we gave the name of our manufacturer privately. We had a separate entity put in parts orders where we could.

After any reasonable timeframe to reach out to another manufacturer, after-hours on a Friday night, our manufacturer reached out to us and said with little warning or reasonable explanation that they would be unable to manufacture for us. Just as we had been warned, our attempt to manufacture in China had fallen flat on its face. This setback is estimated to have cost us somewhere north of $2 million.

We have absolutely no evidence that Bitmain was involved in any way. We’ve had other companies reach out to us and confirm that they’ve experienced similar things, but they too had no concrete evidence that Bitmain was involved in any way. I honestly was not sure whether to include this section in the blog post, because unlike most of the other things I’ve been saying, we really have nothing more than a bunch of warnings that ended up being correct to inform us.

But it’s well established in the industry that Bitmain plays dirty, and it’s been suggested to us from all sides that they have been and will continue making moves within our supply chain to ensure we can’t succeed, and that they do the same with all of their competitors.

Mining Farms

Mining farms are perhaps the one area where manufacturers and economies of scale are not dominant. Good electricity deals tend to come in smaller packages, tend to be distributed around the world, and tend to be difficult to find and each involve unique circumstances. As such, it’s been difficult for larger companies to create a system for scooping up low cost electricity worldwide. Instead, the cheapest electricity and datacenters in the world tend to be held by smaller parties that don’t individually own all that much electricity or hashrate.

From what I’ve been able to dig up, the average professional mining farm is paying somewhere between 4 and 6 cents for electricity, and then another 3 to 6 cents for management and maintenance. A total cost of $50 per kilowatt per month is probably somewhere close to the median for large scale mining farms. As techniques improve and the industry grows, we expect this number to fall closer to $35 per kilowatt per month (including maintenance, land, taxes, etc.) throughout 2019 and 2020. We don’t believe that anyone paying more than $80 per kilowatt per month will be able to remain competitive unless the price of cryptocurrency continues to rise rapidly over the next year.

The top 20% of miners all seem to be below $35 per kilowatt per month already, from what we’ve been able to glean, and the top 5% seem to be below $20 per kilowatt per month. By my estimation, if the price of Bitcoin were to fall substantially, these mining operations would be able to stay in business and everyone paying $50 or more would be forced to shut down their facilities.

It’s really hard to know where Bitmain is at, but based on everything we’ve been seeing we estimate that Bitmain is somewhere around the $30 per kilowatt per month mark. That is, they are doing better than the median mining operation, but by no means are they in the elite tier.

The Chip is not Important

Most mining startups seem incredibly focused around the chip itself. From what we’ve seen, the chip is really less than half the story. So, the chip is important (apologies for the title), but if all you’ve got is the best chip in the world, you aren’t going to be a competitive manufacturer.

As a miner, the goal at the end of the day is to do as many hashes as possible for as little money as possible. A faster chip means that you need to spend less money on chips to get hashrate. And a more energy efficient chip means you need to spend less money on electricity to get hashrate. But you aren’t just spending money on chips and electricity. You spend money on PCB, on controllers, on ports like ethernet ports, on power supplies and power management, on fans, on enclosures, on shelves in your datacenter, etc.

At the end of the day the chip is only a portion of the equation for mining successfully. If you aren’t thinking about the whole picture, you are going to end up with a chip that will lose you money. This is actually one of the things that killed Butterfly Labs (among many) — they designed a high performance chip that produced hundreds of watts of heat. By comparison, Bitmain chips are typically about six watts each. Where Bitmain is able to throw on a forest of fat heatsinks, Butterfly Labs had to struggle with expensive, cutting edge, unreliable cooling systems, and that ultimately meant their powerhouse chip was late to market and too expensive to operate.

Bitmain is Impressive

People tend to under-estimate Bitmain. Yes, they have the most money, and yes, they dominate because of their economies of scale. But they also dominate because they’ve got the fastest to-market time of any company. They dominate because they’ve got the best chip developers in cryptocurrency. They dominate because they’ve innovated in dozens of places to squeeze costs and inefficiencies out of corners that most people aren’t aware exist. They hire the best people and pay them well. And they work hard to make sure that at every iteration, they are the ones on top.

There’s not a whole lot more to say here. I feel that a lot of people under-estimate Bitmain or assume that because they play dirty they wouldn’t be able to keep up without playing dirty. But that’s not true. They play dirty because it’s yet another place they can optimize their business, and because they know they can get away with it. Everything else they do is highly optimized as well. If we want to understand mining, we need to appreciate that the entity that controls most of mining today is an impressive, highly skilled, well refined entity.

Conclusion

The biggest takeaway from all of this is that mining is for big players. The more money you spend, the more of an advantage you have, and there’s not an easy way to change that equation. At least with traditional Nakamoto style consensus, a large entity that produces and controls most of the hashrate seems to be more or less the outcome, and at the very best you get into a situation where there are 2 or 3 major players that are all on similar footing. But I don’t think at any point in the next few decades will we see a situation where many manufacturing companies are all producing relatively competitive miners. Manufacturing just inherently leads to centralization, and it happens across many different vectors.

Though that’s discouraging news, it’s not the end of the world for Bitcoin or other Proof of Work based cryptocurrencies. Decentralization of hashrate is a good-to-have, but there are a large number of other incentives and mechanisms at play that keep monopoly manufacturers in line. A great example of this is the Bitcoin / Segwit2x situation. More than 80% of the hashrate was openly in support of activating Segwit2x, and yet the motion as a whole failed.

There are plenty of other tools available to cryptocurrency developers and communities as well to deal with a hostile hashrate base, including hardforks and community splits. The hashrate owners know this, and as a result they are careful not to do anything that would cause a revolt or threaten their healthy profit streams. And now that we know to expect a largely centralized hashrate, we can continue as developers and inventors to work on structures and schemes which are secure even when the hashrate is all pooled into a small number of places.

对于数字加密货币而言,ASIC芯片真的重要吗?

$
0
0

对于数字加密货币而言,ASIC芯片真的重要吗?

本文作者:包永刚 2018-05-14 19:28
导语:很多人认为计算芯片分为三类:CPU,GPU和ASIC,但实际上芯片领域只有一种类型的芯片——ASIC。

雷锋网(公众号:雷锋网)按:本文作者是基于区块链的云存储平台Sia的首席开发人员,大约一年前和Sia团队的一些成员创立了加密货币ASIC制造公司Obelisk。创立新公司使他对数字加密货币市场有了更深的认识,本文他分享了ASIC芯片与数字货币玩家之间的关系。

所有芯片都是ASIC

很多人认为计算芯片分为三类:CPU,GPU和ASIC,但实际上芯片领域只有一种类型的芯片——ASIC。 在Nvidia,Intel和其他公司内部,他们都将其产品称为ASIC,所谓的其它类型的芯片实际上只是ASIC的另一说法。

如果用1到10来衡量芯片的灵活性,用英特尔的CPU代表’1’,针对比特币的ASIC代表’10’。在这个尺度上,GPU的灵活性是’2’。如果 设计人员有能力设计从1到10区间的芯片, 当设计人员从’1’移动到’10’的时候,失去了灵活性但获得了性能的提升,当然也会因为牺牲灵活性可以减少设计和开发的工作量。

但我们之所以没有看到通用性强的GPU和完全不灵活的ASIC之间的的产品,是因为通常在放弃足够的灵活性不选择GPU的时候,只想到一个非常具体的应用程序,并且愿意牺牲每一点灵活性最大限度提高性能。另外,设计完全不灵活的ASIC也要便宜得多,这也是一般看不到灵活度介于中间产品的原因。

当然也有介于GPU和ASIC之间产品的特例,如Baikal 矿机和Google TPU,这些芯片可以在比GPU性能更好的同时上覆盖灵活的应用。 Baikal 的案例特别有趣,因为它已经足够淘汰大量数字加密货币开采使用的基本相同的芯片——GPU。

由于芯片设计人员具有制造灵活的芯片的能力,无论是轻微灵活性还是高度灵活性,每一种灵活性都只需牺牲一点性能,这也让ASIC的普及应用面临障碍。

对于数字加密货币而言,ASIC芯片真的重要吗?

ASIC在加密货币中应用的障碍

ASIC的算法障碍

许多人对ASIC的悲观态度持续了很长时间,并且也有足够的理由。不过通用计算芯片像CPU、GPU甚至DRAM为了满足通用计算需求都不能真正发挥其计算性能,但通用的芯片如果只针对特定优化的算法,其性能的潜能就可以发挥出来。

不过,绝大多数的ASIC抗性算法都是由软件工程师设计的,他们对定制硬件的局限性做出了假设,而这些假设往往是不正确的。 很多算法设计人员似乎都没有意识到,ASIC中可以将芯片的计算核心和存储部分当作一个整体。

以Equihash为例,当GPU执行Equihash计算时,必须由片外存储器将数据传入计算核心进行操作,然后在将结果传至片外存储器。不过Equihash需要对数据进行的操作非常简单,可以将计算核心和存储合并在一起,这意味着可以在同一个地方进行大部分操作,大幅减少传输数据的损耗,并大大减少了传输的时间。可以看到,人们在过去的一年生产出了非常高效的Equihash  ASIC。

因此当Bitmain为Equihash发布性能强大的ASIC时并不让然感到意外。但我们内部的研究表明,Bitmain ASIC的性能实际上低于我们研究结果的5到10倍,这其中可能有很多原因,但我们认为未来几个月有功能更强大的Equihash ASIC推出是相当合理的。

另外,ethash(Ethereum的算法)有宽松的设计,也是迄今为止我们研究过的最抗ASIC的算法,所以不像Equihash那样可以轻松设计出ethash  ASIC,从市场上的产品中也可以看到,许多人仍然可以很好地使用性能不那么强的GPU。

需要指出的是,所有支持ASIC的人一直以来都低估了硬件工程师即使在预算有限的情况下也需要围绕特定问题进行灵活性设计的难度。但最终会发现,对于任何算法而言,定制硬件工程师总会能找到一个方法可以击败通用硬件。

ASIC的Hardfork障碍

Equihash是一个有三个参数的算法,Zcash挖矿是针对这些参数的特定选择而出现,而任何简单的Hardfork(雷锋网注:硬分叉,主要指因比特币协议的突发改变而导致的兼容性的问题)都可能改变这些参数中的一个或多个。ASIC能为Equiahsh提供一个基本的架构,能够满足任何硬分叉的参数需求。这意味着,基于这种灵活性算法参数的调整不足以对芯片带来挑战,ASIC相比GPU会有速度和效率的大幅提升。

当然, 很多人没有意识到灵活的ASIC是可能的,并且期望使用小的硬分叉来破坏ASIC在网络上价值。 有时候小的硬分叉可能是足够的,但正如算法可能对ASIC有抗性一样,ASIC可能会成为硬分叉的抗性,特别是当更改较小时。

巨额回报下的秘密ASIC

Monero秘密的ASIC

Monero(门罗币)开发者致力于保持PoW算法的通用结构,并且由于这一承诺,我们相信Monero矿工能够以不到5倍的性能击败硬分叉。几个月前,某集团使用秘密开发ASIC开采Monero被曝光。 不过消息称,自2017年初以来,他们一直在开发这些秘密ASIC, 这些秘密ASIC的投资回报是让该集团得到了足够多的钱。

据估计,Monero的秘密ASIC在被发现之前一年内几乎占据了50%以上的哈希率,但没有被人注意到。 在此期间,Monero的发行很大一部分集中在一个小团队手中,51%的攻击也可能随时被执行。

Monero的硬分叉似乎已经成功影响了ASIC, ASIC设计人员试图在他们的ASIC中增加灵活性,现在Monero已经宣布每年两次的PoW变更,未来可能会看到具有更大灵活性的秘密ASIC。 由于Monero的区块奖励足够高,即使ASIC只有30%的机会存活在PoW硬分叉,但这可能也是值得的。

我的猜测是,Monero矿工将要会建设计新的秘密ASIC,并且这些ASIC将更加灵活,遵循Monero每6个月推出的硬分叉。

其他的秘密ASIC

目前已经有很多针对其他数字加密货币秘密ASIC的传言。 不过拥有秘密ASIC的人往往不会谈论,截至2018年3月,我们已经听说有专门针对Equihash和Ethash的秘密ASIC。 我们相信,在Bitmain Z9发布之前,全部3个不同的组织正在Zcash上采用不同的ASIC进行挖矿。

由于矿工意支付数百万美元为特别的数字加密货币设计产品,因此 即使是低等级的加密货币也有可能为有专用ASIC,为拥有者提供数百万美元的利润。因此,围绕秘密采矿建立了一个非正式的地下工厂。保密也意味着它是断开的,并且大部分是根据谣言和以前的关系来运作的。尽管如此,这是一个非常有利可图的行业,即使发生了像Vertcoin硬分叉的事情,但秘密采矿者遭受的挫折与成功的回报相比显得相形见绌。

有一点可以肯定,每一枚价值超过2000万美元的币都至少有一组秘密的ASIC正在上面开采,或者在几个月内将有秘密的ASIC开采。 检测是否有秘密ASIC最简单的方法是GPU的回报,但是随着ASIC持续渗透到市场上的每一个币种,这将不再是一个可靠的度量标准,因为不会有一个足够大以维持GPU作为基准的矿场。

ASIC游戏已经成为如此竞争激烈的游戏,因为回报足够大。

ASIC芯片不重要

大多数矿机初创公司似乎都非常注重芯片本身,不过 从我们所看到的情况来看,该芯片实际上还不到整个故事的一半,但如果你拥有的是世界上最好的芯片,也不会成为一个有竞争力的制造商。

作为一名矿工,一天的目标是以尽可能少的钱做尽可能多的哈希, 更快和更节能的芯片意味着只需要在芯片上花费更少就可以获得更多哈希率。但矿工不只是花钱在芯片和电力上, 还需要在PCB、控制器、以太网、电源和电源管理、风扇、机箱、数据中心的货架等方面花钱。

因此,芯片只是成功开采的一部分,如果没有看到这一点可能会最终因为芯片而失去赚钱的机会。 实际上,这也是导致Butterfly Labs失败的原因之一 他们设计了一款能产生数百瓦热量的高性能芯片,相比而言Bitmain芯片的典型功率约为6瓦。 但Butterfly Labs不得不与昂贵、尖端、不可靠的冷却系统斗争,这使得他们的强大的芯片迟迟不能上市并且运营成本太高。

Bitmain被低估

人们往往低估了Bitmain(比特大陆),他们有最多的钱,因为规模经济而占主导地位。当然,他们产品上市的时间最短、拥有加密货币芯片最好的芯片开发人员、他们已经在几十个地方创新,从大多数人不知道的地方降低成本和提升效率,以上这些都让他们占据主导地位。因此,Bitmain可以确保在每一次迭代中都是顶尖的。

另外,我觉得很多人低估Bitmain或者认为因为他们玩弄手段,认为他们不可能在不耍诈的情况下继续下去。 但事实并非如此。 他们玩弄手段是因为他们可以在另一方面进行业务优化,并不受惩罚。 他们所做的一切都是高度优化的。 如果我们想了解挖矿,需要认识到今天大部分控制采矿的是一个令人印象深刻、技术精湛、精细化的实体。

结论

所有这一切都表明挖矿是对大型玩家来说的。花的钱越多才能拥有的更多的优势,并且没有一种简单的方法来可以改变这个事实。 至少在传统的共识中,一个产生和控制大部分哈希率的大型实体似乎或多或少都是最终的胜者,并且最好的情况是有2或3个主要参与者处于相同的地位。

虽然这是不利于消息,但它不是比特币或其他加密货币的世界末日。 哈希率分散是一项很好的选择,但也有很多其他激励措施和机制可以使垄断制造商保持步调一致。 比特币/ Segwit2x情况就是一个很好的例子, 超过80%的哈希率公开支持激活Segwit2x,但整体动作失败。

还有很多其他工具可供加密货币开发人员和社区使用,以应对恶意的哈希率,包括硬分叉和社区拆分。 哈希率所有者知道这一点,因此他们小心翼翼地不做任何会引起反抗或威胁其健康利润流量的事情。 现在我们知道会有大量集中的哈希率,但我们仍然可以继续作为开发人员和发明人研究即使哈希率汇集到少数几个地方也是安全的结构和方案。

雷锋网编译,via sia

Swift Top 10 Articles for the Past Month (v.May 2018)

$
0
0

Swift Top 10 Articles for the Past Month (v.May 2018)

For the past month, we ranked nearly 900 Swift articles to pick the Top 10 stories that can help advance your career (0.9% chance).

Tweet of the month
  • Topics in this list: Game, Keras, Core ML, Watson, Blockchain, Fastlane, Jenkins, Implicit Unwrapping, Swift 4.1, Playground, TensorFlow, Twitter
  • “Watch” Swift Monthly Top 10 on Github and get email once a month.

As an article ranking service for professionals, we take quality very seriously and make sure each article you read is great. Mybridge AI considers the total number of shares, minutes read, and uses our machine learning algorithm to rank articles. This is a competitive list and you’ll find the experience and techniques shared by the Swift leaders useful.

Course of the month:

A) Beginners: iOS 11 & Swift 4 — The Complete iOS App Development Bootcamp. [17,747 recommends, 4.8/5 stars]

B) Build Apps: The Complete iOS 11 & Swift Developer Course — Build 20 Apps. [2,865 recommends, 4.6/5 stars]

Rank 1

How to Make a Game Like Candy Crush with SpriteKit and Swift: Part 1. Courtesy of Kevin Colligan

……[Part 2]

……[Part 3]


Rank 2

Running Keras models on iOS with CoreML. Courtesy of Adrian Rosebrock


Rank 3

Detecting Whisky brands with Core ML and IBM Watson services. Courtesy of Martin Mitrevski


Rank 4

Build A Blockchain App With Swift 4. Courtesy of Reinder de Vries


Rank 5

Build it, Test it, Deliver it!Complete iOS Guide on Continuous Delivery with fastlane and Jenkins. Courtesy of S.T.Huang


Rank 6

Reimplementation of Implicitly Unwrapped Optionals. Courtesy of Mark Lacey


Rank 7

Behind-the scenes improvements in Swift 4.1. Courtesy of Slava Pestov


Rank 8

Playground driven development in Swift. Courtesy of Khoa Pham


Rank 9

Introducing Swift For TensorFlow. Courtesy of TensorFlow


Rank 10

Best iOS hacks from Twitter. Courtesy of Lisa Dziuba

That’s it for Swift Monthly Top 10. If you like this curation, read best daily articles based on your programming skills on our website.


React.js Open Source of the Month (v.May 2018)

$
0
0

React.js Open Source of the Month (v.May 2018)

For the past month, we ranked nearly 200 React.js Open Source Projects to pick the Top 10.

We compared projects with new or major release during this period. Mybridge AI ranks projects based on a variety of factors to measure its quality for professionals.

  • Average number of Github stars in this edition: 1,320⭐
  • “Watch” React.js Top 10 Open Source on Github and get email once a month.
  • Topics: MDX parser, Immutable state, Animation, Draggable, React Native, UI components, Educational App, Sample App, IDE, Lifecycle methos

Open source projects can be useful for programmers. Hope you find an interesting project that inspires you.

Course of the month:

A) Beginners: The Complete React Web Developer Course (with Redux)[5,106 recommends, 4.8/5 stars]

B) React Native: The Complete React Native and Redux Course. [16,415 recommends, 4.6/5 stars]

Rank 1

Mdx: A fully-featured MDX parser, loader and JSX renderer for ambitious projects [2042 stars on Github]. Courtesy of Mdx-js

……[Tweet]


Rank 2

React-copy-write: Immutable state with a mutable API [1071 stars on Github]. Courtesy of Brandon Dail


Rank 3

React-spring v5.0: Helping react-motion and animated to become best friends [4973 stars on Github]. Courtesy of Paul Henschel


Rank 4

React-smooth-dnd: react wrapper components for smooth-dnd [941 stars on Github]. Courtesy of Kutlu Sahin


Rank 5

React-native-ui-lib: UI Components Library for React Native [735 stars on Github]. Courtesy of Wix.com


Rank 6

Reactivesearch: A React components library for building awesome :mag: search UIs [1707 stars on Github]. Courtesy of appbase.io


Rank 7

Crate: A sample web and mobile application built with Node, Express, React, React Native, Redux and GraphQL [741 stars on Github]. Courtesy of Atul Yadav


Rank 8

Reacto: A sweet IDE for React.js [704 stars on Github]. Courtesy of Arnaud Dellinger


Rank 9

React-lifecycle-visualizer: Real-time visualizer for React lifecycle methods [451 stars on Github]. Courtesy of Martijn Schrage


Rank 10

Book-of-Spices: A open source educational app to help you learn about spices. Built on react-native. [41 stars on Github]. Courtesy of Provash Shoumma

That’s it for React.js Monthly Open Source. If you like this curation, read best daily articles based on your programming skills on our website.

Node.js Open Source of the Month

$
0
0

Node.js Open Source of the Month (v.May 2018)

For the past month, we ranked nearly 250 Node.js Open Source Projects to pick the Top 10.

We compared projects with new or major release during this period. Mybridge AI ranks projects based on a variety of factors to measure its quality for professionals.

  • Average number of Github stars in this edition: 2,324⭐
  • “Watch” Node.js Top 10 Open Source on Github and get email once a month.
  • Topics: Slack, npm, Url safe, Authentication, Web Debugging, Proxy, Asynchronous, Trading, Crate, Proxy List

Open source projects can be useful for programmers. Hope you find an interesting project that inspires you.

Course of the month:

A) Beginners: Node.js for Beginners — Become a Node.js Developer + Project. [313 recommends, 4.6/5 stars]

B) Fullstack: Node.js, Express & MongoDB Dev to Deployment. [1,207 recommends, 4.7/5 stars]

Rank 1

Wey: Fast open source Slack desktop app [1328 stars on Github].


Rank 2

Npm v.6.0: a package manager for javascript [16410 stars on Github]. Courtesy of npm, Inc.

……[Announcing NPM 6]


Rank 3

Slugify: Slugify a string [1204 stars on Github]. Courtesy of Sindre Sorhus


Rank 4

Permit: An unopinionated authentication library for building Node.js APIs. [911 stars on Github]. Courtesy of Ian Storm Taylor


Rank 5

Whistle: HTTP, HTTPS, WebSocket debugging proxy [2688 stars on Github]. Courtesy of avenwu


Rank 6

Coroute: The awesome Node.js HTTP reverse-proxy server. [108 stars on Github]. Courtesy of Ethan Davis


Rank 7

Async-optics: A node asynchronous process and package monitor [147 stars on Github]. Courtesy of AsyncOptics


Rank 8

Devalpha-node: A stream-based approach to algorithmic trading and backtesting in Node.js [77 stars on Github]. Courtesy of DevAlpha


Rank 9

Crate: A sample web and mobile application built with Node, Express, React, React Native, Redux and GraphQL [747 stars on Github]. Courtesy of Atul Yadav


Rank 10

Proxy-lists: Node.js module for getting proxies from publicly available proxy lists. [284 stars on Github]. Courtesy of Charles Hill

That’s it for Node.js Monthly Open Source. If you like this curation, read best daily articles based on your programming skills on our website.

Top 10 Swift Open Source of the Month (v.May 2018)

$
0
0

Top 10 Swift Open Source of the Month (v.May 2018)

For the past month, we ranked nearly 200 Swift Open Source Projects to pick the Top 10.

We compared projects with new or major release during this period. Mybridge AI ranks projects based on a variety of factors to measure its quality for professionals.

  • Average number of Github stars in this edition: 2,316⭐
  • “Watch” Swift Top 10 Open Source on Github and get email once a month.
  • Topics: Animation, UI components, Notes manager, Web Framework, Diff, Banner, Memory Leaks, Parallax, Type Safety

Open source projects can be useful for programmers. Hope you find an interesting project that inspires you.

Course of the month:

A) Beginners: iOS 11 & Swift 4 — The Complete iOS App Development Bootcamp. [17,747 recommends, 4.8/5 stars]

B) Build Apps: The Complete iOS 11 & Swift Developer Course — Build 20 Apps. [2,865 recommends, 4.6/5 stars]

Rank 1

LoginCritter: An animated avatar that responds to text field interactions [3883 stars on Github]. Courtesy of Chris Goldsby


Rank 2

ClassicKit: A collection of classic-style UI components for iOS [1777 stars on Github]. Courtesy of Blake Tsuzaki


Rank 3

Fsnotes: Notes manager for macOS/iOS [563 stars on Github]. Courtesy of Oleksandr


Rank 4

Vapor (v3.0): A web framework and server for Swift that works on macOS and Ubuntu. [13901 stars on Github]. Courtesy of VAPOR

……[Introducing Vapor 3.0]


Rank 5

CardParts: A reactive, card-based UI framework built on UIKit for iOS developers. [308 stars on Github]. Courtesy of Intuit


Rank 6

DeepDiff: Very fast diffing in Swift [980 stars on Github]. Courtesy of Khoa Pham


Rank 7

SwiftEntryKit is a banner presenter library for iOS. It can be used to easily display pop-ups and notification-like views within your iOS apps. [568 stars on Github]. Courtesy of Daniel Huri


Rank 8

LifetimeTracker: Find retain cycles / memory leaks sooner. [1615 stars on Github]. Courtesy of Krzysztof Zabłocki


Rank 9

Parade: Parallax Scroll-Jacking Effects Engine for iOS / tvOS [496 stars on Github]. Courtesy of Elephant


Rank 10

A wrapper type for safer, expressive code. [297 stars on Github]. Courtesy of Point-Free

That’s it for Swift Top 10 Open Source of the Month. Visit our publication to find top posts for more programming skills.

AWS Amplify + Angular 6

$
0
0

Found this while having the same/similar issues implementing awsmobile-cli and aws-amplify with angular5. Was receiving many webpack errors, followed the solutions in this order which solved my problem:

  1. In tsconfig.json added: “allowJs”: true in the “compilerOptions”
  2. npm installed stream
  3. In tsconfig.app.json added “node” to “types” array in “compilerOptions”
    Webpack compiled successfully!
    Thank you very much for the solutions 100 1st_place_medal +1

 

Ok, after an hour I finally managed to have cognito working on my Angular app (just after upgrading to 6.0).

About the message global is not defined (or something close can’t remember). Add the following into index.html:

<!doctype html>
<html lang="en">
<head>
  ...

  
    var global = global || window;
  
</head>

Then, you’ll probably get an error saying that Buffer is not defined.

Install the buffer package using npm or yarn. And add the following into polyfills.ts ():

global.Buffer = global.Buffer || require('buffer').Buffer;

Stackoverflow answers/github issues that helped me in case it’s not fixed for you after that:

Upgrading to angular-6.x gives “Uncaught ReferenceError: global is not defined”

https://github.com/aws/aws-amplify/issues/840#issuecomment-389459988

https://github.com/aws/aws-amplify/issues/678

https://github.com/aws/aws-amplify/issues/153

https://github.com/crypto-browserify/createHash/issues/20

Angular Open Source of the Month (v.May 2018)

$
0
0

Angular Open Source of the Month (v.May 2018)

For the past month, we ranked nearly 160 Angular Open Source Projects to pick the Top 10.

We compared projects with new or major release during this period. Mybridge AI ranks projects based on a variety of factors to measure its quality for professionals.

  • Average number of Github stars in this edition: 1,104 ⭐
  • “Watch” Angular Top 10 Open Source on Github and get email once a month.
  • Topics: NG Bootstrap, Flexbox, State Management, VS Code, Shopping app, Img2, RxJS TSLint, Chat Widget, Drag and Drop, Testing

Open source projects can be useful for programmers. Hope you find an interesting project that inspires you.

Course of the month:

A) Beginners: Angular 6 (formerly Angular 2) — The Complete Guide.[48,237 recommends, 4.7/5 stars]

B) Build an app with ASPNET Core and Angular from scratch. [1,227 recommends, 4.7/5 stars]

Rank 1

Ng-bootstrap v2.0: Angular powered Bootstrap.

……[Tweet]


Rank 2

Flex-layout v6.0: Provides HTML UI layout for Angular applications; using Flexbox and a Responsive API [2668 stars on Github]. Courtesy of Angular


Rank 3

Store v2.0: NGXS — State Management for Angular [909 stars on Github]. Courtesy of NGXS

……[Announcing NGXS 3.0]


Rank 4

Vscode-angular-snippets: Angular Snippets for VS Code [426 stars on Github]. Courtesy of John Papa


Rank 5

Angular5-example-shopping-app: Angular 5 Example Shopping App + Angular Material + Responsive [37 stars on Github]. Courtesy of Anastasiia Antonova


Rank 6

img-2: Replace elements with to automatically pre-cache images and improve page performance. [1496 stars on Github]. Courtesy of Leon Revill


Rank 7

Rxjs-tslint: TSLint rules targeting RxJS [131 stars on Github]. Courtesy of ReactiveExtensions*


Rank 8

Angular-elements-chat-widget: Chat Widget built with Angular Elements [40 stars on Github]. Courtesy of Bram Borggreve


Rank 9

Ngx-smooth-dnd: angular wrapper for smooth-dnd [49 stars on Github]. Courtesy of Kutlu Sahin


Rank 10

Shallow-render: Angular 5 testing made easy with shallow rendering and easy mocking. [49 stars on Github]. Courtesy of Brandon Domingue

That’s it for Angular.js Top 10 Open Source of the Month. Visit our publication to find top posts for more programming skills.

深氪 |比特大陆残酷法则

$
0
0

深氪 | 比特大陆残酷法则

唐晗 • 20小时前 • 区块链
金字塔的底层,是一群蚂蚁一样的矿工。
世界像个巨型金字塔,我们是建造金字塔的奴隶。

——矿工小白 佳明

“我们成立联盟的意义在于,向比特大陆证明我们矿工不再是任人随意宰割的两脚羊。我们要做维护矿工权益的斗士,向比特大陆开战。”

李是“蚂蚁B3矿机维权联盟”(下称“联盟”)的骨干成员。5月20日,他在一个微信维权群里发出了这样的号召。

“联盟”成立于5月19日,缘起于矿工们对比特大陆蚂蚁B3矿机的不满。据一位矿工介绍,这款矿机价格昂贵,达到了17000元,但性价比很低。

“宣传视频上说,如果第一批5000台矿机全部上线,那么我们每天可以挖47-48个BTM,按照每个BTM6块钱的价格来计算,一台B3矿机每天收入是285块钱。因为功耗很低,节省电费,每日净利润可达280块钱。而且我们的收益一天一结。”矿工佳明介绍道,“当时我算了下,大概两三个月我就能回本。”

佳明是个矿机小白。在入手蚂蚁B3矿机之前,他只使用过显卡矿机挖矿,而且挖的是以太坊。然而,在看完这段宣传视频后,他决定从黄牛手中购买B3矿机,代价是17000元再加上1000元的黄牛抽成,共计18000元。

“但我现在每天只能挖不到18个!还是在第二批矿机还没上线的情况下。”佳明对36氪抱怨说,之前比特大陆的矿机性能都完爆显卡,这也是大家愿意花高价买矿机挖币的原因,但现在,显卡居然成为了B3矿机的强大竞争者。

佳明之所以得出这个结论,是因为对比了两个矿池的算力:代表B3矿机的蚂蚁矿池的算力,从没超过只用显卡挖矿的矿池uupool。“你根本没法相信,显卡现在居然占据了比原链一半以上的算力——有一次我一看,显卡算力甚至还达到了全网的三分之二。”由于蚂蚁矿池承诺,如果将B3矿机连入蚂蚁矿池,头三个月免抽成,因此几乎所有的B3矿机都连进了蚂蚁矿池。

小白矿工们原本以为显卡不会进入这个市场。结果,显卡挖矿一参与,全网算力比矿工们最初预想的多出了一倍以上。

全网算力越高,单个矿机挖矿难度越大,分到的BTM越少。这份始料未及的多出来的算力,迅速拉平了矿工们挖到的BTM。

“我也就拿到矿机后的第一天挖的多,”佳明说,“那天挖了将近100个,后面就不行了。挖了二十来天,手里也只有不到450个BTM。后来,当我知道我的挖出来的币被同等价位的显卡碾压的时候,我感觉自己受到了欺骗。”

他们就是想赚钱,对比特大陆一无所知。

——老矿工 陆铭

“单纯的投机者。”陆铭给佳明这样的新手下了定义。

这已经不是我第一次看到矿工维权了,以前没有一次成功。”老矿工陆铭回想起了之前的经历,慢悠悠地吐出一句:“没办法,在这个市场,比特大陆是老大。”

陆铭在矿圈呆了将近三年,15年年底入手买的矿机。他不贪心,一直在圈子里,但也没发大财。

他听到过许多传闻,例如圈子里有一个不成文的规定:比特大陆生产的矿机,有的会自己在蚂蚁矿池中使用一段时间,然后再卖出去。这样一来,购买者买到的矿机里就可能有灰尘,算力偶尔也会不稳定。

“发现灰尘,算力不稳定都没什么值得奇怪的,”他说,“刚生产出矿机的时候,全网缺乏有力竞争者,能挖到很多币。比特大陆要真自己挖,虽然不道义,我们也没什么办法。该买它用剩的矿机还得买。”

之所以得买比特大陆生产的矿机,是因为ASIC矿机市场缺乏充分的竞争者。据投行Bernstein的分析师估算,比特大陆在比特币矿机和 ASIC 芯片领域拥有 70-80% 的市场份额,而矿工们又钟情于ASIC矿机。

这源自ASIC矿机具备针对某种币种的专用芯片,从而能在算力上造成碾压。追溯比特币的挖矿历史,矿工们经历了从个人电脑到CPU挖矿,再到GPU挖矿,再到FPGA挖矿,最后到ASIC矿机挖矿的历程。

“不管是什么币种,只要比特大陆研发出了针对它的ASIC芯片,显卡基本就完了。”另一位老矿工老马说道,“就说说比特币吧,你现在要是还准备用显卡去挖比特币,根本就挖不到什么东西。你的那点算力和ASIC根本没法比,挖出来的零星末节还不足以支付所花费的电费。”

陆铭和老马认为,全网算力是被比特大陆高度垄断的。这种垄断给比特大陆带来了一种非凡的权力——倾销。

“这群小白矿工感到愤懑——第一批矿机17000元买到手,不到20天第二批矿机就大降价,价格变成了11000元。他们觉得不能理解,其实我们已经见怪不怪了。”2016年底入矿圈的Hitch表示,“他们还没经历过今年年初的莱特币矿机L3的惨剧呢——年初的价格是10000元,机器还没到手就开始往下降价到6200元左右。不到两个月的时间,矿机价格就跌到了3200元——我是说你从官网买是3200元,不是二手市场。”

最后,Hitch用四个字总结了这段经历:目瞪口呆。Hitch还说,考虑到投资蚂蚁矿机的风险,从那时开始他就不再购买蚂蚁矿机了。

“其实购买矿机的风险未必小于买币,只是那些小白们不知道。”Hitch说。

“矿工们在购买矿机之前,往往会比对当时的矿机价格、数字货币价格和一天的挖矿量,并算出半年内能不能回本。‘半年回本’这种事在其他行业看来要求很苛刻对吧?但在挖矿行业却是再简单不过的逻辑——比特大陆的保修期是180天,如果半年不能回本,例如在第181天你的矿机出现故障,比特大陆就不会再去修你的故障矿机,那么你得到的只有一堆废铜烂铁。它再也无法给你带来任何产出,一个币也挖不出来,那你只有亏本。”Hitch冷静地讲明其中的逻辑。

“比特大陆深谙矿工们的这种心理,所以它的定价政策总会给你一种错觉——购买这种矿机,你半年之内可以回本。”谈起这其中的奥秘Hitch又变得激动起来,“没错,这就是一种错觉!数字货币价格涨涨跌跌,这也就算了,但是你的矿机一天可以挖多少币,却和比特大陆的矿机投放量紧密相关。如果全网一天可以挖1万个币,而市场上只有100台矿机,那么一台矿机可以挖100个币;可如果有1000台矿机,那么一台矿机能挖到的币就只有10个。但比特大陆从不保证自己会向全网投放多少矿机。它可能两个月只向市场出一批矿机,也可能一个月向市场出三批矿机。”

陆铭和老马认同Hitch的说法。尽管他们并不互相认识,且分散在湖北、安徽、浙江三省,但他们的结论却是一致的:比特大陆通过控制着矿机生产和销售量,几乎控制着全网算力,进而影响到每一个矿工的挖矿产出。

“看似半年能回本,但其实如果币价不涨,半年回本基本是没有希望的。如果数字货币市场进入熊市,或者比特大陆疯狂出货,那么回本周期会一次延长到一年,一年半,甚至两年。到目前看来,我还没见过哪个小白的矿机能挖两年以上的,这也就是说他们购买的矿机,一大半时间是在给比特大陆打工。”陆铭说起这话波澜不惊,“当然了,这些风险都是那些小白们不知道的。他们头脑发热,以为买矿机比炒币保险,其实都是一样的事儿啊。一夜暴富这种事,得看你有没有本事赚。”

顶端吃掉了80%的利润,小白不适合在这里生存。

——矿场主钱乐

“维权这种事在意料之中。”二呆说,“可我没想明白他们为啥还要买矿机。”

二呆在2014年进入了矿圈。“可以说是非常早了,我挖比特币的时候,比特币才一千多块钱。挖以太坊的时候,以太坊才四五十呢。我卖的点儿也好,以太坊四五千的时候,我出手清仓了。”

凭借着早期积累的财富,二呆如今拥有了一座令他自豪的矿场。但他并没有说自己究竟拥有多少台矿机。在他看来,其实也没那么重要——这一切原本就是凭空而起的。四年前,他手里还没有多少钱。

谈及矿机市场的这些散户和小白,他觉得头疼。

“蠢的没话说了。一个个就盯着眼前的币价,算能不能回本。可是说到底,你买矿机是在干什么?投资啊。”二呆叹了口气,“投资的逻辑是什么,不就是低买高卖么?正确的操作就是熊市的时候买矿机,牛市的时候卖矿机啊。”

二呆谈起了去年他的一波“神操作”:去年年初数字货币牛市正要启动的时候,花了1万多块钱买了若干台矿机,中间挖了多少数字货币自不必说,关键是12月份牛市最顶峰之时用高于买价的价格脱手。这相当于不仅免费用矿机挖了一年的比特币,而且还从矿机生意中赚了一笔钱。

“要是连这点觉悟也没有,我看他不必进入矿机市场了,”二呆说道,“高位接盘,然后在数字货币陷入熊市时遭比特大陆疯狂降价,连这个风险都不知道,那不就是明摆着等着被割韭菜吗?”

而矿场主钱乐则更加点破了小白不适合投资比特大陆的真相。

钱乐是一位来自澳大利亚的华人,他在四川有一个容纳着数万台矿机的大矿场。

钱乐介绍道,比起小白,自己的矿场可以直接和比特大陆谈判,用更加优惠的价格拿货。维修期也会适当延长。从这个角度来说,成本已经比小白们低了一些。

“最关键的是电费,”钱乐一语道破本质,“挖矿的成本主要有两个,一个是矿机成本,一个则是电费。如果你碰上功耗大的矿机,电费带来的成本甚至比矿机成本还要高。通常小白们能拿到的电费往往在5毛左右,这在市场上已经是没有竞争力了。在我们大矿主这里,电费价格一般是3毛5,这就意味着你比小白在电费上节约了30%的成本。更不用说小白零零星星的矿机,保养措施不到位,控制不了室内温度,机器故障率高什么的了。”

二呆则表示,他能拿到的电费价格在3毛左右。另外据佳明、马哥和陆铭表示,他们能够拿到的电费价格确实在5毛左右。一位矿机黄牛说,他所接触到的客户中,电费“能有4毛5的,已经很了不起了”。

“竞争太激烈了,”钱乐感叹道,“到我们这个级别的,大家都在比拼谁能拿到最低廉的电费。有人善于和政府打交道,内部有资源;有的就去深山里和私人小电厂合作。拿不到3毛5电费的,在市场上会慢慢缺乏竞争力——你拿什么钱去抵抗风险,拿什么钱去扩张呢?在我看来,如果你要投资矿场,少于8000台机位的就没什么投资价值了。那些几百台矿机的小矿场,今年都开始倒闭了。我实在想不明白小白们还能挖出些什么。”

而据F2pool创始人神鱼,挖矿是一个资源密集型、资本密集型的行业。在这样一个行业中,资源向巨头聚拢是一个长期趋势。据他观察,今年矿场已经出现了兼并联合。“两三万台矿机只能算是中上等吧,十万台以上的矿场才够得上巨头行列。”

谈及比特大陆“收割机”式的矿机出货和定价策略,钱乐说道:“比特大陆这样的矿机生产商处于行业的最顶端,他们大概能吃掉这个行业75%以上的利润,我们这种级别的大矿场吃掉15%,剩下不到10%的利润让市场去抢。但是毫无办法,谁让他处于行业的最上游呢?他也是做生意的,只要能用对他最有利的价格卖出去,他自然要卖出去,谁能说他错?”

据投行Bernstein分析师估算,按照 75% 的毛利率和 65% 的经营利润率,比特大陆在 2017 年的营业利润为 30 亿美元至 40 亿美元,超过了芯片巨头英伟达。而比特大陆联合创始人詹克团在接受《商业周刊》专访时透露,该公司2017 年的营收为 25 亿美元。

在矿机小白佳明看来,比特大陆每年能赚到上百亿人民币的利润,是用无数矿工的牺牲作为代价的。“他们是嗜血的,是吃独食的垄断者。我们从事矿工这项工作,既然付出了时间和资金成本,就期待有所回报。但比特大陆作为行业老大非常霸道,他生产矿机的成本很低,而卖出的价格很高,这就意味着其中有75%左右的降价空间,就意味着可以不断倾销。而他本身也是这么做的:如果某个矿机让你赚的比较多,他就多发矿机,进场收割。最后矿工们基本是在给比特大陆打工,而比特大陆本身既不承担机器损坏的风险,也不承担币价涨跌的风险,光是每年从矿机上就能捞到这么一大笔钱,不叫他‘矿霸’我不服。”

钱乐认同比特大陆在矿机圈中的霸主地位。他也认为,小白矿工可能根本就不适合在这个市场上生存。“太残酷了。他们缺乏基本常识,又零零散散的,就算去和比特大陆谈判,能掀起什么风浪?”

这个圈子里的很多人,他们曾经有去中心化的理想。

——黄牛易强

小白生存状态正在日益恶化,“去中心化”理想也在日益模糊。

易强是一名老矿工,但最后转型做了黄牛。在他心目中,最为难的就是当小白,因为他们不仅要被比特大陆不定时定量的矿机“收割”成果,被高昂的电费、矿机超高的温度困扰,还会被黄牛蛊惑和割韭菜。

“小白矿工入圈买矿机,现在和炒币的已经没啥区别了。他们没看过白皮书,可能对币种本身的机制以及背后的哲学都不了解,听官方一宣传,甚至几个黄牛一鼓动就买买买了。可是,他们对挖到的数字货币了不了解呢?万一这个币以后崩了怎么办呢?他们都不知道。”易强说道,“此外,小白们可能还会遭遇黑心黄牛,他们要么肆意加价,要么矿机出现问题后自己扣下比特大陆的赔偿。这其中的风险,大多数人在刚入圈的时候一无所知。”

而Hitch则表示,由于做散户利润已经不大,很多老矿工已经转去开矿场、做矿机托管、做钱包、做交易所甚至是发币,而小白在什么都不了解的情况下,却依然源源不断地进场。

相比起盲目、缺乏自我保护能力和谈判力的散户,矿圈的资源越来越集中到一些巨头手中。那些有着低廉电费的挖矿巨头能从单台矿机中榨得最多的钱,他们也有资金从黄牛手中收集更多的矿机,扩大挖矿规模。在这种情况下,一些电费较高、只有几百台或者上千台的小矿场渐渐难以支撑下去,在今年出现了倒闭潮。

易强认为,“去中心化”已经出现了悖论。“人人用电脑挖矿的时代,还可以认为比特币是去中心化的。但到了ASIC矿机时代,显卡正在失去用处,每个人的矿机还要连入矿池才能有稳定的产出。而矿池就像一个新的中心节点,它们并不完全透明,又没有人对矿池进行监管。散户们将矿机接入矿池后,可能会遇到矿池偷算力的现象,而散户并不自知。”

从理想主义的角度、为了算力去中心化,这个生态需要散户。他们的存在维持着矿机物理上的分散局面,在矿池的切换上也更加自由和灵活,且给系统带来的波动较小。而一些掌握着某种数字货币全网10%或者20%矿机的大型矿场,他们在切换矿池的时候会引发全网算力配比较为强烈的波动,对生态影响较大。虽然,散户在矿圈中最容易受到伤害。

矿机或者算力被高度垄断在某个集团,可能会对数字货币生态造成致命打击。近日,某 BTG 矿工在控制了比特币黄金BTG 51% 的算力后,实现了第一次双花算法攻击。BTG 团队认为这次攻击来自比特大陆,而比特大陆CEO吴忌寒则在推特上发文嘲讽,暗示BTG根本不值得费力攻击。

然而,这次51%攻击却是实在的。不论发起方是谁,它都提醒了采用工作量证明(POW)的数字货币社群,应当在算力分配上保持警惕。一个最好的局面其实是分散的矿机持有者,将算力平均分配在尽量多的矿池中。但现实生活已经被证明,这是一个艰难的设想。

一些数字货币社区对ASIC矿机充满恐慌。今年4月,在比特大陆研发出门罗币的专用挖矿芯片后,该币种负责团队认为这严重破坏了门罗生态,因此修改算法进行硬分叉。最后,该币分出了四个门罗币区块链分支,分别是XMC、PZ、XMO和XMZ,门罗币社区也由此陷入了分裂。

另一些数字货币则寻求摆脱工作量证明,借以摆脱“谁控制了算力,谁就控制了数字货币”的局面。例如以太坊准备采用POS共识算法,而EOS采用了DPOS算法。但这些数字货币最终都走向了某种新的中心化。POS机制的一个典型问题是,权力会向持有数字货币最多的人群聚集,而EOS的21个超级节点之间会否出现勾结和腐败问题,目前仍然引起了圈内的广泛关注。

数字货币正在展开一场有意思的社会实验。它正在一张空白的纸张上对人类能够想象到的组织结构进行尝试。如何“去中心化”避免垄断,是这场实验最开始讨论的核心议题之一。

比特大陆在B3矿机的销售中给出了“一个账号限购一台矿机”的限定策略,这项策略的目的或许在于“去中心化”。但在散户恶劣的生存环境中,这个想法就像一个难以让人信服的乌托邦。

对此,Hitch发出了更深的疑问:“许多人在热炒数字货币,可是是谁维护了这个数字货币世界的运转?是谁支撑着‘去中心化’这个理想,并为此买单?而他们从这份工作中又获得了什么?”

傅志彬:29年后的回忆

$
0
0

傅志彬:29年后的回忆

今天是2018年的6月3日。记得29年前的今天我正在天津南开大学,和两个同学喝酒,这两个同学现在一个在美国,一个在瑞士,而我现在南太平洋的岛国上敲键盘。

那天喝酒是因为我刚从北京回来,他们也想问我北京的境况。酒喝大了,倒头就睡,第二天很晚才起床,起来后才知道北京终于开枪了。当时各种消息满天飞,南开的学生们上午还在街上游行,下午因为有谣言说要对学校进行军管,一时间都做了鸟兽散,等我酒醒出门,校园里已经没什么学生了。

过了十几天,我送我的德语老师去北京机场回国,来回都经过北京站,看到十来个带着钢盔,背着AK47冲锋枪的野战部队军人在车站前巡逻,行人都沉默地看着他们,这些士兵也很紧张地四下张望,气氛怪异。记得在回天津的火车上,还有个乘警过来检查我的证件,可能我当时的穿着打扮太像学生了。好在我身上还有原来的工作证,也不是什么逃亡学生领袖,也就没啥事了。

因为我在八十年代初读大学,而且学习哲学,又因为对政治学感兴趣毕业后进入省级社科院从事政治学研究,“六四”屠杀事件发生前后正好又在天津南开大学学习,经常去北京,所以对整个事件的前因后果有比较全面的了解。而后我出国留学,在欧洲、美国也看到了很多关于“六四”的新闻报道以及很多当事人的回忆录。当然,更重要的是虽然我目睹了几乎整个运动的全过程,但我基本是以观察者的身份和态度来对待这件对中国和世界都有很大影响的事件。之后,我也没有试图利用这个事件为自己捞什么好处。当时在欧洲、美洲、澳洲有很多留学生借此机会获得了当地的永久居留证,这些居留证被称为“血卡”。就像我坐牢纯粹是因为我写了《洗脑的历史》这本书,而与任何政治组织和政治行为没有联系一样。也就是说,我没有因为“六四”事件受过任何迫害,也没有从中得到任何好处,所以我可以从一个客观公正的角度来叙述这个事件的起因,过程,以及对中国、世界的影响。

“六四”事件真正的起因可以追溯到1983年的“清除资产阶级自由化”运动。这场运动实际上是中国大陆的当权者担心中国知识界对“文革”的反思和追根溯源会危及他们的统治而发起的新反右运动,但因为当时人们对运动普遍厌恶,以及获得最高权力不久的邓小平害怕这种反清算会危及他的权力,所以采取了一种折中调和的办法,虽然对知识界反思进行打击,但不像五十年代反右那么严厉,用官方的话就是将知识界发出的声音作为“人民内部矛盾”处理,比如我的老师高尔泰就被从教育部的重点大学兰州大学哲学系调往名不见经传的四川师范学院,作为对他自由思想的惩罚。同时邓小平又利用民间的这种情绪反制党内对他获取大权不满的势力。

邓小平的这种平衡术在1986年被打破,因为这一年知识界发出了更强大的反思过去、要求更大自由的声音,这次知识界的领袖是当时的中国科技大学校长方励之。当时北京,上海,合肥的学生都走上了街头,但规模不大,也没有得到民间的响应。

这个时候中共的实际掌控人是邓小平,胡耀邦任中共总书记,赵紫阳任总理。胡耀邦主张用怀柔的手法对付学生和知识分子,引起邓小平的反感,结果胡耀邦被撤换,赵紫阳出任中共总书记,成为名义上的第一号人物,李鹏出任总理,成为名义上的二号人物。

1989年4月15日,胡耀邦意外去世。中国知识界借着纪念胡耀邦发起了又一次对中共统治的反思,这一次挑头的是上海社会科学院世界经济研究所主办的《世界经济导报》。这个报社组织了一些学者座谈,直指胡耀邦受到了不公平待遇。

1989年4月22日,北大清华的学生游行至中南海的新华门,要求给胡耀邦一个说法。

4月26日,《人民日报》发表社论《必须旗帜鲜明地反对动乱》,将学生的游行,包围新华门称为“动乱”。我记得很清楚,那个晚上我正好从天津到北京,沿途都听到这个社论的广播。播音员各个都字正腔圆,杀气腾腾,让我回忆起文革时期运动来临之前的语调。

这时的人们对这种腔调和我一样不陌生,所以学生害怕遭到清算,就在第二天,即4月27日组织了更大的游行。

记得4月26日晚我到了北大清华交错的三角地,有些学生在谈论明天的游行会不会被军队干涉。当时有个学生说,要是坦克来了我躲开就是。我还清晰记得他说话的样子和两手一摊的姿势。

4月27日,北大清华的学生先发,沿途各大学校的学生不断汇入,到了长安街上已是浩浩荡荡。我全程骑车跟随,直到游行队伍在长安街六部口附近被横在街口的徒手警察队伍拦住。

看到图左侧很多旁观者吗,我就是其中一个,不过在警察队伍的后面,应该没有镜头中。图中是学生队伍突破拦截的一刹那。其实对峙持续了不短的时间,至少有几十分钟,直到另外的游行队伍从背面出现,警察的队形才散开,游行队伍浩浩荡荡经过天安门广场,一直走到建国门才折向北。学生的诉求主要是要求中共改变对学生运动是“动乱”的定性,不要秋后算账。当时长安街上挤满了人,北京市民对学生都充满了同情。

与此相呼应,时任上海市委书记的江泽民将《世界经济导报》的主编钦本立在4月27日撤职,28日引发上海大游行,要求回复钦本立的职务,要求言论自由。

这样,知识界要求言论自由,学生要求改变定性,成为当时官方和民间的主要矛盾点。

大游行之后,似乎也没啥动静,我也就离开了北京,趁着五一假期到北戴河游玩去了。当时的中共总书记赵紫阳从朝鲜访问回来后主张改变定性,并在纪念“五四”运动讲话中表示要在民主和法制的基础上解决问题,气氛似乎有很大缓和。

但到了5月13日,忽然有数百学生到达天安门广场绝食,要求政府与学生对话,改变对学生运动的定性。

因为一直研究政治学,我对这场运动的走向非常关心,所以北京学生绝食后我就又来到了北京,住在同学家,基本上看到了运动逐渐升级的全过程,看到了赵紫阳向到访的戈尔巴乔夫透露中国实际最高领导还是邓小平,他不过是个傀儡;也坐在天安门观礼台上亲眼目睹了5月17日的百万人大游行。这时的游行队伍里有各行各业的人群,主题也在要言论自由,要改变定性之上加上了反官倒,反贪污。

这个时候北京市民全力支持学生,学生在广场上的吃喝都是由市民供应的,全国各地捐助的款项和物品不断涌向广场。甚至北京的警察消失后,交通还是秩序井然,据说连小偷都歇业了。

5月19日傍晚有传闻要戒严,晚上广场灯火被关闭,众人手挽着手唱国歌和国际歌,场面悲壮感人。听闻戒严部队从四面进城,学生和市民赶赴各处堵截,最后军队根本进不了城。

官方只能派遣直升飞机散发传单,让大家听从命令回家。

这种局面一直持续到五月底,天安门广场也成了一个巨大Party场所,自由女神像来了,广场大学有了,甚至还有在广场宣布结婚的李禄和赵敏,全国各地的学生也都奔赴北京朝圣。我印象最深的一个场景是在天安门旁的树荫里,两个女学生问我怎么看这场运动的结局。我的回答是,现在军队不开枪是进不来的。而人民解放军是人民的子弟兵,不可能向人民开枪的,所以,这场运动学生必胜无疑。

当然,后来证明我错了,人民的军队就是向人民开了枪,从此我脑子里的最后毒素被排掉,彻底明白了。我只是祈祷那两个听了我分析的女同学没有被人民子弟兵的子弹击中。

5月31日,因为觉得不再会发生什么,我就离开了天安门广场回到天津,我的同学们见到我以后松了一口气,因为他们久不见我的消息,那时也没有手机传呼机。所以就有了6月3日晚的酒宴,就有了开头的一幕。如果不是相信人民解放军不会向人民开枪,也许我还会待在北京,以后有什么结果就难说了。

我把我在六四期间的经历梳理了一遍。接下来就是要谈我的想法了。

第一, 当时确实绝大部分人没有想到过要去推翻共产党的统治,知识分子要求的是言论自由,学生要求的是不要秋后算账,普通市民要求的是反贪污,反官倒。

第二, 所谓中国人没有民主素质,一民主就要大乱的说法纯粹是胡扯。不说学生运动本身,在整个北京市,当时的政府基本瘫痪,连交通管理都由学生组织,不论后勤供应还是堵截军车都是群众自发,极为有效,井然有序。所谓大乱,基本来自专制者的破坏。

第三, 所谓中国人没有血性的说法也是一派胡言。北京学生(来自全国各地)和市民用身体挡军车,挡子弹,挡坦克,在知道军队开枪杀人的情况下还有很多市民学生挺身抗议,这要多少勇气!

第四, “六四”以后,出于对中国人民的同情,西欧,美国,澳洲等国给华人颁发了大量居住签证,使得这场运动获利最大的是海外华人群体。

第五, “六四”事件引发了苏联、东欧社会主义国家的陆续崩盘。

第六, 由于当时美国需要中国对抗苏联,所以在制裁中国政府的问题上基本上是半遮半掩。最近我在一个中国大陆的军事节目中看到,1992年美国还交付给中国军方先进的雷达装置。在美国的带领下,整个西方世界除了明面上停止与中国军方交流,并且发给中国留学人员绿卡以外,其余的制裁措施并不是很多。到了九十年代采取接触政策,到2000年以后更是允许中国加入WTO,到现在终于为自己造就了一个强劲的对手。

第七, 整个事件中,赵紫阳一直是被各方作为开明派的受害者来看待的。但赵紫阳是不是想利用这个事件赶走邓小平,获得真正的最高权力呢?不能排除这个可能。一场群众运动中,各方都会想利用混乱来达到自己的目的,最终的走向就很难预料了。这也是历史的吊诡之处。

第八, 由于是一场不经意之间来临的运动,没有什么准备,领导者也就良莠不齐。在这种大规模的群众街头运动中,往往是嗓门大,做事极端者容易获得喝彩。从这个方面去理解柴玲、吾尔开希等人的行为也就不足为怪了。

第九, 目前在海外咒骂“六四”运动的人很显然是中共撒出去的狗,不值得去生气。

总之,“六四”事件展示了中国人的勇气和胆识,反衬了西方世界的短视与功利!

向“六四”死难者致敬!向“六四”受难者致敬!


React.js Top 10 Articles for the Past Month

$
0
0

React.js Top 10 Articles for the Past Month (v.June 2018)

For the past month, we ranked nearly 1,100 React.js articles to pick the Top 10 stories that can help advance your career (0.9% chance).

Tweet of the month
  • Topics in this list: Virtual DOM, Async Rendering, Structure, Tutorial, Heroku, Apollo, GraphQL, Boilerplate, Chat App, Perpack, Pinterest
  • “Watch” React.js Monthly Top 10 on Github and get email once a month.

As an article ranking service for professionals, we take quality very seriously and make sure each article you read is great. Mybridge AI considers the total number of shares, minutes read, and uses our machine learning algorithm to rank articles. This is a competitive list and you’ll find the experience and techniques shared by the React leaders useful.

Course of the month:

A) Beginners: React 16 — The Complete Guide (incl. React Router 4 & Redux) [5,106 recommends, 4.8/5 stars]

B) Advanced: Advanced React and Redux: 2018 Edition [5,927 recommends, 4.6/5 stars]

Rank 1

Optimizing React: Virtual DOM explained — . Courtesy of Alexey IvanovAndy Barnov


Rank 2

Andrew Clark: React Suspense. Courtesy of ZEIT


Rank 3

Structuring projects and naming components in React. Courtesy of Vinicius Dacal


Rank 4

The most important lessons I’ve learned after a year of working with React. Courtesy of Tomas Eglinskas


Rank 5

A Rock Solid, Modern Web Stack — Rails 5 API + ActiveAdmin + Create React App on Heroku. Courtesy of Charlie Gleason


Rank 6

A complete React with Apollo and GraphQL Tutorial — RWieruch. Courtesy of Robin Wieruch


Rank 7

How to build your own React boilerplate. Courtesy of Seth Alexander


Rank 8

Building a Chat App with Express, React and Socket.io with GIFs Support. Courtesy of Waleed Ahmad


Rank 9

A Gentle Introduction to Prepack, Part 1 — Dan Abramov. Courtesy of Dan Abramov


Rank 10

Supporting React Native at Pinterest. Courtesy of Pinterest Engineering

That’s it for React.js Monthly Top 10. Visit our publication to find top posts for more programming skills.

6 次 Kaggle 计算机视觉类比赛赛后感

$
0
0

6 次 Kaggle 计算机视觉类比赛赛后感

本文作者:思颖 2018-06-08 09:50
导语:知乎上很多 Kaggler 分享是针对传统 machine learning 类比赛,对 CV 类比赛并不适用,这篇文章供刚刚接触 CV 类比赛的同学参考。

雷锋网 AI 研习社按,本文作者 dawnbreaker,首发于知乎,雷锋网(公众号:雷锋网) AI 研习社获其授权转载。

我从 2017 年年初开始接触 Kaggle。曾翻阅知乎上很多关于 Kaggle 的回答和文章,然而逐渐发现大部分文章中提到的经验和技巧是针对传统 machine learning 类比赛的,对计算机视觉类的比赛并不适用。此刻已是 2018 年 6 月,我也参加过了多次比赛,或多或少有了一些自己的观点和感想。因此我写这一篇文章希望对现存文章进行一定程度的补充,以供刚刚接触 Kaggle 计算机视觉(CV)类比赛的同学参考。尽管此文会充斥个人观点和猜测,我会尽量提供论据并淡化感情色彩。这是我在知乎的第一篇文章,希望大家能够多多鼓励和批评。

一、我的成绩

第一次 The Nature Conservancy Fisheries Monitoring
排名: 16th of 2,293 ⋅ Top 1% ⋅ 角色:队长。另一个队员叫孙鹏,是同一实验室的同学

第二次 Carvana Image Masking Challenge
排名: 12th of 735 ⋅ Top 2% ⋅ 角色:前期单刷,后来基本上由女朋友完成。

第三次 Cdiscount’s Image Classification Challenge
排名: 15th of 627 ⋅ Top 3% ⋅ 角色:基本是单刷。偶尔和女友以及朋友讨论一下。

第四次 Statoil/C-CORE Iceberg Classifier Challenge
排名: 28th of 3,343 ⋅ Top 1% ⋅ 角色:打酱油。队长是孙鹏。

第五次 Google Landmark Recognition Challenge
排名: 9th of 483 ⋅ Top 2% ⋅ 担任角色:单刷

并列第五次 Google Landmark Retrieval Challenge
排名: 22th of 218 ⋅ Top 11% ⋅ 角色:单刷。基本上只用 landmark recognition 比赛的代码跑了一下,没有进行调参等尝试,完全是投机取巧。

这六次比赛皆为计算机视觉类的任务。我还曾试图参加 TensorFlow Speech Recognition Challenge 这个语音识别类的比赛,最终因为自己过于外行和精力不足知难而退。

以上就是我的全部比赛经历。

二、Kaggle上的两个世界

Kaggle 的比赛任务大致都是根据已知信息,对测试集里的数据进行某种预测。按照主流方法是否涉及到 deep learning 来分,大概有两种比赛:

A. 一种比赛比较适合传统的 machine learning 方法,要想取得好成绩,可能要在 feature engineering 和 ensemble 方面大做文章。但基本用不上 deep learning,因此有没有好的 GPU 无关紧要。这类比赛的例子有房价预测等:

House Prices: Advanced Regression Techniques

Zillow Prize: Zillow’s Home Value Prediction (Zestimate)

Two Sigma Financial Modeling Challenge

Sberbank Russian Housing Market

Instacart Market Basket Analysis

Web Traffic Time Series Forecasting

Mercedes-Benz Greener Manufacturing

B. 另一种比赛现阶段主流的解决方案是各种深度神经网络,主要以计算机视觉类为主,任务包括 image/video classification, object detection, image masking。偶尔也有语音识别类任务。迄今为止我参加过的比赛都是这一种。参加此类比赛对硬件有一定程度的要求。比如说有一个台式机和一块或多块 Titan X/1080ti 会对模型的迭代帮助很大。但用笔记本 GPU 甚至完全不用 GPU 并且排名靠前的人也是有的:

例1:我的同学孙鹏,用笔记本上的 980M。

例2:一个叫 Eric 的 Kaggler,用 5 个无 GPU 的电脑跑 PyTorch,Google Landmark Recognition Challenge 中获得 28th/483 排名。参见 I enjoyed this competition: Feedback from a newbie!

例3:一个 ID 为 ImageRecog 的 Kaggler,声称用笔记本打比赛,在 Google Landmark Retrieval Challenge 中赢得季军。(不确定后期有没上更强大的硬件。)

但总归会痛苦很多。

很多 Kagglers 对这两类比赛之一表现出了明显的偏好。砍手豪因为缺少用来训练神经网络的硬件,而倾向于参加 A 类比赛(参见:《零基础自学两月后三月三次轻松进入kaggle比赛top20小结》)。而我自己迄今参加的都是 B 类的比赛,原因是自己习惯于处理计算机视觉类的任务,而对传统 machine learning 任务尤其是时序预测方面了解比较少,不想进去垫底。如此一来 Kaggle 上仿佛存在着两个不同的世界。A、B 类比赛都很投入地去参加的人当然也是存在的,只是据我所见大部分人都倾向于参加其中一类。

我在此强调这两类比赛的区别,一个重要原因是,我发现迄今为止知乎上大部分的 Kaggle 入门指南大都是针对 A 类比赛的。例:

参加 Kaggle 竞赛是怎样一种体验? – Naiyan Wang 的回答 – 知乎 

参加 Kaggle 竞赛是怎样一种体验? – Alex Hsu 的回答 – 知乎 

零基础自学两月后三月三次轻松进入 Kaggle 比赛top20

分分钟带你杀入 Kaggle Top 1%

Kaggle 入门指南

Kaggle 首战拿银总结 | 入门指导 (长文、干货)

随机森林——实现 Kaggle 排名 Top2% 的利器

Kaggle 实战(2)—房价预测:高阶回归技术应用

B类比赛的文章/回答则少得多,例:

参加 Kaggle 竞赛是怎样一种体验? – AI 研习社的回答 – 知乎

我在 Kaggle 數海獅

Kaggle 的比赛在 Machine Learning 领域中属于什么地位? – 幻云羽音的回答 – 知乎

我希望本文可以对关注 B 类比赛的 Kaggler 提供一些参考。

三、靠套路而豪无创新究竟能得到怎样的成绩?

有人说 Kaggle 比赛全靠套路。这句话隐含的意味是要想在 Kaggle 上获得好成绩,靠的是套路而不是智慧和灵感,或者靠的不是真正的技术。如果去杠的话,我们也可以说发 paper 也是靠套路。但我想,即使真的是靠套路,也未必是一件完全的坏事,套路中也能体现高下之分,套路中也能体现出能力的强弱吧。很多 Kaggler 的成绩都是比较稳定的。比如 bestfitting 连续在 6 个比赛中得了 Top 3。比如 Fangzhou Liao 四次参加比赛全部都是冠军。而我大部分时间都进不去 Top10,也从未出过 Top30,大概是因为我总也没参透 Top10 选手的套路,而排名 30+ 的参赛者总也没参透我的套路吧。

那么靠套路而豪无创新究竟能得到怎样的成绩?我来试图给出一个下界出来:

1. 在Carvana Image Masking Challenge 中我的第一个 baseline 模型是 Unet,而且图省事用的是 pytorch-CycleGAN-and-pix2pix 中的 Unet。为了赶快跑出个结果我把图片从大约 1000×700 缩小成了 256×256 大小。没有经过任何调参的第一次提交结果是(Private Leaderboard) Dice coefficent = 0.985517,比赛结束时这个成绩可以排到 top 72%。把图片大小改成 768×512 之后,未经任何其他修改,成绩是 coefficent = 0.995050,比赛结束时可以排到 top 53%。

2. 在 Cdiscount’s Image Classification Challenge 中我的第一个 baseline 模型是 Pytorch 的 Resnet101,第一次提交的成绩是 Accuracy = 0.71929,比赛结束时这个成绩可以排进 Top 12%。

3. 在 Google Landmark Recognition Challenge 中我的第一个 baseline 模型是 ResNet50,第一次提交的成绩是 GAP = 0.115。我后来在讨论区把这个模型的训练公开了,即便如此,这个成绩在比赛结束时居然也可以排到 Top 14%。我的第二个 baseline 模型 DELF 成绩是 GAP = 0.203,比赛结束时可以排进 top 4%!

4. 在 Google Landmark Retrieval Challenge 中我套用了 Recognition 中使用的 DELF 代码,第一个模型即是最后一个模型,没有调优过程,排名 11%.

5. The Nature Conservancy Fisheries Monitoring 是个 two-stage 比赛,两个 stage 用的测试集不同,并且 stage 1 的成绩已被主办方清空所以我无法判断我们第一个 baseline 模型可以在最终的 leaderboard 上排第几。

6. Statoil/C-CORE Iceberg Classifier Challenge 这个比赛我是打酱油的,前期的实验细节我手头暂时缺失。

以上经验表明,只要选择了与任务相对应的 state-of-art 模型,在代码无 bug,没有实验设置错误的情况下,排进 Top 50% 甚至 Top 15% 难度很小。那么另外的 50%~85% 的参赛者出了什么问题呢?我猜可能原因有如下几种:

1. 根本不知道 state-of-art 模型是什么,也不知道怎么检索或者没有检索的意识。

例:想强行套用mnist分类的方法来解决 image retrieval 问题

2. 不想离开心理舒适区,而选择自己相对比较熟悉或容易上手的工具、库和模型。

譬如说因为喜欢用 Keras 或者 Keras 刚入门而只用网上找得到源码的基于 Keras 的模型。

3. 或多或少知道 state-of-art 模型的存在,但硬件条件有限,而选择对计算资源要求不高的模型。

例:因为硬盘小或网速慢而下载缩小几倍的图片代替原图来进行训练的

4. 代码有 bug,debug 苦手。

5. 实验设置有问题。比如存在逻辑错误或者参数有严重问题。

四、参加比赛有什么好处

至于说为什么有 50%~85% 之多,如果说不是向来如此,也许是最近几年 Kaggle 更火了,入门者也更多了吧。我去年(2017)在国内已经发现很多人在求职简历里写 Kaggle 比赛经历。至于 Kaggle 比赛经历对求职有多大好处我还不能确定。值得一提的是,我在参加第一次比赛感觉坚持不下去的时候,是看了 @lau phunter 的帖子坚持下去的:

2017-8-22 更新:两年过去了大家参加 Kaggle 热情高涨标准也水涨船高,以下标准请浮动一级。
原答案:
获奖的都是有真本事的人,在上面练几个题目得个好名次,十分能证明你对数据科学这个领域的实践和理解。我现在招人的时候几乎是这个标准:
写上参加过 Kaggle 比赛,我会看简历。
得过一次 10%,我会给电话面试。
得过 2 次或者以上 10%,我会给 on site 面试。
得过一次前 10,我们会谈笑风生。
楼主加油。

虽然水涨船高,总归有人认可是好事。

我想从一个平常人的角度来讨论 Kaggle 比赛能给我们带来什么。我先来举几个不适合平常人的角度:

1. 一个网上经常被讨论的话题,就是“paper 重要还是比赛成绩重要”。我想,能考虑这个问题的人并不适用那种很极端的情况:例如 ILSVRC(Imagenet) 如果能得第一自然也能把方法发到顶会上去。——ILSVRC 能得冠军的人根本不会疑惑这种问题吧。

2. “如果进了前几名还可以获得奖金。”如果不是 Grandmaster 的级别(例:Vladimir Iglovikov 一年内获得奖金 $28k),平常人的收益风险比恐怕还不如去搬砖。

而平常人真正容易面对的情况是,发顶会 paper 被拒或者根本写不出来,参加比赛成绩不算拔尖或者被吊打。我认为一个人如果花时间可以换来顶会一作,那么不参加 Kaggle 也没有什么遗憾。

Kaggle 常年都有各种比赛,有整理好的数据集,有各种 kernel 和帖子教你怎样下载和使用数据集,甚至会给出一些 baseline 代码。获胜者也会分享他们的 solution。这些特点对于那些想要尝试一些曾经没做过计算机视觉任务的人来说是十分新手友好的。这里的新手指代的不一定是计算机视觉方面完全的新手,比如说如果你本来只熟悉物体识别,想尝试一下语义分割,那么 Kaggle 也可能很适合你。

Kaggle 还有一大特色就是实时的 leaderboard,非常残酷。如果你什么都不做,你的比赛名次只会下降。这会造成一种心理的刺激,给你压力/动力让你改善模型——当然这也是一种精神折磨。

我还有一个感想是:Kaggle 比赛给了每个 AI 爱好者被考验的免费机会。可以让一些喜欢空想和嘴炮的人检查一下自己是不是如同想象的那般厉害。但这个感想的诡异之处在于,由于我上文中提到的,只要正常跑通一个 ResNet101 就可能进 Top 15%,而或许有人觉得 Top 15% 很了不起,这样一些喜欢空想和嘴炮的人参加 Kaggle 之后或许真的觉得自己很厉害了。So paradoxical……!

还有就是会认识很多志同道合的网友,这一点不展开讨论了。

五、陷阱和一些技巧

1. 每场比赛会有多少人参与?

计算机视觉类比赛用到的数据通常是图片和视频,无论是空间占用还是计算量都比较大,大到很多人不得不因为硬件资源,或处理大规模数据的经验和能力问题,而不愿意参与数据集较大的比赛。这导致了一场比赛的参与人数和数据量强相关。小数据集的例子如 2018 Data Science Bowl 训练集只有 80M 左右,参与队数高达 3634,Statoil/C-CORE Iceberg Classifier Challenge 训练集只有 43M,参与队数高达 3343。数据集比较大的如 Cdiscount’s Image Classification Challenge 训练集 60G,参与队数为 627。而 Google Landmark Recognition Challenge 的训练集要 170G 左右,参与队数为 483。

另一个决定参与人数的主要因素是任务的复杂程度和生僻程度。纯分类任务比较受欢迎,其次是语义分割等任务。这些比较受欢迎的任务特点是门槛比较低,网上找得到大量现成的代码和模型(如 VGG、ResNet、Unet、SegNet),会调库无需深入了解原理甚至可能不用调参就能跑出像模像样的结果。(因为诸如图片分类等任务门槛特别低,以至于被某些人当做 AI 从业者的黑点。对此类黑点的态度不在本文的讨论范围。)Google Landmark Recognition Challenge 和 Google Landmark Retrieval Challenge 数据集大小几乎一样,因为 retrieval 问题的门槛相对比较高,后者的参与队伍数不到前者的一半。而 NIPS 2017: Targeted Adversarial Attack 这个对抗攻击任务,只有 65 队参加。

硬件条件好,经验丰富,能力强的人不太在乎如上两点因素,并且排名靠前经常霸榜的人大都是这样的人,因此一个人的期望排名和参与总队伍数并非是线性关系。——譬如说,我在两千队参与的比赛中得了第 16,那么同样的水平和发挥,我在六七百队参与比赛中就能进前 10 吗?没那么容易,事实证明我在六七百队参与的比赛中依然是第十几名。当然这里没有考虑到运气成分,只是个粗略的例子。

由于我抱以上述观点,显而易见我个人看重绝对排名胜于 Top 百分比。但会有很多人偏好于追求一个漂亮的 Top 百分比。我的建议是,想要 Top 百分比好看,或者目标是铜牌和银牌的同学应该多参加人多的比赛。人再多,Top 10% 都保证有铜牌,Top 5% 都保证有银牌;而人多的情况下进 Top 10% 甚至 Top 5% 的几率也大。(金牌的规则不一样,队伍总数 1000+ 的情况下金牌数只有 10+0.2%*队伍总数。参见 Kaggle Progression System

2. Public Leaderboard 陷阱

数据集小的比赛虽然门槛低,却并不真的简单容易。较小的样本量会导致验证集和测试集的样本分布差异较大。加上由于计算量小,模型迭代(这里指更新换代,不是训练一个 iteration)速度快,很容易导致一种后果:overfit 到验证集上,这种后果导致的常见悲惨结局是比赛结束的时候发现 Public leaderboard 成绩还不错,但是 Private Leaderboard 上的排名一落千丈(通常 Public Leaderboard 会被当成是某种意义上的验证集)。例如 Statoil/C-CORE Iceberg Classifier Challenge 的两个 leaderboard 上有很多人有一百多甚至两百多的排名变化,相比较而言,数据量大了的三个数量级的 Cdiscount’s Image Classification Challenge 绝大部分人排名都没有变化,少数有 1~2 名的浮动。

对此我只有一句空洞的建议:合理的 evaluation 策略至关重要。Kaggle 排名第一位的 bestfitting(真名 Shubin Dai,中国人)称:

A good CV is half of success. I won’t go to the next step if I can’t find a good way to evaluate my model.

———链接:Profiling Top Kagglers: Bestfitting, Currently #1 in the World

这些大佬们每次在比赛结束公布 Private Leaderboard 的时候排名都比较稳定,不太容易下降很多。可见看似是取决于运气的排名大震荡,在大佬手里是有办法控制的。这大概就是真功夫吧。

3. 马甲和私享代码

在数据集小的比赛中,由于迭代速度比较快,每天提交的次数又有限制(大部分比赛是 5 次),所以经常会有人注册小号来提交结果。在数据集较大的比赛中,后期也偶有这样的现象。有的人在排名比较好的时候会私下里把代码分享给别人(比如同学),以求一人得道鸡犬升天……。我在比赛中见过几次别人注册马甲或私享代码。譬如说一夜之间就冒出了一堆三无账号,成绩还都差不多。或者在成绩对参数极其敏感的任务中一次提交就飞进 Top5%,一发入魂。一人多号和私享代码是违背比赛精神的,也是 Kaggle 明令禁止的,并且也是 Kaggle 会探测和封杀的。可悲的是,经常会有中国人这样做。为什么我这么确定?因为有些账号的 ID 用的是拼音,或者地址选了 China。真是又坏又蠢,作弊本已可耻,却还要披着中国人的形象。大概是觉得自己聪明,占了便宜却无人知晓吧……然而最终这些账号都被主办方踢出了比赛或者删号处理。

4. 刷全站排名

全站排名取决于你在过往比赛中取得的总积分,积分公式如下图:

6 次 Kaggle 计算机视觉类比赛赛后感

截图来源:Improved Kaggle Rankings(图侵删)

积分是随着时间呈指数衰减的。这意味着,如果要刷高自己的排名最高纪录,那么参加几次间隔很久的比赛,不如参加几次间隔很短的比赛。

另外参加任何的比赛都不会减分,所以片面地追求全站排名不太在乎提高自身水平的,可以考虑在海量的比赛中打酱油。这是一个病态无聊但可行的策略。

5. 更多的 supervision

在绝大部分的比赛当中,在训练集上做额外的标记都是不违反规则的,只要在规定的时间(有些比赛是 deadline 的两周以前)以前上传到讨论区和其他参赛者分享。譬如说,在鱼类识别的任务中,你可以用 bounding box 标记出鱼的位置。在海狮计数的任务中你可以用 mask 来标记出每一个属于海狮的像素。这些额外的标记通常都能帮助训练出更好的模型。但开销也不小。另外要注意的是,在测试集上做标记是明令禁止的作弊行为。

六、其它

1.参加计算机视觉类的比赛需要多少 GPU

一两块 Titan X, 1080 或 1080Ti 就够了。一块 980 也勉强可以。四块以上的 GPU 当然更好,但 GPU 多了其实很难充分利用到。运算速度快到一定程度,人脑 debug、分析问题、想 idea 的时间就成了主要的速度瓶颈。如果不怎么分析问题,不怎么想 idea,走无脑穷举试错的路线,以图速度或图省事,很容易走偏。高手们会根据自己的经验和直觉来快速尝试不同的模型,所以驾驭得了更多 GPU。如果你有“只要给我更多的 GPU 我肯定能大幅提高排名”这样的自信,不妨试试 aws 上的 spot instance,如果确实如此,那就可以攒钱或求赞助来入手 GPU 了。

诚然,小数据集的比赛对 GPU 要求很低,甚至 750M 这样的 GPU 也可以用。但是因为迭代速度太快,以及 leaderboard 每天都有大浮动,这样的比赛参加起来特别费肝……

2. 什么样的排名算是一个好的排名

Jeremy Howard 在 2017 年年初或 2016 年年末(记不清了)的 fast.ai 的教学视频里(出处懒得求证了)说:排进 Top 50%,说明你的模型还 OK;排进 Top 10%,说明你是这个领域的专家;排进 Top 1说明你是世界上最顶尖的专家。他的这段话过于乐观了。很多时候排名看起来还可以,只是因为真正的(诉诸纯洁:P)专家们和大佬们大多没有时间参加 Kaggle 而已。但这么想似乎也是有失公允的,因为菜鸟和外行们也大都没有参加 Kaggle。所以谁知道呢……?

雷锋网版权文章,未经授权禁止转载。详情见转载须知

IPFS 教學和筆記

$
0
0

IPFS 教學和筆記

因為 IPFS 的繁中資料實在太少了,決定邊學習邊筆記。

本篇教學的網址是:

為什麼要使用 IPFS

IPFS (星際檔案系統) 是用來取代已經太過集中化的 HTTP 的一種方案,這裡不做一般性的介紹,因為其它 blog / Wikipedia 上都有寫了。我想使用 IPFS 的理由是:

  1. 網路過度集中化,使用者自願放棄自由,請參考 網際網路已經完蛋了
  2. 依賴單一公司提供的平台所發佈的文章,即使沒有反政府、侵權、政治不正確 blah blah 還是有各種不同的可能被下架,而你已經在 EULA 中同意不去追究了。
  3. Google Blogspot, Tumblr, Facebook Blog 提供的免費、高品質 blog,仍然有上述的疑慮。
  4. 即使是自己架的 Word Press,哪一天被警察用任何理由抄掉了,上面的網頁就沒有了。

去中心化,才能有民主、自由的網路。即使如此,去中心化仍然需要網路中立性的支持,不然你的 ISP 仍然可以獨厚(加速)大公司的網站。

本篇教學 不會 論述以下主題:

  • 免責或匿名性。這是另一個大題目,去中心化不代表你可以匿名。
  • 挖礦、區塊鏈、或任何虛擬貨幣。
  • ICO 特別是 IPFS 最近的 Filecoin ICO 。

完整的介紹性文章,可以參考 InfoQ 的 IPFS:替代HTTP的分布式网络协议 。

下載、安裝

下載

下載很簡單,請直接到 IPFS 官網 或直接 點這裡下載。我直接下載了 go-ipfs 0.4.10, Mac OS X 請下載 Darwin amd64, Ubuntu 請下載 Linux amd64。

安裝

直接在命令列下打這些指令就好:

$ ipfs init     # 會在 ~/.ipfs 開一個目錄,存放區塊檔,預設是最大 10GB

$ ipfs id       # 列出自己的 ID, 但其實不需要太介意
{
	"ID": "QmNmfAqjiQgdLJscpM3FufbaXY9QEqWZiWqDTbsrUjSKDR",
	"PublicKey": "...",
	"Addresses": [
		"..."
	],
	"AgentVersion": "go-ipfs/0.4.10/",
	"ProtocolVersion": "ipfs/0.1.0"
}

想修改預設的暫存大小的話,請下這個指令:

export EDITOR=/usr/bin/vim
ipfs config edit

找到 "StorageMax": "10GB", 這行,把 10GB 換成你要的大小即可。

新增檔案

先來隨便新增一個檔案吧。打開記事本,隨便打幾行字 lorem ipsum dolor sit amet 存成 README.md

ipfs add 可以把檔案加進 IPFS 裡,它會傳回一組 HASH, 那個 HASH 就是這個檔案的唯一識別代碼了。

$ ipfs add README.md
added QmQhK6KAVA2nJgFYzf7D1yHdH11GiGJv6zRTUhoVZwXpDd README.md

$ ipfs cat /ipfs/QmQhK6KAVA2nJgFYzf7D1yHdH11GiGJv6zRTUhoVZwXpDd
lorem ipsum dolor sit amet

即使你換到別台機器,一樣可以用 ipfs cat /ipfs/QmQhK6KAVA2nJgFYzf7D1yHdH11GiGJv6zRTUhoVZwXpDd 看到這個檔案的內容。

如果要分享給沒有安裝 IPFS 的朋友(建議順便推坑!) 可以請他使用 IPFS Gateway: https://ipfs.io/ipfs/QmQhK6KAVA2nJgFYzf7D1yHdH11GiGJv6zRTUhoVZwXpDd 把後面的 HASH 換成你剛剛新增的檔案的 HASH,就可以了!

我比較習慣目錄

大家都還是比較習慣目錄結構吧?已經 ipfs add 的檔案,可以被放進目錄裡。

$ ipfs files mkdir /SmartCity   # 開一個目錄
$ ipfs files cp /ipfs/QmQhK6KAVA2nJgFYzf7D1yHdH11GiGJv6zRTUhoVZwXpDd /SmartCity/README.md
$ ipfs files ls /
SmartCity
$ ipfs files ls /SmartCity/
README.md
$ ipfs files read /SmartCity/README.md
lorem ipsum dolor sit amet

我目前還不知道怎麼把目錄 export 出去,讓別人也可用使用同樣的目錄結構。

上傳一整個目錄

使用 ipfs add -r 可以上傳一整個目錄。比方說,這篇教學可以用這種方式上傳 (小心 不要把 .git/ 下面的東西都傳上去了!)

$ ipfs add -r ipfs-tutorial-taiwan-mandarin
added QmdpYD8hejksA5SHNdRfDzE2EYzpSkbazyVAJq5hRwbKtp ipfs-tutorial-taiwan-mandarin/README.md
added QmWe7m2K8DThCUTPuw5KcbYvpAwogScXt8gazfG7QiRpSo ipfs-tutorial-taiwan-mandarin

這樣就可以用下列方式取得 README.md 的內容:

  1. ipfs cat /ipfs/QmdpYD8hejksA5SHNdRfDzE2EYzpSkbazyVAJq5hRwbKtp
  2. ipfs cat /ipfs/QmWe7m2K8DThCUTPuw5KcbYvpAwogScXt8gazfG7QiRpSo/README.md

我在 IPFS 上的第一個網頁

IPFS 的本質是分散式的檔案系統,如果只是要 host 分散式的部落格的話,可以使用 ZeroNet 。晚一點我會再寫一篇 ZeroNet 的介紹。

請注意 如果在 pin 或 publish 的過程中遇到任何問題,可能是防火牆的關係。跑 ipfs daemon 的時候,它會列出對外連線的 port 請在防火牆打開。

% ipfs daemon
Initializing daemon...
Adjusting current ulimit to 2048...
Successfully raised file descriptor limit to 2048.
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/192.168.2.1/tcp/4001
Swarm listening on /ip4/220.xxx.xx.xxx/tcp/4001 ← 這個!!
Swarm listening on /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

Debian 系的 Linux 請愛用 sudo ufw allow 4001 即可。

出於莫名的原因,我決定不要使用最常見的 Jekyll 。以下範例是 Hugo 做的 🙂

Huge 後面還有使用 ipfs 範例中的 mdown 來 render 的例子。

安裝 Hugo

參考 Hugo官網 的說明,在 Mac 上安裝 Hugo:

$ brew install hugo
Updating Homebrew...
Warning: hugo 0.26 is already installed
$ hugo version
Hugo Static Site Generator v0.26 darwin/amd64 BuildDate: 2017-08-08T14:55:38+08:00
$ hugo new site ipfs-tutorial-zh-TW
Congratulations! Your new Hugo site is created in /Users/miaoski/github/ipfs-tutorial-zh-TW.
$ git init
Initialized empty Git repository in /Users/miaoski/github/ipfs-tutorial-zh-TW/.git/
$ git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke
Cloning into '/Users/miaoski/github/ipfs-tutorial-zh-TW/themes/ananke'...
$ echo 'theme = "ananke"' >> config.toml

修改 config.toml 設定一下 title 和語系什麼的,就可以了。

新增 blog 文章

$ hugo new posts/ipfs-tutorial.md
/Users/miaoski/github/ipfs-tutorial-zh-TW/content/posts/ipfs-tutorial.md created
$ cat ../ipfs-tutorial/README.md >> ./content/posts/ipfs-tutorial.md

修改一下,把 draft: true 改成 draft: false 再執行一次 hugo 就可以 render 出網頁了。

把部落格新增到 IPFS 上

依據 hugo 的建議,先 rm -fr public/ 再重新執行 hugo 比較好…

$ rm -fr ./public/
$ hugo
$ ipfs add -r ./public/
added QmW7dJkAjtLgUtJcgUrTPC2jSLTD8uS4bfzPPXYdsZGhFN public/posts
added QmecA1oy5du9TwNrJrwxjq5emUdG7jbukv8Pzuo2q8CjRc public/tags
added QmT7TX5vGmFz86V8cDkPuTss1vp4qTXeaziGZrjdJhURFf public

請跳到 IPNS 一節閱讀。

mdown

mdown 是 ipfs 範例中的 markdown-viewer 是以 MIT 版權宣告的。有時候我們只是想分享一份簡單的 markdown,它十分輕量,render 出來的效果也不錯。它的背後是 StrapDownJS。

本文的 Github repo 已經把 mdown 加在裡面了,直接 make 就會看到 ipfs add 上去的 HASH。它也會寫在 published-version 檔案裡。接著我們可以用 IPNS 發佈它。

IPNS

拿到網站的 HASH 後,建議註冊 IPNS ,因為每次更新部落格的內容,上面的 HASH 都會變,我們需要一個固定的 ID 指向最新的 HASH 。以本文為例:

$ ipfs name publish QmT7TX5vGmFz86V8cDkPuTss1vp4qTXeaziGZrjdJhURFf
Published to QmNmfAqjiQgdLJscpM3FufbaXY9QEqWZiWqDTbsrUjSKDR: /ipfs/QmT7TX5vGmFz86V8cDkPuTss1vp4qTXeaziGZrjdJhURFf 
$ ipfs name resolve QmNmfAqjiQgdLJscpM3FufbaXY9QEqWZiWqDTbsrUjSKDR
/ipfs/QmT7TX5vGmFz86V8cDkPuTss1vp4qTXeaziGZrjdJhURFf

以後每次更新完網站,都要重新 ipfs add -r ./public/ 一 次,然後再執行 ipfs name publish ... ,這樣/ipns/QmNmfAqjiQgdLJscpM3FufbaXY9QEqWZiWqDTbsrUjSKDR 才會指向最新的 HASH 哦! (注意是 IPNS 不要搞錯!)

使用 hugo 的同學,順便更新 config.toml:

baseURL = "https://ipfs.io/ipns/QmNmfAqjiQgdLJscpM3FufbaXY9QEqWZiWqDTbsrUjSKDR/"
languageCode = "zh-tw"
title = "第一次用 IPFS 就上手"
theme = "ananke"

快取 (pin)

把內容快取到本地端,並且提供給其他人。

ipfs pin add QmT7TX5vGmFz86V8cDkPuTss1vp4qTXeaziGZrjdJhURFf

add 本身就是遞歸的,所有的子目錄都會被 pin 住。可以用 ipfs pin ls 看看本地端 pin 了什麼。 這一篇 的指令都可以玩玩看。

TXT

因為一串 HASH 真的很難記,所以可以用修改 DNS 的 TXT 欄的方式,讓使用者可以用 https://ipfs.io/ipns/miaoski.idv.tw/ 這種方式,存取到你的檔案或部落格。要特別注意, TXT 設定完後,如果你用筆電的話,不要太快離線,不然別人可能還來不及 cache 住 TXT 解析的內容。

$ host -t TXT miaoski.idv.tw
miaoski.idv.tw descriptive text "dnslink=/ipns/QmNmfAqjiQgdLJscpM3FufbaXY9QEqWZiWqDTbsrUjSKDR"

下面的情況都是正常的。但是 ipfs name resolve -r 必須要能正確解析出 /ipfs/ 的位址,別人才看得到你公開的內容。

$ ipfs name resolve miaoski.idv.tw
Error: Could not resolve name (recursion limit exceeded).

$ ipfs dns -r atnnn.com
Error: not a valid domain name

$ ipfs dns atnnn.com
Error: Could not resolve name (recursion limit exceeded).

來試試看我的網頁吧! https://ipfs.io/ipns/miaoski.idv.tw/

我還不懂的部份

  • BitSwap
  • DHT
  • 把 git repo 和 IPFS 整合在一起

參考資料

License 版權聲明

我自己編寫的部份,全部使用 CC BY-SA 4.0 聲明。如果有引用他人的部份,請參考各該文件所屬的版權聲明。

Machine Learning Top 10 Articles for the Past Month (v.June 2018)

$
0
0

Machine Learning Top 10 Articles for the Past Month (v.June 2018)

For the past month, we ranked nearly 1,400 Machine Learning articles to pick the Top 10 stories that can help advance your career (0.7% chance).

Tweet of the month
  • Topics in this list: Google Duplex, Portraits, Grid cells, Neural Network, Airbnb, Loc2Vec, TensorFlow, Keras, 1st Place Solution, CVPR2018
  • “Watch” Machine Learning Monthly Top 10 on Github and get email once a month.

As an article ranking service for professionals, we take quality very seriously and make sure each article you read is great. Mybridge AI considers the total number of shares, minutes read, and uses our machine learning algorithm to rank articles. This is a competitive list and you’ll find the experience and techniques shared by the Machine Learning leaders useful.

Course of the month:

A) Beginners: Python for Data Science and Machine Learning Bootcamp.[21,763 recommends, 4.5/5 stars]

B) Advanced: Artificial Intelligence: Reinforcement Learning in Python.[1,768 recommends, 4.6/5 stars]

Rank 1

Google Duplex: An AI System for Accomplishing Real World Tasks Over the Phone. Courtesy of Yaniv Leviathan

……[DEMO]


Rank 2

Deep Video Portraits: A novel approach that enables photo-realistic re-animation of portrait videos using only an input video. Courtesy of Christian Theobalt

……[Paper]


Rank 3

Navigating with grid-like representations in artificial agents. Courtesy of Andrea Banino, Dharshan Kumaran, Caswell Barry

……[News]


Rank 4

How to build your own Neural Network from scratch in Python. Courtesy of James Loy


Rank 5

Categorizing Listing Photos at Airbnb: Large-scale deep learning models are changing the way we think about images of homes on our platform. Courtesy of Shijing Yao


Rank 6

Loc2Vec: Learning location embeddings with triplet-loss networks. Courtesy of Sentiance


Rank 7

Real-time Human Pose Estimation in the Browser with TensorFlow.js. Courtesy of TensorFlow


Rank 8

Multi-label classification with Keras. Courtesy of Adrian Rosebrock


Rank 9

Google Landmark Retrieval Challenge: 1st Place Solution Summary — Kaggle. Courtesy of Mikel Bober-Irizar


Rank 10

Learning to See in the Dark. Courtesy of Chen Chen, Qifeng Chen, Jia Xu and Vladlen Koltun

……[Video]



That’s it for Machine Learning Monthly Top 10. Visit our publication to find top posts for more programming skills.

Angular Top 10 for the Past Month (v.May 2018)

$
0
0

Angular Top 10 for the Past Month (v.May 2018)

For the past month, we ranked nearly 800 Angular articles to pick the Top 10 stories that can help advance your career (1.25% chance).

Tweet of the month
  • Topics in this list: Angular 6, Architecture, ng-conf, Angular Universal, Singleton, Bootstrap 4, Tutorial, Web Assembly
  • “Watch” Angular Monthly Top 10 on Github and get email once a month.

As an article ranking service for professionals, we take quality very seriously and make sure each article you read is great. Mybridge AI considers the total number of shares, minutes read, and uses our machine learning algorithm to rank articles. This is a competitive list and you’ll find the experience and techniques shared by the Angular leaders useful.

Course of the month:

A) Beginners: Angular 6 (formerly Angular 2) — The Complete Guide.[48,237 recommends, 4.7/5 stars]

B) Build an app with ASPNET Core and Angular from scratch. [1,227 recommends, 4.7/5 stars]

Rank 1

Version 6 of Angular Now Available. Courtesy of Stephen Fluin


Rank 2

Architecture in Angular projects. Courtesy of Cyrille Tuzi


Rank 3

Day 1 Keynote — Brad Green, Miško Hevery, Kara Erickson. Courtesy of Brad Green, Miško Hevery, Kara Erickson

……[Keynote]


Rank 4

Angular Universal: Comprehensive Step-by-Step Guide. Courtesy of Angular University


Rank 5

Trip report from ng-conf 2018. Courtesy of Stephen Fluin


Rank 6

Angular Services do NOT have to be Singletons. Courtesy of Netanel Basal


Rank 7

The Best Parts of Bootstrap 4 You are Missing in Angular Material. Courtesy of Amadou Sall


Rank 8

Optimizing an Angular application — Minko Gechev. Courtesy of Minko Gechev


Rank 9

Upgrading an Application to Angular 6: Step By Step. Courtesy of Dan Wahlin


Rank 10

Using Web Assembly to speed up your Angular Application. Courtesy of Lukas Marx

That’s it for Angular Monthly Top 10. If you like this curation, read best daily articles based on your programming skills on our website.

Viewing all 759 articles
Browse latest View live