Lexsion 发布的文章

群晖共享下文件名中出现回车符导致Windows无法读写的处理

前言:

笔者的群晖里面存储的一些文档,突然之间发现不能读取了,尝试打开时Windows系统提示找不到路径。经过再三尝试发现,这些文件可以在Linux下正常读写。在热心网友们的帮助下,经过探索,最终发现不知在哪个阶段、何种原因,文档的名称和扩展名之间被添加了一个回车符(ASCII控制字符,代码:CR,十六进制编码:0x0D,)。而包含这种特殊字符的文件名,在Windows系统下是非法的。最终在网友们的帮助下,解决了这个问题。

简单说一下是如何发现这个特殊字符的。经过热心网友(flaribbit)指导,我使用 ls -l > filename.txt 命令将目录下的文件信息输出到一个txt文本中。然后使用WinHex之类的16进制编辑器直接打开,找到扩展名前的一个字节,查看其数值,然后从ASCII码表中查询即得到结果。

处理过程:

群晖系统的shell太过简单,很多命令不支持,所以我们需要先把其挂载到其他系统中。比如,我挂到了运行Raspbian系统的树莓派下。

Linux系统下挂载CIFS (samba)共享:

以下命令中:

  • //Server 是服务器(即群晖)的主机名或IP
  • Remote_Diretory 是服务器(即群晖)共享的目录(文件夹)名称。
  • Local_Directory 是本地的挂载点,本地的一个空目录(文件夹),需要提前创建好。
  • 后面的 username 和 password 是用于访问共享的用户名和密码。

挂载命令:

mount -t cifs //Server/Remote_Diretory Local_Directory -o username=xxx,password=xxx

所有操作完成后记得卸载,卸载命令:

umount <Local_Directory>

替换文件名中的回车符:

知道了原因,我们处理的方法有很多,可以写shell脚本,可以用Python写个小程序。此处笔者使用了Linux下的一个软件,名叫 rename。这个软件包群晖上没有,所以我将目录挂载到了Raspbian。

如果系统提示找不到rename,使用以下命令获取:

sudo apt install rename

先使用 cd ./Local_Directory/XXX/ 来到文件的目录,使用以下命令轻松将该目录下所有文件的名称中的回车符去掉:

rename -v  's/\r//g' *

这样就完成了,如果没有其他问题,此时在Windows系统下已经可以正常读写这些文件了。

考虑Linux系统下的兼容性,如果您想要将文件名称中存在的空格换成 _ ,可以使用以下命令:

rename -v  's/ /_/g' *

记得卸载文件系统:

umount <Local_Directory>

以上命令可能看起来有点懵,如果没有学过正则表达式的话。此处稍作解释:

  • -v 是 --verbose,用于在终端中打印成功处理的文件名称,让我们看到处理了哪些文件。

  • 's/ /_/g' 正则表示将空格替换成 _ ,可以看到三个斜杠 / 中有两个位置,前面填入的是要匹配的内容,后面填入要改为的内容。如果后面什么都不填(不是空格!),就是将前面要匹配的内容删掉。

  • 像是要匹配回车符这样的控制字符,或是特殊字符,我们需要使用转义字符来处理,即在前面添加反斜杠。如回车符是 \r 。

如果我们需要将所有的txt文件的后缀名删除,可以使用以下命令:

rename -v  's/\.txt$//' *.txt
  • 正则中 . 前的 \ 是转义字符。

后记:

经过热心网友们的讨论,我们解决了问题。大佬(Sparkle)提供了使用Python实现的代码,笔者没有测试。

import os
for i in os.listdir('.'):
  os.rename(i,i.replace('\r',"))

总结:

遇到问题,我们首先要明白这是个什么问题,如何用简练的文字把问题的现象描述出来。然后在各大搜索引擎中搜索。搜索无果我们回头继续思考,这可能是什么原因?可以借助调试、日志、转储等判断导致问题的原因。最后分析一下,解决问题大致是个什么流程,可以分成哪些步骤,需要学习哪些新的知识,然后一步一步的学习、解决。

记维修搜狗录音笔C1

前言:

之前从老王那里入了两支坏的搜狗录音笔C1,很多大佬上车了。据说这批货是售后出来的,状态良莠不齐。花了一点时间,最终我这两支拼成了一个。本文简述过程,记录部分资料以备日后使用。也顺便试一下用IPFS(星际文件系统)作为图床效果如可。

以上图片大小为3386KB

维修过程:

首先,我对两支录音笔进行了测试。其结果如下:

一号:外观尚可,外壳完整,右侧有些许撬痕。拆机发现严重进液,主板严重腐蚀,通电发现大短路不开机,MIC FPC有腐蚀,后测试发现MIC坏,排线有腐蚀断线。

二号:外观不良,外壳有磕伤,撬痕极其明显,结构变形不佳。电池亏电,充电后可正常开机并连接手机APP,MIC排线有多处弯折与裂痕,LED不亮,MIC变形。

很明显,如此情况只能两支拼一支了。首先将一号机的底壳与二号机的主板电池装在一起,然后将二号MIC排线的接插件替换到一号排线上,再将一号MIC排线上的两个MIC换新、腐蚀断点飞线。这期间我顺便简单跑了一下MIC_FPC的线路。

MIC脚位定义:

MIC内部构造:

FPC连接器脚位:

脚位 功能 脚位 功能
5 LED_VCC 6 LED_R
4 GND 7 LED_G
3 CLOCK 8 LED_B
2 MIC_OUT 9 R/L & VDD
1 GND 10 GND

最终将一号排线与一号中壳、上盖等组装在一起。与底壳主板等简单装配后实际测试录音、转写等功能没有问题。但录音的音质一般,这有可能是我换的MIC质量不好(可能性不大)导致,也可能是产品性能仅限于此了。

使用感受:

正如上文所述,感觉录音的音质一般,这有可能是我换的MIC质量不好。个人拙见,搜狗录音笔C1适合用于会议记录与采访等场景,专业的视频录制收音确实不适合。虽然这笔有两个MIC,但只有降噪用途,其并不能录制双声道立体声。

获取转写功能:

此机器的主要卖点是录音转文字服务,简称转写服务。此功能不是本地完成的,而是将录音文件上传云端处理。搜狗有一个名为 搜狗录音助手 的APP有偿提供此服务,后来我们通过淘宝了解到,搜狗录音笔C1带有终生免费的转写服务权益。

经沟通客服了解到:免费转写服务权益会绑定在第一次绑定录音笔时使用的账号上,此权益可以迁移一次。咱们这种货,肯定不是第一次绑定啦,所以绑定后不会获得终生免费的转写服务权益。根据从客服处了解的信息,咱可以提供机器的SN(SN查看:绑定后在APP左上角点击录音笔图标,SN在出现的录音笔管理页面最下方)和新账号(一般是注册的手机号),然后客服登记后台转移权益。转移后便会获得有效期至2201年的转写服务。

这种事情,我们需要与搜狗客服沟通过程需要一些技巧。不要说自己的机器是售后报废机,可以说是朋友赠送的。至于咱们怎么修的,这个没有必要的情况也不必跟客服讲。客服告知我们的权益转移流程需要提供之前绑定的账号,我们可以告知其朋友说不记得了,一般客服也不会再要求必须提供之前的账号,只要有机器SN和咱的新账号他们就会帮咱处理。

那么,如何与客服取得联系呢?APP里面有啦!搜索添加微信公众号:搜狗AI黑科技。

注:本文图片托管于IPFS(星际文件系统),由CloudFlare IPFS网关提供图片解析,插图可能会随时间久远而丢失!

Windows 10 下免费安装HEVC视频扩展

前言:

今天导出iPhone SE2的原始照片,发现文件后缀是HEIC,然后在Windows系统下使用系统自带的照片应用无法打开,其提示 显示此文件需要HEVC视频扩展 ,后面还有个 立即下载并安装的选项 。那我肯定得装啦,点击立即下载后弹出了Microsoft Store,居然要收费?像我这种人怎么可能心甘情愿付费,于是便研究了一下如何免费得到它。

后来看到网帖说某些预装系统的品牌机会预装一个来自名为 “来自设备制造商的 HEVC 视频扩展” 的插件,而在以前是可以直接在Microsoft Store中搜索到的,目前我搜索了一下发现搜不到了。使用帖子中附带的链接打开后提示需要兑换代码,这个网上也搜不到。

后来,我在收费版扩展下铺天盖地的骂语中找到某热心网友miku说:

明明有免费正版确搜不到,非要B站导向,微软不要太恶心

突然想起,以前在B站的UWP客户端设置中看到过,是有个安装什么扩展的按钮。果然在里面看到了,点击后直接跳到商店,下载就可以了。

更新,找到了能直接安装的链接,不需要“B站导向”了:

浏览器输入以下代码按回车,可以启动Microsoft Store并进入安装页面:

ms-windows-store://pdp/?ProductId=9N4WGH0Z6VHQ

后面不用看啦。。

操作:

  1. 打开Microsoft Store ,搜索并安装 哔哩哔哩动画 ,安装完成后直接点击 启动 。

  2. 在打开的 哔哩哔哩动画 界面中,点击右下角的齿轮状图标以进入 设置 。

  3. 在打开的设置窗口中,默认的第一个选项卡下,向下滚动鼠标滚轮。在接近末尾的部分有一个 安装HEVC视频解码扩展 按钮。点击它将自动跳转到Microsoft Store中,进入 来自设备制造商的HEVC视频扩展 安装页面。

  4. 我们可以看到上方有一行字提示 “您可以在本机使用 来自设备制造商的 HEVC视频扩展,或···”,其后有一个安装按钮。点击安装按钮,等待其完成安装。

  5. 此时我们再次使用照片应用打开HEIC格式的照片文件,发现已经可以正常查看了。

  6. 至此,免费的 “来自设备制造商的 HEVC 视频扩展” 便安装成功了,如果您不是B站忠实用户、不喜欢B站的二刺螈环境、也没有融入其中的想法,您便可以去卸载 哔哩哔哩动画 了。

卸载哔哩哔哩动画:

如果您需要使用此应用,请忽略以下内容。

  1. 按 Windows徽标键 ,打开开始菜单,点击左上角第三个图标—— 所有应用 。

  2. 在其中找到少女粉色的 哔哩哔哩动画 图标,鼠标右击,在右键菜单中点击 卸载 。

  3. 在确认卸载的提示中点击 卸载 ,完成卸载。

参考:

注:本文图片托管于IPFS(星际文件系统),由CloudFlare IPFS网关提供图片解析,插图可能会随时间久远而丢失!

vi或vim快速指引

前言

之前学习过vim编辑器,这是一款很棒的编辑器,它在很多Linux系统中有提供,使我们可以在shell中编辑文件。然而某些环境下只提供了vi编辑器,而vi编辑器的操作和vim有部分不同,所以我花了点时间将基本操作整理了一下。不要求自己完全掌握这两款工具,只为保证遇到只有vi的环境可以编辑文件。

vi / vim最最最基本的操作流程:使用vi或vim后跟随文件名打开文件,在此时所处的命令模式下通过方向键找到要修改的地方,按shift+x向前删除内容,按a进入插入模式,使用键盘输入要改的内容。输入完成后按ESC回到命令模式,输入 :wq 按回车保存退出,弄烂了不想保存则输入:q! 按回车强行退出。

创建文件:

创建文件是很简单的操作,我们可以使用系统内置的 touch 命令创建一个文件。

touch test.txt

也可以使用vi或vim来创建,如果此处没有这个文件。如果有这个文件的话执行此命令是打开文件。此命令后面的参数可以是相对路径也可以是绝对路径。

# vi:
vi test.txt

#vim:
vim test.txt

此命令执行后vi或vim会打开并处于命令模式,想要正式保存退出,可以按 Esc键 确保进入命令模式,然后按 : 进入底行(扩展命令)模式,输入 wq 命令按回车键创建保存退出。

编辑器工作模式:

使用vi和vim编辑器首先要了解工作模式的概念,类似的,它们均提供了常用的三大模式。此处列表对比:

vi vim
命令模式(Command Mode):
打开时默认模式,按Esc进入
用于一般按键命令操作,如快速移动光标、复制删除等。
命令模式(Command Mode):
打开时默认模式,按Esc进入
用于一般按键命令操作,如快速移动光标、复制删除等。
插入模式( INSERT Mode):
命令模式下按 a 或 i 进入
用于文本输入
插入模式( INSERT Mode):
命令模式下按 a 或 i 进入
用于文本输入
末行模式(Last line Mode):
命令模式下按 : 进入
扩展的命令输入,比如保存和退出(wq)。
扩展命令模式(Extended Command Mode):
命令模式下按 : 进入
扩展的命令输入,比如保存和退出(wq)。
vi 无此模式 可视模式(VISUAL Mode):
命令模式下按 v 进入
此模式包含可视内容选择操作。

vi和vim在打开时默认处于命令模式,此模式用于移动光标,定位编辑点,复制删除内容。当我们将光标移动到目标编辑点后,进入插入模式以使用键盘键入内容。若完成某位置内容键入后想要移动光标,则回到命令模式重复操作。若完成编辑需要退出,也是先回到命令模式,然后进入扩展命令模式,输入相关命令退出。命令模式是一切的开始,其他模式都需要从此进入,退出其他模式也将回到命令模式。

vi和vim在工作模式方面操作基本一致,只是vim多了一个可视模式。此功能在我们简单编辑文件时意义不大。以上大致的说明了编辑过程中三大模式该在什么阶段使用。

插入模式:

所谓插入模式就是能够打字输入的模式。使用 i 键进入插入模式,光标保持不动;而使用 a 键进入插入模式将使光标自动后退一位,退出模式时光标会前进一位。顺便一提, 按键 I、A、O 均有进入插入模式的功能,且分别使用大小写键入时效果不同,有兴趣可自行尝试或参阅:vim非完全学习手册。

注意:部分环境中的vi(例如处于vi兼容模式下的vim)无法在插入模式下通过方向键移动光标,其表现为按 上下右左 键会出现字符ABCD,这可能与我们常见编辑器的操作不同。此时我们可能需要按 Esc 键回到命令模式才可通过方向键移动光标。以上不难看出,使用 a 键进入插入模式明显更符合大多操作习惯。

注:导致以上问题原因可能有很多,也有不同办法可以处理,如果是vim处于vi兼容模式导致的此问题,可以在扩展命令模式执行set nocp 命令使其退出兼容模式解决。参考链接中提供了一篇相关文档供参考。

命令模式:

vi和vim编辑器打开时默认处于命令模式,vim可能会在左下角标记-- INSERT --以指示插入模式,但vi可能没有。如不在或不确定是否处于命令模式,请按Esc键进入。

注意:vi和vim编辑器命令模式下输入的命令,无论单字符还是组合键,都是大小写敏感的,操作时请注意大小写!

光标的移动:

事实上,简单的编辑并不需要了解太详细的光标移动操作,会使用方向键移动光标也能完成。了解光标移动可以快速定位编辑位置,追求尽快开始使用可以跳过本节。

  1. 使用键盘上的方向键移动光标,但考虑更高效的使用,也可尝试学习vim的命令键:h(左)j(下)k(上)l(右)。
  2. 按键 0 快速跳至当前行首;使用按键 $ 快速跳至当前行末。(注意:$需使用Shift+4实现)
  3. 使用 gg 按键快速跳至首行;使用 G 按键快速跳至末行。(注意前者时按两次g,后者通过Shift+G实现)
  4. 使用 Ctrl+f 向后翻一整页,使用 Ctrl+b 向前翻一整页。(使用键盘上的 Page Up 和 Page Down 也可实现)
  5. 使用 7 G 按键快速跳至第七行;即通过按出 行号后再加大写字母 G (即Shift+G),即可快速跳转至指定一行。
  6. 可以使用 /string 命令从内容中查找关键词;string表示字符串,即输入关键字进行查找;我们可以使用(n/N)在查询到的多个结果中上下移动箭头。我们可以使用 /^string 这种,关键字前加 ^ 符号,指定搜索以此关键字开始的行; 使用/string$ 这种,关键字后加$符号,指定搜索以此关键字结尾的行。

编辑命令:

  1. 按 x 键可删除光标所在字符,按 X 键(大写,即 Shift + x )删除光标前的一个字符。注意,虽然大多版本的 vi 或 vim 中可以直接按 Backspace 键向前删除,但某些环境中的 vi 、或某些版本的 vi 中Backspace是无效的,所以需要牢记标准操作。追求尽快开始使用着本节剩余内容可以跳过。
  2. 使用 dd 剪切光标所在行内容;使用 5dd 剪切光标及以后共5行。此命令常用于删除行。
  3. 使用 yy 复制光标所在行内容,使用 p 键将复制或剪切的内容粘贴(paste)到光标处。
  4. 使用 u 撤销(undo)之前的操作,使用 Ctrl+r 组合键重做(redo)撤销的操作。

退出:

  • 命令模式下,按住Shift键按两次 z 键,即输入 ZZ 即保存并退出。安全考虑,此方法不建议使用,建议使用扩展命令模式下的退出命令。

扩展命令模式:

在命令模式下按 :(即Shift+;) 键进入扩展命令模式。此模式亦有人称其为末行模式或底行模式(可能于命令于末行输入有关)。在扩展命令模式下,输入扩展命令然后按回车键执行命令。如需从此模式回到命令模式,按 Esc 键。

保存与退出:

  1. 在扩展命令模式下,输入w回车可保存文件。
  2. 在扩展命令模式下,输入q回车可退出,但文件有未保存更改时会失败。
  3. 在扩展命令模式下,输入wq回车可保存并退出。
  4. 在扩展命令模式下,输入w!回车可强行保存。
  5. 在扩展命令模式下,输出q!回车可强行退出,不保存退出。
  6. 在扩展命令模式下,输入wq!回车可强行保存并退出。
  7. 在扩展命令模式下,输入x回车可保存并退出,此处x为小写,大写X为添加密码,慎用!

环境配置:

vi/vim编辑器的设置,称之为环境配置。注意某些vi编辑器可能没有此功能。

# 设置显示行号
set nu

# 取消显示行号
set nonu

# 关闭 vi 兼容模式
set nocp

总结:

想要vi和vim都用的好,建议养成以下操作习惯:避免在插入模式使用方向键移动光标,使用 a 键进入插入模式而不是使用 i 键,使用 x 键或 X 键(大写,即 Shift + x )删除字符,而不是使用 Backspace 。

参考:

Windows系统下载安装 Blackmagic Disk Speed Test

为何会有本文?

看到很多大佬做评测会用一个名为 Blackmagic Disk Speed Test 的软件对某个“媒体位置”测速。与常见磁盘测速软件相比,它的特点是可以选择某个目录开始测速,于是它便可以很方便对网络位置进行测速。通过使用该工具测试存储媒体,我们可以直接了解到其能录制的视频。该工具可以很方便的在Mac的商店中找到,但笔者百度了一番,没有找到 Windows 下载指导。经过一番研究,发现此软件属于 Blackmagic Design的 Desktop Video 软件包 ,该软件包可以看作是其视频采集卡的驱动程序(上位机)。我们虽然没有购买其硬件,但不影响安装此软件包获取这个测速工具。

如何获取?

  1. 访问 Blackmagic Design 官网,在Support中选择 Capture and Playback。

  2. 在左侧的 Latest Downloads 中下载最新版本的 Desktop Video 软件包。

  3. 安装下载 Desktop Video 软件包。

  4. 在 开始菜单 中找到 Blackmagic Disk Speed Test 应用程序。

  5. 运行程序,点击齿轮图标,在弹出的菜单中选择 Select target drive ,选择要进行读写测试的目录。

  6. 在主界面点击 SPEED TEST START 即可开始测速。

如果觉得安装这个软件包太大,而且没有相关硬件主程序毫无用处,可以将测速软件的文件夹单独拷贝出来,然后将软件包卸载。

此处提供笔者从 Desktop Video 12.1 中提取的 Blackmagic Disk Speed Test V3.3 版本下载,链接失效不补。

为JustHost.ru的CentOS7小鸡开启IPv6

前言

笔者有个从JustHost.ru购买的新西伯利亚小鸡,用途懂得都懂,不懂得,说了你也不明白,不如不说。你们也别来问我怎么了,利益牵扯太大,说了对你们也没什么好处,当不知道就行了。小鸡很便宜,服务页面很简陋,购买后会把一些机器信息发送到注册邮箱。一直以为这么便宜的机器有IPv4就行了,万不会提供IPv6。后来偶尔看到管理页面上标识有IPv6地址,看了一下购买时的邮件,邮件中有IPv4和IPv6地址和网关等信息。尝试Ping提供的IPv6地址提示无法访问目标主机,通过在小鸡上运行 ip a 命令查看其只配置了IPv4网络信息。官方支持IPv6但没有配置IPv6信息导致无法使用IPv6的情况,我们只需要在为网卡添加IPv6信息即可。

注:本文中涉及的敏感信息包括不限于MAC地址与IP地址等均为编造,非笔者所有,如有雷同纯属巧合!

操作

  1. 找到购买小鸡时的邮件,以获取IP配置信息。

  2. 小鸡执行 ip a 命令,查看所有网卡的信息。一般会有两个接口,其中 lo 是回环接口,那么另一个应该就是网卡了,比如笔者这里的名称是 eth0 。此处我们应该会看到一个开头fe80的本地v6地址,但没有服务商分配给我们的公网地址。

    [root@XXX ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 55:55:aa:aa:55:aa brd ff:ff:ff:ff:ff:ff
        inet 8.8.8.8/24 brd 8.8.8.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet6 fe80:::::8/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
  3. 使用以下命令确认eth0配置文件的存在,正常应该可以看到名为 ifcfg-eth0 的配置文件。

    [root@XXX ~]# ls /etc/sysconfig/network-scripts/
    ifcfg-eth0      ifdown-post      ifup-bnep   ifup-routes
  4. 使用以下命令备份 ifcfg-eth0 文件为 ifcfg-eth0.old 。

    [root@XXX ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.old
  5. 使用 nano /etc/sysconfig/network-scripts/ifcfg-eth0 命令打开配置文件,参考购买时官方邮件为其添加IPv6信息。主要修改 IPV6INIT参数为:yes,并随后添加IPv6默认网关和地址信息。

    ...
    IPV6INIT="yes"
    IPV6_DEFAULTGW=2a00:b700:1::1
    IPV6ADDR="2a00:b700:1:3e::175/64"
    ...
  6. 修改完后按 Ctrl+O ,然后直接按 Enter 键保存。按 Ctrl+X 键退出NANO编辑器。

  7. 运行以下命令重启网络服务。(也可以使用systemctl restart network命令)

    [root@XXX ~]# service network restart
    Restarting network (via systemctl):                        [  OK  ]
  8. 此时,再次查看eth0接口信息,应能看到新添加的IPv6地址,通过以下命令可以查看特定接口的信息。

    [root@v119813 ~]# ip a show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 55:55:aa:aa:55:aa brd ff:ff:ff:ff:ff:ff
        inet 8.8.8.8/24 brd 8.8.8.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet6 2a00:b700:1:3e::175/64 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80:::::8/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
  9. 如果正常,此时在我们本地应可以Ping 通 小鸡的IPv6地址了。

参考