Fabric 2.x 使用

Fabric 在升级 2.x 之后,几乎就是重写了。很多以前的用法都变了,然后在 1.x 时代,本地和远程都是用一套代码处理,但是 2.x 的时候将 local 处理部分和远程处理部分分别拆分为 fab 和 invoke 了,拆分的理由可以参考这里。 以前 Fabric 是不支持 Python 3 的,升级之后的版本可以完美支持 Python 3,然后下面是 Fabric 2.x 的升级理由: Python 3 compatibility support 2.7 and 3.4+ Thread-safe API reorganized Read more ...

2018-06-19 fabric , python , deploy

《分布式服务架构:原理、设计与实战》读书笔记

总得来说这本书按照微服务的各个内容介绍了一遍,但是只适合入门,并不适合深入了解。看完可以对什么是微服务有一个大致的了解,对于自己实现一个微服务架构还是需要更多的阅读。 第 1 章 原理 微服务架构的目的是为了解决传统单体应用在业务急剧增长时遇到的水平扩展问题。通过拆分服务,将微服务系统中的服务划分明确的职责,做到低耦合,高内聚。 微服务交互模式 读者容错处理 消费者驱动契约模式,服务提供者向所有消费者承诺遵守的约束,一旦消费者把具体期望告诉提供者,提供者无论在什么时间和场景下,都不应该打破契约。 两个概念: 水平扩展,扩展单节 Read more ...


威联通折腾篇五:安装 Transmission 下载 BT

这一篇讲在威联通上安装和使用下载工具 – Transmission,一个知名的轻量级,跨平台,开源的 BT 下载工具。 Transmission 是一个 BT 客户端,提供了 Web 和命令行界面,非常适合在威联通机子上跑。威联通自身的 Download Station 根本无法用,而迅雷和百度也基本无法用。只能尝试一下这个方法了。 安装 如果看过之前的文章,应该知道威联通第三方的应用市场 QNAP CLUB,在其中直接能够找到 QTransmission。安装完成之后用户名密码是 qnap 和 qnap。 配置文件路径: /opt/QTr Read more ...

2018-06-17 qnap , qnap-tutorial , download , bt

威联通折腾篇六:文件同步

文件同步应该算是 NAS 最最基本的一个服务了,但是为什么直到篇六才提到他呢,是因为威联通自带的 QSync ,嗯,虽然能用,但是,没有 Linux 客户端,虽然其他平台客户端 OK,但是作为我主力工作的平台没有同步客户端,只能 smb 挂载。而之前搞 zerotier 同局域网速度不佳,其他 frp 内网穿透 也最多拉一些小文件,完全做不到 Dropbox 那样无缝,无痛。 而到现在,腾讯云上的 NextCloud 已经稳定运行近半年,所以如果在威联通上装上 NextCloud 只要网络访问畅通的情况下,做到所有平台访问 NAS 应该问题不大。而说到 Read more ...


威联通折腾篇四:Container Station 运行 Docker 容器

威联通上有一个 Container Station 的应用,可以直接用官方的 App Center 中下载安装,这其实就是一个 Docker 本地环境,如果熟悉 Docker 使用,那么其实都直接可以 ssh 登录 NAS 然后完全使用命令行来操作。 不过既然威联通提供了一个直观的界面,那么久来使用看看。官方的例子中有一个 GitLab,我的体验来看是非常完美的,几乎就是一键下载部署,即使不了解容器,也不知道 Docker 内部怎么实现,也能够快速的搭建好 GitLab 的服务。威联通 Container Station 中自带很多的服务,比如这个 G Read more ...

2018-06-17 qnap , qnap-tutorial , container , docker , linux

威联通折腾篇一:使用命令行安装威联通 QNAP 的 qpkg 安装包

如果想要给威联通安装一个 qpkg 的安装包时,最直观界面方式就是在 App Center 中,右上角,将本地的 .qpkg 文件上传到 NAS 并安装。 但是这种方式在外网图形界面加载很慢的情况下是非常难用的,那么这个时候如果能使用命令行安装就非常方便。需要在系统中预先开启 SSH 连接,当然这一步早就做好了。然后使用 ssh 连接登录上。比如下面以安装 Entware 为例: wget http://bin.entware.net/other/Entware_1.00std.qpkg sh Entware_1.00std.qpkg 经过这两个 Read more ...


威联通折腾篇二:使用 frp 内网穿透

这是 QNAP NAS 折腾第二篇,使用 frp 来从外网访问 NAS。威联通自带的 qlink.to 实在是太慢几乎到了无法使用的地步,用 Zerotier 也依然很慢,所以无奈还是用回了 frp. 之前就写过一篇很简单的 frp 使用,不过那是是在 PC 客户端和树莓派上,不过 NAS 就是一个 Linux 嘛,所以也很简单。不过需要注意的是,映射本地 8080 端口,如果需要其他端口,需要相应的添加配置: [common] server_addr = frp.server.com # frp 服务端地址,可以为 IP 或者域名 Read more ...

2018-06-15 frp , qnap , qnap-tutorial , qnap-usage , qnap

使用 ZeroTier 组建虚拟局域网实现内网穿透

ZeroTier 是为了解决复杂网络以及因特网过于中心化而提出的组网解决方案。ZeroTier 可以使得在不同网络,不同物理空间的机器组件在同一个虚拟局域网中,使得他们之间可以交换数据,直接连接。 [[ZeroTier]] 使用点对点 的网络,并且在上面附加一层 VXLAN-like 虚拟网络层 来提高局域网的可见性,安全性。 所以简单来说,ZeroTier 通过创建一个虚拟网络,把你的设备添加到这个网络,那么在这个网络内,你的设备就像在同一个路由器内那样可以使用各种端口。 免费版 ZeroTier 支持局域网内 100 个设备。ZeroTier Read more ...


Celery 又一坑:时区错误

Celery 使用过程中又遇一坑,最近升级项目中使用的 Celery 到 4.1.1,突然发现一些定时任务突然不执行了。开始还以为代码哪里做了变化,尝试找了很久,然后打开 scheduler 的日志观察了一段时间。 Celery config 中的配置是如下所示,理论上,早间的任务应该在 8 点到 12 点 每隔 5 分钟执行一次,然后午间和晚间的以此类推。 app.conf.timezone = 'Asia/Shanghai' app.conf.beat_schedule = { 'morning': { 'task': Read more ...

2018-06-13 celery , python , linux , message , queue , bug

使用 lombok 简化 Java 代码

lombok 在编译器编译时通过操作 AST(抽象语法树)改变字节码生成。也就是说他可以改变 Java 语法。lombok 不像 Spring 的依赖注入是运行时的特性,而是编译时的特性。使用 lombok 需要对应 IDE 插件配合,具体可参考官网。 安装配置 官网地址:https://projectlombok.org/ 添加 maven <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok< Read more ...

2018-06-11 lombok , java , annotation

最近文章

  • Google Code Wiki:让 GitHub 仓库秒变代码百科全书 之前 Devin 团队推出了一款 DeepWiki 的网站,可以用来解释 GitHub 的代码仓库。今天偶然发现 Google 也推出了类似的产品,叫做 Code Wiki。
  • Typeless: 又一款 macOS 上的 AI 语音输入利器 看过我博客的人会发现,我在这半年的时间里面体验了非常多的语音转文字工具,可以说,这样的工具极大地提升了我的生产效率。不仅搭配 Obsidian 可以更快地写笔记,搭配 Claude Code 等编程工具也可以让我更快地输入提示词。体验到后面,遇到类似的产品,我一般也不会单独地出一篇文章,但是今天体验完了 Typeless,我觉得它值得写一篇文章,单独介绍一下。
  • Gemini CLI 使用小技巧 本文记录 Gemini CLI 使用过程中一些容易被忽略的问题,以及使用小技巧。
  • 让 AI 更懂你的工作流:Gemini CLI 自定义 Slash Commands 配置指南 看过我博客的人会发现,我过去分享了非常多 Claude Code 下的使用小技巧,Claude Code 提供了非常好用的 Clash Commands,可以让我们直接通过快捷方式调用我们预先定义好的 prompt。最近我在使用 Gemini CLI 时,也发现我需要类似的功能。但幸好,Gemini CLI 已经帮我们实现了 slash commands,我们只需要定义好一个函数,就可以非常轻松地通过斜杠命令来调用。
  • 在 Obsidian 中使用 Gemini CLI 从 2020 年开始使用 Obsidian 算起,到今天也已经快 5 年了,这个过程中我将过去将近 10 年的笔记,包括 Evernote,WizNote 中的笔记,豆瓣上的笔记全部转成了 Markdown 保存到了本地,后来陆陆续续使用的比如 [[Voicenotes]] 也都转成 Markdown 存如 Obsidian。虽然过去纪念陆陆续续在整理,但是实际上每天添加到笔记库中的内容要远多于要整理阅读的内容,笔记仓库也是越来越大,所以我越来越想使用一个工具可以帮助我真正地理解我写下的东西,并且在我想使用的时候能快速的找回。