This blog is rated 🔞, viewer discretion is advised

第一JWST张照片上的「星芒」

James Webb 第一张照片。还是调试对焦用的。

有意思的说它这个六边形的星芒。其实正如猜想的那样,是跟镜头光圈形状有关的。

这个视频讲得很透彻,3分钟。推荐观看。其实「星芒」,英语 diffraction spike(衍射刺) 是一种傅立叶变换,也是光是波动性的表现。

最有趣的地方:

  1. 星芒的角度应该是始终一致的。

  1. 波长越长,星芒伸展得越长,所以叠加起来内紫外红的彩虹色的星芒是 ok 的。

比如 Hubble 望远镜拍摄的这个

于是我联想到,国旗上咱们不是也有5颗星星么?hmmm 禁止联想!

via reddit, HN

Posted

stdin

情绪控制终端

在这个俄乌战火纷飞,国内油价高涨的季节,从各种消息满天飞的聊聊里得到一个痛苦的领悟。

在街上,在电梯,在身边形形色色的人,拿着一个200克左右的长方形物体,对着它欢笑,对着它愤怒,对着它沉默。

4G带来了移动互联网的繁荣,疫情带来了 WFH 和各种码的普及,男女老少的生活都围绕着一个东西展开——手机。

若干年后,人们会如何定义手机?这是一个微型个人电脑?通讯工具?互联网接入器?

我觉得有句话说得特别好,手机的本质是一个情绪控制终端

这和之前的 PC+拨号上网时代有个本质的不同。PC 从根本上,是一个生产力工具,我们从小学习微型计算机是当做一种科研仪器,进出微机室都是防尘鞋套,键盘都是经过训练的盲打。

手机虽然架构也是冯诺依曼,但是这玩意被消费文化的厂家精心阉割成了一个单向接收端。这个阉割是从 Steve Jobs 拿掉键盘开始的。

Touch Screen,多么伟大的发明。这个发明经过 infinite scrolling 的市场校验,千锤百炼发展到极致就是 Tiktok ,让人们短暂的注意力变得更加集中,是情绪化的集中。手机的输入是什么?铁链女的文字,基辅的图片,喜迎油价上涨的视频。这些输入的传播,随着网速的提升和带宽的扩宽,加上国内从 MSN 时代就习惯了的即时群聊天,使得消息的传播几乎达到实时。如果你也有在微信里加入一大堆吹水摸鱼群,那么很可能你会发现所有群转发的内容是越来越趋同、时效性越来越好的。群里各色人等,对大部分消息的态度,都是崩,知道突破了激活函数的阈值蚌埠住,然后又转发给你的第二圈层、第三圈层群组。这些群组对这些话题的讨论和反馈,行程对你三观的冲击,最终的效果是反向传播,修正了你的激活函数阈值。

那么这一神经网络的输出是什么呢?

恰好,今天读到了某日更专栏 贾行家 的一段话

情绪,我认为,这是当下很多问题的核心词,是个基本的、没法回避的时代特征。我想你也有感觉:今天,不只文化现象,很多网络现象,都是被越来越单纯的情绪催动,越来越没什么道理可讲。我们好像生活在一团乱麻一样的情绪里,它的来历和问题各异,现代的、传统的,中国的、西方的,我在物质世界里愁肉身住的房子,我在网络世界里想刷存在感……咱们不着急批判,那要交给思想家,我们先看看这个情绪的时代到底是怎么回事儿?
什么是情绪?我这里的概括是:情绪是对追求单一目标的即时性反应。它是很底层、很原始的生理和心理现象,正面的像满足、愉悦、期待,负面的像嫉妒、愤怒、失落、恐惧,稍微复杂一些的有空虚、寂寞。总之,现实中出了一个结果,情绪上立刻就会起反应,但是也就到此为止了。
那么,流于表面的情绪为什么成了当下最主要的动力?
说个生活场景吧:我喜欢在地铁上看人,但是这些年没什么人可看了。十几二十年前,至少还有乞讨的,不是拿着碗和棍子,是挎着音箱话筒,边唱边要;还有卖报的,不知道为什么,无论什么时候,头条都是有关刘德华的坏消息。现在是人人都死盯着自己的手机,像要被吸进去了一样,神情木然,社会学家说这叫“昏睡性的呆看”,人在这种半休眠状态下,很难形成什么有意义的思想和情感。
这种状态下,大家心里涌动的只有情绪。这些情绪几乎是所有人共通的,没有善恶之分。比如说,一个人发张炫耀豪车或者新包的自拍,再配上段所谓“凡尔赛文学”的夸耀,传达的是什么情绪?都说是虚荣,但我想可能是孤独。细分析的话,这是由空虚和自恋共同在起作用,引起了刻板的自我复制,发这个的人,也没法从中感到真正的快乐,只能暂时压抑空虚感而已。

在《文化参考》里访问过人民大学新闻学院的董晨宇老师,董老师对当代传播有个描述:上个时代,媒介往往只是我们获取信息的一种工具,我们在使用它。而在这个时代,媒介变成了我们生活在其中的世界,我们就活在里面,跟着它变化。情绪化的现实来源相当深刻。我们早就生活在一个被现代科学探索和定义的,几何化、数字化的空间里,这个空间本身不存在等级上的高低,好的一面是“平等”,坏的一面是虚无,如今,问题没有变化,一切却被科技进步加速了,越是处在时代的前沿,你越去想“什么是生活的意义”,这件事就越诡异:你不细想,那什么都有意义,但多问几个“然后呢”,可能会发现什么都不确定。
先说一个比较简单的转化。有部日本电视剧叫《孤独的美食家》,没什么主线情节,就是一个五十来岁的中年男人,每天结束工作以后在大街小巷找饭馆儿吃饭,他的嘴很刁,还是好饭量,每次能吃两人份,这部电视剧就是让咱们看他一顿顿吃什么。我常想,假如我是电视台老板,十年前有制作人跟我说要投拍这么部戏,我的反应肯定是“什么鬼?”你总得给我个女主角和感情戏吧?我小时候,偷看别人吃饭叫“看嘴”,是最没出息的表现,会挨大人的打,这怎么能拍电视剧?这就是因为我没有把握到后面那种群体情绪。
《孤独的美食家》找到了一个很直接也很妙的方法,传达了都市职场人士,也就是今天自嘲为“社畜”群体的典型情绪。每集开头都有这么段独白:“不受时间与社会的约束,幸福地填饱肚子之后,在那一瞬间,他是随性而自由的,吃饭时不受任何人打扰,也不需要照顾他人的口味,这种孤高的行为,是每一个现代人都平等拥有的权利,可以称得上是最治愈人心的过程”。
《孤独美食家》的成功,就在于用最单纯的方式去抓最普遍的情绪,最基本的生理需求,把它迁移到孤高、幸福这些价值上去。
孤高和幸福是什么?已经不是情绪了,可以说是情感。情绪重要,但只有情绪的话,人永远没法成熟;情感是更高级的凝结,只有情感才能产生出道德价值和审美价值。

或许我们迎来的21世纪,就是这样一个情绪的世纪。mood。

Posted

stderr

Rimworld无损放逐殖民者

遍地都是疫情爆发,遍地都是HC被砍。在这个糟糕的时间WFT摸鱼发现一个神视频 Rimworld无损放逐殖民者

Rimworld 是一款模拟生存+基地经营类游戏,你需要控制几个「殖民者 Colonist」在一块荒芜并且危险的星球上生存下来。时不时有别的 Colonist 会要求加入,但是每一个 Colonist 都有有迥异的性格和技能,有些 Colonist 加入之后就特别不合群,惹是生非,这个时候你就想把他搞走

这个游戏有个神奇的机制,就是 Colonist 进来会交一帮狐朋狗友,关系度上升,你把 Colonist 弄走之后会影响他们心情值然后牵扯出一大堆麻烦事。

如何无损放逐呢?这个视频做了示范。先尝试拘捕TA,然后把他关在一个单身牢房里。

然后大家都在半夜睡觉的时候,召集别的所有的 Colonist 集体开会(征招备战功能),派一个人偷偷去把牢房门打开;

然后神操作来了,等这个开门的人回来,把这个牢房的床给撤销了。

于是这个 Colonist 发现,咦,我怎么没地方睡觉了。咦,牢房门怎么是打开的,要不赶紧溜掉。

于是这个 Colonist 就离开了大家,大家也没什么觉得奇怪的。

这个东西是不是游戏 bug 我不知道,反正我看完之后,太写实了,只感觉无比震撼!

Posted

stdin

猪 和 大雁

  • swine=猪(统一的称呼);
  • hog=家猪(年满18岁的猪);
  • pig=未成年家猪(未满18岁的猪,现在泛称猪);
  • shoat=已经断奶的小猪;
  • barrow=没有蛋蛋的公猪;
  • sow=成年的母猪;
  • gilt=没有生过孩子的母猪;
  • queen=没有性生活的母猪;
  • farrow=一窝小猪(或者是动词,指生小猪);
  • parcel=猪的复数量词;

当然了,咱们汉语里面也有类似绕人的。。。

  • 豚tún :小猪;
  • 彘zhì :大猪;
  • 豕shǐ :猪;
  • 亥hài : 猪;
  • 豭jiā :公猪;
  • 豝bā :母猪;
  • 豨xī :大猪;
  • 豟è :大猪;
  • 豯xī :小猪;
  • 豵zòng :六月龄猪;
  • 豜jiān : 三岁猪;
  • 豱wēn :头短猪;
  • 豥gāi :四蹄皆白猪;
  • 豮fén : 阉猪;
  • 豛yì :猪;
  • 豠chú :猪;
  • 豩bīn :两头猪;
  • 豲huán :豪猪:

AcFun弹幕视频网

为什么汉语有总称“羊”而英语没有?

动物俗称不同于学名,原本就没有严格的分类标准。

  • 英语 mandarin duck 算是一种 duck,汉语“鸳鸯”就不带“鸭”字。
  • 英语 swan goose 算是一种 goose,汉语“大雁”也不带“鹅”字。
  • 汉语里“天鹅”倒是有个“鹅”字,而英语 swan 又没有 goose 了。

假如按照 ibex, goat(山羊) 乃至 sheep(绵羊) 都叫“羊”来类推,天鹅、雁、鹅,乃至鸭子,在汉语里也该有个“总称”。然而实际日常口语中并没有。因为给具体动物起名这事,有很多偶然性。压根没有绝对的道理可言。

最近常说的金钱豹(花豹),在东南亚普遍被称为某种“虎”。相当于“星斑虎”、“柴纹虎”之类。有哪些叫「虎」但不是虎的动物?

在汉语里,连形貌差异巨大的“长颈鹿”都叫“鹿”,而更接近麋鹿、马鹿、梅花鹿、驼鹿、驯鹿的“狍子”却被许多人当作另一种动物。
在英语里,roe deer 显然关联着 deer,而 giraffe 和 deer 看起来没什么关系。

汉语里完全不相关的两种动物,其它语言里的名字可能是相关的。例如西班牙语里火鸡叫做 pavo,孔雀叫做 pavo real,字面像是“皇家火鸡”或“真火鸡”。

汉语里视作同类的两种动物,其它语言里的名字可能是不相关的。例如日语里家猪叫做「豚」,野猪才叫做「猪」。无论是固有说法「いのしし」还是汉字音读「ちょ」,都对应的是野猪。「猪突猛進」-「ちょとつもうしん」,这里「猪」显然只能是战斗能力爆表的野猪
即便在同一语言内部,俗名体系也是乱的,很难逐一追出理由。

如果说长得像就该有总称吧,“狗”和“狼”似乎就没有总称。如果要说家养和野生有别吧,“猪”和“野猪”好像又有总称。如果局限在牲畜内部来看吧,“马”和“驴”似乎也没有总称。它们可比“绵羊”和“山羊”、“黄牛”和“水牛”相近多了。如果算上野生动物,俗名就更主观了,基本取决于最早给它起名的人先联想到的是什么。

比如“斑马”不叫“斑驴”,就让人感觉像是一种马而不是一种驴,尽管这三个物种谱系是并行的,斑马和马的亲缘,并不比和驴的亲缘更密切一些。

同是猫亚科的物种,尽管美洲狮 puma 不属于“狮”,起的名字听起来还是像一种狮子。尽管猎豹 cheetah 不属于“豹”,起的名字听起来还是像一种豹子。金猫、狞猫、虎猫看着更像猫,起的名字听起来就还是像一种猫。猞猁看着和猫差别有点大了,又不太像狮虎豹之类,就单起个名字。

和狗相关的动物就更有意思了,同属的狼不叫“某某狗”,同族的豺不叫“某某狗”,同科的狐不叫“某某狗”,反倒是根本不属于犬科,谱系八竿子打不着的 hyena 叫“鬣狗”。不知有多少看动物世界的小朋友,对鬣狗最初的印象,是一种丑丑的“野狗”吧。

Posted

stdin

牛津树/Good English/典范英语里的宗教私货

牛津树 Oxford Reading Tree 是被国内咪蒙妈妈们吹得油爆爆的来自英国的少儿学习体系,Good English/典范英语 是中青出版社的部分摘录英语教材。

偶然发现这个 牛津树【4-29】Mosque School,讲了一个叫 Adam 的学龄前儿童机缘巧合进了经文学校的短故事。甚至如果这是从古兰经某个传教段子改编出来的我一点都不惊讶。

引起我注意的是小白帽的装束,以及牌子那几个字 Masjid-E-Noorul Islam

费了点心思搜了下,也拼为 Nurul IslamNur ul-Islam,意思是 light of Islam 伊斯兰之光

国内很多中专职高出来的英语老师可能没理解这里面的内涵。什么叫潜移默化植入意识形态啊?!当人们觉得这是文化「多样性」很正常?!以为清真学校就是普通的讲宗教的学校,其实经文学校传授的东西非常不简单。摘抄一些百科:

经文学校分为“地尼买克塔普”、“买德里斯”、“卡里哈纳”三种。
经文小学是中国伊斯兰教经堂教育建制之一。俗称“经学”。专为年满6~7岁的穆斯林儿童所设,多在清真寺内,少数系私人开办,在教师或师娘的住宅内。设在清真寺内的经文小学,教师皆由该寺教职人员担任。课程由认识、诵读、书写阿拉伯字母开始。待学会拼音之后便相继以《索尔夫》、《穆阿济》、《扎佳尼》、《阿瓦米勒》与《米苏巴哈》为教科书(俗称“连五本”)。进而开讲《亥听》(即《古兰经》选读本)、《古兰经》。经文小学的学童至10岁左右,率多辍学从事家庭生产劳动或参加社会职业,只有少数人转入经文大学,继续接受高一级的伊斯兰教经堂教育,被称为“满拉”或“海里凡”。经文小学没有严格的学籍管理,招生不定期,也不经过考试,辍学或退学甚为自由,没有班级排列。学童的进度不齐,故普遍采取复式教学法。另有伊斯兰教常识课程,每日放学前集体朗诵(系中国阿訇自编启蒙教材,俗称“杂学”)。“杂学”的内容包括沐浴、礼拜、斋戒、丧葬及游坟等宗教活动应念的都阿、苏赖。1911年辛亥革命成功后,一些设于清真寺内的经文小学开始聘请懂汉文的穆斯林给学童加授汉文启蒙性教科书。女童上经文小学率多在师娘私宅。学费没有定制,学童家长可量力向师傅(师娘)不定期地馈送海迪耶。

官方介绍可以参考 https://cati.nwupl.edu.cn/dtzx/hswx/10307.htm 中 「保守教派的兴起」 这一部分,维基百科 扎吉德 Jadid民间经文学校初步观察

如果你觉得这样的东西堂而皇之放在英语教材里没啥问题。。。我也没啥好说的。。。

其中这一段比较有趣:

情况与当时还属于苏联的中亚五国是一致的。这个过程中,瓦哈比派(Wahhabism)因为主张“回到《古兰经》中去”,注重个人对经典的领悟而非学者的解释,门槛很低,容易接受

这不王阳明心学么。。。。释经权的下放和离散化。。。这后果。。啧啧。。。。参考之前一篇《中世纪中国的宗教改革

Posted

stdout

徐州丰县,以及孝文化

抬一张地图出来,

鲁苏豫皖四省,如果让你选一个最乱的地,你可能选哪里呢?

说起来,徐州对我的印象,只是《三国演义》上一个模糊的地理概念,第一次稍微立体的感受徐州,还是在《睡前消息29 · 没有“淮海省”,徐州还是有当“省会”的命?》上看到,徐州是一个距离周边大城市都非常远的人口又比较密集的城市。

后来,从罗辑思维·启发俱乐部·第26期:显性力量越大,隐性麻烦越多》上扒到徐州周边刷过的历史人物,就更印象深刻了

这里是砀山,刘邦拔剑斩蛇起义的地方,它属于安徽省,但它同时被另外三个省包围,北部是山东,东部是江苏,西部是河南。
从这个地方向东北,开车不到一个小时,就能到达江苏省的丰县。刘邦就是丰县人。辅佐刘邦建立汉朝的很多人,像萧何、卢绾、王陵也是丰县人。
丰县的东边是沛县,刘邦集团的樊哙、曹参、周勃都是沛县人。你可能会说,刘邦搞事业,拉着乡亲入伙很正常啊。
从丰县县城向东南出发,一个半小时车程就会到达徐州。在秦代,这里叫彭城,项羽建立西楚,都城就是彭城。奇怪了,为什么项羽的都城离刘邦家这么近呢?
继续向东南驱车一个半小时,会到达今天的宿迁市,在秦代,这里叫下相,项羽的故乡。你看,连项羽家距离刘邦家好像都不是很远。
然后,从项羽的家乡向西出发,开车一个多小时,就会到达安徽省灵璧县,“霸王别姬”、“乌江自刎”的故事就发生在这附近。
踩着油门朝西北走,不到一个小时,我们来到安徽省宿州市。在秦代,这里沼泽遍地,名叫大泽乡。没错,陈涉吴广起义,就发生在这里。
是不是觉得有一个问题已经呼之欲出了?秦朝灭国的可是六国啊。齐楚燕赵魏韩,那么大一片地方啊。但是怎么在秦朝末年找麻烦的就集中在这么一小块地方呢?那么大片的地方不出事,偏偏就这里出事?
对,佐竹靖彦给这一小块地方起了个名字:“泗水系月牙形水乡山泽地带”。
在那个时代,这个地方是一片月牙形地带,泗水河川行而过,地势低、潮湿,形成了大量的水乡山泽。在秦代,这里有个地方叫大野泽。听这个名字,你就能感受到三个特点:水多、荒凉、面积大。后来随着大野泽不断缩小并且位移,到五代的时候,大野泽变成了梁山泊。
一听到梁山泊,你就明白这个地方的意义了。官兵到不了嘛。

另外,徐州还是汉帝国的掘墓者曹操起家之处,唐帝国覆灭者黄巢朱温老巢,巨盗宋江也就是在河北、河南、山东、江苏交接的地方来回变动

然后结合时事,为什么这里拐卖人口多?

很多摸鱼群的分析是孝文化,传宗接代的思想在作怪,什么养儿防老,养儿挣钱,但读到2020年这篇Yixi演讲的文章,我就不淡定了

吴心越:养老院调查真相,让老人恐惧,问题严重性超出你的想象!

小时候,父母对孩子通常都是很强势的。但是随着年龄增长,你会发现父母对你越来越弱势,其实就是这个原因。养老院里那些无儿无女的老人,其实和学校里面的“孤儿”没有本质的区别,都属于被欺负的对象。在学校,父母是孩子的依靠。在养老院,子女其实就是老人的依靠。
哪怕有些子女很混蛋,很不负责,但他是维权的直接受益人。也许子女没有孝顺的动力,但是却有替父母维权的动力。越是混蛋的子女,战斗力就越强,父母出了问题,他们能把养老院讹到破产!
就拿护工来说,知道你有哮喘,偏要把你安排在通风不好的地方;知道你和谁有矛盾,偏要把你俩安排在一个房间;知道你腿脚不利索,偏要把你安排在楼层较高的房间;故意把你安排给有传染病或者大小便失禁的老人一个房间.....这种情况,尤其是在养老行业,从来就不是个案,而是普遍性的现象。
如果找院方投诉,就相当于把护工得罪死了,只要护工不被开除,如果不换养老院,剩下的日子,老人的日子只会愈来愈难过。
如果老人在外面有子女,起码护工还会有所忌惮,知道他自己做的太过分,会有人来闹,就会有所收敛。
这个时候,老年人有子女的最大意义,就是出了问题,有人帮你喊冤,哪怕他仅仅是为了搞一笔钱。

所以现在突然明白,为啥乡土中国,熟人社会,有拼命生娃的做法,讲究「孝」道了。这TM的是生存的最低保障,战略威慑能力啊。。。

如果说大型中心省会城市代表秩序和文明,那么徐州周边的几百公里没有大城市的平原村落里,就是社会正义能延生到的末端,这个时候,基层秩序只能由血缘绑定。即便是贩卖人口交换来的亲人。

Posted

stdout

今日笑点:网友指出cloudflared隧道ssh违反了TOS,被CF CTO亲自下场纠正

codingpanic 1 hour ago: I'm under the impression that this is against CloudFlare's ToS, otherwise I'd probably be doing it myself.
jgrahamc 56 minutes ago: That's for Cloudflare's CDN/reverse-proxy service. This is the correct one for Cloudflare Tunnel: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/license
neurostimulant 8 minutes ago: This seems to be the license for cloudflared. But when you use cloudflared to create a tunnel via cloudflare network, aren't you also bound to Cloudflare's ToS because the software itself is useless without using the service provided by Cloudflare?
jgrahamc 6 minutes ago: I am literally Cloudflare's CTO. I'm pretty sure I know that using Cloudflare Tunnel for SSH isn't a violation of our service.

真希望 HN 有个给 id 加备注的功能,大神太多了。2333

Posted

stdin

笑话了千年刻舟求剑,水面搜救的图案却叫Victor Sierra

今天的第一个收获,Victor Sierra这个搜救图案

来自 Why This Zig-Zag Coast Guard Search Pattern is Actually Genius - Smarter Every Day 268,是美国 coast guard 标准化的水面搜救路线之一。这种图案覆盖的面最大并且效率最高,而且最重要的一点,考虑到水是流动的,能够跟随一起漂流的相对速度去找到 PIW (person in water)

于是我就想起大家都熟悉的成语——「刻舟求剑」。这是2000多年前一个河南贩子吕不韦编的一个讥讽九头鸟的段子,由于这个成语太熟悉了,我甚至开始怀疑课本上是不是掐头去尾没讲完,跟之前那个「守株待兔」恶毒的政治隐喻一样,于是去翻了下原文。好家伙,不能说雷同,简直就是一模一样。它出自《吕氏春秋·察今

察今一共三段,第一段说,按着先人制度惯性因循守旧的人都是大沙雕;第二段说,荆州人拿了过期的水文资料强行过河结果沙币了。第三段说,好剑要的是锋利,不必是莫邪的名称;好马要的是能行千里,而不是骥骜的名称。成就功名的人,就是老板的好工具人。然后就抬出来了著名的讽刺湖北佬的段子:

楚人有涉江者,其剑自舟中坠于水,遽契其舟, 曰:「是吾剑之所从坠。」舟止,从其所契者入水求之。 舟已行矣,而剑不行,求剑若此,不亦惑乎? 以此故法为其国与此同。 时已徙矣,而法不徙,以此为治,岂不难哉? 有过于江上者,见人方引婴儿而欲投之江中, 婴儿啼,人问其故,曰:「此其父善游。」 其父虽善游,其子岂遽善游哉? 此任物亦必悖矣。荆国之为政,有似于此。

第二个收获就是,果不其然又是一个阴阳怪气讽刺朝政的段子。看来每一个成语背后都有一个键政的动机哎。

第三个收获,没想到刻舟求剑之后,还有个「其父善游」的更离谱段子卧槽。。。

然后突然就想到了近期第四个收获,王中林院士拓展麦克斯韦方程组,在渣乎上看的一路下来,无论是懂哥,还是路人,几乎全是在喷。但是恰好就在 HN 有人投递了一则如何通过伽利略旋转和洛伦兹旋转认识特种相对论的线串

https://twitter.com/MarkusDeserno/status/1482811504424542211

其中从 arctan(m12) = arctan(m1) + arctan(m2) 推到 tan(x+y) = [tan(x) + tan(y)] / [1 – tan(x)·tan(y)]

再到 m12 = [m1 + m2] / [1 – m1·m2]

好吧,我也假装我看懂了!

最后一个感触,大家都顾着去看2500年前楚国人和当今院士的笑话了,却很少有人正面分析一下问题。

Posted

stdout

python-phoenixdb 设置读取超时

PhoenixDB 居然是基于 requests + pb2 做的传输层协议。连接的是 queryserver 的 http 接口

avatica/client.py 源码 可以得知这玩意默认是不支持设置read timeout的。强行hack一个:

import phoenixdb
import functools
c = phoenixdb.connect('http://localhost:8765/', autocommit=True, auth="SPNEGO")
c._client.session.request = functools.partial(c._client.session.request, timeout=2)

partial 这个神奇的魔法可以设置一个默认参数。其它地方传入了别的timeout也可以自行覆盖,无缝兼容。

Posted

stdout

信息时代 的 娃

家里的娃逐渐长大,TA在车上喜欢听的歌曲就翻来覆去奥特曼的 OP 和 ED。然后想引导TA 们听点别的,QQ音乐又没有买会员,一些好的大部头作品,能搜出来的就是各种翻唱或者自媒体的同标题蹭流量的垃圾作品,很无奈。

想起来自己小时候虽然家庭条件一般,但是也是买了收录机和一些经典磁带,能够把自己喜欢的歌曲反复听个够。反复听歌有个好处,那就是专注力的训练,和重复带来的高准确度记忆。现在的娃听歌,由于点播太方便,经常听一半就切歌,然后上一次点的不一定能recall点出来。还有版权的原因,前一阵加星的歌可能过一阵就听不了了。这样的环境,只能培养出很糟糕的听众和很低的欣赏水平吧。

也恰好从【箭厂视频】消失了20年后,中国黑胶唱片工厂复活 看到一个评论,很是有感触

ikyokyo 2017-08-18 13:27
作为一个黑胶时代过来,并且家里曾经有过黑胶唱片机的人,我想分享一些当年的旁门左道和玩黑胶奇技yin巧,这些事不是每个听黑胶的人都知道,有些人知道也不会说。
1.黑胶唱片机到后期,已经十分自动化了,按下播放键以后,唱针会自动挪到唱片开始的位置,然后缓缓下降,按下停止键或者放完以后也会自动停止并归位,一切都是由机械实现的。
2.换歌需要手动把唱针抬起来,然后把摇杆掰到对应位置,因为唱片不像CD那样有专门的区域存储时间码,至于怎么判断一首歌在什么位置,用肉眼看就行了,唱片的记录密度很低且都是明文,两首歌中间的空白部分由于没有声音,会有一条深色的印记。
3.同样地,你可以用肉眼看出音乐哪些地方是高潮,哪些地方是低谷,高潮部分因为音量较大,乐器较多,所以花纹刻得较深,安静的部分反之。甚至可以通过整个唱片的花纹判断是摇滚乐还是古典乐。
4.即使不插电你也一样可以听唱片,早年的唱片机就是这样工作的,而且有意思的是,如果你不接喇叭只开唱片机,耳朵凑近唱针那里依然可以听到十分微小的声音。
5.你可以在唱片机出于待机状态时,自己把唱针掰到唱片上,然后用手去转唱片,你将听到十分不均匀的跑调声音,你还可以把唱片倒转,就能听见倒放。还有一种变态玩法,就是把唱片故意歪着放, 这样唱片和唱针会来回摇摆,速度也会忽高忽低,一些老电影里可以看见军方或者坏蛋用这种方法折磨人。
6.唱片永远不会出现CD那种刺耳的磕绊,但唱片一样会卡碟,如果遇上唱片设计不佳,或者唱机故障等原因,唱针在放完一圈后又跃迁回去了,唱机就会在一小段旋律间反复循环,中间会有“嘭”的一声。
7.盗版唱片很难达到正版音质,因为盗版商除非跟唱片厂勾结,否则拿不到母版,所以说数字音乐时代的到来一定程度上是助长了盗版。

现在想起来,磁带/唱片/CD这个东西是有「灵气」的,是一个很好的交互体验:

  • 具体的歌集和磁带的实物是一一对应的,你在数码时代,你无法回忆起那个下雨天把磁带插入收录机的心情。
  • 数码时代没法根据封面检索。孩子们缺乏音乐对 visual 艺术上的关联。
  • 你还可以自由对歌曲进行翻录、对 instrumental/配乐版 进行自我陶醉的二创
  • 订阅制的streaming service,这对我们这一代习惯了 ownership 的人来说很不安。你购买了,不一定你以后能随时播放,你会员失效了或者账号被夹,你就不能听你「买」过的歌了。
  • 最重要的,孩子们对歌词是没有「字面意义」的理解,他们永远想不到我们小时候会为了一首喜爱的歌,在课堂上偷偷手抄歌词。

第二个故事,娃在一个玩具,百变魔尺,能自己编一个简单的刀剑、枪的形状玩,但是更复杂的结构就做不出来了。看到卖家秀的各种玩意很是想学会,但是视频动作太快,拍摄角度非常不利于学习。娃由于已经近视,所以对TA看LCD屏幕设备也是比较忌讳,所以只是给他看一会儿。于是我回忆起小时候拿一本折纸书反复琢磨,于是去 yangkeduo 上搜了一下纸质的魔尺教程材料,销量居然只有区区几十,我不明白成百上千的娃是怎么学会魔尺的高级玩法的。都靠自己琢磨吗?还是娃自己从手机/Pad上获得?

所以最近一直被这个问题困扰。信息时代对当代社会来说是怎么样的 impact。家长持有手机和数码设备,对着信息有绝对的掌控权,可以指定什么时候看什么东西,娃和我们小时候比起来,更像是家长和老师附庸,缺乏一个自由探索的条件。虽然网上好东西多,但是在TA们对自由点播和检索的内容有把控能力之前,TA们的资讯获取能力恐怕是及其狭隘和封闭的。加上国内的在线平台质量又参差不齐,容易看「歪」的东西上瘾。更不幸的是,他们这代人又伴随这平庸出版物的极大丰富,比如被很多人喷三观有问题的《米小圈》《姜小牙》,恰好是娃的最爱。对严肃(aka 枯燥)一点的纸质内容,他们又非常不耐受,有典型的数码戒断反应。唉。

这或许是我家娃自己的原因,或者是我作为家长的问题,但愿是我想多了

Posted

stderr

Zizek 和盗版

齐泽克先生在2007 年第一次到中国来访问,他在我们这里待了一个星期,他讲了一个故事,是跟中国有关的。他讲了什么呢?就是有一天,他在美国的录像店门口,看到这么一句话:“不要买盗版光碟,买盗版,就等于支持共产主义”。因为,很大一部分盗版光碟都是中国生产的,所以美国人非常恼火这个知识产权的问题。齐泽克跟我说:“一看到这个标语我就非常兴奋,我就偏要买盗版”。这是为什么呢,因为这些左派思想家有个非常重要的观点是,数码时代实际上是私有制真正破产的时代,因为复制太容易了。我们后面讲到鲍德里亚就会讲到文本的消失,就是拟真性是讲什么呢,是讲过去我们有个手稿,一写一个手稿然后很珍贵。现在我们有电脑,就大家在电脑上面写作业的时候有没有想过一个问题:以后我们是一个无档案的时代,因为你没有原始手稿,你最后交给出版社的,如果你没有故意储存,也就是说每修改一次储存一次的话,你修改的痕迹都没有。所以齐泽克在南京,他跟我讲,哪有卖盗版的?我就是要买!

如何看待俄虚拟主播因翻唱《喀秋莎》被索要版权费? 看到的 张异宾:《鲍德里亚:欢迎来到真实的荒漠——从电影<骇客帝国>谈起》。后者有从 尼康D800讲到奥迪A6讲到 iPad 非常有趣,值得一读。

Posted

stdin

Microsoft 官网的 403 错误

$ curl -H "User-Agent: User-Agent: Mozilla/5" -kvs 'http://www.microsoft.com'
*   Trying 118.123.102.107...
* TCP_NODELAY set
* Connected to www.microsoft.com (118.123.102.107) port 80 (#0)
> GET / HTTP/1.1
> Host: www.microsoft.com
> Accept: */*
> User-Agent: User-Agent: Mozilla/5
>
< HTTP/1.1 403 Forbidden
< Server: GHost
< Content-Length: 306
< Content-Type: text/html
< Mime-Version: 1.0
< Expires: Wed, 29 Dec 2021 14:42:28 GMT
< Cache-Control: max-age=0, no-cache
< Pragma: no-cache
< Date: Wed, 29 Dec 2021 14:42:28 GMT
< Connection: keep-alive
<
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>

You don't have permission to access "http&#58;&#47;&#47;mscom&#46;errorpage&#46;failover&#46;com&#47;403&#47;403&#46;htm&#63;" on this server.<P>
Reference&#32;&#35;18&#46;1c697b76&#46;1640788948&#46;3b971c1f
</BODY>
</HTML>
* Connection #0 to host www.microsoft.com left intact
* Closing connection 0

不知道为何会指向 http://mscom.errorpage.failover.com 这域名也不是微软的。

Posted

stdout

Chrome 阉割指南

不折腾不舒服。继之前 Edge调教 之后记录一下 Chrome V70怎么阉割。

下载:

win 32 | win 64 | Mac

上面的链接已经年久失修了,对比了一下获取最新版本的脚本发现 Google 已经不提供老链接了。

curl -vsk 'https://tools.google.com/service/update2' -HContent-Type:text/xml --data-binary "<?xml version='1.0' encoding='UTF-8'?>
<request protocol='3.0' sessionid='{est-blog}' installsource='ondemandcheckforupdate' dedup='cr'>
<os platform='mac' version='66.6.6666.66' arch='x64'/>
<app appid='com.google.Chrome' ap='' version='' nextversion='' lang='' brand='GGLS' client=''><updatecheck/></app>
</request>"

安装完毕之后

cd '/Applications/Google Chrome.app/Contents'
touch Frameworks
sudo chown root:wheel Frameworks
sudo chmod 000 Frameworks

cd ~/Library/Google
rm -rf GoogleSoftwareUpdate
touch GoogleSoftwareUpdate
sudo chown root:wheel GoogleSoftwareUpdate
sudo chmod 000 GoogleSoftwareUpdate

Posted

stdout

认识「洋节」

都说 xmas eve 是洋节,我们就来数一数到底有哪些洋节

  1. 元旦1月1日。由北「洋」军阀袁世凯设立。依据是内务部总长朱启钤《定四季节假呈》,把原来农历(夏历)的正月初一的「元旦」挪用到了格里历一月一日。格里历(Gregorian calendar)引入中国是1912,元旦正式生效是1914年。
  2. 春节。严格的来说,传统春节是二十四节气中的“立春”,是太阳历。后来被袁世凯直接拍板成农历正月初一。而夏历正月初一一般被认为是最接近立春之朔日(月缺之日)。农历最后一次农历大改版为《授时历》,发生在崇祯二年(1629年)九月,由礼部左侍郎徐光启发起,编撰者:耶稣会的龙华民(西西里人)、罗雅谷(米兰人)、邓玉函(瑞士人)、汤若望(日耳曼人)。
  3. 生肖其实不跟农历绑定,而是跟 二十四节气绑定。二十四节气最后一次改版,也是上面那个《时宪历》那帮洋传教士定下来的。有意思的是,春分那一天恰好开始白羊座,其实我最近才知道二十四节气就约等于12星座,也就是黄道十二宫。如果要说农历《时宪历》含洋量太高,那么他之前的《授时历》编撰者是河北人郭守敬,生于元太宗(窝阔台)三年(1231年)于邢州,由他祖父郭荣(金国人)抚养成人,说起来这老兄甚至顺着蒙古人统治下的锡伯利亚去过北极科考,同一位尼泊尔建筑师阿尼哥合作搞过天文台,十分了得。
  4. 妇女节,全称为「“三八”国际劳动妇女节」。1857年3月8日,美国纽约的制衣和纺织女工走上街头,抗议恶劣的工作条件和低薪。尽管后来当局出动警察攻击并驱散了抗议人群,但这次抗议活动促成了两年后的3月第一个工会组织的建立。1917年3月8日,在俄罗斯帝国首都彼得格勒,纺织女工举行罢工及游行,遍及整个城市,也导致俄罗斯革命的开始。
  5. 清明节,二十四节气之一。太阳到达黄经15°
  6. 劳动节,1884年,劳动骑士团 Knights of Labor 倡导「8小时工作制」;10月,行会与工会联盟召开大会确定1886年5月1日为要求八小时工作制成为标准的日期,美国工会准备举行总罢工支援;1886年5月1日,数千名参加罢工和参加全美各地举行的集会的工人唱起了《八小时》(Eight Hour)一歌;接下来发生干草市场屠杀(Haymarket affair)。
  7. 端午节,据传是为了纪念恨国诗人屈原,来自「蛮夷」楚国
  8. 儿童节。1949年11月国际民主妇女联合会在苏联莫斯科所召开的执行委员会议,会上为纪念悼念1942年捷克利迪策村对儿童的屠杀及伤害,以及全世界所有在法西斯侵略战争中死难的儿童,为保障世界各国儿童的生存权、保健权和受教育权及改善儿童的生活,决议以6月1日为国际儿童节。1949年12月23中央人民政府政务院第十二次政务会议于日通过了《全国年节及纪念日放假办法》,其中规定6月1日为儿童节。
  9. 建军节,由 契丹苏维埃共和国 (Kitajskaja Sovetskaja Respublika, Кита́йская Сове́тская Респу́блика) 于1933年6月决定,将8月1日定为中国工农红军的建军节。
  10. 圣纪节,穆罕默德的诞辰与逝世恰巧都在伊斯兰教历三月十二日,回回三大节之一。

再说一下真正被 appropriation 的「洋节」

  1. 圣诞节。异教徒的节日,四舍五入冬至日,古埃及太阳神 Ra 的节日,被(东)罗马帝国拿来宣传成中东人耶稣的生日。。。摊手。。。比如犹太人就不过圣诞节,但是他们在这一天吃中餐
  2. 母亲节,由12岁女孩安娜·贾维斯(Anna Jarvis)发起,被商家利用,安娜用下半辈子反对母亲节
  3. 父亲节:抄袭母亲节。

Posted

stdout

如何可视化跟踪分析 Python import 耗时

首先在本地安装 pip install tuna

然后跑个分,需要 CPython >= 3.7,输入

PYTHONPROFILEIMPORTTIME=1 python3 myscript.py 2>1.log

tuna

然后 tuna 1.log ,会自动打开浏览器围观 import 耗时分布。

Posted

stdout

4句话自动换win10壁纸

  1. 获取当前用户 sid。cmd下设变量如此复杂。而且 | 的转义字符居然是 ^|
  2. 读取 LogonUI 的自动壁纸。reg query输出极其不友好。需要 tokens=3
  3. 设置为当前桌面。
  4. 刷新。这个属于按运气成功。真正刷新的需要调用 dll 。算了
for /f %%g in ('wmic useraccount where name^="%USERNAME%" get sid ^| findstr ^S\-d*') do set USERSID=%%g
For /f "tokens=3" %%k IN ('reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Creative\%USERSID%  /s /v  landscapeImage /t REG_SZ ^| findstr /ri "REG_SZ"') do set img_path=%%k
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d %img_path% /f
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 

之前的方法搞复杂了

Posted

stderr

FastAPI/Starlette支持静态文件支持SPA

FastAPI 官方支持 from fastapi.staticfiles import StaticFiles 充当一个静态文件服务器

其实实现是 starlette。这玩意可以在 directory 下放一个 404.html,恰好单页应用也需要用 index.html 充当所有 javascript 框架注册的 router

只是有一个毛病,这货返回的 HTTP status code 是 404。用起来没啥大毛病,但是就是浏览器不会记录网址,导致没法匹配浏览历史快速找到之前访问过的页面。

拿来改改继续用

  from starlette.staticfiles import StaticFiles, Scope, Headers, Response, FileResponse

  class StaticFilesWithout404(StaticFiles):
      async def get_response(self, path: str, scope: Scope) -> Response:
          r = await super().get_response(path, scope)
          h = Headers(scope=scope)
          full_path, stat_result = await self.lookup_path('404.html')
          if isinstance(r, FileResponse) and r.path == full_path:
              if 'text/html' in (h.get('accept') or ''):
                  r.status_code = 200
              else:
                  return Response('', status_code=404)
          return r

  app.mount("/frontend", StaticFilesWithout404(directory="frontend", html=True), name="static")

这段代码大概是起到了类似 nginx try_files 的作用。默认静态文件映射一个目录,但是如果找不到就按根目录的 index.html 输出。这里还判断了请求的 accept 头,如果是 xhr/Fetch 就会直接返回一个0字节长度无MIME的404。

由此我想到了一个学究式的 leaky abstraction。众所周知,如果一个URL不存在,那么服务器应该返回404

但是现在都是 SPA 单页应用,都是先 200 返回 index.html 的内容,再由 javascript 的 router 去决定是否正常显示还是404 。所以返回 200 但是显示 404 就破坏了这个语义。如果要精确匹配SPA里的router如果不存在由服务器返回404,第一是搞 SSR,把前端那一坨代码跑在服务器端,第二种办法是 npm build 的时候输出一个可路由URL列表,然后部署的时候导入静态文件服务器更新。这个具体实现就留作homework由读者自行解决了。

Posted

stdout

人工构造Flask session模拟cookie登陆

有没有好奇为什么 Flask 配置必须要求一个 SECRET_KEY,然后就可以在浏览器保存一个 session 状态读写数据。

这里记一下它的底层实现,其实需要依赖的包是 itsdangerous

  import hashlib
  from itsdangerous import URLSafeTimedSerializer
  URLSafeTimedSerializer(
          'YOUR_SECRET_KEY',  # flask SECRET_KEY
          'cookie-session',  # from flask.sessions.SecureCookieSessionInterface.salt
          # serializer=TaggedJSONSerializer(),
          signer_kwargs={'key_derivation': 'hmac', 'digest_method': hashlib.sha1}
  ).dumps({
      "your_key": "your_value"
  })

别人如果拿到你的 SECRET_KEY 就可以伪造任意 session cookie 了

Posted

stdout

苏35的UI汉化

原文禁止转载,那我就转载原文的原文

日前,俄罗斯《消息报》采访了俄罗斯无线电电子技术集团(俄罗斯技术集团下属企业)副总经理吉维∙占季加夫,该集团是苏-35几乎所有航电系统的研制生产单位。
占季加夫表示,“根据订购方的国情要求改装机载设备是重要的技术程序之一,一年多来我们都在致力于将驾驶舱内的信息翻译成汉语。但是,不像斯拉夫和拉丁字母,汉语的象形文字“很难”在LCD显示器上阅读。最终,中方要求维持原样,即显示器上保留西里尔字母。中国飞行员已有驾驶俄苏-27战机的飞行经验,该飞机的驾驶舱同样没有为中国进行改装,但飞行员们‘阅读’俄语的机上信息。”
该报称,苏-35显示器上译成汉语的仪表读数说明和指令太过微小和模糊,以致难以阅读。通过扩大显示器的尺寸可以解决该问题,但这样就要彻底改造驾驶舱,研制和试验需要额外的资金和时间,中方伙伴并不希望这样。
报道还指出,提供给中国的苏-35飞机唯一的特殊之处是在机载系统中加入了中国的“北斗”卫星导航系统。

中文字库还是很大的,渲染也麻烦。

Posted

stdin

Python 3.X ctypes 和 greenlet size changed 坑三则

安装 setup.py 的时候 No module named '_ctypes' 报错

  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/usr/local/python3/lib/python3.9/site-packages/setuptools/__init__.py", line 18, in <module>
      from setuptools.dist import Distribution
    File "/usr/local/python3/lib/python3.9/site-packages/setuptools/dist.py", line 34, in <module>
      from setuptools import windows_support
    File "/usr/local/python3/lib/python3.9/site-packages/setuptools/windows_support.py", line 2, in <module>
      import ctypes
    File "/usr/local/python3/lib/python3.9/ctypes/__init__.py", line 8, in <module>
      from _ctypes import Union, Structure, Array
  ModuleNotFoundError: No module named '_ctypes'

解决办法是不要用 3.9。

如果实在要用,则自己编译前需要加上 yum install libffi-devel 或者 sudo apt-get install libffi-dev

来自SO

greenlet.greenlet size changed 然后出错

/usr/local/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C header, got 152 from PyObject
  return f(*args, **kwds)
/usr/local/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C header, got 152 from PyObject
  return f(*args, **kwds)

Segmentation fault (core dumped)

这个摘自官方 iseue

On Python 3.7 and higher, gevent 20.9.0 is required to use (a standard build of) greenlet 0.4.17.

解决办法:pip install gevent==20.9.0 pip install greenlet==0.4.17

SQLAlchemy 1.4 大战 greenlet 0.4.17

sqlalchemy changelog

to accommodate for the handling of Python contextvars (introduced in Python 3.7) for greenlet versions greater than 0.4.17. Greenlet version 0.4.17 added automatic handling of contextvars in a backwards-incompatible way; we’ve coordinated with the greenlet authors to add a preferred API for this in versions subsequent to 0.4.17 which is now supported by SQLAlchemy’s greenlet integration. For greenlet versions prior to 0.4.17 no behavioral change is needed, version 0.4.17 itself is blocked from the dependencies.

然后就直接在 setup.cfg里greenlet != 0.4.17了。

神仙打架,不听不听,和尚念经,果断 sqlalchemy==1.3.24 降级。

Posted

stdout