使用 nc 测试 UDP 端口是否正常
2023-06-10 tech network linux 1 mins 1 图 20 字
nc -zvu x.x.x.x 8888
nc -zvu x.x.x.x 8888
本篇文章里我先卸载了老版本 Parallels,再安装特定版本 Parallels。参考 alsyundawy/Parallels。
卸载老版本。
删除 app 应用后,删除相关配置文件:
rm -rf ~/Library/Parallels
rm -rf /Library/Preferences/Parallels
下载
https://download.parallels.com/desktop/v18/18.1.1-53328/ParallelsDesktop-18.1.1-53328.dmg
我做了一个备份,不过 1M 小水管的速度会很慢。
安装
要求升级,直接关闭窗口即可,会询问是否直接安装
直接关闭 x,然后选择使用当前版本安装。
一些其他配置
退出账号并关闭 Parallels Desktop
。参考文末的参考资料下载。我也做了个备份
pkill -9 prl_disp_service
sudo cp -f prl_disp_service "/Applications/Parallels Desktop.app/Contents/MacOS/Parallels Service.app/Contents/MacOS/prl_disp_service"
sudo chown root:wheel "/Applications/Parallels Desktop.app/Contents/MacOS/Parallels Service.app/Contents/MacOS/prl_disp_service"
sudo chmod 755 "/Applications/Parallels Desktop.app/Contents/MacOS/Parallels Service.app/Contents/MacOS/prl_disp_service"
sudo cp -f licenses.json "/Library/Preferences/Parallels/licenses.json"
sudo chown root:wheel "/Library/Preferences/Parallels/licenses.json"
sudo chmod 444 "/Library/Preferences/Parallels/licenses.json"
sudo chflags uchg "/Library/Preferences/Parallels/licenses.json"
sudo chflags schg "/Library/Preferences/Parallels/licenses.json"
sudo codesign -f -s - --timestamp=none --all-architectures --entitlements ParallelsService.entitlements "/Applications/Parallels Desktop.app/Contents/MacOS/Parallels Service.app/Contents/MacOS/prl_disp_service"
修改host
问题:
无法联网
重新安装 Parallels Tools。
重启系统,就好了。
修改系统 host 的命令备忘。
# 加锁
sudo chflags schg /etc/hosts
sudo chflags uchg /etc/hosts
# 解锁
sudo chflags nouchg /etc/hosts
sudo chflags noschg /etc/hosts
iOS 上我一直在用 prompt 作为 ssh 登录的工具。但直到我最近使用 Neovim 时候,才意识到它的问题——页面会定时的出现一个 q
字符。非常影响使用体验。
上网搜索了一番,发现了这个不错的命令行工具:https://github.com/ish-app/ish 官网:https://ish.app
根据官方的介绍,iSH是一个x86模拟器,在iOS设备上本地运行Linux shell环境。
这篇文章简单记录它安装 ssh 工具的经过,作为一个终端,竟然没有自带 ssh 工具,这是我始料未及的。
下载。
先查一下操作系统信息:
cat /etc/issue
cat /etc/os-release
可以看到运行的是 alpine 系统,alpine 是一个非常精简的 linux 系统。
在 alpine 上安装 openssh
alpine 的源管理工具是 apk,可以使用 apk 进行软件安装:
apk update
apk search openssh
apk add openssh
完成。
非常完美。
字体安装
可以参考这篇文章操作:neovim 安装使用备忘
记录配置 neovim 的过程。我已经是 vim 老鸟了,所以 vim 的相关内容就略去了。
Neovim 是 Vim 的一个分支,它的目标是改进 Vim 的代码库,使得 API 更容易实现,并改善用户体验和插件实现。Neovim 与 Vim 的主要区别有以下几点:
一般来说,Neovim 的配置文件是保存在 ~/.config/nvim/init.vim
或者 ~/.config/nvim/init.lua
中。
apt install neovim
查看版本
nvim --version
版本太老了,卸载掉。
sudo apt remove neovim
sudo apt remove neovim-runtime
wget https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz
tar zxvf nvim-linux64.tar.gz
./nvim-linux64/bin/nvim
以下是默认配置。
我把安装位置调整一下,再做个软链到系统路径:
mv nvim-linux64 /var/local
ln -s /var/local/nvim-linux64/bin/nvim /usr/local/bin/nvim
NvChad 是一个基于 Neovim 的配置,它使用lua语言编写,旨在提供一个具有非常漂亮的UI和极快的启动时间(大约0.02秒~0.07秒)的基础配置。如官网的上图所示。
我们可以根据自己的喜好修改默认的设置,也可以删除一些自己不喜欢的配置,可以在自定义配置(lua/custom目录)中调整整个默认配置,并且这个目录是 git 忽略的,所以我们可以保持与NvChad最新的配置(main分支)同步。
注:这一部分可以先跳过,待后续完全安装好了再处理
安装好之后如果没装字体,都会有一个疑问,为什么文件名的前面都有一个“?方框”?就是没装字体啦。
Nerd Font 字体:https://github.com/ryanoasis/nerd-fonts/releases/latest
Nerd Fonts 是一个针对开发人员的字体修补项目,其中包含高数量的字形。该项目补丁包括 Hack、Source Code Pro 等 50 多种修补字体,以及包括 Fira Code、JetBrains Mono 和 Meslo 等三种 Nerd Fonts 的 Termius 自定义字体。
字体安装只与你本地设备有关,我们是在哪个平台的设备展示内容(使用终端),就在那个平台下安装字体。
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/SourceCodePro.zip
unzip SourceCodePro.zip -d /usr/share/fonts/SourceCodePro
确认字体放好了:
搜索”font“:
把下好的字体文件拖进去:
再在 item2 里配置使用这个字体:
就大功告成了:
参考了 reddit 的这个回答:https://www.reddit.com/r/ish/comments/nuzvir/how_to_install_nerd_fonts/ ,
下载 Fontcase
下载字体
https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/SourceCodePro.zip
扔到一个路径下。
Fonts import & install
install 后下载字体
需要在系统里安装,在路径 General > VPN & Device Management 里安装:
在具体的 app 里就可以使用导入的字体了。例如我在 iSH 里可以设置这个字体了:
ripgrep 是一个基于行的搜索工具,它可以递归地在当前目录中搜索与正则表达式模式匹配的内容。后续使用 telescope 插件时需要它。
默认情况下,ripgrep会尊重 gitignore 规则并自动跳过隐藏文件/目录和二进制文件。它支持Windows、macOS和Linux,并提供二进制下载。该工具类似于其他流行的搜索工具,例如 The Silver Searcher、ack 和 grep。它可以替代许多其他搜索工具,因为它包含了它们的大部分功能并且通常更快。
它的使用方法可以参考 https://github.com/BurntSushi/ripgrep/blob/master/GUIDE.md#basics
我在 Debian 下下载deb 包安装:
curl -LO https://github.com/BurntSushi/ripgrep/releases/download/13.0.0/ripgrep_13.0.0_amd64.deb
sudo dpkg -i ripgrep_13.0.0_amd64.deb
fd是一个用于在文件系统中查找条目的程序,是find的一个简单,快速和用户友好的替代品。使用 telescope 需要它。
我在 Debian 下下载deb 包安装:
curl -LO https://github.com/sharkdp/fd/releases/download/v8.7.0/fd_8.7.0_amd64.deb
sudo dpkg -i fd_8.7.0_amd64.deb
我不想用默认的neovim配置,直接把配置文件做个备份,安装 NvChad
cd ~/.config
mv nvim nvim_bak
git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1 && nvim
在终端输入 nvim
打开 neovim 。直接键盘输入 :checkhealth
,然后按下回车执行来检查依赖是否齐全:
Ps: 这个自动提示真的太好用辣
发现问题还是挺多的。
按照提示修复相关的问题。
https://nvchad.com/docs/config/mappings
默认映射在core.mappings
中定义。
vi /root/.config/nvim/lua/core/mappings.lua
在 nvim 中可以使用NvCheatsheet
或Telescope keymaps
来列出所有映射。
不知道是什么原因,无论我怎么修改,快捷键就是没办法生效。
我查看了 tmux.conf vimrc bashrc zshrc 等相关的文件,目前还没法解决。
只能使用 Neovim 默认的组合快捷键 Ctrl+w 了,再加上其他按键。先这么用着虽然不太方便,以后再研究:
除此之外,还有(我不确定这些是谁的快捷键,但是在 neovim 中可以使用)
在 command 模式下的命令
NvChad 使用 lazy.nvim 进行插件管理. 当一个插件被加载的时候, 它所依赖的插件也会自动加载。
在 nvim 界面内的 command 模式下输入 Lazy
即可进入管理界面,展示插件的加载状态, 安装和更新插件, 分析插件加载耗时等.
telescope.nvim 由 Lua 实现, 支持扩展, 功能十分强大. 它几乎支持一切可以列在列表中的东西, 例如:
可以检查是否安装好:
后来我补完了 fd 的安装。
另外由于我的快捷键实在没调试成功,暂时先用命令进入:
:Telescope find_files
界面如下,搜索的速度跟飞一样
根据官方 github ,一共有几个命令:
" Find files using Telescope command-line sugar.
nnoremap <leader>ff <cmd>Telescope find_files<cr>
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
nnoremap <leader>fb <cmd>Telescope buffers<cr>
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
同时 Telescope 还管理了其他几个插件 :
用于在 Neovim 中切换显示和隐藏文件浏览器(File Explorer)窗口。与另外两个插件一起配合完成工作。
nvim-treesitter 提供强大的语法解析和代码分析功能,使你能够更高效地编写和理解代码。它使用 Tree-sitter 引擎,这是一种高效且可扩展的语法解析器,能够对各种编程语言进行快速而准确的语法分析。
nvim-treesitter 的功能包括:
我在 check的时候报了两个warning:
nvim-cmp 是一个用于 Neovim 的代码补全框架,旨在提供灵活、高度可配置和可扩展的代码补全功能。它的设计理念是为了满足不同用户的需求,并与其他插件和补全源进行集成。
下面是 nvim-cmp 框架的一些关键特点和功能:
在 NvChad 中它集成了下面这些插件:
luaSnip:
friendly-snippets:
cmp-buffer:
cmp-nvim-lsp:
cmp-nvim-lua:
cmp-path:
cmp_luasnip:
nvim-autopairs:
这部分内容以后再完善。
以后可能也会用,先放在这了。
启动页: alpha-nvim.
重命名: renamer.nvim.
Terminal: toggleterm.nvim.
提供格式化、诊断: null-ls.nvim.
管理 tabs、buffers: bufferline.nvim.
遇到一个报错 Error executing vim.schedule lua callback: /root/.config/nvim/lua/core/utils.lua:80: attempt to index a nil value
和 gpt 进行了探讨,
改了源码 vi .config/nvim/lua/core/utils.lu
第 80 行,插入了这句:
mappings[section] = mappings[section] or {}
最终如下:
就好了。
我从 Mac 对比从 windows 同事发来的代码, git diff
显示很多文件都有改动,每一行都被显示为修改过,严重影响了diff 功能。
最初,我们尝试使用 sed
的命令来去除每行末尾的”^M”字符,但是没有达到预期效果:
find . -type f -name "*.txt" -exec sed -i '' $'s/\r$//' {} \;
find . -type f -name "*.txt" -exec dos2unix {} +
转向 Perl 解决这个问题:
find . -type f -name "*.txt" -exec perl -pi -e 's/\r$//' {} \;
解释:
find
命令在当前目录及其子目录中递归搜索文本文件。-type f
选项确保只匹配常规文件。-name "*.txt"
选项筛选具有 “.txt” 扩展名的文件。-exec
选项用于在每个匹配的文件上执行 Perl 命令。perl -pi -e
是在文件上执行原地编辑的 Perl 命令。's/\r$//'
匹配每行末尾的 “^M” 字符(\r
),并将其替换为空字符串。注意:
工作生活中我们总会遇到要求看某某视频写心得之类的这种要求。
目前我经常看 b 站,b 站已经有相关的插件可以给你总结视频内容了。比如我前几天在《ChatGPT 的一些资料总结》记录的这个插件Glarity Summary,可以利用 ChatGPT为谷歌搜索、YouTube视频、以及各种网页内容生成摘要。
毕竟涉及到工作和生活,有一些视频我们没有办法上传到 SNS 上生成摘要,所以只好在本地生成了。我目前的办法是将视频转换成音频,再转换成文字。通过特定的 prompt ,脱敏后交给 gpt 帮我生成我想要的数据。虽然不是很完美的方案,暂时能解决问题就好。这篇文章简要记录下过程。
本方案还有诸多需要优化的地方,比如 whisper 使用的是 cpu 的方案。 GPU 运行的报错我一直没办法解决。待有空了再研究。
我估计可能是我 Python 版本的问题,我在《 Mac M1 运行 conda 和 jupyter notebook 备忘》使用的 Python 版本是 3.8,有可能不行。
安装 ffmpeg
brew install ffmpeg
将视频转换为音频:
ffmpeg -i "input.mp4" -vn -acodec libmp3lame output.mp3
ffmpeg -i "input.mov" -vn -acodec libmp3lame output.mp3
-i input.mov
指定输入文件路径和文件名。-vn
告诉 FFmpeg 不包含视频流,只处理音频流。-acodec libmp3lame
指定音频编解码器为 libmp3lame,用于将音频流编码为 MP3 格式。output.mp3
指定输出的 MP3 文件路径和文件名。将音频截取为 30s 一份的音频。
ffmpeg -i output.mp3 -f segment -segment_time 30 -c copy output_%03d.mp3
这里多写一些关于 ffmpeg 的命令,将 mp3转为 ogg格式:
ffmpeg -i zzzpv.mp3 -c:a libvorbis -q:a 10 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 zzzpv.ogg
https://github.com/openai/whisper
whisper是一款多任务语音识别模型,可进行多语言语音识别、语音翻译和语言识别。它使用Transformer序列到序列模型训练在一个大量的多样化音频数据集上,并兼容Python 3.8-3.11和最新的PyTorch版本。它提供了五种不同的模型大小,其中包括仅支持英语的版本,其性能取决于语言。它可以通过命令行或Python使用,其代码和模型权重在MIT许可证下发布。
whisper 有几种模型,我在 mac m1 下(CPU 模式)使用 small 的模型很快,medium 的很慢。
激活虚拟环境,安装 whisper:
conda activate ~/Workspace/pytorch-test/env
pip install --upgrade git+https://github.com/openai/whisper.git
编写hello world
,试试效果:
import whisper
# model = whisper.load_model("small")
model = whisper.load_model("medium")
audio = whisper.load_audio("/Users/kelu/Desktop/output_000.mp3")
audio = whisper.pad_or_trim(audio)
# make log-Mel spectrogram and move to the same device as the model
mel = whisper.log_mel_spectrogram(audio).to("cpu")
# detect the spoken language
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")
# decode the audio
# options = whisper.DecodingOptions(fp16 = False, prompt="以下是普通话的句子") # 简体中文增加 prompt
options = whisper.DecodingOptions(fp16 = False)
result = whisper.decode(model, mel, options)
# print the recognized text
print(result.text)
下载模型需要一些时间:
我的两个音频文件也放来做个备份:output_1.mp3, output_2.mp3,
写一个循环的逻辑:
import whisper
options = whisper.DecodingOptions(fp16 = False, prompt="以下是普通话的句子")
model = whisper.load_model("medium")
for i in range(361):
file_name = f"output_{i:03d}.mp3"
audio = whisper.load_audio("/Users/kelu/Desktop/"+file_name)
audio = whisper.pad_or_trim(audio)
mel = whisper.log_mel_spectrogram(audio).to("cpu")
result = whisper.decode(model, mel, options)
print(result.text)
我尝试像参考资料 1 里的文章使用 mps 运行 whisper,但没有成功。网上也看到了很多讨论。待有精力再跟进了。
git archive -o "$(basename "$(pwd)").zip" HEAD $(git diff --name-only HEAD^ HEAD)
含义如下:
git archive
:用于创建一个 Git 存档文件。
-o "$(basename "$(pwd)").zip"
:指定输出文件的名称。在这里,我们使用 basename "$(pwd)"
来获取当前目录的目录名。
HEAD
:表示我们要导出的提交的引用
HEAD
是指向当前所在分支的指针,它指向最新的提交。
而 HEAD^
则表示当前提交的父提交,即倒数第二个提交。
$(git diff --name-only HEAD^ HEAD)
:用于获取最近一次提交与上一次提交之间的变更文件列表。git diff --name-only HEAD^ HEAD
命令返回这些文件的相对路径。