-
在 PVE 中配置基于 Docker 的 GitLab Runner
介绍如何在 Proxmox VE 的 LXC 容器中配置 GitLab Runner,使用 Docker executor 来实现 CI/CD 环境的隔离和高效构建。
-
使用 restic 备份 vaultwarden 数据
本文介绍如何使用 restic 工具备份 vaultwarden 数据,包括安装、初始化、创建备份脚本和定期执行备份任务的详细步骤。
-
如何在网络出问题时自动重启 OpenClash
本文介绍了一个自动检测网络并在必要时重启 OpenClash 的脚本,帮助维持稳定的网络连接,特别是在家庭网络环境中。
-
使用 grafana-alloy 监控盒子数据
本文详细介绍了如何使用 grafana-alloy 监测盒子数据,使你能看到盒子的上传下载速度等相关
-
存储升级记录
这是一篇关于存储升级的记录。作者详细描述了硬盘的选择、转接卡带宽问题、供电问题、硬盘的具体情况以及文件系统的选择。作者最终选择了LVM管理硬盘,并对硬盘进行了详细的规划和分配。
-
使用 Cloudflare Tunnel 访问 K3S 集群服务
本文详细介绍了如何使用 Cloudflare Tunnel 访问 K3S 集群服务。作者分享了 Cloudflare Tunnel 的工作原理、注册流程、在 K3S 集群中的配置方法,以及如何更新和管理 ingress 规则。文章还讨论了这种方法相比传统内网穿透工具的优势,包括免费、简单配置、高带宽和灵活性。对于希望从互联网安全访问家庭实验室或内网服务的用户来说,这是一个实用的解决方案。
-
使用 k3s 和 tailscale 在甲骨文云和家之间搭建 kubernetes 集群
本文详细介绍了如何使用 k3s 和 tailscale 在甲骨文云和家庭网络之间搭建 Kubernetes 集群。作者分享了在甲骨文云上部署 k3s 的挑战,以及如何通过在家里的 PVE 上搭建 k3s server 并使用 tailscale 连接所有节点来解决这些问题。文章还包括了配置步骤、验证方法、部署测试应用以及性能测试结果,为读者提供了一个完整的实践指南。
-
使用 PM2 实时同步 Logseq 文件到 GitHub
把 Logseq 笔记同步到 GitHub 是一个常见的需求,但是之前的定时同步方案存在一些问题,例如同步时间间隔过长。为了解决这个问题,作者提出了一种使用 PM2 实时同步 Logseq 文件到 GitHub 的方案。该方案通过监听 Logseq 文件夹的变化,当检测到文件变化后立即执行 git 同步。文章详细介绍了如何使用 PM2 实现该方案,并提供了相应的代码示例
-
如何为 pve 系统新增用户
本文介绍了如何在 Proxmox VE (PVE) 中添加 PVE 用户和 PAM 用户以及如何分配权限。根据需要选择不同类型的用户,PAM 用户适用于需要 SSH 登陆的场景,而 PVE 用户仅适用于在 Web 上操作的场景。按照本文的步骤,你可以轻松地在 PVE 中管理用户及其权限。
-
2022 个人总结
这篇文章是作者对自己在 2022 年所读过的书、看过的电影、玩过的游戏以及使用的数码设备的总结。作者列出了自己读过的书和看过的电影,并对其中的一些作品进行了简短的评价。作者还提到了自己在阅读过程中遇到的一些问题,以及如何克服这些问题。此外,作者还分享了自己玩过的游戏和使用的数码设备,并对其中一些设备进行了评价。在技术方面,作者分享了自己在 GitHub 上的提交情况以及学习 DevOps 相关概念的经历。作者还介绍了自己搭建 homelab 的过程,并分享了一些自己觉得比较好用的服务。总体来说,这篇文章是作者对自己在 2022 年的生活和技术方面的总结
-
Logseq 同步方案设计
这篇文章是作者分享了自己如何在 Logseq 笔记应用中使用 iCloud 和 GitHub 进行同步的方案。作者首先介绍了自己在使用 Logseq 时遇到的问题,即无法在公司的开发机上使用 iCloud 进行同步。为了解决这个问题,作者使用了 GitHub 进行同步,但是发现这个方案会导致 git 记录冲突。作者介绍了自己如何使用 unison 工具进行双向同步,以及如何使用 cloud-ignore-files 仓库来忽略同步时的冲突。作者还分享了自己如何在 Mac mini 上设置定时任务来自动同步数据,并提供了详细的设置步骤。总体来说,这篇文章是一篇技术性的文章,适合对 Logseq 和同步方案感兴趣的读者阅读。
-
记一次树莓派磁盘占满的排查流程
这篇文章是作者分享了自己在使用树莓派时遇到的磁盘空间满的问题以及解决方案。作者介绍了自己如何使用 df 命令查看磁盘的基本占用情况,以及如何使用 ncdu 命令查看具体每个文件占用率。作者还分享了自己如何使用 tail -n 命令查看指定文件的最后几行的内容,以及如何使用 journalctl 命令方便地管理 systemd 产生的日志。最后,作者总结了自己从这次问题中学到的几个 Linux 技能,并提醒自己在编写代码时要严谨对待日志,确保日志不会疯狂输出导致占满用户的磁盘空间。总体来说,这篇文章是一篇技术性的文章,适合对树莓派和 Linux 系统感兴趣的读者阅读。
-
async-flow:一个帮助我们用声明式的代码风格编写复杂异步逻辑的轮子
这篇文章介绍了作者开发的一个名为 async-flow 的 JavaScript 库,它可以帮助开发者用声明式的代码风格编写复杂异步逻辑。作者以一个关于作业的 app 为例,说明了不同角色和场景下请求不同 API 接口和数据结构的情况,以及如何使用 async-flow 封装这些异步逻辑的差异性,对外部不可见。文章介绍了 async-flow 的主要功能,包括声明式定义异步逻辑块、不同异步逻辑块之间的依赖关系、汇总到统一的上下文上、隐藏 RxJS 操作符的复杂性等。作者还提供了使用 async-flow 的具体代码示例,包括定义异步逻辑配置和组装异步流程。总体来说,这篇文章适合对 JavaScript 异步编程和 RxJS 感兴趣的读者阅读。
-
RxJS 和响应式编程简介
这篇博客介绍了 RxJS 库的基本概念和应用。作者首先介绍了 RxJS 的官方介绍,包括利用 observable 流为异步编程设计的一套 API,以及利用 Observables 模式方便我们编写基于异步组合或者回调的代码等。接着,作者介绍了 RxJS 的思想和响应式编程的思想,并指出掌握了 RxJS 的思想,就是掌握了响应式编程的思想。作者还介绍了 RxJS 中的流的概念,以及流的特点。最后,作者提到了 RxJS 中的一些常用操作符,如 map、filter、reduce 等,并给出了具体的使用示例。
-
electron 集成 addon 方案简介
本文介绍了作者在开发 electron 项目时,如何集成 addon 的方案。作者首先介绍了 addon 的基本概念,然后介绍了编译 addon 的两种方式:预编译和源码编译。作者还介绍了如何使用 electron-rebuild 来编译 addon,以及如何在持续集成中使用真实的 mac 或者 window 操作系统 + shell 来编译 addon。
-
基于 s3 的单页应用的一种纯前端灰度发布实现
本文介绍了作者在开发一个基于 s3 的单页应用时,如何实现纯前端的灰度发布。作者首先介绍了灰度发布的基本概念,然后介绍了如何使用 s3 的版本控制功能来实现灰度发布。作者还介绍了如何使用 webpack 插件来实现灰度发布,以及如何在代码中读取灰度发布的配置。总体来说,这篇文章适合对前端灰度发布感兴趣的读者阅读。
-
从 electron 2 迁移到 5 遇到的坑
这篇文章讨论了从 Electron 2 升级到 Electron 5 时遇到的安全性提升所带来的挑战。作者强调了三个主要问题,包括 webview 标签的更改,需要在子框架中集成 node,以及使用需要拦截请求的第三方脚本。作者使用 Electron 的 API 提供了解决这些问题的方法。
-
react-router 升级填坑记录
一篇关于从 React-Router 3 升级到 4 版本的博客文章。作者记录了在升级过程中遇到的一些问题和解决方案。文章介绍了 React-Router 4 版本相对于 3 版本的一些变化,包括去掉了钩子函数,路由匹配后直接渲染对应的组件等。作者还提到了一些在升级过程中需要注意的问题,如路由的动态匹配规则和 querystring 的变化等。文章最后给出了一个更好的解决方案,即改变程序的启动逻辑,将前置数据准备和 querystring 判断放在 BootstrapLoader 组件里面,在其判断结束后给 state 树上面的 isAppReady 设置为 true,之后走路由的匹配规则
-
如何花30分钟解决 eslint 产生的各种错误
本文主要总结如何使用 eslint , prettier, 以及 jscodeshift 快速统一一个大型的 js 项目的代码风格,并结合 lint-staged 和 husky 自动检查并且格式化未来新提交的新代码.
-
使用 git submodule 同步主从项目的依赖关系
本文主要介绍了如何使用 git submodule 同步主从项目的依赖关系.
-
eslint的正确使用方式
这篇博客介绍了如何使用 eslint 和 prettier 来保证 JavaScript 项目的代码质量和风格统一。作者提到了之前项目中没有推广 eslint 的原因是缺乏合适的工作流程,但是现在可以结合 git 钩子在提交代码时直接进行代码检查和格式化。作者给出了具体的使用步骤,包括安装依赖库、更新 package.json 文件等。最终的效果是在每次提交代码之前,都会进行代码格式化和 eslint 检查,从而保证代码风格的统一。
-
使用travis自动部署hexo日志
这篇博客介绍了如何使用 Travis CI 实现自动部署 Hexo 日志。作者首先介绍了自己写日志的流程,然后提出了想要实现自动化部署的需求。接着,作者介绍了什么是持续集成(CI),并且提到了使用 Jenkins 的经验。最后,作者介绍了如何使用 Travis CI 实现自动部署,包括在 GitHub 上创建一个新的仓库、在 Travis CI 上启用自动构建、配置 .travis.yml 文件等。最终的效果是,当在 GitHub 上提交新的日志时,Travis CI 会自动触发构建和部署,从而实现自动化部署的目的。
-
《巨人的陨落》书评
这篇博客是一篇书评,作者分享了自己读完《巨人的陨落》这本小说的感受和体会。作者认为这本小说最大的亮点在于通过虚构的几个人物,淋漓尽致地展现了第一次世界大战的起因、当时各国各阶级人民的生活状态、一战的主要时间点以及战后对世界的影响。作者还介绍了小说的主要人物和他们之间的关系,包括英国贵族、德国外交官、美国参议员、俄国穷兄弟等。整篇文章通过作者的阐述,让读者对这本小说有了更深入的了解。
-
如何调试minify过的js文件
这篇博客介绍了如何在没有 sourcemap 的情况下调试被 minify 过的 JavaScript 代码。作者首先介绍了使用 webpack 开发 JavaScript 项目时,生产环境和开发环境的区别,以及如何使用 sourcemap 进行代码调试。接着,作者提到了一些特殊情况下,即使开启了 sourcemap,也无法进行代码调试的情况。作者介绍了一种解决方案,即在生产环境也生成 sourcemap 文件,但是不将其嵌入到 JavaScript 或 HTML 文件中。作者介绍了如何使用 webpack 的 hidden-source-map 模式生成 sourcemap 文件,并借助 gulp 等任务工具将其放在服务器上。最终,作者介绍了如何在 Chrome 中使用这个 sourcemap 文件进行代码调试。
-
如何有效阅读
这篇博客是一篇关于如何有效阅读的笔记。作者分享了自己的阅读心得,包括选书、读书和读后总结等方面。在选书方面,作者介绍了亚马逊每日特价书推荐和豆瓣的资料查询方法。在读书方面,作者提出了不碎片化阅读的观点,并强调保持正常的阅读姿势和阅读仪式感的重要性。作者还介绍了读三遍的方法和设置更小的字体的好处。在读后总结和总结方面,作者介绍了 Kindle 的跨平台软件和笔记同步功能,并提到了 Kindle 购买的书本无法共享给他人的问题。
-
加速electron在国内的下载速度
这篇博客介绍了如何加速在中国下载 Electron 的过程。作者指出,在安装 Electron 时,会下载 electron-prebuilt 这个 zip 包,而该包默认被托管在 GitHub 上,因此在某些网络下下载会非常慢。为了解决这个问题,作者介绍了通过修改下载地址来加速下载的方法。作者提供了两种方式,一种是临时方式,通过在 npm install 命令前加入 ELECTRON_MIRROR 环境变量来指定下载地址;另一种是永久方式,通过修改环境变量文件来设置 ELECTRON_MIRROR 环境变量。最终,作者提醒读者在设置下载地址时,需要注意调试信息,以确认下载源是否替换成功。
-
React的动画小结
这篇博客是一篇关于 React 动画的小结。作者介绍了在 Ember 开发中使用 CSS 动画的方法,并指出在 React 中这种方法不起作用。作者介绍了 React 官网的动画文档,并介绍了 React 推荐使用的动画组件 ReactCSSTransitionGroup。作者指出这个动画组件基于 React 组件的生命周期,需要在 CSS 文件中定义一大堆以组件生命周期作为后缀的样式名称,并在代码中显式指定 CSS 动画时间。作者还介绍了基于 JavaScript 的动画库 Velocity.js 和其 React 版本 velocity-react。最后,作者给出了自定义动画对象的示例。
-
扯淡js和es6 续
这篇博客是一篇关于 JavaScript 和 ES6 的技术文章。作者分享了自己在使用 koa 框架时遇到的问题,以及如何使用 babel 将代码转译成 ES5 的代码。作者介绍了三种解决方案,包括强制转换 node_modules 里面的代码、使用 webpack 把关联代码都转换了、给运行的的 node 加入--harmony_generators或者升级到 node4。最终,作者选择了使用 webpack 把关联代码都转换的方法,并介绍了 node 的--harmony参数和 node4 带来的 ES6 特性。
-
扯淡js和es6
这篇博客主要讲述了作者在学习 JavaScript 过程中遇到的一些问题和坑,并分享了一些解决方案。作者提到了自己通过学习 Ember 进入了 JavaScript 领域,但是 Ember 的一些规则限制了作者的创造力。作者也分享了自己学习 React、Redux、Koa、Webpack、Electron 和 Gulp 等技术的经历,但是也提到了引入太多技术点会导致技术链出现断层,造成后续工作无法继续的问题。作者还分享了自己对 ES6 语法的喜爱和使用,但是也提到了使用 Babel 将 ES6 转换成 ES5 的一些问题和坑。最后,作者也分享了自己在调试后端 Node 代码时遇到的问题和解决方案。
-
Redux入门
这篇文章介绍了 Redux 框架的入门知识。作者首先介绍了自己在学习 React 框架时接触到了 Flux 框架,但最终推荐使用了 Redux 框架。接着,作者展示了 Redux 的基本代码,包括创建 store 和定义 action 等。最后,作者提到了 Redux 的优点和适用场景。
-
从Wordpress迁移到Hexo
这篇文章介绍了作者从 Wordpress 迁移到 Hexo 的经历。作者分享了自己之前使用的博客发布流程的不便之处,以及为什么决定迁移到静态博客系统。作者介绍了自己之前尝试使用基于 Ruby 的 Octopress,但由于不熟悉 Ruby 的依赖系统而无法适应。最终,作者选择了基于 Node.js 的 Hexo,并分享了迁移过程中的一些经验和技巧。
-
js和nodejs备忘
这篇文章主要介绍了 JavaScript 和 Node.js 的区别,以及 npm 和 bower 的区别。作者指出,JavaScript 是基于浏览器的脚本语言,而 Node.js 则让 JavaScript 有能力脱离浏览器的环境直接在本地运行,并且具有了原生应用该有的操作。此外,作者还介绍了 npm 和 bower 的区别,指出 bower 是针对浏览器的包管理工具,而 npm 则是前后端通用的包管理工具。作者还提到,浏览器不能直接使用针对 Node.js 编写的 JavaScript 文件,因为不支持 require 关键字,需要使用 require.js 或 Browserify 进行转换。
-
理解Unity3D里的Coroutine
这篇文章主要介绍了 Unity3D 中的协程(Coroutine)的概念和使用方法。作者首先介绍了协程在 AS3 中的缺失,然后详细讲解了 Unity3D 中的协程是如何通过 yield 关键字来定义的。作者还提供了一张 Unity 运行时序图来帮助读者理解协程的执行顺序。接着,作者详细讲解了 yield 关键字的用法和语法,并提供了一些示例代码来帮助读者更好地理解。最后,作者还提到了协程的一些注意事项和使用技巧。
-
unity 4.6关于RectTransform的一些研究
这篇文章主要介绍了 Unity3D 中的坐标系和 RectTransform 的概念。作者首先介绍了 Unity3D 中的世界坐标和屏幕坐标的区别,以及 Rect 的使用方法。接着,作者详细讲解了 RectTransform 中的三要素:锚点、角和中心点,并解释了它们之间的关系。最后,作者提供了一些示例代码来帮助读者更好地理解 RectTransform 的使用方法。
-
使用sublime记录evernote
这篇文章主要介绍了如何将 Sublime Text 3 中的 Markdown 文本同步到 Evernote 中。作者介绍了如何使用 Package Control 安装 MarkdownEditing 插件,并配置快捷键来打开和保存 Markdown 文本。接着,作者介绍了如何使用 Mou 预览 Markdown 文本,并将其同步到 Evernote 中。最后,作者提供了一些解决方案,如手动复制粘贴和更新 Evernote。
-
Flash文本输入在移动设备上的差异
该文章主要介绍了在使用 Flash 做文本编辑器时,在移动设备上遇到的一些问题和解决方法。作者首先介绍了 Flash 中使用 TextField 的方法,并指出在 PC 上可以正常工作,但在移动设备上会出现各种问题。接着,作者列举了一些在移动设备上出现的问题,如链接事件响应问题和键盘行为差异等,并提供了一些解决方法。最后,作者总结了自己的经验,并提醒读者在使用 Flash 开发移动设备应用时需要注意的问题。
-
关于RGB和CMYK颜色模式
这篇文章主要介绍了 RGB 和 CMYK 颜色模式的概念和区别。作者首先介绍了光波和颜料的混合方式,以及 RGB 和 CMYK 颜色模式的应用场景。接着,作者详细讲解了颜料的减色混合原理,并提供了一些示例来帮助读者更好地理解。最后,作者解释了为什么在印刷中需要引入黑色(K),并提供了一些实际印刷中的例子。
-
Nape的几何相关笔记(GeomPoly)
这篇文章主要介绍了 Nape 引擎中的 GeomPoly 类和 Polygon 类的关系。作者首先介绍了 GeomPoly 类的基本概念和用法,以及如何将其转换为 Polygon 类。接着,作者详细讲解了 Polygon 类中的 regular 算法,该算法可以用来创建一个规则的多边形。作者提供了一些示例代码来帮助读者更好地理解 Polygon 类的使用方法。最后,作者总结了自己的经验,并提醒读者在使用 Nape 引擎时需要注意的问题。
-
Nape的回调系统
这篇文章主要介绍了 Nape 引擎中的回调系统和 Flash 原生的事件系统之间的区别。作者指出,虽然它们的底层可能都是通过观察者模式来实现的,但是它们暴露给外部的 API 是不一样的。在 Nape 中,监听对象只有 space,它通过匹配特定的模式来触发回调。作者提供了一些伪代码来帮助读者更好地理解 Nape 中的回调系统。最后,作者详细讲解了在 Nape 中增加一个回调的三个步骤,并提供了一些示例代码来帮助读者更好地理解。
-
理解Nape的Interaction
这篇文章主要介绍了 Nape 引擎中的交互方式和如何控制交互。作者首先介绍了 Nape 中的三种交互方式:碰撞、感应和浮力,并详细讲解了如何手动开启这些交互。接着,作者介绍了交互的优先级和如何通过 InteractionFilters 和 InteractionGroups 来控制交互。作者提供了一些示例代码来帮助读者更好地理解 InteractionFilters 的使用方法。最后,作者总结了自己的经验,并提醒读者在使用 Nape 引擎时需要注意的问题。
-
Nape刚体研究小结
这篇文章主要介绍了 Nape 引擎中的刚体和形状的概念和使用方法。作者首先介绍了 Nape 中的 Body 和 Shape 类,以及它们之间的关系。接着,作者详细讲解了如何使用 Polygon 类来创建一个矩形形状,并将其添加到一个刚体中。作者提供了一些示例代码来帮助读者更好地理解刚体和形状的使用方法。接着,作者介绍了如何使用 localCOM 属性来获取刚体的重心位置,并提供了一些示例代码来帮助读者更好地理解。最后,作者讲解了 align() 方法的作用,并提供了一些示例代码来帮助读者更好地理解。
-
使用Flash单元测试框架asunit
这篇文章主要介绍了如何使用 Flash 单元测试框架 asunit。作者首先介绍了自己之前接触过的单元测试框架 Flexunit,并指出对于 API 接口并不是很熟悉。接着,作者详细讲解了如何使用 asunit 进行单元测试,并提供了一个最简单的 asunit 单元测试的示例代码。作者还介绍了 asunit 的版本问题,并提供了一些相关链接。最后,作者总结了自己的经验,并提醒读者在使用 asunit 进行单元测试时需要注意的问题。
-
将Vim配置成Haxe的IDE
这篇文章主要介绍了如何将 Vim 配置成 Haxe 的 IDE。作者首先介绍了如何使用 VAM 安装 vim-haxe 插件,并提供了一些示例代码来帮助读者更好地理解。接着,作者介绍了如何让 Vim 随机加载 vim-haxe 插件,并提供了一些相关链接。作者还介绍了在使用 Nape 项目时遇到的问题,并提供了解决方案。最后,作者总结了自己的经验,并提醒读者在使用 Vim 配置 Haxe IDE 时需要注意的问题。
-
在Starling框架里使用Box2D
这篇文章主要介绍了如何在 Starling 框架中使用 Box2D 物理引擎。作者首先介绍了如何使用 Box2D 物理引擎,并掌握了内置的渲染方法。接着,作者详细讲解了如何将渲染工作交给 Starling 工作,并提供了相关的示例代码。最后,作者总结了自己的经验,并提醒读者在使用 Starling 框架和 Box2D 物理引擎时需要注意的问题。
-
Box2D使用笔记
这篇文章主要介绍了 Box2D 物理引擎的基本概念和使用方法。作者首先介绍了 Box2D 的历史和作者 Erin Catto,以及 Box2D 在 Flash 平台上的应用。接着,作者详细讲解了 Box2D 中的几个基本概念:形状、刚体、粘物和世界,并介绍了它们之间的联系。作者提供了一些示例代码来帮助读者更好地理解 Box2D 的使用方法。最后,作者总结了自己的经验,并提醒读者在使用 Box2D 物理引擎时需要注意的问题。
-
Starling框架的渲染机制
这篇文章主要介绍了 Starling 框架的渲染机制。作者首先介绍了 Stage3D 底层操作和 Context3D 类的基本工作流程。接着,作者详细讲解了 Starling 框架的渲染过程,并逐步分解了这个过程。作者提供了一些示例代码来帮助读者更好地理解 Starling 框架的渲染机制。最后,作者介绍了 Starling 框架的包结构层次和核心类,包括 Starling 类和 RenderSupport 类。
-
Stage3D的一些基本概念
这篇文章主要介绍了 Stage3D 的一些基本概念。作者首先介绍了 Stage3D 层的概念和层级关系,并提供了示意图来帮助读者更好地理解。接着,作者详细讲解了 Stage3D 的坐标系统,包括右手坐标系、坐标原点和齐次裁剪空间等概念。作者还介绍了如何将 Stage3D 的坐标系统转换成 Flash 默认的坐标系。
-
Flash的坐标精度
这篇博客主要介绍了 Flash 中坐标精度的问题。作者在使用坐标旋转公式写物体的运动时,发现出现了一个怪现象,理论上应该是标准圆周运动的代码最后出来的效果却是半径越来越小的圆周运动。作者通过排除浮点运算本身的误差,提出了一种更加精确的代码实现方式。最后,作者提醒读者在使用 Flash 进行坐标运算时需要注意精度问题。
-
Wordpress 数据迁移指南
这篇博客是一篇 Wordpress 数据迁移备忘录。作者提供了一些步骤来帮助读者将原始数据迁移到本地数据库中。这些步骤包括清除本地 wp 的数据表、使用插件下载原始数据、通过 phpmyadmin 导入数据、替换文章中的域名以及下载所有图片等。作者还提供了一些示例代码来帮助读者更好地理解这些步骤。最后,作者提醒读者在进行数据迁移时需要注意一些问题。