Tips–2018年09月24日

文章目录

前言

一直以来,凡是涉及到参数的东西,自己的记性一直很好,问题是脑子里想装下的东西太多,总有溢出的时候,从上一篇博客开始前就想记录很多东西,因为没时间而不断搁置,一旦搁置就回归虚无。

上一篇博客照抄Go 1.11的Release Note,翻译起来的难度不大,比写自己的东西快多了,写博客的心情就和以前写命题作文一样,总是卡住,偶尔又回想不起自己想写什么东西,所以Tips系列就当做简单的记录,有时间再深入学习,单独开一篇来讨论,直到把自己的思绪完全理顺。

这篇博客会讨论什么?

  • Go的database/sql库
  • 显示器中的色彩空间
  • 虚拟机中安装Linux后报Host SMBus controller not enabled

Host SMBus controller not enabled

换了工作后需要用Windows来运行一些串口工具,但是开发习惯还是保持Linux/Unix,就不可避免地需要使用虚拟化,字符界面的虚拟化软件没有太多的差别,但桌面系统的虚拟化只有Parallels和VMWare可以随心使用吧。

工作上用Windows 10家庭版,虚拟机使用VMware搭配Ubuntu 18.04,安装后一直报Host SMBus controller not enabled,在blacklist中禁用相应了也没有效果,最后发现,忘记重新生成引导文件。以前安装虚拟机,在blacklist中添加屏蔽的模块后,都会升级内核,间接触发引导文件生成,这次安装得太匆忙,更新完内核后才配置blacklist,结果一直不生效,下面以i2c_piix4为例子。

(1)编辑**/etc/modprobe.d/blacklist.conf**,在文件的最后添加blacklist i2c_piix4,保存退出

(2)执行update-initramfs  -u  -k  all命令,重新生成引导文件

(3)重启

从macOS切换到Ubuntu,最大的差别还是快捷键,macOS上的快捷键配置自带优化,同样的软件,macOS的就是比LInux和Windows少按一个键,日常使用起来的速度也有所提升的。

database/sql

Go的数据库连接只有一个库,就是标题里提到的,不过它并不是实际操作的执行者,而是一个统一接口。对用户来讲,只需要关注database/sql库,弄清语句执行流程、连接池、复用等,对应的driver库会处理好对应的数据库交互,在docker的存储引擎上也有相应的情景。

这里提一下之前遇到的一个prepare语句问题,原来的一位同事在对接物联网设备时都遵循一个套路,新建一个stmt后复用,专门处理节点上行数据的入库,若新建句柄失败,触发fatal error,不巧的是prepare句柄的数量有限,对于多人共用的数据库,很容易在一些配额上冲突。另一个程序使用prepare语句的程序在使用后忘记释放句柄,导致数据库prepare句柄数量递增,直至上限,其它尝试创建prepare句柄的操作全部失败,所以 fatal error绝对不能乱用,prepare语句也是。

另一次在使用HTTP Client时也遇到类似问题,忘记关闭请求体,直到最后占满全部文件描述符才报错,这种需要达到一定条件才会触发的问题就像定时炸弹一样,比闪退问题还可怕,对于Go的基础库,除了代码外还需要理解设计理念。对database/sql理解较深的人,应该就是driver的相关开发者了,这里存档一份关于database/sql的教程,网络上一些中文的内容看过后发现还是基于它的:A tutorial for Go's database/sql package

显示器的色彩空间

关于色彩空间的内容很复杂,但是只要搜索HDMI 1.4 4k输出,就会蹦出一系列的相关内容。HDMI 1.4的带宽无法承载标准4K显示画面的,但只要缩水一部分参数,就有可能实现,比较经典的案例是英伟达采用YUV色彩空间方案实现老显卡上的4K输出。有了第一个吃螃蟹的人,就会有第二个、第三个,包括自己手上的ThinkPad e585也中枪了,明明只是接口的问题,但联想还是采取了HDMI 1.4的方案,使用YUV420方案输出,与电视的4K输出方案一致。这对于程序员来说并不友好,因为蓝色字体会出现模糊的情况。

自己现有的装备是一台支持10bit的显示器,在看过HDMI 1.4相关内容后才知道这也是一个坑,色彩显示使用的是YUV422的10bit方案,并不支持标准RGB的10bit,毕竟这是价格徘徊在1500块人民币的显示器。

所以又回到了最初的起点,如何选择一款合适的显示器?支持Display-P3的显示器,基本可以概括为苹果,其他支持DCI-P3的显示器大多是MVA面板,相对iMAC的显示器的差距巨大......iMAC 27系列已经完全沦丧为买显示器送电脑了。