这里的文字待整理分类
"路径依赖理论"
在复读<程序员的自我修养>时看到了"路径依赖",按书里的提示搜了一下"马屁股 航天飞机",发现一篇挺有意思的文章,摘抄在这里:
你知道为什么美国航天飞机燃料箱旁边的两个火箭推进器(协助飞机起飞的助推火箭)的宽度是4英尺8.5英寸(约1.4米)吗?因为这些推进器造好之后是要用火车从工厂运送到发射点的,路上要通过一些隧道,而这些隧道的宽度只是比火车轨道宽了一点点,因此,火箭推进器的宽度是由铁轨的宽度决定的,而铁轨的宽度是4英尺8.5英寸。铁轨的宽度为什么要采用这样的标准呢?因为美国的铁路原先是由英国人建的,而英国的铁路是由建电车的人设计的,电车所用的轮距标准是4英尺8.5英寸。电车的轮距为什么要采用这样的标准呢?因为最早建电车的人以前是造马车的,所以电车的标准是沿用马车轮宽标准,而马车轮宽标准是4英尺8.5英寸。马车为什么要用这样的标准呢?因为英国马路的辙迹宽度是4英尺8.5英寸。辙迹为什么要采用这个标准呢?因为整个欧洲的马路都是古罗马人按照他们战车的宽度而铺设的,而战车的宽度是4英尺8.5英寸。古罗马人战车的宽度为什么要采用这样的标准呢?因为牵引战车的两匹马屁股的宽度是4英尺8.5英寸。所以说,航天飞机上火箭推进器的宽度,是由两匹马屁股的宽度决定的!
路径依赖理论则是由诺贝尔经济学奖的获得者道格拉斯诺思提出,它的完整定义是:
事物一旦进入某一路径,就可能对这一路径产生依赖.
这条理论在生活中实在的很,不管是情感纠缠还是同学聚会或是给孩子择校多少都体现了“首先,我们培养习惯;后来,习惯塑造我们。”对我们的影响和我们对它的思考.
书摘
运行库使用操作系统提供的系统调用接口(System Call Interface),系统调用接口在实现中往往以软件中断(Software Interrupt)的方式提供.
驱动程序可以看作是操作系统的一部分,它往往跟操作系统内核一起运行在特权级,但它又与操作系统内核之间有一定的独立性,使得驱动程序有比较好的灵活性.
Any problem in computer science can be solved by another layer of indirection.
嵌入式开发核心关注CPU,内存,I/O控制器.在x86平台上,共有65536个硬件端口寄存器,不同的硬件被分配到了不同的I/O端口地址.通常情况下,内存只能读写不能运算,寄存器可以运算.
Linux将所有执行打实体(无论是线程还是进程)都称为任务(Task)......不同任务之间可以选择共享内存空间......共享了同一个内存空间的多个任务构成了一个进程,这些任务也就成了这个进程里的线程.int clone(int (*fn)(void*), void* child_stack, int flags, void* arg);
互斥量和信号量在系统的任何进程里都是可见的,也就是说,一个进程创建了一个互斥量或信号量,另一个进程试图去获取该锁是合法的.然后,临界区的作用范围仅限于本进程.
volatile T* pInst = NULL; T* GetInstance() { if (pInst == NULL) // 已实例化的访问不用再操作锁 { lock(); // 线程安全 if (pInst == NULL) // 防止多次实例化 pInst = new T; // 无法防止CPU乱序执行 unlock(); } return pInst; }
嵌入式公司里的软件开发困境
听闻有产线领导称软件团队做的工作都很简单,人员能力低绩效最多给60分,软件团队要多像FPGA团队学习,软件团队做的事让嵌入式团队做更有优势,嵌入式团队既懂业务又懂软件。
震惊之余想起了1945年的一则招聘启事:有数学学位的女性。这里有科学和工程学工作提供给女性,此前只招男性。现在是时候考虑进入科学和工程学领域工作了。你会发现这里的口号将和其他地方一样:需要女性! 这是约80年前招聘程序员的启事,当时很多学数学的女性都从事这份工作,这被认为是「女人的工作」。它要求耐心仔细,不需要太有创意。一个人要能坐那一整天,填表、处理数字。总之,没那么有趣。 没想到近80年过去了,硬件开发对软件开发的偏见还在闪着幽光,定睛凝视甚至会闪瞎眼。
矛盾分内因和外因,嵌入式产品的复杂度作为待解矛盾分为环境复杂度和业务复杂度。硬件作为产品能力提供者主要面对的是环境复杂度,资源限制、技术限制、外部依赖都是客观存在,要处理调配的众多参数来自环境限制,环境变化导致参数变化。软件作为用户需求适配者主要面对的是业务复杂度,业务的背后是需求,需求本身又受人性影响,人性比环境更多变。因此从产出的保质期看软件比硬件更短,软件开发者比硬件开发者面临更大挑战。 认为嵌入式团队“熟悉业务”就能做好软件的事,是把产品能力和用户需求直接划等号,照此推断FPGA团队也能做好嵌入式的事,纯硬件工程师也能做好FPGA团队的事,用户要的一切都在设计图纸上。
”以客户为中心“正常视角下是说要满足用户需求,处理好业务复杂度和提供好产品能力哪个更接近此目标,无需多说。 顺便说一下第一代程序员们(6个女人)为ENIAC编写的软件让”弹道计算“从几人周缩短到15秒,但无论是发布会还是庆功会都没有她们的影子,她们完成了从未实现过的事然后被遗忘。“我也看到了,他好像一条狗啊!”
CodeLab Adapter和微信通信
CodeLab Adapter生成的二维码和微信网页版一样都是通用的,哪个手机微信账户扫描就会把自己的wxid附上,起到登陆效果。
CodeLab Adapter的微信插件破解(包装)了微信的通信协议,所以扫描后能把自己伪装成微信网页版客户端。从中提取出接收到的消息再传给Scratch。
CodeLab Adapter作为WebSocket(wss)服务器和https://scratch3v2.codelab.club/通信,后者修改了Scratch-vm中的websocket服务器地址让它指向codelab-adapter.codelab.club:12358 为了较优雅的在浏览器上工作我们需要修改hosts文件加入 127.0.0.1 codelab-adapter.codelab.club
weixin server <-> (wxplugin <->) CodeLab Adapter <-> Scratch-vm <-> Scratch Gui
需求层次
欲望是生命的发动机,病毒的“欲望”是钻进细胞复制自己,植物的欲望是扎根、开花、散果,动物的欲望是食色性也。 马斯洛需求层次理论是对人类欲望的建模。各层需求间不是你生我灭、你有我无。
当人类刚出生时只有生理需求,随着成长为婴儿、幼儿、少儿,萌生出安全需求、社交需求。进入青春期逐渐产生被尊重需求,早熟的孩子开始思考自我实现。成年人会感叹自我实现遥不可及、也经常为工作、生活中缺乏尊重而烦恼。
需求出现后就不会消失,只会被更高优先级抢占,越是低层需求优先级越高,抢占后的需求会主导甚至独占大脑,让人从思想、行为上寻找满足需求的途径。
工作时想着旅游、美食、娱乐,想着不上班能干哪些哪些事、多么自由惬意,常常怀疑上班是在浪费人生错失美好。 失业后看着存款只减不增,安全需求立即上位霸占思维,一天所想都是怎么进钱,旅游、影视、娱乐都变得寡然无味。