Protocol Buffers 生成 Python Typing
Protocol Buffers 生成的 Python 代码是一坨人类无法阅读的代码, 近日才发现 Google
增加了一个参数 --pyi_out=./xxx
就可以生成 Python 的 typing 了。
tzfpy Rust 重写🎉
tzf 预览图制作
上周花了点时间学习下 mbtiles
文件格式,顺手给 tzf 项目制作了一个
social preview media:
制作流程很简单:
- 安装 https://github.com/mapbox/tippecanoe
- 安装 https://github.com/mapbox/mbview
- 下载时区的 GeoJSON 文件
# 根据 GeoJSON 制作 .mbtiles 文件
tippecanoe -o timezone.mbtiles -l Timezons -z7 combined-with-oceans.fmt.json
mbview ./timezone.mbtiles
使用地图瓦片索引实现地理聚合
在处理大规模的散点数据时,有时候我们需要提供一个只读的查询 API
在地图上做可视化。
当数据量过大,比如百万这个量级,将数据一口气全部返回给前端在浏览器上处理是不太合适的。
应当在后端服务内完成一定聚合,将聚合后的搜索返回给前端。 这里介绍下在 Go
中如何使用 MongoDB + Tile 索引实现这件事。
用 GitHub Actions 部署 Hugo 网页
用 Go 编写 Python 扩展
tzfpy 是 tzf 的 Python
binding。 如果只是本地可用,Go 代码加上 CGO 扩展编译成 .so
文件就能用了。
不过要做成发布到 PyPI 上在其他地方能直接安装的 wheel 是有些曲折的,看 CI
失败的记录就挺明显的。
Python 中经纬度转时区新的选择
在 Go 中将经纬度转时区
- 2022-05-29 01:04 +0800 立了个年度 Flag:在 Go 里用多边形搜索实现经纬度转时区
- 2022-05-29 20:47 +0800 搞出来了 https://github.com/ringsaturn/tzf
基本数据处理流程:
挺想用 Rust 实现一遍,然后用 pyo3 封装下,看看能不能比 Numba 加速的
timezonefinder 更快。
工程上的一些想法
由于过往的各种条件限制,如数据库性能不够、PaaS
平台功能不足、对特定领域的问题理解不充分,线上的服务一定会有很多妥协解决方案。这些问题不会让服务彻底不可用,但一定会困扰团队,容易让人担忧系统的可靠性。特别是提供
toB 服务而言可靠性与准确性是一样重要的。