Linux 上关于 inotify 的小笔记
最近还是无心写啥文章,说好的写几篇关于 Raft 的论文也因为一些事 delay 了。但是想了想还是准备写点什么,于是写个小的水文来记录下关于今天碰到的一个 Linux 内核参数的问题, 顺便做个笔记 开始我是一个不太喜欢 Mac 的人,所以我自己在家使用的开发环境是 Manjaro(这里打个广告,非常棒的发行版,堪称开箱即用,广告五毛一条)。然后代码工具就是 Jetbrains 的全家桶和 VSCode 搭配使用。 今天打开 Goland 的时候,发现 IDE 给了这样一个 Warning ,External file changes sync may be slow: The current inotify(7) watch limit is too low. 于是大家知道,我是个看着这些 warning 有强迫症的人,于是我就去查了查 简单聊聊我们平常经常会有需求,去监控一个文件或者一个目录下的变化,比如创建文件,删除文件等。我们常规的做法可能是一个直接暴力轮询的方式来做 但是这样的性能会极差。那么我们有没有什么手段来处理一下这个事么? 有的! Linux 提供了对应的...
随便聊聊 PEP570
最近沉迷与 MIT 6.824 这门分布式系统的课,无心写文章。不过看到 PEP570 被接受了,决定还是写篇水文随便聊聊 PEP 570 Python 的 argument在聊 PEP570 之前,我们先要来看看 Python 的 argument 变迁 早在 Python 1.0 或更早,Python 的 argument 系统就已经支持我们现在主要使用的两种参数形式了,一种是 positional 一种是 keyword,举几个例子 1234567891011def abc(a, b, c): passabc(1, 2, 3)abc(1, 2, c=3)abc(1, b=2, c=3)abc(*(1, 2, 3))abc(**{"a": 1, "b": 2, "c": 3}) 这是不是我们常见的集中使用方式? 在发展了很长一段时间后,虽然期间有一些提案对 Python 的 argument 系统做优化和增强,但是一直都被 Reject,直到 PEP3102 的出现 3102 主要引入了...
聊聊网络事件中的惊群效应
关于惊群问题,其实我是在去年开始去关注的。然后向 CPython 提了一个关于解决 selector 的惊群问题的补丁 BPO-35517。现在大概来聊聊关于惊群问题那点事吧 惊群问题的过去惊群问题是什么?惊群问题又名惊群效应。简单来说就是多个进程或者线程在等待同一个事件,当事件发生时,所有线程和进程都会被内核唤醒。唤醒后通常只有一个进程获得了该事件并进行处理,其他进程发现获取事件失败后又继续进入了等待状态,在一定程度上降低了系统性能。 可能很多人想问,惊群效应为什么会占用系统资源?降低系统性能? 多进程/线程的唤醒,涉及到的一个问题是上下文切换问题。频繁的上下文切换带来的一个问题是数据将频繁的在寄存器与运行队列中流转。极端情况下,时间更多的消耗在进程/线程的调度上,而不是执行 接下来我们来聊聊我们网络编程中常见的惊群问题。 常见的惊群问题在 Linux 下,我们常见的惊群效应发生于我们使用 accept 以及我们 select 、poll 或 epoll 等系统提供的 API 来处理我们的网络链接。 accept 惊群首先我们用一个流程图来复习下我们传统的 accept...
关于 pyright
关于 pyrightPEP 484,出来也快四年了。正好今天看到一个新库,写个短文,安利下&吐槽下。 关于 PEP 484PEP 484,14年正式提出,15年正式接纳,成为 Python 3.5 以后的标准的一部分。简而言之是通过额外的语法,来为 Python 引入静态类型检查的例子 举个简单例子 1234def return_callback(flag: bool, callback: typing.Callable[[int, int], int])-> int: if not flag: return None return callback(1, 2) 我们通过这样的类型静态标注,来增加可读性以及静态检查的能力。具体内容,可以参看我去年在 BPUG 上的分享的 slide。我最近也会抽出时间,详细聊聊 Type Hint 的前世今生(flag+1) 静态检查静态检查的意义在于,能及时发现低级错误,及时检查,可以很方便的集成进 CI 或者 Git Hook 中 举个简单例子 目前而言,主流的静态检查工具有两种 Python ...
2018,我,2019,未来
2018,我,2019,未来本来以为年前没有机会发这篇年终总结以及新年展望。不过目前去向已经确定,所以准备还是写一篇文章纪念下2018这一年,赶在农历戊戌年的末尾发一篇文章出来吧。 2018,我2018 的这一年算是很特殊的一年,我的本命年,24岁,第二次有意识的状态下过农历狗年。但是可能因为我一整年都没穿红内裤吧。所以整个人生算是起起伏伏,跌跌撞撞。 原本以为自己可能有很多话想说,但是真正要写的时候却发现不知道从何说起。所以干脆随意记点流水账吧 工作一整年的工作算是有条不紊的进行,去年,阿不,前年一整年都在做基础组件和快照这类基础服务的开发。今年因为搭档出差和转组的关系接触了下业务。虽然期间发生了不少的意外,但是也算是有一个不错的结果。也认识了不少的朋友。 但是最大的收获还是在于对自己的认知发生了改变。曾经以为自己能妥善的处理业务与基础服务的不同场景。过早的把自己定位在一个万金油的角色上,但是就目前看来,当时的认知是错误的。我自己对于业务可能兴趣并不是太大,可能需要去专注的做基础服务的开发学习,才是比较好的出路。 而这样的认知的改变也直接造成了我后续的计划的改变和未来走向的...
听说我有女朋友
听说我有女朋友我很喜欢写听说系列文章,从入行开始写的第一篇《听说你会 Python》。所以半年了,我干脆也来写一篇《听说你有女朋友》。为啥要今天写?因为明天她送的新键盘要到了,正好老键盘退役,写点啥纪念下 怎么认识的?很多人都会问我这样的问题:”你一个技术男咋和学音乐的认识了?“,我一般这么回答:”知乎认识的“(请知乎给我广告费,明天之前打到我支付宝上 好了,正经说,我们的确算是在知乎上认识的(广告费+1)。当时我们在一个知乎群里,然后后面加上了好友。 很多时候,我这个人有个毛病,加了女孩子之后不怎么聊的。不过幸好,我们最开始有个共同的爱好,养猫。她家的是一只橘猫。我家是母女两。某种意义上讲,这三只猫是我们俩的媒人(回去加罐头) 正式开始聊起来,应该是开学的时候,她当时睡眠不太好。某天晚上,睡前戏称保佑她肯定睡得好之后。第二天她说昨晚居然还真睡得不错(直男如我我现在都不知道我的功力是不是有那么强。问她她也不说,摔) 借着这个契机,就开始聊了起来,包括不限于互相点外卖犒劳对方上课/上班的无奈。出来约了两次火锅(直男撩妹法) 11月初,当时做完18年的 PyCon,她说要送我一份...
去 async/await 之路
去 async/await 之路看到彭总写的文章这破 Python,感慨颇多,我也来灌水吧。 首先,我司算是在国内比较敢于尝试新东西的公司吧,最直接的提现就在于我们会及时跟进社区相关基础服务的迭代,并且敢于去尝试新的东西。嗯,从去年6月到现在,我司在线上推行了很长一段时间的 async/await ,并且引入新的注入 Sanic 这样全新的框架,但是不得不说,我们现在要对 async/await 暂时的说再见了。 我们为什么选用 async/await ?和我们组具体场景有关,我们组有相当一部分场景,是根据不同的 URL 去不同的子服务请求数据,组合之后,再进行下一步的统一处理。那么这个时候,传统的同步的方式在数据源越来越杂的情况下就显得很无奈。 我们当时有这样几个选择: 维护进程/线程池,利用通用的进程/线程来处理请求 利用 Gevent 这样第三方的 coroutine+EventLoop 方案 使用 async/await + asyncio 这一套 首先,1被我们排除了,原因很简单,太重了。2最开始也被我们暂时性的排除,当时我们对于 monkey-patch...
她曾以为自己能逃开教授的手丨人间
她曾以为自己能逃开教授的手丨人间 《不能说的夏天》剧照 之前听舍友笑薇被教授性骚扰时,小柯还以为那只是老师对好学生的亲昵行为,安慰她说:“这应该是老师表达欣赏你的一种方式吧。”但几天后她就也被教授性骚扰了。 陈静越来越焦虑。 她又梦见去上课,楼梯里遇到教授张鹏,转身想跑,对方一把手抓住她,恶毒地问:你为什么举报我?你把我逼急了,我也不让你活…… 在惊恐中醒来,陈静大汗淋漓。 早在今年“五四”青年节,她们五个女生给中大纪委发去了举报信,指控张鹏从2011年到2017年持续性骚扰女学生和女老师,是田野中名副其实的“叫兽”。 张鹏,中山大学社会学与人类学学院(下称“社人院”)兼生命科学大学院教授,跨学科博士生导师(生态学、社会学方向),兼任国际自然保护联盟(IUCN)物种生存委员会委员,2016年青年长江学者。在网络上搜索他的名字,无论是文艺青年的社交网路,或者是著名的科普网站,他会经常跟“灵长类动物研究”出现在一起。 1陈静的噩梦始于2016年1月底的内伶仃猕猴种群数量田野调查。 田野调查是中大社人院每年组织的特色研究活动。张鹏每年寒假都会带队去不同的岛“蹲点”和“环岛”...
外国语学院-情况说明
情况说明2018年4月23日上午,有微信公众号发布我院岳昕同学的《公开信》。学院第一时间向有关老师和同学了解情况,现作说明如下: 2018年4月22日下午和晚上,学院辅导员出于对学生的关心,通过多种方式、多次联系岳昕同学,均未能联系上,这种情况下,辅导员感到担忧。到23:30左右,该同学还未回到寝室。出于对同学安全的关心,辅导员与同学的母亲联系,询问岳昕同学是否回家等情况。该同学的母亲表示,孩子并未回家;之后,家长拨打电话未接,发微信未回,因此感到着急,随后赶到宿舍。此时,该同学已回到宿舍,母亲与其进行沟通。因担心影响其他同学休息,母亲决定和同学一起回家。 2018年4月23日上午,学院关注到网络上的相关信息后,与家长进一步沟通了情况,表达了关心。学院的老师与家长一样,都真心爱护学生、关心学生,既关心学生的学习,也关心学生的健康、安全与成长,老师和家长是善意的,态度也是一致的。 据了解,该同学已提交了毕业论文的部分初稿,指导老师也非常关心,给予了积极评价和悉心指导,并希望注意写作进度。 学院是学生成长成才的家园,老师们尽一切努力关心爱护学生,而这份关爱也意味着责任所在,学院、...
岳昕:致北大师生与北大外国语学院的一封公开信
岳昕:致北大师生与北大外国语学院的一封公开信北京大学的老师和同学:你们好!我是2014级外国语学院的岳昕,是4月9日早上向北京大学递交《信息公开申请表》的八位到场同学之一。我拖着极疲惫的身躯写下这段文字,说明近来发生在我身上的一些事情。 一4月9日之后,我不断被学院学工老师、领导约谈,并两次持续到凌晨一点甚至两点。在谈话中,学工老师多次提到“能否顺利毕业”、“做这个你母亲和姥姥怎么看”、“学工老师有权不经过你直接联系你的家长”。而我近期正在准备毕业论文,频繁的打扰和后续的心理压力严重影响了我的论文写作。 二4月20日中午,我收到了校方的回复。外国语学院党委书记、学工老师、班主任在场,党委书记向我宣读了学校对于本次信息公开申请的答复: 讨论沈阳师德的会议级别不够记录 公安局调查结果不在学校的管理范围里 沈阳公开检讨的内容因中文系工作失误也没有找到 这样的回复结果令我失望。但毕业论文提交即将截止,我只能先将心思放在论文写作上。 三4月22日晚上十一点左右,辅导员突然给我打来电话,但因为时间已晚,我并没有接到。凌晨一点,辅导员和母亲突然来到我的宿舍,强行将我叫醒,要求我删除手机...







