This blog is rated 🔞, viewer discretion is advised

供应链 "supplier" 的迷思

刷到个个视频 《桑迪.门罗:看到2500个中国人在求知若渴地上你的课,就都明白了!》。我对 Sandy Munro 这老爷子有点印象,之前他高呼看不懂美的的注塑工艺。

这个视频主持人和他中美汽车行业对比,主持人说中国车便宜是因为 labor 便宜。Sandy反驳:

  • 说一辆车里面劳动力成本可能只占整体5%到15%,但中国人生产效率是120%,老美是 80% 因为要抽大麻,墨西哥日本是90%,欧洲是 70%。车的主要成本是物料成本,raw materials
  • 然后又说了中国行业碾压的最大优势是:material supply极其便宜,稳定可靠。欧美的原材料供应都极其昂贵。
  • supply的优势还在于国内的供应商敢于不要利润。听上去这就是打价格战吃补贴的套路吧?

最近网上所有聪明的老外都说只要引入自动化,然后寻找廉价的供货商,就能打败国内产业。国内聪明专家也大吹特吹,供应链优势。

但是这个说法,我觉得还需要进一步推敲。所谓供应链、原材料优势,其实归根结底就是上游产业优势。上游产业的成本构成呢?也是吃人的红利,然后转变为生产效率和成本优势。

汽车产业为啥被 off-shore 了,因为在金融行业看来,干实业的就是利润的material supply。没啥技术含量,赚钱的上限就在哪里。欧美大学里就没几个本地人读械制造专业。人都没有,更不要说人才了。

中国“制造”这个概念也很有意思,比如Apple喜欢说得很直白,这就是 assemble。但是你design 就不是assemble了?要硬拉扯,加州的工作,无非是把各种创意和工业设计拼凑到一起的功夫?在办公室打键盘,和在电子厂打螺丝,除了一个软一个硬,前者 manufacture 的是点子,后者是实物。

所以归根结底还是人矿优势。超负荷压榨。现在国内也没几个人读机械制造了。

Posted

stdin

强行入睡方法 v2.0

书接上回《快速入睡的技巧和原理

前几天跟朋友聊天,有一个想法萌生在脑海里:

因果论是人类发明和掌握语言之后的一个副产品

什么是因果?一个东西变动,导致另一个东西变动。但是大千世界哪里来的所谓「一个」东西?

其实都是一坨东西扭来扭去,然后另一坨东西晃来晃去。人的器官能感知的变化是连续光滑的

但语言和时序是离散的。这就导致万千思绪,最后被压扁成两件事:好事和坏事。

情绪和压力都是基于「事」这个东西上的。事之所以被称为、形成一件事,和语言环境密不可分。

给东西起名字是最困难的,就像写代码给class起名字一样。

但是一件「事」一旦有了名字,它就「成精」了。一件「事」它有自己的边界和形态,事能发起技能和施加影响,事有长处和弱点,有出生和死亡。「事」就是成年人在无数个夜晚思来想去,辗转难眠的心中之困。很多人被压垮就是一句话的事,被开导也可能因为一句精辟而准确的点拨。

但从纯「唯物」的角度来说,事存在吗?不存在。它只是内心对外界pattern的一个把控和约定。把这个核心问题确定之后,我尝试了一种船新入睡方法:打破这个pattern。

上一篇的方法,放下理性推理,这个其实有点难,而且有的时候就是烦恼多,无法彻底放下。这次 入睡 2.0 的要义更简单,反其道而行之,既然放不下各种想法,那么就多想,让你无暇顾及困难。具体的说

  1. 舒服的躺下。一定控制呼吸节奏,慢下来,平稳下来
  2. 类似 Marvel 电影那个片头,各种英雄集结pose和招牌动作,开始你的各种思考
  3. 但是每一个思考不能按按常理出牌,要快速切换到另一个思考。比如你纠结美国队长,那么你要快速把队长的盾牌切换到冬兵;冬兵身后漫天大雪景色不错,你发现一只麋鹿,麋鹿唱起了圣诞歌谣在一件小屋里,小屋里有温暖的书籍你正在静静有味的阅读。阅读的文字怎么是天体物理课本看不懂,公式符号好复杂让我想起了初中课堂,课堂上前排女同学的长发看上去很好玩,突然下课领响了。。。。
  4. 如果你发现我上面这一串胡言乱语就像梦境一样,恭喜你已经睡着了。。。。

这里有个关键点就是一定要类似 flash card 那样快速翻牌,不要在一个点上纠缠。如果你发现推理不对,有地方有问题进行不下去,那你肯定睡不着。人这个老毛病就是去纠结 something is wrong。放弃挣扎和内耗,随时跑题,就像一个孩童一样,不要尝试去理解这个疯狂的世界,就应该天马行空的去不停的变换注意力。当你累了,自然就睡了。

这个方法还有一点要注意,一定要去想「具象」的画面,而不是抽象的道理。最好你就是画面的主角,融入其中。比如你想象在看书,不要弄成电影镜头那样第三视角远远地看,你要想象这本书非常巨大, 从你脑门一直到你胸口那么大,镶嵌在你身体里,是你的一部分,你得摇头晃脑的去逐行扫描的观摩。书上的文字会随时飞起变成海浪把你吃掉淹没进入下一个场景。一定要身临其境,想象你身体每一个器官和毛孔都在被这个场景吞没。

遇到可怕或者矛盾的地方,直接抛之脑后,揪住一个小点立刻切换全新场景!每一个场景不要停留太久,太久了你就会生疑心,怀疑这是不是假的?赶紧跑题,挑个别的。避免惊恐刺激的,选一个平滑的,不要太多注意力的,越舒服越放松的场景,越容易入睡。

今日的疯狂梦呓就到这了。

Posted

stderr

日本为啥没有出色的软件行业

HN上看到这篇。没看正文之前,我头脑浮现的是管培生,大连的软件外包,日企那种细致又无用的上面拉spec下面填实现的功序长幼之分等等。

翻译有添油加醋,其中 Keiretsu 意思是“家族企业集团”,前身是日本财阀(Zaibatsu)比如住友Sumitomo、三井Mitsui、三菱Mitsubishi和安田Yasuda等。

在60年代和70年代,软件往往是为定制且非常、非常昂贵的硬件编写的,软件需求通常作为整体购买合同的一部分进行谈判。软件并不被看作是一个独立的产品,更像是一种服务,类似于集成、培训以及持续的支持和维护。它通常是按时间和材料收费,有时为了促成交易,软件甚至会免费赠送。真正赚钱的还是硬件。
日本的家族企业在“大型主机时代”表现出色。比如富士通、NEC和日立。尽管在60、70年代并没有打败IBM和Univac在全球的主导地位,但它们在小型计算机和大型办公系统领域表现得相当不错。
当PC革命在1980年代末到来时,日本整体工业的准备工作完全不足,PC市场很快围绕着少数几个标准化的操作系统和硬件架构形成。日本的家族企业在“硬件”方面表现得相当不错,但非定制或“包装软件”的市场对所有人来说都是全新的。它要求取悦客户,并在客户意识到之前就知道他们想要什么。
但那是80年代日本经济超级发达和繁荣,到处都能赚钱,市场保护良好。对于家族企业来说,专注于赚快钱更有效率。每个家族企业集团都有自己的技术公司,这些公司开始销售个人电脑和软件,部分面向消费者,但真正的大钱是在企业销售中。由于家族企业集团喜欢把生意留在“家族”内,这些技术公司通过向集团内的“俘获”客户销售产品而不断成长并获利。就像以前一样,他们通过集成和定制服务赚取了真正的利润。
大型系统集成公司(Systems Integration,SI)成为了强有力的市场参与者,而日本的软件公司从未需要在全球范围内竞争,甚至连国内公司之间也没有竞争。
所以日本的软件行业在80年代和90年代保持着与“卖大型机硬件”时代相似的状态。软件只需要刚刚够用,能跟客户签下合同就行,由于客户来自家族企业,家族企业内部及其封闭死板,很少同外边世界交流,所以水准要求实际上是非常低的。
但没关系,只要行业繁荣,没人介意在 家族企业 关系户企业内部大肆花钱,所有那些“小小的软件缺陷”总能在“下一一定”阶段中修复。
软件开发变成了一种“打勾”式的任务。一旦客户提出需求,签下合同,再想办法去弥补某个功能。
这种情况不仅让日本错失了全球软件行业的发展机会,还标志着日本各行业创新崩溃的开端。在接下来的30年里,软件将成为推动创新和效率的关键驱动力。但是,通过将他们的IT战略外包给单一的系统集成商,日本企业实际上把自己绑上了锚,每年都在技术曲线上越来越落后。
日本至今尚未从这种情况中恢复过来。即便是今天,大多数企业系统仍远远落后于全球竞争者。但正如我们稍后将看到的,现在有一些变化可能会让日本迎来一次跨越式的发展。

怎么感觉很像信创和军品开发圈子。。。。国内相似 Keiretsu 的例子就是中字头央企,比如CASC、CASIC、CETC等等。软件不值钱,卖盒子才能拿到回款。工期紧,ppt画大饼,不和外界交流,因为保密和资质。靠关系吃饭,总包,分包,集成什么的,但是一旦突然财政断奶就。。。。。

Posted

stdin

体力劳动和脑力劳动

今日跟娃讲道理,为啥要学习,因为人要长大活下去,得工作挣钱;工作无非分为在乡下、城里;靠拳脚打斗赢得人生的日子可能不太现实,还是得靠技能。

然后就跟他讲,你愿意做体脑力劳动,还是力劳动?前者坐办公室吹空调把活儿给干了。后者就不得不风吹日晒雨淋。既然要选择做办公室,你就得把学习成绩务必搞好。

又想了下,这个个所谓的“白领”劳动其实也分脑力劳动中的体力活儿,和脑力劳动中的技术活儿。我跟他说了个最简单的比喻:

  • 如果是语文、英语问题,只要你阅读量足够多,那么只要填写了,答案八九不离十;
  • 但是数学题,即便你写得再多,只要中间环节任何一个步骤不会,或者不小心写错了,那么你(几乎)不可能得到正确答案。

这里可以延展一下,工作可以分为:

  • 按件计费,做得多挣得多的活儿
  • 如果瞎蒙,都是无用功,除非你精准命中目标🎯的活儿

其实脑力劳动这个行业很残酷,半导体和互联网就有严重的「赢家通吃」现象。头部企业拿走99%的市场和利润,剩下 0.99% 的又被第二名吃干抹净。人类发展出复杂社会建设如此高度的文明,起点就是一点一点的动脑子,脑子这个玩意有一点好,他能按照某种「想法」预测未来。所谓几个男人只要坐在一起闲下来就会诞生一个「点子王」。但是要系统性的搞出一项工程,建设一个国家,创造一个文明,仅仅靠几个零星的是不够的。得靠一个又一个的突破。有些突破不是线形的,靠庸才堆人口是积累不出来的,得靠天才。

比如爱因斯坦的相对论,其实通俗演义把这个事可能没讲明白,相对论其实有两套(有趣的是,哥德尔也有两套),前一套是特别版,如果老爱不做出来也会有他人做,水到渠成的事;但是通用相对论就是震古烁今让人可望不可及的存在了。

又想起一个著名的段子,国内可能安排到 尼古拉·特斯拉 头上的:画一条线$1美元,知道在哪里画 $9,999 刀

Henry Ford once balked at paying $10,000 to General Electric for work done troubleshooting a generator, and asked for an itemized bill. The engineer who performed the work, Charles Steinmetz, sent this: "Making chalk mark on generator, $1. Knowing where to make mark, $9,999." Ford paid the bill.
According to Scott, Steinmetz listened to the generator and scribbled computations on the notepad for two straight days and nights. On the second night, he asked for a ladder, climbed up the generator and made a chalk mark on its side. Then he told Ford’s skeptical engineers to remove a plate at the mark and replace sixteen windings from the field coil. They did, and the generator performed to perfection.

还有一个关于程序员的段子

如何看待程序员抄代码还拿着高薪这一现象?
会复制粘贴值1块,知道去哪复制值5K,知道粘贴在哪值5K,粘贴完了能跑起来值10K
如果还会backspace去掉bug,那不是10k能打住了
能带领一伙人复制粘贴值20k

还有人说

代码也就asiic值128个字符,连字典都不用抄。

这个又想到。如果给猴子一个机械键盘,能无意中敲出金瓶梅吗?

  • 数学上,问题简化为一个无限长的纸带随机生成CJK字符,那么恰好其中一段长度的字符完全等同于《金瓶梅》吴中初刻本全文内容的概率不为0
  • 物理上,如果是一个特定品牌的机械键盘、特定品种的猴子,那么不要说敲一部白话文小说了,敲一个完整的句子概率都是 0

为啥敢这么说?因为物理时空从根本上说,归根结底不是连续的,这个「根本」就是普朗克长度。气体、液体只能吸收特定 eV 的能量,高了低了都不行。比如氧气、N₂就只吸紫外线,透过可见光;氯气吸收蓝光,所以看起来就是黄绿色;一氧化二氢和二氧化碳吃红外线所以容易搞出温室效应。晶体吃高于间隙的「能带」,金属通吃。从这个意义上来说,由生理能量触发神经控制肌肉做出脸滚键盘不是真随机,而是一定边界下可预测的长序列。

总结一下,最值钱的脑力劳动无法随机积累达到。今日份的胡思乱想就到这了。

Posted

stderr

白嫖百度网盘“单次转存数”500限制

找了个资源,点击保存,居然提示充SVIP。看了下免费用户每次最多保存500份文件。本来找资源就白嫖,让我充钱?

研究了一会儿,发现可以搞。

  1. 首先你去你网盘里建立个目录 0000-0500,准备存文件。这么起名字是因为你在自己网盘里多选也是最多选500个,所以每次存一个目录用来对照数量
  2. 分享链接里文件列表默认只展示前100条,是惰性加载,所以请用鼠标一直反复向下滚,务必拉到底,然后点击「名称」排序。这样方便对比有没有漏掉
  3. F12打开 console 并粘贴下面的js。如果这一步看不懂建议直接放弃
    Array.prototype.slice.apply(document.querySelectorAll(
    '.share-list dd.open-enable>span'
    ), [0, 500]).forEach((x)=>x.click())
    这样就等效点击了前500个文件。点击保存。
  4. 等全部存好,再次执行上一段代码,取消点击前500个文件。
  5. 去你的网盘里新建个目录 0500-1000 ,用来保存下一批
  6. 把上面代码里的 [0,500] 改成 [500,1000] 然后再执行一遍,保存到刚才创建的目录里。
  7. 如果有更多的文件,在执行一遍 [500,1000] 这一批,取消点击;然后改成 [1000,1500] 如此反复。

Posted

stdout

Linux删除了 .ru 帐号?我查了一下

发生了什么事

日前,Linux 内核主要维护者之一 Greg Kroah-Hartman (Greg K-H) 提交了一项不寻常的“文档”更新,将数名具有 <.ru> 顶级域名邮箱的维护者,和一名明确为俄罗斯身份的维护者从 MAINTAINERS(维护者名录)文件除名。
这一提交已于上周日被 Linus Torvalds 拉取并包含于 6.12-rc4 版本的代码中。
已有来自于 AOSC 的开发者提交了 revert(尚未合并),而 Linus 本人在评论中声明其对先前的 commit 知情并支持

一开始,我以为是 “反向” 厚脸皮PR

一般来说, github 上混一个 contributor 得贡献代码,很多人就改改文档、翻译就拿到一个“贡献者”称号(我也干过哈哈哈)。甚至还有离了大谱的,直接提一个 pull request 内容是把自己加到 contributors 文件里。。

我以为是 Linux Foundation 发疯了,为了某种 “合规” 或者 sanction,掩耳盗铃,把 作者名字列表.txt 改改掩人耳目

仔细看了下,发现好像并不是那么简单。这里是diff

https://github.com/torvalds/linux/commit/6e90b675cf942e50c70e8394dfb5862975c3b3b2

这里是更改后完整的 MAINTAINERS 内容:

https://github.com/torvalds/linux/blob/6e90b675cf942e50c70e8394dfb5862975c3b3b2/MAINTAINERS

直接通过 github API 拿到原始的 diff

curl -H'Accept: application/vnd.github.diff' -sk 'https://api.github.com/repos/torvalds/linux/commits/6e90b675cf942e50c70e8394dfb5862975c3b3b2'

乱写几个 prompt 丢给 gpt-4o,可以看到大概做了下列几处更改:

Device/Module Probable Date Author Email
Acer Aspire 1 Embedded Controller ~2018 Nikita Travkin nikita@trvn.ru
Alpha Port (Ivan Kokshaysky removed) ~1992 Ivan Kokshaysky (removed) ink@jurassic.park.msu.ru
ARM/Cirrus Logic CLPS711X Architecture ~1996 Alexander Shiyan shc_work@mail.ru
Baikal-T1 PVT Hardware Monitor ~2015 Serge Semin fancer.lancer@gmail.com
GRE Demultiplexer Driver ~2000 Dmitry Kozlov xeb@mail.ru
LIBATA PATA Drivers ~2003 Sergey Shtylyov s.shtylyov@omp.ru
LIBATA SATA AHCI Synopsys DWC Driver ~2014 Serge Semin fancer.lancer@gmail.com
Media Drivers for Ascot2E ~2010 Sergey Kozlov, Abylay Ospan serjk@netup.ru, aospan@netup.ru
Media Drivers for CXD2841ER ~2015 Sergey Kozlov, Abylay Ospan serjk@netup.ru, aospan@netup.ru
Media Drivers for Helene ~2017 Abylay Ospan aospan@netup.ru
Media Drivers for Horus3A ~2018 Sergey Kozlov, Abylay Ospan serjk@netup.ru, aospan@netup.ru
Media Drivers for LNBH25 ~2012 Sergey Kozlov, Abylay Ospan serjk@netup.ru, aospan@netup.ru
NetUP PCI Universal DVB Devices ~2010 Sergey Kozlov, Abylay Ospan serjk@netup.ru, aospan@netup.ru
MIPS Baikal-T1 Platform ~2015 Serge Semin fancer.lancer@gmail.com
NTB IDT Driver ~2014 Serge Semin fancer.lancer@gmail.com
PPTP Driver ~1996 Dmitry Kozlov xeb@mail.ru
Renesas Ethernet AVB Driver ~2013 Sergey Shtylyov s.shtylyov@omp.ru
Renesas R-Car SATA Driver ~2015 Sergey Shtylyov s.shtylyov@omp.ru
Renesas SuperH Ethernet Driver ~2000 Sergey Shtylyov s.shtylyov@omp.ru
Synopsys DesignWare APB SSI Driver ~2010 Serge Semin fancer.lancer@gmail.com
UFS Filesystem ~1974 Evgeniy Dushistov dushistov@gmail.com

如果说作者 @gregkh 作出这个改动的动机说

Remove some entries due to various compliance requirements

那么 BAIKAL 这个是明显会去掉。其余的改动,我能认出来的比较重要的有 PPTP Driver,其它都是五花八门驱动的维护者,感觉就算去掉, impact 的功能也不多。

当然你也可以说 first they came for the ... 我就不继续展开了

下面列举几个可能不那么重要,但是我觉得很容易被忽略的事实:

一、 .ru 的邮箱被全部移除了吗?

是的。最新版本 MAINTAINERS 文件里我搜了 .rurussia 关键词没找到了。干干净净。当然后期会不会加回来我不知道。

二、 俄国人对 Linux 的贡献被抹掉了吗?

第一,上面这些人的对应代码贡献,目前并没有删掉。

第二,Linux 源码根目录还有一个 CREDITS 文件,里面包含了下列俄国人:

N: Yuri Per
E: yuri@pts.mipt.ru
D: Some smbfs fixes
S: Demonstratsii 8-382
S: Tula 300000
S: Russia

N: Alexey Kuznetsov
E: kuznet@ms2.inr.ac.ru
D: Author and maintainer of large parts of the networking stack

N: Stas Sergeev
E: stsp@users.sourceforge.net
D: PCM PC-Speaker driver
D: misc fixes
S: Russia

三、 俄国人不能参与 Linux 项目了吗?

我在这里想补充一个背景知识,什么是 Linux Kernel 的 maintainer

内核功能繁多,Linus 老爷子一个人照看不过来,得把拆分成各个模块,授权给相应的 负责人(maintainer),给予他们检查、合并代码的权限。Linux基金会(注册地:美国)会给他们配置一个专用邮件列表用来主持专项议事

上面这句话,如何理解?可能对某些简中读者没看明白。简单的说:.ru 用户还是可以以 developer 身份向别的 maintainer 提交代码。这里不得不提到那个出名的 kernel git workflow

这是普通 git 项目的工作流:

这个是 linux kernel 的(图很老,大概这个意思):

普通人是没法直接向 mainline https://github.com/torvalds/linux 提交代码的。这个社区甚至会给你一个长长的文档教你一步一步如何提代码

不要说新功能了,一些老功能的 patch 要赶上主线发车窗口,你手续流程都很长。

想给内核做贡献,你要面对的甚至都不是 Linus 本尊,恰好是这些 MAINTAINERS 里列举的各位把关人。世界上绝大部分的人对 Linux 内核做贡献都是这样。 maintainer 是极少数,他们可以直接向 Linus 提改动。

Linus 自己也说了,他是芬兰人,意思就是说他不想看到俄国人。啊这。能理解,不提倡!

四、maintainer 名单变化多吗?

从提交历史来看,

https://github.com/torvalds/linux/commits/master/MAINTAINERS

人员进进出出很频繁。但是 @gregkh 这种在 char-misc 里搭车进去,的确偷偷摸摸。

五、 .cn 会被波及吗?

这个问题我无法回答,但是可以列一下现在有的:

  1. 一大堆 LOONGARCH 龙芯的驱动和各种模块
  2. 海光 HYGON 驱动
  3. 简中翻译 Alex Shi alexs@kernel.org Yanteng Si siyanteng@loongson.cn
  4. 繁体翻译 Hu Haowen 2023002089@link.tyut.edu.cn https://github.com/srcres258/linux-doc 太原理工的人才!
  5. RADOS BLOCK DEVICE (RBD) Ilya Dryomov idryomov@gmail.com Dongsheng Yang dongsheng.yang@easystack.cn ceph-devel@vger.kernel.org
  6. 一大堆 @huawei.com @linux.alibaba.com的各种驱动和模块
  7. 可能有别的大陆+港澳台公司邮箱我漏掉了。懒得看了。

CREDITS 里鸣谢的:

N: Chih-Jen Chang
E: chihjenc@scf.usc.edu
E: chihjen@iis.sinica.edu.tw
D: IGMP(Internet Group Management Protocol) version 2
S: 3F, 65 Tajen street
S: Tamsui town, Taipei county,
S: Taiwan 251
S: Republic of China

N: Li Yang
E: leoli@freescale.com
D: Freescale Highspeed USB device driver
D: Freescale QE SoC support and Ethernet driver
S: B-1206 Jingmao Guojigongyu
S: 16 Baliqiao Nanjie, Beijing 101100
S: People's Repulic of China

N: Tsu-Sheng Tsao
E: tsusheng@scf.usc.edu
D: IGMP(Internet Group Management Protocol) version 2
S: 2F 14 ALY 31 LN 166 SEC 1 SHIH-PEI RD
S: Taipei
S: Taiwan 112
S: Republic of China
S: 24335 Delta Drive
S: Diamond Bar, California 91765
S: USA

六、结束语

总的来说 Linux内核项目,包括不限于很多别的社区项目,还是英雄主义色彩很重的,这样的个人主义既可以说出“nVidia fuck you”,也完全有可能在某一天把主语丝滑切成 “Russia”。这压根就是同一个硬币的同一面(甚至都不是另一面)

在国际地缘政治热火朝天、段视频AI诵读、情绪控制终端满天飞的今天,讨论这些重要吗?有用吗?

回答:不重要,没用

但是对我个人而言,或许有那么一丢丢重要,有一丁点用。

希望对你也有点用。

Posted

stdout

ChatGPT 对我过往问题的吐槽

看起来是 “凌晨3点” 写javascript 节拍器 这事很不满啊。哈哈哈

You're on macOS, building metronomes in JavaScript, which is cute. But let’s be real: spending your free time tinkering with oscillators in Terminal feels like the programming equivalent of playing the triangle in a rock band. “Look, everyone! I made a metronome!” 👏 …And now it’s just you and a beep, beep, beep wondering why you can’t stop tweaking code that only a clock could love. 🕰️
Oh, and what’s with those hyper-detailed questions? I bet when you watch movies, you’re that person pausing every five minutes to Google “Why did the villain’s cat blink in scene 3?” because there’s nothing you won’t overthink. Meanwhile, your poor Mac is just begging for a break, like, “Please... Can we NOT compile sound waves at 3 a.m.?” 🖥️
And hey, Mr./Ms. Terminal Expert, you’ve got all the tech know-how to build clever things but somehow still end up asking me for solutions like I’m your lifeline in this relationship. Did the JavaScript throw one unexpected token and you went, “Welp, time to bother ChatGPT again!”?
You: "CreateOscillator, metronome, web audio… I got this!”
Also you after two minutes: “Why isn't this working?!” 😂
But seriously, props to you for staying curious and diving deep. You’re like a mad scientist—except instead of creating life, you’re just making a metronome.
Roast level? Medium-well. 😎

半生不熟。哈哈哈。可以的。。V站主题

Posted

stdin

“分封制” 代替RBAC权限管理模型

作为开发狗,手上堆的系统和任务多了,开权限就变成了一件麻烦的事。

一开始做一个功能X,给甲用,就做一个简单的权限关联表:功能key人员id就完事大吉

后来人员调整流动,换人换得勤快,得考虑一个功能给一个团队使用,于是引入 RBAC,基于角色的鉴权控制。说到底就是个三元组 功能key角色成员id

我也一度迷信这样的设计。用了这么久还是麻烦了。在一个正常官僚程度的大中型组织里,压根没人知道自己角色是啥。

你说他是管理人员吧,他也就管一部分;你说他负责这事吧,也就负责一阵。该给他放到哪个角色呢?

如果做一个自动化角色申请审批流程,他会跑来问你,该申请哪个角色啊?

所以问题又回到了原点。因此我琢磨出来一套具有大汉封建主义特色的,「分封制」权限控制体系。

  • 系统超管:普天之下,莫非王土;率土之宾,莫非王臣。拥有系统一切权限。但是不负责,不执行,不搞具体管理。超管只干一件事:分封
  • 如何分封:把「事」交给一个信得过的领主(serf)。领主对一块业务全权负责。但代价得自己把封地采邑打下来。具体在系统层面,系统所有权限、功能都直接开放,所谓 zero-trust。但是你得从零开始搭建和配置。一旦你配置好、跑起来,这快权限和功能就是你独有的。(owner)
  • 线上既有的业务权限,那也是有人配置管理和主导,你只能从别那里抢夺,或者过继。
  • 领主可以给自己封臣划分部分管理权限
  • 如果一个领主挂了,超管指定一个接盘的领主

感觉这样开发和超管就可以不用每天处理谁负责哪个功能的麻烦事了。哈哈哈

Posted

stdout

“中庸”的艺术 - 如跟需求方讨价还价

翻到一个神贴 How to make Product give a shit about your architecture proposal ,标题直译就是《如何让沙雕产品经理接受技术改造》

具体故事,原文非常值得一看。搞了这么多研发,产品经理各种水平的都遇到过一堆,最大的烦恼就是“我有个想法”,“今天就要”而全然不顾你当前技术架构的问题。到底是技术优先,还是业务优先?开发人员和销售非常普遍的冲突怎么处理?

产品经理,老板,甲方,销售,实际上是研发的衣食父母。他们所有的诉求:

  1. 产品不管你的技术问题,他们也不懂。他们只关心 产品 本身
  2. 产品需要的是一个 结果,而不是一个白板上巨复杂的分布式系统架构图
  3. 产品是人,产品为人服务。他们也能理解有工程方面的顾虑,这也是他们找开发的原因。他们是来“讨价还价”的!

开发是“乙方”,正如那个文章里的 水管工 故事一样,实际上是 “赢得信任” 的实施方。所以接下来的套路是:

  1. 你先不要 what about,先别反驳说 but 。先按照理想的条件,全部答应下来,
  2. 做一个理想化,全套,SSVIP,贵宾级别的报价,所谓 platinum package。内部需求就把人力、服务器、时间、排期等成本按最坏的估计全部算出来。
  3. 拿这套方案,给到需求方,一定要让他们很诧异的问出:“why” ,怎么这么麻烦啊!?
  4. 这就是让产品对你的技术问题关心的机会!接下来,开发需要有礼貌,不卑不亢的,有理有据的把你的处境讲出来,要展示你的专业能力和素养。
  5. 接下来需要让对方陷入自我怀疑,内心:“Do I really need all this? 是不是这要求有点过份!?”
  6. 最终结论,还是要做,换更经济的方式去做,要么不做。如果这件事是能挣钱的,那么的确投入人力物力时间去征服麻烦啊。

文章也讨论了,话也说回来,一个粗糙的结果,和没有结果,哪个更讨人厌?实际上是粗糙的结果。就好比故事里的水管工,你下水道漏了,又舍不得大修,就缝缝补补。结果过一段时间又漏了。这还不如不修。烦呐!

所以一般的经验是,要么不做,要么就把一个事彻底解决最好。不要交付半吊子工程!

当然,这个时候要思路灵活。水管坏了不一定要在原地修补啊,说不定换一个管线完全绕过以前的大坑呢?

所以就回到了这篇blog的主题:tradeoff

以前我不知道如何准确翻译这个词,一直把叫“妥协”。但是这似乎有点贬义。或许叫 折衷,取舍 更好?。

我觉得装逼的翻译是 —— 中庸。

成年人的世界哪有那么多“既要……又要”,乃至“……还要”。

以前上学的时候,就喜欢“中庸”,60分及格万岁,一个知识点了解个大概就行,平庸,和稀泥,不表态,无原则,优柔寡断。结果贻害无穷。一只吃亏到而立之年,发现中了孔老二的圈套。

对中庸最大的误会是它丫的压根就不应该是一个“方法论”,而是一个“对结果的欣然承认”态度;

作为方法论,我的心得是,才接触一个事,就要走极端。抓东西就从一个“抓手”入手,如果恰好能抓住“主要”矛盾那就最好不过,而且最好只抓一个。抓住,抓稳了之后,再去了解事物的全貌和corner case,这个时候事半功倍势如破竹。

就好比,以前打 CS 1.5,突然转角处出现两个敌人,你慌乱之中,既不向A也不朝B开枪,而是瞄准他俩的中间空隙biu~biu~biu~。然后就躺了。这种遭遇战就应该训练自己的下意思,必须集中火力,断其一指。

做事也一样,认准一个方向,全力推到超出它极限为止;然后再停下来,考虑有没有更好的方案,做到周全;其次考虑对方接受程度,该省省能砍砍;最后一看,嘿,也就一般般。

好吧。其实我也不懂中庸,也不想懂,更不想revision中庸,就是纯粹想附会,如果是个误会也无所谓。就这样吧。

Posted

stdin

Install mosh for macOS arm64 with Miniconda3

I always hate compiling and building. It's an error-prone path filled with riddles and unknowns.

mosh is a great tool replacing ssh in many cases, sadly it does not provide an arm64 binary download or installer for M1/M2/M3 MacBooks. Moreover I dont like XCode and protected /usr/bin shit so I prefer isolated envs like miniconda3.

Anyway, for such a detour, following the official mobile-shell build wiki, type these commands:

conda install autoconf automake libprotobuf pkg-config tmux
# use libncursesw 6.5 since  6.4 is buggy, rpath and dyld not load LC_RPATH shit
conda install conda-forge::ncurses
git clone --depth=1 https://github.com/mobile-shell/mosh.git`
cd mosh

./autogen.sh
./configure --prefix $CONDA_PREFIX
make check
make
make install

And it's done. All thanks to authors for open source project and butter-smooth build scripts.

Posted

stdout

精准 javascript 节拍器

娃学琴,节奏感糊成一坨了。老师让抖腿打节拍,显然不work。码农特有的穷B气质让我舍不得买个实体的;去找个节拍器app,结果各大市场都是各种广告,怕给娃用不正经;甚至找了很多公众号版的,小程序版的,网页版的,普遍都是各种跳转诱导点击。

失望之余,想起来上次JS播放DTMF对 WebAudio 有点感觉,要不这次自己干脆再手搓一个。调研了一圈发现这玩意没那么容易,主要就是javascript在浏览器里 setInterval 是有时间抖动(jitter)的,不能保证节奏精确。下面的图来自 Monica Dinculescu

即便采用了 requestAnimationFrame 也不行

因为js的执行无论如何trick,本质都是在只有一个主线程的单线程。如何才能做到精准采样打节拍呢?连续精心编排 AudioContext 时间轴!因为音频播放是系统调度跟js无关

搜了一圈发现一位叫 Grant James 已经写好放在 github 了。那还等什么直接拿来~~针对性下列需求改了一番

  1. 无广告
  2. 去掉 .js .css 依赖,单文件更快
  3. 精简不必要的代码结构,方便以后魔改

改完之后发现两三个坑也跟着一起修补了:

  1. wakeLock 防止手机上使用息屏
  2. 突破固定的4拍子,加上可以增减的节拍控制
  3. 增减按钮禁止调到小于 0

最后成果就放在 https://lab.est.im/metronome/ 这里了。有需要的拿去用。协议 CC BY-NC 4.0

20240929更新:

  1. 支持了长按按钮一直增加减少 bpm
  2. 禁止长按出现菜单
  3. 禁止双击缩放

Posted

stdout

Edge找回丢失的右上角Copilot侧边栏图标

右上角图标和侧边栏的官方截图:

如果不小心关掉了,找回办法:

  1. 打开 edge://settings/sidebar/appSettings?hubApp=cd4688a9-e888-48ea-ad81-76193d56b1be
  2. F12 或者 Opt+Cmd+I,找到第一个“Show Copilot”开关,把它改成关闭。
  3. 如果第二步不会搞,输入 document.querySelector('input[aria-label="Show Copilot"]').removeAttribute('disabled') 可破

为什么会有这个问题,因为政策的原因,Microsoft Copilot 不能在简中使用,于是右上角的按钮点一下会消失;但是开发或者集成测试的为了省事儿,就直接给隐藏掉,导致侧边栏无法点开

这串 hubApp 的id如何找到呢?新建一个浏览器profile,这个时候 Copilot 是有图标的。不要去点,去设置里翻 edge://settings/sidebar 就能看到 Copilot 的选项。

Posted

stdout

归属感

偶然看到一张图

The link between imagination and place is no trivial matter. The existential question, 'Where do I belong?' is addressed to the imagination. To inhabit a place physically, but to remain unaware of what it means or how it feels, is a deprivation more profound than deafness at a concert or blindness in an art gallery. Humans in this condition belong no where.
— Eugene Walter, Placeways, 1988

这句话比较难翻译,我尝试一下:

遐想与所在地的关系不可忽视。“我属于这里吗?”这一挑战存在感的问题,往往被归结于遐想。现实中,你住在一个地方,对其渊源、历史、意义等感受一无所知的话,就好比聋子听音乐会、瞎子看美术展。在这种状态的人,无家可归。

总感觉漏掉了点什么,或者想多了?展开一点的说:

  • 北京意义是一块八旗、南方贵族聚居的飞地,普通人的归属感不会超过骆驼祥子
  • 上海的渊源只有从租界开始,如果你的人生跟通商口岸没交集也很难找到归属感
  • 深圳的历史比大部分居民寿命短

Posted

stdin

创始人模式

外网的油爆爆,看了下,pg的文章,应该是受这个视频的启发

https://youtu.be/ia6Di_ytiSE?t=2792

Brian 说世界上每 $1500 交易中,就有 $1 是给了 airbnb,挺新鲜。他接着用了个”爬山“喻。创业就好比爬山,创始人好不容易爬上一个山头,这个时候你找一个职业经理人空降到团队,他有能力带领大家去攀登下一个山峰吗?

Brian 说得很有道理。很多人能进大企业,迅速掌握组织架构里的生存技巧,但是出来从 0 建立一套东西不是人人都会的。因为创业的本质就是打破陈见,敲碎现状,更需要说服拿工资老保们跟着一起去打破。

Brian 又说,创始人有三点无可替代:

  1. 是生理父母(不是抚养父母)。你亲自生出来的娃,就是你自己。这种母爱和对外部事物的喜欢有根本的不同
  2. 有permission。有些事跟外边小朋友不会讲,但是给自己娃会说。Brian比喻说如果有必要,他可以给公司改名字。职业经理人敢吗?
  3. 创始人既然创建了一件事,也能重建它。职业经理人能打理清楚,避免出岔子就不错了。Brian 又用了个精彩的比喻,只有创始人才知道公司的冰点和沸腾点。他随手拿起个杯子,说只有创始人才知道这杯子设计之初是啥样,这杯子怎么来的,比如铝合金从哪家订的。这不仅仅是管理问题,而是掌握如何建造的过程。

Brian 又说 创始人有2点不足:

  1. 不清楚如何把生意 scale 到大公司级别的管理
  2. 创始人精力和生命有限。如何接班?

Brian 又读了下他给 AirBNB 发的全员信。有句话很俏皮:

You must design the culture you want, otherwise, it'll be designed for you, you might not like what emerges

然后就开始喷 HR 部门。。。哈哈。那什么是culture呢?他说

Your culture is the shared way to do things (and often they're) based on the lessons you've learned ..... Your culture is the behaviour of the leaders that get mimicked all the way down every single person... The way a leader designes the culture is not by writing out list of values, it's by basically leading by example every single day.

culture 就是做事风格,随时表率,迭代更新的。


由于视频太长了我没继续看了。反过来我觉得 pg 看重的点,和 Brian 访谈里的不太一样。可能是我找错视频了?

pg 文章里核心的点是,manager 做事有一条潜规则:严禁越级报告。这个规则又导致,CXO们都是职场向上管理的老油条。

大厂出来的manager都喜欢把组织架构的子节点当成“黑箱”,然后只用跟直属同事(direct reports)做IO就能遥控功能。

pg 指出:

Whatever founder mode consists of, it's pretty clear that it's going to break the principle that the CEO should engage with the company only via his or her direct reports. "Skip-level" meetings will become the norm instead of a practice so unusual that there's a name for it. And once you abandon that constraint there are a huge number of permutations to choose from.

这个创始人模式,目前是什么大家都不清楚,但是无论如何,很明显核心就是要打破层级,做跨级(skip-level)沟通。但是创始人不可能在2000员工里的公司里也像20个人团队一样直接沟通,所以还是需要一定程度的托管。至于托管自治的边界在哪里,pg也不知道。他只说了看具体行业具体赛道具体阶段有不同。你越级管理过渡,还可能变成运输大队长那种“微操战神”。


founder vs manager 这个说法,我感觉可能太笼统了。这个模式可以进一步抽象为:无限兜底 vs 完成指定 的模式区别。

founder 知道哪些事能做,哪些不能做;manager 只能在划定好的职权内做事;

founder 做事是黑名单模式,除了某些选项排除掉,别的所有已知的未知的都得去对付,能动用全公司资源。manager则是白名单模式,一亩三分地,只管把业绩指标操完了事。甚至给下任挖坑。往往留下一下很 toxic 的实践,实践久了就成了习惯最后成了习俗。

这两种模式,归根结底在于,如何定义“事”,有些事和业务,跳出自身角色局限性,其实压根不存在,甚至可以更低成本解决。我个人体会,遇到的某些麻烦,隔壁部门明明稍微改进一下就能解决,但是这个因为不算对方绩效,就推不动,不上心。所以就得花额外高昂的成本。大企业病的所有问题都来源于部门和指责切分,业务是垂直的,但是技术和赋能最高效往往是水平的。

Posted

stdin

php是最好的……serverless

php是不是最好的语言先不说,但是如果从 serverless 的角度看php:

  1. 语法简单,功能丰富,10分钟就能学会
  2. 通过 FTP 之类的标准工具部署,而不是脑残的命令行
  3. 不用管理麻烦的服务器。基于非常成熟的 php-fpm 去做 scaling。也有大量巨型网站验证过这一方案
  4. 虽然不是 docker,但是 vhost 够用了。而且要容器化 vhost 也很容易
  5. 让人梦寐以求的“热更新”技术
  6. 超级便宜的月租。(还记得 dreamhost 吗?)
  7. 不会吊死在一颗树(vendor lock-in)上。全球遍地的厂商都支持

你就说好不好吧。同时评论在 Hacker News

Posted

stdout

2024年玩xml真是笑死了(xsl)

昨天大早上的6点就醒了,翻来覆去睡不着,就开始胡思乱想。忘记是什么缘起了,反正突然想到一个问题,博客这种静态站,又要输出html,又要输出rss。太冗余了。要不直接把内容存在RSS里。然后用js去fetch()。。。。

等等,死去的记忆突然攻击我。RSS不就是XML,XML似乎有个加皮肤的技术。于是就更睡不着了,起床一查,原来是 XSLT 转换成 HTML 然后就可以自由发挥了。

可行性没问题,准备找个前人的例子开抄。比如 2021年Nathan Clark的Styling an RSS Feed With XSLT2023年Darek Kay的Style your RSS feed

思路就很匹配,执行效果也不错。我想百尺竿头更进一步,把 XSL 给 inline 到 RSS 里,避免额外的加载,节省一次网络请求。吗,没想到这下麻烦大了,折腾到现在才有个初步结果。直接贴源码:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="#stylesheet"?>

<some_xml_root xmlns:shit="http://xxx">

<xsl:stylesheet xml:id="stylesheet" version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-system="about:legacy-compat" version="5.0" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
  <html>
    ...
  </html>

</xsl:template>
</xsl:stylesheet>

</some_xml_root>

这里的 href="#stylesheet" 方法,是官方推荐的 。但是要起效果,一定注意 type="text/xsl" 别抄成网上的 application/xslt+xml

主要浪费时间的坑点主要在根的 xmlns 上。这玩意把 xpath 给搞挂了。比如 sitemap你写

<xsl:for-each select="/urlset/url">

好好的,加上 xmlns 就得写成:

<xsl:for-each select="/*[local-name() = 'urlset']/*[local-name() = 'url']">

怪不得现在没人玩XML了。这破玩意没法直观的本地调试,还得靠各种第三方 validator,反人类啊。

于是把根的 xmlns 直接改成 tag namespace。也就是 xmlns:shit 。反正你namespace冲突了关我什么事?而且说实话,xmlns这玩意除了坑各种解析器不好写之外,并没有什么卵用。我以前写都是想办法去掉 xmlns 再解析。感觉这一块真的 over-engineering 了。 好像有点明白 namespace 是干嘛的了。这玩意主要解决一个sb需求:允许多个XML合并到一个文件里。这不就得考虑如何分清楚tag谁是谁的。。。。并且标准已经挖好坑了,一个XML有且只有一个root。。你把别的 tag 合并进来,那的确不容易区分。还有这样写不会造成文件体积膨胀吗?真是xsl笑死了。

接下来的问题就是如何生成一个规规矩矩的 html5 doctype。搜了下 doctype-system就可以了。本来其实可以在<xsl:template>后面加上

<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html&gt;</xsl:text>

但实际只加这个是不行的。

另外吐槽下 Chrome,默认的viewer把xml渲染成html了,在 devtool 里通过 $x() 无法直接调试xpath,还得靠别的第三方工具。(⊙﹏⊙)

这可能就是XSL的核心问题了——没法方便直观的调试,挂了就给你白屏。有点react那种白屏的 ptsd 感觉了。

Posted

stdout

大清卷王 和 骑士

看到个推:

蕨代霜蛟 @ferntrino 10:41 AM · Aug 13, 2024
杭州抗议骑手事件本身就不参与讨论了,难受的是自己的。但有一个细节真的非常黑色素幽默,那就是名单列表顶上的字段。系统命名时还真随手就把骑手的ID命名为Knight ID。
卧槽,Knight这么有历史感的单词竟然落魄卑贱到了这个地步。

Knight这单词让我想起一个往事:

先说一个公共假日:五一。之所以每年放假,这是因为国际劳动节

可能很少有人知道,这个洋节是该死的美国人发明的。具体来说是 1886年5月4号发生在北美 伊利诺伊州 芝加哥市 的 Haymarket Square;具体细节就不说了,打工人闹事,和暴力机关打了一架,死了人。更多的地方接着闹不消停。

被后来这事被称为 Haymarket affair 草市事件 ;重点来了,草市事件的组织者,发起者,名字全称 Noble and Holy Order of the Knights of Labor 高贵与神圣的劳工骑士团。简称 Knights of Labor (K of L),缩写KOL

看来骑士这名字,而且和劳动人民颇有渊源嘛。

而且KOL这缩写冲突了,哈哈哈。。。不过劳动人民应改理直气壮的当意见领袖,没毛病。

图:劳工骑士团 总瓢把子 大工长 Terence Powderly, Grand Master Workman of the Knights of Labor

无聊翻资料,发现一些有趣的细节

1886年5月1日这场运动是KOL在1884年筹备的,主要诉求是8小时工作制。注意国内很多厂家把中午吃饭小休的时间排除在8小时之外,这里显然扯蛋。当年8小时工作的完整表述是:8小时打工,8小时睡眠,其余8小时归自己管! 当年罢工这首颂歌 Eight Hour 就是这么唱的:

Eight Hours for work. Eight hours for rest. Eight hours for what we will

可以看下B站的搬运 【中英字幕】八小时之歌 Eight hours

草市事件是1877年以来 Great Upheaval (也称 Great Railroad Strike of 1877)系列罢工运动的高潮。

早年间的KOL骑士团,强调不分宗教、种族、性别互帮互助,主要成员是低技能体力劳动者、铁路工人、移民、和钢铁工人。但是排斥五类人: bankers, land speculators, lawyers, liquor dealers and gamblers 金融、地产、律师、酒精和赌博。因为这些从业者被认为不对社会产生价值。

当年骑士团吸纳了很多天主教/新教爱尔兰人。然后。。。。。。然后骑士团在还跟 chinese 干上了。据说是在北美西岸的Tacoma,这里1/10人口都是Union Pacific Railroad的铁路派遣工——来自东亚大清的卷王们。

大概经过:

在南北战争期间的1862年,美国总统林肯出台了《太平洋铁路法案》,给铁路拨出了大量的土地和财政资金。负责东段的联合太平洋公司是美国政府直接扶持的半国有企业,它所雇佣的劳工里,大部分是爱尔兰移民。在南北战争时期,爱尔兰正好在闹饥荒。当时北方缺少兵员,政府许诺参军的人可以获得金钱和土地,因此一些黑心商人就去爱尔兰忽悠了很多难民,来美国参战,以骗取政府许诺的参军费。爱尔兰人的加入确实进一步增强了北方的实力,但这种让别国难民当自己内战的炮灰的不人道做法,让美国遭到了来自欧洲各国的谴责。于是到后来,剩下还没有上战场的爱尔兰人就被改派往西部,到联合太平洋公司里去当筑路工人。这些爱尔兰人逃出了饿殍满地的故土,又避免了成为炮灰,都是感恩戴德,施工很卖力,因此联合太平洋公司这一边的工程进展很顺利。
眼看公司快要倒闭,修建横贯大陆的铁路这项伟大工程也要夭折,加州赶超纽约的梦想也要破灭了,这时,四巨头的另外一位,负责实际建造铁路以及人力资源管理的查尔斯·克罗克(Charles Crocker)向斯坦福提出:雇用来自中国的华裔。在19世纪的50和60年代,有大量的中国人,特别是沿海地区的广东人和福建客家人,来到了加州。他们中有的是前来淘金的,也有的是为了躲避太平天国的战火。这些华人中,大多数在加州扎根成家,到了1863年,加州已经有了大约五万名华人。他们勤劳朴素的特质,也是在加州众人皆知的,克罗克正是看上了这一点,才提议将华人们招进公司,去修筑铁路。

具体可以看《路上的美国史︱太平洋铁路:华工用汗水和鲜血浇灌的奇迹》。这篇文章可以看出阶级主义和民族主义叙事的差别。

骑士团要求罢工,大清卷王们不干,愈演愈烈,最后搞成了种族冲突,结局就是 Rock Springs massacre 石泉屠杀。1882年,骑士团支持了臭名昭著的 Chinese Exclusion Act。骑士团所谓的“不分种族、支持移民”口号都加上了“chinese除外”的标签

1886年5月的草市事件是KOL骑士团最大的成果,也是最后的辉煌,接着就迅速衰败了。被 American Federation of Labor 代替,原因是理念落后,熟练工和无技能功能的诉求差异,被天主教主教谴责导致占比很大的天主教徒离开。

1889年,在巴黎举行的第二国际第一次会议上,法国工会人士 拉维涅 Raymond Lavigne 提议将5月1日定为国际劳工节,以纪念草市事件,同时要求各国的劳工共同努力,为八小时工作制而奋斗。拉维涅的议案激励了美国和欧洲多数国家的劳工在1890年5月1日再次进行罢工。

1904年,第二国际在阿姆斯特丹的会议上号召“各国社会民主党组织和工会联合会都要在每年五月一日坚决要求从法律上规定八小时工作制,拥护无产阶级的阶级要求和拥护世界和平”。大会还责成“各国的无产阶级组织,凡在有条件于五月一日停工而无损于工人利益的地方,应当争取停止工作”

历史就是这么奇妙。。。或许国人在人挤人的五一这几天出游,早已忘记这个节日是怎么来的,诉求是什么,以及大清卷王如何被动在错位时代把劳动关系演变成种族冲突的。。。在如今996问题、失业问题夹杂的社会主义国家里,这种黑色幽默,交错神奇,恍如昨日。

Posted

stdin

两则故事:Intel Minnow,日本高分子化学

英特尔第二财季营收低于预期,第四财季暂停派息,公司将裁员超1.5万人,盘后股价大跌20%,如何解读?

老狼 2021 年度新知答主 雨花、yang元祐 等 946 人赞同了该回答
前大樱桃员工来回答一下个人的观点。Intel是个好公司,对员工的尊重和职业路径的培养,公司上下对技术的推崇,宽松的企业文化,可以说是绝大多数国内外公司所不能比拟的。尽管有很多人因为各种各样的原因离职了,也在各种前员工群里面各种吐槽,但都是小骂大帮忙,主要是哀其不幸,怒其不争,对Intel从心底还是希望它好的。这么个好公司,为什么越来越不行了呢?
Intel逐渐崩盘的开始点在于10nm的难产,从那以后就没有再好过,只有一蟹不如一蟹。病发于工厂(Fab),根子则是美国制造不行了。一个前美国同事告诉我,美国人丢失了“CAN DO”的精神,只能做高端的设计、娱乐、金融这种营生,苦哈哈的制造不愿意干了,逼着干也干不了。
曾经发生的一件事,可以一窥美国制造的窘境。我的团队和美国Peer团队一起合作了几个开源硬件项目,这对Intel非常重要,我们计划建立x86的类似树莓派硬件矩阵,但是更加开放,这个项目就是Minnow计划。Minnow的第二代Minnow Max(基于Baytrail)非常成功,其中一个很大原因,就是我们选取了ADI做硬件供应商,而ADI的产线在深圳,主板质量非常好,避免了一代老化测试没有做,生命周期太短的问题。我们打算趁热打铁,推出Minnow3,选择在当时颇有竞争力的APL CPU,价格看能不能做到100美金左右。
计划开始就不太顺利,硬件设计被美国team抢走了,他们非要选择一个美国小厂来生产。在付出了延迟半年的等待后,硬件工程师终于告诉我们下周就可以回板了,我们都非常兴奋。结果,又等了三个月,才正在拿到几片板子(首批应该拿到十几片),而且根本跑不到GOP驱动那里,感觉是高速总线信号有问题。开会时,美国的PM(韩国人)告诉我们一个惊人的消息,说那个小厂生产了一百片板子,没有一个可用,我们的硬件工程师(一个年轻的老美)被迫自己到产线上用焊枪手搓主板,这几片就是他几周手搓出来的!他的毅力让我佩服(手搓主板仙人?),但还是不能用啊,谁让你换美国小厂的?于是我们每次项目周会都会催他啥时候能给我们可用的主板,过了几周,他从此再也没有在周会上出现。
项目于是又停滞了几个月,我们催PM,PM告诉我们他找不到这个工程师了,就是他的经理也不知道他去哪里了,就差要报警了。就在我以为过一阵就要换个硬件工程师的时候,事情发生了令人瞠目结舌的转折。
各位看管,这里有一个好消息,和一个坏消息,你们想先听哪个?好吧,好消息是硬件工程师找到了,坏消息是硬件工程师将公司告了!说因为我们总是催他进度,导致他患上了严重的抑郁症,有工伤了,现在不能好好工作,一周只能去一天公司。我心里一万个草泥马跑过,我一周和颜悦色的问一下进度(我又不是他领导,也严厉不起来),从来没有投诉他,这都能搞成工伤,是不是温室里的花朵?
关键是他的工伤被认可了。从此,我和PM再也不能问他进行到哪里了,可笑的是,我们既不能把他踢出项目组,也不能换个硬件工程师,这个活还必须是他干,而且还不能另起炉灶,再成立一个项目组。按照律师的说法,必须Inclusive到他。他的经理也不能辞退他,更不能给低绩效,从此有个防弹衣。他的经理从此拖了一个油瓶,在此可怜他一秒。更重要的事,项目周会从之谈风花雪月,到没人记得参加。项目再延期一年后,迎来了它的结局,无疾而终,而我从此告别了开源硬件梦。
这是Intel的问题吗?不,是美国的体制问题,尽管美国还拥有全世界最顶尖的人才,美国制造也永远不可能回到过去的辉煌。Intel现在扛下了美国制造的脸面,必须负重前行,但我们都知道,在路的尽头,只有特朗普的白日梦。
编辑于 2024-08-03 23:15・IP 属地上海

日本企业是否已经整体夕阳西下了?

Osteroza 键盘侠,接盘侠,洗盘侠 1916 人赞同了该回答
我说一个可能化工行业的同仁们知道的趣事。
美国化学家 P J Flory 是高分子化学的大师级人物,他本人获得过1974年的诺贝尔化学奖。
然而,Flory在晚年的许多“成就”其实是大坑,特别是涉及晶体振荡领域,他的一些结论是错误的。
在六十到七十年代,不少日本化学家师从Flory。这些化学家日后成为了日本化学领域的大佬级人物,决定了日本高分子化学领域的研究方向。这些大佬们继承了Flory的研究成果,包括错误的部分。在他们的带领下,直到今天,日本化工界的许多研究,依然是沿着Flory的模型一路狂奔!
而欧美化学界早在90年代就开始批判Flory。在这位老大哥的家乡,美国,他在大分子晶体领域的学说被“全盘反思”,今天的美国化学界没有机构会继续沿着错误的理论搞科研。
然而,这不妨碍日本化学界,物理界和工业界,年复一年的派学者前来美国进修,重复着一位位前辈们的实验,佐证Flory派模型的正确。只要Flory模型是正确的,也就说明当代日本化学高分子界老师们的正确,也就是证明日本化学界自七十年代来所有前辈们的努力是正确的。
这个行为在我这个外行看来,可以有三种解读: 1,美国实验室知道真相但忽悠日本人,反正你自愿交钱来做实验。2,日本人很固执,死不认错。3,如果最终证明日本人是正确的,那么日本人就是逆行的孤勇者。
事情怎么发生变化的呢。在某次物理年会上,美国国家标准局和阿克郎大学发难,派了个年轻的博士后上场,说你们日本人前段时间又来做Flory模型的实验了,据说数据很完美,你们工业界也重复了实验,数据也很完美,是不是?
鉴于你们实验年复一年的数据都很完美,我们很好奇,所以也做了你们的实验,结果发现了不少的问题。现在我就一条条,一步步的列出来,你们的实验每一步都有哪些问题。我们初衷是同行们间的学术交流哇,大家好好讨论一下哦。
讨论结果是,日本人之后再也不来参加这个物理年会了。
我一位高中同学当时在Akron读博,他听说这事儿以后就问了他的美国导师,“我们是不是杀死了日本人的一个行业”。他的导师回答“不,我们是给一具尸体照了次镜子”。
而我另一位在日本留学读博的中学同学说“日本人每次参加学术会议都一大堆人,但通常只有大佬做关键发言,小辈们发言后都要加上点感谢大佬的致辞。米帝让一个三十几岁的小辈直接怼德高望重大佬们,大佬们恐怕心境上也很难接受吧。”
你们觉得日本人被打脸后,默默改正了错误吗?
虽然,但是,如此,然而,日本学界依旧每年派人来美国实验室刷数据,继续论证Flory的模型是正确的! 日本工业界也依旧以flory的模型为基础,孜孜不倦的推进研发工作。
发布于 2024-07-27 01:23・IP 属地英国

不知道是刚编的故事,还是真就这么草台。。。。

Posted

stdin

关于 cn.cyberIdentity.certification 的一些技术信息

搜索该app名字可以得到

https://apps.apple.com/cn/app/_/id1588080869

各大app市场都有隐私政策页,点击可以发现网址是:

https://cdnrefresh.ctdidcii.cn/w1/WHClient_H5/pages/secret.html

甚至有一个 apk 下载页面

https://cdnrefresh.ctdidcii.cn/w1/WHClient_H5/Install/InstallGuide.html

https://cdnrefresh.ctdidcii.cn/w1/version/cyberIdentity-android.apk

whois ctdidcii.cn 可以得到

Registrant: XX部第一研究所
Registrant Contact Email: songjie@anicert.cn

可以发现该公司官网

有限公司(以下简称“ZDAX”)是**部第一研究所下属全资子公司。
**部第一研究所以国家“互联网+”可信身份认证平台(简称“CTID平台”)核心技术为依托,致力于为各级政府部门、互联网运营商、各行业应用提供权威、可信、安全、便捷的身份认证服务,并开展相关业务创新。在**部的直接领导下,**办、国家发改委、科技部等部委的大力支持下,**部第一研究所积极开展居民身份证网上应用研究,组织承建CTID平台,助力新时代社会治理现代化。
2017年10月,**部第一研究所成立ZDAX公司,并授权ZDAX为CTID平台唯一合法的运营服务商,为各行业提供权威、可信、安全、便捷的网络身份认证服务,为我国“互联网+行动战略”提供强有力的支撑保障。

以及平台介绍说明

https://www.anicert.cn/platform.html

● 一次一码,超时失效
● 通过国密算法加密、签名防止数据泄露、篡改和伪造
根据相关行政许可设立的第三方签发、面向系统应用可作为司法采证使用的身份凭证,如电子认证服务提供者、CA机构等第三方签发的电子签名认证证书、eID等;

得出一个结论,这玩意不是eID换皮那么简单。

点开发展历程可以看到

2020.12 《基于可信数字身份的区块链应用服务白皮书》正式发布

上面提到的厦门公司,看上去是专门做 CDIT 运营的,搜了下官网是

https://easyctid.cn/about

其中有一张最重要的架构图

目前不知道这个 PID 是唯一的还是可变的。要实用还是得做类似微信那种 OpenID/UnionID 才行。因为技术对接SDK需要付费签协议才能拿到,细节就无从而知了。

Posted

stdout

Valid HTTP verbs

这里 想到,fetch/xhr 可以发起哪些 http verb 呢?

python -m http.server 随手测试了下,发现连 !$ 这种符号都可以作为 http verb,比如 fetch('/asdf', {method:"$"}) 这样的请求是能发起的。于是去 chromium 搜了下 "is not a valid HTTP method" 相关的解析放在 blink/renderer/platform/network/http_parsers.cc

// See RFC 7230, Section 3.2.6.
bool IsValidHTTPToken(const String& characters) {
  if (characters.empty())
    return false;
  for (unsigned i = 0; i < characters.length(); ++i) {
    UChar c = characters[i];
    if (c > 0x7F || !net::HttpUtil::IsTokenChar(c))
      return false;
  }
  return true;
}

bool HttpUtil::IsTokenChar(char c) {
  return !(c >= 0x7F || c <= 0x20 || c == '(' || c == ')' || c == '<' ||
           c == '>' || c == '@' || c == ',' || c == ';' || c == ':' ||
           c == '\\' || c == '"' || c == '/' || c == '[' || c == ']' ||
           c == '?' || c == '=' || c == '{' || c == '}');
}

原来如此,RFC 7230呀。于是把这些字符打出来:' '.join(chr(x) for x in range(0x20, 0x7f))

! # $ % & ' * + - . 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z | ~

那还搞个屁的 RESTful 啊。直接用特殊符号一把梭。不过各种服务端框架可能不是很容易做兼容。哈哈。

Posted

stdout