第3期 看看别人迁移数据库 (一周阅读与记录)
阮一峰还有其他互联网中的许多人,让我相信互联网的精神就是分享。
于是我也想试试开始自己的周刊,记录我在这一周内的阅读与收获,先定个小目标吧,写下5期这样的分享,每期包括大概10项内容。
目前主要会偏向音视频、网络传输等方面,毕竟现在主要在做这方面。
标题起的很标题党。。不过内容还是很有干货的,文章也挺长。我对数据库了解不多,我觉得最有价值的部分就是如何开始一次迁移:
1、确定迁移范围;
2、迁移评估;
3、选择迁移方式;
4、迁移验证
作者做了很多准备
合适的迁移方式需要再多次测试演练中进行摸索才能在相对准确的时间内完成迁移,一定要选择较合适的迁移方法。
数据库迁移完毕后,数据完整准确的检验非常重要,迁移前需要制定合理的完整性校验步骤和方法。
这样也让我想起了,重构前要准备好充分的单元测试、功能测试等各种测试,这样才能开始重构,要不然谁也不知道重构的功能OK不OK。无论这个重构是从一个函数还是到一个服务。
文章
介绍了标准的WAVE (WAV, Waveform Audio File Format,即文件后缀是wav) 格式的音频文件,WAVE的格式也很简单,通过RIFF直接封装了PCM数据。
我照着这篇文章写了一个简单的WAVE parser,实现了解析标准的WAVE文件,同时用oto(介绍见下方)这个golang库实现了声音的播放
详细的介绍了WAVE格式中除了必需的fmt、data chunk外,许多其他的chunk类型。
Tiny Container Challenge: Building a 6kB Containerized HTTP Server!
TL;DR I set out to build the smallest container image that I could that was still able to do something useful. By taking advantage of multistage builds, the scratch base image, and a tiny assembly based http server, I was able to get it down to 6.32kB!
通过利用docker的多阶段构建、scratch 的base image以及基于汇编的http服务器,将包含http server的docker image缩小到了 6.32kB!
一张毫无规则的马赛克图片,在无数次的动态进化后会变成什么样?一位日本网友找到了答案——它可能是张色图。
这款游戏名叫《Undying Dusk》(中文大意是《不朽的黄昏》),游戏内容的灵感来源于《地牢爬行者》,依附在一份接近20万页的PDF上,需要玩家通过鼠标点击来推进游戏进程。
使用20万页的pdf实现冒险游戏,itch.io 下载速度很快,windows上基于作者提供的sumatra pdf阅读器,丝滑流畅体验很棒,支持了下作者,强烈推荐。游戏主页与下载地址
工具
使用amd64汇编实现的http服务器,可运行于64位的Linux,功能强大,感觉不可思议。。
- 支持多线程
- 无需依赖库
- 生成的二进制文件大约6KB
- …
支持多平台(windows,macOS,Linux,Android, iOS …)的golang 音频播放库。Ebiten的作者出品,接口的设计很棒,写起来很舒服!
目前播放支持单声道/双声道、8位/16位的PCM。
sumatra(苏门答腊?)一款用于windows的pdf、epub、mobi、chm、Djvu的阅读器,还支持支持CBZ,CBR漫画书格式,小巧,性能强大。
好东西
Audio File Format Specifications
麦吉尔大学通信与信号处理实验室提供的音频文件格式规范,页面看起来比较古老,但是内容还在更新中。
介绍了不少音频文件格式,不过我认识的只有AIFF、WAVE这两个音频文件格式😂。