IT

共计 39 篇文章

如何做代码管理(二)--Git提交流程

Git提交流程 上面说了这么多基础的Git知识,接下来就一起来看看日常开发当中的实践。正如上面所说Git的分支开销很小,所以可以很方便的切换分支,也是因为如此,有几种比较流行的Git分支模型。 Git分支模型 GitFlow GitFlow最早是由Vincent Driessen发明的,目前仍然广泛采用的一种工作流程。 先看这张图片的最上面,master主分支和develop开发分支是加粗的,在整个的开发周期内,这两个分支一直存在。主分支的任何一次提交都是一个稳定的版本,开发分支就是目前最新的开发版。 在这两个分支之外,有三个功能分支: feature branches:功能分支,开发某个功能的分支 release branches:发布分支,往外释出版本的分支 hotfixs:修复分支,修复bug的分支 这三个分支都是临时性的,做完之后都会合并进入到develop分支当中。

Nginx 「Too many open files」问题排查

这两天业务部门反馈流量下降的很厉害,我看了一下Nginx的日志,提示「768 worker_connections are not enough」,很明显768对于百万级的PV来说少了太多,打开nginx.conf将其中的连接数量从768更改到了65535。 隔了一小会,发现日志中这个错误已经消失,另外一个错误「Too many open files」又出现了。从字面来看,是服务器的句柄数量不足导致。查看一下nginx的配置 user root root; # 1. worker_processes auto; # 2. worker_rlimit_

如何做代码管理(一)--代码管理工具介绍及使用

前言 在公司新进入的一些小伙伴们,对于代码管理并不是很清楚,甚至有的觉得做不做管理都可以。在我面试的一些开发者,很多说是知道Github,了解Git,再追问一两个简单的问题,就基本答不出来了。所以,我想写篇文章,来结合实际情况以及我的理解,简单的介绍一下代码管理的基础知识点。 在正式开始之前,让我们来思考一个问题,「为什么要做代码管理」?我的答案是可以安全的,可溯历史的进行独立或者协同的代码开发,维护。举个类似的栗子,回想一下,在毕业的时候,我周围就有很多人,换着花样的保存各个版本的「毕业论文」。有的人还因为电脑或者U盘的意外事故,导致一两个月的工作白费,凭着记忆恢复。个人的能力和精力毕竟有限,完全可以把版本管理交给工具管理,即安全也容易看到每一版的变化。 代码的管理工具 目前主流的两种方式SVN和Git。

Django使用MySQL数据库

由于SQLite不支持Git版本控制,所以将Django的默认数据库换到MySQL当中。 开始 修改配置文件 修改settings默认配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } 修改为MySQL的引擎 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_db_name', 'USER':

CentOS7升级Python默认版本到3.7

现在默认的CentOS7的Python版本为2.7.5,但随着官方放弃Python2的时间节点已经到来(查看[这里]),切换到Python3是大势所趋。我选择了3.7,通过软连接的形式,加到bin下,进行调用。 创建一个目录存放Python原始文件:mkdir ./Python3 && cd ./Python3 下载原始Python安装包:wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.

通过Crontab定时备份

目地通过Linux下的定时任务Crontab来定期的执行脚本,备份服务器中的MySQL数据。 Shell脚本解释#!/bin/sh t=$(date +%Y%m%d%H%M%S); cd /backup/mysql mysqldump -uroot -pyourpassword yourdatabase > yourdatabase.sql tar -czf yourdatabase.${t}.tar.gz yourdatabase.sql rm -r

Screen常用的命令

经常在命令行中执行一些命令的时候,有的是需要在后台执行的,或者有的时候登录在VPS中,退出ssh后,这条命令就自动中断了。这个时候采用Screen的方式就比较好处理。 Screen可以理解成为一个新开一个窗口,每次当你新建一个screen的时候,他就是独立的。可以随时随地的恢复一个状态。 常用的命令 screen -ls #显示当前所有的screen,会有两个状态一个是detach,另外一个是attach,有点像Android中的Fragment的状态一样。 screen -S xxx #创建一个名为xxx的screen screen -r xxx #恢复(或者叫attach一个名为xxx的screen) screen -d xxx #detach某个screen screen -d -r

MySQL设置用户访问权限

对于有远程访问MySQL的需求的话,通过MySQL的权限管理,可以设置一个新的用户指定IP访问,指定数据库操作,指定表,这样用最小粒度确保安全。 创建新用户可以通过SELECT user,host from mysql.user;查出当前的用户及Host。Host一般为localhost,127.0.0.1,%,固定IP。%的意思是,任意IP都可以。 为单独的程序新建一个MySQL用户 CREATE USER 'username'%'host' INDENTIFIED BY 'userpassword'; 即可创建一个新的用户。 给该用户设定权限为了保证安全,一般都需要设定的权限最小。比如,

Linux安装Jenkins

Jenkins是大名鼎鼎开源的CI软件,有非常多的插件,可以完成自动化部署,构建等功能。最近发现前端工程师,在每次的发布流程都非常的折磨人,于是想着不然自己搭建一个CI来处理。 CI的好处是显而易见的,可以持续集成和持续交付。我在之前做国外的项目的时候,这种便利,让我只需要关注我自己的代码和逻辑即可。代码编写出错,CI就过不去。代码通过后,QA就可以直接拿到APK包直接测试,完全不用我本地手动出包。节省了两边的时间。 按照一般Android的流程来看,本地写完代码—Push代码—提交PR—通过审核—打APK包—QA测试。有CI介入之后,相当于打APK包的操作就交由Jenkins来完成了。每一次的Push都可以对应一个APK包,QA只需要在当前的APK中测试是否问题已经解决。 现在这位前端同事使用的是Vue的框架。他的本地流程是本地写完代码—Push代码—到服务器Pull代码—

印象笔记剪藏修改登录地区

由于之前一直在使用英文系统,工作中换了一台新机器,发现Chrome的剪藏插件同步下来,登录的时候默认是登录到国际版了,但是我的帐号是国区付费的。这样也会导致剪藏的文章在国际版的帐号中,众所周知两个数据是完全不互通的。 我重新在应用商店下载剪藏插件,无果,仍然只能登录国际版。然后我尝试去印象笔记的官网去下载这个crx。这里安装的时候出现了一个错误。 package is invalid 'crx header invalid’<!-- more —> 查询了一下,原因是这个crx的文件的问题,遂想其他办法。 有的人说的更加离谱,在剪藏的设置界面,按上上下下左右左右AB,就会出来一个选项,可以选择中文简体,这样就能登录国区账户。尝试,没有反映。