Domon

Life is Simple [+] Menu


Posts tagged under IT


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

IT

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

Domon

Nginx 「Too many open files」问题排查

IT

这两天业务部门反馈流量下降的很厉害,我看了一下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_nofile 65535; ... events {         use epoll; # 3.         worker_connections 65535; } ... 将worker_processes从自动获取变成了实际的服务器CPU核心数量... continue reading

Domon

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

IT

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

Domon

Django使用MySQL数据库

Python

由于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': 'your_mysql_username', 'PASSWORD': 'your_mysql_password', 'HOST': 'your_mysql_server_... continue reading

Domon

CentOS7升级Python默认版本到3.7

IT

现在默认的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.tgz 解压:tar -zxvf Python-3.7.0.tgz 创建安装目录: mkdir /usr/... continue reading

Domon

通过Crontab定时备份

Linux

目地通过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 yourdatabase.sql 按照项目使用的db来备份默认备份在/backup/xxx项目/mysql默认的文件格式为xxx项目+14位时间戳(例如:20190709131051)需要删除mysqldump导出的sql文件Crontab使用方法Crontab是Linux内置的一个定时命令,可以帮助我们定期执行一些工作。... continue reading

Domon

Screen常用的命令

Linux

经常在命令行中执行一些命令的时候,有的是需要在后台执行的,或者有的时候登录在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 xxx #结束当前的screen,并恢复到xxx的screen 快捷键(在每一个screen下,都可以已ctrl+a开始) ctrl a, k : 终止当前的screen并退出... continue reading

Domon

MySQL设置用户访问权限

Linux

对于有远程访问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'; 即可创建一个新的用户。 给该用户设定权限为了保证安全,一般都需要设定的权限最小。比如,定位到某个数据库的某个表,或者只能执行某些SQL操作。 GRANT SELECT, INSERT, UPDATE on dbname.tablename to 'username'@... continue reading

Domon

Linux安装Jenkins

IT

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

Domon

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

IT

由于之前一直在使用英文系统,工作中换了一台新机器,发现Chrome的剪藏插件同步下来,登录的时候默认是登录到国际版了,但是我的帐号是国区付费的。这样也会导致剪藏的文章在国际版的帐号中,众所周知两个数据是完全不互通的。 我重新在应用商店下载剪藏插件,无果,仍然只能登录国际版。然后我尝试去印象笔记的官网去下载这个crx。这里安装的时候出现了一个错误。 package is invalid 'crx header invalid’<!-- more —> 查询了一下,原因是这个crx的文件的问题,遂想其他办法。 有的人说的更加离谱,在剪藏的设置界面,按上上下下左右左右AB,就会出来一个选项,可以选择中文简体,这样就能登录国区账户。尝试,没有反映。但是顺着这位兄台的思路,我继续往下想,如果插件是靠语言来控制登录区域的话,那我把Chrome的语言改动一下不就可以了。 解决方案便有了,Chrome中输入chrome://settings/languages中选择把Chinsese置顶,重启。果然剪藏默认登录国区,还多了一个国际区的选项,... continue reading

Domon