控制台中VIM编辑中文时字符鬼影问题的解决

这个问题困扰我好久了,也不记得是什么时候开始的,也许是自从开始使用PowerShell时就出现了这个问题?控制台下使用VIM进行中文编辑,如果当前行有中文,那么这一行的内容编辑、选中,总会在行尾甩出一些鬼影字符。 因为近几年程序写得少、偶尔遇到这个问题就会换用其他编辑器临时救急,所以也就没放在心上。今天实在忍受不了,折腾了一个晚上终于找到了原因并解决了。 在vimrc配置中加入一行 set termguicolors 即可解决: 虽然说加入这行配置之后会导致vim的颜色配置与默认配置有了一些差异,但终归还是“彩色渲染”的代码,修改前后都是“赏心悦目”的状态,因而对于使用也没有什么影响。 这行代码的作用是让vim改用真彩色进行文字渲染,否则vim默认使用的是256色对文本进行渲染。而默认使用256色彩模式时,在显示复杂的 Unicode 字符(如中文字符)时,就有可能导致显示问题——无法正确计算出字符的宽度、从而引起鬼影问题。 上面的解释听起来很牵强,色彩管理和字符宽度能有什么关联呢……但毕竟它真的能解决问题,因而也就不再纠结其中的因果联系了。 奇怪的是用了很多年vim,以前从来没有察觉这个问题,似乎是最近1、2年才出现的问题。毕竟最近很少写代码,偶尔写一写、遇到稀奇古怪的编辑器问题也都是尽量避开,有的时候犯懒甚至就用notepad临时改动几行,所以也没有去深究过。感觉可能是: 1、或者就是自从windows弃用了控制台、启用了powershell之后出现的这个问题; 2、又或者是这个问题一直存在,只不过以前我在windows下一直使用的是neovim所以没有这个问题吧; 不确定,总之,经过上述调整,现在vim又可以正常的对中文内容进行编辑操作了。

小游戏(1)第一步是先写出 Hello,World

写任何程序的第一步,都是先写出 Hello, World。原因在于,能够撰写、编译、运行出最初的一个简单的输出、或者跑通基本的窗口,意味着整个变成环境的框架已经搭建起来并且通顺了。 以当前要做的这个程序为例,我并没有 Java 代码的基础知识、对正在使用的开发环境也不了解,但是我知道无论如何,也要先令开发环境顺利的部署、搭建起来。怎么证明我的开发环境是正确部署起来的呢?就是通过 Hello, world 进行验证。 这在今天对于开发者而言已经是非常友好、简单的了。从 Android Studio 官方下载 IDE 集成开发工具,在自己的电脑上一键安装,然后运行起来,基本就完成了整个开发环境的部署。与其说是“部署”,不如说就是一键傻瓜式安装。 如果放在早些年,仅这一步也许就要花费几天的时间,需要自己将整个编译链上每一个环节都调试通顺,甚至有大量的依赖工具或库,都是需要自己根据自己的电脑和系统环境准备、调整,不断地调整才能彼此配合妥当的。 受益于“包管理器”和“自动依赖检查”等概念和工具,并且受益于开源领域大量的预编译二进制包,今天这个准备过程已经非常简便。当然这是对程序的语言和开发框架而言,如果是新兴语言或行业应用、又或者是比较小众的环境,这个过程还是会令人感到痛苦和繁琐的。 无论如何,我们这次尝试进行的只是一个使用 Java 语言进行 PApplet 应用窗体的开发,所以对于搭建它的开发环境,显然是非常简单,一步操作即可完成。 在 Android Studio 中将初始的程序项目打开,并且点击运行,很快就能够看到一个基本的窗口出现,这意味着 Hello,…

防火墻設置不當招來SqlServer拒絕服務攻擊

因爲防火墻的端口設置不當,導致SqlServer的服務端口暴露給了外網,從而招來了密碼窮舉猜測攻擊。這次攻擊應該不是有針對性的,只是群掃群攻,但卻持續了好幾天,導致我的服務器宕機了。

在iPhone上用電容筆塗鴉的主觀評測

平時很喜歡畫畫、塗鴉,雖然自己繪畫水平非常差,但是閑暇的時候塗一塗能夠令自己的心情十分愉悅。自從得到了新的手機,我就一直想再買一根電容筆,這樣就可以直接使用手機塗鴉,隨時隨地、享受樂趣。

大学毕业后入职的第一家公司

今天翻看相册,找到了几张拍摄于2006年4月1日的照片,勾起了无限回忆: 这里是我刚刚工作的时候“公司所在地”,当时的公司老板是一位非常有生活、有兴致的南方老板,平日喜欢约朋友到公司喝茶、聊天。 所以他将公司设立在了这么一个环境优雅、清净的小四合院中。 我每天到公司上班也很享受,毕竟在北京这座现代化的大都市中,能够有这么一个雅致的小院子,是非常舒适的。每天工作累了,可以随时站在院子里伸伸腰、动动腿。而且老板随和,他的会客茶室也是可以让我们员工进去喝茶、休息的。 也是在那个时候,我也就跟着老板学会了喝功夫茶。作为一个在北京生活了多年的“北京人”,平日习惯了喝浓艳的花茶,初识铁观音时觉得非常的新奇——喝个水还要如此繁琐、好大的仪式感! 这个小院子如今也不知道是什么人在居住、又或者是哪个公司的人在这里继续为梦想而打拼。一晃快二十年了,今天无意中翻看自己的历史相册,找到了这几张照片,重新发到自己的blog中,当是一个纪念吧。

两块Ryzen 5的CPU无法被点亮

一、攒机翻车,点亮过程中主板启动自检灯卡CPU长亮: 最近想攒一台新的台式机、以替代当前使用的电脑。恰巧手中有一块AMD Ryzen 5 4500的CPU闲置,于是想着买块新的主板将它装上。结果买回来的昂达B550-VH-W主板,却无法点亮。 毕竟手中的Ryzen 5 4500是家中闲置了很久的,这块CPU具体是好是坏并不清楚,所以无法点亮也就不好判断是谁的责任了。索性一咬牙,又买了一块全新的AMD Ryzen 5 5500的CPU,结果还是无法完成点亮过程。 两块CPU分别是Ryzen 5 4500和Ryzen 5 5500,其中又有一块是从官网渠道购买的全新盒装,恰巧两块CPU都是有问题的可能性并不大,所以我认为CPU一定是好的,无法点亮的根源应该是在其他硬件设备上。 Ryzen 3、Ryzen 5、Ryzen 7是三个AMD Ryzen的系列,其中3系是基础入门、5系是主流应用、7系是高端产品。 4500和5500是产品的规格编码,其中Ryzen 5 4500是2020年发布的基于Zen2架构的CPU;Ryzen 5 5500则是2021年发布的基于Zen3架构的CPU。 因为手中现役的主板是B450M主板、而新购买的是B550主板,两块主板一个是现在正常使用、另一个是全新购买,经过相互替换也无一能够完成设备点亮。所以主板与CPU损坏或不兼容性,也基本可以排除。…

路由器变砖及复活记

一、原因 为什么要尝试升级手中的路由器呢?我不记得原因了,哦,想起来了。 我最近有幸终于换了一部手机,新手机性能远比自己之前使用的手机好非常多。但唯一的遗憾是:当手机做为热点,分享给路由器的时候,路由器找不到这台新手机热点。 虽然后来莫名其妙的找到了手机热点、也连接上了。但我心中始终有个疙瘩——是不是路由器的固件版本比较低、找不到这个新手机设备? 这么想着,我就想升级一下路由器的固件。 二、直接升级失败 我的路由器是GL.iNet AR750S-EXT,原来里面的固件大概是3.1.202吧,总之就是3.x的固件版本,看它官网上,最新固件已经是4.3.17了。于是下载、升级。 升级失败,原因在于通过web端上传固件之后,始终卡在verifying阶段,无法完成MD5验证,也就无法完成升级(当然这个问题后来我知道原因了)。 在始终处于verifying阶段时,我误以为是需要联网远程验证,而也许远程验证服务器访问不到,所以无法完成verifying结果。我就贸然的进入shell,尝试了一把直接通过命令行强制手动升级。 三、路由器变砖头了 这个通过shell的命令行强制手动升级直接导致路由器变砖。后来才知道,verifying之所以无法完成,是因为那个压缩包本身也许就存在问题:我尝试在另一台电脑上进行解压缩,解压失败。这是官网提供的压缩包,不知道为什么会出这个情况,也无需细究,总之就是:冒然使用了一个非标准的升级方式,导致路由器变砖了。 直接upgrade固件不成、路由器变砖之后。想到不如直接使用UBOOT方式升级,于是又从官网下载了UBOOT刷机包,直接UBOOT刷机。 刷机估计是成功了。 为什么要说“估计”呢?因为我不知道是否成功了。起初因为没有做过这个设备的刷机,所以也不知道刷机究竟成功了没有。但当时我以为UBOOT刷机是失败的,因为刷机完成之后看不出来哪里有成功的迹象。 我以为,如果刷机成功,路由器会给个LED的闪烁提示吧?我以为,刷机成功之后,无线WIFI会出现吧?都没有,既没有LED闪烁、也没有WIFI信号出现。所以我以为是刷机失败了。 后来换成其他固件、刷机之后也没有任何提示。但察觉到原因,刷机之后默认路由器是不开启WIFI的、也没有LED闪烁,也就是说成功了时无法通过观察判断出来。 所以官网给出的UBOOT刷机,我估计是成功了,但因为自己不会操作、不会访问,也就一直以为仍然失败、路由器仍然是砖头。 这个估计已经是好了的路由器,在我当时以为仍然是砖头。既然是砖头,也就破罐破摔了! 这个“砖头”直接通过长按power进入UBOOT界面,我也就只能看到UBOOT升级界面。 四、UBOOT刷机成功 此时迎来了转机:下载到一个第三方的固件,这个第三方固件做的比较好,中文版本、并且刷机成功之后默认是开启WIFI的。 所以当我第三次尝试刷机(第一次是upgrade失败、第二次是uboot官方固件以为失败),完成之后,顺利的通过无线观察到了路由器WIFI信号。进入路由器,看到了与官网固件截然不同的luci框架和功能界面。 这个时候按理来说,就别再折腾了,直接使用这个第三方固件就是了。 但是第三方固件的版本比较低,是个4年前的发行包,这甚至要比我这个路由器最初能用是的官方固件版本还要低。 另一方面,这个第三方固件是个人制作的,我有些担忧,虽然它也是开源产品,但毕竟是个人发布,万一里面有些隐患呢? 考虑到这个第三方固件版本低、又是个人制作的,有些如鲠在喉的不悦。于是我找到了openwrt的官网,如果说我的路由器以前是安装的OEM厂商的厂商固件,如今不如直接再试试openwrt的官方通用固件?…

FreeCAD也可以完成对Modal文件的纹理贴图

以前只会使用FreeCAD进行3D模型的设计,并不会用它进行纹理贴图。今天上网搜索了一下,发现使用FreeCAD进行贴图也是很容易就可以实现的,所以接下来考虑用这个功能做一个贴图创作。 技术上不难实现,但是困难在于“做什么”——我现在越来越觉得好的产品并不是技术有多么的刁钻、先进,而是它最终的实用性和外观是否能够打动人,这一点,技术人往往会忽略。 和技术产品开发类似的是工艺产品的开发,工艺环节或工艺条件固然重要,但是如何利用现有的工艺能力设计、制造出具有美感的产品,则并不与工艺能力正相关。有关系、但不大。 所以无论是技术还是工艺,都只是辅助、锦上添花的事情。关键还在于是否有好的想法和审美,但这正是我所欠缺的。一段时间以前当我认识到自己的这个巨大的短板时,没有“豁然开朗”的畅快,反而是更加的苦恼了。因为脑袋里面总是空空如也。 于是看书、看电影、逛展览、逛博物馆……我想通过万里路的行动开阔眼界、刺激灵感,但是收效甚微。所以此时此刻,纵使我想做一个有趣的产品,但命题为“有趣”,却不知该从何处着手。

小半天儿都在调整WebGIS的页面

其实也没有做什么太复杂的工作,就是在划水、走神,一边看着视频、一边改了改前端页面中的CSS样式,写了几行JS代码。好在WebGIS也算是大概写好了,就先这样吧。 说是“大概写好了”,其实并没有彻底实现。原因是我使用的是WebGL Earth提供的一套前端框架,但是经过测试发现它的框架中存在着“不兼容”问题:例如在Android手机的微信中,打开相关的页面之后,是没有“拖拽”和“缩放”的,这个问题在它的Issue中似乎也有提及,并且一直处于“bug未修复”状态。 最近我还是一如既往地忙,所以也没有时间查找其中具体的原因,只能一叶障目的假装已经完成了大多数功能和工作。这个遗留的问题,或者就甩到以后有时间再去修补;或者就放弃使用WebGL Earth,而改用OpenLayers3重新实现一遍好了。 另外:昨天看了ES6的规范,但我还是没有太多的感觉,所以继续按照自己最熟悉的方法来写JS代码,我到现在都不知道自己写出来的JS代码究竟是基于哪套规范写出来的。 无论如何,以上工作就先如此告一段落。接下来还要用freeCAD画一画另一款产品的外壳先。

新入手一副铁三角动铁耳机

最近入手一副新的耳机,听到的音乐是以前从未听到过的,感觉每一首歌曲都好像新的歌曲,从而对耳机也开始入迷了。看来日后可以烧的东西又多了一样。 入手的耳机是“动铁式耳机”,因为之前对音乐、耳机完全不了解,所以自然不知道什么是“动铁耳机”。 上网搜索了一下,概念也是很含糊的,大意是说:大耳机叫动圈耳机、可入耳的叫动铁耳机,原因是入耳耳机需要更小,所以无法将磁铁全部做在耳机里,而是做在外面、然后耳机里面有一个精细的“平衡衔铁”将磁场传递进去、通过这个小铁片传递进去的磁场引发振膜震动、从而产生声音。 我理解的意思就是说这样可以让耳机更小、方便放在耳道里面。 但是我觉得很奇怪,以前用过的耳机似乎也有“入耳式”的,那么以前用过的那些也都是“动铁”耳机了吗?如果如此,为什么这次入手的耳机价格如此高、音质如此好呢?