Hello there 👋

Welcome to flik’s blog.
I am a web developer.

macOS中使用Proxifier强制软件连接到代理

在macOS中,部分软件,尤其是基于Electron开发的软件,并没有提供代理配置。这些软件通常遵循系统的代理设置,但有时也需要进行特定配置才能正确使用HTTP代理。 最近在使用一个名为XNAT-Desktop-Client的数据集下载工具。目标文件存储在某国外的大学服务器中,必须使用代理才能下载,否则速度非常慢。 但是这款软件没有提供代理配置的选项,排查了一段时间,猜测这款软件可能使用了特殊的网络请求模块,导致不会通过Clash代理。 在这里,介绍Proxifier。这是一个强大的网络重定向工具,可以强制将网络请求通过指定的代理服务器,即使是某些应用程序不支持代理设置。 通过设置Proxifier,就使得XNAT-Desktop-Client通过Clash代理。 配置过程如下。 首先添加一个Clash的Proxy选项。进入Proxifier,依次选择Proxies -> Proxies -> Add ,添加Clash的相关信息。 Address: 127.0.0.1 Port: 7890 (本机的Clash端口) Protocol: HTTPS 随后,再配置XNAT-Desktop-Client软件走对应的Proxy选项即可。 依次选择Rules -> Rules -> Add ,添加XNAT-Desktop-Client软件的相关信息。 name: 随意 Applications: 使用+号手动选择目标软件 Actions: 刚才配置的Proxy选项 保存后,重启XNAT-Desktop-Client软件。 此时,在Proxifier的控制台中,便显示XNAT-Desktop-Client软件的https协议转发到了Clash的7890端口。 Clash的实时速率也显示了正常的下载速度,而不是之前的几kb/s。

一月 30, 2024

一次Ubuntu掉n卡驱动的排查过程

前段时间想尝试在ubuntu上安装steam,但是没有安装成功。过了一个星期重启电脑后,发现开机黑屏,无法进入桌面。记录这次排查的过程,以供下次手贱的时候快速恢复。 一、切换低版本的内核 在黑屏界面,通过alt + ctrl + f2进入tty,查看显卡驱动是否正常 nvidia-smi 提示zsh: command not found: nvidia-smi 这个报错大概是说明本机的显卡驱动掉了。 首先尝试切换内核,看看低版本的内核是否可以进入。 首先,查看本机安装的内核 sudo dpkg --get-selections |grep linux-image 可以通过开机时显示grub菜单,来切换内核版本。 sudo vim /etc/default/grub 注释GRUB_TIMEOUT_STYLE 将GRUB_CMDLINE_LINUX_DEFAULT设置为text格式的菜单 将GRUB_TIMEOUT设置为20秒 在开机时,我选择更低的5.19.0-32-generic版本,发现此时可以正常开机进入桌面,但仍然找不到显卡驱动。 二、查看操作日志 由于在安装steam时可能动过显卡,因此显卡驱动丢失很可能是apt操作导致的。 虽然安装命令是一个星期前执行的,但仍然可以通过apt日志查看显卡驱动是否被修改了。 注:日志记录可以保留多久,取决于系统的日志轮转设置。可以查看/etc/logrotate.conf文件及/etc/logrotate.d/目录下相关的配置文件。本机的rotat设置为4weeks,因此可以查看半个月前的操作日志。 cat /var/log/apt/history.log 通过日志可以直接看出,我尝试安装steam时,自动安装了最新版本的显卡驱动。但是由于依赖失败,部分包无法安装。 随后,由于安装失败,我尝试使用autoremove命令卸载上次安装失败后安装的包,这导致了525驱动和515驱动也被删除。 可以通过下面的命令,查看驱动被删除的具体时间 cat /var/log/dpkg.log | grep remove 通过匹配操作时间,发现就是autoremove导致的驱动丢失。 三、删除残留驱动 因此,问题便简化了,重装显卡驱动即可。在重装前,删除残留驱动。 输入以下命令以移除当前安装的Nvidia驱动: sudo apt-get remove --purge '^nvidia-.*' Nouveau是Nvidia显卡的开源驱动。要安装官方驱动,先禁用nouveau。 编辑/etc/modprobe.d/blacklist.conf文件,并添加以下内容: blacklist nouveau options nouveau modeset=0 更新屏蔽设置 sudo update-initramfs -u 四、安装驱动 查看当前显卡内核 cat /proc/driver/nvidia/version 虽然当前显卡的驱动掉了,但仍然可以查询到先前的显卡驱动版本为525。...

一月 16, 2024

使用PaddleDetection实现竹签计数

使用PaddleDetection实现竹签计数功能,实现效果如下: 一、数据集准备与格式转换 数据集来源: https://ieee-dataport.org/documents/mobilenetv3-cbam-bamboo-stick-counting 该数据集格式为tfrecords,需要转换为COCO或者VOC。 转换过程的核心代码如下: raw_image_dataset = tf.data.TFRecordDataset(filenames) for raw_record in raw_image_dataset: example = tf.train.Example() example.ParseFromString(raw_record.numpy()) filename = str(example.features.feature['image/filename'].bytes_list.value[0], encoding='utf-8') 使用TFRecordDataset 来包裹tfrecords文件,并使用Example来读取每一个数据对象,最后使用feature名称来获取对应的属性值。 对于该数据集,feature属性名称如下: image_feature_description = { "image/encoded": tf.io.FixedLenFeature([], tf.string), "image/filename": tf.io.FixedLenFeature([], tf.string), 'image/height': tf.io.FixedLenFeature([], tf.int64), 'image/width': tf.io.FixedLenFeature([], tf.int64), 'image/object/bbox/xmax': tf.io.FixedLenFeature([], tf.float32), 'image/object/bbox/xmin': tf.io.FixedLenFeature([], tf.float32), 'image/object/bbox/ymax': tf.io.FixedLenFeature([], tf.float32), 'image/object/bbox/ymin': tf.io.FixedLenFeature([], tf.float32), 'image/object/class/label': tf.io.FixedLenFeature([], tf.int64), } 其中,图片字节流feature名为image/encoded。 遍历完每个数据对象后,就可以提取图片对象。 图片对象提取并转换为PIL格式的过程如下: image_bytes = example.features.feature['image/encoded'].bytes_list.value[0] img = Image.open(io.BytesIO(image_bytes)) 最后,构造COCO的格式或者VOC格式的dict,并转换为json或者xml标签。 在该项目中,我使用VOC格式数据集,将dict生成xml标签的工具来自: https://github.com/canerkaraguler/Json2PascalVOC 转换完成后,查看效果。 PS:该数据集中部分标签的xy坐标反了,需要自己手动处理。 二、方案选择 对数据集进行分析。...

一月 2, 2023

记录最近使用Nuxt-Content遇到的几个bug

highlight参数无效 在配置了highlight参数后,发现所有的页面代码都无法highlight。 content: { highlight: { theme: 'dracula', }, }, 但是当删除了某一个.md文件后,页面又可以highlight了。 因此判断,错误出现在这个特定的.md文件;由于nuxt是Server端渲染,因此可能出现一篇文章错误导致所有大文章都无法highlight的情况。 观察报错,发现了关键信息<source.css.scss>。 [nuxt] [request error] No grammar provided for <source.css.scss> at Registry.e._collectDependenciesForDep (./node_modules/shiki-es/dist/shiki.mjs:12:24999) at Registry.<anonymous> (./node_modules/shiki-es/dist/shiki.mjs:12:25495) at ./node_modules/shiki-es/dist/shiki.mjs:12:23016 at Object.next (./node_modules/shiki-es/dist/shiki.mjs:12:23125) at s (./node_modules/shiki-es/dist/shiki.mjs:12:21828) 而scss语言只出现在了这个特定的.md文件里。这很可以就是错误处。 ```scss xxxxx ``` 当删除了scss符号后,文章可以正常解析。 那么错误原因是什么呢? Content使用了**shiki**,并且在内置的可解析的语言列表中包含了scss语言。 Content使用的是0.10.0版本的shiki,而这个bug在0.10.1中得到了修复。 临时的解决方法为,配置preload属性: content: { highlight: { theme: 'dracula', preload: ['scss'] }, }, 无法解析某个md文件 报错信息如下: 500 Cannot use 'in' operator to search for 'path' in undefined at Object....

六月 1, 2022

记录SSH和Git的一些知识点

Git https://tuts.alexmercedcoder.com/2021/1/guidetogit/ 新建git仓库 在项目目录下,查看git信息 git status 这一步十分重要。若该项目下已生成git仓库,则会产生意想不到的冲突。 若没有git仓库,则可以执行新建命令 git init 提交文件 将待管理的文件存入暂存池(staging area)。 常见的包含以下几个命令: git add . 添加所有的修改和新建文件至暂存池。 git add file.txt 添加特定的文件存入暂存池。 git add -A 添加所有被删除、被替换、被修改和新增的文件到暂存池。 随后,提交文件至当前分支上,不要忘记添加-m标志 git commit -m "This is the first commit" 上传至远程仓库 在github上新建仓库,不添加read.md。 在本地仓库添加远程仓库,推荐使用ssh方式。 git remote add remoteName git@github.com:xxxx.git 若添加后想删除远程连接 git remote rm remoteName 将暂存池的内容上传到远程仓库 git push remoteName branchName 修改主分支名称 git默认的主分支名称为master,而大部分的代码托管网站的git主分支为master,因此需要修改分支名称。 方法一:新建main分支,复制master分支至main分支,切换至main分支后删除master分析 新建main分支 git checkout -b main -b表示新建的分支拷贝当前分支内容....

五月 22, 2022

Docker安装Redis简单教程

dockerhub上查询所需版本 https://hub.docker.com/_/redis?tab=tags 我选择安装的Redis版本为6.2.6 安装redis docker pull redis:6.2.6 新建redis.conf来存储redis的配置文件 mkdir -p /data/redis/conf touch /data/redis/conf/redis.conf 运行redis并配置参数 将容器的6379端口映射到主机的6379端口。 将配置文件夹、配置文件挂在到主机对应位置 注意,需要在云主机的控制台里打开6379端口。 docker run -p 6379:6379 --name redis -v /data/redis/conf/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis:6.2.6 redis-server /etc/redis/redis.conf --appendonly yes 修改配置文件 vim /data/redis/conf/redis.conf i paste config content :wq 我的配置文件如下: requirepass 密码 bind 0.0.0.0,监听客户端的连接请求 appendonly 持久化 protected-mode 是否不允许远程连接 requirepass xxxxxx maxclients 10000 bind 0.0.0.0 appendonly yes protected-mode no 通过rdm远程链接 address: 对应的云主机ip port: 6379...

五月 10, 2022

基于vue3.x+Markdown的简易静态博客

项目介绍 之前的博客是基于hexo的,最近想在博客内集成一些工具,因此重新制作博客,这样也方便进行样式的定制。 距离vue3.0发布已经过去了一年了,vue3.x已经变得很成熟,因此直接使用vue3.x。个人对于Vite的了解不多,因此也就使用默认的webpack来打包。 平时使用typora来记Markdown格式的笔记,因此我优先选择了静态博客,将本地的md文件通过git上传到服务器目标文件夹下,并且直接渲染文件夹下的md文件即可。 在笔记分类上, 项目搭建 新建项目 使用vue-cli创建项目。 添加样式 在App.vue内引入字体和iconfont @import url("https://fonts.font.im/css?family=Roboto:400,500,700"); //font @import url("https://at.alicdn.com/t/font_3181020_137vc0q0r6ys.css"); 在assets/themes文件夹下创建样式变量variable.scss,用来进行亮色/暗色模式的切换 body { @import "./github-markdown-css/github-markdown-light.css"; --bg-primary: #f6f7f8; --bg-nav-primary: #ffffff; --bg-primary-transparent: rgba(246, 247, 248, 0.78); --color-font-primary: #000000; --color-font-hover: #ee87b4; --color-font-content: #404040; --color-shadow: 0 0 #0000; --color-bulb: #404040; --color-bolder: #999999; } body[theme="dark"] { @import "./github-markdown-css/github-markdown-dark.css"; --bg-primary: #202124; --bg-nav-primary: #000000; --bg-primary-transparent: rgba(0, 0, 0, 0.78); --color-font-primary: #ffffff; --color-font-hover: #008357; --color-font-content: #ffffff; --color-shadow: 0 0 #fff; --color-bulb: #ffff00; --color-bolder: #202124; } 修改路由 通过md文件的文件名来访问文章。...

三月 17, 2022

C语言基础知识整理

在线课程 黑马: C++开发全套教程 网盘链接:https://pan.baidu.com/s/1vTXgoXql0JZIuThKIMJJCA 提取码:1234 浙大翁恺[C语言程序设计] https://www.icourse163.org/course/ZJU-9001 数据类型 整型 数据类型 占用空间 取值范围 short 2B -2^15 ~ 2 ^15-1(-32768~32767) int 4B -2^31 ~ 2^31-1() long 4B(windwos,32bitLinux); 8B(64bitLinux); -2^31 ~ 2^31-1 long long 8B -2^63 ~ 2^63-1 sizeof 用法sizeof(type/var) 实型 数据类型 占用空间 有效数字范围 float 4B 7bit double 8B 15~16bit 在默认情况下,输出一个小数,最多显示6位有效数字...

三月 4, 2022

macos上使用vscode进行c/c++编程

参考教程 C/C++ for Visual Studio Code https://code.visualstudio.com/docs/languages/cpp https://code.visualstudio.com/docs/cpp/config-clang-mac 安装扩展 安装本地compiler macOS 上可以直接使用gcc或者clang 可以使用下面两条命令来验证 compiler 是否安装成功 songfangtaodeMacBook-Pro:~ flik$ clang clang: error: no input files songfangtaodeMacBook-Pro:~ flik$ clang -v Apple clang version 13.0.0 (clang-1300.0.27.3) Target: x86_64-apple-darwin21.3.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin 创建项目 mkdir c_workspace cd c_workspace mkdir hello cd hello cd . 添加配置 在结束这一步骤后,在工作文件夹的.vscode下将至少生成以下三个文件: tasks.json (compiler build settings) launch.json (debugger settings) c_cpp_properties.json (compiler path and IntelliSense settings) 生成活动文件tasks.json Terminal > Configure Default Build Task...

二月 26, 2022

vue3初体验—TodoList

vue3新特性 新增功能 Fragment 不受根节点限制,渲染函数可以接收Array Teleport 类似Portal,随用随取,e.g.弹窗 Suspense 嵌套的异步依赖,e.g.async setup() 带来的变化 性能提升1.3x~2x TS支持,新增:Fragment、Teleport、Suspense 按需加载(配合Vite) & 组合式API 组合式API(composition) https://v3.vuejs.org/api/composition-api.html#setup https://v3.cn.vuejs.org/api/composition-api.html 新建项目 vue create todo-list eslint + prettier https://www.cnblogs.com/jiaoshou/p/11271719.html 初始化 添加bootstrap样式 <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap.min.css" rel="stylesheet"> 挂载到public/index.html 引入reactive创建响应式对象 const state = reactive({ valueAdd: "", // 添加事项 valueEdit: "", // 编辑事项 }); return toRefs(state); 具体实现 渲染item <div class="form-group form-check mb-0"> <input type="checkbox" class="form-check-input" :id="'item-' + index" v-model="item.checked" @click="() => (item.checked = !item.checked)" /> <label class="form-check-label" v-if="!...

一月 2, 2022