kekxv 技术博客
http://kekxv.github.io/icon.png
kekxv
2024-02-26T14:30:17.270Z
http://kekxv.github.io/
kekxv
Hexo
nginx代理的一种使用方式
http://kekxv.github.io/2024/02/26/nginx%E4%BB%A3%E7%90%86%E7%9A%84%E4%B8%80%E7%A7%8D%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F/
2024-02-26T22:03:48.000Z
2024-02-26T14:30:17.270Z
<p>nginx 的代理相信大家都使用过,例如负载均衡,高可用等等,对于这些应用,资料有很多,但是像是以下这种很特别的情况,却没啥资料:</p>
<blockquote>
<p><code>GET http://www.example.com/http://file.example.com/download.bin</code></p>
<p>只能访问<code>www.example.com</code>,但是想要使用<code>file.example.com</code>的文件,其中<code>file.example.com</code>是动态的;这种情况下,简单的方式是,在服务器上配置子路径,进行一一对应,可如果<code>file.example.com</code>有很多呢?</p>
</blockquote>
<p>本文仅作为一个记录。</p>
YOLOv8 训练自己的数据
http://kekxv.github.io/2024/02/17/YOLOv8%20%E8%AE%AD%E7%BB%83%E8%87%AA%E5%B7%B1%E7%9A%84%E6%95%B0%E6%8D%AE/
2024-02-17T20:56:21.000Z
2024-02-26T14:30:17.270Z
<p><code>YOLOv8</code>是<code>YOLO</code> 的最新<code>(20240206)</code>版本,由<code>Ultralytics</code> 提供。<code>YOLOv8</code> 支持全方位的视觉 AI<br>任务,包括<code>检测</code>、<code>分割</code>、<code>姿态估计</code>、<code>跟踪</code>和<code>分类</code>。这种多功能性使用户能够在各种应用和领域中利用<code>YOLOv8</code>的功能。</p>
<p>本文将介绍如何快速训练自己的 <code>YOLOv8</code> 模型。</p>
<p>仓库地址: <span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2tla3h2L1lPTE92OFR1dG9yaWFs">https://github.com/kekxv/YOLOv8Tutorial<i class="fa fa-external-link-alt"></i></span></p>
luckfox-交叉编译之bazel
http://kekxv.github.io/2023/12/15/luckfox-%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91%E4%B9%8Bbazel/
2023-12-15T20:00:14.000Z
2024-02-26T14:30:17.270Z
<p>最近<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL25paHVpL29wZW5jdi1tb2JpbGU=">opencv-mobile<i class="fa fa-external-link-alt"></i></span> 对<code>luckfox</code><br>这款板子进行了适配优化,我对它也很有兴趣所以入手了一个<code>luckfox</code>开发板,包含300万像素摄像头,价格还算比较便宜。</p>
<p>不过官方提供的交叉编译链只有<code>Linux</code>以及<code>windows</code>的,而我却是<code>Mac</code>的,没办法直接调用,刚刚最近在使用<code>bazel</code>,并且它支持远程编译。</p>
gitea actions CICD 自动化
http://kekxv.github.io/2023/12/15/gitea%20actions%20CICD%20%E8%87%AA%E5%8A%A8%E5%8C%96/
2023-12-15T12:23:48.000Z
2024-02-26T14:30:17.270Z
<p><code>gitea</code> 已经支持自己的 <code>CI</code> 工具: <code>gitea actions</code>,兼容 <code>github actions</code>。</p>
<p>之前使用<code>drone</code>搭配<code>gitea</code>进行自动化,效果还可以,但是终究不是官方支持。</p>
<p>而最新的 <code>gitea</code> <code>1.21</code> 之后的版本,开始支持<code>actions</code>功能,使用方式更贴近<code>github actions</code>。</p>
<p>这里做一个简单部署说明,具体的用法可以看官方文档以及<code>github actions</code>的用法。</p>
<h1 id="效果"><a href="#效果" class="headerlink" title="效果"></a>效果</h1><p><img src="/images/20231215/gitea-actions.png" alt="gitea-actions"></p>
Linux限制进程使用率
http://kekxv.github.io/2023/07/19/Linux%E9%99%90%E5%88%B6%E8%BF%9B%E7%A8%8B%E4%BD%BF%E7%94%A8%E7%8E%87/
2023-07-19T21:56:21.000Z
2024-02-26T14:30:17.266Z
<p>在使用服务器的时候,有些情况下我们需要对进程进行资源限制,例如限制<code>CPU</code>使用率,使用<code>docker</code>的时候,可以使用<code>deploy.resources.cpus</code>进行限制,而当没有使用<code>docker</code>的时候呢,我们可以考虑使用<code>cpulimit</code>进行限制</p>
影音中心Jellyfin快速部署
http://kekxv.github.io/2023/05/11/%E5%BD%B1%E9%9F%B3%E4%B8%AD%E5%BF%83Jellyfin%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2/
2023-05-11T19:23:48.000Z
2024-02-26T14:30:17.270Z
<p><img src="/images/20230511/jellyfin.png" alt="jellyfin.png"></p>
<p>影音中心<code>Jellyfin</code>目前的教程都是从头开始教,一步一步往下配置,比较麻烦,为了简单了事,直接做了基础配置之后,生成 <code>docker-compose.yaml</code> 配置;在这里做一个打包记录</p>
OCR & 人脸算法 -- opencv dnn
http://kekxv.github.io/2022/07/30/OCR-%E4%BA%BA%E8%84%B8%E7%AE%97%E6%B3%95-opencv-dnn/
2022-07-30T18:14:04.000Z
2024-02-26T14:30:17.270Z
<p>OCR 算法以及人脸算法相信大家都听说过,也知道是需要收费的,而opencv的人脸检测和人脸识别,以及OCR算法都比较弱。</p>
<p>但是,这在opencv4版本之后都将改变了,在opencv4的版本里面,神经网络版本的人脸算法以及OCR算法继承到了dnn模块内,以及可以作为一个成熟方案进行使用了,</p>
<p>接下来让我们来看看如何使用它们。</p>
tensorflow gpu 安装(ubuntu22.04)
http://kekxv.github.io/2022/07/26/tensorflow-gpu-%E5%AE%89%E8%A3%85-ubuntu22-04/
2022-07-26T13:56:21.000Z
2024-02-26T14:30:17.270Z
<p><code>ubuntu22.04</code> 安装 <code>tensorflow-gpu</code> 记录,主要是 <code>NVIDIA</code> 驱动麻烦,这里做个记录。</p>
深度学习记录-简单
http://kekxv.github.io/2022/07/07/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95-%E7%AE%80%E5%8D%95/
2022-07-07T20:00:14.000Z
2024-02-26T14:30:17.270Z
<p>记录深度学习AI过程中的一些问题。涉及到 <code>tensorflow</code>、<code>ncnn</code>、<code>onnx</code>、<code>keras</code>的训练以及转换模型</p>
vbs 启动进程并记录 PID
http://kekxv.github.io/2022/04/16/vbs-%E5%90%AF%E5%8A%A8%E8%BF%9B%E7%A8%8B%E5%B9%B6%E8%AE%B0%E5%BD%95-PID/
2022-04-16T11:05:59.000Z
2024-02-26T14:30:17.270Z
<p>在<code>Windows</code>下,有时候需要管理一些程序,在 <code>unix</code> 系列下的时候都是使用 <code>shell</code> 脚本,但在 <code>Windows</code> 下却没有 <code>shell</code> 的默认支持,所以我编写了简单的 <code>startup.vbs</code> 以及 <code>shutdown.vbs</code> 脚本,给予有需要的人以及未来的我进行<del>照抄</del>借鉴。</p>
systemd 简单编写
http://kekxv.github.io/2022/04/16/systemd%20%E7%AE%80%E5%8D%95%E7%BC%96%E5%86%99/
2022-04-16T00:23:48.000Z
2024-02-26T14:30:17.270Z
<p>我们使用 <code>unix</code> 服务器目前管理服务的方式,基本上是使用<code>systemd</code>来进行管理,所以这边简单的说明一下如何编写一个简单的<code>systemd</code>服务脚本。</p>
NSIS 简单配置
http://kekxv.github.io/2022/04/15/NSIS%20%E7%AE%80%E5%8D%95%E9%85%8D%E7%BD%AE/
2022-04-15T10:23:48.000Z
2024-02-26T14:30:17.270Z
<p><code>NSIS(Nullsoft Scriptable Install System)</code>是一个开源的 <code>Windows</code> 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,<code>NSIS</code> 是通过它的脚本语言来描述安装程序的行为和逻辑的。<code>NSIS</code> 的脚本语言和通常的编程语言有类似的结构和语法,但它是为安装程序这类应用所设计的。</p>
kInteractiveProtocol 协议
http://kekxv.github.io/2022/04/08/kInteractiveProtocol%20%E5%8D%8F%E8%AE%AE/
2022-04-08T12:00:00.000Z
2024-02-26T14:30:17.270Z
<p>kInteractiveProtocol 协议 为双向协议,主要用于双方主动发送数据识别在接收时期寻回发送来源,即消息ID。</p>
idea开源授权申请
http://kekxv.github.io/2022/03/16/idea%E5%BC%80%E6%BA%90%E6%8E%88%E6%9D%83%E7%94%B3%E8%AF%B7/
2022-03-16T09:03:29.000Z
2024-02-26T14:30:17.270Z
<p><code>JetBrains</code> 公司旗下的 <code>IDEA</code> 功能都十分强大,深受各种编程语言相关的程序员的喜爱。</p>
<p>正常情况下 <code>JetBrains</code> 公司的每个 <code>IDE</code> 分为<code>Ultimate(企业付费版本)</code>和<code>Community(社区免费)</code>两个版本。大多数情况下,社区免费版本已经够用,只是在某些情况下例如<code>c/c++</code>开发则无社区版本,同时社区版本对一些插件无法支持。</p>
<p>这时候我们将希望能够使用<code>Ultimate</code>版本,能够更快捷的进行开发。</p>
<p>我们可以选择购买 <code>Ultimate</code> 授权,如果购买的是一年的订阅,则将会获得一年的更新支持,同时能够得到当前版本的永久回退授权,只是过期之后不能享受新版本的升级。</p>
<p>另外, <code>JetBrains</code> 公司为了表达对开源项目的支持。只要你拥有一个符合条件的开源项目,你或者你的团队就可以免费使用 <code>JetBrains</code> 公司旗下所有的 <code>Ultimate</code> 版本的 <code>IDE</code> 开发工具,即全家桶的使用权 <code>1 年</code>,如果到期了可以继续申请。</p>
http proxy 数据
http://kekxv.github.io/2022/02/24/http%20proxy%20%E6%95%B0%E6%8D%AE/
2022-02-24T10:28:48.000Z
2024-02-26T14:30:17.270Z
<p>以<code>http</code>代理简单表示 <code>http proxy</code> 发送和接收的协议</p>
网络通信工具 netcat
http://kekxv.github.io/2022/02/24/%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1%E5%B7%A5%E5%85%B7%20netcat/
2022-02-24T10:23:48.000Z
2024-02-26T14:30:17.270Z
<p><code>netcat</code>,简写为 <code>nc</code>,是 <code>unix</code> 系统下一个强大的命令行网络通信工具,用于在两台主机之间建立 <code>TCP</code> 或者 <code>UDP</code> 连接,并提供丰富的命令进行数据通信。<code>nc</code> 在网络参考模型属于应用层。使用 <code>nc</code><br>可以做很多事情:<code>建立连接</code>,<code>发送数据包</code>,<code>监听端口</code>,<code>扫描端口</code>,处理 <code>ip4</code> 和 <code>ip6</code>,和 <code>telnet</code> 不同,<code>nc</code> 会区分错误输出和标准输出,<code>telnet</code> 则都是标准输出。</p>
Windows自带的端口转发
http://kekxv.github.io/2021/08/07/Port%20forwarding%20that%20comes%20with%20Windows/
2021-08-07T10:23:48.000Z
2024-02-26T14:30:17.270Z
<p>通过 <code>Windows</code> 实现端口转发。本文为参考转发文章</p>
<p>使用<code>Portproxy</code>模式下的<code>Netsh</code>命令即能实现<code>Windows</code>系统中的端口转发,转发命令如下:</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">netsh interface portproxy add v4tov4 listenaddress=[localaddress] listenport=[localport] connectaddress=[destaddress]</span><br></pre></td></tr></table></figure>
bazel 笔记 01
http://kekxv.github.io/2021/08/07/bazel%20notes%2001/
2021-08-07T10:23:48.000Z
2024-02-26T14:30:17.270Z
<p>Bazel - a fast, scalable, multi-language and extensible build system</p>
<p>在使用 <code>bazel</code> 许久之后,开始做一下记录,以记录一些奇奇怪怪的处理方式(?)。</p>
docker swarm替代docker-compose
http://kekxv.github.io/2021/08/07/docker%20swarm%E6%9B%BF%E4%BB%A3docker-compose/
2021-08-07T10:23:48.000Z
2024-02-26T14:30:17.270Z
<p>使用 docker-compose 管理本地容器组,是非常方便的手段,但是最近遇到一个 bug,决定使用 docker stack /swarm 替代 docker-compose 。</p>
<blockquote>
<p>命令行生成二维码可以试试 <code>echo "二维码内容" | qrencode -o - -t UTF8</code></p>
</blockquote>
<p>事情是这样的,在 <code>docker-compose.yaml</code> 内定义了 <code>network</code>.<code>aliases</code> 之后,在测试的时候,其他容器能够正常通过 <code>aliases</code> 对其进行访问,但是,到了实际部署的时候,很容易失败,例如重启之后,或者某个容器意外或者手动重启之后,都有可能导致该情况,导致很湿郁闷。</p>
<p>遂,在查找资料之后,决定替换掉 <code>docker-compose</code>。</p>
<blockquote>
<p>Ps:<code>docker-compose</code> 的配置 <code>depends_on</code> 只会控制控制启动顺序,并不会等待所需容器启动成功之后再启动下一 容器<br>简单来说,启动容器<code>数据库</code>之后会马上启动容器<code>应用</code>,并不在乎<code>应用</code>容器需要<code>数据库</code>容器才能正常运行,此时可能会造成 <code>应用</code> 容器无法找到数据库而意外退出。</p>
</blockquote>
kProxyCpp 服务端软件
http://kekxv.github.io/2021/08/07/kProxyCpp%20%E6%9C%8D%E5%8A%A1%E7%AB%AF%E8%BD%AF%E4%BB%B6/
2021-08-07T10:23:48.000Z
2024-02-26T14:30:17.270Z
<p>承接自 <span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2tla3h2L2tIdHRwZA==">kHttpd<i class="fa fa-external-link-alt"></i></span> 项目。</p>
<p>由于 <code>kHttpd</code> 项目使用了 <code>libevent</code> 开源库,其中某些特性导致使用上面不太方面(仅仅指的是我个人而言),所以重新开发了本项目。</p>
<h1 id="功能说明"><a href="#功能说明" class="headerlink" title="功能说明"></a>功能说明</h1><ol>
<li><p><code>http server</code> 实现, <code>http server</code> 服务端功能,使用线程池为每个连接进行处理,所以每个请求都可以阻塞(但是并不建议,除非某种特定的场景,例如进行http代理服务,必须等到对方回应,不使用 <code>libevent</code> 其中一个原因)。</p>
</li>
<li><p><code>WebSocket server</code> 实现,当前项目实现了<code>WebSocket server</code>端代码,可以使用 c/c++ 愉快的开发<code>WebSocket</code>项目,同时<code>WebSocket</code>服务端也支持<code>http server</code>,也就是同一个端口同时使用<code>WebSocket server</code> 以及 <code>http server</code>,使得更方便一些。使用<code>WebSocket server</code>的情况下,请根据实际情况,加大线程数量以及监听数量,否则可能造成后续连接被阻塞。</p>
</li>
<li><p><code>CGI</code> 功能实现,目前实现 <code>CGI</code> 调用 <code>php</code>,可以使用<code>php</code>作为动态脚本进行开发,不过现在还未实现 <code>php</code>的<code>POST</code>模式,即还未将 <code>php</code> <code>body</code>数据传入给<code>CGI</code>。</p>
</li>
</ol>