wechat

拯救狗屎代码:基于 Gitlab 的代码审查,简单实用

喜夏-厌秋 提交于 2020-08-08 05:13:32
作者:刘凯_7013 https://www.jianshu.com/p/5d764b52ea88 code review 的目的是提高代码质量,减少开发bug,俗话说,三人行必有我师,众人拾柴火焰高。 gitlab提供了code review机制,对基于gitlab的code review,直接以具体例子的形式做个实践总结。 gitlab提供了两种代码merge机制: 1)在本地将源分支(Source branch)代码合并到目标分支(Target branch),然后Push到目标分支(Target branch) 2)将源分支(Source branch)Push到远端,然后在GitLab指定目标分支(Target branch)发起Merge Request,对目标分支(Target branch)拥有merge权限的用户执行Merge操作,完成合并。 这两种方式仅有第2种适合code review,所以我们要做的事情是设置权限,拒绝本地merge后push到远端的操作。 在第2种方式中 发起merge request后,由有merge权限用户做code review,通过后执行merge操作。 具体操作如正文 一,分支设置 第一步,创建项目和分支。 分支结构和功能依据具体团队的规范来定,这里仅供参考。 推荐阅读: 大厂 Git 提交规范是怎么做的 ? 关注微信公众号

如何提高服务器的并发处理能力?硬核!

冷暖自知 提交于 2020-08-08 00:57:45
作者:潇洒一剑 www.cnblogs.com/zengjin93/p/5569556.html 以下内容为入门级介绍,意在对老技术作较全的总结而不是较深的研究。主要参考《构建高性能Web站点》一书。 什么是服务器并发处理能力 一台服务器在单位时间里能处理的请求越多,服务器的能力越高,也就是服务器并发处理能力越强 有什么方法衡量服务器并发处理能力 1. 吞吐率 吞吐率,单位时间里服务器处理的最大请求数,单位req/s 从服务器角度,实际并发用户数的可以理解为服务器当前维护的代表不同用户的文件描述符总数,也就是并发连接数。 服务器一般会限制同时服务的最多用户数,比如apache的MaxClents参数。 这里再深入一下,对于服务器来说,服务器希望支持高吞吐率,对于用户来说,用户只希望等待最少的时间,显然,双方不能满足,所以双方利益的平衡点,就是我们希望的最大并发用户数。 2. 压力测试 有一个原理一定要先搞清楚,假如100个用户同时向服务器分别进行10个请求,与1个用户向服务器连续进行1000次请求,对服务器的压力是一样吗? 实际上是不一样的,因对每一个用户,连续发送请求实际上是指发送一个请求并接收到响应数据后再发送下一个请求。 这样对于1个用户向服务器连续进行1000次请求, 任何时刻服务器的网卡接收缓冲区中只有1个请求,而对于100个用户同时向服务器分别进行10个请求

Ubuntu用户都应该了解的快捷键

旧街凉风 提交于 2020-08-07 21:24:34
无论我们使用什么操作系统还是什么软件,快捷键都是非常有用的,因为可以在启动应用程序或跳转到所需窗口,可以快速进行很多操作,而无需动鼠标到处点,节省时间和精力,提高效率。 就像在Windows中一样,Ubuntu也有一些热键可以作为快捷方式来让一些操作变得很简单。这次,我们就来学习一些方便的Ubuntu键盘快捷键,来提高工作效率。 1)使用超级键(Windows键) Windows 键在Unix系统中称为 超级键 ( Super Key ),只需按下超级键,即可打开下图所示的搜索框。 要搜索应用程序,只需输入应用的名称,然后点击应用程序的图标(或者使用方向键移动到对应的应用程序也可以)。 如果你现在打开了很多窗口,想要来个全局预览怎么办?可以使用 超级键 一次查看所有启动的应用程序,如下所示。 2)使用快捷键启动终端 还有一个方便的快捷方式是终端快捷方式。你可以使用简单的Ubuntu键盘快捷键 CTRL + ALT + T 启动终端。这是在最短的时间内启动终端的最简单的快捷方式之一。 3)锁定屏幕 就像在Windows中一样,要锁定屏幕,只需按 超级键 + L 或 CTRL + ALT + L 。这种方式要比去右上角选择锁定屏幕的选项更方便快捷。 4)在打开多个窗口时显示桌面 有时,你需要在已经打开了多个窗口的时候,将所有窗口最小化并且返回桌面。这时你只需要按 超级键 + D 或者按

什么是ZooKeeper?

*爱你&永不变心* 提交于 2020-08-07 19:28:25
https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453140996&idx=1&sn=b2391f3eb780529020ace3a4c4357bda&chksm=8cf2d487bb855d916bca80d709ed8e22457af52d1746e093fe8d4e3d4d095dbcc767e68dd1c1&scene=21#wechat_redirect 来源: oschina 链接: https://my.oschina.net/u/4248053/blog/4317115

前后端分离如何做权限控制设计?

风格不统一 提交于 2020-08-07 16:21:34
作者:薛҉定҉谔҉的҉猫҉ www.yuque.com/zhanghaofei/blog/xrpz9p 近几年随着react、angular、vue等前端框架兴起,前后端分离的架构迅速流行。但同时权限控制也带来了问题。 网上很多前、后端分离权限仅仅都仅仅在描述前端权限控制、且是较简单、固定的角色场景,满足不了我们用户、角色都是动态的场景。 且仅仅前端进行权限控制并不是真正意义的权限控制,它只是减少页面结构暴露、增强用户体验的功效。 场景 系统为后台管理系统,包含了用户创建、用户登录、用户管理自己的资源。用户经常会新增、删除,也可以根据工作情况随时调整页面、功能权限,所以采用用户-角色-页面权限方案实现。 为什么不行: 根据前端路由表显示左侧菜单,但vue-router的路由表主要为了组织代码,经常我们所需要的菜单并非一致。比如某个前端路由a子路由有b、c,但菜单中我们想要直接一级菜单就显示b、c或者将b、c各放到其他菜单下。所以这种非常不灵活。 一个路由是菜单还是页面?是否需要显示到菜单中?是否验证权限?哪个角色或者用户拥有权限?这些都需要写到前端路由里面,一旦有任何权限变动就要大量调整代码。 如果权限写死在前端,那么角色或者用户必须已知且固定不变。比如页面1的meta增加属性标识可访问的角色为a和b 页面 一个页面即一个前端页面,比如首页、用户管理页、资源管理页等。 基本思路为

Prometheus监控神器-Alertmanager篇(1)

人盡茶涼 提交于 2020-08-07 16:20:30
本章节主要涵盖了Alertmanager的工作机制与配置文件的比较详细的知识内容,由浅入深的给大家讲解。 警报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的。警报规则在 Prometheus 定义,警报规则触发以后,才会将信息转发到给独立的组件 Alertmanager ,经过 Alertmanager r对警报的信息处理后,最终通过接收器发送给指定用户,另外在 Alertmanager 中没有通知组的概念,只能自己对软件重新Coding,或者使用第三方插件来实现。 注意,这个通知组不是Alertmanager中的group概念,下面会详细讲 Group ,不要混淆哦。 前面已经介绍过一些关于 Alertmanager 知识点,本章开始针通过安装 Alertmanager 组件,对配置文件做详细说明,同时介绍 Prometheus 的警报规则的定义,最后使用Email、Wechat(Robot)、Dingtalk(webhook)来接受警报通知。 Alertmanager工作机制 在Prometheus生态架构里,警报是由独立的俩部分组成,可以通过上图很清晰的了解到 Prometheus 的警报工作机制。其中 Prometheus 与 Alertmanager 是分离的俩个组件。我们使用Prometheus Server端通过静态或者动态配置

【融职培训】Web前端学习 第11章 微信开发2 微信登录

随声附和 提交于 2020-08-07 15:33:00
一、概述 在web开发中,我们经常会让网站接入微信登录功能,这样用户免于注册账号,网站开发人员也可以更为方便地获取到用户信息。 微信登录可以分为两种情况,一种是网站的扫码登录,另一种是在微信浏览器中直接登录,本节我们就讲解如何在自己的网站上接入微信登录功能。 一、网站扫码登录置流程 开发文档 具体的开发流程官方文档已经给出了详细的说明,但是文档更关注的是严谨和全面,本节的内容更倾向于简单易懂。下面介绍一下扫码登录的开发流程。 首先我们要有一个注册并认证的微信开放平台账号(认证要300元人民币)。注册和认证成功之后,如下图所示进入【网站应用】。首次进入之后下方是空白,需要点击【创建网站应用】。然后根据提示加入自己的网站,下图为加入完成后的效果。 点击【查看】可以看到详细内容,【接口信息】需要申请,申请通过之后才可以开通。 开通之后,就可以调用开放平台的接口实现微信登录功能了。 二、调用接口实现扫码登录。 网站微信扫码登录流程 网站跳转到以下链接:注意连接中的两个参数 appid:微信开发平台提供的appid redirect_url:用户扫码登陆后跳转的地址 https: // open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope

Linux nohup命令详解,终端关闭程序依然可以在执行!

安稳与你 提交于 2020-08-07 15:04:26
大家好,我是良许。 在工作中,我们很经常跑一个很重要的程序,有时候这个程序需要跑好几个小时,甚至需要几天,这个时候如果我们退出终端,或者网络不好连接中断,那么程序就会被中止。而这个情况肯定不是我们想看到的,我们希望即使终端关闭,程序依然可以在跑。 这时我们就可以使用 nohup 这个命令。 nohup 命令是英语词组 no hangup 的缩写,意思是 不挂断 ,也就是指程序不退出。这个命令会使程序忽略 HUP 信号,保证程序能够正常进行。 HUP 信号有些人可能比较陌生,它是在终端被中止的时候向它所关联的进程所发出的信号,进程收到这个信号后就会中止运行。所以如果你不希望进程被这个信号干掉的话,就可以忽略这个信号。而 nohup 命令做的就是这个事情。 本文我们将详细介绍 nohup 命令的具体用法。 nohup命令基本语法 nohup 命令的基本语法如下: $ nohup command arguments 或者: $ nohup options 如果你想要得到更多关于 nohup 的用法介绍,可以查看它的帮助页面: $ nohup --help 如果你需要查看它的版本号,可以使用 --version 选项。 $ nohup --version 使用nohup命令启动一个程序 如果你需要运行一个程序,即使对应的 Shell 被退出后依然保持运行,可以这样使用 nohup

监控微信,钉钉告警脚本

℡╲_俬逩灬. 提交于 2020-08-07 11:45:47
微信告警 vi wechat.py #!/usr/bin/env python - - coding: utf-8 - - import requests import json import sys 企业号及应用相关信息 corp_id = 'ww9f15d225845117a' corp_secret = 'aV_ZC0Ahw0Ob-EhjWMh3x1CDdOxWQLtK6FtI-oki7' agent_id = '1000002' 存放access_token文件路径 file_path = '/tmp/access_token.log' def get_access_token_from_file(): try: f = open(file_path, 'r+') this_access_token = f.read() print('get success %s' % this_access_token) f.close() return this_access_token except Exception as e: print(e) 获取token函数,文本里记录的token失效时调用 def get_access_token(): get_token_url = ' https://qyapi.weixin.qq.com/cgi-bin/gettoken

32. 理解 Go 语言中的 Context

為{幸葍}努か 提交于 2020-08-07 07:30:53
Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客: http://golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 什么是 Context? 在 Go 1.7 版本之前,context 还是非编制的,它存在于 golang.org/x/net/context 包中。 后来,Golang 团队发现 context 还挺好用的,就把 context 收编了,在 Go 1.7 版本正式纳入了标准库。 Context,也叫上下文,它的接口定义如下 type Context interface { Deadline() (deadline time.Time, ok bool) Done() <-chan struct{} Err() error Value(key interface{}) interface{} } 可以看到 Context 接口共有 4 个方法 Deadline :返回的第一个值是 截止时间 ,到了这个时间点,Context 会自动触发 Cancel 动作