<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on HaoKunT的博客</title><link>https://hkvision.cn/post/</link><description>Recent content in Posts on HaoKunT的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Sun, 09 Feb 2025 01:46:34 +0800</lastBuildDate><atom:link href="https://hkvision.cn/post/index.xml" rel="self" type="application/rss+xml"/><item><title>如何用 ollama 快速下载 deepseek 模型</title><link>https://hkvision.cn/2025/02/09/%E5%A6%82%E4%BD%95%E7%94%A8-ollama-%E5%BF%AB%E9%80%9F%E4%B8%8B%E8%BD%BD-deepseek-%E6%A8%A1%E5%9E%8B/</link><pubDate>Sun, 09 Feb 2025 01:46:34 +0800</pubDate><guid>https://hkvision.cn/2025/02/09/%E5%A6%82%E4%BD%95%E7%94%A8-ollama-%E5%BF%AB%E9%80%9F%E4%B8%8B%E8%BD%BD-deepseek-%E6%A8%A1%E5%9E%8B/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
写在开头 最近由于工作的原因，已经有段时间没有更新博客了。一方面担心可能会引发不必要的纠纷，另一方面确实因为工作太忙、太累，实在抽不出时间和精力来写文章。不过，恰逢DeepSeek R1的热度持续上涨，我也想借这个机会，分享一个之前踩到的小坑，希望能对大家有所帮助。
背景 目前网上教的本地通过 ollama 来部署大模型的方式，都需要使用 ollama run &amp;lt;model&amp;gt; 这样的命令，或者通过一些可视化的前端来安装模型，但是这样的命令很可能因为直连，出现下载缓慢的状况，针对这样的状况，目前，网上的教程大多建议用户从ModeScope下载模型文件后手动包装modelfile文件再给Ollama使用。这种方法不仅步骤繁琐且容易出错。</description></item><item><title>python使用gdal</title><link>https://hkvision.cn/2021/02/26/python%E4%BD%BF%E7%94%A8gdal/</link><pubDate>Fri, 26 Feb 2021 15:04:16 +0800</pubDate><guid>https://hkvision.cn/2021/02/26/python%E4%BD%BF%E7%94%A8gdal/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 一个项目需要用GDAL这个库，然后去稍微深入看了下这玩意，感觉还是有很多坑的。
简介 就不介绍了，需要用这玩意的肯定知道这是啥
读写 最重要的肯定是读写
读:</description></item><item><title>Word中写LaTeX公式</title><link>https://hkvision.cn/2020/12/04/word%E4%B8%AD%E5%86%99latex%E5%85%AC%E5%BC%8F/</link><pubDate>Fri, 04 Dec 2020 22:42:50 +0800</pubDate><guid>https://hkvision.cn/2020/12/04/word%E4%B8%AD%E5%86%99latex%E5%85%AC%E5%BC%8F/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 大家都知道Word和LaTeX都是优秀的写文档的工具，但是从程序员的角度，个人更喜欢LaTeX一些。但是由于一些原因（很多人只会用word），导致生活中我们必须要使用word，这就导致我们可能需要将LaTeX编译出来的pdf文件转为Word文件，具体的转换方法有很多，我们暂且不表，这里我们专门来讲如何在Word中优雅的写LaTeX公式（因为很多转换都会在公式上出问题）。
LaTeX公式神器 首先向大家介绍一个LaTeX公式神器，名字叫做mathpix。
mathpix能够将公式图片转换为LaTeX公式代码，是不是感觉超级强悍！！！我们看到一个公式的时候再也不需要自己手动敲公式代码了，直接截个图就能出现LaTeX代码。（甚至可以识别手写的公式，tql！！！）
公式转Word mathpix可以直接将LaTeX公式复制为MS Word</description></item><item><title>g++中的rpath和runpath</title><link>https://hkvision.cn/2020/11/27/g-%E4%B8%AD%E7%9A%84rpath%E5%92%8Crunpath/</link><pubDate>Fri, 27 Nov 2020 23:19:48 +0800</pubDate><guid>https://hkvision.cn/2020/11/27/g-%E4%B8%AD%E7%9A%84rpath%E5%92%8Crunpath/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘由 最近在弄Linux上的程序，然后由于涉及到要调用mkl的包（armadillo中用mkl+openblas要快很多），而mkl安装的时候库是不会进入/usr/lib这样的系统路径下的，然后引发了一些问题。
链接 稍微对程序的加载等方面熟悉一点的童鞋会知道，C++分为编译链接和运行两个部分，对于g++这样的编译器来说，需要链接器知道要加载的动态链接库（共享对象）的位置，对于一个二进制文件来说，在运行的时候也需要知道动态链接库的位置，这就涉及到两个链接，一个是编译时链接，一个是运行时链接。
在g++中，这两个链接是由两个参数来控制的，一个是-L，一个是-Wl,-rpath，由于之前弄明白链接的过程之后使用了这两个参数，程序没有出问题。但是这次我发现即使配置了这两个参数仍然有问题，上网查了一下，又深入了一点点。
rpath和runpath 这涉及到另外一个小知识，大家应该知道Linux中的可执行文件是elf格式的文件，这种文件以段来进行区域划分，在可执行文件的elf中，就存在一个section，名字叫做rpath，这里面存储了执行这个文件的时候搜索库的位置，因此在加载可执行文件的时候就会在这个位置搜索库。</description></item><item><title>Ext4文件系统</title><link>https://hkvision.cn/2020/09/12/ext4%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/</link><pubDate>Sat, 12 Sep 2020 20:32:09 +0800</pubDate><guid>https://hkvision.cn/2020/09/12/ext4%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 接上面的文件系统介绍，接着介绍一下Ext4文件系统
Ext4的历史 知乎上有一篇文章，Ext4的历史讲的较为详细，可以直接参考，这里只简单讲一下。
Ext4由Ext2，Ext3发展而来，从结构上是兼容Ext2/3的，也就是说你可以在不损失数据的情况下，直接平滑过渡到Ext4文件系统，这一点上Ext4是占有极大的优势的（与XFS等其他文件系统相比）。
对于Linux，Ext系列的文件系统就像亲儿子一样，可以说Ext系列文件系统的发展就是伴随着Linux发展的，因此实际上Ext系列的文件系统和VFS即为相像，甚至于部分结构是嵌在Linux中的而不是Ext中。
Ext4的一些特性 和Ext3相比，Ext4有一些很有意思的特性</description></item><item><title>文件系统介绍</title><link>https://hkvision.cn/2020/09/03/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%BB%8B%E7%BB%8D/</link><pubDate>Thu, 03 Sep 2020 18:00:40 +0800</pubDate><guid>https://hkvision.cn/2020/09/03/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%BB%8B%E7%BB%8D/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 这段时间研究了很多和文件系统有关的内容，于是打算写一篇博客记录一下，最近太忙都没时间打理博客了。
为什么要文件系统 文件系统这个东西是一个随着计算机发展而必然会产生的产物，我们以个人PC为例，现代的个人PC五大件：CPU，主板，显卡，硬盘，内存。文件系统就是专门为硬盘准备的。
我们想象一个场景，CPU哼哧哼哧的算了一个结果出来，放在内存里面，这个时候你想让这个结果持久化，也就是永久保存，即使我关机了，重新开机之后我也能读到我计算的结果，硬盘的作用就体现出来了，我们将结果放在硬盘里面，下次咱就可以读到了。但是我们思考一下，结果是如何存在硬盘中的呢？
硬盘 首先我们来看一下硬盘是啥，这里我们先局限于机械硬盘（HDD）。</description></item><item><title>理解shell</title><link>https://hkvision.cn/2020/05/20/%E7%90%86%E8%A7%A3shell/</link><pubDate>Wed, 20 May 2020 00:45:40 +0800</pubDate><guid>https://hkvision.cn/2020/05/20/%E7%90%86%E8%A7%A3shell/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 最近在看《深入理解操作系统》，抛开了汇编那一块，书里面很多例子是拿Unix shell来举例的，这使得我对此有了更多的感悟，特此记录一下。
shell与终端 shell不是终端，平时容易弄混的原因是因为这两个东西总是一起出现。准确来说，单独的终端是没有任何意义的，因为这个终端只能回显你输入的一堆字符，而不能执行你输入的命令，所以一般来说，你打开一个终端之后（打开终端是处于一个进程中），同时会执行一个shell（linux中是调用execve这个函数来在一个进程中执行另外一个程序，可以先fork一个子进程，然后在这个子进程里面执行shell）。
shell做的事情 基本的shell功能就是解析用户输入的命令，解析为可执行文件，参数，环境变量等等，然后fork一份子程序，子程序调用execve函数来执行你输入的命令。此外，shell会内置一部分指令，例如quit这个指令并不是一个可执行程序，但是输入在shell中就会退出shell。</description></item><item><title>Hyper V安装ENVI</title><link>https://hkvision.cn/2020/04/27/hyper-v%E5%AE%89%E8%A3%85envi/</link><pubDate>Mon, 27 Apr 2020 22:38:34 +0800</pubDate><guid>https://hkvision.cn/2020/04/27/hyper-v%E5%AE%89%E8%A3%85envi/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 最近的任务要用到ENVI（除非我决定手撸一个影像空间匹配，逃&amp;hellip;），然后，我又不想ENVI这个我平时可能用不上的软件直接装在电脑里面（而且还是破解版，万一有个毒啥的），于是我决定用虚拟机装ENVI
虚拟机选择 说到虚拟机嘛，自然说说选择的问题，个人电脑三大虚拟机阵营——VirtualBox，VMWare Workstation，Hyper-V。前两个我都用过，说实话，也许是我之前电脑比较渣的原因，用起来都很不爽（虚拟机卡成ppt），而且，这两个玩意真的不好卸啊，不如试试微软自家的Hyper-V，集成在操作系统里面的。
家庭版开启Hyper-V 首先遇上的一个问题，笔记本厂商装的正版Win10是家庭版，而家庭版是不带Hyper-V的，需要手动安装激活一下，这个不难，网上很多教程，批处理一键搞定。</description></item><item><title>华为软件实习生笔试</title><link>https://hkvision.cn/2020/04/15/%E5%8D%8E%E4%B8%BA%E8%BD%AF%E4%BB%B6%E5%AE%9E%E4%B9%A0%E7%94%9F%E7%AC%94%E8%AF%95/</link><pubDate>Wed, 15 Apr 2020 22:24:07 +0800</pubDate><guid>https://hkvision.cn/2020/04/15/%E5%8D%8E%E4%B8%BA%E8%BD%AF%E4%BB%B6%E5%AE%9E%E4%B9%A0%E7%94%9F%E7%AC%94%E8%AF%95/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 做了个华为实习生的笔试，3道题，2小时，比字节和阿里要好点
题目 明日之星 题目名字叫明日之星，就是一个投票，输入一行人名（投给的人），然后统计谁的票数最高，输出票数最高的人的名字，然后如果有重票的，就按字母表来
由于忘了python多关键的排序咋弄的了，就写了个有点问题的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 import sys if __name__ == &amp;#34;__main__&amp;#34;: line = sys.</description></item><item><title>用C++实现一个命令行进度条</title><link>https://hkvision.cn/2020/04/09/%E7%94%A8c-%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%BF%9B%E5%BA%A6%E6%9D%A1/</link><pubDate>Thu, 09 Apr 2020 02:10:58 +0800</pubDate><guid>https://hkvision.cn/2020/04/09/%E7%94%A8c-%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%BF%9B%E5%BA%A6%E6%9D%A1/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 最近做GWPCA，在带宽比较大的时候速度太慢了，需要有个进度条指示一下，然后我去找进度条的库，发现github上面的C/C++的相应的库似乎没有能在VS下跑的，自己花了点时间写了一个。
效果 实现 大概需要考虑这样几个要素</description></item><item><title>PCA与GWPCA</title><link>https://hkvision.cn/2020/04/08/pca%E4%B8%8Egwpca/</link><pubDate>Wed, 08 Apr 2020 23:35:28 +0800</pubDate><guid>https://hkvision.cn/2020/04/08/pca%E4%B8%8Egwpca/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 其实没什么缘起，本人的专业是地理信息系统，结果之前全写的计算机的内容，貌似完全偏题了，这次我来写一下最近做的GWPCA的内容。
PCA 原理 中文名叫主成分分析，做数据分析的人一定对这个不陌生，一般来说做PCA的都是用于数据降维，数据压缩等等。那么为什么这个PCA能够做到数据降维呢？
首先，大家明确一点的是，一堆数据给你了，那么这个数据一定得是有意义的数据，也就是说，我给你n个数据，我希望你能给我n个不同的信息（当然一般不可能），你别给我了n个数据，结果你给我的n个数据是一模一样的，那和给我1个数据没有什么区别。那么用于描述这堆数据的有意义的程度的一个指标——信息熵，就出来了。也就是说你这堆数据到底蕴含了多少信息。
那么一堆数据是没什么意思的，但是这堆数据里面蕴含的信息才是我们需要关注的内容，那么有没有什么办法能够让我们将这堆数据的最精华的部分（也就是蕴含的信息，剔除了冗余的部分）选择出来呢？这个时候我们的主成分分析就能派上用场了。</description></item><item><title>字节后台实习生笔试题目</title><link>https://hkvision.cn/2020/03/16/%E5%AD%97%E8%8A%82%E5%90%8E%E5%8F%B0%E5%AE%9E%E4%B9%A0%E7%94%9F%E7%AC%94%E8%AF%95%E9%A2%98%E7%9B%AE/</link><pubDate>Mon, 16 Mar 2020 13:30:43 +0800</pubDate><guid>https://hkvision.cn/2020/03/16/%E5%AD%97%E8%8A%82%E5%90%8E%E5%8F%B0%E5%AE%9E%E4%B9%A0%E7%94%9F%E7%AC%94%E8%AF%95%E9%A2%98%E7%9B%AE/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
背景 昨天做了字节的实习生后台开发的题目，4道编程题，2个小时。
题目 用户模型和模型文件之间的对应： 输入：
n
用户模型1 模型文件1</description></item><item><title>Web终端仿真器</title><link>https://hkvision.cn/2020/03/06/web%E7%BB%88%E7%AB%AF%E4%BB%BF%E7%9C%9F%E5%99%A8/</link><pubDate>Fri, 06 Mar 2020 23:10:14 +0800</pubDate><guid>https://hkvision.cn/2020/03/06/web%E7%BB%88%E7%AB%AF%E4%BB%BF%E7%9C%9F%E5%99%A8/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
背景 ​ 在我的上一篇文章中已经说过了，我想做一个web命令行。但是呢，我这两天碰到了一些问题，主要是基础不牢引起的一些概念性的问题，导致我在搜索资料的时候花费了很多时间。
​ 最开始我碰到的问题是我在执行git clone命令的时候，我发现如果我把执行结果重定向到一个文件上，或者是我用Golang的exec.Command命令执行的时候将结果用管道扔到我的程序里，执行的结果就只有一行Cloning xxx into xxx.</description></item><item><title>阿里云API网关与函数计算的基础理解</title><link>https://hkvision.cn/2020/03/01/%E9%98%BF%E9%87%8C%E4%BA%91api%E7%BD%91%E5%85%B3%E4%B8%8E%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97%E7%9A%84%E5%9F%BA%E7%A1%80%E7%90%86%E8%A7%A3/</link><pubDate>Sun, 01 Mar 2020 19:43:31 +0800</pubDate><guid>https://hkvision.cn/2020/03/01/%E9%98%BF%E9%87%8C%E4%BA%91api%E7%BD%91%E5%85%B3%E4%B8%8E%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97%E7%9A%84%E5%9F%BA%E7%A1%80%E7%90%86%E8%A7%A3/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
背景 想法是在函数计算上搭建一个web命令行（加速GitHub，国内太慢了），并且通过websocket实时将执行过程发送到前端。在本地其实已经成功了，但是实际上放到函数计算的时候出现了一个大问题，就是函数计算的Http触发器不支持异步调用，更是不支持websocket协议，查了些资料之后发现和阿里云的API网关配合起来使用可以用上websocket。在查这些资料的过程中终于弄明白了函数计算的custom runtime是怎么回事，这里记录一下。
函数计算 首先，我们需要明白，阿里云的函数计算（custom runtime）更像是给你一个极小极小的小型虚拟机，理论上来说，你可以拿这个小虚拟机做正常主机任何的操作（在阿里云给你的权限下）。这里给一下阿里云的文档的说法
大家可以看到这里，custom runtime本质上是一个HTTP Server，也就是说，如果我们能在HTTP Server中写一些执行linux的命令的代码，也就意味着我们有了一个位于阿里云的小型虚拟机，最关键的是这个虚拟机我们还不需要花钱。</description></item><item><title>函数计算搭建DNS服务器</title><link>https://hkvision.cn/2020/02/05/%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97%E6%90%AD%E5%BB%BAdns%E6%9C%8D%E5%8A%A1%E5%99%A8/</link><pubDate>Wed, 05 Feb 2020 13:27:27 +0800</pubDate><guid>https://hkvision.cn/2020/02/05/%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97%E6%90%AD%E5%BB%BAdns%E6%9C%8D%E5%8A%A1%E5%99%A8/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 见DNS解析过程这篇文章的缘起
DoH 服务概念 DoH（DNS over HTTPS）,指的是将DNS解析的内容使用HTTPS协议进行传输，而不是UDP协议传输，其优势在于隐私和防篡改，可以有效的防止DNS劫持，关于DNS的劫持，可以看其他文章。</description></item><item><title>DNS解析过程</title><link>https://hkvision.cn/2020/02/05/dns%E8%A7%A3%E6%9E%90%E8%BF%87%E7%A8%8B/</link><pubDate>Wed, 05 Feb 2020 01:11:42 +0800</pubDate><guid>https://hkvision.cn/2020/02/05/dns%E8%A7%A3%E6%9E%90%E8%BF%87%E7%A8%8B/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
缘起 由于一些复杂的原因，我有一个需求，是能够对特定的域名进行自定义解析，即自行搭建一个DNS服务器，然后让自己的DNS服务器设定为自己搭建的，达到对特定域名解析的目的。有人说改host文件就ok了，但是我希望做到能够让其他人也能对特定的域名解析，虽然让大家都改host也不麻烦，但是能统一管理也是好的。正好了解了阿里云的函数计算，于是就在函数计算上搭了一个DoH服务器，为此去回顾了一遍DNS解析的过程，温故而知新，果然发现我之前的想法是错的，现在记录一下。
域名的结构 域名的结构：
域名是有结构的，其实很简单，例如：www.baidu.com，域名以点的形式分割，从右至左分别为根域名，顶级域名，二级域名等等。很明显这是一个树形结构。</description></item><item><title>Github图片加载不出来</title><link>https://hkvision.cn/2020/01/07/github%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E4%B8%8D%E5%87%BA%E6%9D%A5/</link><pubDate>Tue, 07 Jan 2020 14:35:49 +0800</pubDate><guid>https://hkvision.cn/2020/01/07/github%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E4%B8%8D%E5%87%BA%E6%9D%A5/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
背景 最近访问github的时候图片居然都加载不出来了，包括头像等等，后来去网上查了下，觉得比较靠谱的说法就是DNS污染了，不过也不一定，可能是DNS缓存，包括阿里家的，谷歌家的，114的，对于github图片的dns都有问题，所以无奈之下只能改Host文件了
步骤 首先查到加载不出来的图片的url，然后提取出二级域名，域名基本上就是这样的没跑了
avatars0.githubusercontent.com
avatars1.githubusercontent.com
然后查IPAddress，看一下IP，然后回到Host文件里面添加一下</description></item><item><title>将Elementary OS装在U盘中</title><link>https://hkvision.cn/2020/01/03/%E5%B0%86elementary-os%E8%A3%85%E5%9C%A8u%E7%9B%98%E4%B8%AD/</link><pubDate>Fri, 03 Jan 2020 05:47:46 +0800</pubDate><guid>https://hkvision.cn/2020/01/03/%E5%B0%86elementary-os%E8%A3%85%E5%9C%A8u%E7%9B%98%E4%B8%AD/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
原由想法 上次帮老爹装系统，原来的U盘太稀烂了，读写速度3MB/s，于是当时买了个128g的固态U盘，USB3.1 gen1的速度飞起，复制文件300MB/s左右，用软碟通做系统盘的时候速度也有150MB左右。做完系统后想着玩玩随身系统
现有的一些系统 win-to-go：微软官方的一个U盘系统，应该不会折腾，不过我既然笔记本是win了那还弄个win干嘛，所以放弃 Ubuntu：貌似官网有针对U盘的特别版本，但是想想算了，Ubuntu咱装了多少回了，而且看着苹果的界面就眼馋 Elementary OS: 号称最好看的linux系统，和Mac最像，就是他了 过程 官网貌似没有针对U盘版本的ISO，就先下就完事了，网上也没有装U盘的教程，所以我就先按正常安装试试，最后成功装上了</description></item><item><title>MacOS+Windows 双系统的安装</title><link>https://hkvision.cn/2019/12/24/macos-windows-%E5%8F%8C%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%AE%89%E8%A3%85/</link><pubDate>Tue, 24 Dec 2019 01:19:32 +0800</pubDate><guid>https://hkvision.cn/2019/12/24/macos-windows-%E5%8F%8C%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%AE%89%E8%A3%85/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
这两天在帮老爹搞他的古董mac，今天终于把系统装上去了，这里记录一下
环境 macOS 10.15.2 Catalina 目标 macOS 10.</description></item><item><title>IPXE+netboot+ISCSI 网络启动</title><link>https://hkvision.cn/2019/10/15/ipxe-netboot-iscsi-%E7%BD%91%E7%BB%9C%E5%90%AF%E5%8A%A8/</link><pubDate>Tue, 15 Oct 2019 19:00:45 +0800</pubDate><guid>https://hkvision.cn/2019/10/15/ipxe-netboot-iscsi-%E7%BD%91%E7%BB%9C%E5%90%AF%E5%8A%A8/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
接上一篇文章Esxi+NAS+Openwrt，这篇文章我们来讲无盘启动
缘由 读了上篇文章的童鞋知道我是有NAS的，为了存储管理方便，服务器的硬盘我做了RAID6然后整个给了NAS做数据盘（ESXI直通），ESXI和NAS还有Openwrt的系统都是安装在U盘上的，因此如果我想继续安装其他的虚拟机的话，就必须在NAS上划ISCSI出来，并且需要PXE进行引导。
IPXE 话说我一开始只知道PXE，后来在b站上看到了一个视频，知道了IPXE这个东西，看了他操作一遍，再结合网上的一堆零碎的教程，终于我自己实现了，这玩意真的是难者不会，会者不难。
简单的理解，IPXE是PXE的加强版
ISCSI 网上有很多介绍，那些专业化的词语我就不说了（也不会说），就简单来说，ISCSI是指在服务器上划出来一个空间（通常用一个文件表示），将此空间以磁盘的形式（注意不是目录）提供给客户端使用。对于客户端而言就仿佛是添加了一块硬盘一样，同样可以进行格式化，分区等操作，毫无问题，并且可以通过在服务器端的修改，动态的扩展和缩小磁盘大小。无盘启动就是将操作系统安装在了ISCSI中。</description></item><item><title>Esxi+NAS+Openwrt</title><link>https://hkvision.cn/2019/10/07/esxi-nas-openwrt/</link><pubDate>Mon, 07 Oct 2019 23:42:21 +0800</pubDate><guid>https://hkvision.cn/2019/10/07/esxi-nas-openwrt/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
接上一篇文章：Esxi的安装和使用，这一篇文章我们通过esxi来搭建一个虚拟机网络
框架 首先我们明确一个概念，整个esxi是将主机进行了虚拟化，因此我们可以任意使用宿主的计算和存储资源。下面是我设想中的一个网络架构
graph G { size = &amp;quot;8, 10&amp;quot; esxi[label=&amp;quot;ESXI主机&amp;quot;] nas[label=&amp;quot;NAS&amp;quot;] openwrt[label=&amp;quot;Openwrt&amp;quot;] xu1[label=&amp;quot;虚拟机1&amp;quot;] xu2[label=&amp;quot;虚拟机2&amp;quot;] outnet[label=&amp;quot;外部网络&amp;quot;] vswitch1[label=&amp;quot;虚拟交换机1&amp;quot; shape=box] vswitch2[label=&amp;quot;虚拟交换机2&amp;quot; shape=box] subgraph cluster_switch1{ label=&amp;quot;有外网ip的&amp;quot; bgcolor=&amp;quot;#73A04F&amp;quot; outnet -- vswitch1 vswitch1 -- {esxi openwrt nas} } subgraph cluster_switch2{ label=&amp;quot;无外网ip的&amp;quot; labeljust = &amp;quot;r&amp;quot; labelloc = &amp;quot;c&amp;quot; bgcolor=&amp;quot;#73A04F&amp;quot; {nas openwrt} -- vswitch2 vswitch2 -- {xu1 xu2} } } 首先明确一点，与VMware Workstations不同，ESXI中没有NAT网络，所有设备均通过虚拟交换机进行连接，虚拟交换机可以设定上行链路，也就是物理网卡连接的链路，EXSI本身也连接在虚拟交换机上，也就是说，所有连接在交换机上的虚拟机天生就是桥接模式。当你IP供应充足的时候，你可以将所有虚拟机都连在一个交换机上，毫无问题。由于当初网管只给了我们5个ip，因此我们需要将部分虚拟机用nat技术组成一个小型局域网，这就是使用Openwrt软路由的原因。</description></item><item><title>Esxi的安装和使用</title><link>https://hkvision.cn/2019/10/01/esxi%E7%9A%84%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/</link><pubDate>Tue, 01 Oct 2019 00:18:25 +0800</pubDate><guid>https://hkvision.cn/2019/10/01/esxi%E7%9A%84%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
起源 最近组里面新进了一个联想服务器，配置相当高级，让我大开眼界，算是见识了一把什么叫高端机架式服务器。先说说硬件上面的坑吧，大概有以下三点
没有网卡，只有光纤，咱机房里面又没有光交换机（有一个，但是是人家的专线，咱用不了） 电源口不是国标的，插插座的那一头是一个三横孔的（网上查的是接UPS的），放一个图片给大家看看 没显卡，cuda啥的做不了，并且想插个显卡上去还很复杂，要买转接卡啥的，麻烦就算了 我们重新买了个网卡，换了个2u的挡板插上去了，又买了两个电源转接头（拿去电脑城居然还不认识），算是把服务器开起来了。然后开始折腾软件</description></item><item><title>利用acme自动更新证书</title><link>https://hkvision.cn/2019/09/24/%E5%88%A9%E7%94%A8acme%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E8%AF%81%E4%B9%A6/</link><pubDate>Tue, 24 Sep 2019 17:55:50 +0800</pubDate><guid>https://hkvision.cn/2019/09/24/%E5%88%A9%E7%94%A8acme%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E8%AF%81%E4%B9%A6/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
acme Let's Encrypt制定的自动化证书管理协议，通过这个协议我们可以自动更新证书，无需人工干预
acme.sh github上已经有一个项目，用shell写的脚本，功能很强大，直接用就行了
安装 1 curl https://get.</description></item><item><title>Golang使用海康威视SDK</title><link>https://hkvision.cn/2019/09/13/golang%E4%BD%BF%E7%94%A8%E6%B5%B7%E5%BA%B7%E5%A8%81%E8%A7%86sdk/</link><pubDate>Fri, 13 Sep 2019 15:22:39 +0800</pubDate><guid>https://hkvision.cn/2019/09/13/golang%E4%BD%BF%E7%94%A8%E6%B5%B7%E5%BA%B7%E5%A8%81%E8%A7%86sdk/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
接上一篇文章SWIG编译海康威视SDK-使用golang，这篇文章讲述的是如何使用编译好的文件，这涉及到SWIG和golang结合的问题
引入 编译好了之后.a文件会出现在GOPATH下，直接在import里面引入hikvision就可以了，build的时候会自动找到对应的.a文件
使用 下面从两个方面来介绍
golang中已有的类型对应关系 C里面typedef的值的对应关系，例如海康威视有BOOL,DWORD等 golang中已有的类型对应关系 这里说的已有的类型是指在C语言中已经有了，比如说int，char*等，具体的对应关系表网上有很多，SWIG在这里的策略和cgo是一样的，这里给一个链接。这里就不多说了，在函数调用的时候可以直接把对应的go值传进去而不需要转换</description></item><item><title>Filetools工具</title><link>https://hkvision.cn/2019/09/12/filetools%E5%B7%A5%E5%85%B7/</link><pubDate>Thu, 12 Sep 2019 19:37:13 +0800</pubDate><guid>https://hkvision.cn/2019/09/12/filetools%E5%B7%A5%E5%85%B7/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
filetools工具 本人用golang写的一个小工具，用于对文件进行操作，项目地址在这：filetools
安装 暂时无法直接提供编译好的二进制文件，等我啥时候有时间了研究下CI工具再说。
现在已经可以提供二进制下载了，去github release上找就行，想安装最新版的可以从源码安装
1 go get -u github.</description></item><item><title>学习正则表达式</title><link>https://hkvision.cn/2019/09/04/%E5%AD%A6%E4%B9%A0%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/</link><pubDate>Wed, 04 Sep 2019 12:53:17 +0800</pubDate><guid>https://hkvision.cn/2019/09/04/%E5%AD%A6%E4%B9%A0%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
历史 正则表达式萌芽于1940年代的神经生理学研究，由著名数学家Stephen Kleene第一个正式描述。具体地说，Kleene归纳了前述的神经生理学研究，在一篇题为《正则集代数》的论文中定义了“正则集”，并在其上定义了一个代数系统，并且引入了一种记号系统来描述正则集，这种记号系统被他称为“正则表达式”。在理论数学的圈子里被研究了几十年之后，1968年，后来发明了UNIX系统的Ken Thompson第一个把正则表达式用于计算机领域，开发了qed和grep两个实用文本处理工具，取得了巨大成功。在此后十几年里，一大批一流计算机科学家和黑客对正则表达式进行了密集的研究和实践。在1980年代早期，UNIX运动的两个中心贝尔实验室和加州大学伯克利分校分别围绕grep工具对正则表达式引擎进行了研究和实现。与之同时，编译器“龙书”的作者Alfred Aho开发了Egrep工具，大大扩展和增强了正则表达式的功能。此后，他又与《C程序设计语言》的作者Brian Kernighan等三人一起发明了流行的awk文本编辑语言。到了1986年，正则表达式迎来了一次飞跃。先是C语言顶级黑客Henry Spencer以源代码形式发布了一个用C语言写成的正则表达式程序库（当时还不叫open source），从而把正则表达式的奥妙带入寻常百姓家，然后是技术怪杰Larry Wall横空出世，发布了Perl语言的第一个版本。自那以后，Perl一直是正则表达式的旗手，可以说，今天正则表达式的标准和地位是由Perl塑造的。Perl 5.</description></item><item><title>Vugu View</title><link>https://hkvision.cn/2019/08/06/vugu-view/</link><pubDate>Tue, 06 Aug 2019 09:06:14 +0800</pubDate><guid>https://hkvision.cn/2019/08/06/vugu-view/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
最近给自己的IM后台写前端，在学习Vue，发现了一个很有意思的项目——Vugu，这个人想用Go语言实现一个类似Vue的框架（库），目前还处于实验阶段，有时间了试一下这个。
Vugu github
官网
文档
在线运行
目前（截至2019年8月）已实现了条件，循环，组件等功能，看起来很是那回事哈哈哈，还没实现前端路由，不过go webassembly出来才一年，能弄到这个程度很厉害了，项目还是很活跃的。</description></item><item><title>Django Restframework 嵌套序列化</title><link>https://hkvision.cn/2019/08/04/django-restframework-%E5%B5%8C%E5%A5%97%E5%BA%8F%E5%88%97%E5%8C%96/</link><pubDate>Sun, 04 Aug 2019 23:29:01 +0800</pubDate><guid>https://hkvision.cn/2019/08/04/django-restframework-%E5%B5%8C%E5%A5%97%E5%BA%8F%E5%88%97%E5%8C%96/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
Django是一款重量级Python后端框架，有许多插件与之集成，其中Django Restframework是非常成熟的后台接口生成模块。本文围绕嵌套序列化的问题进行研究
一个例子 假设一个简单的业务逻辑，我们有一个用户表，一个邮箱表，其中用户表的主键是邮箱表的外键，Django的模型为
1 2 3 4 5 6 7 8 9 10 class User(models.</description></item><item><title>看不了netlify的部署日志</title><link>https://hkvision.cn/2019/08/02/%E7%9C%8B%E4%B8%8D%E4%BA%86netlify%E7%9A%84%E9%83%A8%E7%BD%B2%E6%97%A5%E5%BF%97/</link><pubDate>Fri, 02 Aug 2019 04:12:46 +0800</pubDate><guid>https://hkvision.cn/2019/08/02/%E7%9C%8B%E4%B8%8D%E4%BA%86netlify%E7%9A%84%E9%83%A8%E7%BD%B2%E6%97%A5%E5%BF%97/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
这篇文章主要是解决我之前的一篇文章遗留的问题
问题 之前我在用netlify部署博客的时候，发现无法查看部署日志，主要表现为日志那里会显示
[ERROR] Deploy logs are currently unavailable.</description></item><item><title>Go Modules的使用</title><link>https://hkvision.cn/2019/08/01/go-modules%E7%9A%84%E4%BD%BF%E7%94%A8/</link><pubDate>Thu, 01 Aug 2019 22:44:38 +0800</pubDate><guid>https://hkvision.cn/2019/08/01/go-modules%E7%9A%84%E4%BD%BF%E7%94%A8/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
自从go1.11版本后，golang官方给出了一个管理第三方依赖的方式——Go Modules，这是官方提倡的新的包管理机制。
go modules的初始化 如果你使用的是golang-1.11的版本，你需要先将环境变量GO111MODULE设置为on，网上也有说法当当前目录里面有go.mod文件的时候会自动开启（默认是auto），由于笔者已经将版本升至1.12，没有尝试。
和传统的GOPATH不一样，不要繁琐的src,bin等子目录，任何目录均可成为modules（前提是不在GOPATH里面），只要其中包含go.mod文件。
那么如何包含go.mod文件呢，你可以选择新建这个文件，然后在首行写上module {name}即可，更好的做法是执行下面的命令</description></item><item><title>使用hugo+netlify部署个人主页</title><link>https://hkvision.cn/2019/07/27/%E4%BD%BF%E7%94%A8hugo-netlify%E9%83%A8%E7%BD%B2%E4%B8%AA%E4%BA%BA%E4%B8%BB%E9%A1%B5/</link><pubDate>Sat, 27 Jul 2019 09:20:55 +0800</pubDate><guid>https://hkvision.cn/2019/07/27/%E4%BD%BF%E7%94%A8hugo-netlify%E9%83%A8%E7%BD%B2%E4%B8%AA%E4%BA%BA%E4%B8%BB%E9%A1%B5/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
前述 起了无数次搭博客的心，前两天才下定决心用hugo弄个博客出来，毕竟码了几年的代码，也需要记点东西。 去年用django写了个博客的半成品，被老师吐槽了审美，也没兴致继续弄下去了。前段时间学了go语言，发现了hugo这个东西，听说这玩意生成网页很快，打算用这个弄。大家实践过程中如果出错了，可以先看一下后面我遇到的坑，也许对你有所帮助。
Hugo Hugo是由Go语言实现的静态网站生成器。简单，易用，高效，扩展性好，快速部署
Hugo安装 安装方式很多，如果你是Mac，可以选择用brew安装，类似的linux可以用软件包管理工具安装(apt,yum)</description></item><item><title>SWIG编译海康威视SDK 使用golang</title><link>https://hkvision.cn/2019/07/26/swig%E7%BC%96%E8%AF%91%E6%B5%B7%E5%BA%B7%E5%A8%81%E8%A7%86sdk-%E4%BD%BF%E7%94%A8golang/</link><pubDate>Fri, 26 Jul 2019 06:13:00 +0800</pubDate><guid>https://hkvision.cn/2019/07/26/swig%E7%BC%96%E8%AF%91%E6%B5%B7%E5%BA%B7%E5%A8%81%E8%A7%86sdk-%E4%BD%BF%E7%94%A8golang/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
吐槽的话 先允许我吐槽一下海康威视的SDK有多难用SWIG编译
编译过程 准备工作 先声明我编译的是linux版本的，环境是ubuntu 18.04，还没有开始做开发，但是编译的过程没有报错
Tips:</description></item><item><title>SWIG 以Python为例</title><link>https://hkvision.cn/2019/07/26/swig-%E4%BB%A5python%E4%B8%BA%E4%BE%8B/</link><pubDate>Fri, 26 Jul 2019 06:12:25 +0800</pubDate><guid>https://hkvision.cn/2019/07/26/swig-%E4%BB%A5python%E4%B8%BA%E4%BE%8B/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
SWIG用途 SWIG是用于开发C/C++与Java，Python，Perl，C#等高级语言之间接口的框架，利用这个框架，我们可以很方便的将C/C++程序应用在Python等高级语言中。
SWIG的步骤 以Python为例 安装SWIG(官网下载)，选择对应的环境下载即可，安装完成后将swig命令所在目录添加至环境 准备好源文件和头文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // example.</description></item><item><title>Seafile</title><link>https://hkvision.cn/2019/07/26/seafile/</link><pubDate>Fri, 26 Jul 2019 06:07:06 +0800</pubDate><guid>https://hkvision.cn/2019/07/26/seafile/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
seafile seafile是一个同步云盘，可以在自己的服务器上自行搭建同步云盘，基于django开发，python版本为python2.7，目前有社区版可用。
部署 从seafile官网上下载linux安装包即可，然后按照官网的服务器手册完成一键部署
这里需要注意权限问题，建议新开一个seafile用户来运行seafile
配置开机自启和服务 按照官网的服务器手册来即可</description></item><item><title>Golang的小技巧</title><link>https://hkvision.cn/2019/07/26/golang%E7%9A%84%E5%B0%8F%E6%8A%80%E5%B7%A7/</link><pubDate>Fri, 26 Jul 2019 03:12:44 +0800</pubDate><guid>https://hkvision.cn/2019/07/26/golang%E7%9A%84%E5%B0%8F%E6%8A%80%E5%B7%A7/</guid><description>本文为原创文章，转载注明出处，欢迎关注网站https://hkvision.cn
go命令行参数 编译 go build 是最简单的编译命令，对于一个包，这个命令只会做检查，即检查包是否有编译错误，对于main则会生成一个可执行文件.
参数 参数含义 -o 指定输出的可执行文件名称 -x 输出详细信息，包含编译时的每一步骤 cgo cgo是go语言对于和C语言混合编程所给出的官方解决方案，用C包解决，对于使用了cgo的包来说，其编译可以有额外的参数</description></item></channel></rss>