-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
19 lines (19 loc) · 21.4 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!doctype html><html itemscope itemtype=http://schema.org/WebPage lang=zh-CN><head><meta name=generator content="Hugo 0.120.4"><meta name=theme content="FixIt v0.2.18-lts.5"><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=2"><meta name=robots content="noodp"><title>程序员水王</title><meta name=author content>
<meta name=author-link content><meta name=description content="程序员水王的个人博客"><meta name=keywords content="Programming,Software Engineering,DevOps,Kubernetes"><meta itemprop=name content="程序员水王"><meta itemprop=description content="程序员水王的个人博客"><meta property="og:title" content="程序员水王"><meta property="og:description" content="程序员水王的个人博客"><meta property="og:type" content="website"><meta property="og:url" content="https://will4j.github.io/"><meta name=twitter:card content="summary"><meta name=twitter:title content="程序员水王"><meta name=twitter:description content="程序员水王的个人博客"><meta name=application-name content="程序员水王"><meta name=apple-mobile-web-app-title content="程序员水王"><meta name=theme-color data-light=#f8f8f8 data-dark=#252627 content="#f8f8f8"><meta name=msapplication-TileColor content="#da532c"><link rel=icon href=/favicon.svg><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=mask-icon href=/safari-pinned-tab.svg color=#5bbad5><link rel=canonical href=https://will4j.github.io/><link rel=alternate href=/index.xml type=application/rss+xml title=程序员水王><link rel=feed href=/index.xml type=application/rss+xml title=程序员水王><link rel=stylesheet href=/css/style.min.css><link rel=preload href=https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css as=style onload='this.removeAttribute("onload"),this.rel="stylesheet"'><noscript><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css></noscript><link rel=preload href=https://cdn.jsdelivr.net/npm/[email protected]/animate.min.css as=style onload='this.removeAttribute("onload"),this.rel="stylesheet"'><noscript><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/[email protected]/animate.min.css></noscript><script type=application/ld+json>{"@context":"http://schema.org","@type":"WebSite","url":"https:\/\/will4j.github.io\/","inLanguage":"zh-CN","description":"程序员水王的个人博客","license":"by 水王","name":"程序员水王"}</script></head><body data-header-desktop=sticky data-header-mobile=auto><script>(window.localStorage?.getItem("theme")?localStorage.getItem("theme")==="dark":"auto"==="auto"?window.matchMedia("(prefers-color-scheme: dark)").matches:"auto"==="dark")&&document.body.setAttribute("data-theme","dark")</script><div class=wrapper data-page-style=normal><header class="desktop animate__faster" id=header-desktop><div class=header-wrapper data-github-corner=left><div class=header-title><a href=/ title=程序员水王><span class=header-title-pre><i class="fa fa-code"> </i></span><span id=typeit-header-desktop class=typeit></span></a><span class=header-subtitle></span></div><nav><ul class=menu><li class="menu-item active"><a class=menu-link href=/><i class="fa-solid fa-home fa-fw fa-sm" aria-hidden=true></i> 首页</a></li><li class=menu-item><a class=menu-link href=/posts/><i class="fa-solid fa-archive fa-fw fa-sm" aria-hidden=true></i> 文章</a></li><li class=menu-item><a class=menu-link href=/categories/><i class="fa-solid fa-th-list fa-fw fa-sm" aria-hidden=true></i> 分类</a></li><li class=menu-item><a class=menu-link href=/tags/><i class="fa-solid fa-tags fa-fw fa-sm" aria-hidden=true></i> 标签</a></li><li class="menu-item delimiter"></li><li class="menu-item search" id=search-desktop><input type=text placeholder=搜索文章标题或内容…… id=search-input-desktop>
<a href=javascript:void(0); class="search-button search-toggle" id=search-toggle-desktop title=搜索><i class="fa-solid fa-search fa-fw" aria-hidden=true></i>
</a><a href=javascript:void(0); class="search-button search-clear" id=search-clear-desktop title=清空><i class="fa-solid fa-times-circle fa-fw" aria-hidden=true></i>
</a><span class="search-button search-loading" id=search-loading-desktop><i class="fa-solid fa-spinner fa-fw fa-spin" aria-hidden=true></i></span></li><li class="menu-item theme-switch" title=切换主题><i class="fa-solid fa-adjust fa-fw" aria-hidden=true></i></li></ul></nav></div></header><header class="mobile animate__faster" id=header-mobile><div class=header-container><div class=header-wrapper><div class=header-title><a href=/ title=程序员水王><span class=header-title-pre><i class="fa fa-code"> </i></span><span id=typeit-header-title-mobile class=typeit></span></a><span class=header-subtitle></span></div><div class=menu-toggle id=menu-toggle-mobile><span></span><span></span><span></span></div></div><nav><ul class=menu id=menu-mobile><li class=search-wrapper><div class="search mobile" id=search-mobile><input type=text placeholder=搜索文章标题或内容…… id=search-input-mobile>
<a href=javascript:void(0); class="search-button search-toggle" id=search-toggle-mobile title=搜索><i class="fa-solid fa-search fa-fw" aria-hidden=true></i>
</a><a href=javascript:void(0); class="search-button search-clear" id=search-clear-mobile title=清空><i class="fa-solid fa-times-circle fa-fw" aria-hidden=true></i>
</a><span class="search-button search-loading" id=search-loading-mobile><i class="fa-solid fa-spinner fa-fw fa-spin" aria-hidden=true></i></span></div><a href=javascript:void(0); class=search-cancel id=search-cancel-mobile>取消</a></li><li class="menu-item active"><a class=menu-link href=/><i class="fa-solid fa-home fa-fw fa-sm" aria-hidden=true></i> 首页</a></li><li class=menu-item><a class=menu-link href=/posts/><i class="fa-solid fa-archive fa-fw fa-sm" aria-hidden=true></i> 文章</a></li><li class=menu-item><a class=menu-link href=/categories/><i class="fa-solid fa-th-list fa-fw fa-sm" aria-hidden=true></i> 分类</a></li><li class=menu-item><a class=menu-link href=/tags/><i class="fa-solid fa-tags fa-fw fa-sm" aria-hidden=true></i> 标签</a></li><li class="menu-item menu-system"><span class="menu-system-item theme-switch" title=切换主题><i class="fa-solid fa-adjust fa-fw" aria-hidden=true></i></span></li></ul></nav></div></header><div class="search-dropdown desktop"><div id=search-dropdown-desktop></div></div><div class="search-dropdown mobile"><div id=search-dropdown-mobile></div></div><main class=container><div class="page home posts"><div class=home-profile><div class=home-avatar><a href=/ title=首页><img loading=lazy src=/img/avatar.png data-title=/img/avatar.png data-alt=/img/avatar.png style="background:url(/svg/loading.min.svg)no-repeat 50%" onload='this.title=this.dataset.title,this.alt=this.dataset.alt;for(const e of["style","data-title","data-alt","onerror","onload"])this.removeAttribute(e);this.dataset.lazyloaded=""' onerror='this.title=this.dataset.title,this.alt=this.dataset.alt;for(const e of["style","data-title","data-alt","onerror","onload"])this.removeAttribute(e)'></a></div><h2 class=home-subtitle><span class=d-none>行百里者半九十。</span>
<span id=typeit-profile-subtitle class=typeit></span></h2><div class=links><a href=https://github.com/will4j title=GitHub target=_blank rel="external nofollow noopener noreferrer me"><i class="fa-brands fa-github-alt fa-fw" aria-hidden=true></i>
</a><a href=mailto:[email protected] title=Email rel=me><i class="fa-regular fa-envelope fa-fw" aria-hidden=true></i>
</a><a href=/index.xml title=RSS target=_blank rel="external nofollow noopener noreferrer me"><i class="fa-solid fa-rss fa-fw" aria-hidden=true></i></a></div></div><article class="single summary" itemscope itemtype=http://schema.org/Article><h1 class=single-title itemprop="name headline"><a href=/posts/python-loguru-logging/>Python 工程化:Loguru 日志集成</a></h1><div class=post-meta><span class=post-author><span class=author><i class="fa-solid fa-user-circle" aria-hidden=true></i>
水王</span></span> <span class=post-publish title='2024-01-04 10:11:49'>发布于 <time datetime=2024-01-04>2024-01-04</time></span> <span class=post-category>收录于 <a href=/categories/python-eng/><i class="fa-regular fa-folder fa-fw" aria-hidden=true></i> Python 工程化</a></span></div><div class=content>摘要 这篇文章综合考虑标准日志模块的统一接口以及 Loguru 日志框架的简便性,采用仅以标准日志模块作为日志门面,实际日志使用 Loguru 来输出的方案,并提供了方案的具体实现。通过这种方式,项目可以使用如 YAML 等纯文本配置文件进行日志配置,日志打印时只使用标准日志模块接口,使得业务代码和具体日志实现相隔离。 日志在开发中的地位不</div><div class=post-footer><a href=/posts/python-loguru-logging/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags fa-fw me-1" aria-hidden=true></i><a href=/tags/python/ class=post-tag>Python</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h1 class=single-title itemprop="name headline"><a href=/posts/taskfile-the-alternatives-to-makefile/>Makefile 平替:跨平台构建脚本 Taskfile</a></h1><div class=post-meta><span class=post-author><span class=author><i class="fa-solid fa-user-circle" aria-hidden=true></i>
水王</span></span> <span class=post-publish title='2023-12-14 20:16:00'>发布于 <time datetime=2023-12-14>2023-12-14</time></span> <span class=post-category>收录于 <a href=/categories/tools/><i class="fa-regular fa-folder fa-fw" aria-hidden=true></i> 实用工具</a></span></div><div class=content>摘要 这篇文章介绍自动化构建工具 go-task 的使用,涵盖工具安装、基本语法规则以及进阶使用,另外对在 Windows 平台使用进行了特殊说明。总结部分提供的 Python 虚拟环境自动构建脚本是对全文内容的综合实践,也是我真正应用到项目中,确实有带来生产效率提升的实用脚本,欢迎使用。 Task 是用 Go 语言编写的任务执行/构建工具,对比 GNU make,Ta</div><div class=post-footer><a href=/posts/taskfile-the-alternatives-to-makefile/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags fa-fw me-1" aria-hidden=true></i><a href=/tags/taskfile/ class=post-tag>Taskfile</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h1 class=single-title itemprop="name headline"><a href=/posts/github-contribution-grid-snake/>GitHub 提交记录贪食蛇动画</a></h1><div class=post-meta><span class=post-author><span class=author><i class="fa-solid fa-user-circle" aria-hidden=true></i>
水王</span></span> <span class=post-publish title='2023-11-29 14:20:14'>发布于 <time datetime=2023-11-29>2023-11-29</time></span> <span class=post-category>收录于 <a href=/categories/blog-build/><i class="fa-regular fa-folder fa-fw" aria-hidden=true></i> 建站笔记</a></span></div><div class=content>网上冲浪看到一个同样使用 FixIt 主题的博客[1],首页的贪食蛇动画一下抓住了我的眼球,看到好东西当然要搬过来,一番 Google 后终于成功,来看下最终效果: 整体思路分为两步: 先通过 GitHub Action Platane/snk [2] 生成 svg 动画并上传到 GitHub 仓库; 自定义博客首页头像 css,将贪食蛇动画 svg 作为首页头像的背景图片; 贪食蛇动画生成 找一个公开仓库添加 GitHub Action 工作</div><div class=post-footer><a href=/posts/github-contribution-grid-snake/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags fa-fw me-1" aria-hidden=true></i><a href=/tags/github/ class=post-tag>GitHub</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h1 class=single-title itemprop="name headline"><a href=/posts/rust-kata-number-guessing-game/>Rust 卡塔:猜数字游戏</a></h1><div class=post-meta><span class=post-author><span class=author><i class="fa-solid fa-user-circle" aria-hidden=true></i>
水王</span></span> <span class=post-publish title='2023-11-28 07:23:22'>发布于 <time datetime=2023-11-28>2023-11-28</time></span> <span class=post-category>收录于 <a href=/categories/rust-kata/><i class="fa-regular fa-folder fa-fw" aria-hidden=true></i> Rust 卡塔</a></span></div><div class=content>Note: Rust 卡塔系列旨在通过具体场景的编程练习学习 Rust 编程语言,结尾是相关的 Rust 知识点概要总结,附上参考资料以作扩展阅读。 问题描述 实现一个猜数字游戏:游戏开始前,从玩家输入的数字范围(如1到100)中随机选取一个数字作为答案;每轮游戏根据玩家的输入缩小数字范围,直到玩家猜中答案时游戏结束,统计玩家猜的总次数。 Note:</div><div class=post-footer><a href=/posts/rust-kata-number-guessing-game/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags fa-fw me-1" aria-hidden=true></i><a href=/tags/rust/ class=post-tag>Rust</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h1 class=single-title itemprop="name headline"><a href=/posts/create-blog-with-hugo-and-theme-fixit/>使用 Hugo 和 FixIt 主题创建个人博客</a></h1><div class=post-meta><span class=post-author><span class=author><i class="fa-solid fa-user-circle" aria-hidden=true></i>
水王</span></span> <span class=post-publish title='2023-11-20 12:38:29'>发布于 <time datetime=2023-11-20>2023-11-20</time></span> <span class=post-category>收录于 <a href=/categories/blog-build/><i class="fa-regular fa-folder fa-fw" aria-hidden=true></i> 建站笔记</a></span></div><div class=content>Hugo [1]是一个用 go 语言编写的开源[2]网站构建框架,截止目前 GitHub 星数超过70k,它具有功能强大的模板系统、丰富的主题、完善的文档以及全平台支持的客户端,提供开箱即用的分类系统、评论系统、代码高亮、多语言支持等功能,非常适合用来搭建博客网站。 在本地撰写阶段,借助 Hugo 内置服务器可以做到毫秒级热更新,实现所见</div><div class=post-footer><a href=/posts/create-blog-with-hugo-and-theme-fixit/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags fa-fw me-1" aria-hidden=true></i><a href=/tags/hugo/ class=post-tag>Hugo</a><a href=/tags/fixit/ class=post-tag>FixIt</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h1 class=single-title itemprop="name headline"><a href=/posts/python-decorator-explained/>Python 装饰器详解</a></h1><div class=post-meta><span class=post-author><span class=author><i class="fa-solid fa-user-circle" aria-hidden=true></i>
水王</span></span> <span class=post-publish title='2023-11-14 14:05:42'>发布于 <time datetime=2023-11-14>2023-11-14</time></span> <span class=post-category>收录于 <a href=/categories/python-lang/><i class="fa-regular fa-folder fa-fw" aria-hidden=true></i> Python 语言</a></span></div><div class=content>工欲善其事,必先利其器。—《论语·卫灵公》 本文从装饰器使用到的函数式编程特性入手,讨论了无参装饰器、有参装饰器以及类装饰器三种语法糖规则下装饰器的实现,另外扩展讨论了基于类的实现方式。 总结部分提供了一些实用装饰器的参考资料,后记部分是作者对设计的一些思考,以及行文过程中发现的一些历史事件、奇闻轶事。</div><div class=post-footer><a href=/posts/python-decorator-explained/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags fa-fw me-1" aria-hidden=true></i><a href=/tags/python/ class=post-tag>Python</a></div></div></article></div></main><footer class=footer><div class=footer-container><div class="footer-line powered order-1">由 <a href=https://gohugo.io/ target=_blank rel="external nofollow noopener noreferrer" title="Hugo 0.120.4">Hugo</a> 强力驱动 | 主题 - <a href=https://github.com/hugo-fixit/FixIt target=_blank rel=external title="FixIt v0.2.18-lts.5"><img class=fixit-icon src=/fixit.min.svg alt="FixIt logo"> FixIt</a></div><div class="footer-line copyright order-last" itemscope itemtype=http://schema.org/CreativeWork><i class="fa-regular fa-copyright fa-fw" aria-hidden=true></i>
<span itemprop=copyrightYear>2023 - 2024</span><span class=author itemprop=copyrightHolder>
<a href=/></a></span><span class="license footer-divider"><a rel="license external nofollow noopener noreferrer" href=https://creativecommons.org/licenses/by-nc/4.0/ target=_blank>CC BY-NC 4.0</a></span></div><div class="footer-line statistics order-first"><span class=site-time title=网站运行中……><i class="fa-solid fa-heartbeat fa-fw animate-icon" aria-hidden=true></i><span class="run-times ms-1">网站运行中……</span></span></div></div></footer></div><div class=widgets><div class="fixed-buttons animate__faster d-none"><div class="fixed-button back-to-top" role=button aria-label=回到顶部><i class="fa-solid fa-arrow-up fa-fw" aria-hidden=true></i><span class="variant-numeric d-none">0%</span></div><div class="fixed-button view-comments d-none" role=button aria-label=查看评论><i class="fa-solid fa-comment fa-fw" aria-hidden=true></i></div></div><a href=https://github.com/will4j title="Visit Me on GitHub" target=_blank rel="external nofollow" class="github-corner left d-none-mobile"><svg viewBox="0 0 250 250" aria-hidden="true"><path d="M0 0 115 115h15l12 27L250 250V0z"/><path d="M128.3 109C113.8 99.7 119 89.6 119 89.6 122 82.7 120.5 78.6 120.5 78.6 119.2 72 123.4 76.3 123.4 76.3 127.3 80.9 125.5 87.3 125.5 87.3 122.9 97.6 130.6 101.9 134.4 103.2" fill="currentcolor" style="transform-origin:130px 106px" class="octo-arm"/><path d="M115 115C114.9 115.1 118.7 116.5 119.8 115.4l13.9-13.8C136.9 99.2 139.9 98.4 142.2 98.6 133.8 88 127.5 74.4 143.8 58 148.5 53.4 154 51.2 159.7 51 160.3 49.4 163.2 43.6 171.4 40.1 171.4 40.1 176.1 42.5 178.8 56.2 183.1 58.6 187.2 61.8 190.9 65.4 194.5 69 197.7 73.2 200.1 77.6 213.8 80.2 216.3 84.9 216.3 84.9 212.7 93.1 206.9 96 205.4 96.6 205.1 102.4 203 107.8 198.3 112.5 181.9 128.9 168.3 122.5 157.7 114.1 157.9 116.9 156.7 120.9 152.7 124.9L141 136.5C139.8 137.7 141.6 141.9 141.8 141.8z" fill="currentcolor" class="octo-body"/></svg></a><div id=mask></div><noscript><div class=noscript-warning>FixIt 主题在启用 JavaScript 的情况下效果最佳。</div></noscript></div><link rel=preload href=https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css as=style onload='this.removeAttribute("onload"),this.rel="stylesheet"'><noscript><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css></noscript><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/[email protected]/build/cookieconsent.min.css><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/autocomplete.min.js defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/fuse.min.js defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/sharer.min.js async defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/index.umd.js defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/auto-render.min.js defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/copy-tex.min.js defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/mhchem.min.js defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/build/cookieconsent.min.js defer></script><script src=//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js async defer></script><script>window.config={code:{copyTitle:"复制到剪贴板",editLockTitle:"锁定可编辑代码块",editUnLockTitle:"解锁可编辑代码块",editable:!0,maxShownLines:10},cookieconsent:{content:{dismiss:"同意",link:"了解更多",message:"本网站使用 Cookies 来改善您的浏览体验。"},enable:!0,palette:{button:{background:"#f0f0f0"},popup:{background:"#1aa3ff"}},theme:"edgeless"},data:{"typeit-header-desktop":"程序员水王","typeit-header-title-mobile":"程序员水王","typeit-profile-subtitle":"行百里者半九十。"},math:{delimiters:[{display:!0,left:"$$",right:"$$"},{display:!0,left:"\\[",right:"\\]"},{display:!0,left:"\\begin{equation}",right:"\\end{equation}"},{display:!0,left:"\\begin{equation*}",right:"\\end{equation*}"},{display:!0,left:"\\begin{align}",right:"\\end{align}"},{display:!0,left:"\\begin{align*}",right:"\\end{align*}"},{display:!0,left:"\\begin{alignat}",right:"\\end{alignat}"},{display:!0,left:"\\begin{alignat*}",right:"\\end{alignat*}"},{display:!0,left:"\\begin{gather}",right:"\\end{gather}"},{display:!0,left:"\\begin{CD}",right:"\\end{CD}"},{display:!1,left:"$",right:"$"},{display:!1,left:"\\(",right:"\\)"}],strict:!1},search:{distance:100,findAllMatches:!1,fuseIndexURL:"/index.json",highlightTag:"em",ignoreFieldNorm:!1,ignoreLocation:!1,isCaseSensitive:!1,location:0,maxResultLength:10,minMatchCharLength:2,noResultsFound:"没有找到结果",snippetLength:30,threshold:.3,type:"fuse",useExtendedSearch:!1},siteTime:"2023-11-16T07:40:29+08:00",typeit:{cursorChar:"|",cursorSpeed:1e3,data:{"typeit-header-desktop":["typeit-header-desktop"],"typeit-header-title-mobile":["typeit-header-title-mobile"],"typeit-profile-subtitle":["typeit-profile-subtitle"]},duration:-1,loop:!1,speed:100}}</script><script src=/js/theme.min.js defer></script></body></html>