在每个人的世界中——我的二零二三年

年终总结可能会迟到,但它从来不会缺席。

在过去的一年里,我和 Minda 探索了许多地方:新加坡、马来西亚、香港、马尔代夫、上海、布里斯班、北京。这比我过往任何一年的经历都要丰富。有些地方是之前从没来过,全新探索的。而另一些则是故地重游,顺便感受一下发展的新气象。而在旅途中时常让我感动的,其实大概率不是风景,而是人。有幸能够跟各种人交流,倾听他们的故事,近距离又真实地感受他们的情绪,走近他们的世界,这时常让我在内心热泪盈眶。

为什么比特币网络中会有空区块

当你打开比特币(Bitcoin)网络的区块链浏览器,在少数情况下你或许能够惊讶地发现刚刚产出的一个区块是个“空区块”,就像高度为 825999 的区块一样。严格来说,这样的区块并不完全空,而是除了区块奖励交易(coinbase transaction)以外,区块内不含有任何其他交易。

理想情况下,当矿工获得一个区块的记账权后,矿工获得的收益主要来自两部分:一是区块奖励,即 coinbase 交易;另一部分则是来自在区块中包含交易所获得的手续费收益。对于这种“空区块”来讲,从经济上看起来矿工是损失了一部分收益的,但事实上并非如此……我们今天就来讨论一下这样的区块的产生原理。

为 Python 应用程序配置 ELK 日志堆栈

ELK 日志堆栈(Elasticsearch B.V. 官方称“Elastic Stack”),是由 ElasticSearch、Kibana 以及 Logstash 等组件组成的工具集,被业界广泛用于进行日志处理等任务。其中 ElasticSearch 组件本身也是一个强大不可替代的开源搜索引擎。

一张网页截图,展示了 ELK 堆栈中的 Kibana 组件的可视化日志的能力。在网页截图的左侧,展示了由 ELK 整理的日志字段,右侧有一副柱状图,按时间顺序展示了日志数量。下方的主要部分逐条展示了日志内容
来自 demo.elastic.co 的 ELK 日志堆栈的官方在线示例截图,展示了 ELK 堆栈对于日志数据的强大处理能力

程序员眼中的日期与时间

本文使用了 JavaScript 脚本来生成动态网页内容。请确保已开启浏览器的 JavaScript 支持

大多数的应用程序都需要同日期(date)与时间(time)打交道,这取决于具体用例。一些应用程序使用日期与时间来决定何时用户可以获得日常登录奖励。另一些应用则需要根据用户所在地的时区来向他们展示下订单的时间。这些种种用例要求我们的程序员使用一套成熟且精密的方式来管理日期与时间,并且了解在日期与时间处理时会遇到的一些常见问题及其解决方案。

一张装饰用图片,展示了使用马赛克风格瓷砖拼装的树叶图案,经过染色滤镜效果处理
摄于新加坡滨海市区线市中心站,2023 年春季

对数据工程而言不存在路线图

本文翻译自《There is no Data Engineering roadmap》一文,译文标题略微进行了改动;原作者 Alasdair Brown 是一名大数据方面的顾问,也关注于网络安全与实时分析领域;

在 Reddit、推特(Twitter)、领英(LinkedIn)以及一些 Slack 社群中,我看见过很多入门人群想要进入数据工程领域并寻求建议。每一天都有许多人询问是否有类似“路线图”或者入门课程来帮助他们找到理想的工作。我并不认为这样的路线图存在。

Fragments of two months

这两天发小儿来催稿,真惭愧,博客文章念叨了几周还没写出,几个月前逢人便吹的写《诸天讲》的文章也没有动笔。现在北京气温飙升,实在有些盛夏难挨的感觉了,文章恐怕一时半会儿更难写出。

三周一小病,三月一大病。去年十二月第一次感染新冠,自然是高烧,而且烧得半睡半糊涂时,满脑袋纠缠什么“框架”“系统”。今年三月甲流,又是高烧,在宿舍挨了三天。甲流后咳嗽了两个月。五月中旬肠炎发烧,反倒泄得治好了咳嗽。5 月 30 号把左脚大拇指搞骨折。六月初第二次感染新冠,不过症状极轻,第三天就恢复了卧推。

Django 中的 select_for_update(skip_locked)

2021 年 12 月,Django 在新发布的 4.0 版本中提供了对 MariaDB 数据库后端的 QuerySet.select_for_update()skip_locked 参数的支持。这个参数在 MariaDB 10.6 中被引入,而八个月后,Django 的下一个主要版本便宣布了这个参数提供的支持。

Copilot 使用体验

我可能是全网最后一个体验 Copilot 的用户了。由于最新又在做一些好玩的小项目,而其中的很多基础逻辑都跟以前的项目很类似,因此摆在我面前的有两个选择:从以前的代码库中把相关代码抄下来,或者重新写一遍逻辑近似、但不完全相同的代码。

话说回来,虽然在不同的项目中要实现的逻辑是类似的(例如都要实现用户登陆的功能),但由于每个项目的具体应用场景存在区别,因此具体到每个项目中,相似功能的实现也存在较大差别,无法简单地复用先前的类似代码。我想到了 Copilot。

一张来自 Visual Studio Code 代码编辑器的屏幕截图,展示了用户在编写少数上下文的情况下,Copilot 插件能够根据用户上下文提供代码建议
Copilot 能够根据上下文自动提供代码建议,这是基于 OpenAI Codex 实现的

与光——我的二零二二年

一张烟花图片。可见许多游客在滨海湾广场举起手机拍摄空中的烟花。背景是新加坡摩天轮与金沙酒店
新加坡滨海湾的跨年烟花,摄于 2023 年 1 月 1 日当天,新加坡市中心区

伴随着滨海湾长达八分钟的跨年礼花声,这里每个人的二零二二年都就此落下了帷幕。想必身处不同地区的人们对过去的一年都有着不一样的感受和体验。而对于我来说,二零二二年带给我的,是无数且广阔的经历、故事,以及光。