文章13
标签6
分类2

RoboMaster 往事回忆

背景资料 Refer Wikipedia

机甲大师(RoboMaster)是由大疆创新(DJI)的创始人汪滔发起并承办、由共青团中央、全国学联、深圳市人民政府联合主办的年度机器人竞技赛事,为全国大学生机器人大赛旗下的四大赛事之一,并且是全球首个射击对抗类的机器人比赛。其在2015年诞生伊始就凭借其颠覆传统的机器人比赛方式、震撼人心的视听冲击力、激烈硬朗的竞技风格,吸引到数百所高等院校、近千家高新科技企业以及数以万计的科技爱好者的深度关注。除了大赛本身,还有机器人相关的夏令营、俱乐部、机器人课程等科技项目,旨在为科技爱好者提供一个全方位的平台来实现他们的机器人学理想。

P.S. 当然,限于学业与将来的发展,未来与 RoboMaster 或许并没有多少交集。但还是十分感谢朋友Artrix,没有他就不会有我的这次经历,希望他在大学一切都好;十分感谢2018年的高中生夏令营,让我切身体会到了“人外有人,天外有天”;也十分感谢当年与我同行的队友,当时我能力的不足极大拖累了项目的进程。


简洁叙事

你能想象一百多名高中生聚在一起,以机器人为主题来一场夏令营吗?在真正体验过之前,我也难以置信。
事情要从多年前的那个夏天说起……当时我初二,年少轻狂,以全栈自居,凭借过家家的功底侥幸通过筛选和面试。

第一个挑战,陌生的环境。不仅仅是深圳二高这样一个陌生的居住、研发环境,更包括完全陌生的Keil开发环境、嵌入式中我仅仅闻名的技术、全新的团队协作模式。二十多天的时间,在适应这些环境的同时,完成最终的任务,是极为考验自学能力和领导能力的。在这个过程中,我们队也发生了一些摩擦。与First系列的比赛不同,经过RM挑选敲定的成员不说是精英,在各自的圈子里至少也是有一定影响力的,面对一些决策不可避免会发生冲突。

第二个挑战,难度的提高。总的来说,难度来自两个方面:
1.我首次参与完成类似的项目(之前的项目,多少可以用“能用就行”来打发一下)。决赛的难度并不在视觉或者自动化方面,而在于设计一个可以稳定夹取的机械结构,而我并没有设计机械结构的经验,并没能帮上什么忙。
2.决赛和FRC类似的条条框框。

第三个挑战,语言的缺陷。当然这主要是我的问题,对比赛的影响也不算大。当时我的英语水平并不算高,尤其是相比年级更高、学习条件更好的其他人而言。不过虽然香港科技大学的课程和卡耐基梅隆大学的推介会是“听君一席话,胜听半席话”,DJI的中文课程还是听得很愉快的。

资料整理

开源资料:Github_Eastflow
图片资料:算是我做的不多的工作吧,虽然最后并没有落地使用Vision_Test
最后的成车,效果还不错(但是夹取部分还是出现了一些问题,很可惜)Machine
视频资料:Bilibili_Group 0x02
技术报告:Report

使用说明:以上资料仅供学习参考,以公开换取保护,所有权利归制作人员和大疆创新,未经授权禁止各种用途!


尾声

感谢当年陪伴在我身边的人。She

PHP8挖坑记

最后更新于2021-01-03

灵感来源

本站从Vultr(CHOOPA-Tokyo)迁移到阿里云(深圳)后,重新部署了Linux+Nginx+Mysql+PHP+Apache版本,优化了套件的安全性。恰逢PHP8发布Beta版本,且加入了JIT(Just In Time),遂尝试性进行更新。

P.S. PHP8.0正式版发布后已跟进。

在PHP8正式发布后,本文会更新基准测试 etc.


什么是JIT

在计算机技术中,即时编译(英语:just-in-time compilation,缩写为JIT;又译及时编译、实时编译),也称为动态翻译或运行时编译,是一种执行计算机代码的方法,这种方法涉及在程序执行过程中(在运行期)而不是在执行之前进行编译。通常,这包括源代码或更常见的字节码到机器码的转换,然后直接执行。实现JIT编译器的系统通常会不断地分析正在执行的代码,并确定代码的某些部分,在这些部分中,编译或重新编译所获得的加速将超过编译该代码的开销。

JIT编译是两种传统的机器代码翻译方法——提前编译(英语:ahead-of-time compilation)(AOT)和解释——的结合,它结合了两者的优点和缺点。大致来说,JIT编译将编译代码的速度与解释的灵活性、解释器的开销以及额外的编译开销(而不仅仅是解释)结合起来。JIT编译是动态编译的一种形式,允许自适应优化(英语:adaptive optimization),比如动态重编译和特定于微架构的加速——因此,在理论上,JIT编译能够比静态编译产生更快的执行速度。解释和JIT编译特别适合于动态编程语言,因为运行时系统可以处理后期绑定(英语:Late binding)的数据类型并实施安全保证。

PHP8中JIT的支持是Opcache的一部分,近年来PHP在核心数据结构HashTableZend VM中某些操作码与Opcache的Optimizer组件下了不少功夫。JIT的加入可能意味着其他方法优化已经到达极限了

转自:Wikipedia


安装方法

下载php-8.0.0.tar.gz - php.net代码(截止发文最新的Release版本)。
代码如下(依赖请自行解决)

wget https://www.php.net/distributions/php-8.0.0.tar.gz
tar zxvf https://www.php.net/distributions/php-8.0.0.tar.gz && cd php-8.0.0
./buildconf
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-fpm-user=www --with-fpm-group=www --enable-fpm --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/libiconv --with-freetype --with-jpeg --with-zlib --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-exif --enable-sysvsem --enable-inline-optimization --with-curl=/usr/local/curl --enable-mbregex --enable-mbstring --with-password-argon2 --with-sodium=/usr/local --enable-gd --with-openssl=/usr/local/openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-ftp --enable-intl --with-xsl --with-gettext --with-zip=/usr/local --enable-soap --disable-debug --enable-opcache --enable-calendar
make && make install

cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
service php-fpm start
systemctl enable php-fpm

Opcache使用配置

cd /usr/local/php/etc/php.d
vim 02-opcache.ini

写入以下内容:

[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=192
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=100000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=60
;opcache.save_comments=0
opcache.fast_shutdown=1
opcache.consistency_checks=0
;opcache.optimization_level=0
opcache.jit_buffer_size=128m
opcache.jit=1205

后重启php-fpm

service php-fpm restart

常见问题

  1. PHP7.4与PHP8共存未解决(指定的--with-config-file-scan-dir不生效)(是否解决未知)
  2. configure: error: iconv does not support errno
    解决方案相当玄学,1.16报错可以尝试1.14版本:
    wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
    ./configure --prefix=/usr/local/libiconv
    make && make install
  3. 目前和PHP7最常见的兼容性问题就是PHP8.0报错500,因为PHP8禁用@运算符强制屏蔽致命性错误,请修改相关代码。目前测试Typecho支持良好,OneIndexR Core问题已修复。

基准测试

基准测试可以参考Phoronix的

褒贬不一的《乌合之众》

外文名:The Crowd:A Study of the Popular Mind

《乌合之众》是早些时候读的书了,不是被推荐,单单是被标题吸引,算是我社会心理学的启蒙之作。
虽然不是,也没有打算将此作为本业,但是射猎广泛我认为是没坏处的,发现问题的同时也可以锻炼自己的批判性思维能力(现在这一概念已被模糊化,暂且不做评价)。

这一期书评是突发奇想写的,当自己的一篇读后感吧。

赶在考试之前把这篇发出来了
很水的合格考当然是秒杀(


褒贬不一

网上对这本书的评价可谓褒贬不一——有人把它奉为圭臬,有人把它贬的一文不值。稍作查阅即可了解,限于篇幅和著作权问题,在此不作列举。

具体到个人,不乏有人因看过这本书而自觉超然物外,将与自己相悖的意见批驳为“乌合之众”,而难以使自己保持理性。

个人看法

外文名明显不如译名有煽动性,事实上作者勒庞的本意也是如此,这只是一项冷静地描述群体的研究。

背景:实证主义还未形成心理学研究的主流

很多对该书的批评来源于作者在提出很多论点的同时没有给出有力的论据。
这一点似乎可以用时代背景来解释,但依旧是致命的一个问题——这里不扯丧事喜办,因为这本书是「通俗-入门?性读物」,其受众是初学者,其教授的知识是需要保证「基本的」正确性的。知识不正确本身可能不是很大的问题,可在初学时,就有很多人把它奉为圭臬——可以类比为初学算术时的「1+1=2」。

如果硬要说,这是一个可以改进和进一步延伸的点,希望有更多对实证部分进行补充的专题性读物。

未经实证就被拿来套用是很危险的,会引起一系列可得性反应,进而影响人的认知——除非你阅读的时候就被人指出这个观点的不确定性(或错误)。记得当初阅读的时候有一部分说到“要从实践中学习”,跟别人讨论一致认为这个说法有些失当,无论是因为时效性还是实证问题。

对乌合之众的问题总结到这里,简单提一下我现在在读的《弱传播》一书,个人认为也有类似的问题,作者有取巧的嫌疑。

基本观点总结

1.人一到群体中,智商就严重降低,为了获得认同,个体愿意抛弃是非,用智商去换取那份让人备感安全的归属感。

2.我们始终有一种错觉,以为我们的感情源自于我们自己的内心。

3.群体只会干两种事——锦上添花或落井下石。

4.个人一旦成为群体的一员,他所作所为就不会再承担责任,这时每个人都会暴露出自己不受到的约束的一面。群体追求和相信的从来不是什么真相和理性,而是盲从、残忍、偏执和狂热,只知道简单而极端的感情。

5.我们以为自己是理性的,我们以为自己的一举一动都是有其道理的。但事实上,我们的绝大多数日常行为,都是一些我们自己根本无法了解的隐蔽动机的结果。

6.所谓的信仰,它能让一个人变得完全受自己的梦想奴役。

7.在与理性永恒的冲突中,感情从未失过手。

8.有时不真实的东西比真实的东西包含更多的真理。

9.群众没有真正渴求过真理,面对那些不合口味的证据,他们会充耳不闻…凡是能向他们提供幻觉的,都可以很容易地成为他们的主人;凡是让他们幻灭的,都会成为他们的牺牲品。

10.数量,即是正义。

11.掌握了影响群众想象力的艺术,也就掌握了统治他们的艺术。

12.没有传统,就没有文明;没有对传统的缓慢淘汰,就没有进步。

13.孤立的个人很清楚,在孤身一人时,他不能焚烧宫殿或洗劫商店,即使受到这样做的诱惑,他也很容易抵制这种诱惑。但是在成为群体的一员时,他就会意识到人数赋予他的力量,这足以让他生出杀人劫掠的念头,并且会立刻屈从于这种诱惑。出乎预料的障碍会被狂暴地摧毁。人类的机体的确能够产生大量狂热的激情,因此可以说,愿望受阻的群体所形成的正常状态,也就是这种激愤状态。

14.一个国家为其年轻人所提供的教育,可以让我们看到这个国家未来的样子。

15.能够感觉到的现象可以比作波浪,是海洋深处我们一无所知的那些乱象在洋面上的表象。

16.昨天受群众拥戴的英雄一旦失败,今天就会受到侮辱。当然名望越高,反应就会越强烈。在这种情况下,群众就会把末路英雄视为自己的同类,为自己曾向一个已不复存在的权威低头哈腰而进行报复。

17.群体在智力上总是低于孤立的个人,但是从感情及其激发的行动这个角度看,群体可以比个人表现得更好或更差,这全看环境如何。一切取决于群体所接受的暗示具有什么性质。

18.群体因为夸大自己的感情,因此它只会被极端感情所打动。希望感动群体的演说家,必须出言不逊,信誓旦旦。夸大其辞、言之凿凿、不断重复、绝对不以说理的方式证明任何事情——这些都是公众集会上的演说家惯用的论说技巧。

19.令人难忘的历史事件,只是人类思想无形的变化造成的有形的后果而已。

20.孤立的个体具有控制自身反应行为的能力,而群体则不具备。

21.专横和偏执是一切类型的群体的共性。

22.影响民众想象力的,并不是事实本身,而是它们发生和引起注意的方式。

23.群体总是对强权俯首帖耳,却很少为仁慈善行感动!在他们看来,仁慈善良只不过是软弱可欺的代名词。

24.大众没有辨别能力,因而无法判断事情的真伪,许多经不起推敲的观点,都能轻而易举的得到普遍赞同!

25.群体盲从意识会淹没个体的理性,个体一旦将自己归入该群体,其原本独立的理性就会被群体的无知疯狂所淹没。

26.从长远看,不断重复的说法会进入我们无意识的自我的深层区域,而我们的行为动机正是在这里形成的。到了一定的时候,我们会忘记谁是那个不断被重复的主张的作者,我们最终会对它深信不移。

27.群体中的个人是沙中之沙,风可以随意搅动他们。

28.群体表现出来的感情不管是好是坏,其突出的特点就是极为简单而夸张。

29.但凡能够成就大业的领袖人物,他重要的品质不是博学多识,而是必须具备强大而持久的意志力,这是一种极为罕见,极为强大的品质,它足以征服一切。

30.文明向来只由少数知识贵族阶级而非群体来创造。

31.身为一位领袖,如果想要让自己创立的宗教或政治信条站住脚,就必须成功地激起群众想入非非的感情。

32.结群后,由于人多势众,个人会产生一种幻觉,感到自己力大无穷,不可战胜,好像没有什么事情是办不到的。

33.当一个人融入社会之中时,他便失去了自我。

34.在迫不得已的情况下,我们也许还是会愿意接受传统教育当中所有的弊端,因为尽管它只会培养一些被社会所抛弃的人、心怀不满的人,但起码,对冗繁知识的肤浅掌握,对成堆教科书的完美背诵,或许可以提高智力水平。但事实上它真的能提高智力吗?不可能!在生活中,判断力、经验、进取心和个性,这些才是取得成功的条件,这些都不是书本所能够给予的。书本是可供查询的有用字典,但倘若把这些冗长的词条都装在脑子里,那可是一点用都没有。

35.文明赖以形成的道德力量失去效力时,它的最终瓦解总是由无意识且野蛮的群体来完成的。

36.一切政治、神学或社会信条,要想在群众中扎根,都必须采取宗教的形式——能够把危险的讨论排除在外的形式。

37.群体精神最需要的不是自由而是服从。他们如此甘愿听从别人的意志,以至于只要有人自称是它们的主人,他们就会本能地听命于他。

38.尽管在那一天的那两个小时里他们做到了或者几乎做到了,到一个月以后他们却不再具备这种能力。他们无法再次通过考试。他们脑中不断丢失大量过于沉重的知识,而且没有新的知识来填充。他们的思想活力开始衰退,促进成长的才能渐渐干涸,这时一个得到充分发展的人诞生了,但此时的他早已疲惫不堪。结婚过上安定的生活,陷入某种循环,并永无止境地重复下去;他将自己封闭在狭隘的工作中,尽职尽责,仅此而已。他们最终变为了平庸之辈。

39.个人一旦融入群体,他的个性便会被湮没,群体的思想便会占据绝对的统治地位,而与此同时,群体的行为也会表现出排斥异议,极端化、情绪化及低智商化等特点。进而对社会产生破坏性的影响。

40.所有时代和所有国家的伟大政客,包括最专横的暴君,也都把群众的想象力视为他们权力的基础,他们从来没有设想过通过与它作对而进行统治。要想掌握这种本领,万万不可求助于智力或推理,也就是说,绝对不可以采用论证的方式。

41.群体的叠加只是愚蠢的叠加,而真正的智慧被愚蠢的洪流淹没。

42.人们经常说起那家大众剧院,它只演令人压抑的戏剧,散场后,必须保护扮演叛徒的演员,免得他遭到观众的暴打。他所犯的罪行,当然是想象出来的,引起了群众的巨大愤怒。我觉得这是群体精神状态最显著的表现之一,这清楚地说明,要给他们什么暗示是一件多么容易的事情。对他们来说,假与真几乎同样奏效。他们明显地表现出真假不分的倾向。

43.各种制度并没有固定的优点,就它们本身而言,它们无所谓好坏。因为在特定的时刻对一个民族有益的制度,对另一个民族也许是极为有害的 。

44.群体也许永远是无意识的,但这种无意识本身,可能就是它力量强大的秘密之一。在自然界,绝对服从本能的生物,其行为会复杂得让我们不敢相信。理智是人类新近才有的东西,太不完美了,不能向我们揭示无意识的规律,更不能替代它。在我们的行为举止中,无意识部分占的比重很大,理智所占的比例却很小。无意识现在仍作为未知的力量在起作用。

45.到了一定的时候我们不会记得那个不断被重复的主张的人是谁,我们最终会对它深信不疑,广告能有令人吃惊的威力,这就是原因 。

46.教育既不会让人更道德,同样不会使他更幸福,它既不能将他的本能改变 ,也不能将他天生的热情改变,而且有在进行不良引导后,它的害处远大于好处。

47.单独一个人必须要为他的行为承担责任——法律上或者道德上。但是,群体则不然,群体不需要承担任何责任,群体就是责任,群体就是道德,群体就是法律,群体就是道德,群体的行为自然是合理的。

48.名望的产生与若干因素有关,而成功永远是其中最重要的一个。

49.学习课程,把一种语法或一篇纲要牢记在心,重复得好,模仿也出色——这实在是一种十分可笑的教育方式,它的每项工作都是一种信仰行为,即默认教师不可能犯错误。这种教育的唯一结果,就是贬低自我,让我们变得无能。

50.民众的想象力是政客的权力基础。

51.在决定人们历史地位上起着更大作用的,不是他们的“真实”面目,而是后人对他们的认识和感受。

52.群体会让每个人在其中的错误缩小,同时让每个人的恶意被无限放大。

54.束缚个人行为的责任感一消失,人便会随心所欲,肆意妄为。

55.群体的无意识行为取代了个体有意识的行为,这是现时代最显著的特征之一。

56.偶像崇拜的五大标识:
第一,偶像总是凌驾于信徒,处于高高在上的地位,这一点有着决定性地作用。
第二,信徒总是盲目服从偶像的命令。
第三,信徒没有能力,也不愿意对偶像规定的信条进行讨论。
第四,信徒有着狂热的愿望,希望把偶像的信条广加传播。
第五,信徒倾向于把不接受它们的任何人视为仇敌。
当群体符合第一条,其形式就等同于宗教,而这种情感就变成了宗教信仰。
对群体来说,也许最不合理的才是最合理的选择

57.群众日益被大众文化所湮没,这种文化把平庸低俗当作最有价值的东西。

58.所以不要轻易地成为集体的一份子,这样很容易被别有用心的人利用,即使你以为自己只不过是随声附和了一下而已,实际上你已经成了帮凶。

59.群体的夸张倾向只作用于感情,对智力不起任何作用。

60.群体不善推理,却又急于行动。
(出处未知)

【第一期】胡言乱语

那年遇一女士,对我照顾有加,用泪磨平我棱角,教我人情世故。纵使他日不能久别重逢,也祝她岁岁平安。
好像什么都来得及,又好像什么都无能为力。

个人主义与合作博弈

灵感来源

从疫情说起——
为避免认知偏差,这里定义抗击疫情是需要人们合作博弈的。

基于这样的认知,假设有一个人很自私,这样的人是否会成为巨大的不稳定传染源?

背景资料

「纳什均衡点」不一定是「全局最优点」。实际上随便一个稍微复杂一点的系统,都不可能达成“纳什均衡”。

拓展阅读——《纳什均衡与博弈论——纳什博弈论及对自然法则的研究》

在博弈中进行合作,未必需要信任。

拓展阅读——《自私的基因》

随想

《纳什均衡与博弈论——纳什博弈论及对自然法则的研究》中提到过一个模型——鹰鸽博弈模型,如果某个鸟群中,每只鸟都采用“鹰策略”,这个种群并不具有“进化稳定策略”;同样的,如果鸟群中每只鸟都采用“鸽策略”,同样具有“进化稳定策略”。只有当两种策略达到某个恰到好处的比例,此时才能形成“进化稳定策略”。
一个社会越多元化,每个个体采用的博弈策略,也会更加多元化。而社会的演化,其实非常类似于生物学中“种群的演化”。博弈策略的多样化,使得整个系统更加能适应环境变化,因此也提升了整个系统的健壮性
《自私的基因》中提到过一个模型,这个模型有三种角色——欺骗者、原谅者、记仇者。两个“记仇者”之间第一次打交道,双方并无信任。但还是可以建立合作关系。