<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>YUNYI BLOG</title>
  
  <subtitle>得闲饮茶~~~</subtitle>
  <link href="https://yunyitang.me/atom.xml" rel="self"/>
  
  <link href="https://yunyitang.me/"/>
  <updated>2025-12-31T10:52:33.000Z</updated>
  <id>https://yunyitang.me/</id>
  
  <author>
    <name>Yunyi</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>2025 年终总结</title>
    <link href="https://yunyitang.me/2025-review/"/>
    <id>https://yunyitang.me/2025-review/</id>
    <published>2025-12-31T10:40:33.000Z</published>
    <updated>2025-12-31T10:52:33.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>2025 年又到了最后一天，在小红书刷着刷着，看到一条评论说<a href="https://www.yunyitang.me/images/2025-review.jpeg">“我们已经走过了 21 世纪的春天”</a>，在这白雾霭霭的冬日窝在家里突然又有很废话可讲，赶紧打开电脑写下来。</p><p>段落参考了自己的 <a href="https://www.yunyitang.me/2023-review/">2023年终总结</a>，以下。</p><span id="more"></span><h2 id="博客建设"><a href="#博客建设" class="headerlink" title="博客建设"><a href="#博客建设"><a href="#博客建设" class="headerlink" title="博客建设" class="headerlink" title="博客建设"></a></a>博客建设</h2><p>今年把博客从 Hugo <a href="https://www.yunyitang.me/blog-update-hexo-murasaki/">迁到了 Hexo</a>，又折腾了 GitHub Actions 和主题配置。相比刚搭建时的手忙脚乱，现在好多了。</p><p>博客更新频率其实没完全达到“每月两篇”的目标，工作之余能保持输出已经不容易了。不过写作确实是最好的学习方式，工作中遇到的数据问题、SQL 优化，写成博客记录下来，既是给自己复盘，也希望能帮到遇到类似问题的人。</p><h2 id="工作和技术"><a href="#工作和技术" class="headerlink" title="工作和技术"><a href="#工作和技术"><a href="#工作和技术" class="headerlink" title="工作和技术" class="headerlink" title="工作和技术"></a></a>工作和技术</h2><p>虽然还是在初创公司，融资和业务方向的不确定性依然存在，但能在 data engineering 深入下去，对我来说挺难得的。从一个没啥工作经验、一路读书到硕士毕业的人，到现在可以独立负责项目，涨薪看得见摸得着哈哈！</p><p>相比去年工作转正刚刚起步，今年渐渐明确<strong>数据工程</strong>的反向，燥候转岗佳音！</p><p>技术上主要精进了：</p><ul><li><strong>SQL</strong>：从基础查询到 CTE 和 <code>PARTITION</code>，工作中天天写；</li><li><strong>R</strong>：用来做数据清洗和一起 automated data runners；</li><li><strong>数据管道</strong>：ETL&#x2F;ELT 流程，小老板领头项目很给力；</li><li>Ghostty 和 Neovim 成为了每天用的<a href="https://www.yunyitang.me/2024-11-update/">新宝贝</a>；</li></ul><h2 id="生活变化"><a href="#生活变化" class="headerlink" title="生活变化"><a href="#生活变化"><a href="#生活变化" class="headerlink" title="生活变化" class="headerlink" title="生活变化"></a></a>生活变化</h2><p>今年六月终于搬进了新家，过程挺折腾，但也终于有了更稳定的生活空间和渴望已久的<a href="https://www.yunyitang.me/2025-xmas/">猫猫相陪</a>！目前还在慢慢布置，享受这个把房子变成”家”的过程，中间也经常摆烂拖延。</p><p>四月和每年几乎固定的徒步班子去了北威尔士的 Snowdonia，十一月又去了趟南意庞贝逛古城。只是家有猫猫之后出门有些犹豫了，多谢朋友得空上门看看他们～</p><h2 id="明年计划"><a href="#明年计划" class="headerlink" title="明年计划"><a href="#明年计划"><a href="#明年计划" class="headerlink" title="明年计划" class="headerlink" title="明年计划"></a></a>明年计划</h2><p>给 2026 年的自己留下一些小目标：</p><h3 id="工作技术"><a href="#工作技术" class="headerlink" title="工作技术"><a href="#工作技术"><a href="#工作技术" class="headerlink" title="工作技术" class="headerlink" title="工作技术"></a></a>工作技术</h3><ul><li>继续在数据工程深入，内部转岗；</li><li>既然在用GCP，多熟练（and 或许考他们的证书）；</li><li>保持博客输出，目标每两月一篇；</li></ul><h3 id="个人生活"><a href="#个人生活" class="headerlink" title="个人生活"><a href="#个人生活"><a href="#个人生活" class="headerlink" title="个人生活" class="headerlink" title="个人生活"></a></a>个人生活</h3><ul><li>把新家布置完善，住得更舒服；</li><li>照顾好咪咪，和他们一起健康长寿地活；</li><li>多出门徒步，争取完成一次多日徒步；</li></ul><h3 id="家人朋友"><a href="#家人朋友" class="headerlink" title="家人朋友"><a href="#家人朋友"><a href="#家人朋友" class="headerlink" title="家人朋友" class="headerlink" title="家人朋友"></a></a>家人朋友</h3><ul><li>哪怕不爱打电话，也多和家人发发照片视频；</li><li>朋友分散在五湖四海，有机会多见见；</li></ul><h2 id="相关阅读"><a href="#相关阅读" class="headerlink" title="相关阅读"><a href="#相关阅读"><a href="#相关阅读" class="headerlink" title="相关阅读" class="headerlink" title="相关阅读"></a></a>相关阅读</h2><p>更多大家的年终总结可翻阅 <a href="https://bf.zzxworld.com/t/summary">此合集</a>。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;2025 年又到了最后一天，在小红书刷着刷着，看到一条评论说&lt;a href=&quot;https://www.yunyitang.me/images/2025-review.jpeg&quot;&gt;“我们已经走过了 21 世纪的春天”&lt;/a&gt;，在这白雾霭霭的冬日窝在家里突然又有很废话可讲，赶紧打开电脑写下来。&lt;/p&gt;
&lt;p&gt;段落参考了自己的 &lt;a href=&quot;https://www.yunyitang.me/2023-review/&quot;&gt;2023年终总结&lt;/a&gt;，以下。&lt;/p&gt;</summary>
    
    
    
    <category term="日常" scheme="https://yunyitang.me/categories/life/"/>
    
    
    <category term="年终总结" scheme="https://yunyitang.me/tag/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93/"/>
    
    <category term="数据工程" scheme="https://yunyitang.me/tag/%E6%95%B0%E6%8D%AE%E5%B7%A5%E7%A8%8B/"/>
    
    <category term="猫猫" scheme="https://yunyitang.me/tag/%E7%8C%AB%E7%8C%AB/"/>
    
  </entry>
  
  <entry>
    <title>又一年圣诞🎄</title>
    <link href="https://yunyitang.me/2025-xmas/"/>
    <id>https://yunyitang.me/2025-xmas/</id>
    <published>2025-12-26T16:37:22.000Z</published>
    <updated>2025-12-26T16:37:22.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>好久没有更新了！最近在新家，有个正在最后从此论文的朋友暂住在家里，聊天的时候重燃起写博文的动力，携猫猫前来更新～～</p><span id="more"></span><h1 id="博客装修"><a href="#博客装修" class="headerlink" title="博客装修"><a href="#博客装修"><a href="#博客装修" class="headerlink" title="博客装修" class="headerlink" title="博客装修"></a></a>博客装修</h1><pre><code class="language-bash">⬆️ Update umami page link📈 Update umami to v3.0.3🍻 Add new request to friends page➖ Archive 405 &amp; 502 friends page➖ Archive T/O friend pages👔 Update resume</code></pre><p>好久没有更新 <a href="https://www.yunyitang.me/friends/">朋友们</a> 了，评论久未恢复，抱歉！现在都回复好、加上了，鞠躬！</p><h1 id="家有猫猫"><a href="#家有猫猫" class="headerlink" title="家有猫猫"><a href="#家有猫猫"><a href="#家有猫猫" class="headerlink" title="家有猫猫" class="headerlink" title="家有猫猫"></a></a>家有猫猫</h1><p>难以想象久违更新 GitHub profile 已经将<code>for one day I can have a cat as my new family</code> 改为 <code>for my home with my cats 🐈‍⬛</code>，时间过的真快呀！</p><p>今年五六月搬进了新家，六月中就从 <a href="https://www.meowmeowrescue.com/">Meow Meow Rescue</a> 接到了预订已久的猫猫。一开始还很不适应猪猪（狸白）的话多，不适应妹妹（狸花）的开团秒跟，住久了也渐渐同步作息了。</p><p><img src="/images/meow/mui-zyu-beds.jpeg" alt="cats" title="阿妹阿猪坐小床"></p><p>新家还在慢慢收拾，坐在猫窝上慢慢写今年的年度总结～</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;好久没有更新了！最近在新家，有个正在最后从此论文的朋友暂住在家里，聊天的时候重燃起写博文的动力，携猫猫前来更新～～&lt;/p&gt;</summary>
    
    
    
    <category term="日常" scheme="https://yunyitang.me/categories/life/"/>
    
    
    <category term="Hexo" scheme="https://yunyitang.me/tag/Hexo/"/>
    
    <category term="猫猫" scheme="https://yunyitang.me/tag/%E7%8C%AB%E7%8C%AB/"/>
    
    <category term="近况" scheme="https://yunyitang.me/tag/%E8%BF%91%E5%86%B5/"/>
    
  </entry>
  
  <entry>
    <title>数据女工入冬小记</title>
    <link href="https://yunyitang.me/2024-11-update/"/>
    <id>https://yunyitang.me/2024-11-update/</id>
    <published>2024-11-20T23:03:14.000Z</published>
    <updated>2024-11-20T23:03:14.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>最近转运的键盘和 DisplayLink 拓展坞到了，噼里啪啦瞬间有了更新博客的动力！</p><span id="more"></span><p>翻翻之前的工作笔记，这几个月边干边学，很多小工具都越用越顺手了～～</p><ul><li>终端</li><li>文本编辑器</li><li>package 管理</li><li>数据库工具</li><li>API 工具</li></ul><h1 id="开源好用"><a href="#开源好用" class="headerlink" title="开源好用"><a href="#开源好用"><a href="#开源好用" class="headerlink" title="开源好用" class="headerlink" title="开源好用"></a></a>开源好用</h1><p>“贵不一定好，但免费一定香！”</p><h2 id="数据处理"><a href="#数据处理" class="headerlink" title="数据处理"><a href="#数据处理"><a href="#数据处理" class="headerlink" title="数据处理" class="headerlink" title="数据处理"></a></a>数据处理</h2><p>平时处理数据库主要是 mysql，免费开源的 DBeaver 可好用。但前阵子发现它有时候会错漏识别文件夹里的 script，准备研究一下 nvim 里操作数据库交互的方法，all in one省省心。</p><p>R studio 社区版也够用，有时候套娃 sql 写烦了，用 dplyr 还很清爽。adhoc scripts 快快写，要上 Jenkins 的慢慢测。</p><h2 id="API-工具"><a href="#API-工具" class="headerlink" title="API 工具"><a href="#API-工具"><a href="#API-工具" class="headerlink" title="API 工具" class="headerlink" title="API 工具"></a></a>API 工具</h2><p>另一个开源实在的是 Insomnia，API 点点开，数据搜搜查。在小公司干活就是不一样，该省省该省省。</p><h2 id="终端"><a href="#终端" class="headerlink" title="终端"><a href="#终端"><a href="#终端" class="headerlink" title="终端" class="headerlink" title="终端"></a></a>终端</h2><p>一开始还是用的苹果自带，后来秉持着“终端帅最重要”的原则，上了 iTerm2 和 ohmyzsh，改了半天颜色字体，最后配置为：</p><ul><li><a href="https://github.com/icewind/everforest.iterm2">https://github.com/icewind/everforest.iterm2</a> &gt; nvim 也有对应配色</li><li><code>.zshrc</code>: <code>ZSH_THEME=&#39;random&#39;</code> <code>ZSH_THEME_RANDOM_CANDIDATES=( &quot;crunch&quot; &quot;gozilla&quot; &quot;cypher&quot; &quot;dpoggi&quot; &quot;eastwood&quot; &quot;emotty&quot; &quot;jbergantine&quot; &quot;josh&quot; &quot;kennethreitz&quot; &quot;minimal&quot; &quot;muse&quot; &quot;sorin&quot; )</code> <code>plugins=(git bundler dotenv brew compleat command-not-found gh history iterm2 macos node rake rbenv ruby ssh ssh-agent tmux tmux-cssh yarn zsh-autosuggestions zsh-syntax-highlighting fast-syntax-highlighting zsh-autocomplete)</code></li></ul><p>配置如上之后基本就能顺利使用了。到目前为止，我对终端的开发还不到百分之一，继续捣鼓工具们就是摸鱼时候的不二之选！</p><h1 id="唯二花了钱的套装"><a href="#唯二花了钱的套装" class="headerlink" title="唯二花了钱的套装"><a href="#唯二花了钱的套装"><a href="#唯二花了钱的套装" class="headerlink" title="唯二花了钱的套装" class="headerlink" title="唯二花了钱的套装"></a></a>唯二花了钱的套装</h1><p>只有 Google 和 Atlassian 了，一个大而全，另一个大而全，公司财务的思路我也有点拿捏了。</p><p>有空再写～～</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;最近转运的键盘和 DisplayLink 拓展坞到了，噼里啪啦瞬间有了更新博客的动力！&lt;/p&gt;</summary>
    
    
    
    <category term="技术" scheme="https://yunyitang.me/categories/tech/"/>
    
    
    <category term="Data" scheme="https://yunyitang.me/tag/Data/"/>
    
    <category term="R" scheme="https://yunyitang.me/tag/R/"/>
    
    <category term="mysql" scheme="https://yunyitang.me/tag/mysql/"/>
    
  </entry>
  
  <entry>
    <title>近况更新</title>
    <link href="https://yunyitang.me/2024-5-update/"/>
    <id>https://yunyitang.me/2024-5-update/</id>
    <published>2024-06-01T20:58:04.000Z</published>
    <updated>2024-06-01T20:58:04.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>很久没有更新了，最近生活多变，其中最好的一件改变就是工作转正。相比平时在小红书刷到的无数招工贴，感觉自己已经很幸运了。</p><p>工作两天之后，上手了很不少之前只听同事们谈到的 workflow，感觉离自己想去的职业方向越来越近，还是有点兴奋的。而且手握公司给我这个新驴配的新磨，干啥都顺手了不少。</p><span id="more"></span><p>团队还是原来兼职所在的团队，不过转了全职后，随着参与的工作流程更多，加上平时团队内部的 catchup，对我们 team 的风格有了更好地了解。还是不错的，不愧是俺的第一份 dream job。</p><p>感觉换工作之后会有更多机会更新一些工作笔记整理成的博文，并祝各位友邻安好～～</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;很久没有更新了，最近生活多变，其中最好的一件改变就是工作转正。相比平时在小红书刷到的无数招工贴，感觉自己已经很幸运了。&lt;/p&gt;
&lt;p&gt;工作两天之后，上手了很不少之前只听同事们谈到的 workflow，感觉离自己想去的职业方向越来越近，还是有点兴奋的。而且手握公司给我这个新驴配的新磨，干啥都顺手了不少。&lt;/p&gt;</summary>
    
    
    
    <category term="日常" scheme="https://yunyitang.me/categories/life/"/>
    
    
    <category term="找工" scheme="https://yunyitang.me/tag/%E6%89%BE%E5%B7%A5/"/>
    
  </entry>
  
  <entry>
    <title>利用 Obsidian Metadata Menu 插件安排工作档案</title>
    <link href="https://yunyitang.me/obsidian-metadata-menu-plugin-worknote-tickets/"/>
    <id>https://yunyitang.me/obsidian-metadata-menu-plugin-worknote-tickets/</id>
    <published>2024-02-17T19:59:08.000Z</published>
    <updated>2024-02-17T19:59:08.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2 id="提出问题"><a href="#提出问题" class="headerlink" title="提出问题"><a href="#提出问题"><a href="#提出问题" class="headerlink" title="提出问题" class="headerlink" title="提出问题"></a></a>提出问题</h2><p>一开始使用标签 <code>tag</code> 管理每日工作笔记的 bug 记录和常用客户信息，在一星期使用后，带有分类的标签变得越来越长，如 <code>#zapmap/bug/on</code> ；多了之后，每天的工作笔记变得很冗长，就开始琢磨其他办法。</p><h2 id="解决问题过程"><a href="#解决问题过程" class="headerlink" title="解决问题过程"><a href="#解决问题过程"><a href="#解决问题过程" class="headerlink" title="解决问题过程" class="headerlink" title="解决问题过程"></a></a>解决问题过程</h2><p>管理 bugs 记录，相当于个人工作笔记中的 ticket system：</p><ul><li>简化 daily note，bug 单页 跟进 bug 的进度，<code>[[]]</code> 回链 daily note；</li><li><code>[[]]</code> entry 方便回溯；</li><li>每页 metadata（yaml格式）定义进度 <code>status</code> 和 <code>assignee</code> 跟进人；</li></ul><span id="more"></span><p>fileClass 文件如下：</p><pre><code class="language-yaml">---limit: 50mapWithTag: trueicon: bugtagNames:  - zapmap/bugfilesPaths: bookmarksGroups: excludes: extends: savedViews:  - name: default    children: []    sorters:      - id: bugs____status        name: status        direction: desc        priority: 1        customOrder: []    filters:      - id: bugs____file        name: file        query: &quot;&quot;      - id: bugs____status        name: status        query: &quot;&quot;      - id: bugs____assignee        name: assignee        query: &quot;&quot;    columns:      - id: bugs____file        name: file        hidden: false        position: 0      - id: bugs____status        name: status        hidden: false        position: 1      - id: bugs____assignee        name: assignee        hidden: false        position: 2favoriteView: fieldsOrder:  - pmbe79  - ZwwpKPversion: &quot;2.32&quot;fields:  - name: status    type: Select    options:      valuesList:        &quot;1&quot;: open        &quot;2&quot;: escalated        &quot;3&quot;: close      sourceType: ValuesList      valuesListNotePath: &quot;&quot;      valuesFromDVQuery: &quot;&quot;    path: &quot;&quot;    id: pmbe79  - name: assignee    type: Multi    options:      valuesList:        &quot;1&quot;: &quot;[[DM]]&quot;        &quot;2&quot;: &quot;[[DM]]&quot;        &quot;3&quot;: &quot;[[DM]]&quot;        &quot;4&quot;: &quot;[[DM]]&quot;      sourceType: ValuesList      valuesListNotePath: &quot;&quot;      valuesFromDVQuery: &quot;&quot;    path: &quot;&quot;    id: ZwwpKP---</code></pre><h2 id="总结和提升"><a href="#总结和提升" class="headerlink" title="总结和提升"><a href="#总结和提升"><a href="#总结和提升" class="headerlink" title="总结和提升" class="headerlink" title="总结和提升"></a></a>总结和提升</h2><p>启动一个 workflow&#x2F;管理系统不用考虑太多，有个初步想法、先做起来最重要！迭代可以慢慢来， Metadata Menu 管理常用客户信息之后，才迭代了自己工作笔记的 track。</p><h2 id="相关阅读"><a href="#相关阅读" class="headerlink" title="相关阅读"><a href="#相关阅读"><a href="#相关阅读" class="headerlink" title="相关阅读" class="headerlink" title="相关阅读"></a></a>相关阅读</h2><ul><li><a href="https://mdelobelle.github.io/metadatamenu/">官方文档</a></li><li><a href="https://mdelobelle.github.io/metadatamenu/fileclasses/">fileclasses 官方文档</a></li><li>相关博文：<a href="https://www.yunyitang.me/Obsidian-work-note/">Obsidian 自定义工作笔记</a></li></ul>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;提出问题&quot;&gt;&lt;a href=&quot;#提出问题&quot; class=&quot;headerlink&quot; title=&quot;提出问题&quot;&gt;&lt;/a&gt;提出问题&lt;/h2&gt;&lt;p&gt;一开始使用标签 &lt;code&gt;tag&lt;/code&gt; 管理每日工作笔记的 bug 记录和常用客户信息，在一星期使用后，带有分类的标签变得越来越长，如 &lt;code&gt;#zapmap/bug/on&lt;/code&gt; ；多了之后，每天的工作笔记变得很冗长，就开始琢磨其他办法。&lt;/p&gt;
&lt;h2 id=&quot;解决问题过程&quot;&gt;&lt;a href=&quot;#解决问题过程&quot; class=&quot;headerlink&quot; title=&quot;解决问题过程&quot;&gt;&lt;/a&gt;解决问题过程&lt;/h2&gt;&lt;p&gt;管理 bugs 记录，相当于个人工作笔记中的 ticket system：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;简化 daily note，bug 单页 跟进 bug 的进度，&lt;code&gt;[[]]&lt;/code&gt; 回链 daily note；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[[]]&lt;/code&gt; entry 方便回溯；&lt;/li&gt;
&lt;li&gt;每页 metadata（yaml格式）定义进度 &lt;code&gt;status&lt;/code&gt; 和 &lt;code&gt;assignee&lt;/code&gt; 跟进人；&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="技术" scheme="https://yunyitang.me/categories/tech/"/>
    
    
    <category term="Data" scheme="https://yunyitang.me/tag/Data/"/>
    
    <category term="Obsidian" scheme="https://yunyitang.me/tag/Obsidian/"/>
    
    <category term="工作笔记" scheme="https://yunyitang.me/tag/%E5%B7%A5%E4%BD%9C%E7%AC%94%E8%AE%B0/"/>
    
    <category term="metadata" scheme="https://yunyitang.me/tag/metadata/"/>
    
  </entry>
  
  <entry>
    <title>为 Hexo 博客添加流量统计</title>
    <link href="https://yunyitang.me/vercel-host-umami-analytics-hexo/"/>
    <id>https://yunyitang.me/vercel-host-umami-analytics-hexo/</id>
    <published>2024-02-01T20:58:32.000Z</published>
    <updated>2025-12-26T13:42:32.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>一般来说，写博客的都喜欢在页面上加上一个访问计数器，来<del>满足虚荣心</del>显示某篇文章或者整个站点的访问量。这种需求在 WordPress 等动态博客上都是比较容易满足的，安装个插件即可（辣鸡 Ghost 除外），但是对于小部分静态博客来说就比较头疼了。</p><p>目前来看，互联网上的静态博客访问计数器解决方案大致有这么几种：</p><ul><li>使用“<a href="http://busuanzi.ibruce.info/">不蒜子</a>”访问计数服务；</li><li>各平台统计服务。</li></ul><span id="more"></span><p>其中“不蒜子”是个自称“永久免费使用”的极简网页计数器，仅需两行代码即可为静态博客添加访问计数功能，这种简单的解决方案也受到很多静态博客作者的喜爱。但正如 <a href="https://prinsss.github.io/">PRIN</a> 在这篇文章（<a href="https://prinsss.github.io/add-page-view-counter-for-ghost-blog/">为 Ghost 博客添加页面访问计数器</a>）中所述，不蒜子虽然提供了 <code>site_pv</code>、<code>site_uv</code>、<code>page_pv</code> 等多种统计，但是其并不提供这些服务的开放 API。此前在使用 <a href="https://www.yunyitang.me/hugo-papermod-blog/">Hugo 部署博客</a> 的时候使用了这个方法，但随着博客弄得越来越<del>花哨</del>功能繁多，简洁可爱的 <a href="https://github.com/umami-software/umami">umami</a> 吸引了我的注意力，单独的分享数据页面<del>虽然没用但</del>很炫酷。</p><p>一开始用的 <a href="https://umami.is/docs/cloud">Umami Cloud</a>，很快捷但无法自定义很多环境变量，一直统计 <code>localhost</code> 挺烦人的。在使用 Hugo 部署博客的期间，在 <code>layouts/partials/extend_head.html</code> 更改代码如下：</p><pre><code class="language-html">&lt;!-- ref: https://stackoverflow.com/questions/40297763/how-to-disable-google-analytics-on-localhost --&gt;&lt;script&gt;    var host = window.location.hostname;    if(host != &quot;localhost&quot;) {        var script = document.createElement(&#39;script&#39;);        script.src = &quot;https://eu.umami.is/script.js&quot;;        script.async = true;        script.dataset.websiteId = &quot;ff42c1d4-d7db-4925-af13-c30c26df5816&quot;;        document.head.appendChild(script);    }&lt;/script&gt;</code></pre><p>成功规避了来自 <code>localhost</code> 的流量统计。</p><p>随着博客改为 Hexo 部署，干脆尝试用一个数据库（MySQL 或 PostgreSQL）和可以运行 Node.js （18.17 或更新版本）的服务器部署 Umami。一直偷懒用静态网页部署博客，一想到可以用一回数据库架加服务器，想想还是很激动呢 😀</p><h2 id="Umami-安装选项"><a href="#Umami-安装选项" class="headerlink" title="Umami 安装选项"><a href="#Umami-安装选项"><a href="#Umami-安装选项" class="headerlink" title="Umami 安装选项" class="headerlink" title="Umami 安装选项"></a></a>Umami 安装选项</h2><p>根据官方指南，安装 Umami 有几种不同的方法：</p><ul><li>拉取源码安装： 从 GitHub 获取代码并自行构建应用程序；</li><li>使用 Docker compose：使用 <code>docker compose</code> 构建自己的 Docker 容器；</li><li>使用 Docker 映像： 下载预构建的 Docker 镜像。</li></ul><p>我把这三种方法都折腾了一遍，在 <code>yarn build</code> 和 <code>yarn start</code> 之后，程序默认在 <code>http://localhost:3000</code> 上启动。大概是我对服务器不够了解，总觉得每次都启动程序再 <code>localhost</code> 太费劲了，所以将目光转向了第四个选择：</p><h2 id="选择-App-托管"><a href="#选择-App-托管" class="headerlink" title="选择 App 托管"><a href="#选择-App-托管"><a href="#选择-App-托管" class="headerlink" title="选择 App 托管" class="headerlink" title="选择 App 托管"></a></a>选择 App 托管</h2><p>可以让应用程序托管服务提供商托管 Umami 程序。我们仍然需要运行一个数据库，用以连接程序。Vercel、Netlify、Railway 等都提供免费选项，穷人大喜！</p><p>最后我选择了 <a href="https://umami.is/docs/running-on-vercel">Vercel</a>，一是因为此前用 <a href="https://twikoo.js.org/backend.html#vercel-%E9%83%A8%E7%BD%B2">twikoo</a> 评论系统的时候，尝试过用 Vercel 部署，一回生二回熟；二是因为搭配的数据库可以使用 Vercel Postgres 数据库，方便。</p><p>部署时，使用 <a href="https://umami.is/docs/guides/running-on-vercel">官方文档</a> 的 Vercel 按钮可以自动执行 1.-5.：</p><ol><li>将 <a href="https://github.com/umami-software/umami">https://github.com/umami-software/umami</a> 项目 fork 到自己的 GitHub 账户；</li><li>在 Vercel 创建或登陆账户；</li><li>在仪表板页面点击 “导入项目”，然后指定 GitHub 上项目 fork 的 URL。</li><li>在 Vercel 项目中添加所需的环境变量 DATABASE_URL，可以使用 <a href="https://umami.is/docs/install">已在安装配置 Umami 时</a> 使用的数据库连接，或者创建 Vercel Postgres 数据库并使用；</li></ol><blockquote><p>使用 POSTGRES_PRISMA_URL，其格式为 <code>postgres://user:passwd@endpoint-pooler.postgres.vercel-storage.com/verceldb?pgbouncer=true&amp;connect_timeout=10</code>；数据库 URL 环境变量可在 <code>db/postgresql/prisma.schema</code> 文件或 Vercel 设置 <code>https://vercel.com/username-projects/project-name/settings/environment-variables</code> 中更改。</p></blockquote><ol start="5"><li>部署并在 <code>&lt;deploy-id&gt;.vercel.app</code> 访问 Umami 应用程序；</li><li>按官方文档的 <a href="https://umami.is/docs/login">登录步骤</a> 登陆并更改默认密码。</li></ol><p>反正自己有域名，编了个 <code>analytics.yunyitang.me</code> 给自己的 umami 登陆主页，这样对应的 <a href="https://analytics.yunyitang.me/share/FfIxx6mpOlXSB7Ri/YUNYI%20BLOG">分享链接</a> 也漂亮一点。</p><p>有自己的数据库，还可以在 <code>https://vercel.com/yunyis-projects/blog-umami/stores/postgres/store_QiP3pLirURs7N1Po/data</code> 里</p><pre><code class="language-sql">delete from website_eventwhere Referrer_domain = &#39;localhost&#39;</code></pre><p>太香啦！</p><p>踩坑：每次都加载得很慢，哭了，希望在 <code>https://vercel.com/yunyis-projects/blog-umami/settings/functions</code> 里把 <code>Function Region</code> 改成“伦敦”能有所好转！</p><h2 id="Hexo-config-yml"><a href="#Hexo-config-yml" class="headerlink" title="Hexo _config.yml"><a href="#Hexo-config-yml"><a href="#Hexo-config-yml" class="headerlink" title="Hexo _config.yml" class="headerlink" title="Hexo _config.yml"></a></a>Hexo _config.yml</h2><p>在 <code>_config.yml</code> 里的设置参考 <a href="https://github.com/prinsss/hexo-theme-murasaki/blob/master/_config.yml">所用主题</a> 的设置：</p><pre><code class="language-yaml"># Umami - A self-hosted alternative to Google Analytics.# See: https://github.com/umami-software/umamiumami:  enable: true  script_url:  website_id:</code></pre><h2 id="写在后面"><a href="#写在后面" class="headerlink" title="写在后面"><a href="#写在后面"><a href="#写在后面" class="headerlink" title="写在后面" class="headerlink" title="写在后面"></a></a>写在后面</h2><p>趁着给博客装修，趁机摸了一把 Docker、MySQL、PostgreSQL、Vercel CLI，折腾好了圆满收工。</p><p>之后可能继续折腾 <a href="https://prinsss.github.io/add-page-view-counter-for-hexo/">为 Hexo 博客添加页面访问计数器</a> 以及 <a href="https://prin.pw/google-analytics-api-page-views-counter/#%E8%B8%A9%E5%9D%91serverless-%E9%83%A8%E7%BD%B2%E7%9A%84%E5%8F%AF%E8%A1%8C%E6%80%A7">使用 Google Analytics API 实现博客阅读量统计</a>，这次装修的新鲜劲应该够我喜欢几个月了吧。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;一般来说，写博客的都喜欢在页面上加上一个访问计数器，来&lt;del&gt;满足虚荣心&lt;/del&gt;显示某篇文章或者整个站点的访问量。这种需求在 WordPress 等动态博客上都是比较容易满足的，安装个插件即可（辣鸡 Ghost 除外），但是对于小部分静态博客来说就比较头疼了。&lt;/p&gt;
&lt;p&gt;目前来看，互联网上的静态博客访问计数器解决方案大致有这么几种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用“&lt;a href=&quot;http://busuanzi.ibruce.info/&quot;&gt;不蒜子&lt;/a&gt;”访问计数服务；&lt;/li&gt;
&lt;li&gt;各平台统计服务。&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="技术" scheme="https://yunyitang.me/categories/tech/"/>
    
    
    <category term="博客" scheme="https://yunyitang.me/tag/%E5%8D%9A%E5%AE%A2/"/>
    
    <category term="流量统计" scheme="https://yunyitang.me/tag/%E6%B5%81%E9%87%8F%E7%BB%9F%E8%AE%A1/"/>
    
  </entry>
  
  <entry>
    <title>博客更新：新的赛博马甲 🍵</title>
    <link href="https://yunyitang.me/blog-update-hexo-murasaki/"/>
    <id>https://yunyitang.me/blog-update-hexo-murasaki/</id>
    <published>2024-01-31T22:03:59.000Z</published>
    <updated>2024-01-31T22:03:59.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>本来只是想更新一下博客的主题，简化一点，但随着 <a href="https://github.com/prinsss/hexo-theme-murasaki">Murasaki</a> 的主题色调整，自己最爱的橙色一直没有选到合适的 primary_color 和 primary_color_dark，干脆把赛博马甲翻新一下。</p><span id="more"></span><p>一开始选择 <a href="https://color-term.com/color/taocihong-e16723/" style="color: #E16723 !important;">陶瓷红</a> <code>#E16723</code> 作为 primary_color，<a href="https://color-term.com/color/boluohong-fc7930/" style="color: #FC7930 !important;">菠萝红</a> <code>#FC7930</code> 作为 primary_color_dark，但 <a href="https://color-term.com/color/taocihong-e16723/" style="color: #E16723 !important;">陶瓷红</a> <code>#E16723</code> 在现在主题的背景色下有点太沉闷了，所以寻思重新找个颜色。</p><h2 id="调整细节"><a href="#调整细节" class="headerlink" title="调整细节"><a href="#调整细节"><a href="#调整细节" class="headerlink" title="调整细节" class="headerlink" title="调整细节"></a></a>调整细节</h2><p>一直以来执着于在 <a href="https://color-term.com/traditional-color-of-china">500 Plus Traditional Colors of China</a> 上选择颜色，主题更新前的 <a href="https://color-term.com/color/taocihong-e16723/" style="color: #E16723 !important;">陶瓷红</a> <code>#E16723</code> 也是在这个列表里选了个和 <a href="https://www.yunyitang.me/img/Avatar.png">avatar</a> 香香最接近的颜色。顺着自己 <a href="https://www.yunyitang.me/Obsidian-work-note/">Obsidian 工作笔记</a> 的 <a href="https://color-term.com/color/heyelv-1a6840/" style="color: #1A6840 !important;">荷叶绿</a>  <code>#1A6840</code> 配色，加上自己名字的含义，选择主色调为 <a href="https://color-term.com/color/yusuilv-41b349/" style="color: #41B349 !important;">玉髓绿</a> <code>#41B349</code>。</p><p>既然都换了主题色，心动一并换了 <a href="https://www.yunyitang.me/img/favicon.png">favicon</a> 和 网站副标题（新时代赛博签名），取自以前很喜欢的一个博主“得闲饮茶”，既有粤语特色，又有广交朋友的意思。</p><p>现在博客页面大概精简到自己理想的样子，中英博文按 category 区分。再次感谢 <a href="https://prin.pw/">PRIN</a> 写的 <a href="https://github.com/prinsss/hexo-theme-murasaki/">Murasaki</a> 主题！下一篇回归原本的写作计划，不摸鱼啦～～～</p><h2 id="参考链接"><a href="#参考链接" class="headerlink" title="参考链接"><a href="#参考链接"><a href="#参考链接" class="headerlink" title="参考链接" class="headerlink" title="参考链接"></a></a>参考链接</h2><ul><li><a href="https://prinsss.github.io/blog-theme-dark-mode/">博客主题可以自动切换深色模式啦</a> </li><li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme">prefers-color-scheme - CSS | MDN</a> </li><li><a href="https://color-term.com/traditional-color-of-china">500 Plus Traditional Colors of China</a></li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;本来只是想更新一下博客的主题，简化一点，但随着 &lt;a href=&quot;https://github.com/prinsss/hexo-theme-murasaki&quot;&gt;Murasaki&lt;/a&gt; 的主题色调整，自己最爱的橙色一直没有选到合适的 primary_color 和 primary_color_dark，干脆把赛博马甲翻新一下。&lt;/p&gt;</summary>
    
    
    
    <category term="日常" scheme="https://yunyitang.me/categories/life/"/>
    
    
    <category term="博客" scheme="https://yunyitang.me/tag/%E5%8D%9A%E5%AE%A2/"/>
    
    <category term="Hexo" scheme="https://yunyitang.me/tag/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>Obsidian 自定义工作笔记</title>
    <link href="https://yunyitang.me/Obsidian-work-note/"/>
    <id>https://yunyitang.me/Obsidian-work-note/</id>
    <published>2024-01-25T21:10:57.000Z</published>
    <updated>2024-01-25T21:10:57.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><ul><li>启用日期：2024-01-09 </li><li>应用场景：工作笔记 </li><li>自定义：<a href="https://color-term.com/color/heyelv-1a6840/" style="color: #1A6840 !important;">荷叶绿</a> HEYELV #1A6840 RGB(26, 104, 64)；字体 <a href="https://www.jetbrains.com/lp/mono/">JetBrains Mono</a></li></ul><hr><h2 id="常用功能属性"><a href="#常用功能属性" class="headerlink" title="常用功能属性"><a href="#常用功能属性"><a href="#常用功能属性" class="headerlink" title="常用功能属性" class="headerlink" title="常用功能属性"></a></a>常用功能属性</h2><ul><li>Templater</li><li>Metadata </li><li>tags</li></ul><span id="more"></span><h2 id="分类方法"><a href="#分类方法" class="headerlink" title="分类方法"><a href="#分类方法"><a href="#分类方法" class="headerlink" title="分类方法" class="headerlink" title="分类方法"></a></a>分类方法</h2><p>标签：PARA + 工作内容</p><ul><li>1-projects</li><li>2-areas</li><li>3-resources</li><li>4-archives</li><li>zapmap</li></ul><blockquote><p>同样的分类方法我也应用于系统便签本的归类。</p></blockquote><h2 id="安装插件"><a href="#安装插件" class="headerlink" title="安装插件"><a href="#安装插件"><a href="#安装插件" class="headerlink" title="安装插件" class="headerlink" title="安装插件"></a></a>安装插件</h2><table><thead><tr><th>插件</th><th>主要功能</th><th>相关阅读</th></tr></thead><tbody><tr><td><a href="obsidian://show-plugin?id=dataview">Dataview</a></td><td>数据库查询</td><td><a href="https://pkmer.cn/Pkmer-Docs/10-obsidian/obsidian%E7%A4%BE%E5%8C%BA%E6%8F%92%E4%BB%B6/dataview/dataview%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95/31---dql-%E4%B8%8E-sql-%E7%9A%84%E5%BC%82%E5%90%8C/">Dataview 中的 DQL 与 SQL 的区别</a></td></tr><tr><td><a href="obsidian://show-plugin?id=metadata-menu">Metadata Menu</a></td><td>访问和管理笔记的元数据</td><td></td></tr><tr><td><a href="obsidian://show-plugin?id=nldates-obsidian">Natural Language Dates</a></td><td>通过自然语言生成日期</td><td></td></tr><tr><td><a href="obsidian://show-plugin?id=smart-random-note">Smart Random Notes</a></td><td>随机挑选一篇笔记阅读</td><td></td></tr><tr><td><a href="obsidian://show-plugin?id=templater-obsidian">Templater</a></td><td>模版指令</td><td></td></tr><tr><td><a href="obsidian://show-plugin?id=various-complements">Various Complements</a></td><td>自动补全</td><td></td></tr></tbody></table><h2 id="其他相关阅读"><a href="#其他相关阅读" class="headerlink" title="其他相关阅读"><a href="#其他相关阅读"><a href="#其他相关阅读" class="headerlink" title="其他相关阅读" class="headerlink" title="其他相关阅读"></a></a>其他相关阅读</h2><p><a href="https://stdrc.cc/">RC</a> 总结的 <a href="https://stdrc.cc/style-guides/chinese">中文写作风格指南</a>。</p>]]></content>
    
    
    <summary type="html">&lt;ul&gt;
&lt;li&gt;启用日期：2024-01-09 &lt;/li&gt;
&lt;li&gt;应用场景：工作笔记 &lt;/li&gt;
&lt;li&gt;自定义：&lt;a href=&quot;https://color-term.com/color/heyelv-1a6840/&quot; style=&quot;color: #1A6840 !important;&quot;&gt;荷叶绿&lt;/a&gt; HEYELV #1A6840 RGB(26, 104, 64)；字体 &lt;a href=&quot;https://www.jetbrains.com/lp/mono/&quot;&gt;JetBrains Mono&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;常用功能属性&quot;&gt;&lt;a href=&quot;#常用功能属性&quot; class=&quot;headerlink&quot; title=&quot;常用功能属性&quot;&gt;&lt;/a&gt;常用功能属性&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Templater&lt;/li&gt;
&lt;li&gt;Metadata &lt;/li&gt;
&lt;li&gt;tags&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="技术" scheme="https://yunyitang.me/categories/tech/"/>
    
    
    <category term="Data" scheme="https://yunyitang.me/tag/Data/"/>
    
    <category term="Markdown" scheme="https://yunyitang.me/tag/Markdown/"/>
    
    <category term="Obsidian" scheme="https://yunyitang.me/tag/Obsidian/"/>
    
  </entry>
  
  <entry>
    <title>App Defaults</title>
    <link href="https://yunyitang.me/app-defaults/"/>
    <id>https://yunyitang.me/app-defaults/</id>
    <published>2024-01-17T21:06:41.000Z</published>
    <updated>2024-01-25T21:06:41.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p><a href="https://defaults.rknight.me/">App Defaults</a> collected by <a href="https://rknight.me/">Robb</a></p></blockquote><blockquote><p>信息来源：<a href="https://anotherdayu.com/2023/5452/">Another Dayu：My App Defaults 2023</a></p></blockquote><h2 id="App-Defaults"><a href="#App-Defaults" class="headerlink" title="App Defaults"><a href="#App-Defaults"><a href="#App-Defaults" class="headerlink" title="App Defaults" class="headerlink" title="App Defaults"></a></a>App Defaults</h2><p>📨 Mail Client: Outlook, GMails</p><p>📮 Mail Server: Outlook, GMails</p><p>📝 Notes: Apple notes</p><p>✅ To-Do: Apple notes</p><p>📷 iPhone Photo Shooting: iPhone camera, Dazz Cam</p><span id="more"></span><p>🟦 Photo Management: Apple photos</p><p>📆 Calendar: Apple calendar, Outlook calendar</p><p>📁 Cloud File Storage: iCloud, OneDrive, Google Drive</p><p>📖 RSS: (tbd)</p><p>🙍🏻‍♂️ Contacts: Apple contacts</p><p>🌐 Browser: Safari, Google Chrome</p><p>💬 Chat: Whatsapp, WeChat</p><p>🔖 Bookmarks: (tbd)</p><p>📑 Read It Later: (tbd)</p><p>📜 Word Processing: MS Word, Obsidian</p><p>📈 Spreadsheets: MS Excel, Numbers</p><p>📊 Presentations: MS PowerPoint</p><p>🛒 Shopping Lists: Amazon</p><p>🍴 Meal Planning: NO!</p><p>💰 Budgeting and Personal Finance: Numbers</p><p>📰 News: (a weird mix)</p><p>🎵 Music: Spotify</p><p>🎤 Podcasts: Spotify</p><p>🔐 Password Management: <strong>**</strong></p><hr><p>在日常工作中，合适的工具能帮助我们快速完成工作，起到事半功倍的效果。</p><p>下面是我常用的一些软件，个人用起来比较得心应手，推荐给大家。按照软件用途主要分为三大类：</p><ul><li>办公&#x2F;写作软件，</li><li>开发软件</li><li>和系统软件。</li></ul><p>由于日常工作的关系，相关软件仅限于Mac平台，其他系统平台如Windows可能不一定有对应的版本。</p><details><summary>具体软件清单如下表所示：</summary><h2 id="办公-写作软件"><a href="#办公-写作软件" class="headerlink" title="办公&#x2F;写作软件"><a href="#办公-写作软件"><a href="#办公-写作软件" class="headerlink" title="办公&#x2F;写作软件" class="headerlink" title="办公&#x2F;写作软件"></a></a>办公&#x2F;写作软件</h2><table><thead><tr><th>序号</th><th>名称</th><th>说明</th></tr></thead><tbody><tr><td>1</td><td>Safari</td><td>浏览器</td></tr><tr><td>2</td><td>Google Chrome</td><td>浏览器</td></tr><tr><td>3</td><td>Microsoft Office</td><td>Word, Excel, PowerPoint, Outlook</td></tr><tr><td>4</td><td>Acrobat Reader</td><td>PDF阅读器</td></tr><tr><td>5</td><td>hugo</td><td>开源静态站点生成器</td></tr><tr><td>6</td><td>Bandizip</td><td>解压缩工具</td></tr></tbody></table><h2 id="开发软件"><a href="#开发软件" class="headerlink" title="开发软件"><a href="#开发软件"><a href="#开发软件" class="headerlink" title="开发软件" class="headerlink" title="开发软件"></a></a>开发软件</h2><table><thead><tr><th>序号</th><th>名称</th><th>说明</th></tr></thead><tbody><tr><td>1</td><td>Node.js</td><td>尽量用LTS版本</td></tr><tr><td>2</td><td>Python</td><td>尽量用LTS版本</td></tr><tr><td>3</td><td>Git</td><td>代码管理</td></tr><tr><td>4</td><td>Visual Studio Code</td><td>业界良心</td></tr><tr><td>5</td><td>Fig</td><td>代码补全</td></tr><tr><td>6</td><td>Docker</td><td>容器化</td></tr></tbody></table><h2 id="系统软件"><a href="#系统软件" class="headerlink" title="系统软件"><a href="#系统软件"><a href="#系统软件" class="headerlink" title="系统软件" class="headerlink" title="系统软件"></a></a>系统软件</h2><table><thead><tr><th>序号</th><th>名称</th><th>说明</th></tr></thead><tbody><tr><td>1</td><td>RunCat</td><td>状态栏插件</td></tr></tbody></table></details>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://defaults.rknight.me/&quot;&gt;App Defaults&lt;/a&gt; collected by &lt;a href=&quot;https://rknight.me/&quot;&gt;Robb&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;信息来源：&lt;a href=&quot;https://anotherdayu.com/2023/5452/&quot;&gt;Another Dayu：My App Defaults 2023&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;App-Defaults&quot;&gt;&lt;a href=&quot;#App-Defaults&quot; class=&quot;headerlink&quot; title=&quot;App Defaults&quot;&gt;&lt;/a&gt;App Defaults&lt;/h2&gt;&lt;p&gt;📨 Mail Client: Outlook, GMails&lt;/p&gt;
&lt;p&gt;📮 Mail Server: Outlook, GMails&lt;/p&gt;
&lt;p&gt;📝 Notes: Apple notes&lt;/p&gt;
&lt;p&gt;✅ To-Do: Apple notes&lt;/p&gt;
&lt;p&gt;📷 iPhone Photo Shooting: iPhone camera, Dazz Cam&lt;/p&gt;</summary>
    
    
    
    <category term="技术" scheme="https://yunyitang.me/categories/tech/"/>
    
    
    <category term="AppDefaults" scheme="https://yunyitang.me/tag/AppDefaults/"/>
    
    <category term="Tools" scheme="https://yunyitang.me/tag/Tools/"/>
    
  </entry>
  
  <entry>
    <title>Hugo+PaperMod 双语博客搭建 Home-Info+Profile Mode</title>
    <link href="https://yunyitang.me/hugo-papermod-blog/"/>
    <id>https://yunyitang.me/hugo-papermod-blog/</id>
    <published>2024-01-15T01:00:42.000Z</published>
    <updated>2024-01-25T01:00:42.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>从入门到踩坑到从坑里爬起来！</p></blockquote><h2 id="安装"><a href="#安装" class="headerlink" title="安装"><a href="#安装"><a href="#安装" class="headerlink" title="安装" class="headerlink" title="安装"></a></a>安装</h2><ol><li>安装 <code>Hugo</code>：安装 <code>Hugo</code> 需要利用一个包管理工具。对于 MacOS 系统 <code>Hugo</code> 可以直接用 <code>Homebrew</code> 来安装，打开终端输入</li></ol><pre><code class="language-shell">brew install hugo</code></pre><ol start="2"><li>安装 <code>PaperMod</code>：根据 <code>PaperMod</code> 的 <a href="https://github.com/adityatelange/hugo-PaperMod/wiki/Installation0">官方文档</a> 配置。</li></ol><h2 id="文件夹管理"><a href="#文件夹管理" class="headerlink" title="文件夹管理"><a href="#文件夹管理"><a href="#文件夹管理" class="headerlink" title="文件夹管理" class="headerlink" title="文件夹管理"></a></a>文件夹管理</h2><ul><li><code>archetypes</code>：不用管</li><li><code>asset</code>：<a href="#%E8%87%AA%E5%AE%9A%E4%B9%89%E9%A1%B5%E9%9D%A2%E5%B8%83%E5%B1%80-htmlcss">自定义的 CSS 和 JavaScript</a></li><li><code>content</code>：用于放博客内容</li></ul><span id="more"></span><ul><li><code>data</code>：不用管</li><li><code>layouts</code>：<a href="#%E8%87%AA%E5%AE%9A%E4%B9%89%E9%A1%B5%E9%9D%A2%E5%B8%83%E5%B1%80-htmlcss">自定义的 HTML</a></li><li><code>public</code>：项目导出文件 - 用于静态网页部署</li><li><code>static</code>：存放图片</li><li><code>themes</code>：主题 - <a href="https://github.com/adityatelange/hugo-PaperMod/">PaperMod</a></li></ul><p>进入 <code>themes/PaperMod</code> 则是 <code>PaperMod</code> 的相关代码，比较主要的目录有：</p><ul><li><code>assets</code>：<code>PaperMod</code> 的 CSS 和 JavaScript 代码</li><li><code>layouts</code>：<code>PaperMod</code> 的 HTML</li></ul><h3 id="自定义博文目录"><a href="#自定义博文目录" class="headerlink" title="自定义博文目录"><a href="#自定义博文目录"><a href="#自定义博文目录" class="headerlink" title="自定义博文目录" class="headerlink" title="自定义博文目录"></a></a>自定义博文目录</h3><p><code>content</code> 里每个文件夹内都可以添加一个 <code>_index.md</code> 文件，该文件里面可以加 Front Matter 自定义（多语言）标题，如：</p><pre><code class="language-yaml">---hidemeta: truetitle: 博客---</code></pre><p>初始项目文件夹结构如下：</p><pre><code>.├── config.yml├── content/│   ├── archives.md│   ├── search.md│   └── posts/├── static/│   ├── img/│   └── ...└── themes    └── PaperMod</code></pre><h2 id="Config-yml"><a href="#Config-yml" class="headerlink" title="Config.yml"><a href="#Config-yml"><a href="#Config-yml" class="headerlink" title="Config.yml" class="headerlink" title="Config.yml"></a></a>Config.yml</h2><ul><li><a href="https://www.sulvblog.cn/posts/blog/build_hugo/">Sulv’s Blog ：hugo博客搭建 | PaperMod主题</a></li><li><a href="https://github.com/adityatelange/hugo-PaperMod/wiki/Features#intro">PaperMod 官方文档</a></li></ul><h3 id="多语言-config-yml-设置"><a href="#多语言-config-yml-设置" class="headerlink" title="多语言 config.yml 设置"><a href="#多语言-config-yml-设置"><a href="#多语言-config-yml-设置" class="headerlink" title="多语言 config.yml 设置" class="headerlink" title="多语言 config.yml 设置"></a></a>多语言 config.yml 设置</h3><p>如果我们想要使用多语言（中英为例），就需要在 <code>content</code> 文件夹下准备两个文件夹，例如 <code>Chinese</code> 和 <code>English</code> ，一个放中文，另一个放英文。</p><p>在 <code>config.yml</code> 中需要做以下修改：</p><pre><code class="language-yaml">defaultContentLanguage: endefaultContentLanguageInSubdir: truelanguages:    en:        languageName: &quot;English&quot;        contentDir: content/English    zh:    languageName: &quot;中文&quot;        contentDir: content/Chinese</code></pre><h3 id="双语双模式-config-yml-设置"><a href="#双语双模式-config-yml-设置" class="headerlink" title="双语双模式 config.yml 设置"><a href="#双语双模式-config-yml-设置"><a href="#双语双模式-config-yml-设置" class="headerlink" title="双语双模式 config.yml 设置" class="headerlink" title="双语双模式 config.yml 设置"></a></a>双语双模式 config.yml 设置</h3><p>一开始照本宣科做中英一式两份的个人网站，<a href="https://www.yunyitang.me/2023-review/">后来随着</a> 扩展 <a href="https://www.yunyitang.me/friends/">友链</a>、多读多看，加之自己在英工作，逐渐调整了个站中英页面的各自侧重。</p><p><a href="https://www.yunyitang.me/about/">英文页面</a> 有求职相关，主页保持 portfolio 的简洁， 选用了 <a href="https://github.com/adityatelange/hugo-PaperMod/wiki/Features#profile-mode">Profile Mode</a>：</p><pre><code class="language-yaml">defaultContentLanguage: en # 默认语言defaultContentLanguageInSubdir: true # 默认语言是否放在子目录中languages:  en:    languageName: English    languageCode: en    contentDir: content/English    menu:      main:        - identifier: about          name: About          url: /en/about/          weight: 10        - identifier: project          name: Project          url: /en/project/          weight: 20        - identifier: resume          name: Resume          url: /en/resume.pdf          weight: 30        - identifier: blog          name: Blog          url: /en/blog/          weight: 40        - identifier: tags          name: 🕹️          url: /en/tags/          weight: 50        - identifier: search          name: Search          url: /en/search/          weight: 60    params:      profileMode:        enabled: true        title: Yunyi Tang        subtitle: Little squirrel Hopping around        imageUrl: &#39;img/Avatar.png&#39;        imageWidth: 150        imageHeight: 150        buttons:          - name: Project            url: /en/project/          - name: Resume            url: /en/resume.pdf          - name: Log            url: /en/blog/tech/log/      socialIcons:        - name: github          url: &#39;https://github.com/yunyit&#39;        - name: linkedin          url: &#39;https://www.linkedin.com/in/yunyitang820/&#39;        - name: instagram          url: &#39;https://www.instagram.com/yunyi_cam/&#39;        - name: goodreads          url: &#39;https://www.goodreads.com/user/show/161105203-yunyi-tang&#39;        - name: email          url: &#39;mailto:yunyi.tang.820@gmail.com&#39;</code></pre><p><a href="https://www.yunyitang.me/about/">中文页面</a> 则更侧重博客输出，魔改了 <a href="https://github.com/adityatelange/hugo-PaperMod/wiki/Features#home-info-mode">Home-Info Mode</a>：</p><pre><code class="language-yaml">defaultContentLanguage: en # 默认语言defaultContentLanguageInSubdir: true # 默认语言是否放在子目录中languages:  en: # 参照上节  zh:    languageName: 中文    languageCode: zh    contentDir: content/Chinese    menu:      main:        - identifier: about          name: 关于          url: /zh/about/          weight: 10        - identifier: log          name: 建站          url: /zh/log/          weight: 20        - identifier: blog          name: 博客          url: /zh/blog/          weight: 30        - identifier: links          name: 友链          url: /zh/links/          weight: 40        - identifier: tags          name: 🕹️          url: /zh/tags/          weight: 50        - identifier: search          name: 搜索          url: /zh/search/          weight: 60        - identifier: travellings          name: 开往          url: https://www.travellings.cn/go.html          weight: 70    params:      homeInfoParams:        enabled: true        Title: Yunyi&#39;s Blog        Content: const desc = &quot;Little squirrel Hopping around&quot;;        imageUrl: &#39;img/Avatar.png&#39;        imageWidth: 110        imageHeight: 110      socialIcons:        - name: github          url: &#39;https://github.com/yunyit&#39;        - name: instagram          url: &#39;https://www.instagram.com/yunyi_cam/&#39;        - name: goodreads          url: &#39;https://www.goodreads.com/user/show/161105203-yunyi-tang&#39;        - name: email          url: &#39;mailto:yunyi.tang.820@gmail.com&#39;</code></pre><h2 id="创建文章"><a href="#创建文章" class="headerlink" title="创建文章"><a href="#创建文章"><a href="#创建文章" class="headerlink" title="创建文章" class="headerlink" title="创建文章"></a></a>创建文章</h2><ol><li>在终端输入 <code>hugo new 文章名称.md</code>，在 <code>content</code> 文件夹下创建 markdown 文件；</li><li>但我懒，直接在对应 <code>content</code> 文件夹下新建 <code>文章名称.md</code>；</li></ol><h3 id="自定义文章-Front-Matter"><a href="#自定义文章-Front-Matter" class="headerlink" title="自定义文章 Front Matter"><a href="#自定义文章-Front-Matter"><a href="#自定义文章-Front-Matter" class="headerlink" title="自定义文章 Front Matter" class="headerlink" title="自定义文章 Front Matter"></a></a>自定义文章 Front Matter</h3><p>文章头部信息可以修改这篇文章的属性，建议按照 <a href="https://www.sulvblog.cn/posts/blog/build_hugo/">Sulv’s Blog ：hugo博客搭建 | PaperMod主题</a> 进行配置。</p><p>我的 Front Matter 如下，在 <a href="https://github.com/adityatelange/hugo-PaperMod/">PaperMod</a> 默认基础上稍加修改，供参考:</p><pre><code class="language-yaml">---Tags: # 标签数量丰俭由人  - PaperMod  - Hugo  - 建站TocOpen: trueauthor:  - Yunyicomments: truecover:  alt: &#39;&#39;  caption: &#39;&#39;  image: &#39;&#39;  relative: falsedate: &#39;2024-01-15&#39;description: &#39;&#39; # 为页头简介，省略disableShare: truedraft: false # 未发布时为 truehidemeta: falselastmod: &#39;2024-01-15&#39;showToc: trueshowbreadcrumbs: trueslug: &#39;&#39;title: Hugo + PaperMod 自定义 Homeinfo 中英博客搭建weight: null # 若置顶则为对应数字---</code></pre><h2 id="本地预览"><a href="#本地预览" class="headerlink" title="本地预览"><a href="#本地预览"><a href="#本地预览" class="headerlink" title="本地预览" class="headerlink" title="本地预览"></a></a>本地预览</h2><ol><li>在终端输入 <code>hugo server -D</code> 启动。</li><li>启动服务器后，打开浏览器，本地预览网址为 <code>localhost:1313</code>。</li></ol><h2 id="网站部署"><a href="#网站部署" class="headerlink" title="网站部署"><a href="#网站部署"><a href="#网站部署" class="headerlink" title="网站部署" class="headerlink" title="网站部署"></a></a>网站部署</h2><p><a href="https://pages.github.com/">Github Pages</a> 发布静态博客 -</p><p>优点：</p><ul><li>仅需一个 GitHub 账号和简单配置即可将静态博客发布到 GitHub Pages；</li><li>没有维护的时间成本, 可以将精力更多的放到博客内容本身上去；</li><li>无需备案；</li><li>无需 SSL 证书；</li></ul><p>缺点：</p><ul><li>访问速度较慢</li><li>访问速度较慢</li><li>访问速度较慢</li></ul><h2 id="自定义页面布局-HTML-CSS"><a href="#自定义页面布局-HTML-CSS" class="headerlink" title="自定义页面布局 HTML&#x2F;CSS"><a href="#自定义页面布局-HTML-CSS"><a href="#自定义页面布局-HTML-CSS" class="headerlink" title="自定义页面布局 HTML&#x2F;CSS" class="headerlink" title="自定义页面布局 HTML&#x2F;CSS"></a></a>自定义页面布局 HTML&#x2F;CSS</h2><p>参考 <a href="https://adityatelange.github.io/hugo-PaperMod/posts/papermod/papermod-faq/#override-theme-template">PaperMod官方文档</a>：</p><p>通过 <code>Hugo</code> 的查找顺序，您可以覆盖主题的任何部分。比如，自定义 <code>footer</code>，只需复制列表模板即可：</p><pre><code>your-site/themes/papermod/layouts/partials/footer.html</code></pre><p>然后粘贴到自己的 <code>layout</code> 文件夹下：</p><pre><code>your-site/layouts/partials/footer.html</code></pre><p>然后就可以对 <code>footer</code> 进行任何修改了。 <code>Hugo</code> 创建网站时，将使用 <code>your-site/layouts/partials/</code> 里的 <code>footer.html</code>，而不是 <code>your-site/themes/papermod/layouts/partials/</code> 里的 <code>footer.html</code>。</p><blockquote><p><code>git pull</code> 更新 <code>your-site/themes/papermod/</code> 之后，记得也更新对应的自定义 html css，眼瞎 debug 体会！</p></blockquote><h3 id="Home-Info-主页添加头像"><a href="#Home-Info-主页添加头像" class="headerlink" title="Home-Info 主页添加头像"><a href="#Home-Info-主页添加头像"><a href="#Home-Info-主页添加头像" class="headerlink" title="Home-Info 主页添加头像" class="headerlink" title="Home-Info 主页添加头像"></a></a>Home-Info 主页添加头像</h3><p>修改在 <code>layouts/partials/home_info.html</code>：</p><pre><code class="language-html">&#123;&#123;- with site.Params.homeInfoParams &#125;&#125;&lt;article class=&quot;first-entry home-info&quot;&gt;    &#123;&#123;- with site.Params.homeInfoParams &#125;&#125;    &lt;div class=&quot;profile_inner&quot;&gt;        &#123;&#123;- if .imageUrl -&#125;&#125;        &#123;&#123;- $img := "" &#125;&#125;        &#123;&#123;- if not (urls.Parse .imageUrl).IsAbs &#125;&#125;        &#123;&#123;- $img = resources.Get .imageUrl &#125;&#125;        &#123;&#123;- end &#125;&#125;        &#123;&#123;- if $img &#125;&#125;        &#123;&#123;- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -&#125;&#125;        &#123;&#123;- if hugo.IsExtended -&#125;&#125;        &#123;&#123;- $processableFormats = $processableFormats | append "webp" -&#125;&#125;        &#123;&#123;- end -&#125;&#125;        &#123;&#123;- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) &#125;&#125;        &#123;&#123;- if and (in $processableFormats $img.MediaType.SubType) (eq $prod true)&#125;&#125;        &#123;&#123;- if (not (and (not .imageHeight) (not .imageWidth))) &#125;&#125;        &#123;&#123;- $img = $img.Resize (printf "%dx%d" .imageWidth .imageHeight) &#125;&#125;        &#123;&#123;- else if .imageHeight &#125;&#125;        &#123;&#123;- $img = $img.Resize (printf "x%d" .imageHeight) &#125;&#125;        &#123;&#123; else if .imageWidth &#125;&#125;        &#123;&#123;- $img = $img.Resize (printf "%dx" .imageWidth) &#125;&#125;        &#123;&#123; else &#125;&#125;        &#123;&#123;- $img = $img.Resize "50x50" &#125;&#125;        &#123;&#123;- end &#125;&#125;        &#123;&#123;- end &#125;&#125;        &lt;a href=&quot;https://www.yunyitang.me/img/Avatar.png&quot; &gt;&lt;img id=&quot;home-info-avatar&quot; draggable=&quot;false&quot; src=&quot;&#123;&#123; $img.Permalink &#125;&#125;&quot; alt=&quot;&#123;&#123; .imageTitle | default "profile image" &#125;&#125;&quot; title=&quot;&#123;&#123; .imageTitle &#125;&#125;&quot;        height=&quot;&#123;&#123; .imageHeight | default 50 &#125;&#125;&quot; width=&quot;&#123;&#123; .imageWidth | default 100 &#125;&#125;&quot; style=&quot;border-radius: 50%!important;        background-color: #fff; padding: 2px;&quot; /&gt;&lt;/a&gt;        &#123;&#123;- else &#125;&#125;        &lt;a href=&quot;https://www.yunyitang.me/img/Avatar.png&quot; &gt;&lt;img id=&quot;home-info-avatar&quot; draggable=&quot;false&quot; src=&quot;&#123;&#123; .imageUrl | absURL &#125;&#125;&quot; alt=&quot;&#123;&#123; .imageTitle | default "profile image" &#125;&#125;&quot; title=&quot;&#123;&#123; .imageTitle &#125;&#125;&quot;        height=&quot;&#123;&#123; .imageHeight | default 50 &#125;&#125;&quot; width=&quot;&#123;&#123; .imageWidth | default 100 &#125;&#125;&quot; style=&quot;border-radius: 50%!important;        background-color: #fff; padding: 2px;&quot; /&gt;&lt;/a&gt;        &#123;&#123;- end &#125;&#125;        &#123;&#123;- end &#125;&#125;    &lt;/div&gt;    &#123;&#123;- end &#125;&#125;    <!-- original codes -->&lt;/article&gt;&#123;&#123;- end -&#125;&#125;</code></pre><h2 id="自定义-hover"><a href="#自定义-hover" class="headerlink" title="自定义 hover"><a href="#自定义-hover"><a href="#自定义-hover" class="headerlink" title="自定义 hover" class="headerlink" title="自定义 hover"></a></a>自定义 hover</h2><p>主要在 <code>assets/css/common/header.css</code> 中修改：</p><h3 id="Home-主页键-hover"><a href="#Home-主页键-hover" class="headerlink" title="Home 主页键 hover"><a href="#Home-主页键-hover"><a href="#Home-主页键-hover" class="headerlink" title="Home 主页键 hover" class="headerlink" title="Home 主页键 hover"></a></a>Home 主页键 hover</h3><p>为页面左上角的 <code>Home</code> 添加 hover：</p><pre><code class="language-css">.logo a:hover &#123;  transition: 0.15s;  color: grey;&#125;</code></pre><h3 id="社交媒体-hover"><a href="#社交媒体-hover" class="headerlink" title="社交媒体 hover"><a href="#社交媒体-hover"><a href="#社交媒体-hover" class="headerlink" title="社交媒体 hover" class="headerlink" title="社交媒体 hover"></a></a>社交媒体 hover</h3><p>以下为本人所标注的 5 个社交媒体标识的自定义颜色，选了各软件的主题色：</p><pre><code class="language-css">svg:hover &#123;  transition: 0.15s;&#125;.social-icons a[href*=&#39;github&#39;]:hover svg &#123;  color: #333 !important;&#125;.social-icons a[href*=&#39;linkedin&#39;]:hover svg &#123;  color: #0a66c2 !important;&#125;.social-icons a[href*=&#39;instagram&#39;]:hover svg &#123;  color: #d62976 !important;&#125;.social-icons a[href*=&#39;goodreads&#39;]:hover svg &#123;  color: #75420e !important;&#125;.social-icons a[href^=&#39;mailto&#39;]:hover svg &#123;  color: #f2a60c !important;&#125;</code></pre><h3 id="黑夜模式和白天模式的-hover"><a href="#黑夜模式和白天模式的-hover" class="headerlink" title="黑夜模式和白天模式的 hover"><a href="#黑夜模式和白天模式的-hover"><a href="#黑夜模式和白天模式的-hover" class="headerlink" title="黑夜模式和白天模式的 hover" class="headerlink" title="黑夜模式和白天模式的 hover"></a></a>黑夜模式和白天模式的 hover</h3><pre><code class="language-css">#moon:hover &#123;  transition: 0.15s;  color: #1772b4;&#125;#sun:hover &#123;  transition: 0.15s;  color: #f4a83a;&#125;</code></pre><h3 id="主页-menu-中链接-hover"><a href="#主页-menu-中链接-hover" class="headerlink" title="主页 menu 中链接 hover"><a href="#主页-menu-中链接-hover"><a href="#主页-menu-中链接-hover" class="headerlink" title="主页 menu 中链接 hover" class="headerlink" title="主页 menu 中链接 hover"></a></a>主页 menu 中链接 hover</h3><pre><code class="language-css">#menu a:hover &#123;  transition: 0.15s;  color: grey;&#125;</code></pre><h3 id="Profile-mode-按钮-hover"><a href="#Profile-mode-按钮-hover" class="headerlink" title="Profile mode 按钮 hover"><a href="#Profile-mode-按钮-hover"><a href="#Profile-mode-按钮-hover" class="headerlink" title="Profile mode 按钮 hover" class="headerlink" title="Profile mode 按钮 hover"></a></a>Profile mode 按钮 hover</h3><p>在 <code>/assets/css/common/profile-mode.css</code> 中修改：</p><pre><code class="language-css">.button:hover &#123;  -webkit-transform: scale(1.1);  -moz-transform: scale(1.1);  -ms-transform: scale(1.1);  -o-transform: scale(1.1);  /* box-shadow: 0 0 0 1px grey; */  transform: scale(1.1) translateZ(0) translate3d(0, 0, 0) rotate(0.01deg);&#125;</code></pre><h2 id="目录栏目放侧边"><a href="#目录栏目放侧边" class="headerlink" title="目录栏目放侧边"><a href="#目录栏目放侧边"><a href="#目录栏目放侧边" class="headerlink" title="目录栏目放侧边" class="headerlink" title="目录栏目放侧边"></a></a>目录栏目放侧边</h2><p><a href="https://www.sulvblog.cn/posts/blog/hugo_toc_side/">Sulv’s Blog：Hugo博客目录放在侧边 | PaperMod主题</a></p><h2 id="修改字体"><a href="#修改字体" class="headerlink" title="修改字体"><a href="#修改字体"><a href="#修改字体" class="headerlink" title="修改字体" class="headerlink" title="修改字体"></a></a>修改字体</h2><p>按喜好修改字体如下：</p><h3 id="修改全局字体"><a href="#修改全局字体" class="headerlink" title="修改全局字体"><a href="#修改全局字体"><a href="#修改全局字体" class="headerlink" title="修改全局字体" class="headerlink" title="修改全局字体"></a></a>修改全局字体</h3><p>在 <a href="https://fonts.google.com/">Google Fonts</a> 中查询开源字体，我目前的文章字体为 <a href="https://www.jetbrains.com/lp/mono/">JetBrains Mono</a>。Google Fonts 会生成 HTML 和 css ，将 HTML 插入到 <code>layouts/partials/extend_head.html</code> 中，将 CSS 插入到 <code>assets/css/extended/blank.css</code>：</p><pre><code class="language-css">body &#123;  font-family: &#39;JetBrains Mono&#39;, monospace;  font-size: 1rem;  line-height: 1.5;  margin: 0;&#125;</code></pre><h3 id="修改代码字体"><a href="#修改代码字体" class="headerlink" title="修改代码字体"><a href="#修改代码字体"><a href="#修改代码字体" class="headerlink" title="修改代码字体" class="headerlink" title="修改代码字体"></a></a>修改代码字体</h3><p>与全局字体类似，区别为 CSS 代码插入 <code>assets/css/extended/blank.css</code> 的位置不同：</p><pre><code class="language-css">.post-content pre,code &#123;  font-family: &#39;JetBrains Mono&#39;, monospace;  font-size: 13;  line-height: 1.2;  max-height: 40rem;&#125;</code></pre><h2 id="代码外观自定义"><a href="#代码外观自定义" class="headerlink" title="代码外观自定义"><a href="#代码外观自定义"><a href="#代码外观自定义" class="headerlink" title="代码外观自定义" class="headerlink" title="代码外观自定义"></a></a>代码外观自定义</h2><p>按个人喜好配置如下：</p><h3 id="代码高亮"><a href="#代码高亮" class="headerlink" title="代码高亮"><a href="#代码高亮"><a href="#代码高亮" class="headerlink" title="代码高亮" class="headerlink" title="代码高亮"></a></a>代码高亮</h3><p>最近一次 <a href="https://github.com/adityatelange/hugo-PaperMod/pull/1364">更新</a>，改用 <code>Hugo</code> 内置的 <a href="https://xyproto.github.io/splash/docs/all.html">Chroma</a>，CSS 文件位置更改为 <code>assets/css/includes/chroma-styles.css</code>。对应配置文件 <code>config.yml</code> 内容为：</p><pre><code class="language-yaml">markup:  markup.highlight:    noclasses: false</code></pre><p>配合本站的橙色系，我选择了 <a href="https://xyproto.github.io/splash/docs/trac.html">trac</a>，并用 <code>Hugo</code> 安装：</p><pre><code class="language-shell">hugo gen chromastyles --style=trac &gt; assets/css/includes/chroma-styles.css</code></pre><p>其中，所有 <code>#bb8844</code> 配色更换为 <a href="https://color-term.com/color/taocihong-e16723/">陶瓷红</a> <code>#E16723</code>，配合本站的 <a href="#%E4%BF%AE%E6%94%B9%E9%93%BE%E6%8E%A5%E9%A2%9C%E8%89%B2">超链接配色</a>。<code>assets/css/includes/chroma-mod.css</code> 文件保持原设定，记得在 <code>git pull</code> 之后更新对应的 <a href="#%E8%87%AA%E5%AE%9A%E4%B9%89%E9%A1%B5%E9%9D%A2%E5%B8%83%E5%B1%80-htmlcss">CSS 自定义</a>文件夹就好。</p><p>目前在 <code>assets/css/extended/blank.css</code> 的配置为：</p><pre><code class="language-css">.post-content pre code,.post-content .highlight:not(table),.post-content .highlight table &#123;  background: unset !important;  background-color: var(--code-bg) !important; /* 兼容日夜显示模式 */  color: var(--secondary) !important; /* 兼容日夜显示模式 */&#125;</code></pre><p>此更新的进度具体看这个 <a href="https://github.com/adityatelange/hugo-PaperMod/issues/1386">issue</a>。</p><h3 id="代码边框圆角"><a href="#代码边框圆角" class="headerlink" title="代码边框圆角"><a href="#代码边框圆角"><a href="#代码边框圆角" class="headerlink" title="代码边框圆角" class="headerlink" title="代码边框圆角"></a></a>代码边框圆角</h3><p>在 <code>/assets/css/common/post-single.css</code> 中修改：</p><pre><code class="language-css">.post-content .highlight pre &#123;  background-color: var(--theme) !important;  margin: 0;&#125;</code></pre><h2 id="修改链接颜色"><a href="#修改链接颜色" class="headerlink" title="修改链接颜色"><a href="#修改链接颜色"><a href="#修改链接颜色" class="headerlink" title="修改链接颜色" class="headerlink" title="修改链接颜色"></a></a>修改链接颜色</h2><p>参考 <a href="https://www.lvbibir.cn/posts/blog/hello-hugo/#%E4%BF%AE%E6%94%B9%E9%93%BE%E6%8E%A5%E9%A2%9C%E8%89%B2">lvbibir’s Blog：Hello, hugo!</a> ，我选择了 <a href="https://color-term.com/color/taocihong-e16723/">陶瓷红</a> <code>#E16723</code> rgb(225, 103, 35)。</p><pre><code class="language-html">&lt;a href=&quot;&#123;&#123; .Destination | safeURL &#125;&#125;&quot;&#123;&#123; with .Title&#125;&#125; title=&quot;&#123;&#123; . &#125;&#125;&quot;&#123;&#123; end &#125;&#125;&#123;&#123; if strings.HasPrefix .Destination "http" &#125;&#125; target=&quot;_blank&quot; rel=&quot;noopener&quot; style=&quot;color:#E16723&quot;;&#123;&#123; end &#125;&#125;&gt;&#123;&#123; .Text | safeHTML &#125;&#125;&lt;/a&gt;</code></pre><h2 id="添加评论"><a href="#添加评论" class="headerlink" title="添加评论"><a href="#添加评论"><a href="#添加评论" class="headerlink" title="添加评论" class="headerlink" title="添加评论"></a></a>添加评论</h2><p>一开始基于 <a href="https://www.mongodb.com/cloud/atlas/register">MongoDB</a> 和 <a href="https://vercel.com/signup">Vercel</a> 部署 <a href="https://twikoo.js.org/en/intro.html">twikoo</a> 评论系统，后来更换为 <a href="https://disqus.com/">Disqus</a> 没调好，还是 <a href="https://giscus.app/">gitcus</a> 吧！</p><p>为适应日夜主题调整，在（chatgpt 帮助下）在 <code>layouts/partials/comments.html</code> 设置如下：</p><pre><code class="language-html">&lt;script&gt;  function createGiscusScript(data) &#123;    const giscusScript = document.createElement(&#39;script&#39;);    // 动态设置脚本属性    Object.entries(data).forEach(([key, value]) =&gt; giscusScript.setAttribute(key, value));    // 将脚本标签添加到 &lt;article&gt; 中    document.querySelector(&#39;article&#39;).appendChild(giscusScript);    // 切换主题时更新 giscus 主题    const toggle = document.querySelector(&#39;label[for=&quot;switch_default&quot;]&#39;);    if (toggle) &#123;      toggle.addEventListener(&#39;click&#39;, function () &#123;        // 根据 body 类动态设置 giscus 主题        const theme = document.body.classList.contains(&#39;dark&#39;) ? &#39;transparent_dark&#39; : &#39;light&#39;;        giscusScript.setAttribute(&#39;data-theme&#39;, theme);        // 给 giscus iframe发送消息，更新主题        sendMessage(&#123; setConfig: &#123; theme &#125; &#125;);      &#125;);    &#125;  &#125;  function sendMessage(message) &#123;    const iframe = document.querySelector(&#39;iframe.giscus-frame&#39;);    if (iframe) &#123;      iframe.contentWindow.postMessage(&#123; giscus: message &#125;, &#39;https://giscus.app&#39;);    &#125;  &#125;  document.addEventListener(&#39;DOMContentLoaded&#39;, function () &#123;    // 定义 Giscus 数据属性    const giscusAttributes = &#123;      src: &#39;https://giscus.app/client.js&#39;,      &#39;data-repo&#39;: &#39;yunyit/yunyit.github.io&#39;,      &#39;data-repo-id&#39;: &#39;R_kgDOKqkPYw&#39;,      &#39;data-category&#39;: &#39;Comments&#39;,      &#39;data-category-id&#39;: &#39;DIC_kwDOKqkPY84CceDi&#39;,      &#39;data-mapping&#39;: &#39;url&#39;,      &#39;data-strict&#39;: &#39;0&#39;,      &#39;data-reactions-enabled&#39;: &#39;1&#39;,      &#39;data-emit-metadata&#39;: &#39;0&#39;,      &#39;data-input-position&#39;: &#39;top&#39;,      &#39;data-lang&#39;: &#39;en&#39;,      crossorigin: &#39;anonymous&#39;,      async: &#39;&#39;,    &#125;;    // 根据 body 类设置初始 giscus 主题    giscusAttributes[&#39;data-theme&#39;] = document.body.classList.contains(&#39;dark&#39;)      ? &#39;transparent_dark&#39;      : &#39;light&#39;;    // 调用函数，使用属性创建 giscus 脚本    createGiscusScript(giscusAttributes);    // body 类变化时动态更新 giscus 主题    const bodyObserver = new MutationObserver(() =&gt; &#123;      const theme = document.body.classList.contains(&#39;dark&#39;) ? &#39;transparent_dark&#39; : &#39;light&#39;;      sendMessage(&#123; setConfig: &#123; theme &#125; &#125;);    &#125;);    bodyObserver.observe(document.body, &#123; attributes: true, attributeFilter: [&#39;class&#39;] &#125;);  &#125;);&lt;/script&gt;</code></pre><p>在 <code>assets/css/extended/blank.css</code> 调整文末导航栏和评论区的距离：</p><pre><code class="language-css">.paginav &#123;  margin-bottom: 45px;&#125;</code></pre><h2 id="Shortcodes-扩展功能-插件"><a href="#Shortcodes-扩展功能-插件" class="headerlink" title="Shortcodes 扩展功能&#x2F;插件"><a href="#Shortcodes-扩展功能-插件"><a href="#Shortcodes-扩展功能-插件" class="headerlink" title="Shortcodes 扩展功能&#x2F;插件" class="headerlink" title="Shortcodes 扩展功能&#x2F;插件"></a></a>Shortcodes 扩展功能&#x2F;插件</h2><ul><li><a href="https://www.sulvblog.cn/posts/blog/shortcodes/">bilibili、YouTube、豆瓣阅读和电影卡片</a></li><li><a href="https://gist.github.com/j-un/e7d0b3118556479392bd2269f7059242">Spotify</a></li></ul><h2 id="Tags-标签云"><a href="#Tags-标签云" class="headerlink" title="Tags 标签云"><a href="#Tags-标签云"><a href="#Tags-标签云" class="headerlink" title="Tags 标签云" class="headerlink" title="Tags 标签云"></a></a>Tags 标签云</h2><p><a href="https://www.sulvblog.cn/posts/blog/hugo_tag_cloud/">Sulv’s Blog：Hugo博客添加标签云</a></p><h2 id="添加友链"><a href="#添加友链" class="headerlink" title="添加友链"><a href="#添加友链"><a href="#添加友链" class="headerlink" title="添加友链" class="headerlink" title="添加友链"></a></a>添加友链</h2><p><a href="https://www.sulvblog.cn/posts/blog/hugo_link/">Sulv’s Blog：Hugo博客添加友链</a></p><h2 id="流量统计"><a href="#流量统计" class="headerlink" title="流量统计"><a href="#流量统计"><a href="#流量统计" class="headerlink" title="流量统计" class="headerlink" title="流量统计"></a></a>流量统计</h2><p>我使用了 <a href="https://analytics.eu.umami.is/share/mNvu6TLrju52UZ97/Yunyi's%20Blog">umami</a> 流量统计，并添加在页脚 <code>footer</code> 。</p><p>在 <code>layouts/partials/footer.html</code> 中修改：</p><pre><code class="language-html">&#123;&#123;- if not (.Param "hideFooter") &#125;&#125;&lt;footer class=&quot;footer&quot;&gt;  <!-- other codes -->  &lt;span&gt;    &lt;a      href=&quot;https://analytics.eu.umami.is/share/mNvu6TLrju52UZ97/Yunyi&#39;s%20Blog&quot;      rel=&quot;noopener noreferrer&quot;      target=&quot;_blank&quot;      &gt;Analytics&lt;/a    &gt;  &lt;/span&gt;&lt;/footer&gt;&#123;&#123;- end &#125;&#125;</code></pre><h2 id="知识共享协议"><a href="#知识共享协议" class="headerlink" title="知识共享协议"><a href="#知识共享协议"><a href="#知识共享协议" class="headerlink" title="知识共享协议" class="headerlink" title="知识共享协议"></a></a>知识共享协议</h2><p>从 <a href="https://chooser-beta.creativecommons.org/">官方指南</a> 选自适合自己的知识共享协议，并在 <code>layouts/partials/footer.html</code> 自定义 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans">CC BY-NC-SA 4.0</a> 页脚：</p><pre><code class="language-html">&#123;&#123;- if not (.Param "hideFooter") &#125;&#125;&lt;footer class=&quot;footer&quot;&gt;  <!-- other codes -->  &lt;span xmlns:cc=&quot;http://creativecommons.org/ns#&quot; xmlns:dct=&quot;http://purl.org/dc/terms/&quot;&gt;    Licensed under    &lt;a      href=&quot;http://creativecommons.org/licenses/by-nc-sa/4.0/?ref=chooser-v1&quot;      target=&quot;_blank&quot;      rel=&quot;license noopener noreferrer&quot;      style=&quot;display:inline-block;&quot;      &gt;CC BY-NC-SA 4.0 &gt;&lt;/a    &gt;&lt;/span  &gt;  &lt;span&gt;    &lt;a      href=&quot;https://analytics.eu.umami.is/share/mNvu6TLrju52UZ97/Yunyi&#39;s%20Blog&quot;      rel=&quot;noopener noreferrer&quot;      target=&quot;_blank&quot;      &gt;Analytics&lt;/a    &gt;  &lt;/span&gt;&lt;/footer&gt;&#123;&#123;- end &#125;&#125;</code></pre>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;从入门到踩坑到从坑里爬起来！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;安装&quot;&gt;&lt;a href=&quot;#安装&quot; class=&quot;headerlink&quot; title=&quot;安装&quot;&gt;&lt;/a&gt;安装&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;安装 &lt;code&gt;Hugo&lt;/code&gt;：安装 &lt;code&gt;Hugo&lt;/code&gt; 需要利用一个包管理工具。对于 MacOS 系统 &lt;code&gt;Hugo&lt;/code&gt; 可以直接用 &lt;code&gt;Homebrew&lt;/code&gt; 来安装，打开终端输入&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;brew install hugo
&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;安装 &lt;code&gt;PaperMod&lt;/code&gt;：根据 &lt;code&gt;PaperMod&lt;/code&gt; 的 &lt;a href=&quot;https://github.com/adityatelange/hugo-PaperMod/wiki/Installation0&quot;&gt;官方文档&lt;/a&gt; 配置。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;文件夹管理&quot;&gt;&lt;a href=&quot;#文件夹管理&quot; class=&quot;headerlink&quot; title=&quot;文件夹管理&quot;&gt;&lt;/a&gt;文件夹管理&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;archetypes&lt;/code&gt;：不用管&lt;/li&gt;
&lt;li&gt;&lt;code&gt;asset&lt;/code&gt;：&lt;a href=&quot;#%E8%87%AA%E5%AE%9A%E4%B9%89%E9%A1%B5%E9%9D%A2%E5%B8%83%E5%B1%80-htmlcss&quot;&gt;自定义的 CSS 和 JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;content&lt;/code&gt;：用于放博客内容&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="技术" scheme="https://yunyitang.me/categories/tech/"/>
    
    
    <category term="博客" scheme="https://yunyitang.me/tag/%E5%8D%9A%E5%AE%A2/"/>
    
    <category term="PaperMod" scheme="https://yunyitang.me/tag/PaperMod/"/>
    
    <category term="Hugo" scheme="https://yunyitang.me/tag/Hugo/"/>
    
  </entry>
  
  <entry>
    <title>YAML 数据结构和语法</title>
    <link href="https://yunyitang.me/yaml-grammar-data-structure/"/>
    <id>https://yunyitang.me/yaml-grammar-data-structure/</id>
    <published>2024-01-13T23:54:26.000Z</published>
    <updated>2024-01-31T13:54:26.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>认知始于 Markdown 文件，不知道终于哪儿。</p></blockquote><h2 id="定义"><a href="#定义" class="headerlink" title="定义"><a href="#定义"><a href="#定义" class="headerlink" title="定义" class="headerlink" title="定义"></a></a>定义</h2><blockquote><p>YAML Ain’t a Markup Language &#x2F; Yet Another Markup Language</p></blockquote><p>文件后缀：<code>.yml</code> 或 <code>.yaml</code></p><p>注释：井号 或 哈希符号 <code>#</code></p><p>结构：映射或列表，遵循层次结构，具体取决于缩进以及定义键值的方式。</p><span id="more"></span><p>语法：</p><ul><li>大小写敏感；</li><li>使用缩进表示层级关系；</li><li>缩进时不允许使用 <code>Tab</code> 键，只允许使用空格；</li><li>缩进的空格数目不重要，只要相同层级的元素左侧对齐即可；</li></ul><h2 id="应用"><a href="#应用" class="headerlink" title="应用"><a href="#应用"><a href="#应用" class="headerlink" title="应用" class="headerlink" title="应用"></a></a>应用</h2><p>配置文件 configuration files -</p><h3 id="YAML-JSON"><a href="#YAML-JSON" class="headerlink" title="YAML &#x2F; JSON"><a href="#YAML-JSON"><a href="#YAML-JSON" class="headerlink" title="YAML &#x2F; JSON" class="headerlink" title="YAML &#x2F; JSON"></a></a>YAML &#x2F; JSON</h3><p>相比 JSON，因为 YAML 有更好的可读性，对用户更友好，所以通常建议用 YAML 来编写配置文件，尽管它们在大多数情况下可以互换使用。</p><h2 id="数据类型"><a href="#数据类型" class="headerlink" title="数据类型"><a href="#数据类型"><a href="#数据类型" class="headerlink" title="数据类型" class="headerlink" title="数据类型"></a></a>数据类型</h2><ul><li>对象 mapping&#x2F;hash&#x2F;dictionary：键值对的集合；</li><li>数组 sequence&#x2F;list：一组按次序排列的值；数组和对象可以构成复合结构；</li><li>纯量：最基本的，不可再分的值；</li></ul><h3 id="对象"><a href="#对象" class="headerlink" title="对象"><a href="#对象"><a href="#对象" class="headerlink" title="对象" class="headerlink" title="对象"></a></a>对象</h3><p>对象的一组键值对，使用冒号结构表示。</p><pre><code class="language-yaml">animal: pets</code></pre><p>转为 JavaScript 如下：</p><pre><code class="language-JavaScript">{ animal: &#39;pets&#39; }</code></pre><p>Yaml 也允许另一种写法，将所有键值对写成一个行内对象。</p><pre><code class="language-yaml">hash: { name: Steve, foo: bar }</code></pre><p>转为 JavaScript 如下：</p><pre><code class="language-JavaScript">{ hash: { name: &#39;Steve&#39;, foo: &#39;bar&#39; } }</code></pre><h3 id="数组"><a href="#数组" class="headerlink" title="数组"><a href="#数组"><a href="#数组" class="headerlink" title="数组" class="headerlink" title="数组"></a></a>数组</h3><p>一组连词线开头的行，构成一个数组。</p><pre><code class="language-yaml">- Cat- Dog- Goldfish</code></pre><p>转为 JavaScript 如下：</p><pre><code class="language-JavaScript">[ &#39;Cat&#39;, &#39;Dog&#39;, &#39;Goldfish&#39; ]</code></pre><h3 id="纯量"><a href="#纯量" class="headerlink" title="纯量"><a href="#纯量"><a href="#纯量" class="headerlink" title="纯量" class="headerlink" title="纯量"></a></a>纯量</h3><p>纯量是最基本的、不可再分的值。</p><p>以下数据类型都属于 JavaScript 的纯量：</p><ul><li>字符串</li><li>布尔值</li><li>整数</li><li>浮点数</li><li><code>null</code>：用 <code>~</code> 表示</li><li>时间</li><li>日期</li></ul><h2 id="复合结构"><a href="#复合结构" class="headerlink" title="复合结构"><a href="#复合结构"><a href="#复合结构" class="headerlink" title="复合结构" class="headerlink" title="复合结构"></a></a>复合结构</h2><p>对象和数组可以结合使用，形成复合结构。</p><h3 id="示例"><a href="#示例" class="headerlink" title="示例"><a href="#示例"><a href="#示例" class="headerlink" title="示例" class="headerlink" title="示例"></a></a>示例</h3><p>选自 <a href="https://www.redhat.com/en/topics/automation/what-is-yaml">Red Hat</a> 的学生信息例子：</p><pre><code class="language-yaml">#Comment: Student record#Describes some characteristics and preferences---name: Martin D&#39;vloper #key-valueage: 26hobbies:  - painting #first list item  - playing_music #second list item  - cooking #third list itemprogramming_languages:  java: Intermediate  python: Advanced  javascript: Beginnerfavorite_food:  - vegetables: tomatoes  - fruits:      citrics: oranges      tropical: bananas      nuts: peanuts      sweets: raisins</code></pre><p>使用 Python 的 PyYAML 库，可转化为：</p><pre><code class="language-python">[    {        &quot;name&quot;: &quot;Martin D&#39;vloper&quot;,        &quot;age&quot;: 26,        &quot;hobbies&quot;: [&quot;painting&quot;, &quot;playing_music&quot;, &quot;cooking&quot;],        &quot;programming_languages&quot;: {            &quot;java&quot;: &quot;Intermediate&quot;,            &quot;python&quot;: &quot;Advanced&quot;,            &quot;javascript&quot;: &quot;Beginner&quot;,        },        &quot;favorite_food&quot;: [            {&quot;vegetables&quot;: &quot;tomatoes&quot;},            {                &quot;fruits&quot;: {                    &quot;citrics&quot;: &quot;oranges&quot;,                    &quot;tropical&quot;: &quot;bananas&quot;,                    &quot;nuts&quot;: &quot;peanuts&quot;,                    &quot;sweets&quot;: &quot;raisins&quot;,                }            },        ],    }]</code></pre><h2 id="相关阅读"><a href="#相关阅读" class="headerlink" title="相关阅读"><a href="#相关阅读"><a href="#相关阅读" class="headerlink" title="相关阅读" class="headerlink" title="相关阅读"></a></a>相关阅读</h2><ul><li><a href="https://hugo.bnblogs.cc/">Barney</a> 的 <a href="https://hugo.bnblogs.cc/yaml%E8%AF%AD%E6%B3%95/">yaml 语法</a> 整理；</li><li><a href="https://www.ruanyifeng.com/blog/">阮一峰</a> 的 <a href="https://www.ruanyifeng.com/blog/2016/07/yaml.html">YAML 语言教程</a>；</li><li><a href="https://yaml.org/spec/1.2.2/">YAML 1.2 规格</a>；</li></ul>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;认知始于 Markdown 文件，不知道终于哪儿。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;定义&quot;&gt;&lt;a href=&quot;#定义&quot; class=&quot;headerlink&quot; title=&quot;定义&quot;&gt;&lt;/a&gt;定义&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;YAML Ain’t a Markup Language &amp;#x2F; Yet Another Markup Language&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;文件后缀：&lt;code&gt;.yml&lt;/code&gt; 或 &lt;code&gt;.yaml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;注释：井号 或 哈希符号 &lt;code&gt;#&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;结构：映射或列表，遵循层次结构，具体取决于缩进以及定义键值的方式。&lt;/p&gt;</summary>
    
    
    
    <category term="技术" scheme="https://yunyitang.me/categories/tech/"/>
    
    
    <category term="Data" scheme="https://yunyitang.me/tag/Data/"/>
    
    <category term="config" scheme="https://yunyitang.me/tag/config/"/>
    
  </entry>
  
  <entry>
    <title>2023 年终总结</title>
    <link href="https://yunyitang.me/2023-review/"/>
    <id>https://yunyitang.me/2023-review/</id>
    <published>2024-01-11T21:25:30.000Z</published>
    <updated>2024-01-25T21:25:30.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2 id="博客建设"><a href="#博客建设" class="headerlink" title="博客建设"><a href="#博客建设"><a href="#博客建设" class="headerlink" title="博客建设" class="headerlink" title="博客建设"></a></a>博客建设</h2><p>2023 年底把博客从 Ghost 搬到了 <a href="https://pages.cloudflare.com/">Github Pages</a>，动手照着教程 <a href="https://kyxie.github.io/zh/blog/tech/papermod/">Hugo + PaperMod搭建技术博客</a> 做了一个静态网页做博客，重心放在技术学习整理、以输出促输入、费曼学习法。</p><p>一开始照本宣科做中英一式两份的个人网站，后来随着扩展友链、多读多看，加之自己在英工作，逐渐调整了个站中英页面的各自侧重：英文页面有求职相关，博客更新不及中文页面多，主页保持 portfolio 的简洁；中文页面则更侧重博客输出，主页的页头页尾也更丰富一点。</p><p>在扩展 <a href="https://www.yunyitang.me/zh/links/">友链</a> 的过程中，向各位大佬们也学习了很多，感受到了独立博客的丰富，受益于大家分享的真诚，并且越来越能体会阮一峰老师的话：</p><blockquote><p>“对我来说，博客首先是一种知识管理工具，其次才是传播工具。我的技术文章，主要用来整理我还不懂的知识。我只写那些我还没有完全掌握的东西，那些我精通的东西，往往没有动力写。炫耀从来不是我的动机，好奇才是。”</p></blockquote><span id="more"></span><h2 id="工作变化和感受"><a href="#工作变化和感受" class="headerlink" title="工作变化和感受"><a href="#工作变化和感受"><a href="#工作变化和感受" class="headerlink" title="工作变化和感受" class="headerlink" title="工作变化和感受"></a></a>工作变化和感受</h2><p>今年最松一口气的变化，就是我的 <a href="https://research-information.bris.ac.uk/en/persons/yunyi-tang-2/studentTheses/">硕士论文</a> 终于通过了！从一开始读博的跌跌撞撞，到第一年审核不过的焦虑难受，再到之后转为研究型硕士项目的守得云开见月明，很感谢导师、家人和朋友们的支持和陪伴。拿到学位也保证了后续的签证申请，留英工作的计划也清晰了许多。</p><p>科研之余的实习也有了不少进展，在 <a href="https://www.180dc.org/branches/Bristol">180DC</a> 的数据科学项目进入到项目的第二阶段，去年的领队忙于毕业、把这轮项目的领队交给了我。虽然不比队里各位 Robotics 的博士生们技术精湛，但基于项目前一轮和客户交流的经验，加一些细心，算是把此项目收尾了。</p><p>最意外的收获是开始了在 <a href="https://www.zap-map.com/">Zapmap</a> 的数据兼职。从一开始比较打杂，到现在虽然也打杂、但更多参与公司会议了解业务动向、多到办公室和大家交流、旁观学习，甚至还去 Christmas Party 狠玩了一把，也算是把一个一开始的小机会利用到自己力所能及的最大值。虽说初创公司要看融资来决定下一步的人事变化，能否在现在合同结束后留下了全职工作还两说，但在 <a href="https://www.zap-map.com/">Zapmap</a> 经历的、学习了解到的都对从本科开始就没有工作经历、一路读书到现在的我多有助益。</p><h2 id="技术成长"><a href="#技术成长" class="headerlink" title="技术成长"><a href="#技术成长"><a href="#技术成长" class="headerlink" title="技术成长" class="headerlink" title="技术成长"></a></a>技术成长</h2><p>在导师提醒我“不能从一个硕士项目中只想着用尽学尽自己想要的技术&#x2F;工具”之后，我放下了把 <a href="https://research-information.bris.ac.uk/en/persons/yunyi-tang-2/studentTheses/">硕士论文</a> 的数据分析做得花里胡哨的执念，只在完成本职（<a href="https://research-information.bris.ac.uk/en/persons/yunyi-tang-2/publications/">科研</a>）之余，多接触、多自学、多尝试。但对于自己更倾向于数据分析、还是网站开发，一直没有很清晰的想法。</p><p>有时候感觉像忙头苍蝇无方向，但有时又相信积少成多、前路会越来越明晰，也多亏能在 <a href="https://www.zap-map.com/">Zapmap</a> 工作多感受体会，才不至于像考虑转硕那样焦躁茫然。而在秋天生活变故之后，我有意无意多着力用时于自己，加上少了担心毕业论文的压力，顺着技术博客做感觉还不错。</p><h2 id="今年计划完成度"><a href="#今年计划完成度" class="headerlink" title="今年计划完成度"><a href="#今年计划完成度"><a href="#今年计划完成度" class="headerlink" title="今年计划完成度" class="headerlink" title="今年计划完成度"></a></a>今年计划完成度</h2><p>连续两年年底都过得不易，也一直没什么“年度计划”。姑且回头看的话，今年过得确实比去年年底的悲观好多了，感到幸运的远多于感到遗憾的，也算是完成自己的期待吧！</p><h2 id="明年的全年计划"><a href="#明年的全年计划" class="headerlink" title="明年的全年计划"><a href="#明年的全年计划"><a href="#明年的全年计划" class="headerlink" title="明年的全年计划" class="headerlink" title="明年的全年计划"></a></a>明年的全年计划</h2><p>明年主要解决什么问题？有什么想做的？围绕生活、技术、工作：</p><ul><li>多出门徒步，开始尝试多日徒步；</li><li>多和家人朋友通话联络；</li><li>保持博客每月两篇以上的输出；</li><li>增加基础技术知识的学习和输出；</li><li>开始第一份全职工作；</li></ul><h2 id="相关阅读"><a href="#相关阅读" class="headerlink" title="相关阅读"><a href="#相关阅读"><a href="#相关阅读" class="headerlink" title="相关阅读" class="headerlink" title="相关阅读"></a></a>相关阅读</h2><p>各节标题参考了 <a href="https://imcbc.cn/">冰冰大佬</a> 前年的 <a href="https://imcbc.cn/202212/2022-summary/">2022年终总结</a>，更多大家的 2023 年终总结可翻阅 <a href="https://github.com/saveweb/review-2023">此合集</a>。</p>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;博客建设&quot;&gt;&lt;a href=&quot;#博客建设&quot; class=&quot;headerlink&quot; title=&quot;博客建设&quot;&gt;&lt;/a&gt;博客建设&lt;/h2&gt;&lt;p&gt;2023 年底把博客从 Ghost 搬到了 &lt;a href=&quot;https://pages.cloudflare.com/&quot;&gt;Github Pages&lt;/a&gt;，动手照着教程 &lt;a href=&quot;https://kyxie.github.io/zh/blog/tech/papermod/&quot;&gt;Hugo + PaperMod搭建技术博客&lt;/a&gt; 做了一个静态网页做博客，重心放在技术学习整理、以输出促输入、费曼学习法。&lt;/p&gt;
&lt;p&gt;一开始照本宣科做中英一式两份的个人网站，后来随着扩展友链、多读多看，加之自己在英工作，逐渐调整了个站中英页面的各自侧重：英文页面有求职相关，博客更新不及中文页面多，主页保持 portfolio 的简洁；中文页面则更侧重博客输出，主页的页头页尾也更丰富一点。&lt;/p&gt;
&lt;p&gt;在扩展 &lt;a href=&quot;https://www.yunyitang.me/zh/links/&quot;&gt;友链&lt;/a&gt; 的过程中，向各位大佬们也学习了很多，感受到了独立博客的丰富，受益于大家分享的真诚，并且越来越能体会阮一峰老师的话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“对我来说，博客首先是一种知识管理工具，其次才是传播工具。我的技术文章，主要用来整理我还不懂的知识。我只写那些我还没有完全掌握的东西，那些我精通的东西，往往没有动力写。炫耀从来不是我的动机，好奇才是。”&lt;/p&gt;
&lt;/blockquote&gt;</summary>
    
    
    
    <category term="日常" scheme="https://yunyitang.me/categories/life/"/>
    
    
    <category term="年终总结" scheme="https://yunyitang.me/tag/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93/"/>
    
  </entry>
  
  <entry>
    <title>正则表达式基础知识点</title>
    <link href="https://yunyitang.me/regular-expression-basics/"/>
    <id>https://yunyitang.me/regular-expression-basics/</id>
    <published>2024-01-06T21:13:08.000Z</published>
    <updated>2024-01-25T21:13:08.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>认知始于 Excel，不知道终于哪儿。</p></blockquote><h2 id="介绍与应用"><a href="#介绍与应用" class="headerlink" title="介绍与应用"><a href="#介绍与应用"><a href="#介绍与应用" class="headerlink" title="介绍与应用" class="headerlink" title="介绍与应用"></a></a>介绍与应用</h2><p>属性：用于匹配和操作文本的工具</p><p>设计思想：用一种描述性的语言来给字符串定义一个规则，凡是符合规则的字符串，为“匹配”，反之，不“匹配”。</p><p>应用场景：</p><ul><li>文本查找</li><li>文本替换</li><li>文本格式校验</li><li>…</li></ul><span id="more"></span><p>应用环境：大多数编程语言的标准库包含正则表达式的支持</p><ul><li>Python</li><li>SQL</li><li>Javascript</li><li>Word, Excel…</li></ul><h2 id="语法"><a href="#语法" class="headerlink" title="语法"><a href="#语法"><a href="#语法" class="headerlink" title="语法" class="headerlink" title="语法"></a></a>语法</h2><p>主要语法如下：</p><h3 id="普通字符"><a href="#普通字符" class="headerlink" title="普通字符"><a href="#普通字符"><a href="#普通字符" class="headerlink" title="普通字符" class="headerlink" title="普通字符"></a></a>普通字符</h3><p>明确的关键字：在正则表达式中直接写即可</p><ul><li>文字字符：英文字母、中文、数字</li><li>符号：@ % _ 等等</li></ul><h4 id="特殊字符"><a href="#特殊字符" class="headerlink" title="特殊字符"><a href="#特殊字符"><a href="#特殊字符" class="headerlink" title="特殊字符" class="headerlink" title="特殊字符"></a></a>特殊字符</h4><p>一些有特殊含义的字符若要匹配，必须首先使字符”转义”，即将反斜杠字符 &#96;`&#96; 放在它们前面。</p><table><thead><tr><th>特殊字符</th><th>描述</th></tr></thead><tbody><tr><td><code>$</code></td><td>匹配输入字符串的结尾位置</td></tr><tr><td><code>()</code></td><td>标记一个子表达式的开始和结束位置</td></tr><tr><td><code>*</code></td><td>匹配前面的子表达式零次或多次</td></tr><tr><td><code>+</code></td><td>匹配前面的子表达式一次或多次</td></tr><tr><td><code>[</code></td><td>标记一个中括号表达式的开始</td></tr><tr><td><code>?</code></td><td>匹配前面的子表达式零次或一次，或指明一个非贪婪限定符。</td></tr><tr><td><code>\</code></td><td>将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符</td></tr><tr><td><code>^</code></td><td>匹配输入字符串的开始位置，除非在方括号表达式中使用，当该符号在方括号表达式中使用时，表示不接受该方括号表达式中的字符集合。</td></tr><tr><td><code>{</code></td><td>标记限定符表达式的开始</td></tr><tr><td><code>|</code></td><td>指明两项之间的一个选择</td></tr></tbody></table><h4 id="非打印字符"><a href="#非打印字符" class="headerlink" title="非打印字符"><a href="#非打印字符"><a href="#非打印字符" class="headerlink" title="非打印字符" class="headerlink" title="非打印字符"></a></a>非打印字符</h4><table><thead><tr><th>字符</th><th>描述</th><th>等效</th></tr></thead><tbody><tr><td><code>\cx</code></td><td>匹配由x指明的控制字符</td><td></td></tr><tr><td><code>\f</code></td><td>匹配一个换页符</td><td><code>\x0c</code> 和 <code>\cL</code></td></tr><tr><td><code>\n</code></td><td>匹配一个换行符</td><td><code>\x0a</code> 和 <code>\cJ</code></td></tr><tr><td><code>\r</code></td><td>匹配一个回车符</td><td><code>\x0d</code> 和 <code>\cM</code></td></tr><tr><td><code>\s</code></td><td>匹配任何空白字符，包括空格、制表符、换页符等等。</td><td><code>\f</code> <code>\n</code> <code>\r</code> <code>\t</code> <code>\v</code></td></tr><tr><td><code>\S</code></td><td>匹配任何非空白字符</td><td><code>^</code> <code>\f</code> <code>\n</code> <code>\r</code> <code>\t</code> <code>\v</code></td></tr><tr><td><code>\t</code></td><td>匹配一个制表符</td><td><code>\x09</code> 和 <code>\cI</code></td></tr><tr><td><code>\v</code></td><td>匹配一个垂直制表符</td><td><code>\x0b</code> 和 <code>\cK</code></td></tr></tbody></table><p>不需要记住，可用时查。</p><h3 id="字符集合"><a href="#字符集合" class="headerlink" title="字符集合"><a href="#字符集合"><a href="#字符集合" class="headerlink" title="字符集合" class="headerlink" title="字符集合"></a></a>字符集合</h3><p>单个关键字的值范围，包含在一对 <code>[]</code> 中间。</p><p>应用：</p><ul><li>明确某个字符的范围的模糊匹配<ul><li>如果差异不仅仅在一个字符上，则不适合采用字符集合 -&gt; 应采用<a href="#%E5%AD%90%E8%A1%A8%E8%BE%BE%E5%BC%8F">子表达式</a></li></ul></li><li>可以简化的连续值范围：使用 <code>-</code> 符号</li><li>字符集合为排除在外的值：使 <code>^</code> 符号</li></ul><h3 id="限定符、定位符"><a href="#限定符、定位符" class="headerlink" title="限定符、定位符"><a href="#限定符、定位符"><a href="#限定符、定位符" class="headerlink" title="限定符、定位符" class="headerlink" title="限定符、定位符"></a></a>限定符、定位符</h3><p>如下：</p><h4 id="限定符"><a href="#限定符" class="headerlink" title="限定符"><a href="#限定符"><a href="#限定符" class="headerlink" title="限定符" class="headerlink" title="限定符"></a></a>限定符</h4><p>给前一个字符追加限定范围</p><table><thead><tr><th>常用限定符</th><th>描述</th></tr></thead><tbody><tr><td><code>*</code></td><td>前面的字符&#x2F;子表达式出现0次或多次</td></tr><tr><td><code>+</code></td><td>前面的字符&#x2F;子表达式出现1次或多次</td></tr><tr><td><code>#</code></td><td>前面的字符&#x2F;子表达式出现0次或1次</td></tr><tr><td><code>{}</code></td><td>前面的字符&#x2F;子表达式出现具体{}次</td></tr></tbody></table><p>注意：前面为模糊匹配范围时，会出现“贪婪匹配”的问题 – 默认情况下，正则表达式会匹配尽量多的字符 – 可通过添加 <code>?</code> 实现<a href="https://www.liaoxuefeng.com/wiki/1252599548343744/1306046731649057">非贪婪匹配</a>。</p><h4 id="定位符"><a href="#定位符" class="headerlink" title="定位符"><a href="#定位符"><a href="#定位符" class="headerlink" title="定位符" class="headerlink" title="定位符"></a></a>定位符</h4><p>标记匹配位置的元字符 - 只有4个：</p><table><thead><tr><th>定位符</th><th>描述</th></tr></thead><tbody><tr><td><code>^</code></td><td>字符串开始的位置</td></tr><tr><td><code>$</code></td><td>字符串结尾的位置</td></tr><tr><td><code>\b</code></td><td>单词边界 - 字符与空格间的位置</td></tr><tr><td><code>\B</code></td><td>非单词边界</td></tr></tbody></table><h3 id="子表达式"><a href="#子表达式" class="headerlink" title="子表达式"><a href="#子表达式"><a href="#子表达式" class="headerlink" title="子表达式" class="headerlink" title="子表达式"></a></a>子表达式</h3><p>内嵌的子正则表达式，包含在一对 <code>()</code> 中，可以看作是一个整体。</p><ul><li>与正则表达式语法相同；</li><li>允许子表达式内嵌套子表达式；</li><li>用 <code>|</code> 分割多个子表达式&#x2F;多种情况；</li><li>可以标记子匹配项，如 <code>([a-z])\1([a-z])\2</code> 匹配 <code>aabb ... cczz</code>；</li><li>子表达式的匹配结果会单独存储，如希望不存储，可以添加 <code>?:</code>（在日常表达中不太常用）；</li><li>可作为预查匹配项&#x2F;自定义的<a href="#%E5%AE%9A%E4%BD%8D%E7%AC%A6">定位符</a>；</li></ul><h3 id="省略符、修饰符"><a href="#省略符、修饰符" class="headerlink" title="省略符、修饰符"><a href="#省略符、修饰符"><a href="#省略符、修饰符" class="headerlink" title="省略符、修饰符" class="headerlink" title="省略符、修饰符"></a></a>省略符、修饰符</h3><p>如下：</p><h4 id="省略符"><a href="#省略符" class="headerlink" title="省略符"><a href="#省略符"><a href="#省略符" class="headerlink" title="省略符" class="headerlink" title="省略符"></a></a>省略符</h4><p>为了简化正则表达式的元字符，以 <code>\</code> 开头。</p><table><thead><tr><th>字符</th><th>描述</th><th>等效</th></tr></thead><tbody><tr><td><code>.</code></td><td>匹配除换行符（<code>\n</code>、<code>\r</code>）之外的任何单个字符</td><td><code>[^\n\r]</code></td></tr><tr><td><code>\d</code></td><td>匹配一个数字字符</td><td><code>[0-9]</code></td></tr><tr><td><code>\D</code></td><td>匹配一个非数字字符</td><td><code>[^0-9]</code></td></tr><tr><td><code>\s</code></td><td>匹配所有空白符，包括空格、制表符、换页符等。</td><td><code>[\f\n\r\t\v]</code></td></tr><tr><td><code>\S</code></td><td>匹配所有非空白符</td><td><code>[^\f\n\r\t\v]</code></td></tr><tr><td><code>\w</code></td><td>匹配一个字母、数字、下划线字符</td><td><code>[A-Za-z0-9_]</code></td></tr><tr><td><code>\W</code></td><td>匹配一个非字母、数字、下划线字符</td><td><code>[^A-Za-z0-9_]</code></td></tr></tbody></table><p>每个省略符都有替代方案，所以不必强求记忆。</p><h4 id="修饰符"><a href="#修饰符" class="headerlink" title="修饰符"><a href="#修饰符"><a href="#修饰符" class="headerlink" title="修饰符" class="headerlink" title="修饰符"></a></a>修饰符</h4><p>严格意义上不是正则表达式的一部分，是指定匹配策略的，可叠加使用。</p><table><thead><tr><th>常规修饰符</th><th>描述</th></tr></thead><tbody><tr><td><code>i</code></td><td>ignore - 不区分大小写</td></tr><tr><td><code>g</code></td><td>global - 全局匹配</td></tr><tr><td><code>m</code></td><td>multi-line - 多行匹配</td></tr><tr><td><code>s</code></td><td>默认情况下的圆点 <code>.</code> 是匹配除换行符 <code>\n</code> 之外的任何字符，加上 <code>s</code> 修饰符之后, <code>.</code> 中包含换行符 <code>\n</code>。</td></tr></tbody></table><p>某些正则表达式的代码库可能存在特别的修饰符。</p><p>有些软件虽支持正则表达式搜索，但不一定开放修饰符的设置。</p><h2 id="记不住语法的解决方案"><a href="#记不住语法的解决方案" class="headerlink" title="记不住语法的解决方案"><a href="#记不住语法的解决方案"><a href="#记不住语法的解决方案" class="headerlink" title="记不住语法的解决方案" class="headerlink" title="记不住语法的解决方案"></a></a>记不住语法的解决方案</h2><p>正则表达式元字符手册：<a href="https://www.r2coding.com/#/README?id=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">Road To Coding：正则表达式</a></p><ul><li><a href="https://www.r2coding.com/#/README?id=%E5%9F%BA%E7%A1%80%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E9%80%9F%E6%9F%A5%E8%A1%A8">基础正则表达式速查表</a></li><li><a href="https://www.r2coding.com/#/README?id=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7">正则表达式可视化工具</a></li><li><a href="https://www.r2coding.com/#/README?id=%E5%B8%B8%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%A4%BA%E4%BE%8B">常用正则表达式示例</a></li></ul><p>在线测试正则表达式：<a href="https://regex101.com/">Regular expression tester</a></p>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;认知始于 Excel，不知道终于哪儿。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;介绍与应用&quot;&gt;&lt;a href=&quot;#介绍与应用&quot; class=&quot;headerlink&quot; title=&quot;介绍与应用&quot;&gt;&lt;/a&gt;介绍与应用&lt;/h2&gt;&lt;p&gt;属性：用于匹配和操作文本的工具&lt;/p&gt;
&lt;p&gt;设计思想：用一种描述性的语言来给字符串定义一个规则，凡是符合规则的字符串，为“匹配”，反之，不“匹配”。&lt;/p&gt;
&lt;p&gt;应用场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文本查找&lt;/li&gt;
&lt;li&gt;文本替换&lt;/li&gt;
&lt;li&gt;文本格式校验&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="技术" scheme="https://yunyitang.me/categories/tech/"/>
    
    
    <category term="Data" scheme="https://yunyitang.me/tag/Data/"/>
    
  </entry>
  
  <entry>
    <title>R 语言 ggplot2 和 dplyr 可视化分析</title>
    <link href="https://yunyitang.me/r-ggplot2-dplyr/"/>
    <id>https://yunyitang.me/r-ggplot2-dplyr/</id>
    <published>2024-01-05T23:55:56.000Z</published>
    <updated>2024-01-25T23:55:56.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>因为实习兼职的公司用R，温习如下，示例取自<a href="https://app.datacamp.com/workspace/w/980fb8cc-bfa9-4071-aea3-ca8b1e3a95a8/edit">此项目</a>。</p></blockquote><h2 id="可视化-libraries"><a href="#可视化-libraries" class="headerlink" title="可视化 libraries"><a href="#可视化-libraries"><a href="#可视化-libraries" class="headerlink" title="可视化 libraries" class="headerlink" title="可视化 libraries"></a></a>可视化 libraries</h2><pre><code class="language-R">library(readr)library(ggplot2)library(dplyr)</code></pre><h2 id="导入数据"><a href="#导入数据" class="headerlink" title="导入数据"><a href="#导入数据"><a href="#导入数据" class="headerlink" title="导入数据" class="headerlink" title="导入数据"></a></a>导入数据</h2><p><strong>将csv导入dataset</strong></p><span id="more"></span><pre><code class="language-R">Read datasets/confirmed_cases_worldwide.csv into confirmed_cases_worldwide</code></pre><p><strong>选择部分数据</strong></p><pre><code class="language-R"># Filter for China, from Feb 15china_after_feb15 &lt;- confirmed_cases_china_vs_world %&gt;%  filter(is_china == &quot;China&quot;, date &gt;= &quot;2020-02-15&quot;)</code></pre><h2 id="画图"><a href="#画图" class="headerlink" title="画图"><a href="#画图"><a href="#画图" class="headerlink" title="画图" class="headerlink" title="画图"></a></a>画图</h2><p><strong>单组数据</strong></p><pre><code class="language-R"># Draw a line plot of cumulative cases vs. date# Label the y-axisggplot(confirmed_cases_worldwide, aes(date, cum_cases)) +  geom_line() +  ylab(&quot;Cumulative confirmed cases&quot;)</code></pre><p><strong>多组数据</strong></p><pre><code class="language-R"># Using confirmed_cases_top7_outside_china, draw a line plot of# cum_cases vs. date, colored by countryggplot(confirmed_cases_top7_outside_china, aes(date, cum_cases, color = country)) +  geom_line() +  ylab(&quot;Cumulative confirmed cases&quot;)</code></pre><p><strong>趋势曲线</strong></p><pre><code class="language-R"># Modify the plot to use a logarithmic scale on the y-axisplt_not_china_trend_lin +  scale_y_log10()`geom_smooth()` using formula &#39;y ~ x&#39;</code></pre><hr><p>R语言练习：<a href="https://swirlstats.com/faq.html">https://swirlstats.com/faq.html</a></p>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;因为实习兼职的公司用R，温习如下，示例取自&lt;a href=&quot;https://app.datacamp.com/workspace/w/980fb8cc-bfa9-4071-aea3-ca8b1e3a95a8/edit&quot;&gt;此项目&lt;/a&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;可视化-libraries&quot;&gt;&lt;a href=&quot;#可视化-libraries&quot; class=&quot;headerlink&quot; title=&quot;可视化 libraries&quot;&gt;&lt;/a&gt;可视化 libraries&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-R&quot;&gt;library(readr)
library(ggplot2)
library(dplyr)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;导入数据&quot;&gt;&lt;a href=&quot;#导入数据&quot; class=&quot;headerlink&quot; title=&quot;导入数据&quot;&gt;&lt;/a&gt;导入数据&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;将csv导入dataset&lt;/strong&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="技术" scheme="https://yunyitang.me/categories/tech/"/>
    
    
    <category term="Data" scheme="https://yunyitang.me/tag/Data/"/>
    
    <category term="R" scheme="https://yunyitang.me/tag/R/"/>
    
  </entry>
  
  <entry>
    <title>2023年12月观影</title>
    <link href="https://yunyitang.me/2023-12-films/"/>
    <id>https://yunyitang.me/2023-12-films/</id>
    <published>2023-12-18T00:22:17.000Z</published>
    <updated>2024-01-29T00:22:17.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h3 id="饮食男女"><a href="#饮食男女" class="headerlink" title="饮食男女"><a href="#饮食男女"><a href="#饮食男女" class="headerlink" title="饮食男女" class="headerlink" title="饮食男女"></a></a>饮食男女</h3><p>Eat Drink Man Woman &#x2F; 飲食男女</p><h3 id="至暗时刻"><a href="#至暗时刻" class="headerlink" title="至暗时刻"><a href="#至暗时刻"><a href="#至暗时刻" class="headerlink" title="至暗时刻" class="headerlink" title="至暗时刻"></a></a>至暗时刻</h3><p>Darkest Hour &#x2F; 黑暗对峙(港) &#x2F; 最黑暗的时刻(台)</p><h3 id="国王的演讲"><a href="#国王的演讲" class="headerlink" title="国王的演讲"><a href="#国王的演讲"><a href="#国王的演讲" class="headerlink" title="国王的演讲" class="headerlink" title="国王的演讲"></a></a>国王的演讲</h3><p>The King’s Speech &#x2F; 皇上无话儿(港) &#x2F; 王者之声：宣战时刻(台)</p><span id="more"></span><h3 id="普罗米修斯"><a href="#普罗米修斯" class="headerlink" title="普罗米修斯"><a href="#普罗米修斯"><a href="#普罗米修斯" class="headerlink" title="普罗米修斯" class="headerlink" title="普罗米修斯"></a></a>普罗米修斯</h3><p>Prometheus &#x2F; 异形前传 &#x2F; 异形前传：普罗米修斯</p><h3 id="走出非洲"><a href="#走出非洲" class="headerlink" title="走出非洲"><a href="#走出非洲"><a href="#走出非洲" class="headerlink" title="走出非洲" class="headerlink" title="走出非洲"></a></a>走出非洲</h3><p>Out of Africa &#x2F; 非洲之旅(港) &#x2F; 远离非洲(台)</p><h3 id="隐藏人物"><a href="#隐藏人物" class="headerlink" title="隐藏人物"><a href="#隐藏人物"><a href="#隐藏人物" class="headerlink" title="隐藏人物" class="headerlink" title="隐藏人物"></a></a>隐藏人物</h3><p>Hidden Figures &#x2F; NASA无名英雌(港) &#x2F; 关键少数(台)</p><h3 id="旺卡"><a href="#旺卡" class="headerlink" title="旺卡"><a href="#旺卡"><a href="#旺卡" class="headerlink" title="旺卡" class="headerlink" title="旺卡"></a></a>旺卡</h3><p>Wonka</p><h3 id="鲸"><a href="#鲸" class="headerlink" title="鲸"><a href="#鲸"><a href="#鲸" class="headerlink" title="鲸" class="headerlink" title="鲸"></a></a>鲸</h3><p>The Whale &#x2F; 庞然大物 &#x2F; 我的鲸鱼老爸(台)</p><h3 id="大鱼"><a href="#大鱼" class="headerlink" title="大鱼"><a href="#大鱼"><a href="#大鱼" class="headerlink" title="大鱼" class="headerlink" title="大鱼"></a></a>大鱼</h3><p>Big Fish &#x2F; 大鱼奇缘(港) &#x2F; 大智若鱼(台)</p><h3 id="婚姻故事"><a href="#婚姻故事" class="headerlink" title="婚姻故事"><a href="#婚姻故事"><a href="#婚姻故事" class="headerlink" title="婚姻故事" class="headerlink" title="婚姻故事"></a></a>婚姻故事</h3><p>Marriage Story</p><h3 id="伊蒂"><a href="#伊蒂" class="headerlink" title="伊蒂"><a href="#伊蒂"><a href="#伊蒂" class="headerlink" title="伊蒂" class="headerlink" title="伊蒂"></a></a>伊蒂</h3><p>Edie &#x2F; 伊蒂</p>]]></content>
    
    
    <summary type="html">&lt;h3 id=&quot;饮食男女&quot;&gt;&lt;a href=&quot;#饮食男女&quot; class=&quot;headerlink&quot; title=&quot;饮食男女&quot;&gt;&lt;/a&gt;饮食男女&lt;/h3&gt;&lt;p&gt;Eat Drink Man Woman &amp;#x2F; 飲食男女&lt;/p&gt;
&lt;h3 id=&quot;至暗时刻&quot;&gt;&lt;a href=&quot;#至暗时刻&quot; class=&quot;headerlink&quot; title=&quot;至暗时刻&quot;&gt;&lt;/a&gt;至暗时刻&lt;/h3&gt;&lt;p&gt;Darkest Hour &amp;#x2F; 黑暗对峙(港) &amp;#x2F; 最黑暗的时刻(台)&lt;/p&gt;
&lt;h3 id=&quot;国王的演讲&quot;&gt;&lt;a href=&quot;#国王的演讲&quot; class=&quot;headerlink&quot; title=&quot;国王的演讲&quot;&gt;&lt;/a&gt;国王的演讲&lt;/h3&gt;&lt;p&gt;The King’s Speech &amp;#x2F; 皇上无话儿(港) &amp;#x2F; 王者之声：宣战时刻(台)&lt;/p&gt;</summary>
    
    
    
    <category term="随笔" scheme="https://yunyitang.me/categories/essay/"/>
    
    
    <category term="电影" scheme="https://yunyitang.me/tag/%E7%94%B5%E5%BD%B1/"/>
    
  </entry>
  
  <entry>
    <title>我生活在妙不可言的等待中，等待随便哪种未来。</title>
    <link href="https://yunyitang.me/2020-review/"/>
    <id>https://yunyitang.me/2020-review/</id>
    <published>2020-12-31T23:19:02.000Z</published>
    <updated>2020-12-31T23:19:02.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>“我生活在妙不可言的等待中，等待随便哪种未来“，这是纪德在《地粮》里的一句话，也是我收到单向历的包装上的一句话。在这个充满变数的2020年，这句话突然显得有些适合，用来总结这个2020年。</p><p>写 2020 年的年末回顾比 2019 年更难下笔，可能因为新冠疫情还环绕着我们，单纯个人的快乐和失落已经难以形容2020年了。从未感觉自己本科的社会人类学训练在眼前的思虑中如此真实，我们什么时候不是生活在这个社会之中呢？</p><p>但若把眼光拉回身边，还是有很多可以细细掰扯的回忆。</p><span id="more"></span><p>写2019年回顾的时候，我还很心虚、很着急、很没有着落，和现在的感觉不太一样。可能因为国内公历年末没有休假，而英国正好在圣诞连着元旦休冬假；也可能因为升学的复杂心情，混杂着一年到尾回头看的怅然，和现在还坐在一个新的旅程的起点，心情略有不同。</p><p>就像我在12月开头回看一年前写的那样，“我无法回去安慰那时候的自己，抱住她描述会安心的明天。那时候最大的动力就是畅想博士生活，畅想我在英格兰一个西南的海港城市开始四年的研究生活，会有导师，会有一年做田野，会有机会做交叉项目，我会做一个好奇而活泼的疯子。但我无法回去安慰那时候的自己，我只能安慰现在的自己，by the end of this year, I will finally survive 2020, we all will.”</p><p>幸好，我 survive 了，成为了幸存到 2020 年末的幸运儿。相较于许多没有度过漫长寒冬的鲜活生命，我只是幸运了。像朋友说的那样，我们可能还是进入了“后疫情时代”，生活不可逆地改变了，我们会继续拥抱生活的不确定性吗？我们有能力拥抱生活的不确定性吗？</p><hr><p>除了生命意义上的 survive，回答自己在 12 月初的期待，生活上我也 survive 了这一学期、这一年。在紧张地申请与等待之后，我有惊无险地开始了博士第一年的第一个学期，并用一个小小 symposium 的名次给自己的第一学年画上逗号。</p><p>在新的城市认识了新的朋友，在新的钢筋森林里找到了新的散心绿地，这些大概都回应了上半年焦虑的自己最美好的期待。所以，我很珍惜现在手里的时间。</p><hr><p>年初的自己，从济南到广州到香港，最后再回到广州，一路处理完了期末、雅思、递交申请、面试和继续网申。我几乎没有在相机和手机留下什么影像。</p><p>但是，这些都因为疫情爆发，改变了节奏。也因为当时的心情太真实，也因为怕自己遗忘，我在惊魂未定的那阵子买了很多纸质杂志，因为“真正的新闻，是历史的底稿，这些印在纸上的文与图，是留给时间的物证“。</p><hr><p>在申请暂告一段落之后，一边挽救自己无法补充实地田野的毕业论文，我一边和朋友久违地在广州聚会。我们去了久未开张的影院，也在远走他乡之前饱尝鲜美的海鲜粤菜。</p><hr><p>毕业、告别、旅行、升学、搬家，一切的回忆，都收束在现在回想2020年的我手里。</p><p>我曾畅想，“2020”这样数字规整的年份会怎样度过。而一开始的各种遐想，都不是年末看到的这样。</p><p>但我还是个盲目乐观的人。或是说，我对未来悲观，以至于我可以坦然接受大多数好或不好的事情发生。所以我选了这句话，“我生活在妙不可言的等待中，等待随便哪种未来”，作为这篇草草写就的年末回顾的标题。</p><p>是的，我还会在这里，等待随便哪种未来。</p><p>预祝读到这里的你新年快乐；）</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;“我生活在妙不可言的等待中，等待随便哪种未来“，这是纪德在《地粮》里的一句话，也是我收到单向历的包装上的一句话。在这个充满变数的2020年，这句话突然显得有些适合，用来总结这个2020年。&lt;/p&gt;
&lt;p&gt;写 2020 年的年末回顾比 2019 年更难下笔，可能因为新冠疫情还环绕着我们，单纯个人的快乐和失落已经难以形容2020年了。从未感觉自己本科的社会人类学训练在眼前的思虑中如此真实，我们什么时候不是生活在这个社会之中呢？&lt;/p&gt;
&lt;p&gt;但若把眼光拉回身边，还是有很多可以细细掰扯的回忆。&lt;/p&gt;</summary>
    
    
    
    <category term="随笔" scheme="https://yunyitang.me/categories/essay/"/>
    
    
    <category term="年终总结" scheme="https://yunyitang.me/tag/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93/"/>
    
  </entry>
  
  <entry>
    <title>在记忆干枯前描绘 2019</title>
    <link href="https://yunyitang.me/2019-review/"/>
    <id>https://yunyitang.me/2019-review/</id>
    <published>2019-12-31T23:12:42.000Z</published>
    <updated>2019-12-31T23:12:42.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>当作课间休息，这个年终总结一点点地在键盘敲打出来。</p><p>每到写年终总结都是我最心虚的时候。一是因为一个学年都是秋起夏终，冬天的年末远远不是松口气的时候。二是今年适逢升学，茫然，也仅仅能遥想一年后的自己会在哪里，给自己打打气。不过还是有个小小的信念：整理好过去，会更有信心面对下一年，所以我写下了我对 2019 的回忆。</p><span id="more"></span><p>回到 2019 年的一月，我甩掉几门期末，干掉一次雅思，拉着大行李箱就去了美国。威斯康辛的大雪让我半个学期都看不见绿色草木，让我连续停了三次周二的晚课，也让我体会了在冰面溜冰玩儿是什么感觉。现在回想起四个月的交换时间还是有点恍惚，就像一场有点夸张的梦。北京已经两三次雪了，济南还会再下一次雪吗？</p><hr><p>我是个总不甘寂寞的人，说好听点就是跳出舒适圈（平时也不舒适啊？），说不好听点就是三分钟热度。交换的学期满足了我的很多好奇和贪玩儿，也或多或少有实质性收获。然后我在夏天还去了背山面水的港中文，而目前又在紧张地准备研究生申请。</p><hr><p>尽管一年到头都一头沉在自己的忙兮兮里，但是我从来离不了我的朋友们。在b村对着窗外的鹅毛大雪，我和 Valerie 点了暖呼呼的茶叶蛋一起赶作业；在深夜无人的 Java Joint，Vy 和我聊到困了回去睡觉，还在临走前几晚一边说着自己的焦虑一边安慰对方；和 Peggy 在一起我有了勇气去解决让我不安的烦恼，还吃了很多很多顿早午晚饭；和 Yu 我去听了人生第一场 OOR 的 live，在 Milwaukee 的冷风里排了 6 个小时的队；和 Sihan 和 Jack 他们周五不知道聊啥天，然后周六一起去吃早饭，临走还一起通宵一个个送走回国的朋友；在 Sherry 的帮助下，办了第一次小小的摄影展，还留下了一张 powerhouse 的照片在学校里，回想起来还像是梦一样的体验；很多一起上课的朋友们，背景各异，生活各异，在上课一起头疼犯困（？），还会在 party 偶遇（哈）；还有到现在都没见面过的铮玥小姐姐哈哈哈哈，苍天她在我行前帮忙解答了多少疑惑，还在一个发现不能多留一个学期失落的晚上跨着时差慢慢聊天。回想起这段时间，我总是停不住又臭又长地流水账，生怕放过任何一个稍有遗忘的瞬间，谢谢你们爱你们。</p><p>同时真心地感谢我的父母，容许我这样折腾，养了一个过于活泼的女儿辛苦你们了，希望爸妈新的一年也身体健康。</p><hr><p>在跨着时差和一群朋友错峰聊天后，在大家终于陆续实习完回到济南后，一群朋友们终于聚餐了。不知道怎么形容，总之就是一群人，天天在聊天，偶尔吃个饭，差不多这样，真奇怪？</p><hr><p>下半年乏善可陈，只剩下了补课和升学，怎么和去年年末这么像哈哈哈？今年在一门课里有机会去田野，觉得挺幸福的，在田野里可以当工具人的那种幸福？大概在喜欢的方向上还有很远的路要走，预祝在考研&#x2F;工作&#x2F;升学路上的各位同行人新的一年里平安顺利。</p><hr><p>It was the best of times, it was the worst of times,<br>it was the age of wisdom, it was the age of foolishness,<br>it was the epoch of belief, it was the epoch of incredulity,<br>it was the season of Light, it was the season of Darkness,<br>it was the spring of hope, it was the winter of despair,<br>we had everything before us, we had nothing before us,<br>we were all going direct to Heaven, we were all going direct the other way.</p><p>– in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.</p><p>《双城记》这段话放在每个年关都那么适合？</p><p>每个人都在自己的苦乐中倒腾，社会也在肮脏和洁白中翻滚，冷感的和热情的都会被祝福和伤害。希望身边的和远方的人，新的一年能和自己及自己以外的好好相处，到明年的这个时候，还能哭出来和笑出来。</p><p>让我们去“温柔地推翻这个世界”。</p><p>预祝读到这里的你新年快乐：）</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;当作课间休息，这个年终总结一点点地在键盘敲打出来。&lt;/p&gt;
&lt;p&gt;每到写年终总结都是我最心虚的时候。一是因为一个学年都是秋起夏终，冬天的年末远远不是松口气的时候。二是今年适逢升学，茫然，也仅仅能遥想一年后的自己会在哪里，给自己打打气。不过还是有个小小的信念：整理好过去，会更有信心面对下一年，所以我写下了我对 2019 的回忆。&lt;/p&gt;</summary>
    
    
    
    <category term="随笔" scheme="https://yunyitang.me/categories/essay/"/>
    
    
    <category term="年终总结" scheme="https://yunyitang.me/tag/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93/"/>
    
  </entry>
  
  <entry>
    <title>谷歌套件替换使用状况</title>
    <link href="https://yunyitang.me/2019-google-alternative/"/>
    <id>https://yunyitang.me/2019-google-alternative/</id>
    <published>2019-08-05T23:22:40.000Z</published>
    <updated>2019-08-05T23:22:40.000Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>原链：<a href="https://www.douban.com/note/729041024/?_i=30202942oAFLwr">豆瓣笔记</a></p></blockquote><p>首先，利益相关，谷歌全家桶吹，科技产品苦手。</p><p>其次，整理出来的意思当然不是说，国内相关软件的目标就是完美模仿谷歌，这太 ummm 了。但为了自己使用方便，作为用户的我暂时也找功能上的替代品方便使用，应该不是太糟糕的选择吧。</p><p>最后，现在能想到的是个人目前的使用体验。因为并没有广撒网地尝试过很多软件，所以只是找到合适的就用着了，暂时没有不适合的感觉就没有换新的。食用愉快！</p><span id="more"></span><p>涉及的两个软件和用来替换使用的功能如下：</p><ul><li>滴答清单日历版面——谷歌日历（滴答清单看板版面——Trello）</li><li>石墨文档——谷歌文档、表格</li></ul><p>一开始最先找到的是 <strong>【石墨文档】</strong> <a href="https://shimo.im/welcome%EF%BC%8C%E7%94%A8%E4%BB%A5%E6%9B%BF%E6%8D%A2%E8%B0%B7%E6%AD%8C%E6%96%87%E6%A1%A3%E7%9A%84%E5%9C%A8%E7%BA%BF%E7%BC%96%E8%BE%91%E5%92%8C%E5%90%8C%E6%AD%A5%E4%BF%9D%E5%AD%98%E5%8A%9F%E8%83%BD%EF%BC%8C%E4%B8%AA%E4%BA%BA%E6%9C%89%E6%97%B6%E4%BC%9A%E7%94%A8%E4%B8%8A%E8%A1%A8%E6%A0%BC%E7%9A%84%E5%8A%9F%E8%83%BD%EF%BC%8C%E6%9A%82%E6%97%B6%E6%B2%A1%E6%9C%89%E7%94%A8%E4%B8%8A%E5%AE%83%E5%9B%A2%E9%98%9F%E7%9B%B8%E5%85%B3%E7%9A%84%E5%8A%9F%E8%83%BD%E3%80%82%E6%B2%A1%E6%9C%89%E6%B0%AA%E9%87%91%E3%80%82">https://shimo.im/welcome，用以替换谷歌文档的在线编辑和同步保存功能，个人有时会用上表格的功能，暂时没有用上它团队相关的功能。没有氪金。</a></p><p><img src="/images/2019-google/shimo-folder.jpg" alt="shimo folder" title="石墨网页版桌面"></p><p><strong>方便</strong>的是，石墨文档的编辑器功能用得很顺畅，页面设计很简洁。以这篇整理为例，我就是用石墨文档写的，链接如右<a href="https://shimo.im/docs/yxCkCVTV9DRHp8Y9/">https://shimo.im/docs/yxCkCVTV9DRHp8Y9/</a> 。与谷歌文档试用习惯相仿的是，因为它是多平台可用的，在不想背手提电脑出门的时候，可以在平板用，或者在可以找到的公共电脑登录试用。</p><p><img src="/images/2019-google/shimo-doc.jpg" alt="shimo document" title="石墨网页版桌面"></p><p><img src="/images/2019-google/shimo-phone.jpg" alt="shimo phone" title="石墨网页版桌面"></p><p>有所<strong>不同</strong>的是，谷歌文档和其他工具的组合试用，比如邮件和 drive，是石墨文档无法替代使用的功能。不过，在身边大部分人的使用习惯都不涉及这两个联动功能的时候，没有这两个功能也暂时没有实质上的不便。另外有个使用不便的是，安卓端的编辑不算很方便，也暂时不能横屏使用，对贫穷的安卓平板不是很友好；和客服也说过了，希望日后会有功能改进吧。</p><p>同类的其他线上编辑和团队编辑软件，没有用过所以不方便比较。不过随便一搜，能找到很多这方面的比较贴。（btw，更新的时候发现石墨的思维导图也可以用 bullet point 的形式编辑，或许幕布准备淘汰了。）</p><p>最近出于对电子日历时间轴计划的执念，找到了 <strong>【滴答清单】</strong> <a href="https://www.dida365.com/about/features%EF%BC%8C%E7%94%A8%E5%AE%83%E7%9A%84%E6%97%A5%E5%8E%86%E7%89%88%E9%9D%A2%EF%BC%88%E4%BC%9A%E5%91%98%E5%8A%9F%E8%83%BD%EF%BC%89%E6%9B%BF%E6%8D%A2%E8%B0%B7%E6%AD%8C%E6%97%A5%E5%8E%86%E4%BD%BF%E7%94%A8%EF%BC%8C%E5%B9%B6%E5%B0%9D%E8%AF%95%E4%BA%86%E6%89%93%E5%8D%A1%EF%BC%8C%E4%B9%9F%E5%9C%A8%E7%94%A8%E5%AE%83%E7%9A%84%E7%9C%8B%E6%9D%BF%E6%A8%A1%E5%BC%8F%EF%BC%88%E7%94%B5%E8%84%91%E7%AB%AF%EF%BC%89%E6%9B%BF%E6%8D%A2">https://www.dida365.com/about/features，用它的日历版面（会员功能）替换谷歌日历使用，并尝试了打卡，也在用它的看板模式（电脑端）替换</a> Trello 试用着，试用会员中。</p><p><img src="/images/2019-google/dida-cal.jpg" alt="dida calendar" title="滴答清单网页版日历版面"></p><p>日历方面基本可以完全<strong>胜任</strong>，就是使用感还是有些<strong>累赘</strong>，可能因为它是从清单软件发展过来的？感觉滴答清单很贪心，把番茄时钟、打卡、清单、日历、Trello 的功能都涵盖了。不好是累赘，而反过来好是可以<strong>各取所需</strong>。比如，我的申请计划就适合用它的看板模式（Trello），分成不同类别，个人感觉比打 tag 方便；而雅思复习计划，个人就更偏好在日历时间轴（周页面）里塞时间段任务。这样能把不同时间规划偏好塞在一个软件里，也算是大杂烩的一种好处吧。</p><p><img src="/images/2019-google/dida-kanban.jpg" alt="dida kanban" title="滴答清单网页版日历版面"></p><p><img src="/images/2019-google/dida-todo.jpg" alt="dida todo" title="滴答清单网页版日历版面"></p><p>本来在用的纸质计划本也还在用着，一是纸制品情结，二是作没有网的情况的应急。</p><p>只是很粗浅的近期体验，会在使用过程中继续更新。</p>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;原链：&lt;a href=&quot;https://www.douban.com/note/729041024/?_i=30202942oAFLwr&quot;&gt;豆瓣笔记&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;首先，利益相关，谷歌全家桶吹，科技产品苦手。&lt;/p&gt;
&lt;p&gt;其次，整理出来的意思当然不是说，国内相关软件的目标就是完美模仿谷歌，这太 ummm 了。但为了自己使用方便，作为用户的我暂时也找功能上的替代品方便使用，应该不是太糟糕的选择吧。&lt;/p&gt;
&lt;p&gt;最后，现在能想到的是个人目前的使用体验。因为并没有广撒网地尝试过很多软件，所以只是找到合适的就用着了，暂时没有不适合的感觉就没有换新的。食用愉快！&lt;/p&gt;</summary>
    
    
    
    <category term="日常" scheme="https://yunyitang.me/categories/life/"/>
    
    
    <category term="Google" scheme="https://yunyitang.me/tag/Google/"/>
    
  </entry>
  
</feed>
