Category: Development

Install HomeBrew in Mac

HomeBrew是Mac下类型于Centos下但Yum包管理工具,使用Mac作为开发平台,使用HomeBrew是非常有必要的。

你可以在https://brew.sh/index_zh-cn这里找到更多关于HomeBrew的使用技巧。

安装HomeBrew

拷贝如下命令行在终端中执行。

# 安装Xcode
xcode-select --install

# 安装HomeBrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# 检查
brew doctor

# 更多命令
brew --help

镜像加速

注:该镜像是 Homebrew 二进制预编译包的镜像。本镜像站同时提供 Homebrew 的 formula 索引的镜像(即 brew update 时所更新内容),请参考 Homebrew 镜像使用帮助。

# 临时替换
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.cloud.tencent.com/homebrew-bottles
# 永久替换
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.cloud.tencent.com/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
# 永久替换
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.cloud.tencent.com/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

更新 Homebrew

要获取最新的包的列表,首先得更新 Homebrew 自己。这可以用 brew update 来达到更新自身到目的。

更新包 (formula)

更新之前,可以使用 brew outdated 查看哪些包可以更新。Homebrew 会安装新版本的包,但旧版本仍然会保留。

# 更新所有的包
brew upgrade

# 更新指定的包
brew upgrade $FORMULA

锁定不想更新的包

如果经常更新的话,brew update 一次更新所有的包是非常方便的。但有时候会担心自动升级把一些不希望更新的包更新了。数据库就属于这一类,尤其是 PostgreSQL 跨 minor 版本升级都要迁移数据库的。我们更希望找个时间单独处理它。这时可用 brew pin 去锁定这个包,然后 brew update 就会略过它了。

# 锁定某个包
brew pin $FORMULA

# 取消锁定
brew unpin $FORMULA

清理旧版本

新版本安装了,旧版本就不需要了。我会用 brew cleanup 清理旧版本和缓存文件。Homebrew 只会清除比当前安装的包更老的版本,所以不用担心有些包没更新但被删了。

# 清理所有包的旧版本
brew cleanup

# 清理指定包的旧版本
brew cleanup $FORMULA

# 查看可清理的旧版本包,不执行实际操作
brew cleanup -n 

彻底卸载

brew uninstall formula_name --force

Mybatis 插入或更新数据

在日常的开发中,我们经常会遇到这样的需求,我们有一个存储主数据的表,当有新的数据写入的时候,若库中存在数据则更新,否则当作新的数据写入。

一般情况下,我们会先对数据库进行一次Select,若数据存在我们则执行更新操作,当然这种方法在大部分情况下是可行的,但数据量大或者数据写入频繁的时候,这种方法就表现出来它的不稳定。

其实在数据库中都提供了UNIQUE约束规则,我们可以在数据库中建立UNIQUE约束规则,这样我们在插入具有约束限制数据的时候,我们就会得到一个异常,我们可以捕获这个异常,在异常块中进行更新操作。

在Mysql中我们可以使用更加简单的方式,Mysql提供了这样一个方法on duplicate key update可以让数据库直接搞定数据的插入或更新。

首先在数据库中创建约束

create unique index mytest_uindex on table (fieldA, FieldB);

编写SQL语句

insert into table (fieldA, filedB)) values ('a', 'b') on duplicate key update filedA = a1, fieldB = a2;

这样一波操作下来,你会神奇的发现,原来可以如此简单。。

该方法会删除掉已有数据,再进行插入,具体可以观察数据的自增ID。

具体用法可以查看这里:https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

Harbor 安装部署

官方发布地址:https://github.com/goharbor/harbor/releases
程序版本依赖:docker 17.03.0-ce+ and docker-compose 1.18.0+ .

Harbor支持在线安装及离线安装,此文章采用在线离线安装的形式,且安装版本为1.8.0

一、下载安装程序

# 下载
wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.0.tgz

# 解压
tar xvf harbor-offline-installer-v1.8.0.tgz

二、配置

配置参数位于文件harbor.yml中

以下是我的配置,可根据自己的需求设定。

这里的https证书是我在腾讯云申请的免费SSL证书,你如果在腾讯云注册有域名也可以在这里 https://console.cloud.tencent.com/ssl 直接申请,当然你也可以使用免费证书的申请。

如下证书使用的是腾讯云申请的 DV SSL证书(Domain Validation SSL),申请后大概一小时会通过邮件得到信息,将申请到的证书下载下来,使用Nginx包内的Crt及Key文件即可。

hostname: hub.youvigo.com

# https related config
https:
  port: 443
  certificate: /data/cert/server.crt
  private_key: /data/cert/server.key

harbor_admin_password: youpassword

# The default data volume
data_volume: /data/harbor/data

三、安装

./install

Docker 批量删除镜像

删除所有容器

docker rm `docker ps -a -q`

删除所有镜像

docker rmi `docker images -q`

按条件删除镜像

# 没有标签
docker rmi `docker images | awk '/^<none>/ { print $3 }'`

# 按名称
docker rmi --force `docker images | grep goharbor | awk '{print $3}'`

删除不干净,强制清空

systemctl stop docker
rm -rf /var/lib/docker
systemctl start docker

psql connect docker postgresql

方式一、

docker exec -u 0 -it <CONTAINER ID> bash
su postgres
psql -U <DBUSER> -W -d <DBNAME>

# 查看PGSQL默认服务
pstree

方式二、

docker run -it --rm --network docker_odoonetwork postgres psql -h pgsql -U odoo -d analogcircuit

docker-compose.yml

version: '2'
services:
  web:
    image: odoo:12.0
    container_name: odoo
    depends_on:
      - db
    ports:
      - "8069:8069"
    networks:
      - "odoonetwork"
    volumes:
      - odoo-web-data:/var/lib/odoo
      - ./config:/etc/odoo
      - ./addons:/mnt/extra-addons
  db:
    image: postgres:10
    container_name: pgsql
    networks:
      - "odoonetwork"
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_USER=odoo
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - odoo-db-data:/var/lib/postgresql/data/pgdata
networks:
  odoonetwork:
    driver: bridge  
volumes:
  odoo-web-data:
  odoo-db-data:

Archives