PC端利用google翻译实现同声翻译

Notes:伟大的CCP ban了google翻译需要翻墙(不是translate.cn退出中国 .cn一直只有文字翻译)语音翻译地址一直被ban 疫情期间上网课,对于英语听力较差或者需要观看英文视频,但实际上并没有双语字幕的这种情况下需要找一个实时的翻译工具。虽然说手机上此类软件比较多,但电脑上没有特别合适的应用可以做为一个免费实时翻译。哪怕是收费翻译工具实际上翻译效果也是很差,并且语种比较单一。 电脑端有一个 speechlogger,可以做到实时翻译,但实际上也是使用的Google翻译,那么实际上我们就可以直接使用Google翻译作为一个同声翻译电脑的声音。 此时就遇到一个问题,就是Google翻译无法识别到电脑的声音,只能识别到麦克风的声音。这里就需要将电脑输出的作为麦克风的输出。使用Windows电脑的可以尝试以下操作。 以windows电脑为例: Step 1:电脑右下角调整音量图标,右键选择声音 Step2:选择录音设备,立体声混音,将其启动并设置为默认设备(可选) Step3:右键属性,选择侦听,通过此设备播放选择扬声器对应的设备。 Tips:注意,无用选择侦听此设备,这个选项勾选后的意思是,你可以通过扬声器听到扬声器声音,此时会发生混音。影响我们听到的效果。 Step4:可选步骤,如果Step2没有设置为默认设备,可以在浏览器选择对应的设备作为麦克风,如使用了立体声混音作为电脑的输入设备,那么不是默认设备情况下在浏览器选择该设备作为输入设备即可。 Tips:Google翻译的语音翻译功能貌似只能在Chrome里使用,其他有可能会出现无法使用语音设备的功能 这样就做到了一个免费,无杂音,多语种的同声翻译,不管是上网课学习,还是说做笔记(同语言下还可以作为声音转换为文字)都是一个很不错的选择。 后面再说下,科大讯飞的录音设备实际上翻译功能很差,语种也少,并且专业术语翻译的很烂,最便宜的小2000块钱,大量依赖云服务,实际上可以不用买这种产品,我是已经买过体验的,翻译结果实际上比Google翻译要差。如果不是在现场,没有网络或者声音很嘈杂(他的十几个麦克风其实效果也不咋地)的情况下可以选择其他方案,例如Google的同声翻译。 如果你需要对翻译的结果划分角色的话,还是可以使用 speechlogger,这个也是使用的Google翻译作为翻译引擎的 Reference 如何将电脑的输出作为电脑麦克风的输入 免费的实时翻译工具

 ·  · 

H3C Cloud与WSL2共存

背景 由于Windows10 开启WSL2后无法和 eNSP 做到兼容,但是 H3C HCL 在版本 HCL_v2.1.2.1 提供了 VirtualBox 6.0.14 作为虚拟化后端,理论上来说可以做到 WSL2 与 HCL 共存。 并且开启了WSL2后并于其他虚拟化平台(VirtualBox, Vmvare)做到兼容的情况下,这种情况大部分禁止套娃(虚拟化下在虚拟化),通过安装虚拟机的方式再安装 eNSP 发现启动不报错,但是很长时间起不来。 Notes [1]:HCL官方给的建议是,对于windows7装的版本为HCL_v2.1.1;对于Windows10 并且开启了 Hype-v 或者 Dokcer-Desktop,推荐使用 HCL_v3.0.1.1 下载地址:HCL Download 安装过程 下载好安装时,直接下一步直至完成即可,VirtualBox已被内嵌至安装包内了。 图:HCL安装界面 Notes:如果需要抓包,自行安装Wireshark,安装好后,在HCL设置中配置 wireshark.exe 的路径即可 VirtualBox启用hyper-v支持 [2] 进入VirtualBox安装目录, 确定当前目录下存在VBoxManage.exe文件, 在当前目录打开powershell. 或者你将VBoxManage.exe所在目录加入环境变量, 任意路径下打开powershell. powershell 1 2 # 或指定vbox所有虚拟系统开启 ./VBoxManage.exe setextradata global "VBoxInternal/NEM/UseRing0Runloop" 0 开启后,HCL所有的设备就工作正常了,这种情况下也不用牺牲WSL2或者Dokcer-Desktop。因为eNSP官方没有再更新,导致hype-v与VirtualBox无法兼容,暂时无解。 Reference ​ [1] H3C Cloud Lab ​ [2] Windows 10 (2004) 启用wsl2, 并与VirtualBox 6.0+共存

 ·  · 

深入理解kubernetes API

APIServer 在kubernetes架构概念层面上,Kubernetes由一些具有不同角色的服务节点组成。而master的控制平面由 Apiserver Controller-manager 和 Scheduler 组成。 Apiserver 从概念上理解可以分为 api 和 object 的集合,api 可以理解为,处理读写请求来修改相应 object 的组件;而 object 可以表示为 kubernetes 对象,如 Pod, Deployment 等 。 基于声明式的API 在命令式 API 中,会直接发送要执行的命令,例如:运行、停止 等命令。在声明式API 中,将声明希望系统执行的操作,系统将不断将自身状态朝希望状态改变。 为什么使用声明式 在分布式系统中,任何组件随时都可能发生故障,当组件故障恢复时,需要明白自己需要做什么。在使用命令式时,出现故障的组件可能在异常时错过调用,并且在恢复时需要其他外部组件进行干预。而声明式仅需要在恢复时确定当前状态以确定他需要做什么。 External APIs 在kubernetes中,控制平面是透明的,及没有internal APIs。这就意味着Kubernetes组件间使用相同的API交互。这里通过一个例子来说明外部APIs与声明式的关系。 例如,创建一个Pod对象,Scheduler 会监听 API来完成创建,创建完成后,调度程序不会命令被分配节点启动Pod。而在kubelet端,发现pod具有与自己相同的一些信息时,会监听pod状态。如改变kubelet则修改状态,如果删除掉Pod(对象资源不存在与API中),那么kubelet则将终止他。 为什么不使用Internal API 使用External API可以使kubernetes组件都使用相同的API,使得kubernetes具有可扩展性和可组合性。对于kubernetes中任何默认组件,如不足满足需求时,都可以更换为使用相同API的组件。 另外,外部API还可轻松的使用公共API来扩展kubernetes的功能 API资源 从广义上讲,kubernetes对象可以用任何数据结构来表示,如:资源实例、配置(审计策略)或持久化实体(Pod);在使用中,常见到的就是对应YAML的资源清单。转换出来就是RESTful地址,那么应该怎么理解这个呢?即,对资源的动作(操作)如图所示。但如果需要了解Kubernetes API需要掌握一些概念才可继续。 Group 出于对kubernetes扩展性的原因,将资源类型分为了API组进行独立管理,可以通过 kubectl api-resources查看。在代码部分为 vendor/k8s.io/api 也可以通过 kubectl xxx -v 6 来查看 kubectl 命令进行了那些API调用 text 1 2 3 4 5 6 7 8 9 10 11 $ kubectl get pods -v 6 I0513 21:54:33....

 ·  · 

如何通过源码编译Kubernetes

本地构建 选择要构建的版本 text 1 git checkout tags/v1.19.5 将依赖包复制到对应路径下 text 1 cp staging/src/k8s.io vendor/ 调整makefile 在windows上编译的克隆下可能文件编码变了,需要手动修改下文件编码。比如说出现 \r not found 类似关键词时 这里转换编码使用了 dos2unix,需要提前安装下 text 1 apt install dos2unix 转换原因是因为对于bash 脚本执行识别不了windows的换行 text 1 find . -name '*.sh' -exec dos2unix {} \; 然后将 build/root/ 的文件复制到项目根目录 text 1 cp build/root/Makefile* ./ 编译 查看帮助 make help 编译 make all WHAT=cmd/kube-apiserver GOFLAGS=-v WHAT=cmd/kube-apiserver 为仅编译单一组件,all 为所有的组件 还可以增加其他的一些环境变量 KUBE_BUILD_PLATFORMS= 如编译的平台 更多的可以 make help 查看帮助 编译中问题 Makefile:93: recipe for target ‘all’ failed...

 ·  · 

ch13 file system

Overview 文件系统和文件 文件系统: 一种用于持久性存储的系统抽象,决定了辅存中的内容如何组织与存储的抽象概念 文件:文件系统中的一个单元的相关数据在操作系统中的抽象,展现给用户的抽象概念 文件系统的功能: 分配文件磁盘空间 管理文件块(哪一块属于哪一个文件) 管理空闲空间(哪一块是空闲的) 分配算法(策略) 管理文件集合 定位文件及其内容 命名:通过名字找到文件的接口 最常见:分层文件系统 文件系统类型(组织文件的不同方式) 提供的便利及特征 保护:分层来保护数据安全 可靠性,持久性:保持文件的持久即使发生崩溃,媒体错误,攻击等 为什么需要文件系统: 如果将文件放入一个房间中,整个房间都是堆积的文件 有了文件系统的存在将会改变一切 空间管理、元数据、数据加密、文件访问控制和数据完整性等等都是文件系统的职责。 文件属性 文件具有名称和数据,还存储文件创建日期和时间、当前大小、上次修改日期等元信息。所有这些信息都称为文件系统的属性。常见的文件属性有 名称:它是以人类可理解的形式。 标识符:每个文件都由文件系统中的唯一标记号标识,称为标识符。 位置:设备上的文件位置。 类型:支持各种类型文件的系统需要此属性。 大小:当前文件大小的属性。 保护:分配和控制读、写和执行文件的访问权限。 时间、日期和安全:用于对文件的保护、安全,也用于监控 文件描述符 文件头 File Header;类似于Unix的 inode,在存储元数据中保存了每个文件的信息,保存文件的属性,跟踪哪一块存储块属于逻辑上文件结构的哪个偏移 文件描述符 (file-descriptor);是唯一标识操作系统中打开文件的数字(整形),用于用户和内核空间之间的接口,以识别 文件/Socket 资源。因此,当使用 open() 或 socket()(与内核接口的系统调用)时,会得到一个文件描述符,一个整数。因此,如果直接与内核交互,使用系统调用 read(), write() 等 close()。使用的是一个文件描述符句柄。 在 C 语言中 stdin,stdout、 和 stderr ,在 UNIX 中分别映射到文件描述符 0 1 2 text 1 2 3 4 5 f = open(name, flag); ... ....

 ·  ·