2026年1月

刚才想到这个问题,突然有一个洞见。
企业的核心竞争力就是对客户需求的深刻理解和独特实现。
微软的纳德拉说,未来企业要有竞争力,就必须将企业的独特内在知识沉淀为AI大模型的独特能力。这里说到了AI数据主权。只有自己的模型沉淀了自己的企业能力,才可以说是有自己的数据主权。
我刚刚有一个洞察,这么多年居然都没有想到的一件事情。一个人对需求的理解,是与其他人不同的。我很惊讶,我到现在居然才深刻认识到这一点。我曾经以为,如果大家看到了同一个需求,经过正确的推理,一定能获得相同的理解。就好像大家看到一个数学题,经过相同的推理,一定能获得同一个答案一样。然而现实却完全不是这回事。如果还用数学题来比喻。那一个需求其实是多道数学题,而且每道数学题可能都有多种不同的解。然后现实是一个有限资源的决策。需要在有限的资源下,决定到底要解决哪道数学题,用哪种方式,获得哪种解才是最高效的。同样的,由于每个人都是一个有限资源体,他所能发现的,要解决的问题,也是和其他人不同的。再加上每个人的背景、经验和能力不同,他看待每一道题的可解性上面也有很大不同。同样对于同一道数学题,可以用代数、几何等等不同的方式来去解决。这就会造成最终解题思路和形态的不同。另外一些数学题可能只能用专用的知识,比如微积分来解决。而不懂微积分的人可能认为这道题是无解的,或者说是给出一种特别复杂的、极耗资源的方案。
所谓对客户需求的深刻理解,就是找出所有的数学题,了解哪些数学题需要通过哪些知识可以最高效地解决,并且用最高效的路径实现。企业为客户提供的价值,就是客户旧的解决方案所需代价与企业提供的新的解决方案所需代价之间的差额。企业的利润就是最高效路径的耗费成本与收到客户的新方案费用之间的差额。
这一切当然都可以转化为成本、利润与销售额的简单算式。但是成本加利润等于销售额的算式里面,掩盖了不同公司成本为何会不同,销售额和利润为何不同的原因。归根结底就是能不能提供新的解题思路。
所谓一个行业是否成熟,就是这个行业的所有企业是否最终都不约而同地采用了相同的、最高效的解题思路。这就解释了一个行业的发展周期。早期阶段,只有少数公司能发现少量的解题思路。行业快速发展阶段,有众多公司发现了众多不同的新的思路。行业成熟期,解题思路变得更加的单一、高效、节约资源,企业也逐渐淘汰,向少数头部集中。衰退期是行业的单一思路被新的知识所提供的新思路替代,或者是原本的算术题,也就是需求消失了。
一个需求可能是一个树状结构。子需求是父需求的解决方案。从这个角度来说,需求(问题)和解决方案的定义是相对的。一个需求,它到底是需求还是方案,在需求树中,就看它是相对于父需求,还是相对于子需求来说了。
从业者经常会混淆需求、问题和解决方案这三个名词。为了明确,我需要对这三名词进行重新的关系定义。需求既是问题,也是解决方案,相对于其父需求,它就是解决方案。相对于其子需求,它就是问题。所有的需求向前追溯,也许都有一个根需求。那这个根需求可以称之为终极问题。
举个例子,人对计算的需求自古至今一直是有的。其解决方案有算筹、有算盘、有计算机。那如何制造算筹、算盘和计算机?这又变成了一个新的问题。算筹的解决方案可能有竹签、有象牙、有对应的不同工艺。计算机,那就更复杂了,解决方案包括硬件和软件,如何实现硬件和软件?这两个问题又有极其复杂多变的子需求。计算的需求往计算机这个子需求上面走,就会形成一个极其庞大、枝繁叶茂的树。需求向后生长,最终的需求可以说是最终交付的解决方案。
从计算机的这个需求上来说,软件的需求为什么最终会超过硬件?这是因为软件的这棵树可以开得更加枝繁叶茂。从软件上实现计算,有不同的编程语言,有Excel、有前端、后端、数据库…简直无法穷尽呢。
现在AI又带来了一个新需求。它既能成为现在计算这个终极问题的新方案,又提出了更多该如何实现AI的新问题。
一个解决方案的成本并不是固定不变的。它会随着整个环境和时代的不同而改变。原因是一个解决方案需要依赖的上下游供应链关系是不同的。在不同的环境和时代中,是否能提供这个上下游供应关系,就不一定了。或者简单来说,解决方案是最终产品,需要供应链来解决。供应链要能提供解决方案所需要的原材料,解决方案才可以最终实现。在不同的时期,能否提供原材料的可能性不同,能否提供这些原材料的能力也不同,所以其价格也不同。这就是所谓一个解决方案的供应链是否成熟的问题。为什么早20年或者更早的时间就有很多企业觉得电动车是未来,并且付诸于实践并解决其问题。然而并不能成功的原因,就是因为在那个时候,其上游供应链并不能提供成熟的、丰富的、有价格竞争力的原材料。
当一个需求的解决从一种解决方案往一种新的解决方案上面迁移的时候,旧的解决方案的上游供应链也会被逐渐抛弃,从而带来旧方案的涨价。这种涨价进一步推进了旧方案走向衰亡。

Blender做渲染和动画设计的时候有很多要求, 在设计产品用于3D打印的时候,却似乎减少了很多要求.
比如: 不能用N-gon(超过5个顶点的多边形, 默认生成圆柱体的顶面底面都是N-gon), 不要内藏面, 但是用于3D打印似乎都不重要了. 即便是有N-gon, 有内藏面, 以bambu studio为例, 都能正确形成打印路径, 不会把内藏面打印出来.
要能3D打印, 物体必须是封闭的. 如果不封闭, 则这个物体即便可以在bambu studio中显示也无法打印出来. 不封闭的物体A靠在封闭物体B上, 视觉上封闭了A, 但A仍然不能被打印.
另外,STL文件导出后, 在Windows 3D builder中和bambu中都是把米变为了毫米. 在3D builder中, 还可以切换单位, 但是默认是毫米. 我以为是blender导出过程中丢失了单位, 但是将此文件重新导入blender,单位仍然是米. 查询了stl的定义, 原来这个文件本身是不带有单位的.

很久没有动ESP32和IDF这套东西了,这里记录一下过程

  1. 环境安装。可以使用乐心最新推出的EIM ESPIDF环境安装工具来安装,选择版本5.4.3。不要用国内的仓库来下载,还是要用GitHub。Python仓库可以用国内镜像。下载完毕后在EIM中打开5.4.3的环境。这一步必须非常小心,因为可能会由于网络的问题导致部分IDF的仓库或者说子模块没有下载完整,最终导致编译失败。
  2. 首先从GitHub上下载DOIT_AI,并解压缩,而不是通过git clone命令来克隆它。因为项目作者不小心上传了一些NTFS的流文件,其中含有冒号,会导致git clone的时候这些文件无法在Windows上创建,进而导致整个目录中的文件全部创建失败而消失不见。
  3. 进入 DOIT_AI目录,运行:
    idf.py set-target esp32c2
    idf.py menuconfig

    配置board为doit-ai-01, 保存退出。

  4. 使用idf.py build进行编译。
  5. 使用idf.py merge-bin合并为一个从0x0开始的bin文件merged-binary.bin

有时候在远程仓库的页面上看到文件内容都有, 也不存在分支不对的问题, 然而windows下使用git clone之后进入目录却是空的.
一种情况是远程仓库中存在部分文件以:Zone.Identifier结尾。因为文件中含有:, 无法在windows中正常创建文件, 导致所有的文件都没有被创建.
这类文件通常是因为在 Windows 系统下从互联网下载了文件。
机制:Windows 的“附件管理器”会自动在下载的文件中添加一个名为 :Zone.Identifier 的隐藏流。
内容:该流记录了文件的来源区域(例如 ZoneId=3 代表 Internet)。这也就是为什么运行下载的 .exe 时会提示“此文件来自其他计算机,可能被锁定”的原因。
为何进入 Git:如果在 Linux 或 macOS 环境下将这些带有 NTFS 流属性的文件提交到了 Git 仓库,而这些系统并不强制处理 NTFS 特性,它们会被当作普通文件(或文件名的一部分)存储 .
我觉得有可能是在windows的linux子系统中做了git commit导致的.
解决方式: 不要通过git clone, 改用下载zip包的方式, 通过7-zip解压缩后, 会发现7-zip自动将:转换成了., 如果不解压缩直接查看压缩文件, 还能看到这些文件名中含有: