<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on zeromake 的个人博客</title><link>/post/</link><description>Recent content in Posts on zeromake 的个人博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 25 May 2025 19:28:30 +0800</lastBuildDate><atom:link href="/post/index.xml" rel="self" type="application/rss+xml"/><item><title>gd32vw553 开发板入门笔记（带 LCD1062 驱动）</title><link>/pages/gd32vw553-introductory/</link><pubDate>Sun, 25 May 2025 16:28:26 +0800</pubDate><guid>/pages/gd32vw553-introductory/</guid><description>前言 最近开始玩嵌入式，看到 iceasy 在做样品评测活动就申请了一片，这里记录一下点灯和点 1602 LCD 屏的过程。 一、资源下载与环境搭建 先去 RISC-V 下载专区，下载 《GD</description></item><item><title>一加 ace5 root 笔记</title><link>/pages/oneplus-ace5-root/</link><pubDate>Fri, 03 Jan 2025 08:04:00 +0800</pubDate><guid>/pages/oneplus-ace5-root/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>最近买了一加 ace5 把 2020 年的 k30 pro 变焦版换了，买一加不买红米 k80 的原因很简单就是因为一加随便解锁 BL 而小米已经几乎不可能免费解锁 BL，这里做一下 root 笔记。&lt;/p></description></item><item><title>常用英文对照表</title><link>/pages/english-commonly-used-table/</link><pubDate>Tue, 20 Aug 2024 10:41:00 +0800</pubDate><guid>/pages/english-commonly-used-table/</guid><description>前言 经常有很多英文单词会见到，但是又懒得记，这里做一个对照表自己用。 一、星期 中文 英文 缩写 周一 Monday Mon. 周二 Tuesday Tues. 周三 Wednesday Wed. 周四 Thursday Thur. 周五 Friday Fri. 周六 Saturday Sat. 周日</description></item><item><title>在不使用 webpack，vite 的打包工具下使用 preact</title><link>/pages/not-pack-tool-use-react/</link><pubDate>Mon, 15 Jul 2024 15:36:00 +0800</pubDate><guid>/pages/not-pack-tool-use-react/</guid><description>前言 最近在做公司的新游戏，协议用的 ws，本来测试想直接用 hoppscotch.io 发现根本不行，没法按逻辑一个个去请求…… 但是必须立刻测试就想了一下用 html + js 写一个 demo</description></item><item><title>常用 shell 语法快查表</title><link>/pages/popular-shell-syntax-diff/</link><pubDate>Mon, 09 Oct 2023 11:43:00 +0800</pubDate><guid>/pages/popular-shell-syntax-diff/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>各种 shell 的语法根本记不住，这里整理一个快查文档。&lt;/p></description></item><item><title>nixos 安装笔记</title><link>/pages/nixos-install-notes/</link><pubDate>Thu, 05 Oct 2023 18:32:00 +0800</pubDate><guid>/pages/nixos-install-notes/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>有段时间用 &lt;code>archlinux&lt;/code>，每次更新系统都是非常的难受，&lt;code>aur&lt;/code> 用的倒是很爽，最近看到 &lt;code>nixos&lt;/code> 打算尝试一下，&lt;code>fhs&lt;/code> 有些时候还是太容易挂了。&lt;/p></description></item><item><title>tree-sitter 语法参考</title><link>/pages/tree-sitter-syntax/</link><pubDate>Sat, 23 Sep 2023 12:00:00 +0800</pubDate><guid>/pages/tree-sitter-syntax/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>最近发现很多终端编辑器 (helix) 都在使用 &lt;code>tree-sitter&lt;/code> 做语法高亮和代码提示功能，去看了一下感觉语法比起之前的 &lt;code>bison&lt;/code>, &lt;code>antlr4&lt;/code> 简单太多了，而且使用 js 来描述可以做出比较复杂的逻辑，这里做一个简单的创建解析器入门，具体的使用可以参考官网文档。&lt;/p></description></item><item><title>electron 做仅 asar 文件自动更新</title><link>/pages/electron-auto-updater-asar/</link><pubDate>Wed, 26 Apr 2023 16:10:12 +0800</pubDate><guid>/pages/electron-auto-updater-asar/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>最近公司需要使用 electron 制作一些 gui 工具提供给内部使用，制作完成后发现更新比较繁琐，使用 &lt;code>electron-updater&lt;/code> 做全量又没有必要，最后选择了仅做 asar 文件自动更新。&lt;/p></description></item><item><title>调研消息队列</title><link>/pages/research-message-queues/</link><pubDate>Thu, 17 Nov 2022 16:16:00 +0800</pubDate><guid>/pages/research-message-queues/</guid><description>前言 公司之前使用的消息队列方案由于是云平台提供的按次费的产品，这种产品都有一个问题，就是项目流量用户访问量上去以后就会不划算了，但是由于是平</description></item><item><title>go 的定时器暂停与恢复</title><link>/pages/go-timer-pause/</link><pubDate>Tue, 11 Jan 2022 04:01:00 +0000</pubDate><guid>/pages/go-timer-pause/</guid><description>前言 最近在工作中遇到游戏里经常有延时逻辑，需要延迟多少秒后给客户端发送消息让客户端进行动画与逻辑，在这个基础上，来了一个加需求，用户在这些过</description></item><item><title>使用traefik2暴露k8s-dashboard</title><link>/pages/traefik2-configure-dashboard/</link><pubDate>Mon, 20 Dec 2021 12:25:00 +0800</pubDate><guid>/pages/traefik2-configure-dashboard/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>在之前的 &lt;a href="/pages/k3s-install">k3s 安装笔记&lt;/a> 里有怎么使用 &lt;code>traefik1&lt;/code> 去暴露 &lt;code>k8s-dashboard&lt;/code> 的 &lt;code>https&lt;/code> 端口。&lt;/p></description></item><item><title>google play 订阅接入</title><link>/pages/google-play-subscriptions/</link><pubDate>Thu, 14 Oct 2021 14:38:26 +0800</pubDate><guid>/pages/google-play-subscriptions/</guid><description>前言 由于 Google Play 的订阅有 13 种状态，在各种状态流转的复杂性超过我的想象，甚至有推送消息内的触发时间更早的消息更晚到的情况。 这里写一篇博文来记录各种</description></item><item><title>替换 time.Now 为自定义函数</title><link>/pages/replace-now-offset/</link><pubDate>Wed, 22 Sep 2021 10:02:00 +0000</pubDate><guid>/pages/replace-now-offset/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>我这边业务里有大量的时间过期逻辑，也有不少定时触发的业务，这个时候这些业务完成后到了测试手里他们都有个疑问如何测试时间相关的功能，所以这里就做了各种方案去想办法替换 &lt;code>time.Now&lt;/code>。&lt;/p></description></item><item><title>有状态服务的滚动更新</title><link>/pages/stateful-rolling-update/</link><pubDate>Tue, 21 Sep 2021 12:25:00 +0800</pubDate><guid>/pages/stateful-rolling-update/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>作为后端我们时常遇到服务的更新，而作为 &lt;code>http&lt;/code> 服务的后端则一般是不用考虑这件事的，因为 &lt;code>http&lt;/code> 服务的必须是无状态的，只需要在服务前加一个负载均衡就可以做到轻松的滚动更新，让用户无感知更新。但是我现在的工作的服务上包含的有状态的情况，但是更新又是必须的。&lt;/p></description></item><item><title>(翻译)终极 channel</title><link>/pages/ultimete-channel/</link><pubDate>Sun, 05 Sep 2021 13:43:00 +0800</pubDate><guid>/pages/ultimete-channel/</guid><description>&lt;p>Author(s): &lt;a href="https://changkun.de">Changkun Ou&lt;/a>&lt;/p>
&lt;p>Permalink: &lt;a href="https://golang.design/research/ultimate-channel">https://golang.design/research/ultimate-channel&lt;/a>&lt;/p>
&lt;p>最近，我一直在重新思考图形应用程序的编程模式，并且已经用 Go 编写了一个 3D 图形包,
叫 &lt;a href="https://poly.red">polyred&lt;/a>。
在我设计渲染管道 API 时，一个棘手的问题困扰了我一段时间，最终导致我创建了一个无界通道(unbounded channel)作为解决方案。&lt;/p></description></item><item><title>Windows 的终端配置(给 git-windows 添加 msys2 包管理器)</title><link>/pages/windows-terminal-configuration/</link><pubDate>Sat, 14 Aug 2021 00:28:00 +0800</pubDate><guid>/pages/windows-terminal-configuration/</guid><description>前言 因为 macbook pro 本性能不够(主要是没有独显带不动双 4k 有点卡)，又摸了个 r9000p 当然这个也完全只能装 windows10 了。 所以需要在 windows10 上重新配置开发环境，这篇博文讲我的</description></item><item><title>k3s 安装笔记</title><link>/pages/k3s-install/</link><pubDate>Fri, 30 Jul 2021 15:48:00 +0800</pubDate><guid>/pages/k3s-install/</guid><description>前言 最近因工作，需要有一个 k8s 环境，观察了不少单机部署方案都很差劲，最后看到 k3s 官方的文档里直接有各种安装方案，最终部署下来也是比较方便，完全没</description></item><item><title>设计模式笔记</title><link>/pages/design-patterns/</link><pubDate>Tue, 20 Jul 2021 12:25:00 +0800</pubDate><guid>/pages/design-patterns/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>前段时间面试发现各种设计模式并未正确使用，而且很多设计模式明明在用却不知道是什么设计模式。&lt;/li>
&lt;li>记录一下这些设计模式。&lt;/li>
&lt;/ul></description></item><item><title>使用 Redis 做排行榜</title><link>/pages/redis-rank/</link><pubDate>Wed, 07 Apr 2021 11:51:00 +0000</pubDate><guid>/pages/redis-rank/</guid><description>前言 一、需求 用户打开排行榜及加入该排行榜。 排行榜以排行榜积分和加入排行榜时间来排序。 排行榜满一定数量就开始分榜，每个分榜单独进行排名。 排行榜</description></item><item><title>(翻译)size classes 的应用</title><link>/pages/a-few-bytes-here-a-few-there/</link><pubDate>Sat, 06 Feb 2021 00:32:00 +0000</pubDate><guid>/pages/a-few-bytes-here-a-few-there/</guid><description>原文地址 今天文章来自一个最近流行的测试，思考一下这个基准测试代码片段。1 1 2 3 4 5 6 7 func BenchmarkSortStrings(b *testing.B) { s := []string{&amp;#34;heart&amp;#34;, &amp;#34;lungs&amp;#34;, &amp;#34;brain&amp;#34;, &amp;#34;kidneys&amp;#34;, &amp;#34;pancreas&amp;#34;} b.ReportAllocs() for i := 0; i &amp;lt; b.N; i++ { sort.Strings(s) } } 我们经</description></item><item><title>Starlark使用</title><link>/pages/starlark-used/</link><pubDate>Thu, 11 Jun 2020 07:53:00 +0000</pubDate><guid>/pages/starlark-used/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>最近需要在 &lt;code>Golang&lt;/code> 里嵌入一个脚本语言，现在对于 &lt;code>Golang&lt;/code> 来说比较成熟的有 &lt;code>python&lt;/code>, &lt;code>javascript&lt;/code>, &lt;code>lua&lt;/code> 的第三方作为内嵌脚本执行引擎。&lt;/p>
&lt;p>其中我使用了 &lt;code>starlark&lt;/code> 主要是大部分兼容 &lt;code>python&lt;/code> 语法，并且比起其他的脚本实现它实际上是没有 &lt;code>vm&lt;/code> 的更加的轻量。&lt;/p></description></item><item><title>Mongodb一些查询笔记</title><link>/pages/mongodb-query-note/</link><pubDate>Thu, 11 Jun 2020 07:24:00 +0000</pubDate><guid>/pages/mongodb-query-note/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>最近在做一些 &lt;code>mongodb&lt;/code> 的查询记一下笔记。&lt;/p></description></item><item><title>go-spring 使用学习</title><link>/pages/go-spring-learn/</link><pubDate>Sat, 21 Dec 2019 12:05:26 +0000</pubDate><guid>/pages/go-spring-learn/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>最近发现了 &lt;a href="https://github.com/go-spring/go-spring">go-spring&lt;/a>&lt;/li>
&lt;li>看了一下比起其它的 &lt;code>di&lt;/code> 库感觉挺不错的，写篇博文记录一下&lt;/li>
&lt;/ul></description></item><item><title>(翻译)Go 高性能研讨讲座 - High Performance Go Workshop</title><link>/pages/high-performance-go-workshop/</link><pubDate>Fri, 06 Dec 2019 15:58:20 +0000</pubDate><guid>/pages/high-performance-go-workshop/</guid><description>&lt;blockquote>
&lt;p>&lt;a href="https://dave.cheney.net/high-performance-go-workshop/gopherchina-2019.html">原文地址&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>本次研讨讲座的目标是让您能够诊断 &lt;code>Go&lt;/code> 应用程序中的性能问题，并且修复这些问题。&lt;/p>
&lt;p>这一天，我们将从小做起 - 学习如何编写基准测试，然后分析一小段代码。然后讨论代码执行跟踪器，垃圾收集器和跟踪运行的应用程序。最后会有剩下的时间，您可以提出问题，并尝试编写您自己的代码。&lt;/p></description></item><item><title>离职总结</title><link>/pages/resignation-summary-2019/</link><pubDate>Sat, 26 Oct 2019 05:23:44 +0000</pubDate><guid>/pages/resignation-summary-2019/</guid><description>前言 对离职做个系统的总结，并且定好改善方案。 一、技术提升 在这个公司的日常工作中几乎没有提升技术的情况，全部都是大量的业务性需求。 虽然不是简单</description></item><item><title>机器学习第三周</title><link>/pages/machine-learning-week-3/</link><pubDate>Thu, 10 Oct 2019 06:11:00 +0000</pubDate><guid>/pages/machine-learning-week-3/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>继续上一篇的的学习, 这一篇继续第三周的学习进度，使用逻辑回归来做分类。&lt;/p></description></item><item><title>sequelize一些陷阱</title><link>/pages/sequelize-trap/</link><pubDate>Thu, 19 Sep 2019 08:58:00 +0000</pubDate><guid>/pages/sequelize-trap/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>最近接手一些公司的其它 &lt;code>node&lt;/code> 项目，&lt;code>orm&lt;/code> 框架从 &lt;code>knex&lt;/code> + &lt;code>bookshelf&lt;/code> 切换到了 &lt;code>sequelize&lt;/code> 了。&lt;/li>
&lt;li>在试着像 &lt;code>knex&lt;/code> + &lt;code>bookshelf&lt;/code> 一样来使用 &lt;code>sequelize&lt;/code> 发现了一些问题，记录下来。&lt;/li>
&lt;/ul></description></item><item><title>机器学习第二周</title><link>/pages/machine-learning-week-2/</link><pubDate>Sun, 15 Sep 2019 06:11:00 +0000</pubDate><guid>/pages/machine-learning-week-2/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>继续上一篇的的学习，这一篇继续第二周的学习进度, 主要内容为多特征，Octave 使用。&lt;/p></description></item><item><title>机器学习第一周</title><link>/pages/machine-learning-week-1/</link><pubDate>Sun, 18 Aug 2019 05:53:00 +0000</pubDate><guid>/pages/machine-learning-week-1/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>近几年机器学习很火，但是我对机器学习的了解仅仅在能做可学习的一种程序，通过大量的数据集训练到达目标，但是内部到达是怎么做的完全不知道。&lt;/li>
&lt;li>这里决通过 &lt;code>斯坦福大学(coursera)&lt;/code> 的 &lt;a href="https://www.coursera.org/learn/machine-learning">machine-learning&lt;/a> 免费公开课进行学习，并且把学到的知识整理为一篇一篇博文。&lt;/li>
&lt;li>第一篇的篇幅主要讲 &lt;code>机器学习的定义&lt;/code>，&lt;code>监督学习&lt;/code>，&lt;code>无监督学习&lt;/code>，&lt;code>线性回归&lt;/code>，&lt;code>梯度下降&lt;/code>。&lt;/li>
&lt;li>顺便整理一个专有词对应表。&lt;/li>
&lt;/ul></description></item><item><title>Mac 环境配置</title><link>/pages/mac-environment-configuration/</link><pubDate>Tue, 30 Jul 2019 04:04:00 +0000</pubDate><guid>/pages/mac-environment-configuration/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ol>
&lt;li>&lt;del>最近向公司申请了新的 &lt;code>19&lt;/code> 款 &lt;code>MacBook Pro&lt;/code>，需要重新搭建环境，因为一些网络上的资料过时的原因，记录一下搭建流程备忘。&lt;/del>&lt;/li>
&lt;li>最近刚买了新的 &lt;code>2020&lt;/code> 款 &lt;code>MacBook Pro&lt;/code>，重新更新一下这篇博文。&lt;/li>
&lt;li>最近的 &lt;code>github&lt;/code> 开始各种抽风，可以参考这个 &lt;a href="https://github.com/RC1844/FastGithub">脚本&lt;/a> 的 &lt;code>README&lt;/code> 去使用镜像替换对应的地址。&lt;/li>
&lt;/ol></description></item><item><title>修改 helm 模板支持阿里云</title><link>/pages/helm-ailyun-deploy/</link><pubDate>Fri, 12 Apr 2019 08:25:21 +0000</pubDate><guid>/pages/helm-ailyun-deploy/</guid><description>&lt;h2 id="一前言">一、前言&lt;/h2>
&lt;ol>
&lt;li>最近公司内部需要在 &lt;code>k8s&lt;/code> 上部署一些东西，然后发现现在有了一个 &lt;code>helm&lt;/code> 的工具能够快速的部署。&lt;/li>
&lt;li>对于普通的 &lt;code>k8s&lt;/code> 阿里云上则需要有一些特殊的操作，这边记录一下如何修改 &lt;code>helm&lt;/code> 的模板以支持阿里云的部署。&lt;/li>
&lt;/ol></description></item><item><title>docker 容器调试新姿势</title><link>/pages/docker-debug/</link><pubDate>Fri, 22 Mar 2019 04:32:21 +0000</pubDate><guid>/pages/docker-debug/</guid><description>&lt;h2 id="一前言">一、前言&lt;/h2>
&lt;ol>
&lt;li>我在平时工作中经常使用 &lt;code>docker&lt;/code> 来创建自己的开发环境，比如 &lt;code>mysql&lt;/code>, &lt;code>redis&lt;/code> 之类的。&lt;/li>
&lt;li>有些时候需要把现有的容器里的服务配置进行变更，&lt;code>docker exec&lt;/code> 进入容器后发现很多基础命令工具(vim, nano)都没有，这让我很苦恼。&lt;/li>
&lt;li>再后来看到 &lt;a href="https://github.com/aylei">@github/aylei&lt;/a> 的 &lt;a href="https://github.com/aylei/kubectl-debug">kubectl-debug&lt;/a> 发现了容器之间可以共享各种资源。&lt;/li>
&lt;li>但是 &lt;code>kubectl-debug&lt;/code> 只能够提供给 &lt;code>kubernetes&lt;/code> 进行使用，所以我这边模仿了 &lt;code>kubectl-debug&lt;/code> 写了一个 &lt;a href="https://github.com/zeromake/docker-debug">docker-debug&lt;/a>。&lt;/li>
&lt;/ol></description></item><item><title>(翻译)docker 镜像中有什么？</title><link>/pages/whats-in-a-docker-image/</link><pubDate>Sat, 09 Mar 2019 04:58:39 +0000</pubDate><guid>/pages/whats-in-a-docker-image/</guid><description>&lt;blockquote>
&lt;p>翻译自 &lt;a href="https://cameronlonsdale.com/2018/11/26/whats-in-a-docker-image/">whats-in-a-docker-image&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>这是一个很好的问题，在你知道答案之前，&lt;code>docker&lt;/code> 镜像看起来很神秘。&lt;/p>
&lt;p>我不仅想告诉你答案，还想告诉你我是如何找到这个答案的。&lt;/p></description></item><item><title>位操作的应用</title><link>/pages/bit-operation-applying/</link><pubDate>Thu, 28 Feb 2019 02:30:00 +0000</pubDate><guid>/pages/bit-operation-applying/</guid><description>&lt;h2 id="一前言">一、前言&lt;/h2>
&lt;ol>
&lt;li>最近在工作中、技术问答、开源库中常见到不少的位操作。&lt;/li>
&lt;li>但是却发现蛮多人知道有位操作，但是应用于业务项目中的很少，经常是见到没有反应过来。&lt;/li>
&lt;li>这里我介绍一些位操作的在业务中的使用，希望大家在见到位操作时能够想起这是什么。&lt;/li>
&lt;/ol></description></item><item><title>面试见闻</title><link>/pages/interview-knowledge/</link><pubDate>Fri, 14 Sep 2018 23:42:57 +0000</pubDate><guid>/pages/interview-knowledge/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ol>
&lt;li>8 月 29 日被辞退后到 9 月 13 日之间的一些面试见闻。&lt;/li>
&lt;li>这里不会写出面试的公司名字。&lt;/li>
&lt;li>这里不会出现具体薪资。&lt;/li>
&lt;li>具体的面试题很多都忘了，这个一个不好的事情，希望下次改变。&lt;/li>
&lt;/ol></description></item><item><title>HTTP2 协议解析</title><link>/pages/http2-protocol/</link><pubDate>Fri, 10 Aug 2018 06:05:57 +0000</pubDate><guid>/pages/http2-protocol/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>最近工作都在做跟 &lt;code>http2&lt;/code> 协议有关的东西，记录下协议的格式与资料。&lt;/li>
&lt;li>下篇(&lt;del>这篇&lt;/del>)文章中会简略的写出一个支持高并发的 &lt;code>golang&lt;/code> 的 &lt;code>http2&lt;/code> 转发器。&lt;/li>
&lt;/ul></description></item><item><title>leetcode 1-5 算法题</title><link>/pages/leetcode-1-5/</link><pubDate>Thu, 28 Jun 2018 06:05:57 +0000</pubDate><guid>/pages/leetcode-1-5/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>最近也还是没怎么写博文，所以打算直接找个不用怎么难写的算法来写写博客。&lt;/li>
&lt;li>为了加深印象，需要书写博文进行归纳，并且进行伪代码连续，以及手写算法。&lt;/li>
&lt;li>这边会缓慢更新。&lt;/li>
&lt;/ul></description></item><item><title>python 编码</title><link>/pages/python-coding/</link><pubDate>Fri, 04 May 2018 05:33:00 +0000</pubDate><guid>/pages/python-coding/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>最近对 &lt;code>python&lt;/code> 的编码感觉到很迷，&lt;code>python2&lt;/code> 和 &lt;code>python3&lt;/code> 的 str bytes 完全不一样。&lt;/li>
&lt;li>这边记录下各种方式输入的字符串编码，以及各种编码对象的转换备忘。&lt;/li>
&lt;/ul></description></item><item><title>ipmsg 协议</title><link>/pages/ipmsg-protocol/</link><pubDate>Mon, 12 Mar 2018 08:10:00 +0000</pubDate><guid>/pages/ipmsg-protocol/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>最近看了一下 飞鸽传书(ipmsg) 突然对它的协议有了兴趣，这边找了官方的来自行翻译&lt;/li>
&lt;/ul></description></item><item><title>openapi3 使用</title><link>/pages/open-api-3/</link><pubDate>Wed, 07 Mar 2018 02:22:00 +0000</pubDate><guid>/pages/open-api-3/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ol>
&lt;li>最近一直在用业余时间写一个个人项目,其中为了学习各种 &lt;code>python&lt;/code> 新特性, 使用了各种新技术其中就使用了 openapi3 来描述 api。&lt;/li>
&lt;li>这篇博文就来说明和封装一套生成 openapi 配置。&lt;/li>
&lt;li>这里只讲述 openapi3 的配置结构，并与官方文档统一使用 &lt;code>yaml&lt;/code> 格式来说明。&lt;/li>
&lt;li>由于使用 &lt;code>python&lt;/code> 代码中的配置与 &lt;code>json&lt;/code> 格式相同。&lt;/li>
&lt;li>在阅读此文前请自行了解 &lt;code>json&lt;/code>, &lt;code>yaml&lt;/code>。&lt;code>python&lt;/code> 生成代码部分可无视。&lt;/li>
&lt;/ol></description></item><item><title>pipenv 使用</title><link>/pages/pipenv-use/</link><pubDate>Wed, 22 Nov 2017 05:04:00 +0000</pubDate><guid>/pages/pipenv-use/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>最近用了&lt;code>pipenv&lt;/code>感觉挺不错的，写篇博文来推广一下。&lt;/p></description></item><item><title>element-ui 升级 2.x 问题</title><link>/pages/element-ui-update-2/</link><pubDate>Wed, 22 Nov 2017 03:20:00 +0000</pubDate><guid>/pages/element-ui-update-2/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>最近在升级&lt;code>element-ui&lt;/code>到 2.x 其中碰到一些坑标记一下。&lt;/p></description></item><item><title>ci 自动部署</title><link>/pages/ci-auto-deploy/</link><pubDate>Tue, 31 Oct 2017 07:44:00 +0000</pubDate><guid>/pages/ci-auto-deploy/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>很久没写博文了，最近正好公司内部需要进行 ci 自动部署，就写一篇 ci 自动部署。其中分为两种，公开项目，私有项目&lt;/p></description></item><item><title>preact 执行流程</title><link>/pages/preact-flow/</link><pubDate>Sun, 30 Jul 2017 00:46:04 +0000</pubDate><guid>/pages/preact-flow/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>应&lt;a href="https://github.com/ToPeas">@ToPeas&lt;/a>的&lt;a href="https://github.com/zeromake/zreact#1">Issue&lt;/a>来描述下 preact 的流程。&lt;/li>
&lt;li>这里决定使用我自己改过的&lt;a href="https://github.com/zeromake/zreact/tree/flow">zreact&lt;/a>的 flow 分支，这个分支的代码不会再变。&lt;/li>
&lt;/ul></description></item><item><title>preact 源码解读(2)</title><link>/pages/preact-source-read-2/</link><pubDate>Wed, 26 Jul 2017 07:23:04 +0000</pubDate><guid>/pages/preact-source-read-2/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>这里是第二篇，&lt;a href="https://blog.zeromake.com/pages/preact-source-read-1">第一篇在这里&lt;/a>&lt;/li>
&lt;li>这次讲 Component，以及它的一些轻量依赖。&lt;/li>
&lt;li>顺便说下&lt;a href="https://segmentfault.com/u/situzhengmei/articles">司徒正美的 preact 源码学习&lt;/a>&lt;/li>
&lt;li>感觉比我写的好多了，图文并茂，还能提出和其它如 React 的源码比较。&lt;/li>
&lt;li>我唯一好点的可能就是代码几乎每行都有注释，并且使用了 typescript 添加了类型的标注。&lt;/li>
&lt;/ul></description></item><item><title>preact 源码解读(1)</title><link>/pages/preact-source-read-1/</link><pubDate>Mon, 24 Jul 2017 08:23:04 +0000</pubDate><guid>/pages/preact-source-read-1/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>和上次说的一样这次带来&lt;code>preact&lt;/code>的解读&lt;/li>
&lt;li>preact 实际上把它当作是一个精简版&lt;code>react&lt;/code>就好了。&lt;/li>
&lt;li>这次我抄下了&lt;code>preact&lt;/code>，并且改写了代码, 命名为&lt;code>zreact&lt;/code>&lt;/li>
&lt;li>把之前将事件，props 之类的单独放出来，这样这份&lt;code>zreact&lt;/code>。&lt;/li>
&lt;li>可以支持 ie8，虽然并没有什么用。&lt;/li>
&lt;li>这次代码解读顺序按使用 preact 的代码顺序。&lt;/li>
&lt;li>这里是第一篇，createElement，也就是 vue,react 的 render 所返回的 VNode 对象。&lt;/li>
&lt;li>平常则是使用 babel+jsx 来生成 createElement 调用。&lt;/li>
&lt;li>vue 常用则是 template，但是通过 webpack 会做到预先转换为 render。&lt;/li>
&lt;/ul></description></item><item><title>promise-and-co-make</title><link>/pages/promise-and-co-make/</link><pubDate>Mon, 10 Jul 2017 07:24:39 +0000</pubDate><guid>/pages/promise-and-co-make/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ol>
&lt;li>上篇博客写着写着没动力，然后就拖了一个月。&lt;/li>
&lt;li>现在打算在一周内完成。&lt;/li>
&lt;li>这篇讲&lt;code>Promise&lt;/code>和&lt;code>co&lt;/code>的原理+实现。&lt;/li>
&lt;/ol></description></item><item><title>vue-ssr-static-blog</title><link>/pages/vue-ssr-static-blog/</link><pubDate>Thu, 01 Jun 2017 06:37:39 +0000</pubDate><guid>/pages/vue-ssr-static-blog/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>自上次博文又快过去一个月了，感觉之前想写的东西现在写了也没什么意义。&lt;/li>
&lt;li>这回来说下我博客改造成&lt;code>vue&lt;/code>服务端渲染并且生成静态&lt;code>html&lt;/code>&lt;/li>
&lt;li>这样就可以放到 github-pages 上了。&lt;/li>
&lt;/ul></description></item><item><title>karma 使用 webpack 的代码覆盖率测试</title><link>/pages/karma-webpack-istanbul/</link><pubDate>Sun, 07 May 2017 06:21:46 +0000</pubDate><guid>/pages/karma-webpack-istanbul/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>距离上一次博客有 2 个月了，倒不是没有可写东西就是提不起劲写。&lt;/li>
&lt;li>不说这些了这次写下我使用 &lt;code>karma + webpack&lt;/code> 中遇到的代码覆盖率问题。&lt;/li>
&lt;/ul></description></item><item><title>为 koa 定制 webpack 的中间件</title><link>/pages/koa-webpack-middleware/</link><pubDate>Wed, 01 Mar 2017 13:33:04 +0000</pubDate><guid>/pages/koa-webpack-middleware/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>在前面的对&lt;code>vue-ssr&lt;/code>改造为&lt;code>koa&lt;/code>的&lt;code>web&lt;/code>框架，我使用了一个第三方 npm 库。&lt;/li>
&lt;li>包名为 &lt;del>&lt;code>koa2-webpack-middleware-zm&lt;/code>&lt;/del> 已迁移到&lt;code>koa-webpack-middleware-zm&lt;/code>。&lt;/li>
&lt;li>这个包是我自己因为 ssr 的特殊需求&lt;code>github&lt;/code>上并没有合适的包。&lt;/li>
&lt;li>所以自行参考了&lt;a href="ttps://github.com/leecade/koa-webpack-middleware">koa-webpack-middleware&lt;/a>后写出的包。&lt;/li>
&lt;li>并且修复原有包的一些 bug。&lt;/li>
&lt;li>这篇博文我将写以下内容&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;ul>
&lt;li>koa 中间件的编写。&lt;/li>
&lt;li>把&lt;code>webpack-dev-middleware&lt;/code>这种&lt;code>express&lt;/code>中间件改造为一个&lt;code>koa&lt;/code>中间件。&lt;/li>
&lt;/ul>
&lt;/blockquote></description></item><item><title>vue-ssr-koa2</title><link>/pages/vue-ssr-koa2/</link><pubDate>Sun, 19 Feb 2017 10:36:25 +0000</pubDate><guid>/pages/vue-ssr-koa2/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;ul>
&lt;li>在之前的&lt;a href="http://blog.zeromake.com/pages/vue-ssr">vue-ssr&lt;/a>中我是使用 express 来做 ssr 服务器+api 服务器。&lt;/li>
&lt;li>但是有些时候可能我希望换一个 web 框架。&lt;/li>
&lt;li>所以就有了这篇闲的慌系类。&lt;/li>
&lt;li>vue-ssr 中使用 koa2 来替代 express&lt;/li>
&lt;/ul></description></item><item><title>vue-ssr</title><link>/pages/vue-ssr/</link><pubDate>Sat, 18 Feb 2017 05:17:25 +0000</pubDate><guid>/pages/vue-ssr/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>自从前端技术栈换到 &lt;code>mvvm&lt;/code> 之类的以后网站的源码查看就只会有一些 js 了，对于用户是没什么问题但是却对 &lt;code>seo&lt;/code> 有很大的问题。&lt;/p>
&lt;p>因为百度之类的爬虫不会执行 js 来渲染所以无法得到内容。大部分主流的&lt;code>mvvm&lt;/code>框架都有了 &lt;code>ssr(Server Side Rendering)&lt;/code> 意为服务端渲染。
&lt;del>不是手游的 ssr，好像暴露了什么&lt;/del>&lt;/p></description></item><item><title>vue 不使用构建工具懒加载</title><link>/pages/vue_not_webpack_router_async/</link><pubDate>Mon, 07 Nov 2016 09:13:25 +0000</pubDate><guid>/pages/vue_not_webpack_router_async/</guid><description>&lt;h1 id="vue-不使用-webpackvue_router-怎么异步">vue 不使用 webpack,vue_router 怎么异步&lt;/h1>
&lt;p>公司项目都是后台管理项，肯定是导航加主显示区的方式切换，然后就想着用 vue_router 看看。
然后发现 vue_router 的 component 是同步加载的。。要是后台功能多 js 就很大了，这个就是所谓的单页应用。
但是单页应用不用 webpack 打包手动把 js 写一个也太蛋疼了。然后发现了 webpack 用 chunk 可以异步会把每个路由的 js 单独打包。
具体的原理下面也会讲解。&lt;/p></description></item><item><title>vue 不使用构建工具</title><link>/pages/vue_not_webpack/</link><pubDate>Fri, 04 Nov 2016 05:10:25 +0000</pubDate><guid>/pages/vue_not_webpack/</guid><description>&lt;p>看到各种 vue 入门全部都是 webpack 的我表示没有什么问题。但是却发觉无法将这些 webpack 的工作流推荐给其它人。一说 npm,webpack,babel 什么的纷纷表示太麻烦。&lt;/p>
&lt;p>也许他们还是更喜欢 cdn 引入，手写 js 吧。所以这个就是纯粹的 vue 不用 webpack 不用 babel。直接用我们喜欢的 es5 的 js 写。等到觉得 vue 的好再推荐他们 webpack 什么的。&lt;/p>
&lt;p>然后模块化还是需要一个所有我选择了 requirejs。&lt;/p></description></item><item><title>javascript 的模块化</title><link>/pages/javascript_modular/</link><pubDate>Fri, 12 Aug 2016 04:18:25 +0000</pubDate><guid>/pages/javascript_modular/</guid><description>&lt;h2 id="一为何而生">一、为何而生&lt;/h2>
&lt;p>这个些模块加载都是为了更好的管理 js 文件，以及引用其他文件更加方便，并且使每一个模块的全局域不再互相污染。模块化后可以使用&lt;code>npm&lt;/code>进行管理以便分享。&lt;/p></description></item><item><title>Android 的 aidl 相互通信机制</title><link>/pages/android-aidl/</link><pubDate>Sun, 03 Jan 2016 05:42:01 +0000</pubDate><guid>/pages/android-aidl/</guid><description>&lt;h2 id="service-使用-aidl-的与-activity-相互交互">Service 使用 aidl 的与 Activity 相互交互&lt;/h2>
&lt;h4 id="一为什么要使用-aidl">一、为什么要使用 aidl&lt;/h4>
&lt;p>原因是当我们的 Client 和 Service 不是同一个进程时是无法直接使用的，而在 android 中进程间通讯的方法有 Activity、Content Provider、Broadcast 和 Service。
其中 Activity 需要界面，隐式调用没有回调 Broadcast 的接收对象经常会重新被实例化，且以上两种都是通过 intent 传送。回调不能完成交互。
Content Provider 则只提供数据，Service 有 aidl 这门进程间调用函数的机制。&lt;/p></description></item></channel></rss>