This blog is rated 🔞, viewer discretion is advised

Making subprocess async friendly in Python

It's been a while since i wrote something in English, mostly because there's nothing really interesting, until now.

Occasionally, when facing a long running task in Python, I would choose either a distrubuted tasks queue system, or for the convenience, just the subprocess module. It's built-in and well designed for grabbing outputs of a child process running for a short period of time.

But what if the child-process takes a really, really long time? In my case it's an expensive query, or some CPU/GPU intensive task, which needs to be launched from a running Web framework, like FastAPI.

Popen() fire and forget

if child-process's output, end state and the return code are irrelevant, a simple Popen would do

subprocess.Popen(..., stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

The problem is, after the child-process finishes, it will hang as a zombie, because the parents refused to claim its exit status. To fix this, add an extra parameter in Popen() like subprocess.Popen(..., start_new_session=True)

And write a simple loop periodically check for WNOHANG

while 1: try: chpid, retcode, res = os.wait3(os.WNOHANG) except ChildProcessError: break sleep(5) if chpid == os.getpid(): do_sth() break

This can be done using BackgroundTasks in FastAPI/Starlette.

In a way, the child-process hebaves like nohup or screen/tmux, running in a detatched fashion.

If you hate this many lines of code, just subprocess.run("blah.sh &", shell=True) and wrap your commands in blah.sh

Make .communicate() async

Sometimes I need to monitor and handle the stdout/stderr of a child-process, like forward the outputs as an EventSource response to the browser.

First I tried .communicate() it will block until the process quites.

Then I tried Popen.stdout.read(), it will also block. Eventually I found a great hack from Stackoverlow like this:

p = subprocess.Popen(
    cmd, bufsize=0, text=True, stdin=subprocess.PIPE,
    stderr=subprocess.PIPE,  stdout=subprocess.PIPE, close_fds=True)
fcntl.fcntl(p.stdout.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)

Now p.stdout.read(1024) would return immediately, or with a TypeError bnecause internal messed up with None as non-blocking empty return.

Wrap it with try...except inside a loop, it worked fine as expected.

When the parent process crashes unexpectedly, the child-process is still working, to detect this, just check for BrokenPipeError carefully in child-process and gracefully shutdown.

Solved with asyncio

I tried harder reading the official Python docs, turns out the most easy solution is already there:

proc = await asyncio.create_subprocess_exec(
    sys.executable, '-c', code,
    stdout=asyncio.subprocess.PIPE)

# Read one line of output.
data = await proc.stdout.readline()
line = data.decode('ascii').rstrip()

# Wait for the subprocess exit.
await proc.wait()
return line

I guess another lesson learned today.

Posted

stdout

人声分离简单评测

娃要去表演唱歌,老师要求提供MTV。。 视频是这个,需要去掉人声部分

先用 ffmpeg 提音轨 ffmpeg -i v.mp4 -ac 1 1.mp3

微信小程序上的全是骗充值的,网上的服务:

  1. 没卵用 https://vocalremover.org/ 名气很大,搜出来第一就这个
  2. 没用 https://www.conversion-tool.com/karaoke/
  3. 卡死 https://www.songpeel.com/song-to-karaoke
  4. 要安装 https://github.com/adefossez/demucs
  5. 要6G显存 https://github.com/Anjok07/ultimatevocalremovergui
  6. 效果很好! https://tunebat.com/Vocal-Remover 推荐

看来人声分离,特别是童声,还是有点难。

最后把得到的 a.mp3 塞回去

ffmpeg -i v.mp4 -i a.mp3 -c:v copy -map 0:v:0 -map 1:a:0 new.mp4

btw 打了这么多网址,该不会被误认为SEO吧。囧。。。。

Posted

stdout

吐槽pynsq,另外给subprocess糊了一个异步

pynsq太烂了

起初是因为需要在 Web API 里消费一个消息队列(nsq),给浏览器返回 EventSource 做实时输出。但是没想到官方库pynsq居然写得这么渣:

def _handle_term_signal(sig_num, frame):
    logging.getLogger(__name__).info(
        'TERM Signal handler called with signal %r', sig_num)
    tornado.ioloop.IOLoop.current().stop()

def run():
    """
    Starts any instantiated :class:`nsq.Reader` or :class:`nsq.Writer`
    """
    signal.signal(signal.SIGTERM, _handle_term_signal)
    signal.signal(signal.SIGINT, _handle_term_signal)
    tornado.ioloop.IOLoop.current().start()

这都什么玩意儿?一个库何德何能也敢去乱劫持 signal?最他妈逗的是这个库的推荐写法:

import nsq
r = nsq.Reader(message_handler=handler,
        lookupd_http_addresses=['http://127.0.0.1:4161'],
        topic='nsq_reader', channel='asdf', lookupd_poll_interval=15)
nsq.run()

这个 r 莫名其妙的就能跑起来了。真是魔法。anyway,在Web API兼容这一坨是失败了,爆了一堆错,对付魔法的办法就是隔离,所以打算糊个脚本,通过多进程+PIPE来得到数据。

给 subprocess 加一个异步补丁

糊的时候发现,subprocess 模块的 .communicate() 方法是 blocking的, 居然不支持 async/await,于是只能继续糊:

import subprocess, fcntl, asyncio
p = subprocess.Popen(
    cmd, bufsize=0, text=True, stdin=subprocess.PIPE,
    stderr=subprocess.PIPE,  stdout=subprocess.PIPE, close_fds=True)
fcntl.fcntl(p.stdout.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
buf = ''
while p.poll() is None:
    try:
        # read() with O_NONBLOCK might gets None thus TypeError
        buf += (p.stdout.read(1024) or '')
        contents = buf.split('\n')
        if len(contents) < 2:
            raise TypeError('Not enough')
    except TypeError:
        await asyncio.sleep(1)
        yield None
        continue
    buf = contents.pop(-1)
    for x in contents:
        yield x

p.terminate()

这里用 bufcontents 是因为直接调用消息队列,每个消息都是分割好的;但是通过管道来读。得自己去处理字节流如何分割的问题,也就是传说简中特供的「粘包」问题。

另外子进程可能因为Web框架的种种原因,不自觉退出或者变僵尸进程,需要向 stdout/stderr 做输出的时候检查一下 BrokenPipeError 处理后事主动退出即可。

还有子进程如果输出完毕,需要代码里调用一下 p.terminate(),才能回收,避免变zombie

试了一下,也不是不能用,成功!正觉得自己又行了的时候,发现官方:

https://docs.python.org/3.8/library/asyncio-subprocess.html

啊这。白忙活。

超长待机 subprocess

想起来之前还有个问题,一个API调用一个subprocess,然后等它执行,不想管。这个时候可以加一个参数 detach 模式:

subprocess.Popen(..., start_new_session=True)

然后在同进程用里跑一个后台检查循环去检查子进程的 WNOHANG

while 1:
    try:
        chpid, retcode, res = os.wait3(os.WNOHANG)
    except ChildProcessError:
        break
    sleep(5)
    if chpid == os.getpid():
        do_sth()
        break

想了下好像也搞复杂了。要不直接跑一个 sh -c "blah.sh &" 算了。

Posted

stdout

如何删除 C:\Windows\WinSxS 文件

天气热得心慌,看Win10不爽,决定删几个文件玩玩

  1. 首先你需要以 SYSTEM 用户启动 cmd.exe
    Win+R 敲入:
    "\\live.sysinternals.com@SSL\DavWWWRoot\tools\PsExec.exe" -i -s cmd.exe
    回车。确认当前身份敲入 whoami
  2. 夺权:takeown /F "C:\Windows\WinSxS\Backup" /A /R /D Y
  3. 授权:cacls "C:\Windows\WinSxS\Backup" /T /G SYSTEM:F /C
  4. 开删:rd /s /q "C:\Windows\WinSxS\Backup"

爽!

当然,你也可以让系统代替你清理:

Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase

很老的磁盘清理工具 cleanmgr.exe 也可以试试,删不要的程序 appwiz.cpl

老黄家的 DXCache 也十分让人不解。这破玩意还存2个地方:

  1. %LOCALAPPDATA%\NVIDIA\
  2. %APPDATA%\NVIDIA

老夫当年给 C: 装了个最慢的SSD,失策。去年(2023)那一波M.2降价潮一直等等结果错过了,拍断大腿追悔莫及。

Posted

stdout

从 Leanote 迁移到 Obsidian

差不多积累了10年的笔记,因为软件开发商跑路去做 2B 了,这玩意也没人维护了。换 Obsidian

Leanote 不支持导出 .md 但是它自己的格式就是 json,转换一下很简单。

  1. 把一个目录下的笔记批量导出为 Leanote 格式,比如导出到 /tmp/folder1
  2. 执行Python代码
    import json dir = '/tmp/folder1' for n in os.listdir(dir): if not n.endswith('.leanote'): continue with open(f"{dir}{n.replace('.leanote', '.md')}", "w") as f2, open(dir+n) as f1: f2.write(json.load(f1)['notes'][0]['content']) os.remove(dir+n)
  3. 你会发现该目录下的 .leanote 都变成了 .md。拖拽到 Obsidian 即可

希望对搜到这篇文章的人有所帮助。

Posted

stdout

挑简历看麻了,就业市场太卷了

最近帮挑选简历,二线城市中低端技术岗,需求是上午发的,邮箱中午就炸了。这投递量给搞麻了,这也太多了。

想到什么写什么

几个感悟

  1. 第一,学历歧视是真的。本来还想看看能不能相中一个优秀的拼搏者。可能因为岗位要求不高,个个都很匹配。大家的工作经历都很丰富,也就是雷同。唯一不同的就这学历了。所谓的985 211不是他们实力强,而是名声显赫的院校到处刷存在感。如果你第一学位不如你的经历强势,建议把教育信息这一栏放到最后。不要把你的名字和学历挂靠得那么紧密!
  2. 简历技巧:一定要写清楚 求职意向 。因为筛简历的很可能同时有多个岗位,你 hint 一下,会更容易帮助阅读者理解上下文。最讨厌看到文不对题的简历。
  3. 经验书写部分,真的不要写参与过XX项目,用XX技术,基于XX,做过XX系统了。给人看麻了,关键字都快看得不认识了。这里我心里有一个严重的偏见,想很快找到亮点,快出来一个亮点给我一个不拒掉的理由!有的时候真的很难。当然,如果你全是亮点,反而觉得你有点作,会不会有所隐瞒?会不会有啥问题和不足?
  4. 面试的时候讲项目,很多时候陷入「述职报告」模式,说我们团队做了XX,我们做了XX,请打住。这里公司考察的是你「个人」能力,不要把别人的功劳给take credit。之前面试有人吹了几十分钟某分布式系统杰作,最后一问,居然是他来之前就有的现成的。啊这。。。。。
  5. 还是刚才那个问题,简历里的的项目如果很大,建议写清楚哪些部分是自己的,否则会让人怀疑是不是把整个团队的工作都当自己的成果了。不太真实。
  6. 技术岗简历真的不要贴大头照了。。除非你的长相能帮助工作。否则很容易让大脑暂停理性思考,进入感性的评头论足模式。
  7. 写XX能力强,能吃苦这种笼统模糊的,只能定性不能定量的,还不如不写。因为没证据。能力强体现在什么地方?吃苦有多能吃?沟通能力好到什么地步?
  8. 无论正序还是倒序,把公司和项目经历放在一起。比如A公司:项目1项目2,B公司:项目3。这样。特别是分开2页的,看的时候需要把项目和公司跨页按时间JOIN才能对应。职位全称不重要,职位干啥的,扮演什么角色起到什么作用很重要
  9. 行间距留大段空白纯粹是浪费阅读人的视力和时间。排版不用过渡美化,但是字体一定要统一,段落起止位置一定要对齐、对齐、对齐
  10. 能不能约到面试时间,有可能跟是否能订到会议室有关。

我发现,写简历的思考模式往往是:我有哪些NB的地方能添油加醋让对方相信,NB的东西越多越好

而简历阅读者的思考模式是:哪些东西和我手上的活儿最匹配?

从这个角度来说,根据JD定制一套简历是十分、非常、及其有必要的。没有关系的经历一笔带过甚至不需要提。

可能很多人写简历,出发点是,广撒网,海投,这一点对于竞争激烈的岗位来说万万不可行。你以为简历是「只要够匹配,我就有机会」。实际上简历如果多了,它压根就不是一个是否命中 yes/no 的问题,而是一个 ranking 问题。

任何事只要变成「排位」,那就很残酷,很竞技了。你不仅要达标,而且要考虑如何比别人的简历「更加」匹配。

招聘系统的吐槽

厂里的简历系统很多都只是一个 姓名-岗位-投递时间 三元组列表。这玩意压根就不能拿来做 ranking,只能靠筛选者的「瞬时记忆」。任何ranking,底层都是一堆权重的叠加,我不得不做一个 Excel 把候选人的名字放进去,然后几个考察点人别打分,最后算上权重,择优录取。

爆量之后,简历系统最大的麻烦,居然是去重。因为不仅有自投,还有渠道方帮助筛选投递的,同一个人,多个版本来源不同的简历,会先后刷出来。很是麻烦。名字不能保证唯一,pdf解析又麻烦,估计很多人懒得做。2333

除了上面的「量化」筛选决策的想法,还有然后对很多候选人其实很惋惜,也想跟对方反馈一下。但是又很懒。我想招聘平台应该提供一个付费功能,请筛选者指点一下问题所在,至少让别人知道哪里碰壁了。

Posted

stderr

正在加速崩塌的是「中文」,不是互联网

看到一个说法《何加盐|中文互联网正在加速崩塌》,文章说

几乎所有在那个年代曾经红火过的中文网站,如网易、搜狐、校园BBS、西祠胡同、凯迪猫眼、天涯论坛、校内网(人人网)、新浪博客、百度贴吧、以及大量的个人网站等,在一定年份之前的信息都已经完全消失不见了,甚至大部分网站是所有年份的信息都消失了。唯一例外的是新浪网,还能找到一些十几年前的信息,但也是极少数的寥寥几条,其他99.9999%以上的内容,全都消失了。
为什么会出现这种情况呢?我猜想,主要原因可能是两个:一是经济原因。网站的存在,需要服务器、需要带宽、需要机房、需要人员运维……二是监管原因。

无独有偶,刷到一个帖子

2023-8-14 11:00梁博:Common Crawl中文数据提取出来了,做了去黄等处理,发现简体中文压缩数据只有6TB,解压后30TB左右,繁体压缩数据6TB。中文数据到2019年冲到一个最大值,之后就回落了,不知道2020年具体发生了什么事情。。中文网页数据还是有点凋零。是不是有些网站不维护了?

更大的问题是所谓科技巨头们自建高墙,把用户和内容视为自家资源,不支持互联网链接,公然且无耻地未被互联网开放互联的精神。你在 twitter 里面可以引用,加任意链接,信息自由流动。在微信、抖音、小红书里面试试?

twitter,或者说 𝕏,也开始建墙了。比如 nitter.net 就不允许使用了。walled garden 我觉得算一个因素但不是绝对因素,比如十几年前CCF和DRL这类封闭式论坛还是经常有人转帖出来,好的帖子转就完事了。依我看来,中文互联网的崩溃有两个因素,以及一个结果

1. 长截图的崛起。

HN有一个神评论,说hyper-text transfer protocol名不副实,信息传递都是通过screenshots transfer。这玩意配合手机那个破屏幕简直绝了。这不仅是国内的问题,国外ig (instagram,ins)、𝕏上的文字截图不要太多。这个东西一方面缺点就是无法根据屏幕重排版,看起来别扭,但是也有诸多好处:

  1. 保留了原始的文字和图片。富文本转帖一直是一个世纪难题,你去用js+html做一个rich text editor带附件上传的就知道多蛋痛了。还不如 .png 甚至 .jpg 一把梭
  2. 防止了文本传播中的添油加醋篡改。甚至图片都包浆了,都还是那个样。
  3. 最后,而已是最重要的一点,OCR技术不能 100% 准确率拦截长截图里的敏感词,很多截图 - 再截屏的二次传播使得md5, similarity-hash 都无法有效对抗热点事件的长截图传播。

总体来说,长截图是移动互联网的原生信息载体,文本不是。

2. 音视频的统治

回到正题,中文互联网 的确崩溃了,但是崩溃的是中「文」这一 文本 为主的形式。看看长短视频、直播网站的流量,即便墙和审核机制都挡不住国内外沙雕meme的传播。汉「语」互联网正在蓬勃发展。我举个例子。在过去带宽承载不起大流量音视频的年代,如果一个明星遇到绯闻需要澄清,那么肯定精心会写一篇媒体稿发出来,登报或者接受采访。最近的比如 汪峰承认与森林北恋情 ,女主Senlinbei0707选择直接拍douyin声明 。服化道、背景音乐、肢体语言、镜头这些,代替了纸和笔,输入法和文字段落组织

掌握和驯服文字成本极高,文字的消亡,语言和表演取而代之,是市井乡土阶级的崛起,搭建了一个跨越空间的超级熟人社会。但是唯一能跨越时间的可能只有高度信息浓缩的文字。然而,文字对于大多数普通人是无益的,文字的发明本来就是精英阶级用来和上天鬼神对话的工具,人与人之间的沟通,口语和动作就够了。

问题的关键:搜索引擎

“互联网正在加速崩塌”这一说法,很多例子就是XXX搜不到了。有没有可能,问题不出在资料,而是搜索工具?

搜索引擎在90、00年代是个稀罕货,那个时候SSD还没普及,信息检索是个高精尖的专业领域,但是随着 Lucene、Solr、ElasticSearch这一类免费的开源软件的普及,极大降低了自建搜索的门槛。

搜索不用集中了,内容网站都是自带搜索,还自带推荐系统,把ranking的问题也一起解决了。SEO和内容农场早就把公共、集中的搜索引擎干得生活不能自理了。ChatGPT这样的怪物出来之后,你还指望能搜到啥有效、真实的信息?

随着搜索引擎的没落,新的巨大缺口也在形成,比如刚才 森林北的视频,我们可以问以下几个问题:

  1. 她的口红色号是什么?
  2. 这片子的BGM是什么?
  3. 她自己列举了多少家公司或机构,她分别属于什么职位?

这些都是需要去端到端 infer 的。也是一个技术创业的点子和机会。以后存的信息都是向量,token会取代文本。

aftermath

感觉说了这么多,无非在纠结「文本」或者「文字」这一概念本身。但是我觉得钻这个牛角尖是非常有趣的。

文本实际上就是人脑活动的压缩,对信息的概括。这是transformer架构和语言模型对我的一个巨大启发。这个有损压缩,丢掉的是什么呢?情绪和环境上下文,也就是亲切感。如今的音视频把这一最古老的人类群居基石——聊天拉回现实,放入口袋里那一小块屏幕中,怪不得雷军、周鸿祎这样的老人都出来当网红了。人一辈子可以通过读文字了解很多知识,但是「邓巴数」这个东西,决定了你一辈子的注意力只有150人。

人们对互联网的期待显然可以分为两种:一种是客观的,工具性质的,严肃话题研究。这就是过去USENET和UGC的宝藏所在;另一种,人们是为了瞬间的快乐,长时间的归属感,去找认同的。这个时候,互联网提供了多彩的屁股位置选项。过去,没人知道互联网上对方是不是一条狗,现在,没人在乎你是不是沃尔玛购物袋,但是这并不妨碍网上武装直升机们为这事吵得不亦乐乎。

Posted

stderr

记录一个噩梦

今早凌晨,从噩梦中惊醒,然后就一直辗转反侧睡不着;可能因为年龄大的缘故,我经常能意识到我在做梦,所谓 lucid dream,遇到好玩需要继续推进情节,不会太追究是否真的清醒,反而会不自觉的去脑补当前梦里剧情的合理性,所以下面很多时候是插叙。

出场大概是和家人挤在一间熟悉的高层小区的老旧房间里,惊恐的看着窗外昏暗的天空。可能因为昨天晚上打了一会FPS,加上前几天看了《Dune II》这部电影,对杀戮环节很有代入感,所以不知不觉从那里搞到了一把步枪,装满了子弹。

这时窗外突然突然钻进来一个人影,我嘀咕到,现在已经 天下大乱,是末日劫生;眼前这个如同丧尸一般爬行的人,正在扑向我的奶奶,这个人看上去非常瘦弱,我操起武器一阵突突突,放倒了眼前这个威胁。

房间被弄乱,窗边墙角一片狼藉,地上还躺着一个狰狞的 ragdoll 需要得处理,重点来了,攻击性这么的强,这个身躯却比正常人小很多,十分的瘦弱,我甚至把他身子头和腿对折,就像一张纸一样。然后单手轻松将其拧起来,像往常一样把他带下楼,扔进了垃圾桶!一个鲜活的生命就这样从我眼前消失了!

这个突然出现情况,让我心脏扑通扑通的跳,直接给我干惊醒了。半睡半醒迷迷糊糊之间,我又开始怀疑为啥会有这样的 丧尸 从高层建筑的窗户突然出现。可能是最近看了太多五代十国和南北朝之类的历史惨剧视频,我便开始就地分析此情此景的合理性,结论是——裹挟。

在古代,遇到荒年,正常的社会秩序被打破,就连最基本的粮食生产,都会遭到莫名其妙的武力干扰或者霸占。自身难保之后,所以很多人干脆一不做二不休,从劳动者变身为掠夺者。但是人总是要吃饭,饭又不会自动从地里长出来,怎么办?抢。所以就回到了开头这样的,去抢我这类正常生活在小区里居住养家糊口的人。掠夺者相互攻伐,让瘦弱得不行,饿的没法再饿的人,去小区里抢食物。因为太虚无法暴力突破正门,只能从顶楼往下爬看到打开的窗户趁虚而入。被破坏的家庭如果不幸被击垮,无以为继,没了希望和出路,又只能加入这样的劫掠行为,所以规模越来越大,直到所有人都绝望,没了最基本的社会秩序和个人尊严,只有无处不在的压迫和窒息。

我又想起来废土世界各种影视作品,想到这里感觉挺合理的,就又睡着了。。。。。。

起床之后,这个噩梦吓得不轻。以前我觉得做清醒梦太好玩了,能意识到在做梦,可以随意发挥做一些危险而平时不敢做的事,比如跳崖,比如飞行,比如暴力。不用顾及白天的压抑。但是现在看来做清醒梦太可怕了,我个人而言,能识别出清醒梦,根本原理是认识到眼前的事物不合理之处,得出只有在梦里才能发生这唯一解释,然后就开始放飞自我。但是人脑是会玩的。你玩呀浪呀,它会给你编造一个无解的噩梦,让你无论怎么选择都是一条死路。在残酷的绝望中让你大脑死机醒过来。

现实是荒诞和不可理喻的。成年人的世界是建立在一些不经意的谎言之上,所谓共同想象体。很大程度上,这些偶然和不合理性,才是给了我们短暂的幸福和苟且;纯理性构建的世界,比如我这次的梦境,如果稍有差错,钢铁一样的因果齿轮只会把你一切梦想和希望碾碎。天地不仁,未来的真实世界或许是残酷的,所以珍惜当下吧。

Posted

stderr

信息噪音时代的悲哀

书接上回,小米汽车发布以后,和家人聊这个话题,突然发现一个问题,孩子对车这玩意很不了解,也不感兴趣。

我记得我小时候,对机械结构的东西很着迷,很喜欢抱着一本杂志看这种拆解图研究半天。

虽然也没能看出个门道,但是哪个男孩子能拒绝一张精美的跑车海报和原理图呢。那个年代我可能会对着一个跑车+美女的年历发呆,可能也就是那个时候对商品社会、工业设计产生了向往和憧憬。现在的孩子们对现实中车的品牌和了解可能也就局限于身边见过的和手机上刷到的。比如我家娃最羡慕的车,是有鹰翼门可以向上开的 Model X。但是对汽车工业和跑车的认识很少,不如我们小时候那么津津乐道。

想起来我们小时候信息很匮乏,大家都通过报刊、杂志了解外部世界,特别是从没见过的欧美的汽车、飞机反而观察得特别仔细。美军飞机有多少个型号、有几首航母都是放学和下课时间讨论的话题。

现在的孩子,比如我家,对电子产品控制得比较严格,电视也没有怎么允许看,除了书本还是书本。其实对外界了解的渠道反而比我们那个时候少得多。传统的报刊杂志有一点好,第一它是每周每月更新的,第二它的编辑是有一定文化水准和见过世面的,比如介绍汽车肯定会顺带介绍下汽车工业的历史、这个品牌的成长和背后的故事。现在的抖音、b站等充斥的都是调动情绪的短期热点话题,缺乏一个静下心来去琢磨和思考的「大画面」和「大背景」,以及人们是通过什么样的努力和付出,才能「创造」出来令人欣赏和惊叹的作品。比如小米汽车,网上甚至连一个把时间线串起来,讲讲设计过程那些不为人知的故事的报道都没有,唯一采访了设计师 李田原 的媒体,居然是车托之家

采访也是问了几个不痛不痒的问题,主持人全程玩手机都不舍得正面看设计师一眼。而且视频播放量极低,压根没人能刷到

我觉得信息时代的悲哀莫过于此了。什么样的东西都能找到,但是孩子很难从这样的环境里挖掘到那些启发、振奋人心、能畅享未来的东西。也没有人会整理这些东西。喧闹的视频一看就忘,我们再也没有一张画或者文字让人细细品味和反复琢磨的时光了。

Posted

stderr

雷军 小米汽车 发布会的后劲真大啊

是的,我也在2024-03-28观看了雷军的 小米汽车 发布会。现在想起来,真蛋痛啊,花了3个小时去看了一个我不会买的产品的发布会。

我不买的原因是已经有车了,本来也不想看,结果这发布会居然没啥困场和尿点,一不小心就完整看完了。想起来平时看个长剧都困难,发布会本身轿车的东西其实我早就知道个七七八八了,居然吸引我那么长时间注意力。真是一个神奇的现象。

这几天刷到一些视频,大象主观说车 的《小米汽车发布会迪粉观后感》,他本身是个(比亚)迪粉,他说:

看完,你就会觉得,卧槽,我,我 超 想 投 米 的!我超想当米 boy 的,我超想支持雷军的梦想的,就这种感觉。(战术取掉眼镜)

雷军发布会的魔力这几天越来越上头,后劲越来越大,各个 app 也敏锐察觉到了我的兴趣,也是铺天盖地推送,比如这个就有意思

雷军真的是写ppt的大神

  • 低级的ppt就是你们经常做的,念文案、数据,圈几个关键字当标题;
  • 中级的ppt,让普通人,甚至一个文盲都能听懂,你在说什么;
  • 高级的ppt,讲一个故事,讲一个深入人心的故事,在这个过程中,说你想要说的东西。

什么是讲故事?常见的故事大纲。介绍主角团——遇到小困难——找痛点(主角团被虐)——解决小困难——遇到更大的困难(主角团泄气)——全世界就主角团能解决这个问题——解决大困难——在解决困难过程中顺手谈个恋爱,或者解决家庭矛盾——最后,坏人必死,正义得到主张,升华主题。
你们可以看看雷军如何讲su7的防晒功能。
雷军:我们做过用户调研,很多特斯拉的车主表示,夏天会不会太晒,坐在车里面像烤箱。好,我们就把这个防晒作为核心点去突破。(遇到小问题)怎么突破?
第一点,天幕玻璃,我们做了双层镀银,隔绝了99.9%的紫外线,99.1%的红外线。我们在研究这个问题的时候发现更严重的是什么?是前风挡玻璃其实更晒。(遇到更大的困难)所以,很多开车的女生都会带冰袖。为什么呢?因为前车前风挡特别特别晒。(找和普通人之间的痛点)。所以,我们甚至做了三层镀银,然后,才达到这个紫外线隔绝99.5%,红外线97.6%.这是今天轿车里面唯一一款做三层镀银的。(全世界就主角团能解决这个问题)。还有,我们把四个车门都做了uvir的图层。这个图层紫外线隔绝率达到99.9%,如果换算成防晒霜的指数,差不多相当于SPF100+,或者PA4个加的 这个程度。所以,我们在防晒上下了很多功夫。后排,我们顺便做了隐私玻璃,省得大家再去贴个膜什么的。到底有多防晒呢?那个我们做一个夏天的简单的测试。(升华主题)38度暴晒1.5个小时,我们拿su7和model3对比。结果发现,su7的车内温度比model3低12摄氏度。

然后又刷到《腾势赵长江有点可爱(孙少军直播切片)

看完之后,我感觉赵长江这样的老总可能真的学不来雷军。

赵长江1986年出生于湖南浏阳,2009年从比亚迪汽车创始人王传福的母校——中南大学毕业后,他选择了追寻自己的“偶像”船夫哥,成为了一名比亚迪汽车区域销售经理。经过数年的摸爬滚打,有了天南地北多个地区的派遣和实战经验,由于年轻好学敢想敢干,赵长江在 2015 年被任命为比亚迪汽车京津地区营销总监。

正如视频里讲到的,他们对产品的「差异性」分析特别到位,然后对「怎么打」有不错的思路和执行力,但有个问题是,各项指标就是天经地义「固定」在那里的,由供应商和研发团队「呈递」出来的现成。所以接下里的问题就是如何根据「既有」的东西,打的过就吹,打不过就降价。

我分析,销售出身的人的演讲,和雷军这样的人最大的区别就在此。可能因为雷军是程序员出身,各项指标不是「天经地义」的,而是「生长」出来的。雷军

所以你们今天看到的,是我们完全推倒,2022年初全部重做的。那个时候又在疫情期间,压力巨大。在最难的一段时间里是,我跟设计团队每天早晨8点钟一个小时的视频会,每天啊,everyday,周六周日都是。所以每一个细节我都参与过

雷军为啥能把一个三层镀银的前挡讲得那么生动?因为他可能真的参与了这个设计和决策。娓娓道来侃侃而谈就像他自己的孩子一样。所以能讲出来让人听上去很自然、有吸引力的故事。整个发布会就不是那种背后想卖你东西那种拉扯和算计,而是跟小区里阿姨们聊自家娃一样充满了八卦的话题性。

写到这里,我一直都在尽量避免一个词——营销。很多人觉得这就是一场米系的闹剧和大型新能源 ev 发布买热榜事件,因为我觉得雷军这样的show不仅仅是想让你掏30w 让他这个亿万富翁变得更富有这么简单。正如小区里阿姨们聊娃不是为了把娃卖给你一样的道理。演讲和情绪感染可能是在未来 AI 时代里愈加重要的一种能力,而雷军为代表的「开发者」背景出身的人站在舞台上展现出那种独特的魅力,非常值得学习和品味。

Posted

stderr

梦见未来人类

昨天半夜做了一个奇怪的梦,梦见一个毛毛虫在墙角制作自己的关节,一根棍子,中间一个关节,可以对折,看似还是金属或者塑料材质,完工了把关节拧一下,就给自己装上了。。。太过于惊悚于是就醒了。

起床开始琢磨,可能是睡前刷B站,看到一个人才UP主 知名相声演员BBBBB大王 刷了她不少视频。她南京人东北上大学,父母来自四川,被催婚和生娃问题搞得很崩,在英国和韩国奔波,视频风格别具一格。关于韩国那种不婚、人口负增长、内卷的视频特别多,比较有趣,看了不少。总体意思说,韩国的女性有自己的经济地位后,就不结婚生娃了。不用看男人成见就自在活着多好。

我感觉BB说得相当有道理。但是人口没了之后,未来的人类怎么办呢?这可能是潜意识留下的一个疑问然后就睡着了。

越想越觉得,这个奇怪的梦说不定就是潜意识的答案。未来人类说不定很有可能走虫族路线。首先按照现在的剧本,人类对自己身体和外表越来越不满意,对美的追求,个性的改造越来越多。自然界谁的改造最彻底呢?虫蛹的蜕变。谁不想从一只毛毛虫变成有翅膀到处飞的蝴蝶呀。说不定未来能制造出合成材料,给每人安装一对翅膀?

但是成人动刀子改造背部结构,后加翅膀问题太多,说不定臂力不足大多数人人飞不起来,飞行也需要巨大的呼吸器官改造成本否则供能太弱,飞不太久。最好的办法就是从胚胎开始重新设计肢体结构。BB的有一部说自己XS的身材居然淘宝买S都觉得小了。明明她自己都只剩下bone了。说起来,成虫就直接没有脂肪,直接bone就暴露在外边吧?大家都一样的流线型bone,不存在身材歧视。

既然都可以自定义设计人体四肢了,干脆全部身体结构推倒重构吧。人全身上下全改造了,保留啥呢?保留一个头作为意识留下吧。

所以未来的人类可能是:女性就不要怀孕受累了,人工授精+人造子宫,生出来一个基础款的肉体。社会教育给与起步款的灵魂之后,这个「幼体」就得去搜集改造自己的营养和原材料,然后时机成熟之后,做一个「虫蛹」然后把自己封印起来重新改造。改造完之后就「变态」为高级形态 b( ̄▽ ̄)d 

这一套机制最大的问题就是,改造人不能自我复制。如果基因改造有突破,能自定义编辑,那么很多人可能会选预设一套3D打印机,人生下来就真的可以外观类似毛毛虫,到处爬行去自动拾取有机物、无机物矿物质,然后疯狂积累原材料到足够改造自己的身体之后,找一个安全的地方造蛹,然后打印身体。最后破蛹而出参与生殖都斗争和扩大领地,然后继续繁衍。。233333

胡思乱想的。如有冒犯,梦境全责!

Posted

stderr

快速入睡的技巧和原理

随着年龄的增长,加上工作和生活的恶习,睡眠越来越不好。很多时候躺在床上明明已经非常困了,但是大脑一不小心陷入胡思乱想,然后越想越睡不着。

很多人说把大脑放空就能睡着了,我也试过,放空是不可能的,大脑时时刻刻总得琢磨点什么;既然要琢磨点什么,那我们能否找一部分最容易睡着的来琢磨?这几年我倒琢磨出一个非常行之有效的方法用来入睡:

停止理性推演!强行带入感性的、放松、舒服的回忆体验占据大脑活动

具体展开,首先我这里对睡不着的「胡思乱想」作了一个二元分类:

  1. 一种是「理性」,逻辑推演:工作上的任务如何完成,生活中的矛盾如何化解,职业和家庭面对的困难,身边人群的压力,社会环境如何改进,民族国家的命运如何?电车会是能源革命吗?巴以冲突俄乌战争如何化解?等等,这类胡思乱想基本模式是「因果」:如果我做到A,那么B就会发生;如果我避免C,那么D这个糟糕的结果就能挽回。这类事,千万不要躺在床上想,否则越想越气。
  2. 另一种思绪我们称之为感性,温暖的阳光下微风吹过皮肤,恋人的手轻轻搂着你的腰,碧蓝的海平面上星星点点的船帆,你躺在椅子上无忧无虑的闭上眼睛享受这一切,只要把自己带入这种你亲身经历过的让你舒服,放松的体会中,假想你现在正在亲身经历这种愉快的事,那么你很快就能入睡。

或许,有人会说我命苦啊~没那么多享受可以回味。我之前也是这样,总觉得过得很匆匆没这么留下的美好回忆,有一次下班路过郊外,看到天边块落山的太阳,光线没那么刺眼,橙红色的余晖给白云描了个边,倒影在一处水塘里,没有了中午那么热的暴晒,微风刮过岸边那些稀稀拉拉的花朵和绿树。感受到美的瞬间迫使我立刻停下脚步,找个草坪坐下欣赏并且仔细观察,深怕错过任何一个细节,我当时决定把这个时刻深深记录在脑海里并反复加深印象,以备将来再也遇不到了。后来这个「场景」的确帮助我度过了很多个艰难的夜晚。

要训练这个区分能力没有想象那么难,但需要长期的刻意练习,大脑胡思乱想的时候很容易不自觉陷入「理性」部分,要想睡觉,就得避免。不要尝试去思考「why」。时刻对当前的大脑活动行为进行「鉴定」和归类。对事物分析、解释和总结类的事,躺着就不要去想;一旦躺下,就多回忆和假象一些「体会」和「感受」。需要额外注意,情感的大类里,有一种叫做「害怕」和「忧虑」的东西,也要特意避免,Zizek说过 “The only emotion that doesn't deceive is anxiety”,焦虑是惟一不骗人的情感,这句话的意思是,焦虑的本质是理性和归因分析,而不是情感,所以它很「真」而且很「重」。入睡这种事就不要当「真」啦,想点轻松愉快的骗骗自己做个美梦不好么。

对思绪的简单的二元分类并非我独创,Popper的第三世界《思考快与慢》里 I、II型系统都有类似的阐述。这个入睡方法是我无意中实践出来的,可能是早年无聊特别喜欢对思辨本身进行思辨,二分模式归类,睡不着是因为大脑老是琢磨事,我无聊得琢磨起琢磨本身(meta-琢磨?),于是逐渐琢磨出一个辅助入睡规律。

今天刚好看到另一个研究:德国蒂宾根大学发现,合理利用睡眠,可以提升一个人的决策能力

研究过程是,招募一群8到11岁的孩子,给他们看一组很吓人的照片,比如凶猛的动物之类。当时,几乎所有的孩子都被吓到了。之后,把这些孩子分成两组,第一组让他们回去睡一觉。第二组,让他们通宵玩游戏。
第二天,再给这些孩子看这些可怕的照片。结果发现,睡觉组的孩子,可以相对平静地观看照片。他们显得没那么害怕了。而通宵游戏组的孩子,被惊吓程度,跟前一天几乎没有区别。
研究人员认为,这就是睡眠的作用。睡眠就像一个过滤器。当我们面对一件事时,大脑的逻辑系统和情感系统,会同时运转。比如,看到一条毒蛇。你既会产生逻辑上的识别,记住这条蛇的基本特征。同时,你也会产生情感层面的反应,也就是害怕。
而睡眠的作用,就在于,过滤掉其中情感的部分,保留逻辑的部分。因此,睡觉的孩子再看到蛇时,他们就不会那么害怕,只会记得,这条蛇昨天见过。而通宵组的孩子,这个害怕的感觉还在,他们再看到蛇时,还会很害怕。
这也是为什么,很多人晚上一上秤,发现自己胖了,发誓第二天早上要起来跑步。但第二天却起不来。这就是因为,你立flag时的激情,被睡眠给过滤掉了。这也是为什么有人说,睡前千万不要立flag。
把这个结论再延伸一步,研究人员认为,假如你做一件事时,在很大程度上受到情绪干扰,那么你最好先去睡一会儿。这能帮助你更好地集中注意力。
比如,要不要创业?不创业,觉得有点虚度青春。创业,又有点患得患失。这就是受情绪干扰太多。按照这个研究,你就应该先去睡一觉。让你的情绪脑先冷却下来,睡醒之后,再用你的逻辑脑仔细想想。
其实,这个研究可以用一句话概括,不就是,一日之计在于晨吗?也就是,把需要动用逻辑思考,需要计算,需要做计划的事情,尽量放在一觉睡醒之后。

所以睡觉就睡觉,别想那么多。自然就能睡得着了。本文也用来回答V站提问《如何在睡觉的时候不胡思乱想》 。 转载请注明来自est的博客 https://blog.est.im/2024/stdout-05 ,如果觉得对你有用,给我留一句评论是再好不过的了 😊

Posted

stdout

执行一次 try ... catch 收费多少港币?

@oasisfeng 10:53 PM · Mar 6, 2024
无意中发现香港某银行前些日子从我的账户里扣了 150 港币「自动转账退票手续费」。
电询客服,对方和蔼地解释这是签约的自动扣款服务因余额不足转账失败,产生的手续费。我诧异的问,你们行在自动转账前,难道不确认余额的吗?
对方继续和蔼地解释,这是香港银行规则,跟你们内(乡)地(下)不同。

@navimoe 11:26 AM · Mar 7, 2024
感觉美国银行也是这样的。银行还有专门的 overdraft protection 服务可以 enroll(虽然也有一堆坑)。

@233vc 11:57 PM · Mar 7, 2024
以前确实是,疫情期间CFPB保护穷苦大众已经勒令银行不许收overdraft fee了,现在大银行基本都不收。

@navimoe 10:38 AM Mar 8, 2024
这个我倒不知道。不过搜了一圈只看到今年 1 月 CFPB 搞了一个 proposal 要给 overdraft fee 加 cap。
https://www.nytimes.com/2024/01/17/business/cfpb-bank-overdraft-fees-rule.html

@233vc 10:58 AM · Mar 8, 2024
大部分银行自愿停收是2022年的事
https://www.consumerfinance.gov/data-research/research-reports/vast-majority-of-nsf-fees-have-been-eliminated-saving-consumers-nearly-2-billion-annually/
CFPB在2023年底的调研结果,绝大多数银行都停收了,你说的2024新规定应该是针对顽固死硬派,predatory黑心银行

@oasisfeng 11:28 AM · Mar 8, 2024
Replying to @GWMs2100 and @greenbananayy
香港比较多的是参考英美的银行体系规则。
只可惜英美银行都懂得与时俱进,陆续停收了这种汇票时代沿袭下来,在计算机自动处理的今天明显不合理的收费。香港的银行还赖在这个「法统」上继续敲诈客户。

@MoonAtCloud 12:51 AM · Mar 7, 2024
当年的支票时代,从一个美国银行账户转一笔钱到另一个银行账户的过程相当复杂。不仅是到账时间三个工作日起跳,还要防止支票造假欺诈,空头账户欺诈,支票回滚欺诈。那时候完全没有现在的网络连接便利,各银行机构确认任何信息都非常缓慢。
成百上千个银行之间如果都建立支票验证功能,几乎是一件不可能的事。于是美国几大银行先建立了一个支票清算中心,有点类似中国的银联,所有资金清算都通过这个清算中心进行,很多中小银行也赶紧申请加入。
支票的可以理解为“支付指令票据”,它上面某个地方一定有写“见票即付”这几个字。这就是支票这张纸内含的信用和权威。
为了维护这个信用和权威,又避免欺诈,支票收票银行需要得到支票发出行的两个确认(一要确认票面为真,二要确认账上有钱)。于是清算中心就来完成这个任务,第一步,支票会有清算中心转寄到开票行,开票行回复支票的真假,如果是假的,清算中心回复收票行,你被骗了。
如果是真的,开票行会验证账户上有这笔钱,并且冻结了这笔钱不能它用。然后回复清算中心,我“保证支付”。收票行有了这个保证,会给存支票的人一个小小的额度。比如,你存入一张十万美元的支票,第三天起,你可以使用其中的两万五千),第十天起,你可以全额动用十万美元。说明第三天验真成功,第十天清算成功。
有些骗子除了假支票诈骗,还会搞一个支票回滚诈骗,就是抓住了验真和清算之间的小小空隙,让银行出现错误,所以美国刑法有专门条款防止这种“银行欺诈”。
至于银行为了保护自己,收取的账户透支Overdraft费,其实是为了避免善意透支的一种警告。
我自己就出现过一次这种“透支”。美国银行每个人可以有两个独立账户,一个叫做支票账户,用来开支票,这个利息几乎为零。另一个叫做储蓄账户。这两个账号各自有独立的账户号码。
我接受了一笔其它汇入我储蓄账户的钱,同时我开出了一张支票,结果,虽然储蓄账户有钱,但支票账户钱不够,结果被收票银行退票。
我马上把储蓄账户的钱转到支票账户,但时间来不及了。最后,亲自到开票行柜台解释,免除罚款,银行建议我开通了一个自动补偿协议,支票账户余额不足自动从储蓄账户补齐。
又跑到收票行解释为什么是空头支票。好在我这张支票是自己开给自己,被认定为同名转账。不存在欺诈行为,于是免除了罚款。
最后的操作是,没有再开个人支票,而是跑到开票行柜台开了一张银行本票(这种银行开出的本票信誉较高,在开票同时就冻结了要转出的资金,绝不存在空头支票的情况)。然后把这张支票送到收票行存入(收票行依然要通过清算中心验真这张票)。

原来一句 try ... except 要收费150元一次。。。在互联网苦苦思考如何挣钱,没想到在金融行业这么轻松

Posted

stdin

HN锐评农民:Being a peasant sucks

如果要用短短几句话描述为啥当农民很苦,还得用英语,今天看到了这段很有力量的文字:

Being a peasant sucks. It sucked then and it sucks now. Trapped, in an infernal machine designed to keep you anchored within 7 kilometers of the room in which you were born.
You live in the same crumbling leaking house that half your extended family has lived in for over a century, marry who you are told to marry, learn only what the local preacher tells you to learn-- and nothing else.

翻译一下:

当农民苦,过去苦,现在也苦。束缚在一个永无天日的体系里,从出生就锚定在方圆15里路的天地里;一家子和乱七八糟的表亲挤在同一个又破又漏的祖屋里几十年,在当地村小混个也不知道有什么用的毕业证,服从长辈的意愿找对象结婚——就这样过完了一辈子。

大山的引力,盐碱地的苦根。

Posted

stdin

1900年居然不是闰年?

看HN讨论 昨天2024-02-29有哪些闰年的bug,有一个吃惊了

>>> datetime.datetime.strptime('Feb 29', '%b %d')
ValueError: day is out of range for month

python的 datetime() 默认 year=1900。但是心里想 1900 不应该也是闰年吗?

查了下还真不是。囧。一年有 365.242374 天:

  • 近似看成 365.25 天就是4年一润;
  • 剩余的精度 365.25-365.242374 == 0.0076 天
  • 而且,0.0076 ✖️ 400 == 3.0504,也就是每400年要少润3天
  • 结论就是每100年不润,但是每400年又要润
  • 比如 1700, 1800, 1900, 2100, 2200, 2300, 2500, 2600 这些年都不是闰年。2000、2400是闰年。

真复杂!

Posted

stdout

小米14Ultra的「陶瓷」风波

zhihu给我推了个讨论 小米14Ultra 的龙晶陶瓷究竟是不是陶瓷? 各种讨论都吵上天了。。

有个评论挺神:

归璨 2024-02-29 10:10 你去超市找店员要袋盐,回家发现里面装的贝壳粉。你去找他,他说碳酸钙就是盐。说的没毛病,但是人有毛病

囿困不会困:
首先我要纠正一个观点,陶瓷玻璃和透明陶瓷不是一个东西。陶瓷玻璃是指通过往玻璃内掺入氧化锆氧化铝等晶体,以改变玻璃物理特性,这种做法,在玻璃内部是晶相跟玻璃相共存。而透明陶瓷是纯粹的多晶体。我个人对于这项技术的判断是小米用的陶瓷强化玻璃类似小米10ultra上出现过的工艺,不管是真机触感还是实际硬度都偏向陶瓷强化玻璃。有意思的是这次小米14ultra的后盖供应商没有看到我们非常熟悉的潮州三环而是由蓝思科技提供。潮州三环是目前全国最大的特种陶瓷供应商处于行业垄断地位,之前的小米mix华为p40Pro+,mate60rs以及小米13的陶瓷版本,都是由潮州三环提供的氧化锆陶瓷后盖。而说到蓝思科技就更有趣了,巧了,蓝思科技正好是苹果超瓷晶面板的供应商,对于苹果的超瓷晶玻璃,其实是有比较详细的技术分析的,明确确定属于陶瓷强化玻璃,在蓝思科技的财报中提到过他拥有独家专利的双晶体置换工艺。苹果的超瓷晶面板是蓝思科技在由美国康宁提供的硅铝酸盐玻璃的基础上,通过氧化锆和氧化铝晶体置换生产的,具体制备流程还处在保密阶段,目前论文并没有公开。对了,正巧,氧化锆陶瓷密度在5.9-6.2之间,硅铝酸盐玻璃只有3.2左右,差不多正好和发布会减重50%数据对上了。当然至于具体要给他下一个定性那肯定还是要搬到实验室上电镜,但是就算如此,我在国标中似乎也没有翻到相关的规定,我能查到的跟陶瓷有关的国标,不管是关于瓷砖的还是关于食品容器的,都没有提到对其要求的晶相占比。而以上对于陶瓷和玻璃的定性,事实上都只是在材料学领域对它的定义而已,并没有所谓的国家法律做支撑。如果有朋友翻到对玻璃制品和陶瓷制品明确划分的国标法规,那么也希望有人可以分享一下。

衫の青衫:
大概从玻璃到陶瓷有四种。普通玻璃,微晶玻璃,透明陶瓷,普通陶瓷。这四种材料之间分界还是比较明显的。
首先,普通玻璃,非晶体,易碎。
微晶玻璃,非晶原料经由高温高压受控晶化,最终产品里结晶相和玻璃相都有,比例不定。
透明陶瓷,高纯度结晶体经由高温高压过后生成的几乎没有微气孔的陶瓷
普通陶瓷,不用过多解释了。
客观来说,微晶玻璃确实可以算是一种陶瓷,玻璃陶瓷就是同一个东西的另外一个名字。材料学上一般认为有明显的晶体结构就可以算是陶瓷了。所以说包括苹果在内,超瓷晶面板,昆仑玻璃,龙晶玻璃这些所谓“玻璃”,确实可以说是陶瓷。实际上,超瓷晶面板的英文原名,就叫做“陶瓷前护板”。
但有两件事一样是很重要的。
第一,玻璃陶瓷和透明陶瓷有本质区别。虽然最终的产品都有很高比例的结晶相,但是玻璃陶瓷的结晶相是后天形成的,但是透明陶瓷的原料就是结晶体。这回很大程度上影响最终产品的性状。也是基于此,14u后盖的材质应该大概率就是玻璃陶瓷。如果有人说这是透明陶瓷,请纠正一下。
第二也是最重要的,消费者需要的从来都不是“陶瓷”两个字,而是传统意义上陶瓷带来的高硬度和温润的手感。这才是最本质的需求。很明显,龙晶陶瓷在这两个方面都是没有做到的。这样为了陶瓷而陶瓷的营销行为是非常下头而且不负责任的。
最后附加上小米龙晶陶瓷的一些数据:龙晶陶瓷的结晶相含量在90%以上,玻璃相的比例不超过10%,这部分玻璃相主要用于化学强化中的离子交换。

土遁丶酸化压裂之术
这是2020年的,苹果在今年iPhone 12全系列上都使用了“Ceramic Shield超瓷晶面板”,即屏幕表面的特殊玻璃,不再是以前的康宁大猩猩玻璃了,而是一种新的工艺技术,并在发布会上进行了着重介绍,这种新技术仍然来自康宁公司,得益于硬度比大多数金属还要高的纳米级瓷晶体的引入,使得iPhone 12系列手机的屏幕硬度大幅提升,配合平面圆角航空铝中框,整体的耐摔程度达到了上代产品的4倍,网友们直呼可以用来砸核桃了。

小驼233
苹果官网切成英文,苹果原文就叫Ceramic Shield,直译就是陶瓷面板,只不过中文翻译叫超瓷晶

所以吵来吵去,原来核心矛盾是中英互译导致的问题。Ceramic Shield 里的 Ceramic 一词可以有2层意思,一种是本意「陶瓷的」,另一层意思是「陶瓷风味的」、「陶瓷般的」。这个 -ic 形容词后缀就很传神。甚至你要较真,只要把一坨泥放到窑里烧了一轮加固了,都可以算「ceramic」。词典里是这么讲的:

made of clay and permanently hardened by heat

搞了半天,这不是材料学问题,而是 sematics 语义问题。哈哈哈。大厂的ppt造概念和kpi高手们,你们骗中层、骗高管、骗下属可以,别把自己骗了。搞得一地鸡毛还得法务和公关来给你们擦屁股。

Posted

stdin

穷人的supervisor OOM killer

厂里的docker上跑了个supervisord,用来把挂掉的进程拉起来。最近的问题不是进程挂掉,而是内存泄漏

跑着跑着内存爆了,然后宿主机OOM随机杀掉一个进程,结果占用内存最大的那个还活着,正常的进程反而gg,该漏的继续漏,然后反复OOM。想看下哪里漏了,--cap-add=SYS_PTRACE 也不给加,OOM策略也不给调,思来想去只能自己做防水补漏了。做起来也简单,supervisor再跑一套bash脚本即可:

while true; do
  p=`ps --no-headers  -xo rss,pid --sort=-rss | awk '{
    if($1 > 1000000){ print $2 }
  }'`
  kill $p 2>/dev/null || echo "everything fine";
  sleep 60;
done;

1000000 代表1G 内存。 sleep 60 表示 每60秒检查一次。

Posted

stdout

Windows 任务管理器(taskmgr.exe) 作者讲趣闻

下文出自 Windows 任务管理器(taskmgr.exe) 作者 Dave W Plummer

Windows 任务管理器(taskmgr.exe)趣闻:“保持简洁”

当你按下 Ctrl+Shift+Esc 时,winlogon 会启动 taskmgr.exe,并且它首先会寻找一个正在运行的进程实例,如果它通过了某些运行时检查,则激活该实例。这意味着激活任务管理器所需的时间,至少与读取exe文件的时间一样长,因此我想要保持它文件体积足够小。
故事是这样的,为了将整个东西保持在100KB以下(我记得它发布时是86KB),我无法负担得起链接CRT,但仍然想要使用C++。C++编译器假定CRT将被链接,以执行类似调用全局对象构造器之类的基本操作。因此,我最终做的是预先定义链接器需要从CRT中获取的部分,然后在运行时手动遍历链接器插入的用于初始化全局C ++对象表。基本上就算链接的时候,生成构造器列表,因为CRT不会调用它们,所以我手动调用它们。最终实现用上C++但不依赖运行时。
后来的我回顾起来为什么当时不直接链接到运行时dll,但我可能当时试图避免直接链接到除了user32gdi32之外的任何东西。我想,任何其他DLL都可能会挂掉。所以我甚至不链接到shell32,每次需要调用shell函数时我都手动进行 GetProcAddress,并且我在单独的线程上执行它,以防它返回超时。
我对这些事情花了不少心思,但至少在早期版本中,当内存紧张时,我认为这样做是值得的!如果你喜欢这些随机的历史趣闻,请关注我获取更多信息!

这位爷也有个 YouTube 频道 Dave's Garage 非常精彩!

Posted

stdin

LLM, RAG 和 Groq

最近跟朋友聊起LLM,RAG 究竟有没有用,能不能拿来做成产品或者服务。由于我对AI的了解也很肤浅,所以没太敢下结论。

但是今天突然想起一个趣事,相传 账单·大门 院士有一句名言「640KB ought to be enough for anybody」

这句话是不是他老人家说的不重要了,重要的是 IBM PC 的这个 640KB内存 的梗是绕不过去了。

后来发现 640KB 不够了怎么办?屎山上接着hack呗。于是发明了 EMM386 ,在CONFIG.SYS 里吟唱一句

DEVICE=C:\DOS\HIMEM.SYS

可以保平安。

如果人人都能用 Gemini 1.5 Pro 那个 1M context tokens, 那么 RAG 技术也没啥用了吧。猜想能用 RAG 卖钱的,估计跟定制 HIMEM.SYSEMM386.EXE 的市场一样。。。。。在 PC 普及的初期是一个神级,但是随着日本政府主导 VLSI产业+三星DRAM的崛起和价格战,一切都成了历史。


又想起另外一件事:Groq

也是啥都不懂,翻了些资料,发现比较有意思。CUDA vs Groq 可以看成DRAM vs SRAM。context window不足的问题:

疯石头 2024-02-23 02-21: Context window到100K后,即使batch=1,GPT-3级别的大模型,KV-cache占显存的容量已经比weight要大了。实际部署时batch size至少得64才能用上tensor core。4-bit quant可以降到1/4,GQA group=8时可以再降1/8,不过还是比weight要大。sliding window不可取,遗忘问题会完全丢掉long context的优势。

更详细的讲解:

https://kipp.ly/transformer-inference-arithmetic/#kv-cache

在zhihu上翻到一些资料说,LLM推理主要成本不是矩阵计算,而是 memory access。可惜帖子找不到了。

Posted

stderr