使用Docker搭建Bitwarden服务
Bitwarden是一款开源的密码管理工具。
1 | version: '3.7' |
注意:在使用浏览器插件的时候需要必须配置ssl证书。
Python:partial函数
[partial][]: New function with partial application of the given arguments and keywords.
简单来说,便是为一个函数预设初始参数,并创建一个新的函数。大致相当于:
1 | def partial(func, /, *args, **keywords): |
示例如下:
1 | >>> from functools import partial |
调整vm.max_map_count
vm.max_map_count
表示一个进程可以拥有的VMA(虚拟内存区块)的数量。
查看当前值
1 | sysctl -a | grep vm.max_map_count |
修改
1 | echo 'vm.max_map_count=655350' >> /etc/sysctl.conf |
在Vuejs中使用ECharts
安装
1 | yarn add echarts @types/echarts |
ECharts.vue文件
1 | <template> |
Alfred:使用Python创建Workflow
Alfred是Mac系统上一款专注于效率提升的著名应用,它能帮你快速打开网页、快速进行自定义搜索、查看剪贴板历史、快速查询单词等等。
我们可以借助于Python的Alfred-Workflow库来快速开发自己的workflow。
具体内容可参考下面两个官方示例:
VMware Fusion中虚拟机的网络设置
VMware网络模式
VMware虚拟机有三种网络模式:
- Bridged - 桥接模式
- NAT - 网络地址转换模式
- Host-Only - 仅主机模式
Bridged - 桥接模式
通过桥接模式网络连接,虚拟机中的虚拟网络适配器可连接到主机系统中的物理网络适配器。 虚拟机可通过主机网络适配器连接到主机系统所用的LAN。
桥接模式网络连接将虚拟机配置为在网络中具有唯一标识,与主机系统相分离,且与主机系统无关。 虚拟机可完全参与到网络活动中。它能够访问网络中的其他计算机,也可以被网络中的其他计算机访问,就像是网络中的物理机那样。
NAT - 网络地址转换模式
使用NAT模式网络时,虚拟机在外部网络中不必具有自己的IP地址。 主机系统上会建立单独的专用网络。在默认配置中,虚拟机会在此专用网络中通过DHCP服务器获取地址。
Vue组件刷新
在特定情况下,如果需要执行刷新操作,有四种可选方案:
- 借助
router.go(0)
方法,刷新整个页面 - 使用
forceUpdate()
方法,刷新当前组件 - 使用
v-if
标记,刷新子组件 - 使用
:key
属性,通过改变key
的值来达到刷新子组件的目的
Django单元测试的几点建议
几天前有朋友问到怎么对Django项目做单元测试,于是,我将以前随手记下的笔记整理了一下。
- 测试用例继承
django.test.TestCase
。 - 如果在执行测试用例之前需要初始化全局数据,重写类函数
setUpTestData()
。 - 在测试用例中如果需要批量创建数据,请使用循环一个一个
create()
,不要使用bulk_create()
,因为bulk_create()
不会自动save()
。 - 在测试过程中,灵活使用
mock
,推荐使用unittest.mock.patch
,详细内容参见:patchers。 - 使用断言
assert
校验执行结果,不要使用if..else..
判断,django.test.TestCase
中已经内置一些assert
,大家可以自由使用。 - 如果被测试的代码中使用了缓存,可以使用
django.core.cache.backends.dummy.DummyCache
或django.core.cache.backends.locmem.LocMemCache
来防止缓存被污染。 - 做接口测试时,使用
self.client
发起请求。 - 测试需要登录时,使用
self.client.force_login(user)
进行登录。 - 如果测试需要携带请求头时,可以修改
self.client.defaults
的值,它是一个dict
,直接update
就行。 - 如果一个
app
下的测试用例代码非常多的话,建议将tests.py
文件改成tests/
文件夹。
服务注册与发现
随着业务的发展,用户的增长,原有的单一系统越来越复杂,越来越庞大。 此时,我们可以重新划分业务、拆解应用,使用微服务架构的方式来解决系统性能问题以及业务复杂问题。
那么什么是微服务?微服务是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对整理解决方案的解耦。
在微服务架构中,每个微服务通常有多个实例,每个实例具有不同的位置,而且实例会动态变化(动态伸缩、灾后重建等)。 因此在使用微服务架构开发应用时,需要通过服务注册和发现技术解决此问题。
- 服务注册:允许服务实例将当前服务的信息注册到注册中心。
- 服务发现:调用者可以从注册中心查询到服务实例的信息。
CAP理论
CAP理论是分布式架构中重要理论:
- 一致性(Consistency):所有节点在同一时间具有相同的数据
- 可用性(Availability):保证每个请求不管成功或者失败都有响应
- 分隔容忍(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运作
CAP
理论认为在分布式系统只能兼顾其中的两个特性,即只有CA
、CP
、AP
三种情况。