Bootstrap
- 页面的modal元素记得加上
data-backdrop='static'和data-keyboard='false',禁用非 modal 内点击和点击键盘 ESC 键 取消 modal。
JQuery
批量删除并返回批量删除的结果时,ajax 方法中 async 一定要配置成 false,否则页面无法正确响应批量删除的结果。
使用 qrcodejs 生成二维码图片之后直接使用
$('img').attr('src')返回的值是undefined,这时需要使用setTimeout(function(), delay_time)来拿到图片的 src 。js数组遍历删除元素的方法:
javascriptfor (let i = 0; i < arr.length; i++) { if (...) { arr.splice(i, 1); i--; } }1
2
3
4
5
6
CSS
局部列表滚动查看css,height和max-height二选一。
css.grid-list { height: 190px; //固定高度的列表 max-height: 500px; //列表最大高度 overflow-x: hidden; overflow-y: scroll; } .grid-list::-webkit-scrollbar { display: none; }1
2
3
4
5
6
7
8
9一个基于网格的响应式布局简单示例:
css.grid-container { display: grid; grid-template-rows: 1fr; grid-gap: 1rem; } @media screen and (max-width: 719px) { .grid-container { grid-template-columns: 1fr; } } @media screen and (min-width: 719px) { .grid-container { grid-template-columns: 1fr 1fr; } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15浏览器窗口宽度大于719px时,元素呈2列排布,反之呈1列排布。
HTML
- 使用原生HTML进行表单开发时,如果没有指定
<button>的type属性,则默认type="submit",最终导致点击之后window.location.href的路径中会自动多一个?,这是因为原生的表单提交是以path后拼接form的参数进行请求的,所以在进行异步请求时需要指定提交的按钮为<button type="button">。
缓存
- 使用 redis-cli 进入 redis 的命令行模式时,可以使用
keys **查看所有 key 值,使用get [key]查看 key 对应的 value 值。需要注意的是,使用keys **查看到的 key 值如果使用“”包括,那么get [key]的 key 也需要用“”包括起来。
构建
使用
frontend-maven-plugin整合前后端项目构建时,需要注意web模块需要放在server模块之前,保证web先构建,这样才能将web构建好的文件复制到server的resources/public目录下。xml<modules> <module>xxx-web</module> <module>xxx-server</module> </modules>1
2
3
4同时要注意后台不要对
@RequestMapping("/")做处理,否则有可能会使得访问"/"无法显示前端构建好的index.html页面。maven引用私服的jar包时,需要在
pom.xml文件的<repositories>标签下中指定私服的<id>、<name>、<url>。gitlab-runner的
config.toml在[runners.docker]中配置extra_hosts = ["xxx.xxx.com:172.17.0.1"]可实现runner容器的ip和host映射关系的配置。设置maven的
setting.xml中 mirror 节点的mirrorOf有以下配置策略:*:everythingexternal:*:everything not on the localhost and not file basedrepo,repo1:repo or repo1*,!repo1:everything except repo1
部署
windows 下使用 Nginx 相关命令如下:
bash#启动 点击 Nginx 目录下的 nginx.exe;cmd 运行 start nginx #关闭 nginx -s stop #立即停止nginx,不保存相关信息 nginx -s quit #正常退出nginx,并保存相关信息 #重启(重新加载配置) nginx -s reload1
2
3
4
5
6
7
8
9nginx 的配置文件 root 路径不识别
\只识别/。Letsencrypt通配符证书的申请和在nginx配置:
使用 nginx 解决 CORS 问题使用反向代理将服务端(接口提供方)与客户端(接口调用方)部署在同一个域下。
使用 nginx 解决 X-Frame-Options: deny 问题使用headers-more插件,推荐直接下载带headers-more模块的openresty,下载地址。在 nginx.conf 中(一般是在server下)配置:
nginx# 删除 "X-Frame-Options" header more_clear_headers 'X-Frame-Options'; # 设置 "X-Frame-Options: SAMEORIGIN" 同域可嵌入iframe more_set_headers 'X-Frame-Options: SAMEORIGIN';1
2
3
4指定MySQL时区,在mysqld.conf中增加
default-time-zone='+8:00'配置。在做微信公众号开发时,需要在公网上调用开发机器的接口,除了使用花生壳等软件进行内网穿透之外,如果有富余的公网服务器资源,可以使用一些简单方便的内网穿透工具,推荐 ichWebpass。
gitlab pg数据库配置
修改
/var/opt/gitlab/postgresql/data/pg_hba.conf文件,增加下面的配置:nginxhost all all 192.168.1.10/22 trust1上述的修改会在使用
gitlab-ctl reconfigure命令之后失效,通过修改gitlab配置文件中pg数据库的entries可以避免这种情况。具体为: 在gitlab.rb中增加tomlpostgresql['custom_pg_hba_entries'] = { APPLICATION: [{ # APPLICATION should identify what the settings are used for type: 'host', database: 'all', user: 'all', cidr: '192.168.1.0/24', method: 'trust', #option: 0 }] }1
2
3
4
5
6
7
8
9
10注意: 这里的
APPLICATION对象是一个数组,有些gitlab版本默认不是数组,需要手动修改。
Git
- GitHub 现在支持创建私有代码仓库了,但使用时需要注意:将 GitHub 的 repository 从 public 切换成 private 再切回 public 之后,需要
push代码到master分支才能让已经404的Github Pages页面恢复正常。
Windows
为了在windows系统上安装docker,需要将win10系统升级到专业版开启HyperV虚拟机才行。
win10专业版升级密钥:
DR9VN-GF3CR-RCWT2-H7TR8-82QGT
Linux
Ubuntu/Debian开机启动脚本
spider.sh示例:bash#!/bin/bash ### BEGIN INIT INFO # Provides: spider # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: spider # Description: spider service start ### END INIT INFO [shell content]1
2
3
4
5
6
7
8
9
10
11
12
13- 开机启动:
update-rc.d spider.sh defaults - 移除开机启动:
update-rc.d spider.sh remove
- 开机启动:
使用netstat查看系统网络端口情况:
netstat -tunlp;如果发现没有PID(进程号),需要使用sudo netstat -tunlp。对于新安装的官方Ubuntu-server等系统,可以通过指令
sudo apt-get install build-essential安装gcc环境。取消sudo密码:
sudo visudo进入编辑界面;添加行username ALL=(ALL) NOPASSWD:ALL,username为登录用户名,如果想作用于某个用户组则使用%usergroup ALL=(ALL:ALL) NOPASSWD:ALL。linux系统添加ssh公钥的方式:
- 本地
bash# 覆盖 cat [ssh_pub_key] > ~/.ssh/authorized_keys # 追加 cat [ssh_pub_key] >> ~/.ssh/authorized_keys1
2
3
4
5- 远程
bashscp ~/.ssh/id_rsa.pub root@[remote-server-ip]:/root/.ssh/authorized_keys1注: 需要输入远程服务器的登录密码进行认证。
ssh对目录的权限有要求,具体如下:
目录/文件 权限 ~/.ssh 700 ~/.ssh/* 600 ~/.ssh/config 700 在终端中执行
curl -X GET http://www.sample.com/api?a=1&b=2指令时,实际上只会传入a=1参数,想要同时传入a=1和b=2,可使用以下两种方式:&符号转义:curl -X GET http://www.sample.com/api?a=1\&b=2- url加上双引号:
curl -X GET "http://www.sample.com/api?a=1&b=2"
当linux服务器重置之后,通过ssh再次访问时可能出现以下信息:
bashECDSA host key for xxx.xxx.xxx.xxx has changed and you have requested strict checking. Host key verification failed.1
2简单的说就是服务器的Host key发生了变更,进行ssh访问时验证失败,通过以下命令可以进行修复:
bashssh-keygen -R xxx.xxx.xxx.xxx1其中的xxx.xxx.xxx.xxx为服务器ip。
Docker
使用docker-compose的build参数构建docker镜像时,要注意指定的context目录下默认的Dockerfile文件名必须为
Dockerfile。如果想使用其他文件名,可以通过-f filename指定。docker环境为docker for windows,有效避免host为windows系统时
docker run -v绑定的目录映射关系在系统重启之后失效的方法为:使用docker volume create path1创建volume,再使用-v path1:/container/path。简单地说就是使用 “自定义数据卷” 代替 “容器自动创建的临时数据卷” 进行映射,完成docker容器的数据持久化。指定docker的dns,防止网络环境变化时导致容器网络的不稳定。
编辑docker的
daemon.json:json{ "dns": ["114.114.114.114", "8.8.8.8"] }1
2
3使用docker-compose来部署redash时,注意需要先创建redash数据库才能启动:
bashsudo docker-compose run --rm server create_db sudo docker-compose up -d1
2使用docker方式部署consul时,由于consul在docker虚拟网络中无法正确识别注册服务的hostname,因此需要在注册服务中配置
spring.cloud.consul.discovery.hostname=192.168.1.xxx(注册服务的局域网ip,要注意的是必须是docker宿主机所在地局域网ip,使用172.17.0.1等docker内网ip也不行),才能确保consul正确地进行健康检查。
评论区留言准则:
1. 本评论区禁止传播封建迷信、吸烟酗酒、低俗色情、赌博诈骗等任何违法违规内容。
2. 当他人以不正当方式诱导打赏、私下交易,请谨慎判断,以防人身财产损失。
3. 请勿轻信各类招聘征婚、代练代抽、私下交易、购买礼包码、游戏币等广告信息,谨防网络诈骗。