Bruce Yang
Welcome To This Site.
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
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有两个主要的应用场景:
超时检测 延迟执行 超时检测 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 func makeNetworkRequest() (string, error) { // 模拟网络请求,这里假设需要 10 秒才能完成 time.
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 本周未运动
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 跑步:本周未运动
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
SUMMARY 周三:本blog内容同步托管在Netlify网站,地址:https://yiduo.netlify.app/ Kindle突然死机,重启后历史的读书划线笔记全部消失了,所以本周《二号首长2》没有书摘 READING 《二号首长2》书摘 Movies 很久没有看电影了。
《共同警备区》韩国电影 这是一部2000年上映的老电影。看它的原因是在X上刷到有发的一个视频片段,觉得很好看,于是就在周六看完了。 《因果报应》印度电影 也是因为看到X上有人强烈推荐,确实好看,故事情节设计得很巧妙,时刻错乱感,各种反转剧情。最后看完加上豆瓣的影评,把这个情节消化掉了。唯一觉得不好的地方在于里面的男主太抗揍了,用铁棍打都没事,还能反过来将对手打败。这是一部没有穿插唱歌跳舞的印度电影。 EXERCISE 跑步:本周共跑步6KM