2025-02-23

从觉醒年代谈起

最近在补觉醒年代,发觉有几点细节蛮有意思的.
或者蛮值得把玩的.

一个是新青年单价2毛多.
按照0.2银元理解的话,相当于现在什么概念呢?

Gemini给的人均年收入数据在5-30银元的区间,因沿海和地区已经行业属性而不同.

按30银元年收入等价现在6k月社平工资换算的话,大概一银元等于2.4k.
那么一份新青年的售价大概就是480.

然后是李大钊给工人垫付住院费的桥段.
也是大概30银元.

不换算的话,也就是小孩住院差不多要工人一年工资收入.
换算的话,就是住院费用在7w2.

同时值得注意的是李大钊担任编辑的月工资刚好也是30银元.
也就是说当时的一个报纸编辑的月收入等于工人的年收入.

月入7.2w大概就是现在互联网干活的主力中层的收入水平.

从这点看,Gemini的数据倒也不是完全不make sense.

另外一个剧情是陈独秀拿了120银元的稿费准备给儿子.
算人均一年学费60银元的话,两年工人收入,折合现在14.4w.

另外一个就是蔡元培和陈独秀的工资.
里面提到北大offer的是300银元的级别.

月薪72w,年薪800w+,倒也算符合现在对应的互联网收入分层.
尤其是这个package是纯现金的.

于是,在Gemini的这个框架下,回头看新文化运动和新青年的社会体感.

480一份的报纸,折合60美元.
如果当作月刊订阅的话,一个月240美元.差不多就是OpenAI之类的最高订阅费用.
服务的主力提供群体是差不多年薪百万的那群人.

那么一个不太离谱的现代代换就是新青年属于鼓吹AI颠覆传统产业的影响渠道.

如果考虑和保皇派文化之争的符号变换来看的话,大概就是马斯克的X对左派传统媒体的叫嚣颠覆.
或者说是抖音渠道的AI卖课风潮.

当然,倒也不是揶揄新文化运动和新青年的意义,只是做这种转换可能会有一种更具有现实性的实感.

毕竟,如果考虑后面各自的命运归途的话,会对什么是革命和理想有可能一些不太一样的体会.

就像不管是恨国还是粉红的人,放弃年薪百万去投身一个高风险或者说崇高而直面死亡的事情,是需要怎样的使命感这件事有些比较现实的对价.

更不用说那些年薪千万的人了.

而另外的一面可能更容易陷入沉思的对一些人事的价值的重新认识或者说思考.

跳出历史来看的话,或者说从传统历史教科书里,很容易对新文化运动做出具有局限性的评价.

但是如果身在历史中,又如何能做出这些评价呢?

影片里陈独秀有学车夫吃老北京火锅的桥段.
所以你也不能说他不接地气,不了解中国.

但是当你把年收入的差距摆在那里的时候,把一份新青年的售价和普通人的收入水平放在一起评论的时候,可能就有一种不由自主的荒谬感了.

即使不把白话文之与文言文的话语钱争夺视为如今的渠道流量之争.
但从受众的多寡来说,这个命题本身就站在了一个不属于他的高度.

因为这并不是大多数人能够第一手触达的.
甚至在某种程度上决定了为什么各种主义都救不了中国的原因.

而在这种VC/投资都狂热的倾注在这个风口的时候,有人能提出走工农路线是怎样一种insight.

所以有时候你很难说历史是偶然还是必然.

当然,这些都是基于Gemini的基准收入是符合事实的前提.

作为cross check,deepseek给出了另外一组数据.
主要的差异在于除了地区要素之外,还有城乡差距.

跟剧中的编辑收入对比的话,跟DeepSeek的数据是比较吻合的.

大学教授200-400银元,编辑40-60.
城市工人在8-15银元月收入的水平,这个跟Gemini的出入比较大.

不过继续看的话,农村佃农的年收入确实差不多在年20-50银元的范围.

自耕农的收入会高很多,在50-100银元的年收入水平.
不过这部分应该属于后面所说的小地主/富农.
毕竟是自有土地.

按绝大多数人口是农民并取55下限的话,倒也不能说是错的.

总的来说,可能对于沉默的大多数这个表述需要有更多的角度看待.






2025-02-08

聊聊Parquet

最近backport一个iceberg的读feature回一个比较老的presto版本,发现一些比较legacy的bug.
尝试重新实现绕过的时候,发现了parquet的另外一些比较有趣的事情.

设计上来说,parquet的column chunk里是可以记录min/max和num of null values的统计信息的.
这个也是parquet被广泛利用的一个特性,可以用来跳过不必要的io.

看的时候发觉是支持某种程度的udf的.

也就是说像like之类的模糊查询理论上也能够做一定程度的filter.
毕竟原生的operator是不太支持这种查询的.

不过测试的时候发现一些其他问题.

比如读取的时候其实是支持重新指定schema,也就是只读取/project部分column的场景的.
但是因为project的时候的一些逻辑会导致如果project的列里不包含filter条件的列的话,这个filter是会被丢弃的.

一个例子就是比如逻辑上有
select a from table where b > 0 
这种查询.

如果执行引擎只project了a,那么在parquet的io层面是不会触发b>0的过滤的.
连带的执行引擎对io返回结果的假设就不成立了.

这个行为要修倒也不太难.
只是一定程度上来说是个breaking change.

因为从另一个角度来说,返回的结果集存在一个invisible column产生了影响.
从而使得从查询引擎的角度来说,一些假设可能会被推翻.

当然,这个取决于各个上层查询引擎的执行计划构造和pushdown的完备性/防御性了.

不过这里倒是引申出一个问题.
当前查询引擎的pushdown设计是否应该更改为pull-up模式.

毕竟现在流行的一个概念是io设备/存储带有一定的处理能力.

pushdown的本意也是历史原因查询引擎的设计没有考虑到io/存储设备具备这些能力,所以才从优化角度产生了特例进行pushdown的.

如果说一个全新的引擎从设计之初就是考虑了io设备层面具有filter能力的话.
那么相应的就是对不支持的设备的pull-up/fallback机制了.

也就是从
project <- filter <- scan
直接变成
project <- filter-scan
形态.

不过从optimizer的角度来说,似乎是没有区别的.
毕竟在一个嵌套的比如sql查询当中,filter条件可以存在在任何一个层级.

如果按照这种storage with filter的设计的话.

一种是需要把每个subquery也抽象成某种storage,因为这种才能嵌入filter.
但是这样就会造成某些可以在io层面做的filter没有办法push down到io/存储设备.

另外一种是构造独立的intermediate/query区别于最底层的storage io.
但这样同样存在相同的无法push down问题.

而如果把pushdown交给optimizer做的话,就不是pull-up/fallback的本意了.
因为实际上还是存在一个pushdown的优化逻辑.

这样从设计上来说,pull-up/fallabck就成为一种鸡肋了.
无端引入了一种不必要的优化规则.

另外一个比较chaotic的特性是几乎随处可侵入的meta/key-value特性.

虽然目前看着现成的reader框架里是没有接口可以侵入利用这些matadata做进一步复杂的filter动作的.
但是读取的parquet信息里,这部分数据属于read once的东西,而且是required的必定会读的部分,要从代码层面侵入的话,倒也不是很难.

只是从规则上来说,如果真的对这种filter有需求的话,还是能够合并进统计信息里成为正式标准会比较好.

毕竟前面的一些magic特性已经足够让执行引擎对io结果的不确定性打上一定的问号了.

不过可能parquet的人也意识到这个问题.
在metadata里有一个特定的created_by字段.

这个初看可能觉得可有可无,但实际上算是一种变相扩展版本提示.

毕竟根据created_by就知道文件生产的vendor是谁,具有哪些特性是可靠可依赖的.

倒算是一种可扩展性/可玩性很高的设计了.

再一个可能就是生态性方面的问题了.

在写一些测试demo的时候发觉如果真多low level地取读取parquet文件的话,column nested/repeation之类的处理还是挺繁琐的.
而使用稍微一些high level的api的时候,又回发现avro的身影.

原因也简单,毕竟column io最终呈现回给调用方的high level api的结果一般就是通常的row oriented的record.
所需需要选择一种input/output的序列化格式.

问题在于不同的application需要的record类型有差异.

parquet自己选择的是avro.
iceberg这里类查询存储引擎因为面向设计的不同存储类型和文件结构,所以需要有自己的StructLike类型.
spark也有自己专属的Row类型.
presto则是自身对应更高阶递归的数据类型,而且还是此之上又加了一层自己的rowgrow/page/chunk概念.

这就是导致了诸如presto<->iceberg<->parquet的链路会存在很多反复同质又异构的类型拆装.

这个时候人类又才会重新认识到Arrow这类项目的光辉之处.

虽然Arrow的API也是挺low level的就是了.

不过至少提供了一种理论上可能更有的传递路径.

毕竟从结果/实际上来说,现在的大部分查询引擎都是面向column chunk的.
即使实现不同,但概念相近,data pipeline的基本unit也差不多是以这个为基础的.
所以如果能趋向同一个统一格式的话,多少还是会有些生态价值的.

不过从性能的角度来说,有多少好处,有没有好处倒确实挺难说的.

毕竟除了io之外,各个系统之间的memory allocator能不能也一统也可以是个影响因素.
如果不能互通的话,copy transfer还是避免不的.

这种情况下可能统一格式带来的收益就微乎其微了.




2025-01-19

谈谈仿制药

下午查了下关于仿制药的一点东西.

首先是关于一致性定义的相关文件.

简单的Google一般会指向NMPA/国家药监局的一些关于 化学药品注射剂仿制药质量和疗效一致性评价技术要求 的相关政策公告或者是更早期一些的关于这个文件起草意见稿.

一般理解的西药就是指化学药品.

这个文件本身的内容并不多.
基本上在在描述成分加工以及储存过程中跟原研药的区别比例控制.
其中关于稳定性方面的要求除了储存方面,针对注射类还有一些长期稳定性方面的要求.

对于争议比较大的临床效果方面的一致性要求,这份文件也只是比较含糊暧昧地在稳定性方面提及了临床陪伍方面的稳定性要求.

从侧面来说,这至少说明在一定情况下,还是有对应的临场效果要求的.

不过从另外一个层面来说,仿制药作为药品本身上市也是要有临床试验支持的.

所以从这个方面来说,仿制药的临床效果争议问题上,多多少少是有一些隐含的上下文限定的.

在看关于特殊注射剂的习惯部分的时候,一致性定义里有比较明确的关于质量的定义.
里面提到了对于商业批量的样品应该进行BE或者临床试验.

按照通俗的法律理解,应该对应的属于一般强制性要求.
也就是说一致性评价里要么需要有BE试验结果,要么需要有临床试验比照数据.

只有在这两个或条件下也满足误差范围才称之为均有一致性.

而所谓的BE试验时指在给定有效制剂成分分布一致的情况下,药代动力学的人体表现也具有一致性.

通俗的理解就是在成分一样的情况下,人体对仿制药和原研药的生物代谢过程具有一致性.

这个代谢过程一致的指标可能也是大多数人比较明确的药物在人体内的浓度曲线变化.

所以从这个角度来说,如果在成分和浓度曲线变化一致的情况下,疗效存在明显差异,那么这方面的争议结果对于常见的西药之于中药的有效性论述论据是有一定影响的.

毕竟你不能在一个地方是绝对的成分决定论支持者,在另一个地方就是一个相对有所保留的成分异见者.

实际上,使用效果的差异性可能更多地来源于包装制作工艺的区别.

这倒不是说仿制药和原研药就存在质量差异 .
而是这里存在一个比较隐性的错误推动.

目前在谈论药品一致性评价的时候通常说的是前面所提及的成分和代谢特征的一致性.
它并没有对药理的发生作用的过程做约束.

也就是说,即使作用机制相同,但由于非核心有效物质以外的所谓辅料的差异,导致在人体内产生释放作用的机制存在差异.

一个简单的例子就是对于胶囊或者有肠衣的药品,因为这些包裹物的制作工艺差异,对于酸碱度和融溶的机制作用和时间长短存在差异,导致了有效成分释放到人体内部的实际起始作用时间有差异.

这样就导致了同样的医嘱对于不同的药品存在结果上的差异.

这种对于一些需要连续给药的场景带来的差异可能就更加明显了.

所以从这个角度来说,仿制药和原研药存在差异倒也不能说是错的.

毕竟两者在服用实践和方式上可能并存在一个可复用的过程.

只是这多多少少有一些隐含的上下文差异在里面.

另外一些就是关于数据方面的.

一个国内仿制药在2023年算是有一个爆炸性增长,新批准上市的大概增长了75%左右.
这个大概对应着当年A股医药市场的火爆.

根据市场份额和领域分布来看的话,大多数的新增仿制药集中在心血管方面.

而相对的国内新药多数集中在抗肿瘤药物.
这个跟国外药企的进口部分是存在一些共同之处的.

比如有段时间比较热点话题的诺和诺德,有相当一部分的利润来源于进口的抗肿瘤药物.
中国在其全球市场中应该算是有一个比较大的比重.

未来可能多多少少也会有一些争议.




2024-11-30

爽文

去看了好东西.

坦白说,多少是带着点挑刺的味道去的.
毕竟打着爱情神话和女性题材的气质,多多少少是热度为先了.

看完之后倒是有些新的想法.

某种程度上来说,现在的年轻人或者说声音就像小叶.
只要说点贴心的话就能哄好.

也是那种可以不用很努力了.
留在自己的舒适区避难所小圈子抱团就好.

也并不是说这种知足常乐有什么问题.
但是另一面的小孩特性,或者小孩的另一面特性倒是颇为推敲.

影片结尾的live house镜头叠加学校正式乐队的场景,本以为是打算玩那种不同选择不同mix的手法.

可能是民谣/摇滚背景乐叠加体制一本正经的管弦交响乐团,穿插地下乐队和大会堂表演的对比.
来营造某种不同精彩,甚至哪边更精彩的叙事.

事实上,倒确实也有一点这个意思.
在乐队现场的各种鼓励应援和礼堂里早退刷手机聊聊无几关心的场景的几个镜头.

但是可能不知道是出于什么考虑,这个演绎嘎然而止.

并没有期望中的像之前一样抖开心麻花版的段子,对比一边对成功与另一方的可能落寞或者滑稽.

于是当你想批评它支持非主流叙事的时候,倒显得有点底气不足了.
毕竟这边某种程度上的成功来源于这种张弛有度,或者说左右横跳.

一个比较有意思的点就是女主这个形象的树立.

影院里比较多的大笑也来源于跟她有关的一些场景.

形式上来说,或者说表面上来说,她在构造一个某种形态上典型的进步主义女性视角.
坚强,有能力,叠加单亲开放,以及设定上就是女权运动调查记者的身份.
可以说是属性点满.

观众之乐于敞笑大抵也是来源于这种大女主特性.

然而比较微妙的是当你把铁梅性转一下的话.
大概在出场的几秒就会被评价为爹味普信与油腻了.

有趣的是,导演或者说编剧倒也似乎有意无意地在提示这个关系.
以至于开场在入职点评职场的时候,就直接植入了油腻这个词.

所以当后面连续有意无意地给90%荒谬的衣服似有若无的反复特写的事,多少是有些会心一笑的.

就像你深究设定上从调查记者到自媒体爆款小编的转变也多少有种二度的讽刺在里面.

一个借主编口说的无情的10w+机器,以及眼镜小妹对于出差即旅游的肯定.
叠加直播从invisible women遮脸到复刻直播卖爆款剧本的转变.

让人多少会在女性主义的意义背后打个问号.

尤其如果同时把前夫也性转的话.
大抵就是一般备受口水的丧偶式婚姻和雌竞问题.

从这个角度来说,剧中的男性角色反而更像是一种变装的二度讽刺.

包括前夫的女权理论演绎,以及重复两次的结构性问题.
尤其是鼓手在床上看小肚子的极其女性化风格的演绎.

当然,你也可以理解为是尝试用男权的角度去重放和构造女权语境.
但是显然的,欢乐的观众可能并没有想那么多.

只是觉得是一个颇为爽朗的笑料集合.

角色聚餐的饭桌情节某种程度上来说属于全剧左右横跳的巅峰.
一边是雌竞和女主位的男权女性化视角.
一边则是小孩的反复不想打拳.

交织在一起你很难说是在讽刺什么.

所以有时候觉得,这个剧的Her其实更多的可能是指小叶.

一个本质缺爱就把爱寄托在一切驯服自己的事物上.
外表的不羁叛逆更多是有意无意的跟过去的切断.

就像跟铁梅谈论的时候,自己也不自觉地对母亲时候爱过自己产生怀疑,却又咬死不愿承认.

于是,当你回想第一次说要带小孩的时候,一边受着铁梅扮演的stereotype啰嗦老妈的形象,一边欢乐地送出门喊出妈的注脚的时候,会对编剧的这声妈到底有没二重意思产生遐想.

还有一点比较有意思的是电影中谈电影的部分.

一边是贾樟柯是名人但nobody cares.
一边是对山西平遥之于法国类比的揶揄.

你很难捕捉到这种淡淡的自嘲里,透露的是导演什么样的一种心境.

联想结尾登场那个经典背光造型和时不时穿插的歌曲.
无时不在暧昧一种难以言喻的界限感.

尤其如果考虑四字弟弟在此刻只配作为一种笑料辅佐,而泰勒斯威夫特则承前启后作为一种励志形态.

所以从这个角度来说,牵扯爱情神话倒也不算太离谱.

如果说徐峥是把市井气变成了某种艺术形态的话.
这片大概就是把精致进步打包成了一种可消费的商品.

在一个在即使可以对大多数女性羞辱议题说不的同时,精准地保留了未出过国的原始羞耻感.

这片就像医生之于小叶,除了提供一种难以言喻的情绪价值之外,更会营造一种自己很重要的氛围.

然后可能更诛心的是,没人会那么有空在意你这种戳破意识过剩的句子确实在结尾由小叶本人说出.

可能这也是这片有意思的一点.

在所谓被作为现代女性意识对立面的各个角色形象都有意无意地也在塑造某种醒世名言.

甚至于医生在阳台上的最后一句台词也颇为值得玩味.

毕竟爱就行了.

就像可能很多人曾经嘲讽起点爽文,乏味龙傲天,看不起霸总小视频一样.

多多少少,每个人都在享受属于自己的一套爽文.






2024-11-24

能用就行

前段时间做一些小性能优化相关的东西.

然后想起了go的benchmark工具.

起因是spark/scala的一个json解析的micro benchamrk问题.

一个utf16转ut8的过程总是有着不到7%左右的差距.
后来同事提醒一个allocation的细节才明白缘由.

大致就是特定test case下,一个缓存开启/命中带来的有没有新allocation的一个副作用.

想到go是因为想起go的benchmark,相比jmh的throughput模式,还多了alloc的相关统计.

大概这就是所谓的工程细节.
成熟度和经验的一些不显著的不易被察觉的点.

如果对应的jmh有相关指标的话,可能就比较一目了然了.

然后其他的也是一些micro或者说对应scale范围下才显现的问题.

一个是scala的type check和类型推导的问题.

代码和语法层面的显示typecheck/cast带来的安全性comfortable的代价是一些runtime时候的性能损失,根据写法的不同有些还是不是neglectable的.
而换一些写法让compiler happy地能够做出type inference的,可以把这部分的开销抹去.

而比较讽刺的是本质上来说,由于类型擦除这个jvm特性,两者在某种程度上的逻辑其实都是object到处裸奔.
区别只不过是runtime check还是compile time check罢了.

这时候也就又些理解c++的一些复杂语法和奇技淫巧了.

就像理论上来说,都是一回事.
但工程实现的不同,可能就是所谓的差距了.

类似的还有scala functional风格的另一面.
一个foreach里buffer append的风格和一个纯map/flatmap的风格在性能上的hotspot也是有些差异的.

当然,这部分差异可能来源于对结果取值的处理场景.
毕竟一定程度上来说,后者是个compress的lazy evaluator.
在只需要特定subset元素的时候,确实会有一定程度上的作弊效果.

因为只需要evaluate一部分就行了.

这点倒是想起来以前pytorch跟tensorflow的设计差异了.
后者基于graph的lazy特定也让前者的所见即得带来习惯上的使用冲突.

毕竟lazy对于debug print有时候还是不太友好的.
尤其一定程度上来说,语义是不等价的.

其他的一些就是更low level的可观测性问题了.

就像开头的allocation的问题.

后面case by case地看了下,有显著性能差异的时候还是buffer比较大的时候的情况.

一个稍微简单的intuition解释大概就是small allocation在runtime可能更容易被更底层的memory management的cache命中,可能是gc的一些特殊case,甚至malloc的一些具体实现都可能对small allocation可以更容易地被reuse/命中.

而稍微大点的allocation则很容易命中到page fault从而引发一些application层面看不到的更重的差异调用链了.

这个在latency到micro second层面就算比较显著了.

所有反过来说,如果只是毫秒级,那可能这方面的差异优化又显得没那么重要和必要了.
这也就是前面说的scale的问题.

另外一个相关的就是cache这个概念的意义的问题了.

比较初期的prototype的时候,也考虑过加一些cache policy.
直接用guava的结果出来之后自己都笑了.

后来手写了一些简单策略看效果也并没有特别显著的提升.

本质上来说,还是scale的问题.
因为caceh逻辑可能在复杂度/开销方面跟主逻辑已经具有相当的可比性了.

所以即使在命中的场景下,能明显地提提升,但回退到miss的时候,回退可能更显著.

这也就是有时候会开始觉得,cache并不难算是一种算法层面的优化方式.
或者说它是一种比较speculate的优化选择.

形式上来说,天然就带有某种不确定性.

剩下的一个题外话就是关于内存数据结构layout的问题了.

以前刚接触Arrow的时候也颇为嗤之以鼻.
觉得算是可以有,但意义没宣传得那么大.

现在觉得,就像utf16转utf8这种.
本质上来说还是一位representation不一致引入的额外routine.

类似的还有jni接口带来的overhead.

这些借用一个名字就是non-unify memory access带来的代价.

所以如果像Arrow或者其他adoption比较广的message格式,多多少少还是能避免这种也算是碎片化带来的问题的.

当然,剩下的问题可能就是都想解决碎片化带来的进一步碎片化问题.

这可能就是工程化的另一面.

可观测性带来的避免重复性驱动,然后就是新的工具链在试图更广而全地解决问题.
也就是所谓的silver bullet构想.

比较现实的例子可能就是堪称日新月异的前端工具链生态.
可能隔一两个月就有一套新的概念和东西出来.

然后相似的就是不管实现目标如何,最后还是要兼容老的一套.

在生态和工程化创新之间举步维艰.

于是在回头看褒贬不一的对于go大道至简的哲学揶揄可能就显得不那么充分了.

可能它的工程化实践的已经是考虑了历史债务的成本问题了.

毕竟之前尝试重构某东西的时候也发觉了.
有时候重写本身并不难,难的可能是兼容性/一致性问题.

老旧系统/工具链的价值一方面固然是能work.
另一方面更多的是对于现有使用场景的覆盖度问题.

尤其有些时候一些bug可能变成了某种形式的feature.
以及有些衍生工具链和平台已经依赖了某些难以分类为bug还是feature的东西.


就像一个社会系统.
纷繁链条,你也很难评价一个切面的功过是非.

能用就行可能是一种需要特别角度去看待的工程哲学.

2024-10-13

两个电影及其他

看完死侍与金刚狼.
倒也不是有什么太大的粉丝热情,只是有些感慨.

算一下,人生也差不多过半了.
有些想法可能也在不知不觉中变化.

就像想用随着年纪增长这个表达的时候,也会犹豫退却下.
尝试用随着时间之类的表达.

年龄是个什么意义?

可能更多的是一种经历与日渐消失的新鲜感之间的拉锯.

年轻的时候总觉得不要给自己设限.
想做什么做什么.

本质的还是说可能性大于变化.

时间久了,大抵也不一定是可能性变少了.
而是变化变少了.

套用句俗话就是变化的只有变化.

就像片子里金刚狼因为不在意/逃避/醉酒,而错过了救其他人的机会而抑郁余生一样.

很多事情变得无所谓或者麻木不仁无以为意了.
尤其在草台班子理论的洗脑下,很多事情一定程度上的觉得无所谓了.

X-Man和人类的纠葛冲突也不是一天两天了.
所以有矛盾和甚至局部战争也正常,过两天就好了.
殊不知这是狼来了之后的这次不一样了.

大致就是这么种心态.

也可能是像前段时间看的Joker 2.

在陈奕迅般的自我浮夸陶醉后,还是回到监狱被脱下裤子连累别人才明白一切的无意义.

Joker之为Joker在于它就是Joker.
这种同意反复循环递归世界的坍塌在于无间道梁朝伟想做个好人的瞬间.

无非是另外一种的对于boring生活的叛逆.
只不过这次叛逆的是叛逆本身.

就像看着Lady Gaga只能以女性身份出演哈利奎茵而不能本色出演Joker本人意义.
虚假的或者旧时代的Joker只想回归生活做个好人.

有时候会想是这个世界变无趣了.
还是自己真的老了.

前段时间又翻了些开源项目的代码.
发觉少了以前看代码时候的那种会心一笑的场景.

可能也并不是说代码质量不够好,不够多技巧,或者想法不够新颖.

像Clickhouse的Merge Engine(非Merge Tree),运行时归并异源数据为统一View,倒也不是没有提起一点精神.
但是在现在所谓DataLake之类概念横行下,只不过是野心放在哪一层的问题而已.

要么都是支持catalog/external试图把数据在meta层面归纳过来管理.
要么是像Velox试图做个跨模式的execution engine.
又或者像Arrow/DataFusion一样,干脆把数据交换格式和执行计划做成某种形式的IR.
甚至于像Spark一样,小孩子才做选择,既有catalog又有remote plugin还有事实上的IR.

无非就是老生常谈的在存量环境里尽可能的占位.

就连偶尔翻下Google的论文,也难免会有toB的这些所谓大数据架构和实现相关话题.
尽管有些可能确实也有眼前一亮的感觉.

不过跳脱出来看,像stream process也不过是套个kafka类的merge策略而已.
虽然在比较abstract的层面来说,确实逻辑上的stream可以是构成上的fragment构成,剩下的就是存储的选择和runtime归并问题了.

可能这就像技术发展到一定程度,更多的是比拼的工程能力.
毕竟理论创新已经到了一个天花板时期,很难再有新的东西了.

所谓的智子时期.

这么一想的话,似乎也有些能理解理论物理的尴尬局面了.

但你也很难说,这到底是因为世界乏善可陈,还是自身的问题.

像支撑deadpool的是什么,奔溃joker的又是什么.

如果说共同点是美式family情节的话,那问题就变成了为什么是美式,为什么是family了.

最近有段时间也会开始反思所谓的政治立场问题.

从年轻时的愤青,到读了点西方理论的自由派.
再到草台班子渐长的中间立场.
然后是自觉的算马克思/社会主义信徒/理解了.

有那么段时间看到别人发表的以前各个阶段可能也会说的话,会有一种可能算是说服的冲动.
也可能是好为人师的中年心态.
虽然大多时候都抑制住了,但总的来说倒也不能说是了然无趣漠不关心的.

甚至有时候可能还是偏所谓粉红的.
尤其在所谓意识形态问题上.

就像刚刚谈到美式family情节的时候,也算条件反射式的会对美式有种对立情绪.

倒也不是仇视或者其他什么.
只是一种可能是矫枉过正的警惕感.

毕竟相对来说,东西方各自的表面价值观上,西方很多是比较tricky和ridiculous/drama的.

就像你很难在一个倡导私有产权神圣和自由竞争至上的语境里,认为生而平等/equality是不矛盾的东西一样.
在这种宏大而片面的叙事里,习惯性地试图跳出这种看上去context-free的价值观导向,去寻找context- aware的部分.

但它的问题在于,思路上拒绝了其隐含的积极意义一面.

就像你认为它不现实,但不代表它的一些取向和行为不值得考虑意义.

甚至于所谓对立面的东方/社会主义本身就是一种过于over optimistic的理论描述.
基于的也是一种不算矛盾,但是过于大胆的本质基于过剩的解决思路.

所以跳脱来看的话,就像马克思晚年在哥达纲领批判里对最低工资之类的批判和嘲讽一样.
意识形态本身就是一种意识形态/枷锁.

最低工资或者说社会主义这个描述本身的一定程度的畸形和冲突在于它本质还是在所有制归属问题上的论证.
最低工资保障基于的也还是所有制归属问题之后的分配保障制度.
强调的是由所有者/雇主进行的再分配.
本质还是所有权导向的.

就像社会主义理论虽然本质上把异构的私有产权归纳到集体/社会所有这个虚拟唯一实体下面,但是它的理论基础和衍生论述也还是基于所有权展开的.

所以马克思在哥达纲领批判才会重新把最低工资攻击本质为基于所有制展开而非面向分配设计.

因为他可能直到晚年才意识到论述结论的分配/再分配导向才是社会主义这个命题应该基于的论点.
而不是试图在所以制框架内反对所有制.
尽管从结果上来说,这种论述确实指出了所有制结构的弊端.

于是基于分配/再分配设计的系统形式上就可以是所谓的公有制,也可以是私有制.
只有能够保障分配/再分配的执行就行了.

这也是为什么当代政府本质上都应该是在主动或者被动的面对和解决贫富差距和收入不公问题.
只不过系统设计上,会受到对应体制的制约和阻碍罢了.

所以,如果说指责或者定性是社会主义还是资本主义已经不重要了的话.
那么衍生的意识形态对抗还重要么?

否定的原因在于本身是个虚无的命题了.
而肯定的原因大抵在于它不是一个纯粹的理论问题,而是现实政治的综合竞争strategy.

就像在当下问一个人关于某个观点的想法态度一样.
恐怕本人也很难明确地说是自己的观点,还是被植入的观点.

可能就像现在流行的AI/LLM一样.
看上去多元fancy前景无限.

本质可能只是复读机的hallucinate.

maybe that is the boring part.





2024-08-25

聊聊黑神话

最近算跟风玩了下黑神话.
用的Geforce Now加月卡.

勉强到第二回打完沙国父子,回头准备去打地狼吧,然后20小时优先卡就被踢出去了.

难度对于个人这种没接触过的玩家来说还是挺大的.
一个Boss花个三四个小时很常见,或者说必然吧.

像第一个头目幽魂就卡了挺久.
后来学会拆分模式之后才比较轻松了的.

一个是右闪绕道身后无脑追击.
另一个主要就是立棍躲范围攻击加打断了.

这个算是后面的基本手法了.
尤其像广智和白衣秀士第二形态这种快速攻击类型,顺便广智还带近身灼伤效果的.
立棍命中然后拉距离恢复气力,剩下的就是第一章的主题不贪了.

第二种类型就是黑熊精/金池长老/沙国父子这种大体型的Boss了.
因为体型的问题翻滚和躲闪有特定方向判定,加上有范围追加,基本上就是打两下跑的模式.

后来看了下其他人的视频主要都是劈棍蓄力/棍势识破+打断辅助定身和排位的速推方式.
这个还是学不来的.

一方面就只有键盘连鼠标都没有,同时操作不了太多动作.
另一个面确实主要是操作不行.

所以基本上就是拉距离,保持心态平A的方式.
甚至连定和变身一场战斗最多也就一次,而且基本是为了保命的.

某种程度上来说,每个Boss能过都是靠的某种形式的运气.
毕竟残血对残血是常态.

尤其白衣秀士几次二阶段残血最后一击心态变急被反杀的例子.
后来也就慢慢看开了.

也算是一种体验和修行吧.
正如一回的剧情指向不贪一样.

仔细想想的话,纯理论来说,这类游戏就是某种模式识别和匹配的玩法.
给定双方的行为patten,构造一种类似出牌的克制策略.

本身的手牌数量不会太多,只是考研的反射意识/匹配速度.

纯看面板数值系统的话,是没什么太大意义的.
或者说就是没有意义.

初期尝试加点了基础属性的天赋,然后马上发现没有效果,后面就全部忽略了.
主要还是看连击技能的产生效果,也就是手牌的模式积累.

这大概也是为什么会有方便的洗天赋的功能设定.
一方面是方面及时调整策略.
一方面也是为了玩得下去,不然一失足就得重开,加上难度系数,很容易劝退.

形式上来说,把血条和打击数值换成次数也是没问题的.
内容表现上虽然有不同的视觉效果,但本质就是一个时间序列的打击节奏判定而已.

如果没有在某个特定的时间节奏节点给出特定的手牌对应,基本上结果就是再来一次的.

当然,如果没有一个直观的数值系统的话,纯靠文字和高亮描述是比较难让人有直观的手牌策略的.

像打浪里个波的时候,难度可能主要在气力消耗控制上.
所以换一套水里套装的话,难度上应该算是大大减小了的.
但看纯面板数值的话,反而是降低的.

类似的还有黑熊精.
因为缺少材料,所以防火装备还有两件没打造出来.
但实际情况是一方面有防火袈裟,一方面本身就比较多翻滚,所以反而影响不明显.

所以,理论上来说,把数值系统去掉应该也是完全不影响核心玩法的.
只是可能不太容易让人接受.
比如换成打击次数计数的话,心智模式就不一样了.

其他的像隐身之类的附加系统本质也是手牌模式的扩充.
只不过是限定的出牌规则而已.

当然,这只是理论上或者说设计上要考虑的问题.

剧情方面因为被剧透过了.
所以倒也还好.

如果从纯零背景来说的话,开头的剧情故事线其实有些一头雾水的.
就是讲完一个故事然后没什么交代就开始旅途了.
而且直到第一回完才透露出找到大圣遗物这个点.

当然,如果从已经有上下文的角度来说的话,轮回设定下这种无头无脑的结尾就显得异常合理了.

包括第二回开场一身箭躺在那里也是.
叙事上某种程度来说,是有一种割裂性和断代感的.

但是同样的,在已知故事安排的前提下,就又显得异常合理.

如果把这个看作一种有意为之的话,倒可以把黑神话定义为一种新式的digital novel.
它跟日式的gal game不同之处在于,它是以某种形式的动作格斗游戏的形态展现的.

包括优先的地图和紧密节奏的boss战.
基本上叙事是游戏的一个相当重的要素.

不然完全可以做到更开放的世界和更少的boss节点的.

目前这种就是在优先的构造叙事里,通过模式化博弈/格斗的方式把游戏体验时间拉长.

就像digital novel是靠文字/图片/分支去填充游戏时长一样.
它是靠战斗系统本身去扩充内容.

这个就不得不让人联想到前些时候某司的某新游了.

某种形式上来说,两者的共同点都是工作室对某些元素有着不同寻常的追求,想各个方式嵌入.
甚至连外部玩家市场期待程度都类似.

但结局迥异的原因就有些微妙了.

所以,有些时候所谓正确的事其实具有某种程度的运气成分/偶然性的.

毕竟正确的一面固然是自身的坚持所定义.
另一方面还得是受众的理解和接受程度了.

所幸,黑神话做了一件,也做成了一件几乎所有人都觉得正确的事.




牛来餐馆

看了欢迎来龙餐馆. 总的来说,作为一个院线电影,成品多少是有点不太匹配的. 看起来更多像是一部网络大电影. 尤其涉及到一些大场面特效的时候,可以看得出服化道的降本增效. 剧本层面有一些比较有意思或者说闪光点. 就是试图用一个餐馆或者厨师来串起一个比较宏大的叙事题材. 这个可以说是...