国内主流镜像源

提供商 地址
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

tips: 若担心安全问题请使用HTTPS加密源

永久生效

mac

1
2
3
4
5
6
7
8
9
cat $HOME/.config/pip/pip.conf
# 或者
cat ~/.pip/pip.conf

>>>
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

linux

1
2
3
4
5
cat $HOME/.config/pip/pip.conf

>>>
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple12

windows

新建%APPDATA%\pip\pip.ini,并写入以下内容

1
2
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

临时生效

1
2
pip install pandas -i http://mirrors.aliyun.com/pypi/simple/
pip install django -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

0x00 介绍

Moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率。

0x01 格式化

1
2
3
4
5
const moment = require("moment");
// 格式化当前日期
const now = moment();
const normalFmt = now.format("YYYY-MM-DD HH:mm:ss");
console.log("标准格式:" + normalFmt);

0x02 解析时间字符串

1
2
3
4
5
6
7
8
9
const moment = require("moment")
const now = moment('2022-05-22')
const nowByFmt = moment('2022年5月22日','YYYY年M月DD日')
const nowByTime = moment(now.valueOf())
console.log(`
日期格式 ${now.format('YYYY-MM-DD HH:mm:ss')}
带有解析字符串 ${nowByFmt.format('YYYY-MM-DD HH:mm:ss')}
毫秒时间戳 ${nowByTime.format('YYYY-MM-DD HH:mm:ss')}
`)

0x03 获取时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const moment = require("moment")
// 使用函数对象,在使用startOf,endOf函数会导致时间移动
const now = () => moment('2022-05-22')
console.log(`
获取今天开始时间 ${now().startOf('D').format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取今天结束时间 ${now().endOf('D').format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取本周第一天(周日)开始时间 ${now().startOf('week').format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取本周第一天(周一)开始时间 ${now().startOf('isoWeek').format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取本月第一天时间 ${now().startOf("M").format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取本月最后一天时间 ${now().endOf("M").format(moment.HTML5_FMT.DATETIME_LOCAL_MS)}
获取本月天数 ${now().format('YYYY-MM')} => ${now().daysInMonth()}
获取今天周几(周日为第一天)${now().day()} ${now().weekday()}
获取今天周几(周一为第一天)${now().isoWeekday()}
获取秒时间戳 ${now().format('X')} ${now().unix()}
获取毫秒时间戳 ${now().format('x')} ${now().valueOf()}
`)

0x04 时间计算

1
2
3
4
5
6
7
8
9
10
11
12
13
const moment = require("moment");
const now = () => moment("2022-05-22")
const start = () => moment("2022-05-22")
const end = () => moment("2022-06-22")
console.log(`
当前 ${now().format('YYYY-MM-DD HH:mm:ss')}
加1天 ${now().add(1,'d').format('YYYY-MM-DD HH:mm:ss')}
加1个月 ${now().add(1,'M').format('YYYY-MM-DD HH:mm:ss')}
减1天 ${now().subtract(1,'d').format('YYYY-MM-DD HH:mm:ss')}
减1个月 ${now().subtract(1,'M').format('YYYY-MM-DD HH:mm:ss')}
计算相差几天 ${end().diff(start(),'d')}
计算相差几分钟数 ${end().diff(start(),'m')}
`)

0x00 现象描述

应用中已存在低版本jar依赖,如何在不改变低版本依赖下,使用高版本jar

0x01 解决办法

  • 使用maven shade插件进行jar 重打包,将包名替换为新的包名
  • 使用自定义类加载器,实现类隔离

0x02 maven shade用法

本质是通过对冲突类的整个模块进行重命名,来实现冲突隔离

0x03 类加载隔离实现

通过指定类加载器来加载不同版本的jar,实现冲突隔离

0x04 参考

解决项目版本冲突——maven-shade插件使用
解决 jar 包冲突的神器:maven-shade-plugin

查询当前用户正在运行job

1
select * from user_jobs;

创建定时任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- 方式一
declare job_n number;
begin
dbms_job.submit(job_n ,'PROC_XXX;',sysdate,'sysdate+3/24');
commit;
end;

-- 方式二
declare
job number;
begin
dbms_job.submit(
job => job, /*自动生成job_id*/
what => 'get_warning_info(2, 202, ''2,44,11'');', /*需要执行的存储过程名称或sql语句*/
next_date => sysdate, /*初次执行时间-立即执行*/
interval => 'trunc(sysdate,''mi'')+1/(24*60)' /*每隔1分钟执行一次*/
);
commit;
end;

调用job

1
2
3
begin
dbms_job.run(jobid);
end;

停止&删除job

1
2
3
4
5
6
7
8
begin   
-- 停止
dbms_job.broken(jobId,true,next_date);
-- 删除
dbms_job.remove(jobId);
commit;
end

0x00 git 提交规范

提交格式

1
<type>(<scope>): <subject>

type

描述:用于说明 commit 的类别,只允许使用下面 7 个标识

feat:新功能(feature)
fix:修补 bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改 bug 的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动

scope

描述:用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

subject

描述:是 commit 目的的简短描述,不超过 50 个字符。

  1. 以动词开头,使用第一人称现在时,比如 change,而不是 changed 或 changes
  2. 第一个字母小写
  3. 结尾不加句号(.)

0x00 section0

0x01 section1

0x02 section2

0x03 section3

0x04 section4

0x00 注意事项

windows 10 安装需要注意挂载目录权限问题,可能导致git pull git@xx 无法使用

gitlab 官网文档

0x01 环境及准备

  • docker
  • docker compose
  • windows 10

0x02 一键安装

使用docker-compose方式

创建docker-compose.yml文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Compose file 版本号,和 docker 版本号对应。3 支持 docker 1.13.0+
version: "3"
# services 节点下包含多个待创建的 Docker Container
services:
# web 节点就是待启动的 gitlab 容器
web:
image: gitlab/gitlab-ce:latest
container_name: "gitlab"
restart: always
hostname: localhost:10080
environment:
TZ: "Asia/Shanghai"
GITLAB_OMNIBUS_CONFIG: |
gitlab_rails["time_zone"] = "Asia/Shanghai"
gitlab_rails["gitlab_shell_ssh_port"] = 10022
nginx["listen_port"] = 80
ports:
- "10080:80"
- "10022:22"
volumes:
  - gitlab-config:/etc/gitlab
- gitlab-logs:/var/log/gitlab
- gitlab-data:/var/opt/gitlab
volumes:
gitlab-logs:
gitlab-data:

启动容器

1
docker-compose up -d

等待安装后,即可正常使用

登录界面

0x03 gitlab 使用

登录

  1. root用户登录,创建用户
  2. 对新建用户修改密码,以新建用户登录
  3. 创建项目,本地clonepush

0x04 gitlab 使用日志查看

主要路径:/var/log/gitlab

0x04 git clone 问题排查参考

  • ssh key 配置不正确
  • 容器中/etc/gitlab/*key权限不正确,应为 400

参考链接:
git clone 失败问题排查

0x01 前置准备

  • 工具:uncOver (https://unc0ver.dev/)
  • 必装软件: windows 10itunesiCloud
  • 账号:icloud/apple_id (用于自签名应用及下载应用)
  • 支持版本: 视uncOver支持情况

tips: 使用爱思助手,越狱失败 (iphone7 iOS 12.3.1)

0x02 越狱步骤

pc&iphone安装AltStore (AltStore=>用于自签越狱工具)

  1. windows 10上安装AltStore
  2. iphone使用数据线连接电脑,左键任务栏中的AltStore,将AltStore安装置iphone
  3. 安装后,在iphone上会出现AltStore应用,设置授权信任证书,即可使用

安装越狱工具uncOver

  1. uncOver官网下载最新越狱包,通过第三方浏览器下载,同时将该越狱包发送至AltStore
  2. AltStore会自动为你安装复制过来的ipa文件
  3. 运行uncOver进行越狱,若失败,多尝试几次

0x03 参考链接

Jabi 扎比关于越狱自签教程 https://zhuanlan.zhihu.com/p/143936759

uncOver https://unc0ver.dev/

AltStore https://altstore.io/faq/

编译安装

软件包准备

编译安装

nginxpcrezlib三个源码包解压

1
2
3
tar xvf nginx.tar.gz -C nginx_src
tar xvf pcre.tar.gz -C pcre_src
tar xvf zlib.tar.gz -C zlib_src

分别编译并安装

1
2
3
4
5
6
7
8
9
10
11
cd pcre_src
./configure --prefix=/home/nginx/lib/pcre
make && make install

cd zlib_src
./configure --prefix=/home/nginx/lib/zlib
make && make install

cd nginx_src
./configure --prefix=/home/nginx/nginx --with-http_stub_status_module --with-pcre=/home/nginx/pcre_src --with-zlib=/home/nginx/zlib_src
make && make install

使用

修改conf/nginx.conf文件,并启动

1
2
3
4
5
6
# 启动
./sbin/nginx start
# 停止
./sbin/nginx stop
# 重载配置
./sbin/nginx -s reload