计算机中的字节序

字节(Byte)是计算机内存中的最小可寻址单位。计算机对于较大的对象使用多个字节将其表示:在将这些字节存入内存中时,计算机必须决定以何种顺序存储这些数据;同样地,在网络中传输大对象时,多个字节的传输顺序也至关重要——这些彼此相连的计算机系统必须确立一种统一的多字节数据传输方式,才可能互相协作。

这种事先约定的对多字节数据的存储以及传输使用的顺序,被称为字节序(又称“端序”,Endianness)。理解字节序对构建较底层程序以及深入理解计算机系统有帮助。

利用语音合成标记语言(SSML)优化语音合成质量

语音合成标记语言(Speech Synthesis Markup Language,SSML)是用于控制语音合成中停顿、音量、音调、语速以及名词读法等因素的标记语言。这个由万维网联盟(W3C)以 XML 为基础进行标准化的语言受到许多在线语音合成服务的广泛支持:包括 Google Cloud、AWS、阿里云等服务商均提供了支持 SSML 的语音合成服务。相较以纯文本进行的文本到语音转换(TTS)任务,利用 SSML 能够更细粒度地控制语音的合成方式,从而优化语音合成质量。

超文本传输协议(HTTP)中的响应状态码

本文内容评论 RFC 7231 第六章节

超文本传输协议(HTTP)的有趣之处在于,对于客户端向服务器发送的任意有效的请求,服务器都会做出响应。在这些响应报文中,包含了一组由三位数字组成的状态码,被称为响应状态码(Response Status Code),以表示服务器理解、尝试执行客户端所发出请求的结果。我们熟悉的 404(找不到网页)就是标准中定义的响应状态码之一。在本文中,我们首先回顾 HTTP RFC 标准中对于响应状态码的相关定义,然后对标准中定义的常见响应状态码给出解释。

HTTP 方法及其幂等性

本文内容评论 RFC 7231 第四章节

当我们试图通过浏览器的刷新功能重新加载购物网站的下单页面时,我们时常会遇到类似“要重新显示网页,浏览器可能需要重新提交请求”的提示——这表明用户浏览器认为重复向该网页提交数据可能会造成未预期的副作用(例如重复下单)。而对于另一些,无论用户执行多少次都不会影响系统状态的请求(比如获取用户购物车信息),我们则称它们是幂等(Idempotency)的:这个从数学中引入的术语表示某个元素无论经过多少次特定运算后,结果仍然不变。

2020 Q3:博客可访问性改进

作为主要聚焦于计算机与互联网相关技术分享的博客,让访客通过直观的方式快速获取所需的内容始终是我们的首要优化目标。在最近的一段时间内,得益于一些用户提供的有价值反馈,我们对 DGideas’ Blog 网站进行了些许更改,相信这有助于提升所有访客的使用体验。

发布日期:
分类:元博客

互联网中的跨域资源共享(CORS)策略

本文参考了来自 MDN Web Docs 的诸多内容。

网站开发者在开发调试过程中常会遇到有关浏览器阻止对跨域资源(Cross-Origin Resource,COR)进行任意访问的问题:当位于某个域(如 example.com)的网站想要去访问位于另一个域(比如 user.example.com)的资源时,同源访问(跨域资源共享)的相关策略便会生效。在上例中,开发者或许只是想动态拉取位于 user.example.com/user.json 的用户列表文件,用于在网页中向用户展示,而现代浏览器的跨域资源共享(Cross-Origin Resource Sharing,CORS)策略却禁止了这种访问方式。发生了什么?

探索发现之旅——我的二零二零年

本来这个月要写的博文已经有好几篇排好期,奈何最近工作上的事情实在是太忙,而我又不希望在自己的博客里出现任何一篇仅仅算是“凑合”的文章。想来想去,干脆总结一下自己的二零二零年,顺便向大家分享我最近的思考、体验和感悟。

折叠北京

郝景芳老师曾经有一部获得雨果奖的中篇小说《北京折叠》,构造了一个不同空间、不同阶层的北京。而对于我,一名生活在这个城市逾二十载的“北京土著”来说,北京——更像是一个将多个时空重叠在一起的城市。每个人都常出没于其中一、两个空间里。而这座超大型城市利用它的纵深把不同时空的人隔阂来开,将他们割裂成了几个不同的世界。

基于 Ubuntu 20.04 系统使用 KVM+CloudInit 创建虚拟机

看,是大盘鸡!

基于内核的虚拟机(Kernel-based Virtual Machine,KVM)是一项用于在受支持的硬件设备上执行硬件辅助完全虚拟化任务的解决方案。如果有一天你像我一样为如何充分利用一台支持虚拟化技术的独立服务器而烦恼,请考虑使用 KVM 技术拆分你的服务器。

本文以具有多 IPv4 地址的主机为例,使用基于 Cloud-init 配置文件的方法配置基于 KVM 虚拟化技术的 VMs。

做一颗合格的鲜嫩韭菜

……这么多年以来,无论国际形势如何变化,中国的股民总是不忘初心,为祖国提供流动性……

@李永乐老师,《看懂了这个,你再去炒股……

当你决定暂时不要花掉自己钱包中正在日益增加的货币财产时,你也许更感兴趣将它们放到“更有价值的领域”来产生额外收益:通过牺牲现在享用这些资产换取物品或者服务的能力,你希望将来能够于此获得更多额外的收益,这样的行为被称为投资。金融市场可以使个人的现实消费与现实收入相分离。

2020年7月中旬我们又经历了国内股票市场的一次剧烈波动。有钱没处花的我自寻渠道投入了国内 A 股市场的怀抱,正式成为了一颗新鲜的韭菜。

Go 语言中的错误处理

学习 Go 语言之前,我认为为程序员提供错误与异常处理的最方便的语言是 Python;学习 Go 语言之后,我的看法没有任何改变……

@DGideas

本文参考了 @ethancai 的这篇文章@davecheney 在 Gocon Spring 2016 上的这篇演讲稿,以及若干位于 golang.org 上的博客文章和文档。

Go 语言有着异于其他程序设计语言的错误处理体验。要说 Go 程序设计语言的一大特色,恐怕就是它频繁出现的 if err != nil 语句块了。得益于 Go 语言函数的多返回值(multiple results)特性,一个不一定总能成功执行的函数可以依靠一个类型为 error 的返回值表示其执行过程是否处于异常状态,例如:

f, err := os.Open("filename.ext")
if err != nil {
	log.Fatal(err)
}