Jenkins自动化前后端项目部署记录以及一些坑
Jenkins依赖Java环境,默认服务器已经安装好Jdk与Tomcat
0. 开始安装下载war包,启动Tomcat安装,此时Jenkins已经运行,打开网页后按照提示在服务器对应文件中找到密码,输入并进入新手安装,选择默认的安装,这时别管它,应该会出现一系列失败,先进入tomcat刚安装的对应目录中:找到路径 \WEB-INF\detached-plugins 文件夹下确认是否存在 cloudbees-folder.hpi 这个文件,如果缺少则这里手动下载后放进去。
进入工作目录(不是安装目录,一般是root文件夹下的.jenkins文件夹),找到hudson.model.UpdateCenter.xml这个文件,将URL改为https://updates.jenkins-zh.cn/update-center.json
工作目录下updates文件夹default.json文件中,将所有 http://updates.jenkins-ci.org/download/ 替换为 https://updates.jenkins-zh.cn/
进行完以上所有步骤,重启Jenkins, ...
一些总会用到前端小姿势
CSS篇0. 文本自动换行bug假设一个宽度固定的div内有一段文字,那么浏览器默认处理方式会比较傻,纯中文下乍一看没问题,但英文与数字混搭等情况容易出现bug,此时解决方法有两种css方法:
12word-wrap: break-word; // 对过长单词会先另起一行word-break: break-all; // 粗暴地拆掉单词并换行,比较常用
1. css实现iPhone系列黑边适配以往的iPhone X 适配比较简单粗暴,通常是正则判断机型来做出相应处理,如今需要适配的iPhone机型早已不止X系列,好在css有对应的处理方案,非常实用,那就是 viweport-fit 属性:
需要设置页面内容完全覆盖整个窗口:
1<meta name="viewport" content="width=device-width, viewport-fit=cover">
只有设置了 viewport-fit=cover,env()才生效,根据情况来使用:
12padding-bottom: constant(safe-area-in ...
我的宿舍桌面版本迭代历史
这篇文章就稍微记录一下近两年来桌面的一些变化吧
最初经过一系列不重要迭代后的1.0版本,藏在屏幕后的ps4是我每天下班后的最大消遣,核心是利用分线器控制屏幕的切换,当时买的小分线器还有个遥控,不过很少用到。
后面往桌子旁加了两张几十块的小桌子,作用基本只是用来放笔记本电脑,因为没有买椅子,只是淘宝随便买了个休闲沙发椅,不适合办公学习,基本上坐上去就想打游戏 (⊙ˍ⊙),桌面离得也有点远,双手要抬起来久了会酸,所以操作区域基本是键盘抽屉那里,键盘和手绘板的位置实际会一直切换,加了个键盘托夹在键盘抽屉那稍微解放右手,此时整体规模已经定型🤨
当时的键盘换了一些键帽🤠,这个是国产机械键盘樱桃茶轴,黑轴青轴都敲过,现在只用红轴了,很多事情兜兜转转最后会发现平淡才是真。
后面换了台明基的显示器,当时冲着支持hdr买的,但事实证明两千块以下的显示器感受起来都差不多,hdr效果也是跟更大尺寸的更大流明度有关,玩具车。
于是之前的显示器竖着放到地上,铺上地毯直接盘腿坐地上打打码 ヘ(゚∀゚ヘ)
—- 搬了一波宿舍 —-
搬了宿舍房间空空如也,直接买了张1米6长 ...
React学习笔记
主要APIReact.createElement12345React.createElement( type, // 必填,元素类型,可以是html 标签字符串 / React 组件 [props], // 可选,元素属性,以对象形式展现 [...children] // 可选,嵌套在元素内的子元素)
eg:
12345var rElmLi1 = React.createElement('li', {id:'li1'}, 'one');var rElmLi2 = React.createElement('li', {id:'li2'}, 'two');var rElmLi3 = React.createElement('li', {id:'li3'}, 'three');var reactElementUl = React.createE ...
vue项目前端性能优化总结
三个层面:网络请求,JS优化,CSS优化
减少http请求
图片懒加载
使用字体图标或svg,尽量不使用png,png尽量使用css图片精灵
避免使用闭包,减少DOM回流重绘,避免使用css表达式
不使用cookie,不使用iframe,不使用flash
尽量减少引用大量第三方库 (减少资源大小)
使用webpack插件压缩混淆去注释 (减少资源大小)
开启Gzip压缩 (减少请求资源大小)
vue可以使用路由懒加载 (避免一次性加载资源过多)
0. 路由懒加载路由组件不使用直接引入,而是匿名函数返回形式,如下注释可以定义编译后的js文件名,在未进入该路由时此js文件的内容将不会被请求到:
1234{ path: '/home', component: () => import(/* webpackChunkName: 'base' */ '@/views/Index.vue')}
1. 开启gzip压缩1.1. 需要服务端做配置开启gzip功能,例如我的是nginx.conf配 ...
node+TS后端开发实践(环境篇)
主要技术栈:框架选择express,TS语言开发,TS在JS基础上增加了多种数据类型,包括其提供的接口编程、类型检查等特性,非常适合编写后端程序。
运行:ts-node + webpack + gulp
部署:webpack + pm2 / supervisor
全局安装Typescript即拥有一个编译器,可以使用tsc编译TS(ts后缀)为浏览器识别的原生js,使用”tsc -w”即可监听目录变化自动编译,源目录及输出目录等配置在项目根目录下tsconfig.json进行配置。
但是以上并不太适合实际开发中使用,我最终选择的方案为ts-node作为实例化编译器,开发模式下可在package.json配置”dev”: “ts-node-dev 相对目录启动文件路径”,安装devDependencies下依赖ts-node-dev,这样运行npm run dev即可启动项目并在终端查看实时代码错误检查。
编译生产使用webpack方案,webpack.config.js配置:
12345678910111213141516171819202122232425262728293031 ...
移动端(ios)日期显示错误问题
在ios中日期格式显示不能为”-“,否则会出现错误,H5开发中记得使用正则规避。
123const date = '2019-01-01'const newDate = new Date(date.replace(/-/g, '/'))
此问题只出现在ios,安卓和PC都能识别。
Linux开机自启Tomcat最简单方法
1. 修改开机自启脚本rc.local:vim /etc/rc.d/rc.local添加如下内容(java安装路径和tomcat路径根据实际修改):
123export JAVA_HOME=/home/shawn/jdk1.8.0_171/home/shawn/tomcat7/bin/startup.sh start
2. 修改rc.local为可执行1chmod 777 /etc/rc.d/rc.local
关于forEach循环的思考与优化
当年懵懂无知的我被问到这个问题时,脑袋一片空白,因为我一度认为forEach可能只是为了方便书写所创造出来的语法糖,在业务代码中也经常使用,但没有思考过它存在的问题,本文旨在记录自己的心路历程,抛砖引玉,如果对你有所帮助那就更好啦。
那么回到标题,首先forEach是不能使用任何手段跳出循环的,为什么呢?继续往下看。
我们知道forEach接收一个函数,它一般有两个参数,第一个是循环的当前元素,第二个是该元素对应的下标,手动实现一下伪代码:
12345Array.prototype.myForEach = function (fn) { for (let i = 0; i < this.length; i++) { fn(this[i], i, this); }}
forEach是不是真的这么实现我无从考究,但是以上这个简单的伪代码确实满足forEach的特性,而且也很明显就是不能跳出循环,因为根本没有办法操作到真正的for循环体。
后来经过查阅文档,发现官方对forEach的定义根本不是我认为的语法糖,它的标准 ...
前端三剑客各种知识点梳理汇总 2
JS 相关补充
JavaScript 由以下三部分组成:
ECMAScript(核心):JavaScript 语言基础
DOM(文档对象模型):规定了访问HTML和XML的接口
BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法
JS内置对象
数据封装类对象:Object、Array、Boolean、Number、String
其他对象:Function、Arguments、Math、Date、RegExp、Error
ES6新增对象:Symbol、Map、Set、Promises、Proxy、Reflect
一些规范
代码段使用花括号{}包裹
变量和函数在使用前进行声明
以大写字母开头命名构造函数,全大写命名常量
规范定义JSON对象,补全双引号
用{}和[]声明对象和数组
高性能编写注意
遵循严格模式:”use strict”;
将js脚本放在页面底部,加快渲染页面
将js脚本将脚本成组打包,减少请求
使用非阻塞方式下载js脚本
尽量使用局部变量来保存全局变量
尽量减少使用闭包
使用 window 对象属性方法时,省略 window
尽量减少对象成员嵌套
...






