<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>impyq</title>
    <link>/</link>
    <description>Recent content on impyq</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>impyq</copyright>
    <lastBuildDate>Fri, 06 Oct 2023 19:00:19 +0800</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>使用 Air 热加载 Gin 项目</title>
      <link>/post/2023/10/06/air-hot-reload/</link>
      <pubDate>Fri, 06 Oct 2023 19:00:19 +0800</pubDate>
      
      <guid>/post/2023/10/06/air-hot-reload/</guid>
      <description>用 Python 的 Django 开发 web 项目时, 开发环境下只用修改代码, 框架就会自动重启让修改生效. 用 Go 开发 web 项目, 因为需要编译成二进制文件, 修改代码后需要 CTRL + C 退出</description>
    </item>
    
    <item>
      <title>使用 Gin 实现 RBAC 访问控制</title>
      <link>/post/2023/10/05/gin-rbac/</link>
      <pubDate>Thu, 05 Oct 2023 06:53:56 +0800</pubDate>
      
      <guid>/post/2023/10/05/gin-rbac/</guid>
      <description>RBAC (Role Based Access Control, 基于角色的访问控制) 准备基础的 Gin 项目 新建 gin-rbac 文件夹 mkdir gin-rbac 进入该目录, 初始化项目, 获取依赖 go mod init gin-rbac go get -u github.com/gin-gonic/gin go get -u github.com/casbin/casbin/v2 go get -u github.com/gin-contrib/authz 准备 Casbin 在 gin-rbac 目录</description>
    </item>
    
    <item>
      <title>flex 布局 - 练习 demo</title>
      <link>/post/2023/09/26/flex-demo/</link>
      <pubDate>Tue, 26 Sep 2023 15:26:35 +0800</pubDate>
      
      <guid>/post/2023/09/26/flex-demo/</guid>
      <description>flex 布局练习 demo 01. 垂直居中 &amp;lt;div id=&amp;#34;container&amp;#34;&amp;gt; &amp;lt;div id=&amp;#34;item&amp;#34;&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; #container { display: flex; width: 300px; height: 300px; outline: solid 1px; justify-content: center; align-content: center; align-items: center; background-color: aqua; } #item { width: 100px; height: 100px; outline: solid 1px; background-color: red; } 效果: demo 02. 两列等高 &amp;lt;div class=&amp;#34;container&amp;#34;&amp;gt; &amp;lt;div class=&amp;#34;item&amp;#34; style=&amp;#34;height: 300px; background-color: red&amp;#34;&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;#34;item&amp;#34;&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;br /&amp;gt;</description>
    </item>
    
    <item>
      <title>flex 布局 - 基础概念</title>
      <link>/post/2023/09/24/flex-note/</link>
      <pubDate>Sun, 24 Sep 2023 19:06:44 +0800</pubDate>
      
      <guid>/post/2023/09/24/flex-note/</guid>
      <description>记录学习 flex 布局 基本概念 flex 布局也被称为弹性布局, 定义容器的规则而尽可能不操作子元素, 通过父容器设置 flex 属性来控制子元素的排布方式. flex 布局的核心是</description>
    </item>
    
    <item>
      <title>flameshot 截图软件</title>
      <link>/post/2023/09/24/flameshot/</link>
      <pubDate>Sun, 24 Sep 2023 11:50:48 +0800</pubDate>
      
      <guid>/post/2023/09/24/flameshot/</guid>
      <description>linux 安装 sudo apt install flameshot 使用 截全屏 flameshot full 选择区域截图 flameshot gui 保存到某个目录下 flameshot gui -p ~/Pictures 看到提示 flameshot: info: Capture saved as /home/pyq/Pictures/2023-05-13_14-24.png 延迟 n 秒进入截图模式 延迟 5 秒 flameshot gui -d 5000 添加到系统快捷键</description>
    </item>
    
    <item>
      <title>红米 AX6000 设置</title>
      <link>/post/2023/07/17/redmi-ax6000/</link>
      <pubDate>Mon, 17 Jul 2023 16:26:48 +0800</pubDate>
      
      <guid>/post/2023/07/17/redmi-ax6000/</guid>
      <description>红米 AX6000 路由器开启 SSH 并安装 ShellClash 记录 开启 SSH 准备文件 下载好文件 Redmi-AX6000.zip 并解压缩 降级固件到 1.0.60 提示 出于安全考虑，不允许选择低于当前版本号的固件进行升级 时, 将地</description>
    </item>
    
    <item>
      <title>跨域</title>
      <link>/post/2023/05/31/%E8%B7%A8%E5%9F%9F/</link>
      <pubDate>Wed, 31 May 2023 17:24:01 +0800</pubDate>
      
      <guid>/post/2023/05/31/%E8%B7%A8%E5%9F%9F/</guid>
      <description>参考: 高薪之路 - 前端面试精选集 - 15 跨域与 Nginx Nginx 完全解读指南 - 17 什么是正向代理? 什么又是反向代理? 同源策略 协议 + 域名 + 端口三者皆相同可以说是同源</description>
    </item>
    
    <item>
      <title>react 笔记 - hook (三)</title>
      <link>/post/2023/05/30/react-note-hook-3/</link>
      <pubDate>Tue, 30 May 2023 14:56:45 +0800</pubDate>
      
      <guid>/post/2023/05/30/react-note-hook-3/</guid>
      <description>React Hooks 核心原理与实战笔记 Hooks 的出现 在 React 中, Hooks 就是把某个目标结果钩到某个可能会变化的数据源或者事件源上, 那么当被钩到的数据或事件发生变化时, 产生这</description>
    </item>
    
    <item>
      <title>HTML / CSS 笔记</title>
      <link>/post/2023/05/23/css%E5%9F%BA%E7%A1%80/</link>
      <pubDate>Tue, 23 May 2023 03:45:05 +0800</pubDate>
      
      <guid>/post/2023/05/23/css%E5%9F%BA%E7%A1%80/</guid>
      <description>资料: 慕课网 - 系统讲解 CSS, 工作应用 + 面试一步搞定 极客时间 - 重学前端 MDN - HTML 基础 World Wide Web Consortium (W3C) HTML &amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html&amp;gt; &amp;lt;head&amp;gt; ... &amp;lt;/head&amp;gt; &amp;lt;body&amp;gt; ... &amp;lt;/body&amp;gt; &amp;lt;/html&amp;gt; 常见元素 例子 出现在 head 中, 不会在页面</description>
    </item>
    
    <item>
      <title>常用的 bash 命令整理</title>
      <link>/post/2023/05/13/%E5%B8%B8%E7%94%A8bash%E5%91%BD%E4%BB%A4%E6%95%B4%E7%90%86/</link>
      <pubDate>Sat, 13 May 2023 15:27:33 +0800</pubDate>
      
      <guid>/post/2023/05/13/%E5%B8%B8%E7%94%A8bash%E5%91%BD%E4%BB%A4%E6%95%B4%E7%90%86/</guid>
      <description>acpi 获取电池电量 acpi Battery 0: Discharging, 43%, 03:27:41 remaining cd 返回之前的目录 cd - cp 显示复制的进度 (复制大文件或者文件夹时) cp -v chmod 使某个文件变为可执行文件 chmod u+x &amp;lt;文件名&amp;</description>
    </item>
    
    <item>
      <title>react 笔记 - hook</title>
      <link>/post/2023/04/28/react%E7%AC%94%E8%AE%B0-hook/</link>
      <pubDate>Fri, 28 Apr 2023 21:11:29 +0800</pubDate>
      
      <guid>/post/2023/04/28/react%E7%AC%94%E8%AE%B0-hook/</guid>
      <description>Hooks 是 React 实现组件逻辑的重要方式, 可以用来操作 state, 定义副作用, 更支持开发者自定义 Hooks. React 对 UI 的理想模型是 UI=f(state), 其中 UI 是视图, state 是应用状态, f 则是渲染过程.</description>
    </item>
    
    <item>
      <title>JavaScript &amp; TypeScript 笔记</title>
      <link>/post/2023/04/26/js-ts%E7%AC%94%E8%AE%B0/</link>
      <pubDate>Wed, 26 Apr 2023 17:53:04 +0800</pubDate>
      
      <guid>/post/2023/04/26/js-ts%E7%AC%94%E8%AE%B0/</guid>
      <description>原型 对象 (object) 和实例 (instance) 对象是一个具有多种属性的内容结构 实例是类的具象化产品，可以使用 new 运算符在原型 (prototype) 基础上新建一个实例 function doSomething() {} var doSomething = function () {}; var doSomeInstancing = new</description>
    </item>
    
    <item>
      <title>react 笔记 - 路由 React-Router v6</title>
      <link>/post/2023/04/22/react%E7%AC%94%E8%AE%B0-%E8%B7%AF%E7%94%B1/</link>
      <pubDate>Sat, 22 Apr 2023 09:31:45 +0800</pubDate>
      
      <guid>/post/2023/04/22/react%E7%AC%94%E8%AE%B0-%E8%B7%AF%E7%94%B1/</guid>
      <description>路由 react 前端路由的本质是路径和组件的一一对应关系, 即不同的 path 对应不同的 component, 访问不同路径时渲染对应的组件. 安装 npm install --save react-router-dom 快速使用 引入 createBrowserRouter, RouterProvider createBrowserRouter: 创建路由实</description>
    </item>
    
    <item>
      <title>Linux 基础软件安装和配置</title>
      <link>/post/2023/04/15/linux%E5%9F%BA%E7%A1%80%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE/</link>
      <pubDate>Sat, 15 Apr 2023 09:48:32 +0800</pubDate>
      
      <guid>/post/2023/04/15/linux%E5%9F%BA%E7%A1%80%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE/</guid>
      <description>只记录软件安装与简单配置 linux 安装 ubuntu server https://iso.mirrors.ustc.edu.cn/ubuntu-releases/22.04.2/ubuntu-22.04.2-live-server-amd64.iso http://ftp.sjtu.edu.cn/ubuntu-cd/22.04.2/ubuntu-22.04.2-live-server-amd64.iso 如果用 Virtual Box 安装完后, 克隆出一个测试机器 (假设叫 ubuntu-test) sudo hostnamectl set-hostname ubuntu-test sudo rm -f /etc/machine-id sudo dbus-uuidgen --ensure=/etc/machine-id reboot 安装 linux mint TODO 解决 windows / linux 双系统时间</description>
    </item>
    
    <item>
      <title>docker 端口转发问题</title>
      <link>/post/2021/06/01/docker%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E9%97%AE%E9%A2%98/</link>
      <pubDate>Tue, 01 Jun 2021 11:24:32 +0800</pubDate>
      
      <guid>/post/2021/06/01/docker%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E9%97%AE%E9%A2%98/</guid>
      <description>问题: 创建容器失败 Error response from daemon: driver failed programming external connectivity on endpoint sdwan_n60_u8_s161 (4672a1a28605479c6cb8a47f8d74dec73ed220cd5d38278bc7cf78706377f68f): Error starting userland proxy:. 问题复现 只使用 10 个端口时候可以启动容器成功, 当使用 100 个端口时候就启动失败.. 问题原因猜测</description>
    </item>
    
    <item>
      <title>go defer panic recover 笔记</title>
      <link>/post/2021/05/20/go-defer-panic-recover-%E7%AC%94%E8%AE%B0/</link>
      <pubDate>Thu, 20 May 2021 17:29:45 +0800</pubDate>
      
      <guid>/post/2021/05/20/go-defer-panic-recover-%E7%AC%94%E8%AE%B0/</guid>
      <description>例子 1 可以把 defer ... 分成三部分: 调用 defer, 计算函数的参数 执行 defer, 把函数推入栈 在 return 或者 panic 之后, 执行栈中的函数 例子: func test() (x int) { defer func(n int) { fmt.Printf(&amp;#34;in defer x as parameter: x = %d\n&amp;#34;, n) fmt.Printf(&amp;#34;in</description>
    </item>
    
    <item>
      <title>WireGuard 笔记</title>
      <link>/post/2020/12/15/wireguard%E7%AC%94%E8%AE%B0/</link>
      <pubDate>Tue, 15 Dec 2020 09:15:07 +0800</pubDate>
      
      <guid>/post/2020/12/15/wireguard%E7%AC%94%E8%AE%B0/</guid>
      <description>简介 WireGuard 是个 VPN, 多用于企业之间的数据安全传输. 准备 使用 Parallels Desktop 新建两台 CentOS 7.9 的 Linux 虚拟机, 分别命名为 vm01, vm02. # 关闭防火墙 systemctl stop firewalld.service # 安装 yum install -y epel-release elrepo-release yum install -y yum-plugin-elrepo yum install -y</description>
    </item>
    
    <item>
      <title>POSIX 线程</title>
      <link>/post/2020/10/12/posix%E7%BA%BF%E7%A8%8B/</link>
      <pubDate>Mon, 12 Oct 2020 05:35:44 +0800</pubDate>
      
      <guid>/post/2020/10/12/posix%E7%BA%BF%E7%A8%8B/</guid>
      <description>什么是线程 线程是一个进程内部的一个控制序列. 当在进程中创建一个新线程时, 新的执行线程将拥有自己的栈 (因此也有自己的局部变量), 但与它的创建者</description>
    </item>
    
    <item>
      <title>JavaScript V8 引擎入门</title>
      <link>/post/2020/10/10/javascript-v8-%E5%85%A5%E9%97%A8/</link>
      <pubDate>Sat, 10 Oct 2020 08:26:23 +0800</pubDate>
      
      <guid>/post/2020/10/10/javascript-v8-%E5%85%A5%E9%97%A8/</guid>
      <description>什么是 V8? V8 是谷歌开源的 JavaScript 解析器. 编译 通过 git 拉取的 V8 项目源码是不完整的, 缺少依赖, 只能通过 gclient 方式拉取源码. nodejs 是依赖 V8 作为 JavaScript 的运行环境的, 本文不</description>
    </item>
    
    <item>
      <title>C&#43;&#43; SFML 游戏客户端编程中的样板代码</title>
      <link>/post/2020/10/07/c&#43;&#43;sfml%E6%B8%B8%E6%88%8F%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%BC%96%E7%A8%8B%E4%B8%AD%E7%9A%84%E6%A0%B7%E6%9D%BF%E4%BB%A3%E7%A0%81/</link>
      <pubDate>Wed, 07 Oct 2020 23:03:08 +0800</pubDate>
      
      <guid>/post/2020/10/07/c&#43;&#43;sfml%E6%B8%B8%E6%88%8F%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%BC%96%E7%A8%8B%E4%B8%AD%E7%9A%84%E6%A0%B7%E6%9D%BF%E4%BB%A3%E7%A0%81/</guid>
      <description>记录一些阅读 &amp;laquo;SFML Game Development&amp;raquo; &amp;laquo;SFML Game Development By Example&amp;raquo; 等的样板代码, 以及做些笔记. 主循环 void Application::run() { sf::Clock clock; sf::Time timeSinceLastUpdate = sf::Time::Zero; sf::Time timePerFrame = sf::seconds(1.f/60.f); while (mWindow.isOpen()) { sf::Time dt = clock.restart(); // dt: deltaTime 两次循环时间差 timeSinceLastUpdate += dt; // 游戏世界中</description>
    </item>
    
  </channel>
</rss>
