跳到主要内容

· 阅读需 1 分钟

一、创建项目

1、初始化生成package.json文件

npm init --yes   //默认配置

npm init //根据流程填写作者的名字、描述和许可证等

2、在package.json平级创建一个名为 index.js 的文件

3、创建一个 README.md(可选)

二、发布到NPM

1、登录 NPM

npm login

2、输入用户名称、密码、邮箱、邮箱验证码

3、发布包(发布前,确定名称没有被占用)

npm publish

· 阅读需 1 分钟

远程端口

1、查看远程控制端口

Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber"

2、修改远程端口

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber" -Value 56896

56896为新的端口号,注意防火墙开通新的端口号

· 阅读需 3 分钟

一、gitlab相关

安装

1、安装必要的依赖项,配置SSH开机启动,系统防火墙中开放HTTP、HTTPS访问。

yum install -y curl policycoreutils-python openssh-server
systemctl enable sshd
systemctl start sshd
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
systemctl reload firewalld

2、上传gitlab-ce-15.9.2-ce.0.el7.x86_64.rpm 到root目录

3、安装gitlab-ce社区版本

rpm -ivh gitlab-ce-15.9.2-ce.0.el7.x86_64.rpm

4、修改配置

vi /etc/gitlab/gitlab.rb

说明:将external_url 'http://gitlab.example.com'地址修改成服务器的ip或域名 按ESC 输入:wq 回车保存

6、加载配置并重启gitlab

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

密钥

1、生成

ssh-keygen -t rsa -b 2048 -C "<wwt082928@163.com>"

2、查看

cat ~/.ssh/id_rsa.pub

备份迁移

1、查看gitlab版本

gitlab-rake gitlab:env:info

2、旧服务器代码数据备份

sudo gitlab-rake gitlab:backup:create

备份文件地址: /var/opt/gitlab/backups

3、上传备份文件到新服务器并设置777权限

chmod 777 /var/opt/gitlab/backups/1678424737_2023_03_10_15.9.2_gitlab_backup.tar

4、停止unicorn和sidekiq服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

5、恢复备份数据到新服务器并覆盖

gitlab-rake gitlab:backup:restore BACKUP=1678424737_2023_03_10_15.9.2

6、重启gitlab服务

gitlab-ctl start

⚠注意:1、新旧服务器上的gitlab版本建议保持一致

​ 2、将旧服务器上/etc/gitlab/gitlab-secrets.json文件覆盖到了新的服务器上,否则部分设置会出现500 错误

内存优化

1、修改/etc/gitlab/gitlab.rb 配置文件

puma['enable'] = true
puma['worker_timeout'] = 60
puma['worker_processes'] = 2
puma['per_worker_max_memory_mb'] = 300
sidekiq['max_concurrency'] = 15
postgresql['shared_buffers'] = "128MB"
postgresql['max_worker_processes'] = 4

2、加载配置并重启gitlab

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

卸载

1、停止gitlab

gitlab-ctl stop

2、卸载gitlab(注意这里写的是gitlab-ce)

rpm -e gitlab-ce

3、查看gitlab进程

ps aux | grep gitlab

4、杀掉service.log进程(后缀很多…的进程)*个人建议直接重启服务器

kill -9 进程号

5、删除所有包含gitlab文件

find / -name gitlab | xargs rm -rf

修改root密码

gitlab-rails console -e production

user = User.where(id: 1).first

user.password = '你的密码'

user.password_confirmation = '你的密码'

user.save!

exit

· 阅读需 1 分钟

1、新建watermark.js文件


// 页面添加水印效果
const setWatermark = (str) => {
const id = '1.23452384164.123412416';
if (document.getElementById(id) !== null) document.body.removeChild(document.getElementById(id));
const can = document.createElement('canvas');
can.width = 200;
can.height = 130;
const cans = can.getContext('2d');
cans.rotate((-20 * Math.PI) / 180);
cans.font = '12px Vedana';
cans.fillStyle = 'rgba(200, 200, 200, 0.30)';
cans.textBaseline = 'middle';
cans.fillText(str, can.width / 10, can.height / 2);
const div = document.createElement('div');
div.id = id;
div.style.pointerEvents = 'none';
div.style.top = '0px';
div.style.left = '0px';
div.style.position = 'fixed';
div.style.zIndex = '10000000';
div.style.width = `${document.documentElement.clientWidth}px`;
div.style.height = `${document.documentElement.clientHeight}px`;
div.style.background = `url(${can.toDataURL('image/png')}) left top repeat`;
document.body.appendChild(div);
return id;
};

/**
* 页面添加水印效果
* @method set 设置水印
* @method del 删除水印
*/
const watermark = {
// 设置水印
set: (str) => {
let id = setWatermark(str);
if (document.getElementById(id) === null) id = setWatermark(str);
},
// 删除水印
del: () => {
let id = '1.23452384164.123412416';
if (document.getElementById(id) !== null) document.body.removeChild(document.getElementById(id));
},
};
// 导出方法
export default watermark;


2、页面使用

watermark.set("我是水印")

· 阅读需 4 分钟

1、引用Vue依赖

yarn add weixin-js-sdk

2、新建wxConfig.js

//获取签名接口
import {requestData} from "@/api/request";
import {auth} from "@/api/urls";
import wx from "weixin-js-sdk";
const wxConfig = (resolve, reject) => {
const url = window.location.href;
requestData(auth.jsapi, {url: url, wxtype: "qy"}).then(({data, succeeded}) => {
if (succeeded) {
wx.config({
beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: data.appid, // 必填,企业微信的corpID
timestamp: data.timestamp, // 必填,生成签名的时间戳
nonceStr: data.noncestr, // 必填,生成签名的随机串
signature: data.signature,// 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: [
'onMenuShareAppMessage',//获取“转发”按钮点击状态及自定义分享内容接口
'onMenuShareWechat',//获取“微信”按钮点击状态及自定义分享内容接口
'onMenuShareTimeline',//分享到朋友圈
'shareAppMessage',//自定义转发到微信
'shareWechatMessage', //自定义转发到微信
'hideMenuItems',//隐藏右上角菜单接口
'getLocation',//获取地理位置接口
] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
});
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.ready(res => {
// 微信SDK准备就绪后执行的回调。
wx.hideMenuItems({// 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3
menuList: [
'menuItem:share:wechat',//分享微信
"menuItem:share:timeline",//分享到朋友圈
'menuItem:openWithSafari',//Safari打开
'menuItem:share:email',//邮箱
'menuItem:setFont',//调整字体
'menuItem:copyUrl',//复制链接
'menuItem:favorite',//收藏
]
});
resolve && resolve(wx, res);
})
wx.error(function (res) {
console.log(res);
});
} else {
console.log("微信配置错误!");
}
})
};

export {wxConfig}

3、main.js全局引用

import {wxConfig} from '@/utils/wxjsApi.js';
app.config.globalProperties.$wxConfig = wxConfig;

4、页面组件使用

//微信分享和获取定位
const {proxy} = getCurrentInstance();
proxy.$wxConfig((wx, res) => {
let shareData = {
title: "分享标题", // 分享标题
desc: "分享描述分享描述分享描述分享描述", // 分享描述
link: window.location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: host + "/heard.png", // 分享图标
};
// 转发
wx.onMenuShareAppMessage(shareData);
// 分享到朋友圈
wx.onMenuShareTimeline(shareData)
// 获取地理位置
wx.getLocation({
type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
success: function (res) {
}
});
});