写日记的正经人 - 季羡林

在电影《邪不压正》中,关于写日记的经典对白是 "正经人谁写日记啊?" "是啊" "你写日记吗?" "我不写。你写日记吗?" "谁能把心里话写日记里?" "写出来的那能叫心里话?" "下贱!" 给我灌输一种感觉写日记的人往往是虚伪的。 然而,最近我看了季羡林先生两本书《牛棚杂忆》和《留得十年》,我不得不对季先生佩服的五体投地,眼角朦胧,鼻头发酸。 我在德国十年的日记,一天不缺,恐怕有一两百万字。–《留德十年》 做一件小事,坚持10年。 这是什么样动机,是因为毅力吗? 如果说做一件事让自己感觉很难,不想做,但是做了很长时间,可以称之为毅力。 我觉得除了毅力,更多的一种喜欢,一种习惯。一种把思想自然流露指尖,落笔成文的自然天性。 我不记得以前上学时,有没有度过季先生的。然而季先生的大名,还是略有耳闻的。 但是除了季先生的大名的,其他的事情,几乎不了解。 看了两本书书后,我不禁对季先生生有有一种心驰神往。 我不知道季先生原来是清朝末年的人。经历过清末、民国、二战、解放、文化大革命… 我不知道季先生原来去德国留过学,而且是是坐火车去的。 德国哥廷根的风景描写,让我脑海里呈现一种宫崎骏动画般画面。 我不知道原来季先生在德国还经历过二战。 我不知道季先生原来还在文化大革命中,数次被打倒。 季先生的文风朴实,感情自然流露。你能从他的文字中看到一个普通人懦弱与勇气、迷茫与坚持、欲望和克制。 我喜欢季先生的文风,也喜欢季先生的为人。 我觉得,归根结底,我喜欢真实,厌恶粉饰。

2025-01-21 21:57:06 · 1 min · Eddie Wang

2024年的最后三天 - 甲流来袭

28号 - 抗体 28号晚上,我觉得嗓子有点刺痛。因为前两周发过一次烧,我觉得这次嗓子痛应该不会是发烧的前奏了,毕竟身体是有抗体的。 我高估了之前产生的抗体。 29号 - 梦 从29号上午开始,身体就好像在温水煮青蛙,最高到达惊人的峰值40度。 为了控制体温,我先洗个热水澡,吃了布洛芬,躺在床上,拿了一块冰袋,裹在卫生纸里,搁在脑门上。身体挺直,裹着两层厚被。 长夜慢慢,睡睡醒醒。 我梦见自己变成了一棵树,脚上好像长出了根须,缓慢的往地下生长。穿过泥土,与蚯蚓擦肩而过。穿过岩石,被石油染黑。然而到达的却是一块冰山,冰冷坚硬。 手上长出了树干,像天空伸展,摊开自己的枝叶,还没等我享受片刻温暖,太阳仿佛飞速向我飞来,炙热的阳光让我瞬间枯黄,灰飞烟灭。 长夜慢慢,我不敢辗转反侧。我头上还顶着一块冰。 30号 - 发热门诊 终于熬到早上,再测试一遍体温,38度。 算了,还是去医院吧。 穿戴整齐,刚下楼,迎面吹来一阵冷风。我有种无法压抑的,想要咳嗽的冲动,但是我必须忍住,我知道这咳嗽必然“感天动地"。 风继续吹,我忍不住咳了出来,那感觉,仿佛有人伸手把我的气管从我的嘴巴里扯了出来。 到了医院,发热门诊是单独一层的小房子,和气派的十几层的门诊大楼相比,简直像个保安室。 发热门诊虽小,但也五脏俱全。 进门先做鼻拭子,量体温,挂号。 再做血液分析,然后就排队等叫号。医生看了报告,说我是甲流,开了两盒药,一盒抗病毒,一盒用来退烧。 从医院出来,已经中午。我走进医院旁边的永X大王,准备随便吃点。 我挑了一个座位,扫码下单,点了馄炖、蒸蛋、豆浆、银耳莲子羹。 等餐期间, 我发现对面有个中年人大叔,穿这黑色的宽大的羽绒服,胡子拉碴、头发稀少, 他时不时的巡视着其他的人。 没过过久,我等到自己的餐。 馄炖上撒了淡黄的鸡蛋丝和黑色海苔碎,鸡蛋丝吃起来像绳子,海苔碎味同嚼蜡。混度汤非常浑浊,像是用了一天的澡堂池子水。馄炖我就吃了一个,就放弃了。 蒸蛋应该是预制菜,放在黑色塑料小杯中,应该是微波炉加热的。我吃了一口,味道奇怪。 豆浆没什么好说的,毕竟也味道也没有下降空间了。 银耳莲子羹还不错,我都个喝完了。 吃饱喝足,顺便我把医生给我开的药也吃了,我起身离开,刚走到餐桌不到2米, 就瞥见那个大叔匆匆走向我的餐桌。 急诊室 我吃完饭,回到家,每隔一个小时测一次体温,体温很稳定,稳定在38度左右。 一直到晚上,我的体温还是没怎么下降。 老婆给我打电话,说让我赶紧去急诊,去输液,光吃药效果不好,高烧不退会要人命的。 但是我觉得没必要,因为尽然发热门诊的医生都没有让我输液,说明我不需要输液,或者说输液也没有多大作用。 老婆说:“你想让我中年丧夫吗?” 我无话可说,只能默默穿上衣服,带上口罩,去了早上那家医院的急诊。 晚上9点急诊室人来人往,络绎不绝,仿佛是白天的门诊。 我挂上号,接着又等了将近1个小时,终于等到我了。 给我看病的是位女医生。 ”医生,我在你们医院发生门诊早上就看过了,诊断是甲流,药也吃了,到现在还是38度,还是给我输液吧。“,我说 ”甲流不是一天两天能好的,至少要发热三天,而且输液效果也不大“,医生说 “那我也烧了两天了,再烧下去人要烧没了。你给我开个输液的吧” “好的吧,那我就给你开一次输液,你看看效果” 一顿拉扯,我终于能输液了。其实输的也不是什么特殊的东西,就是一带左氧和一袋维C。 输完液,已经晚上11点50,叫了车,回到家里。感觉嘴巴好苦,还好家里有甜的冰糖心苹果。 我啃完第一个苹果,每一口都是苦味。接着我再啃一个苹果,每一口都还是苦味。 如果不是因为发烧,我简直立即想去吃点火锅底料漱漱口。 归梦 睡觉前,我又量了一次体温。体温恢复到37度,看起来正常正常了。 我不知道这是吃药起的效果还是输液的效果。 但是两盒药的价格是270,其中一盒西药50,另一盒重要220。 输液呢,一袋左氧+维C,总共也不过才30。 让我想起了电影《大腕》的名言 31号 这是24年的最后一天,美丽的烟花在天空中绽放璀璨的光芒。 有些人觉得烟花美丽,有些人只觉得吵。

2024-12-31 21:06:09 · 1 min · Eddie Wang

DDOS学习笔记

攻击分类 网络层 ICMP Flood攻击: ICMP(Internet Control Message Protocol,因特网控制报文协议)是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP协议本身特点决定了它非常容易被用于攻击网络上的路由器和主机。当攻击者向目标网络发送大量的ICMP数据包时,目标主机会耗费大量的CPU资源去处理和响应,直至耗尽设备资源,无法为合法用户提供正常服务。 ARP Flood攻击: ARP(Address Resolution Protocol,地址解析协议)是用来将IP地址解析为MAC地址的协议。ARP协议主要以广播的方式发送ARP请求。同网段内的主机都可以收到广播请求,这为攻击者提供了可乘之机。攻击者通过发送大量的ARP请求,使有限的网络资源被无用的广播信息所占用,造成网络拥堵。其次,因为ARP协议没有安全认证机制,所以只要主机接收到ARP应答包,都会缓存在ARP表中,这为ARP欺骗提供了可能。 IP分片攻击: IP协议在传输数据包时,会将数据报文分为若干分片进行传输,并在目标系统中进行重组。IP分片是网络环境中经常发生的事件,但是,如果数据被人为恶意分片就会产生DDoS攻击。攻击者将经过恶意分段的数据包发送至目标网络,导致目标网络耗费大量资源进行重组,直至资源枯竭。 传输层攻击 SYN Flood攻击: SYN Flood是互联网最原始、最经典的DDoS攻击之一,主要利用了TCP协议的三次握手机制。攻击者通常利用工具或控制僵尸主机向服务器发送海量的变源IP地址或变源端口的SYN报文,服务器响应报文后产生大量的半连接,直至系统资源被耗尽,服务器无法提供正常的服务。 ACK Flood攻击: 攻击者通过僵尸网络向目标服务器发送大量的ACK报文,报文带有超大载荷,会引起链路拥塞。或向目标服务器发送极高速率的变源变端口请求,导致转发设备异常,从而引起网络瘫痪。 UDP Flood攻击: UDP Flood攻击常用于大带宽DDoS攻击。攻击者使用包含无状态UDP协议的IP数据包充塞目标主机的端口,受害主机会寻找与UDP数据包相关的应用程序。如果没有找到,就向发送者回发一条“目标不可达”消息。一旦目标主机被攻击流量淹没,系统就会失去响应,从而造成合法用户无法正常访问的现象。 应用层攻击 DNS Flood攻击: 攻击者通过操纵大量傀儡机器,对目标网络发起海量域名查询请求,以中断该域的DNS解析。这种攻击将会破坏网站、API或Web应用程序响应合法流量的能力,让合法用户无法查找到用于调用特定资源的地址,导致业务暂时中断或停止。 HTTP Flood攻击: HTTP GET 攻击:攻击者操控多台设备向目标服务器发送对图像、文件或其他资产请求,当目标服务器被传入请求和响应所淹没时,来自正常流量源的业务请求也将被拒绝。 HTTP POST 攻击:与发送 POST 请求所需的处理能力和带宽相比,处理表单数据和运行必要数据库命令的过程相对密集。这种攻击利用相对资源消耗的差异,直接向目标服务器发送大量POST请求,直至目标服务器容量饱和并拒绝服务为止。 CC攻击: CC攻击常用于攻击提供网页访问服务的服务器。攻击者通过代理服务器向目标服务器发送大量貌似合法的请求,使CPU长时间处于高负荷运行状态,永远都有处理不完的连接。攻击会导致正常访问被中止,最终宕机崩溃。 SIP注册 Flood攻击: 攻击者发送大量的SIP注册请求到SIP服务端,SIP服务器需要查询数据库,拖慢正常的数据库查询,也回占用大量的资源来维护注册的事务。 FAQ 防火墙能否拦截DDOS攻击? 拦截不了,防火墙就好比饭店的保安,保安再多,但是饭店门口道路交通堵塞了,饭店的营业额下降,再多的保安也无能为力 在遭受DDOS攻击后,用什么手段防御? 购买硬件设备:除了比较贵之外,对于使用云服务器的服务也无能为力 更换公网IP:对于使用云服务器来说,更换云服务器的公网IP看起来比较简单方便。但是也有麻烦的地方,比如自己的服务可能要涉及到配置改变和服务重启,和自己相关的第三方,也可能要修改IP的访问地址 使用云服务厂商提供的DDOS服务 如何感知到自己的服务正在遭受DDOS攻击? 异常大的流量波动 正常用户大量离线 参考 https://info.support.huawei.com/info-finder/encyclopedia/zh/DDoS%E6%94%BB%E5%87%BB.html https://www.microsoft.com/zh-cn/security/business/security-101/what-is-a-ddos-attack

2024-12-17 21:10:40 · 1 min · Eddie Wang

你不怕暴露自己的无知吗?

公开自己的错误 我在写博客时,有时候脑海里总会蹦出一个小人,面露鄙夷的脸色对我说:你写这么多没啥技术含量的垃圾,公开在网上,难道不怕暴露自己的无知吗? 说实话,我是有这样的担忧。 因为我是有自知之明的,我知道自己估计也是黄老师那种"样样通,样样松"的人。 写的东西也都是一些表面的东西,甚至有错误的可能。这并不是自谦。 我一直无法找到反击脑海里小人的理由。 今天,我在读一本书的时候,学到了一个概念,这个概念叫做坎宁安定律。 在互联网上获得正确答案的最好方法并不是提出问题,而是发布错误的答案 也许我的答案是错误的,但是它并没有被隐藏我脑海的某个角落,二是被公开在了网上。 即使我的小破站再小,必然也会有几个阅读量吧,或许能有读者对错误的答案提出自己的异议。 学习金字塔理论 如果仅仅是通过阅读学习,学习内容的平均存留率只有5%。 如果把学习内容公开,这其中就暗示了你可能需要把自己学到的内容教授给他人这一心理。 那么在记录笔记的时候,就会想办法把问题讲解的让别人更清楚,从而加深了自己的学习知识吸收。 参考 https://baike.baidu.com/item/%E5%AD%A6%E4%B9%A0%E9%87%91%E5%AD%97%E5%A1%94/9515094

2024-12-07 14:17:28 · 1 min · Eddie Wang

第二份工作的辞职总结

总结 第二份工作快到一年了,我最近申请离职了。 同事问我离职原因,我说被领导骂了,感觉自尊受辱,索性不干了。 实际上被领导骂只是压死骆驼的最后一根稻草,我也不是那种会心血来潮说干就不干的。 这份工作,我做了不到一年,大部分的时间我是做的不开心的。 所以离职是一直在心里酝酿。 为什么会工作不开心? 主要原因有以下四点: 行业前景暗淡:S公司处在行业的中游,上游受到运营商管控,下游在客户层面话语权也不大。这是一个资源限制型的行业,行业的命脉就在运营商,可能运营商有个风吹草动,整个行业就要翻江倒海。 自研能力薄弱:S公司大部分业务都是购买的第三方的软件,各种变更都受到制约,添加一个小功能都要付费升级。自研能力弱的一个原因可能就是前些年赚钱太容易了,投资研发哪有赚快钱来的舒服呢。同时也是这个原因,多个第三方软件之间也造成了数据割裂,运行维护困难。 家族企业制约:S公司大部分人员都是老板的亲朋好友,家族式企业的优点是内聚力强,但是包容性弱。之前也有一些大厂进来的员工,没多久就辞职了。 我曾经也跟老板沟通过,似乎老板也有心做些变革。但是变革哪有那么容易,要变革不早都变了,还要等到现在? 短期主义:似乎S公司没有什么具体的愿景,唯一感觉到的愿景就是赚快钱。一旦发现投入的回报太少,就立即切换目标。 企业关怀差:说实在,我没有感觉到多少员工关怀。在S公司的工作和在地主家做短工也没啥区别,老板想什么都要管,但是即管不了那么多,又管的不好。所以给人的感觉就是东一棒槌,西一榔头,看起来很卖力,实际上并没有什么产出。几乎每个月都有人离职,对员工都吝啬,不考虑员工的自尊,员工怎么可能对公司有归属感。 工作压力大:受限于资源收紧、产品优势小,老板想提高营业额的方法是提高员工的服务水平。说实在,这真是杯水车薪。不想着从底层系统的解决问题,只想着通过给员工压力、通过加班来解决问题,只会造成工作压力大、人员流失大。 所以,我的离职,实际上也是考虑再三的一个选择。 当然,我在S公司也不是什么收获都没有。 收获总结 深入了解了行业的运行原理、客户、资源、政策等信息 对于数据分析方面有了较大的进步,毕竟我做了40+个数据报表来分析运行数据 深入学习了python, 主要用来做数据分析。数据分析方面的协议栈主要有pandas、duckdb、doris(MySQL)、grafana来组成 深入学习了python的GUI开发,主要用到的框架是wxPython,开发的两个工具分别给到运维人员和客服去使用,来提高运行效率

2024-09-10 21:08:51 · 1 min · Eddie Wang

Windows安装Tesserocr

安装tesserocr-windows_build 到tesserocr-windows_build release页面下载对应的whl文件 如下载 tesserocr-2.6.2-cp312-cp312-win_amd64.whl, 下载之后用pip安装 pip install tesserocr-2.6.2-cp312-cp312-win_amd64.whl 安装ocr windows exe程序 在这个页面,有对应的exe程序,https://digi.bib.uni-mannheim.de/tesseract/ 例如下载这个exe文件 https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v5.3.0.20221214.exe 下载完成之后点击安装,一般我们不需要修改他的安装位置,默认的安装位置是C:\Program Files\Tesseract-OCR 我们将C:\Program Files\Tesseract-OCR\tessdata下的所有文件,复制到C:\Program Files\Tesseract-OCR\目录下 参考 https://github.com/simonflueckiger/tesserocr-windows_build/releases https://digi.bib.uni-mannheim.de/tesseract/ https://tesseract-ocr.github.io/tessdoc/Downloads.html https://blog.csdn.net/Yuyh131/article/details/103880585

2024-04-24 08:34:07 · 1 min · Eddie Wang

使用Excel理解prometheus的变化率相关函数

counter类型的变化率 rate, irate, increase counter类型一般是只增不减的累积值,例如系统累计的http请求数量, 累计的话单数量。 counter类型的指标变化率一般使用三个函数来计算,rate, irate, increase 指标每隔15s采样一次数据, A列是采集的指标值,B列是对应的采集时间。 demo_api_request_duration_seconds_count{instance="demo-service-0:10000",path="/api/bar",status="200",method="GET"}[1m] 序号 A B 1 294401976 1710549816.105 2 294402185 1710549831.105 3 294402393 1710549846.105 4 294402599 1710549861.105 rate是计算每秒的变化率, rate 计算方案 (A4-A1) / (B4-B1), 这里选择了首尾两个值的差值,除以时长秒 irate 计算方案 (A4-A3) / (B4-B3) , 这里只选择里最后两个点的差值,除以时长秒 increase 计算方式 (A4-A1) / (B4-B1) * 60, 这里的60是1m, 其实increase就是rate() * windows_seconds的语法糖 guage 296164749 @1710648381.105 296165055 @1710648396.105 296165364 @1710648411.105 296165668 @1710648426.105 296165978 @1710648441.105 296166186 @1710648456.105 296166505 @1710648471.105 296166826 @1710648486.105 296167151 @1710648501....

2024-03-16 08:38:46 · 1 min · Eddie Wang

什么时候应该使用ts范型?

我知道ts支持范型,但是因为几乎用不到,所以对于范型对我来说往往蒙上一层神秘色彩。 最近我才真正的体会到范型的真正威力。 下面就介绍我的使用场景。 在和后端接口交互的时候, 后端接口返回的数据都是如下的类型。 interface XData { success: boolean total: number result: any[] } 这里我把result定义为any类型,因为它的具体类型是由接口确定的。 比如查话单的接口是话单的结构类型,查订单的接口返回的是订单的类型。 interface CDR { id: number creatAt: string } interface Order { id: number } 在不用范型的时候,我们要么定义如下两个interface interface XDataCDR { success: boolean total: number result: CDR[] } interface XDataOrder { success: boolean total: number result: Order[] } 在使用axios的时候,对于响应体的data, 可以使用如下的方式声明data function getCDR (id) { return axios.get<XDataCDR>('/api/xxx' + id) } 但是,如果我们稍微修改一下XData的类型声明,加上范型。 就不需要用到XDataCDR和XDataOrder两个接口。 interface XData<T> { success: boolean total: number result: T[] } function getCDR (id) { return axios....

2023-12-28 20:21:11 · 1 min · Eddie Wang

使用bun加速开发环境的ts编写

前言 最近我在开发一个demo程序,为了加速开发,我觉得直接用js要比用typescript更快,而且这只是一个demo程序,杀鸡焉用牛刀。 而且一旦我要用typescript开发,避免不了要各种配置,例如typescript, ts-node, nodemon之类的,很是繁琐。而且ts也必须要经过编译后才能运行。 然而,直到遇到一个bug, 我排查了半天,才发现是一个对象的属性写错了。本身这个对象是没有这个属性的,js没有任何错误提示。我只能一步一步缩小代码的范围,最终才定位到是属性拼写的错误。 这个拼写的错误,应该是vscode的智能补全,给出的提示词,我直接回车确认了。 这件事给我一个教训:以后所有代码都要用ts去编写。 直接用js去编写虽然看起来写的快,但是代码调试太痛苦了。 这种拼写错误,ts的智能提示会直接告诉你错误的地方,但是如果去排查js文件,花费的时间是无法估量的。 但是我又不太想去配置各种ts的执行环境,就想起来之前曾经用的bun这个ts执行工具。 虽然bun这个工具才刚刚发布1.0版本,但是在开发环境使用也是足够了。 我的设想是在开发环境用bun, 在生产环境用nodejs执行bun编译后的js代码。 这个demo程序用bun去运行的时候,没发现任何兼容问题。 这也让我有了继续研究下去的信心。 bun的开发环境 我之前看过deno, 但是看多deno的官方文档后,发现并不符合我的胃口。 但是bun的文档写的很好。 任何工具的第一步都是安装,但是bun似乎在windows上执行并不太好,所以我是用windows的linux子系统,或者在mac上安装的bun。 具体的安装步骤可以参考,https://bun.sh/docs/installation 项目初始化 bun init bun init helps you get started with a minimal project and tries to guess sensible defaults. Press ^C anytime to quit. package name (quickstart): entry point (index.ts): Done! A package.json file was saved in the current directory. + index.ts + .gitignore + tsconfig.json (for editor auto-complete) + README....

2023-12-23 15:04:44 · 1 min · Eddie Wang

算法 - 入侵脑细胞

我以前看过一部电影,叫做《入侵脑细胞》,这部电影提供一种可能性。类似的电影还有《盗梦空间》,都是将一种思想植入别人的思想中。 这两部电影虽然提供了可能性,但是却无法提供实际可操作的方案。 最近在阅读的一本书也于此有关,叫做《对不起,我操控了你的大脑》,是一个叫做剑桥分析、曾轰动世界的公司,利用基于大数据、算法、人工智能、心理学来做思想植入的。常见的领域如操纵大选,并且提供成功的案例。 但是作为普通人,大规模的思想植入似乎里我们还是比较遥远。 但是真的那么遥远吗? 昨天我爸来看我,之前他总是抱怨手机流量不够用。我给他换了每个月180G的流量卡,才过没两三天,他说已经用了20多G了。按照这个速度,180G的流量也不够用一个月。 我问:“你怎么会用那么多流量!,你用手机看视频的吗?” 爸说:“我经常刷抖音,刷好久,刷的眼疼” 我说:“你还是少刷点手机吧”,虽然这只是苍白无力的 一句关心。 我爸生于70年代,没怎么读过书,小学文凭。现在年近五十,经常带着鸭舌帽,依然遮不住后脑勺斑白的头发。虽然他经常用手机,但是很多东西依然搞不明白,需要找身边的年轻人来帮忙设置手机。 一个50多岁的人,人生过了大半。面对现在飞速发展的社会,很多东西都已经无法适应。对于他自己来说,也基本上无法改变自己。从第七次人口普查的数据中可以看出,在2020年60+的人口已经占比接近14亿人口的20%了,随着时间的推移,这个占比只会增大。 对于我爸这类的人,即使刷的眼睛疼,也无法控制自己,还是一直不停的刷。 由此可见,像这种大公司,制作的超级App有多可怕。能够一直持续的让大脑保持短期兴奋。这种超级App,背后都是心理学家、计算机学家、数据科学家等。 这些专家对待普通大众,就像哥伦布对待印第安人。 因为我发现他们没有什么信仰,也没有任何崇拜的形象,人们又都很温和,他们无邪得不知道什么是邪恶,从不侵害别人,也不懂得偷窃,没有打斗,特别的温顺 《哥伦布日记》 或许几十年以后,大部分人的大脑已经退化,也不需要有思考能里。只需要机械的按照刺激->反应去行动。 这种进化是一种潮流,绝大多数人都难以幸免。作为一个独立思考的人,我只能尽量避免被影响,远离社交网络。

2023-11-21 20:35:02 · 1 min · Eddie Wang