蓝莲花公益小组简报
愿每个人心里,都盛开着永不凋零的蓝莲花 从2021年11月第一次发起刷题公益计划,到现在也一年多时间了。起初是为了让大家有一些特殊的动力去刷题,所以有了这样的基础规则 1题一元人民币,在打卡后向公益基金捐款。 基金池最开始由群主承担,后续有超过25位+群友集体捐款 再后来,这个群就发展成了基于技术的各种闲聊群,推荐番毒害群友群。 到目前也差不多一年多时间了,写个简报回顾一下 一、刷题公益计划截至目前,从2021年11月开始,到2022年6月作为一个阶段的结束。 共计捐款 1625 元人民币 在2022年6月,经过群友同意,再经过一轮扩资后,蓝莲花小组向一个村小项目捐款 6000 元人民币 前不久得到反馈,这笔钱已经用在应该用的地方了。开心 二. 技术分享从2022年6月开始,群友决定在群内以一周两次的频率进行分享,截至目前举行了八次分享 SRE 二三事 当前端在讨论字体时,我们在讨论什么 编译原理入门到出家 OLAP 入门出家 简单聊聊家庭网络 Homelab 101 稳定性建设101 物联网简介 三....
排查一个特殊的 No space left on device
好久没写水文了,新年第一篇水文总得写一下,完成下 OKR,正好最近帮群友查了一个特殊的 No space left on device 问题,记录一下。 问题半夜接到群友求助,说自己的测试环境遇到了点问题,正好我还没睡,那就来看一下 问题的情况很简单, 用 docker run -d --env-file .oss_env --mount type=bind,src=/data1,dst=/cache {image} 启动了一个容器,然后发现在启动后业务代码报错,抛出 OSError: [Errno 28] No space left on device 的异常 这个问题其实很典型,但是最终排查出来的结果确实非典型的。不过排查思路其实应该是很典型的线上问题的一步步分析 root casue 的过程。希望能对看官就帮助 排查首先群友提供了第一个关键信息,空间有余量,但是就 OSError: [Errno 28] No space left on device 。那么熟悉 Linux 的同学可能第一步的排查工作就是排查对应的 inode...
Stay Simple, Stay Naive
本来想在农历年前交年终总结的,不过想了想,去年的年终总结就因为太懒导致我鸽了。所以这个“双年”怎么也得总结下2022了。不过说起来怎么还没去字节,就开始 ego 了起来。 开篇实际上每年都在觉得这一年很魔幻,但是下一年总会跳出来说“这一年更魔幻”。不过这也是人生的乐趣吧。 看了下20年总结的标题叫做”但行好事,莫问前程“,去年一下想不起标题,群内求助了下,发现”Stay Simple,Stay Naive“这个标题还不错,挺适合作为去年的总结与展望的。不过在写下这点文字的时候发现当年 +1S 的对象也已经仙去了。怎么说心里也还是有点很奇怪的感觉在里面。 不过,一日膜法,终身膜法,所以就还是 Naive 的 +1S 吧 生活去年从年初开始,我从太极图形离职后,就开始进入了我数字游民的生活。作为一个...
我所热爱的开源社区
今天是个不错的日子,最开始由我带进 nerdctl 社区的 @yuchanns 因为其很活跃的表现被项目的主要维护者 @AkihiroSuda 推荐成为了项目的 maintainer,参见 nerdctl#PR1540。而我也在这个项目中被提名成为 committer,参见 nerdctl#1539。加上今天的公益群有太多关于开源的讨论,所以我想写篇文章记录下我自己的经历,希望能帮助更多的人热爱开源,拥抱开源。 为什么我会参加开源我参与的第一个开源项目,应该是能追溯到16年,我还没有本科毕业的时候,当时的我参加了 稀土掘金翻译计划(slogan 里说的最好的英文技术资讯翻译项目,我觉得毫不夸张),在这个项目里我第一次接触到了 Git Workflow,也完整接触到了 GitHub 这个世界最大的同性交友社区(大雾(不过我相交至今对我帮助巨大的几位密友真的是通过这个项目结识的)。而我第一个参与的代码项目,应该可以追溯到17年3月,我给 Sanic 这个项目新增了一个 Code Example,参见...
重回 Windows 之路
最近会回到 Windows 下办公了两周多,简单记录下自己的使用体验 背景最近刚配置了一台高配的主机(i9-13900k+4090),之前的 MBP 沦为开会本,开始尝试把 PC 作为主力机使用,由于驱动太新没搞上合适的 Linux 发行版,Ubuntu 系动不动又在“Ubuntu 内部错误”,所以我开始使用 Windows 作为自己的工作生活主力机。两周使用下来发现 Windows 的使用体验还是超出我的预期了。下面大概聊聊 优点时隔多年主力使用 Windows,感觉进步还是蛮大的,主要体现在 系统交互上 开发者体验上 系统交互上,Windows 吸收了不少其余的系统和软件的精髓,感觉进步不小,写几个我印象里比较深的吧 开始菜单栏进行了改进,比之前感觉更好用了 File Explorer 的改进,比如支持 Tab 什么的,还是很舒服的 非常优秀的分屏功能,将窗口拖到屏幕上方就能选择不同的分屏比例和应用,同时在切换任务的时候,有 Task Group 的概念。这不比 macOS 高了不知道10个 Linux? 全局深色主题支持比之前好很多了 整体使用下来,体验比前面的...
容器 CPU 和 Memory 限制行为简述
这篇是给之前没啥容器经验的选手准备的一篇文章,主要是讲一下容器的 CPU 和 Memory 限制行为。 CPU 限制首先 Mac 或者是 Windows 选手在使用 Docker Desktop 的时候,会设置 Docker Desktop 的 CPU 限制,默认是 1,也就是说 Docker Desktop 只能使用 1 个 CPU。这是因为 Docker Desktop 裹了一层虚拟机(Windows 下应该是 WSL2/Hyper-V,Mac 下可能是 QEMU)。这相当于我们在一个特定 CPU 数量的宿主机中跑 Docker 首先提到 CPU 限制,本质上是限制进程的 CPU 使用的时间片,在 Linux 下,进程存在三种调度优先级 SCHED_NORMAL SCHED_FIFO SCHED_RR 1 用的是 Linux 中 CFS 调度器,而常见普通进程都是 SCHED_NORMAL 。OK 前提知识带过 说回容器中的 CPU 限制,目前主流语境下,容器特指以 Docker 为代表的一系列的基于 Linux 中 CGroup 和 Namespace...
Leetcode Weekly Contest 287 题解
好久没打周赛了,打了一次周赛,简单的写个题解 2224. Minimum Number of Operations to Convert Time题面: 1234567You are given two strings current and correct representing two 24-hour times.24-hour times are formatted as "HH:MM", where HH is between 00 and 23, and MM is between 00 and 59. The earliest 24-hour time is 00:00, and the latest is 23:59.In one operation you can increase the time current by 1, 5, 15, or 60 minutes. You can perform this operation any number of times.Return the minimum number of...
简单聊聊在 Linux 内核中的网络质量监控
这可能是2021年最后一篇文章(农历年),也可能是2022年第一篇文章,不过这完全取决于我什么时候写完。这次来简单聊聊 Linux 中的网络监控 开篇这篇文章,既是一篇水文,又不是一篇水文。不过还是新手向的一个文章。这篇文章实际上在我的草稿箱里呆了一年多的时间了,灵感最初源自我在阿里的一些工作(某种意义上算是国内领先的(但也是比较小众的工作(XD 随着技术的发展,大家对于服务的稳定性要求越来越高,而保证服务质量的前提就是有着合格的监控的覆盖面(阿里对于服务稳定性的要求叫做 “1-5-10” 即,一分钟发现,五分钟处理,十分钟自愈,而这样一个对于稳定性的要求没有足够的覆盖面的监控的话,那么一切等于圈圈)。而在这其中,网络质量的监控是重中之重 在讨论网络质量的监控之前,我们需要来明确网络质量这个定义的覆盖范围。 网络链路上的异常情况 服务端网络的处理能力 在明确这样的覆盖范围后,我们可以来思考什么样的指标代表着网络质量的降低。(注:本文主要分析 TCP 及 over TCP...
简单聊聊容器中的 UID 中的一点小坑
今天不太舒服,在家请假了一天。突然想起最近因为一些小问题,看了下关于容器中 UID 的东西。所以简单来聊聊这方面的东西。算个新手向的文章 开篇最近帮 FrostMing 把他的 tokei-pie-cooker 部署到我的 K8S 上做成一个 SaaS 服务。Frost 最开始给我了一个镜像地址。然后我啪的一下复制粘贴了一个 Deployment 出来 123456789101112131415161718192021222324252627282930313233apiVersion: apps/v1kind: Deploymentmetadata: name: tokei-pie namespace: tokei-pie labels: app: tokei-piespec: replicas: 12 selector: matchLabels: app: tokei-pie template: metadata: labels: app: tokei-pie spec: ...
聊聊 sk_buff 中一个冷门字段: nohdr
今天遇到一个很有意思的问题,“nohdr 字段到底有什么用”,在这里写个水文简单记录一下 正文前情提要首先来说,不管介绍再冷门的字段,既然涉及到 SKBUFF ,那么就得先来对 sk_buff 做个简单的介绍 简而言之,sk_buff 是 Linux 网络子系统的核心数据结构,从链路层到我们最终对数据包的操作,背后都离不开 sk_buff sk_buff 要完全讲解基本就相当于把 Linux 网络系统完全讲解了,所以讲完是不可能讲完的,这辈子都不可能的! 简单聊几个关键,可能会帮助大家理解我们本文提到的冷门字段 nohdr 的关键字段吧 首先来讲,最重要的三个字段:data ,mac 和 nh ,分别代表着当前 sk_buff 的数据区的起始地址,L2 header 的起始地址,L3 Header 的起始地址。用一个图方便大家理解 看了图的同学可能会有点明白了,实际上在内核里,也是一层一层的通过指针偏移,不断的添加新的 header 来处理网络请求。和我们直觉相符。可能有同学会问,我既然知道 L3 Header 的起始地址,IP 之类的 L3 协议的 header...