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 是本地的挂载点,本地的一个空目录(文件夹),需要提前创建好。
  • 后面的 usernamepassword 是用于访问共享的用户名和密码。

挂载命令:

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)
命令模式下按 ai 进入
用于文本输入
插入模式( INSERT Mode)
命令模式下按 ai 进入
用于文本输入
末行模式(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 UpPage 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地址了。

参考