This blog is rated 🔞, viewer discretion is advised

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

Cappy in a Haystack locations

For the mission from the beloved Fallout 4 Nuka-World DLC

coc DLC04KiddieKingdomFunHouse01; player.moveto 06015A94
coc NukaWorldWildWestExt02; player.moveto 06015A8A
coc DLC04BottlingPlant01; player.moveto 060445DF
coc DLC04BottlingPlant01; player.moveto 0604A812
coc DLC04GalacticZoneExt04; player.moveto 06015A8E
coc DLC04GalacticZoneExt04; player.moveto 0604AD3F
coc DLC04GalacticZoneExt08; player.moveto 06015A91
coc DLC04GalacticZoneExt08; player.moveto 0604AD40
coc DLC04KiddieKingdomFunHouse01; player.moveto 0604AD3D
coc DLC04WWMineCart01; player.moveto 06015A8B
coc DLC04WWMineCart01; player.moveto 0604AA39
coc KiddieKingdomExt06; player.moveto 06015A97
coc KiddieKingdomExt06; player.moveto 0604AD3E
coc NukaWorldNukaTownUSA06; player.moveto 0604A814
coc NukaWorldNukaTownUSA06; player.moveto 0604A813
coc NukaWorldWildWestExt02; player.moveto 0604A815
coc SafariAdventure03; player.moveto 06015A9A 
coc SafariAdventure03; player.moveto 0604AA3A
coc SafariAdventure07; player.moveto 06015A9D
coc SafariAdventure07; player.moveto 06015A9D
coc SafariAdventure07; player.moveto 0604AA3B

idk hope it works lol.

Posted

stdout

All Star Core locations in Fallout 4

Arent nobody got time for this shit.

Open FO4Edit, locate 604a053 and find all refs:

0601FAD1
060255A7
060255D2
06025774
060257F1
06026C7B
06026D23
06026D70
060278F7
06027917
0602791A
06027A3C
06027ACC
06027C0D
06027D5E
06027E43
06027E4C
060319E1
060319E2
060327BA
060327C4
060327D0
060327E2
06034EC6
06034F97
06034FD4
0603522E
06037CA7
060380CB
0603816F

And for external star cores, locate 0601F0E5 and 0601F0E6 for more refs:

coc NWJunkyardExt; player.moveto 060319D6;
coc NukaWorldWildWestExt03; player.moveto 06031995;
coc DLC04BottlingPlant01; player.moveto 060319CE;
coc DLC04Nukacade01; player.moveto 060319CF;
coc DLC04GalacticZoneExt07; player.moveto 060319E1;
coc NukaTownMarket01; player.moveto 06054CA8;

Just type player.moveto with the code above and you can grab all star cores, and return to console player.moveto 0601E359, so you get the Quantum X-01 power armor from Nuka-World DLC of Fallout 4.

Also there's coc TestCory01; 06044B4B; for testing purposes.

Posted

stdout

育儿成本的两座大山

仅个人观点

校园里的义务教育

首先,我支持义务教育的普惠性。现代各国的义务教育,也就是K12教育,可以覆盖从5-6岁的幼儿园(K)到高中(12年级)。教育当然是非常有必要的而且最好强制性的,但是一定要关起门来在封闭校园里受教育吗?

这套体系的义务性,源自于普鲁士的士官传统和军营教育。当年这事儿出发点没啥问题,但是到21世纪的大城市里,成为城镇居民育儿最大的负担。经费问题先不说,首先就是接送问题。上学、放学这个时间问题就至少要耗费一个成年劳动力脱产,校车制度和孩子自行出门回家基本看不到可行性。

如果你给孩子辅导过作业就会发现,现在的统编教材是反智、反自学、反人类的。老师每天发的各种填表、通知比学科本身问题还多。城镇的孩子早就高度个性化差异化成长了,学习进度反而非常僵硬死板。成绩差的跟不上,成绩好的无法掌握更高级的知识。整天都是一个流水线作业和非标件不适配的拉扯。

抱着「干不好就别干」的心态,在资讯如此发达的今天,我觉得应该把「义务」,改成 opt-out 模式。也就是对于有条件的家长,只要教育部门能把控最终毕业会考成绩就行,而不是必须按学籍在指定学校坐满9年板凳。的允许民间办学和home-school按照自己的节奏去学习和成长。到了法定年龄,不能通过会考的,做一些处罚或者补救措施。

当然有人会说了,这样搞,会不会乱套?不利于集体生活,不利于团结稳定。这样的问题当然存在,可以小范围试点,按地区不同政策嘛。归根结底这是ruling class需要考虑的事,各位要杠,我只能说京爷您说的对。

“童工”问题

我觉得,孩子要么纯学习,要么纯玩,这种二元生活持续整个童年是有害的。更好的方式是,在劳动中学习,在实践中收获回报和经验。说得好听点,支持“勤工俭学”。说的更通俗点难听点,就是应该允许“童工”。这个话题可能会造成很多人敏感和不适,但是先别急。童工的准确定义,是:

剥削性质的劳动导致孩子无法获得教育,或者精神/身体/社会/道德 上受到侵害。
the exploitation of children through any form of work that interferes with their ability to attend regular school, or is mentally, physically, socially and morally harmful

现在发达地区要找一个体力剥削活儿也不太可能了,重体力活儿,你身子板儿不行,雇主还会嫌弃你。

反而是儿童的心理、社会压力很大。其中一个原因就是青春期那股劲儿没地方释放。所有的回报和赏赐都来自老师或者父母。老师和父母是典型的绝对权威,从原理上来说就是不平等沟通,诉求有不可调和的矛盾。这种人造的依附关系是高高在上、理性铸就然而架空的幻觉,这座精心维护的象牙塔会在孩子毕业那一刻轰然倒塌。孩子真正进入社会会有一种「原来是这么回事」的幻灭感。如果说高考填自愿是几乎茫然的状态去碰运气,那么应届生选择岗位更像一场赌。

这个问题放在长远的人类历史压根就不是问题。自古以来,孩子都是跟着父母叔伯学习生存技能的,一个家庭本质就是一个小产业群体;脱产的学校,这玩意是近现代产物。龙生龙凤生凤,老鼠的儿子会打洞,子承父业这看起来是天经地义的事。现代很多职业分工是非常精细以至于达到变态的程度,孩子要直接上手父母的职业几乎不可能,更多依赖长久的教育和培养。

农村的孩子一般从下地就开始干农活儿,城镇的娃从小接触商业那也是理所应当,甚至是必须的。比如父母开了店,孩子在暑假帮忙照看一下是很常见的。这些显然不算「童工」。基于类似的道理,没开店的家庭,支持自己娃从事一些差事,能获得一点物质回报,经历一些at stake的挣钱、交易、谈判技能肯定比看电视傻笑强。

国内的例子就勤工俭学,国外也有 boy/girl scouts 卖饼干,糖水这样的活动。

可能你觉得这个想法不痛不痒也没啥毛病,那么问题来了:

你是否支持未成年人开通收款码、打赏账号,成为有限责任的自然人/法人?

你可以说,不支持,因为法律不允许。那么接下来的问题是:这样的「保护」立法放在21世纪今天是否依然是必须的?

孩子的自我

可能有人会问,除了获得一点收益,然后呢?之前跟一个朋友聊天,他吐槽说,马斯洛那套 「人最高的追求就是自我实现」 是假的,因为他研究这么多年,发现人其实没有自我。看到这问题,我想了下,回复他,重点不是自我,是实现。

这个姓马的可能功夫不如另一个姓马的。另一个姓马的26岁的时候,向全世界宣布了他的理论:人如果不打工,就会感觉不开心。

以前初中时,政治老师也这样照本宣科,说劳动是人的权利,是每个人的需要。估计现在绝大部分人看到这个理论,都会哈哈大笑:“这个权利谁想要我让给他,我希望有人能把这个权利给我剥夺了,我不想劳动!哈哈哈哈。。。”

这个话题叫「劳动的异化」。对这两位姓马的说法,我有一个最浅显的解释:

人,是闲不下来的。总得找点事来霍霍。

人要实现的不一定是自我,而是实现一个想法。这个想法可能睡一觉第二天就发现很蠢,但依然是昨天「自我」一方面的冲动。所以「自我」是否准确存在,不重要。重要的是你起了这个心思,然后干成了。

不得不说,劳动是人的本质特征,是人的"第一需要"。吃喝繁衍,那只是动物性。人性的体现是在「衣食足」之后,而知荣辱。

人在劳动中,是需要肯定自己的,而不是否定自己。人要通过劳动感到幸福,而不是折磨。是不断发挥自己的聪明才智,而不是受到打击和摧残。

学校高墙里的教育和考试,是不是也越来越异化呢?所以娃在学习之外的劳动,就显得非常有必要,而且长期缺失了。这里的劳动,也就是「做自己想做的事」。需要鼓励娃去尝试一些学科考试成绩之外的挑战,自我实现。如果这些兴趣恰好也能在成年之后从事相关的岗位,养活自己,那不就更好了?

结语

总的来说,未成年人强制去学校,和禁止劳动 这两大因素,加重了家长的负担,对娃也没啥好处。

Posted

stderr

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