====================
== Hi, I'm Vimiix ==
====================
Practice makes perfect (ง •̀_•́)ง

[译]做一个拥有 Git 好习惯的开发者

translation git best-practices

如果你是一名开发人员,你可能每天都会使用 git 作为版本控制系统。这个工具的使用对于应用程序的开发过程是至关重要的,无论是在团队协作还是单独工作。但是,常常会遇到混乱的项目库,提交的 commit 信息不明确,不能传达有用的内容,以及滥用分支等问题。了解如何正确使用 git 并遵循良好的实践对于那些想要在就业市场中脱颖而出的人来说是必不可少的。

Read more...

SSX,一个有记忆的 ssh 客户端

golang ssx ssh tools

需求来源

对于一个后端程序员来说,在工作中免不了要和繁杂的服务器打交道,ssh 是不可或缺的开发工具。但每次登录都需要输入密码的行为,对于认为一切皆可自动化的程序员来说,肯定是有点繁琐的(如果您是使用图形化界面的用户可忽略)。

所以我在前段时间考虑,我应该自己实现一个 ssh 客户端,它不需要拥有许多复杂的功能,只需要满足我以下这几个需求即可满足日常使用:

  • 和 ssh 保持差不多的使用习惯
  • 仅在第一次登录时询问我密码,后续使用无需再提供密码
  • 可以给服务器它任意的标签,这样我就可以自由地通过IP 或者标签来登录

于是乎,近期我在业余时间就设计并编写了 ssx 这个轻量级的具有记忆的 ssh 客户端。它完美的实现了上面我所需要的功能,也已经被我愉快的应用到了日常的开发中。

Read more...

Shell 函数实现Go语言多版本管理轻量级方案

golang solution multi-version

现有的工具方案

我的方案

优点:

  • 原生:基于 go 语言本身支持多版本的能力实现,可以下载任何官方发布的版本
  • 简单:shell 函数实现,直接集成到 bashrc 或 zshrc 中即可使用,无需额外配置
  • 可定制化:代码简单可根据自身需求定制
Read more...

分布式事务笔记(XA,TCC,Saga)

distributed note

基础理论

CAP理论

一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。这被称为CAP理论,已经被证实。

  • 一致性(Consistency) :在分布式系统中所有的数据备份,在同一时刻都保持一致状态,如无法保证状态一致,直接返回错误。
  • 可用性(Availability):在集群中一部分节点故障,也能保证客户端访问系统并得到正确响应,允许一定时间内数据状态不一致。
  • 分区容错性(Partition tolerance):分布式系统在遇到任何网络分区故障时,仍然能保证对外提供满足一致性和可用性的服务,除非整个网络环境都发生故障。
Read more...

磁盘只读(readonly)故障场景模拟

disk simulate test

假设服务器目前有多个盘,vdb1这块分区盘专门用于数据库程序的数据目录,我们就用 vdb1 这个盘来模拟只读故障场景。

image-20210901154323971

1. 卸载指定盘

umount /dev/vdb1

想要如期卸载掉,需要确保该盘上没有被正在运行进程依赖,如果有运行中的进程依赖这个盘,会报如下报 target is busy 的错误:

umount: /opt: target is busy.

遇到该错误时,可以通过lsof [mountpoint] 命令来查看有哪些进程依赖这块盘,kill 掉相应的进程后重新卸载。

Read more...

使用SQLAlchemy以多IP方式连接openGauss数据库

SQLAlchemy Python openGauss

前置声明

由于 openGauss 数据库本身也开源不久,所以周边基础设施也正处于遍地开花的阶段,所以本文不保证长期的时效性,仅针对现阶段的问题,提出一种解决方案。

openGauss 介绍

按照官网的介绍,openGauss 是一款高性能,高安全,高可靠的开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核早期源自开源数据库PostgreSQL,融合了华为在数据库领域多年的内核经验,在架构、事务、存储引擎、优化器及ARM架构上进行了适配与优化。

openGauss 在2020年6月30日开放源代码,代码托管在 gitee 上。

目前我所在公司也主要是做数据库方面的事情,且也基于 openGauss 内核研发了一款商业版的数据库 MogDB,感兴趣的也可以去了解一下。

Read more...

Golang的并行模式实践

concurrency golang goroutine

Goroutine

C#、Lua、Python 的用户可能会发现 Go 的 goroutine 和协程之间有很多相似之处,没错,从命名上也可以看出二者具有相似性。

但二者之间也有些区别:

  • goroutine 隐含了并行的特性,一切交给 go 的 runtime 来实现调度,而协程需要应用自己来编写并行代码
  • goroutine 通过信道(Channel)进行通信;协程通过 yieldnext操作进行通信

一般来说,goroutine 比协程更强大。而且,我们可以很容易地将协程的逻辑移植到 goroutine 来获得更好的并行效果。

Read more...

Golang实现Windows系统用户和密码校验

note windows golang

本质上是通过调用 windows 的一个 API —— LogonUserW ,来实现对于用户密码的校验。

仅适用于在本地校验,不支持远程连接校验

用一个示例代码来进行说明,下面是目录结构中,main.go 是程序入口文件,auth 包中,我们仅实现 windows 系统的校验代码,其他平台不属于本文介绍内容,就直接返回 nil 即可。

Read more...

beanstalkd消息队列

beanstalkd note Python MQ

beanstalkd 是一个简单快速的分布式工作队列系统,协议基于 ASCII 编码运行在 tcp 上。其最初设计目的是通过后台异步执行耗时任务方式降低高容量 Web 应用的页面延时。而其简单、轻量、易用等特点,和对任务优先级、延时/超时重发等控制,以及众多语言版本的客户端的良好支持,使其可以很好的在各种需要队列系统的场景中应用。

Beanstalk 的应用场景主要有:

  • 消息异步处理(消息队列的基本需求)
  • 消息延迟处理,实现循环队列
Read more...

[译]Richardson成熟度模型

translation Richardson

原文链接:https://martinfowler.com/articles/richardsonMaturityModel.html

迈向 REST 的荣耀之巅

Leonard Richardson 提出的一个模型,将实现 REST 方法的主要元素分解为三个步骤,分别包括:资源(Resources)、HTTP 动词(HTTP Verbs,如GETPOST等)和超媒体控制(Hypermedia Controls)。

Rest In Practice一书中,解释了如何使用 Restful Web Service 来处理企业面临的许多集成问题。本书的核心观点是,Web 就是一个大规模可扩展的分布式系统存在、并可以很好的工作的证明,而我们可以根据这一观点更容易地构建集成系统。

Read more...
1 of 9 下一页