Category: Development

Git 管理项目

常用命令

# 查看git配置信息
git config --list

# 查看文件信息
git ls-files       #仅查看所有的文件名
git ls-tree head   #查看版本(分支)中所有的文件
git ls-files -s    #查看暂存区和版本中所有文件的详细信息

# 查看commit日志
git log
git log --oneline
git log --graph

# 同步服务器代码
git pull

# 获取最新版到本地,不会自动merge
git fetch

# 推送到服务器
git push

# 添加文件到暂存区
git add <filePath>
git add .

# 添加commit信息
git commit -m "<message>"

# 合并分支
# 切换到master,将dev分支合并到master分支
git merge dev

# 删除
# -r 递归移除目录
# -n 执行命令时,不会真做操作,只是展示执行后的操作信息
git rm -r -n runtime/*    # 不会删除掉文件
git rm -r runtime/*       # 会删除掉文件
git rm -r --cached runtime/*  # 从暂存区删除,不会删除本地文件

# 放弃本地修改
git checkout -- <filePathName>

# 冲突
# 冲突是需要手动解决的,最好是借助工具解决掉冲突,先add,再commit即可。

# 基础配置
# 设置用户信息
git config --global user.name "Jalena"
git config --global user.email "jalena@bcsytv.com"

# 查看某一项设置
git config <key>

# 格式化与多余的空白字符
git config --global core.autocrlf true

# 回滚版本
# 方式一
git reset --soft 版本号  #从分支回到暂存区
git reset head 文件      #从暂存区回到修改过的内容
git check out  文件      #从修改过的文件到原文件

# 方式二
git reset --mix 版本号   #从分支回到修改过的内容 == git reset 版本号
git check out  文件      #从修改过的文件到原文件

# 方式三
git reset --hard 版本号  #从分支回到原文件

远程仓库相关命令

# 初始化
git init

# 检出代码
git clone https://github.com/odoo/odoo.git
# 查看远程仓库
git remote -v
#添加远程仓库
git remote add [name] [url]
# 删除远程仓库
git remote rm [name]
# 修改远程仓库
git remote set-url --push [name] [newUrl]
# 拉取远程仓库
git pull [remoteName] [localBranchName]
# 推送远程仓库
git push [remoteName] [localBranchName]

分支(branch)操作相关命令

# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 创建本地分支
git branch [name] // 注意新分支创建后不会自动切换为当前分支
# 切换分支
git checkout [name]
# 创建新分支并立即切换到新分支
git checkout -b [name]
# 删除分支
# -d 只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。
# -D 强制删除一个分支
git branch -d [name]  
# 合并分支
# git merge [name] # 将名称为[name]的分支与当前分支合并
# 创建远程分支(本地分支push到远程)
git push origin [name]
# 删除远程分支
git push origin heads/[name]
git push origin [name]

子模块(submodule)相关操作命令

# 添加子模块
git submodule add [url] -b <version> [path]
# 初始化子模块,只在首次检出仓库时运行一次就行
git submodule init
# 更新子模块,每次更新或切换分支后都需要运行一下
git submodule update
# 删除子模块:(分4步走哦)
git rm --cached [path]
# 编辑".gitmodules"文件,将子模块的相关配置节点删除掉
# 编辑".git/config"文件,将子模块的相关配置节点删除掉
# 手动删除子模块残留的目录

VSCode 代码提示

提示文件搜索

Jquery代码提示

rem 进入项目目录执行
npm init -y
npm install --save @types/jquery

引入方式1. 手动引入提示文件

/// <reference path="./node_modules/@types/jquery/index.d.ts" />
$dp.$D('#date091873-')
$dp.$D('date083588-')

引入方式2. 配置文件引入

{
  "name": "code",
  "version": "1.0.0",
  "description": "",
  "main": "Untitled-1.js",
  "dependencies": {
    "@types/jquery": "^3.2.16"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "types": "./node_modules/@types/jquery/index.d.ts"
}

SQLSERVER 存储过程及触发器

最近遇到一个业务。客户要求维护一个请假表,包含员工信息,请假信息!每年1月1日需要给员工增加新一年的年假,但3月才清除去年未修的年假!每次员工请假审批成功后需要同步更新假期表。

增加年假

USE [FE_APP5]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Annual_leave]') AND type in (N'P', N'PC'))
	DROP PROCEDURE [dbo].[Annual_leave]
GO

USE [FE_APP5]
GO

/****** Object:  StoredProcedure [dbo].[Annual_leave]    Script Date: 11/07/2017 18:10:29 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


create procedure [dbo].[Annual_leave]

as
	declare @FN01 varchar(20)	-- 员工号
	declare @FN07 int -- 剩余年假
	declare @FN05 int -- 年假天数
	declare @FN04 date -- 入职时间
	declare @day int = 5 -- 默认年假天数
	declare @currentyear int
	declare @year int

	declare my_cur cursor for select FN01,FN05,FN07,FN04 from FT_1_49E74BA98FF7886574E1
	
	open my_cur
	
	fetch next from my_cur into @FN01,@FN05,@FN07,@FN04
	
	while @@FETCH_STATUS = 0
	begin
		
		--print @FN01
		--print @FN05
		--print @FN07
		
		 -- 当年假期计算规则
		if MONTH(@FN04) < 7 
			set @currentyear = YEAR(getdate()) - YEAR(@FN04) + @day
		else if MONTH(@FN04) >= 7
			set @currentyear = YEAR(getdate()) - YEAR(@FN04) + @day - 1
			
		print @currentyear
		
		if @currentyear > 12
			set @currentyear = 12
		set @year = @currentyear + @FN07 -- 当前总年假
		--print @year
		
		UPDATE FT_1_49E74BA98FF7886574E1 SET FN05 = @year,FN07 = @year,FN06 = 0,FN08 = @FN07 where FN01 = @FN01;
		fetch next from my_cur into @FN01,@FN05,@FN07,@FN04
	end
	close my_cur
	deallocate my_cur


--select * from FT_1_49E74BA98FF7886574E1

--exec Annual_leave
GO

以上使用了游标!
Read more

Python 3 环境搭建

Python 3.6 安装

# 系统更新
yum -y update

# 安装yum补充程序和插件
yum -y install yum-utils epel-release

# Centos开发工具包
yum -y groupinstall development

# 安装IUS(Inline with Upstream Stable)
# https://ius.io/GettingStarted/
yum -y install https://centos7.iuscommunity.org/ius-release.rpm

# 安装Python3.6.3
yum search python3.6 # 搜索最新python
yum -y install python36u # 安装
python3.6 -V # 检查安装是否成功

#pip安装
yum search pip | grep python36u # 搜索支持的pip
yum -y install python36u-pip # 安装

# python开发库
yum -y install python36u-devel

Python 虚拟环境

mkdir environments
cd environments

# 创建环境
python3.6 -m venv odoo

# 激活环境
source ~/environments/odoo/bin/activate

# 退出环境
deactivate

注:在虚拟环境中,你可以使用命令python来代替python3.6,pip来替换pip3.6。如果在环境外的机器上使用Python 3,则需要专门使用python3.6和pip3.6命令。

Odoo 文档生成

Sphinx 使用 reStructuredText 标记语法(和其他一些语法)来提供文档控制。如果您之前编写过纯文本文件,那么您可能非常了解精通 Sphinx 所需的语法。

Odoo也是采用这种文档书写!

当然官方也提供了这么一份文档:http://www.odoo.com/documentation/user/10.0/index.html

但国内访问实在是太慢了。。这里我们自己生成一份最新的版本!

# 安装支持库
yum install -y epel-release
yum install python-pip python-wheel python-setuptools python-devel gcc

# 安装sphinx(文件在/odoo/doc下)
pip install -r requirements.txt

# 生成(可以直接执行make查看生成格式)
make html 

Centos7 部署 Odoo10.0 生产环境

更新

  • 经验证PostgreSQL 10在Odoo10下会引起一些运行问题,例如序号无法正常工作。2017年11月12日

准备工作

# EPEL repository
yum install -y epel-release yum-utils yum-fastestmirror

# Update OS
yum -y update

PostgreSQL安装

# 获取安装源地址:https://yum.postgresql.org/repopackages.php#pg96
yum install -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
# 清理缓存
yum clean all

# 查找当前最新的版本
yum -y search postgresql96
yum list | grep postgresql96

# 安装
yum -y install postgresql96-server

# 查看安装好的服务名
systemctl -l | grep postgresql
systemctl list-unit-files | grep postgresql

# 初始化数据库
find / -name postgresql*-setup
/usr/pgsql-9.6/bin/postgresql96-setup initdb

# 设置开机启动
systemctl enable postgresql-9.6

# 启动数据库
systemctl start postgresql-9.6

# 查看服务运行情况
systemctl status postgresql-9.6

# 停止服务
systemctl stop postgresql-9.6

# 重置超级管理员密码
# 切换到postgres用户
su - postgres
psql
alter user postgres with password 'new password';

# 查看用户
\du
# 退出
\q

# 开启外部访问
# FAQ:https://www.postgresql.org/docs/9.6/static/auth-pg-hba-conf.html
find / -name pg_hba.conf
echo "host    all    all    0.0.0.0/0    md5" >> /var/lib/pgsql/9.6/data/pg_hba.conf

# 开放防火墙postgresql服务
firewall-cmd --permanent --get-services | grep postgresql # 查看防火墙规则文件是否存在
firewall-cmd --add-service=postgresql --permanent 
# 重载防火墙
firewall-cmd --reload
# 查看是否开启
firewall-cmd --query-service postgresql
firewall-cmd --list-services
firewall-cmd --list-all

Odoo 安装

# 添加Odoo 10 源
yum-config-manager --add-repo=https://nightly.odoo.com/10.0/nightly/rpm/odoo.repo

# 安装Odoo 10
yum update && yum -y install odoo

# 生成配置文件
odoo --save --config myodoo.cfg --stop-after-init

# 设置开机启动
systemctl enable odoo

# 修改配置
vi /etc/odoo/odoo.conf

# 启动Odoo
systemctl start odoo

# 重启Odoo
systemctl restart odoo

# 停止Odoo
systemctl stop odoo

# 检查运行情况
systemctl status odoo
ps aux | grep odoo

# 查看运行日志
tail -f /var/log/odoo/odoo-server.log

# 开启防火墙
firewall-cmd --zone=public --add-port=8069/tcp --permanent
# 重载规则
firewall-cmd --reload
# 查看是否生效
firewall-cmd --list-all

初始化Odoo

打开IP:8069,根据页面提示输入数据库名称等信息初始化Odoo。等待Odoo初始化完毕,就可以验证了!

# 切换到Odoo用户
su - odoo
# 进入Odoo Shell
python /usr/bin/odoo shell -c /etc/odoo/odoo.conf -d odoo
print self.name

wkhtmltopdf

# https://github.com/wkhtmltopdf/wkhtmltopdf/releases/0.12.2.1/
yum -y install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm

# 测试
wkhtmltopdf -V

Other

yum upgrade python-setuptools
yum install python-pip python-wheel
pip install --upgrade pip