<?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>经验教训 on Freestyle Programmer</title>
    <link>https://whl1729.cn/tags/%E7%BB%8F%E9%AA%8C%E6%95%99%E8%AE%AD/</link>
    <description>Recent content in 经验教训 on Freestyle Programmer</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Fri, 01 Mar 2024 00:00:00 +0800</lastBuildDate>
    <atom:link href="https://whl1729.cn/tags/%E7%BB%8F%E9%AA%8C%E6%95%99%E8%AE%AD/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>经验教训 088：GORM 会自动转义参数以避免 SQL 注入</title>
      <link>https://whl1729.cn/posts/2024-03-01-ex088-gorm-escape-arguments-to-avoid-sql-injection/</link>
      <pubDate>Fri, 01 Mar 2024 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2024-03-01-ex088-gorm-escape-arguments-to-avoid-sql-injection/</guid>
      <description>GORM 的安全机制</description>
    </item>
    <item>
      <title>经验教训 085：避免在函数调用链中间写死参数</title>
      <link>https://whl1729.cn/posts/2024-01-29-avoid-hardcoding-parameters-in-the-middle-of-a-function-call-chain/</link>
      <pubDate>Mon, 29 Jan 2024 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2024-01-29-avoid-hardcoding-parameters-in-the-middle-of-a-function-call-chain/</guid>
      <description>函数设计时将变量定义为输入参数</description>
    </item>
    <item>
      <title>经验教训 082：由于 Go http 请求头的字段首字母大写导致 POST 失败</title>
      <link>https://whl1729.cn/posts/2023-12-12-ex082-post-request-fails-because-of-header-capitalization-in-go/</link>
      <pubDate>Tue, 12 Dec 2023 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2023-12-12-ex082-post-request-fails-because-of-header-capitalization-in-go/</guid>
      <description>Go http 库会自动将请求头的字段首字母大写</description>
    </item>
    <item>
      <title>经验教训 079：Windows 系统下不同 Python 版本的 time.sleep 时间精度不同</title>
      <link>https://whl1729.cn/posts/2023-10-13-ex079-different-python-versions-have-different-sleep-resolutions-in-windows/</link>
      <pubDate>Fri, 13 Oct 2023 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2023-10-13-ex079-different-python-versions-have-different-sleep-resolutions-in-windows/</guid>
      <description>使用高精度的 time.sleep 时确保 Python 版本不小于 3.11</description>
    </item>
    <item>
      <title>经验教训 073：Python 误加逗号导致命令执行失败</title>
      <link>https://whl1729.cn/posts/2023-07-18-additional-comma-causes-popen-to-fail-in-python/</link>
      <pubDate>Tue, 18 Jul 2023 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2023-07-18-additional-comma-causes-popen-to-fail-in-python/</guid>
      <description>这个时候就会怀念编译型语言的好了</description>
    </item>
    <item>
      <title>经验教训 072：在 JavaScript 中通过 SSH 登录远端设备执行 echo 命令返回双引号时要转义两次</title>
      <link>https://whl1729.cn/posts/2023-07-17-ex072-escape-twice-to-return-double-quotes-from-ssh/</link>
      <pubDate>Mon, 17 Jul 2023 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2023-07-17-ex072-escape-twice-to-return-double-quotes-from-ssh/</guid>
      <description>JavaScript 与 bash 对双引号的转义机制</description>
    </item>
    <item>
      <title>经验教训 071：JSON 不支持十六进制数字</title>
      <link>https://whl1729.cn/posts/2023-06-14-ex071-json-does-not-support-hexadecimal-numbers/</link>
      <pubDate>Wed, 14 Jun 2023 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2023-06-14-ex071-json-does-not-support-hexadecimal-numbers/</guid>
      <description>JSON 中老老实实写十进制数字吧</description>
    </item>
    <item>
      <title>经验教训 063：连接监听在非默认端口的 mysqld 时必须指明 host</title>
      <link>https://whl1729.cn/posts/2022-11-10-ex063-the-host-is-required-when-connect-to-mysqld-with-non-default-port/</link>
      <pubDate>Thu, 10 Nov 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-11-10-ex063-the-host-is-required-when-connect-to-mysqld-with-non-default-port/</guid>
      <description>连接 mysql 服务器的一个注意事项</description>
    </item>
    <item>
      <title>经验教训 059：监听在 localhost 的服务无法被其他主机访问</title>
      <link>https://whl1729.cn/posts/2022-11-04-ex059-fail-to-access-server-listened-on-localhost/</link>
      <pubDate>Fri, 04 Nov 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-11-04-ex059-fail-to-access-server-listened-on-localhost/</guid>
      <description>注意 localhost, 127.0.0.1 与 0.0.0.0 的区别</description>
    </item>
    <item>
      <title>经验教训 058：chrome 浏览器缓存导致无法正常显示网页</title>
      <link>https://whl1729.cn/posts/2022-11-03-ex058-fail-to-view-webpage-due-to-chrome-cache/</link>
      <pubDate>Thu, 03 Nov 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-11-03-ex058-fail-to-view-webpage-due-to-chrome-cache/</guid>
      <description>清理浏览器缓存</description>
    </item>
    <item>
      <title>经验教训 057：zsh 需要使用 &amp;! 来创建后台进程</title>
      <link>https://whl1729.cn/posts/2022-11-02-ex057-create-daemon-process-in-zsh/</link>
      <pubDate>Wed, 02 Nov 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-11-02-ex057-create-daemon-process-in-zsh/</guid>
      <description>创建后台进程的正确方式</description>
    </item>
    <item>
      <title>经验教训 056：gorm 不会更新 struct 里面含有零值的字段</title>
      <link>https://whl1729.cn/posts/2022-11-01-ex056-gorm-only-update-non-zero-fields-in-struct/</link>
      <pubDate>Tue, 01 Nov 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-11-01-ex056-gorm-only-update-non-zero-fields-in-struct/</guid>
      <description>在 gorm 中使用 struct 更新 struct 的一个坑</description>
    </item>
    <item>
      <title>经验教训 055：修改 gorm 结构体 json 序列化的时间格式</title>
      <link>https://whl1729.cn/posts/2022-10-26-ex055-modify-time-format-in-gorm-json-serialization/</link>
      <pubDate>Wed, 26 Oct 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-10-26-ex055-modify-time-format-in-gorm-json-serialization/</guid>
      <description>gorm 支持自定义类型</description>
    </item>
    <item>
      <title>经验教训 054：对 Linux 用户群组权限的修改不会立即生效</title>
      <link>https://whl1729.cn/posts/2022-10-15-ex054-group-permission-modification-does-not-take-effect-immediately/</link>
      <pubDate>Sat, 15 Oct 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-10-15-ex054-group-permission-modification-does-not-take-effect-immediately/</guid>
      <description>将用户添加到群组后需要重新登录或手动刷新</description>
    </item>
    <item>
      <title>经验教训 053：误用 usermod 命令导致丢失 sudo 权限</title>
      <link>https://whl1729.cn/posts/2022-10-14-ex053-lost-sudo-permission-due-to-misusing-usermod/</link>
      <pubDate>Fri, 14 Oct 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-10-14-ex053-lost-sudo-permission-due-to-misusing-usermod/</guid>
      <description>将用户添加到群组</description>
    </item>
    <item>
      <title>经验教训 052：由于 nginx 权限不够导致访问静态文件失败</title>
      <link>https://whl1729.cn/posts/2022-10-13-ex052-fail-to-access-static-files-due-to-nginx-permission-problem/</link>
      <pubDate>Thu, 13 Oct 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-10-13-ex052-fail-to-access-static-files-due-to-nginx-permission-problem/</guid>
      <description>nginx 文件权限管理</description>
    </item>
    <item>
      <title>经验教训 050：ssh 直接连接远端主机执行命令时不会加载初始化脚本</title>
      <link>https://whl1729.cn/posts/2022-10-08-ex050-ssh-command-will-not-load-init-scripts/</link>
      <pubDate>Sat, 08 Oct 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-10-08-ex050-ssh-command-will-not-load-init-scripts/</guid>
      <description>注意 SSH 登录远端主机执行命令的两种方式的差异</description>
    </item>
    <item>
      <title>经验教训 048：使用 virtualenv 管理 Python 版本</title>
      <link>https://whl1729.cn/posts/2022-09-26-ex048-manage-python-version-with-virtualenv/</link>
      <pubDate>Mon, 26 Sep 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-09-26-ex048-manage-python-version-with-virtualenv/</guid>
      <description>善用编程语言的版本管理工具</description>
    </item>
    <item>
      <title>经验教训 047：不能将结构体的 slice 赋值给 interface slice</title>
      <link>https://whl1729.cn/posts/2022-09-09-ex047-fail-to-assign-slice-of-struct-to-slice-of-interface/</link>
      <pubDate>Fri, 09 Sep 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-09-09-ex047-fail-to-assign-slice-of-struct-to-slice-of-interface/</guid>
      <description>Go 支持泛型以后就不用纠结了</description>
    </item>
    <item>
      <title>经验教训 042：Go 函数中需要修改输入的 slice 的长度时应该传入指针</title>
      <link>https://whl1729.cn/posts/2022-09-08-ex042-pass-a-pointer-to-the-slice-if-you-would-modify-it/</link>
      <pubDate>Thu, 08 Sep 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-09-08-ex042-pass-a-pointer-to-the-slice-if-you-would-modify-it/</guid>
      <description>Go slice 的传参方式</description>
    </item>
    <item>
      <title>经验教训 040：在 Windows bat 脚本中调用其他 bat 脚本时要使用 call</title>
      <link>https://whl1729.cn/posts/2022-09-05-ex040-use-call-when-run-another-bat-in-windows-bat/</link>
      <pubDate>Mon, 05 Sep 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-09-05-ex040-use-call-when-run-another-bat-in-windows-bat/</guid>
      <description>Windows bat 脚本调用的一个坑</description>
    </item>
    <item>
      <title>经验教训 039：Go 语言中实现结构体的 String 方法时避免递归</title>
      <link>https://whl1729.cn/posts/2022-08-25-ex039-avoid-recursion-when-implement-string-in-go/</link>
      <pubDate>Thu, 25 Aug 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-08-25-ex039-avoid-recursion-when-implement-string-in-go/</guid>
      <description>Go 结构体自定义 &lt;code&gt;String&lt;/code&gt; 方法的一个坑</description>
    </item>
    <item>
      <title>经验教训 036：调用包含 this 的 JS 回调函数时要显式绑定</title>
      <link>https://whl1729.cn/posts/2022-08-22-ex036-use-explicit-binding-in-callback-function/</link>
      <pubDate>Mon, 22 Aug 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-08-22-ex036-use-explicit-binding-in-callback-function/</guid>
      <description>JS this 绑定的 4 条规则</description>
    </item>
    <item>
      <title>经验教训 030：JavaScript 正则表达式的点号不会匹配换行符</title>
      <link>https://whl1729.cn/posts/2022-07-11-ex030-the-dot-does-not-match-newline-in-js/</link>
      <pubDate>Mon, 11 Jul 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-07-11-ex030-the-dot-does-not-match-newline-in-js/</guid>
      <description>如何正确地匹配任意字符</description>
    </item>
    <item>
      <title>经验教训 029：由于镜像配置有误导致 electron 安装失败</title>
      <link>https://whl1729.cn/posts/2022-07-05-ex029-fail-to-install-electron-due-to-error-mirror/</link>
      <pubDate>Tue, 05 Jul 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-07-05-ex029-fail-to-install-electron-due-to-error-mirror/</guid>
      <description>JavaScript 类的普通函数如何调用 static method</description>
    </item>
    <item>
      <title>经验教训 028：不能通过 this 来直接调用 js static method</title>
      <link>https://whl1729.cn/posts/2022-06-16-ex028-fail-to-call-js-static-method-with-this/</link>
      <pubDate>Thu, 16 Jun 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-06-16-ex028-fail-to-call-js-static-method-with-this/</guid>
      <description>JavaScript 类的普通函数如何调用 static method</description>
    </item>
    <item>
      <title>经验教训 024：bash 缓存命令路径导致 pyinstaller 打包失败</title>
      <link>https://whl1729.cn/posts/2022-05-27-ex024-bash-cache-cause-pyinstaller-failure/</link>
      <pubDate>Fri, 27 May 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-05-27-ex024-bash-cache-cause-pyinstaller-failure/</guid>
      <description>bash 具有缓存命令路径的机制</description>
    </item>
    <item>
      <title>经验教训 023：使用 pyinstaller 打包前要先删除 build 目录</title>
      <link>https://whl1729.cn/posts/2022-05-25-ex023-delete-build-directory-before-pyinstaller/</link>
      <pubDate>Wed, 25 May 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-05-25-ex023-delete-build-directory-before-pyinstaller/</guid>
      <description>否则不会重新编译代码</description>
    </item>
    <item>
      <title>经验教训 015：误点击 Powershell 界面会导致进程暂停运行</title>
      <link>https://whl1729.cn/posts/2022-04-27-ex015-clicking-powershell-cause-process-pause/</link>
      <pubDate>Wed, 27 Apr 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-04-27-ex015-clicking-powershell-cause-process-pause/</guid>
      <description>注意 Powershell 点击暂停进程的特性</description>
    </item>
    <item>
      <title>经验教训 007：JavaScript 不支持 keyword arguments 语法</title>
      <link>https://whl1729.cn/posts/2022-04-24-ex007-js-does-not-support-keyword-arguments/</link>
      <pubDate>Sun, 24 Apr 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-04-24-ex007-js-does-not-support-keyword-arguments/</guid>
      <description>只有 Python 支持 keyword arguments 语法</description>
    </item>
    <item>
      <title>经验教训 006：Ubuntu 中文版系统无法创建桌面快捷方式</title>
      <link>https://whl1729.cn/posts/2022-04-04-ex006-fail-to-create-shortcut-on-ubuntu/</link>
      <pubDate>Mon, 04 Apr 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-04-04-ex006-fail-to-create-shortcut-on-ubuntu/</guid>
      <description>bash 脚本远离波浪号</description>
    </item>
    <item>
      <title>经验教训 001：Windows 10 系统无法重命名文件夹</title>
      <link>https://whl1729.cn/posts/2022-03-29-ex001-fail-to-rename-directory-on-windows-10/</link>
      <pubDate>Tue, 29 Mar 2022 00:00:00 +0800</pubDate>
      <guid>https://whl1729.cn/posts/2022-03-29-ex001-fail-to-rename-directory-on-windows-10/</guid>
      <description>重启向日葵以解决文件被占用的问题</description>
    </item>
  </channel>
</rss>
