/images/avatar.png

Bruce Yang

Welcome To This Site.

Weekly Recap 47

SUMMARY 在AWS EC2机器(i4i-2xlarge)上搭建InfluxDB OSS v2版本时序数据库,再搭建了Grafana Server,打通Grafana和InfluxDB,在此过程中比较好的理解了InfluxDB时序数据库中的概念:1)bucket相当于关系数据库中的database; 2)measurement相当于关系数据库中的table; 3)一个measurement中可以放field(相当于关系数据库中的column)和tag(相当于关系数据库中的indexed column);4)学习了Influx和InfluxQL两种查询语法; 5)可以使用influxdb_client Python包向InfluxDB中写入Point数据。 使用Telegraf + InfluxDB Cloud + Grafana Cloud 搭建了一个对ECS服务器进行资源监控的Grafana监控Dashboard。动手实践的目的是为了学习和理解Telegraf和InfluxDB时序数据库的使用。 办公室有一台物理机,32核128G内存,用于同事们的日常工作,包括数据分析和机器学习模型训练。但是最近遇到一个情况,当机器学习模型训练时,若有其他人在上面做内存消耗和CPU消耗较大的数据分析任务时,会导致机器学习训练的任务被KILL。因此提出一个需求:当机器学习模型训练时,其他人的任务被限制使用系统订单资源。调研了一下,发现几种方式:1)设置进程的nice值,调整CPU的使用时间;2)用limit限制;3)用cgroup。最终决定使用cgroup技术。 LLMs X平台看到一个新的类似Cursor的AI IDE刷屏:Windsurf,第一时间下载和使用了一下,用它打开ollama的开源Go项目,让它对项目进行分析,感觉不错。 在咨询Claude.ai技术问题时,让它画出系统工作原理图,发现了一种新的画图脚本语言:Mermaid X平台看到有人推荐了Heygen,可以生成视频内容,尝试使用了一下自己拍的一个视频,将中文对话换成英文会话,但是感觉效果一般。 Perplexity推出Mac客户端,第一时间下载使用了,目前为止在使用的三个客户端是:1)ChatGPT;2)Claude; 3)Perplexity X平台了解到一个类似v0.dev的Web LLM:bolt.new READING 书籍阅读 《明朝那些事儿(1)》 (朱元璋)这个人要么不做,要么就做绝,从不妥协。 历史大潮,浩浩荡荡,顺之者昌,逆之者亡。 蓝玉是一个要强的人,他从不会承认自己比任何人差。 蓝玉的性格缺陷大致如此,处事考虑不周,性格过于强横。 一支军队强大与否可以从其外在表现体现出来。大致分为四等: 第四等的军队是乌合之众。他们没有军纪,四处抢劫,没有纪律。这样的军队只要受到有组织的军队的打击,就会一哄而散,属垃圾类。 第三等的军队有着完整的组织结构。他们军容整齐,步伐一致,但斗志不高,士气不盛。他们虽然比第四等要强,但只要遇到更有战斗力的敌人,也必然会被打败,属次品类。 第二等的军队不但有统一的指挥系统,装备精良,而且士气高涨,还时不时会喊几句口号,士兵们都急于表现自己的英勇。这一档次的军队有气势、有冲劲。他们不畏惧任何敌人,可以称得上是强大的军队,但很遗憾的是,他们也不是最强大的。于最强大的军队相比,他们还缺少一种素质。这种素质,叫做沉默。 最强大的军队是一支沉默的军队。所谓的沉默,是这样一种情景:指挥官站在高地,对他的十五万大军训话,这十五万军队漫山遍野,黑压压地占满了山谷、平地。他们不同相貌,不同民族,不同地方,不同习好,却挤在同一片地方,听着同一个声音,看着同一个方向。鸦雀无声。这才是所谓沉默的真义,这才是军队最重要的素质。 有三分颜色就要开染坊的人。 所谓粗人,不是指他没有文化或是行为粗鲁,而是指他的行为欠考虑,为人处世不通人情,属于那种想了就干,干了再想的人。 在历史的进程中,命运之神会从芸芸众生中挑选一些人,给他们建功立业的机会。如果你被挑中,实在是一件幸运的事情。但你同时也必须认识到,这是一场残酷的比赛,当机会到来时,你若真的有所建树,就必须必其他人更优秀,更强大,因为最终的胜利者只有一个。 古语有云:善用刀剑者,死于刀剑下。 洪武年间四大案:洪武年间的“四大案”是指明太祖朱元璋(洪武皇帝)在位期间,为了巩固皇权和打击异己而发动的四起大规模政治案件。这些案件极为血腥、牵连范围广,甚至波及数十万人,对明朝的官僚制度和政治生态产生了深远影响。 胡惟庸案 • 时间:1380年(洪武十三年) • 背景:胡惟庸是明初的重要权臣,官至右丞相。朱元璋废除了宰相制度后,胡惟庸被指控与外敌勾结、谋反。 • 结果:胡惟庸被处死,牵连的官员和家族多达三万余人。此案标志着明朝宰相制度的废除,皇帝直接掌控朝政,开启了皇权高度集中的时代。 • 影响:加强了朱元璋对权力的控制,但也使明代权力过于集中,后续的皇帝不得不依赖宦官处理事务。 蓝玉案 • 时间:1393年(洪武二十六年) • 背景:蓝玉是明初著名的将领,战功卓著,封凉国公。然而,他骄横跋扈,功高震主,被指控谋反。 • 结果:蓝玉被杀,牵连了众多勋贵和将领,受害者多达一万五千人。 • 影响:洪武朝的大规模功臣屠杀,使明初开国功臣几乎被铲除殆尽,进一步削弱了皇权的潜在威胁,但也造成朝廷人才凋零。 空印案 • 时间:1389年(洪武二十二年) • 背景:地方官员在财政管理中流行“空印”现象,即提前制作空白的公文或印章,以方便事后补填内容。朱元璋得知后认为这是官员结党营私、欺瞒朝廷的行为。 • 结果:大量地方官被指控欺君受罚,涉及的官员数量庞大,许多人被斩杀或革职。 • 影响:加强了对地方官的监控,但也加剧了朝廷内部的恐怖气氛,官员人人自危。 郭桓案 • 时间:1385年(洪武十八年) • 背景:郭桓是管理仓库的户部官员,他与其他官员勾结,大肆贪污挪用钱粮。朱元璋借此机会清查全国贪污案。 • 结果:郭桓等主要涉案官员被处死,牵连的贪污官员多达数万人。 • 影响:此案是洪武时期规模最大的反腐败行动,虽然短期内打击了腐败,但滥杀无辜也导致了官场的怠惰与效率低下。 Movies 本周没有看电影电视剧 EXERCISE 本周没有跑步

Weekly Recap 46

SUMMARY 高频交易系统与Lark报警群打通,使用Python的aiofiles package实时读取程序产生的日志文件,失败错误级别日志,发送报警到Lark群。 本周自学了Rust编程中的基础语法部分,初步感觉这门语言的工具链不错。其中关于错误处理的部分,感觉怪怪的,对Option和Result的理解有待进一步提升。 通过X平台,新了解到两个GPT Chat类的网站:1)cerebras; 2) sambanova。这两个网站类似之前用过的groq,都是提供llama 大模型的在线服务的,核心卖点在与回复的速度(用TPM指标来比拼)。其中cerebras还提供一个在线聊天的应用:https://cerebras.vercel.app/,我尝试了一下,非常适合一对一聊天来提升口语水平。 READING 本周因为要准备面试,所以没有看非技术书籍,看的是技术书籍《软件架构设计——大型网站技术架构与业务架构融合之道》 重读技术书籍,对阻塞/非阻塞、同步/异步、零拷贝等技术概念有了新的理解。 网络文摘 The best way to get good at something is usually to just practice actually doing the thing in question. A lot of very capable people outsmart themselves with complex plans that involve working a lot on fake prerequisites. —— Sam Altman 要想在某件事上变得擅长,最好的方法通常就是直接去实践这件事。很多能力很强的人往往聪明反被聪明误,制定出复杂的计划,花大量时间在一些并非必要的准备工作上。—— 萨姆·奥特曼 Instead of asking what books you should read, ask what ideas you should understand. —— Naval

Time Package Notes

Go中的time是一个日常开发中经常用到的package。这里总结一些常用的方式。 获取当前的时间 1 2 3 4 5 6 7 import ( "time" "fmt" ) now := time.Now() fmt.Println("current time:", now) time.Now() 返回的是一个Time对象。上面的代码示例的输出结果为: current time: 2024-11-06 18:10:25.099407 +0800 CST m=+0.000157959 其中 +0800表示当前的时间是UTC+8的时间,CST是China Standard Time,中国标准时间。 这样的时间格式不一定是我们需要的,所以我们可以用Time对象的Format方法对它进行格式化处理, 1 fmt.Println(now.Format("2006-01-02 15:04:05")) 睡眠 time.Sleep time.Sleep() 用于让当前的goroutine暂停执行,让协程调度器执行其它的goroutine。 1 2 // 睡眠10秒 time.Sleep(10 * time.Second) 定时器 time.NewTimer() Timer是time包中有一个很重要的type,它会以当前时间为起点,在值得的时间周期到后,触发Timer,然后Timer会给自己的一个Channel中发送一个时间值。 time.NewTimer()就是返回一个Timer对象,我们可以读取这个对象的C通道,实现time.Sleep类似的效果。 1 2 3 4 timer := time.NewTimer(10 * time.Second) defer timer.Stop() <- timer.C // 在十秒达到前,这里会被阻塞,实现了sleep的效果。 Timer有两个主要的应用场景:

Weekly Recap 45

SUMMARY 心得体会:如果你想拖延一件工作或任务,就主动找leader汇报和讨论方案,即使你清晰地知道最佳的方案、执行路径是什么。在汇报与讨论过程中可以一直抛出新的问题。经过这样操作,一件本来可以半天或者一天完成的事情,就可以用两天或者三天,甚至一周的时间来完成。最后leader也高兴,认为你很靠谱,而你也争取到了很多摸鱼时间。如果你很专业地,闷不做声地完成,结局大概率是没有人知道你解决了一件很重要的事情,并且认为你不太靠谱。 用Go实现了Websocket Server和Client两端的代码,双方可以双向通信。在此过程中顺便学习了一下如何使用http和html/template编写Web程序,重点学习了template的语法格式,和Flask框架中jinjia很像,所以上手很快。 高频交易程序貌似有内存泄露的问题,但是目前不太确定,需要进一步排查,利用这个过程学习如何分析Go程序是否发生了内存泄露,以及如何解决(通过逃逸分析和pprof heap profile等方法和工具) 花了两三个小时阅读了v2ray-core的源码,才摸到一点点门道,还是在GPT的帮助之下。 学会了使用systemd托管应用。因为办公室的一台共享机器上需要Jupyter Lab服务,而机器有时候会关机重启,导致每次都需要手动启动Jupyter Lab服务,很麻烦。所以用了这种systemd服务管家来开机自动启动。 记录了一篇使用Go time包的文档。 周末在准备百度无人车部门的面试,下周二晚上一面。 在X上第一次知道有一个叫做v0.dev的在线chat工具,主攻Web开发,但是在其它领域地回答也比较好。 x.ai 每个月有免费的$25credits 可供使用,找时间尝试一下回答质量如何。 READING 《明朝那些事(1)》 高手过招,最忌心浮气躁,王保保的直觉告诉他,现在只能等待。 朱元璋一向是个要么不做、要么做绝的人。 在危急时刻判断出敌情,并能够及时应对,是一个将领最重要的素质。 最大程度发挥士兵的战斗力,是将领的责任。一般来说,将领们是利用自己的谋略和军事调度来达到这一目的的,然而当战斗到了最关键时刻,所有的军事智慧都无法再发挥作用时,将领们就只剩下最后一招,亲自上阵。 故知胜有五:知可以战与不可以战者胜,识众寡之用者胜,上下同欲者胜,以虞待不虞者胜,将能而君不御者胜。——《孙子兵法》 作者在书中讲完明朝最后打败元朝名将王保保后,引申出一个问题:为什么王保保如此惨败,还要称呼他为名将呢?于是作者花了很多的篇幅介绍:名将是怎样练成的。作者说在成为名将的道路上要经历六个坎坷,并以六个年级的方式来标注它们: 一年级:学习军事理论。顾名思义,很好理解。 二年级:学习实战。顾名思义,很好理解。 三年级:学习冷酷。必须要和仁慈、温和之类的词再见。必须心如铁石、冷酷无情。他们的仁慈是对士兵和老百姓而言,对敌人他们比谁都冷酷无情。所谓仁不带兵、义不行贾。 四年级:学习理智。作为普通人,生活中会被许多事情左右自己的情绪。我们都是凡人,都有感情,容易激动。但是要想成为名将,一定要保持冷静和理智,任何时候都不能被感情左右。 五年级:学习判断。你能从变化莫测的世界中,发现其中的奥妙,并就此做出正确的决断。小兵只管打仗,遇到问题,他会问伍长,伍长会问百户,百户会问千户,千户会问指挥,你就是指挥,你还能去问谁?! 六年级:学习坚强。你的选择只能是坚强,即使你屡战屡败,但必须屡败屡战。那些最优秀的人能够从失败中爬起来,去挑战那个多次战胜自己的人,这就叫做坚强。 最后一点,成为名将,需要运气。 故兵无常势,水无常形,能因敌变化而取胜者,谓之神。 网络文章 Movies 本周没有看电影电视剧 EXERCISE 本周未运动

Weekly Recap 44

SUMMARY 本周研发回测框架失败了,跟同事商量了一下,还是别在高频交易框架中实现回测功能,用他们之前自己实现的回测脚本就行。这件事让我有点frustrate,因为回测功能是比较难实现的,特别是基于目前的交易系统上做添加,但是给的时间实在有限。 终于解决了高频交易框架中Go协程泄露的bug。这个问题反复出现,每次看上去解决了,但是运行一段时间后又出现。周六终于fix掉了。 意外发现了一款叫做Latex Workshop的Extension,可以在VS Code中直接编写Tex文档,并且还有语法提示。但是本地成功编译出PDF比较麻烦。 周四晚上下班回来带着孩子在小区周边的商铺讨糖过万圣节🎃 Ollama对比了llama2和llama3.2,响应速度提升不少,而且可以本地离线使用。 快速过了一遍Solidity编程语言的官方文档,对基于以太坊的智能合约开发有了直观的体验。也看了某ERC-20的Token的智能合约的源码,对与如何在Ethereum上发行Token也有了直观的体验。 颈椎又开始疼,加上周五晚上陪孩子在楼下玩时摔了一跤,摔到了脖子,更是酸痛。作为程序员,颈椎痛算是职业病之一。 READING 网络文章 根据最新的Github Univserse报告,Python在2024年成为全球最受欢迎的编程语言: AI leads Python to top language as the number of global developers surges 《Mastering Ethereum》 在线教程:https://cypherpunks-core.github.io/ethereumbook/ slyang-git.github.io 个人Github Pages网站 Movies 本周没有看电影电视剧 EXERCISE 跑步:本周未运动

Weekly Recap 43

SUMMARY 成功利用AWS EC2做Proxy Server,代理办公室物理机的WW流量,使用的CLI工具是v2ray。 理解了高频交易回测(backtest)的工作原理,以及如何在Binance上做Spot现货的回测。 了解了Solana公有链,在了解过程中也对之前的一些模棱两可的Web3概念有了更深的理解,对区块链开发兴趣徒增,计划在不久之后开始动手尝试。 本周萌生一个想做小宇宙播客的想法,例如围绕Python、Go,或者编程相关的当前资讯做一些有声播客,不过看起来时间不够。 READING 《明朝那些事(1)》 这两周开始看《明朝那些事》,是前几年买的一套纸质书,看它的原因是个人职业生涯遇到了一些危机,让我很是烦恼,于是打开这套书看,一是想解决每天通勤路上的时间,而是想从这段历史中看看能否吸收到一些经验教训和能量。 网络文章 在查找v2ray的配置资料时,检索到一个blog:https://lockshell.com/,查看了一下这位作者的历史文章,特别是每年年末的“碎碎念”总结,印象深刻。这位作者早前在北京工作,现在在新加坡工作(好像已经拿到永居),从早前的真的“碎碎念”到现在一些有深度思考的内容,可以看到他的成长。在每年岁末的“碎碎念”中,文章内容就是每个月某些天的一些简短句子,看起来想是日记,但是如果你将好几年连着一起看,可以看到这位作者的成长过程。所以,写文章,并不一定要写出非常有逻辑,有干货的东西,而是在你想写的时候就写,想到什么就写下什么,只关心在此时此刻的想法,这样也能记录下人生中很多重要的时刻,回头看就是成长的痕迹。 Movies 周四晚上失眠,继续看《Breaking Bad Season 4》的EPISODE 6 EXERCISE 跑步:本周共跑步0KM