首页
留言
友链
关于
Search
1
思源笔记docker私有化部署及使用体验分享
2,529 阅读
2
windows11 远程提示:为安全考虑,已锁定该用户帐户,原因是登录尝试或密码更改尝试过多。
1,147 阅读
3
解决 nginxProxyManager 申请证书时的SSL失败问题
657 阅读
4
Pointer-Focus:一款功能强大的教学、录屏辅助软件
635 阅读
5
使用cspell对项目做拼写规范检查
598 阅读
Web前端
CSS
JavaScript
交互
Vue
小程序
后端
运维
项目
生活
其他
转载
软件
职场
登录
Search
标签搜索
docker
DevOps
magic-boot
Linux
酷壳
frp
RabbitMQ
gitlab
Node
git
工具
MybatisPlus
clickhouse
Syncthing
规范
前端
产品
nginx
markdown
axios
朱治龙
累计撰写
146
篇文章
累计收到
9
条评论
首页
栏目
Web前端
CSS
JavaScript
交互
Vue
小程序
后端
运维
项目
生活
其他
转载
软件
职场
页面
留言
友链
关于
搜索到
146
篇与
朱治龙
的结果
2022-04-12
解决小程序导航不能超过 10 层的问题
解决小程序导航不能超过 10 层的问题,原生代码不动,在一个地方通过拦截 wx.navigateTo 解决const originNavigateTo = wx.navigateTo; Reflect.defineProperty(wx, 'navigateTo', { configurable: true, enumerable: true, writable: true, value: function () { const config = arguments[0] || {} // console.log(JSON.stringify(config)) // console.log('originNavigateTo : ', config.url) if (getCurrentPages().length > 9) { console.log('使用wx.redirectTo跳转 ---------->') wx.redirectTo(config) } else { console.log('使用wx.navigateTo跳转 ---------->') originNavigateTo.apply(this, arguments) } } })提示:需配置开启 es6 支持
2022年04月12日
27 阅读
0 评论
0 点赞
2022-04-11
WebGL实战解析(一) - 学习笔记
3D基本元素2D坐标系2D坐标系由x轴和y轴构成。其中,笛卡尔坐标系是最常见的2D坐标系。笛卡尔坐标系规定y轴向上为正方向,x轴向右为正方向HTML5 Canvas 2D坐标系原点(0,0)为左上角,向右为x轴的正方向,向下为y轴的正方向3D坐标系在2D坐标系上增加了表示深度的z轴,即3D物体里屏幕的深度HTML5 WebGL 3D坐标系绘图的可是范围为[-1,+1]网格与3D图形三角形是基础图形3D图形由一个或多个三角形组成网格由一个或多个图形组成,网格也叫模型法线始终垂直于某平面的虚线。在几何中,法线是指平面上垂直于曲线在某点切线的直线。3D变换概念变换原理是对顶点的改变变换的缩放、平移和旋转矩阵逐个顶点的变换方法是复杂乏味的矩阵是复杂性解决之道网格表面纹理与材质一个网格构成了物体的形状,纹理可以定义网格表面的外观纹理可以定义网格表面的外观材质是网格表面的特性光照原理光线方向决定物体的明暗度与阴影在着色过程中,需要考虑光源类型与反射类型光源类型平行光点光源光环境光反射类型漫反射:光色由入射光色、表面漆色和入射角决定环境反射:由入射光色和表面漆色决定着色器替代传统的固定渲染管线可编程性顶点着色器顶点着色器用来描述顶点的位置、颜色的程序片元着色器片元着色器是对网格表面像素的处理程序。3D 世界与立方体立方体的构成一个正方形的立方体在WebGL程序中,实际上是绘制了12个三角形,再对它的表面进行着色,最终形成我们看到的效果。模型文件格式相机、视口和投影左下角的眼睛代表相机,相机角度的不同,观察到的场景的景象就是不同的。而它的远近(x)就决定了他到的物体的大小。图中的绿色区域代表视口,通俗的讲就是WebGL Canvas决定的,它的大小也就决定了它可视化的范围。后面红色的区域能够显示场景的最远距离到哪里。红绿块之间的可视化椎体,就决定了可视化世界的范围。最终的影像会在可视化视口中呈现出来。投影的概念就是物体投影到前方视口上最终形成的影像通过对相机角度的不同,它的椎体肯定是有变化的,它看到的投影到视口上的影像肯定也是不同的。第一个WebGL程序开发WebGL程序的基本步骤得到canvas标签得到绘制上下文对象编写着色器初始化着色器绘制代码实现<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>第一个WebGL程序</title> <script src="./lib.js"></script> </head> <body> <canvas id="webgl" width="500" height="500"></canvas> <script> var canvasElement = document.getElementById('webgl') const context = canvasElement.getContext('webgl') // 绘制顶点着色器 const vertexShaderSource = ` attribute vec4 apos; void main() { gl_PointSize=20.0; gl_Position = apos; } ` // 绘制片元着色器 const fragShaderSource = ` void main(){ gl_FragColor = vec4(1.0,0.0,0.0,1.0); } ` const program = initShader(context, vertexShaderSource, fragShaderSource) const aposLocation = context.getAttribLocation(program, 'apos') context.clearColor(0.2, 0.3, 0.5, 1.0) context.clear(context.COLOR_BUFFER_BIT) let x = 0.0 let y = 0.0 for(var i = 0, j = 0.1; i< 10; i++){ x += y y += j context.vertexAttrib4f(aposLocation, x, y, 0.0, 1.0) context.drawArrays(context.POINTS, 0, 1) } </script> </body> </html> // lib.js /** * * @param {CanvasContext} gl Canvas Context 对象 * @param {*} vertexShaderSource 顶点着色器源码 * @param {*} fragmentShaderSource 片元着色器源码 * @returns */ const initShader = function(gl, vertexShaderSource, fragmentShaderSource) { // 创建一个空的顶点着色器对象 const vertexShader = gl.createShader(gl.VERTEX_SHADER) // 创建一个空的片元着色器对象 const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER) // 加入源代码 gl.shaderSource(vertexShader, vertexShaderSource) gl.shaderSource(fragmentShader, fragmentShaderSource) // 编译源代码 gl.compileShader(vertexShader) gl.compileShader(fragmentShader) // 创建内部调用的应用程序 var program = gl.createProgram() // 将着色器附着在应用程序上 gl.attachShader(program, vertexShader) gl.attachShader(program, fragmentShader) // 连接 gl.linkProgram(program) gl.useProgram(program) // 输出调试日志 console.log(gl.getShaderInfoLog(fragmentShader)) return program } WebGL 缓冲区对象attribute 变量的使用在顶点着色器中,声明 attribute 变量将 attribute 变量赋值给 gl_Position 变量向 attribute 变量传递数据缓冲区对象的创建与绑定缓冲区对象是绘制面所必须的技术,否则只能绘制点,它可以一次性地写入多个顶点数据,这样就可以为我们描绘出一个图形的轮廓,它可以是一块内存区域,这块内存区域通常来说很可能是显卡分配的创建步骤1、创建缓冲区的方法 var buffer = gl.createBuffer()2、根据返回值判断是否创建成功3、绑定缓冲区方法 gl.bindBuffer(gl.ARRAY_BUFFER,buffer)向缓冲区内写入数据gl.bufferData(gl.ARRAY_BUFFER, data, useMethod)data:是类型化数组useMethod:如何使用内存中的数据,可选值有:gl.STATIC_DRAW 一次性写入,多次绘制gl.STREAM_DRAW 一次性写入,调用几次,比第一次调用的要少,但都是写入一次gl.DYNAMIC_DRAW 多次写入,多次绘制类型化数组:Int8Array Unit8ArrayInt16Array Unit16ArrayInt32Array Unit32ArrayFloat32Array 最常用Float64Array缓冲区数据导入 attribute变量vertexAttribPointer(location, size, type, normalized, stride, offset)完整代码示例<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="./lib.js"></script> </head> <body> <canvas id="webglcanvas" width="500" height="500"></canvas> <script> var ctx = document.getElementById('webglcanvas').getContext('webgl') var vertexShaderSource = ` attribute vec4 apos; void main(){ gl_Position = apos; gl_PointSize = 15.0; } ` var fragmentShaderSource = ` void main(){ gl_FragColor = vec4(1.0,0.0,0.0,1.0); } ` var buf = ctx.createBuffer() ctx.bindBuffer(ctx.ARRAY_BUFFER, buf) var program = initShader(ctx,vertexShaderSource,fragmentShaderSource) var aposLocation = ctx.getAttribLocation(program, 'apos') var data = new Float32Array([ 0.6,0.8, 0.2,0.5, -1.0,1.0, 1.0,1.0, -1.0,-1.0, 1.0,-1.0, 0.0,0.0 ]) ctx.bufferData(ctx.ARRAY_BUFFER, data, ctx.STATIC_DRAW) ctx.vertexAttribPointer(aposLocation, 2, ctx.FLOAT, false, 0, 0) ctx.enableVertexAttribArray(aposLocation) ctx.clearColor(0.0,0.0,1.0,1.0) ctx.clear(ctx.COLOR_BUFFER_BIT) // var points = [ // {x:0, y:0}, // {x:0.6, y:0.8}, // {x:0.2, y:0.5} // ] // for(var i = 0; i< points.length; i++) { // ctx.vertexAttrib4f(aposLocation, points[i].x, points[i].y, 1.0, 1.0) // ctx.drawArrays(ctx.POINTS, 0, 3) // } ctx.drawArrays(ctx.POINTS, 0, 7) </script> </body> </html> WebGL 基本图形绘制点的绘制gl.drawArrays(gl.POINTS, 0, 1)线段的绘制绘制线gl.drawArrays(gl.LINES, start, count)var vertexShaderSource = ` attribute vec4 aPos; void main() { gl_Position = aPos; gl_PointSize = 20.5; } ` var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0,0.0,0.0,1.0); } ` var gl = document.getElementById('canvas').getContext('webgl') var program = initShader(gl,vertexShaderSource,fragmentShaderSource) var posLocation = gl.getAttribLocation(program, 'aPos') var data = new Float32Array([ 0.0,0.0,0.5,0.5, 0.3,0.6,-0.3,-0.9 ]) var buffer = gl.createBuffer() gl.bindBuffer(gl.ARRAY_BUFFER, buffer) gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW) gl.vertexAttribPointer(posLocation, 2, gl.FLOAT, false, 0, 0) gl.enableVertexAttribArray(posLocation) gl.clearColor(0.0, 0.0, 0.0, 1.0) gl.clear(gl.COLOR_BUFFER_BIT) gl.drawArrays(gl.LINES, 0, 4)运行效果:绘制多线段gl.drawArray(gl.LINE_STRIP, start, count)绘制Z形线var vertexShaderSource = ` attribute vec4 aPos; void main() { gl_Position = aPos; gl_PointSize = 20.5; } ` var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0,0.0,0.0,1.0); } ` var gl = document.getElementById('canvas').getContext('webgl') var program = initShader(gl,vertexShaderSource,fragmentShaderSource) var posLocation = gl.getAttribLocation(program, 'aPos') var data = new Float32Array([ -0.5,0.5, 0.5,0.5, -0.5,-0.5, 0.5,-0.5 ]) var buffer = gl.createBuffer() gl.bindBuffer(gl.ARRAY_BUFFER, buffer) gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW) gl.vertexAttribPointer(posLocation, 2, gl.FLOAT, false, 0, 0) gl.enableVertexAttribArray(posLocation) gl.clearColor(0.0, 0.0, 0.0, 1.0) gl.clear(gl.COLOR_BUFFER_BIT) gl.drawArrays(gl.LINE_STRIP, 0, 4)绘制矩形框// 绘制矩形框 var vertexShaderSource = ` attribute vec4 aPos; void main() { gl_Position = aPos; gl_PointSize = 20.5; } ` var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0,0.0,0.0,1.0); } ` var gl = document.getElementById('canvas').getContext('webgl') var program = initShader(gl,vertexShaderSource,fragmentShaderSource) var posLocation = gl.getAttribLocation(program, 'aPos') var data = new Float32Array([ -0.5,0.5, 0.5,0.5, 0.5,-0.5, -0.5,-0.5, -0.5,0.5 ]) var buffer = gl.createBuffer() gl.bindBuffer(gl.ARRAY_BUFFER, buffer) gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW) gl.vertexAttribPointer(posLocation, 2, gl.FLOAT, false, 0, 0) gl.enableVertexAttribArray(posLocation) gl.clearColor(0.0, 0.0, 0.0, 1.0) gl.clear(gl.COLOR_BUFFER_BIT) gl.drawArrays(gl.LINE_STRIP, 0, 5)绘制回路线段gl.drawArray(gl.LING_LOOP,start, count)可以把最后一个顶点跟第一个顶点连接在一起// 绘制回路线段 var vertexShaderSource = ` attribute vec4 aPos; void main() { gl_Position = aPos; gl_PointSize = 20.5; } ` var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0,0.0,0.0,1.0); } ` var gl = document.getElementById('canvas').getContext('webgl') var program = initShader(gl,vertexShaderSource,fragmentShaderSource) var posLocation = gl.getAttribLocation(program, 'aPos') var data = new Float32Array([ -0.5,0.5, 0.5,0.5, 0.5,-0.5, -0.5,-0.5 ]) var buffer = gl.createBuffer() gl.bindBuffer(gl.ARRAY_BUFFER, buffer) gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW) gl.vertexAttribPointer(posLocation, 2, gl.FLOAT, false, 0, 0) gl.enableVertexAttribArray(posLocation) gl.clearColor(0.0, 0.0, 0.0, 1.0) gl.clear(gl.COLOR_BUFFER_BIT) gl.drawArrays(gl.LINE_LOOP, 0, 4)多边形的绘制gl.drawArray(gl.TRIANGLES, start, count)// 绘制三角形 var vertexShaderSource = ` attribute vec4 aPos; void main() { gl_Position = aPos; gl_PointSize = 20.5; } ` var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0,0.0,0.0,1.0); } ` var gl = document.getElementById('canvas').getContext('webgl') var program = initShader(gl,vertexShaderSource,fragmentShaderSource) var posLocation = gl.getAttribLocation(program, 'aPos') var data = new Float32Array([ 0.0,0.0, -0.5,-0.5, 0.5,-0.5 ]) var buffer = gl.createBuffer() gl.bindBuffer(gl.ARRAY_BUFFER, buffer) gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW) gl.vertexAttribPointer(posLocation, 2, gl.FLOAT, false, 0, 0) gl.enableVertexAttribArray(posLocation) gl.clearColor(0.0, 0.0, 0.0, 1.0) gl.clear(gl.COLOR_BUFFER_BIT) gl.drawArrays(gl.TRIANGLES, 0, 3)绘制三角带gl.drawArray(gl.TRIANGLE_STRIP,start, count)// 绘制平行四边形 var vertexShaderSource = ` attribute vec4 aPos; void main() { gl_Position = aPos; gl_PointSize = 20.5; } ` var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0,0.0,0.0,1.0); } ` var gl = document.getElementById('canvas').getContext('webgl') var program = initShader(gl,vertexShaderSource,fragmentShaderSource) var posLocation = gl.getAttribLocation(program, 'aPos') var data = new Float32Array([ -0.3,0.3, 0.5,0.3, -0.5,-0.3, 0.3, -0.3 ]) var buffer = gl.createBuffer() gl.bindBuffer(gl.ARRAY_BUFFER, buffer) gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW) gl.vertexAttribPointer(posLocation, 2, gl.FLOAT, false, 0, 0) gl.enableVertexAttribArray(posLocation) gl.clearColor(0.0, 0.0, 0.0, 1.0) gl.clear(gl.COLOR_BUFFER_BIT) gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4)绘制三角扇gl.drawArray(gl.TRIANGLE_FAN, start, count)// 绘制六边形 var vertexShaderSource = ` attribute vec4 aPos; void main() { gl_Position = aPos; gl_PointSize = 20.5; } ` var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0,0.0,0.0,1.0); } ` var gl = document.getElementById('canvas').getContext('webgl') var program = initShader(gl,vertexShaderSource,fragmentShaderSource) var posLocation = gl.getAttribLocation(program, 'aPos') var data = new Float32Array([ 0.0,0.0, -0.3,0.5, -0.6,0.0, -0.3,-0.5, 0.3,-0.5, 0.6,0.0, 0.3,0.5, -0.3,0.5 ]) var buffer = gl.createBuffer() gl.bindBuffer(gl.ARRAY_BUFFER, buffer) gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW) gl.vertexAttribPointer(posLocation, 2, gl.FLOAT, false, 0, 0) gl.enableVertexAttribArray(posLocation) gl.clearColor(0.0, 0.0, 0.0, 1.0) gl.clear(gl.COLOR_BUFFER_BIT) gl.drawArrays(gl.TRIANGLE_FAN, 0, 8)WebGL 图形变换图形的移动原理图形的移动,实际上就是定量改变顶点的位置,在顶点着色器中,顶点修改是逐个进行的,且偏移值一致平移代码示例var main = function() { // 顶点着色器 var vertexShaderSource = ` attribute vec4 pos; uniform float a; uniform float b; void main() { gl_Position.x = pos.x + a; gl_Position.y = pos.y + b; gl_Position.z = 0.0; gl_Position.w = 1.0; } ` // 片元着色器 var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } ` var gl = document.getElementById('canvas').getContext('webgl') var buffer = gl.createBuffer() gl.bindBuffer(gl.ARRAY_BUFFER, buffer) var data = new Float32Array([ 0.0,0.0, -0.5,-0.5, 0.5,-0.5 ]) gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW) var program = initShader(gl, vertexShaderSource, fragmentShaderSource) var a = 0.0, b = 0.0 var posLocation = gl.getAttribLocation(program, 'pos') var aLocation = gl.getUniformLocation(program, 'a') var bLocation = gl.getUniformLocation(program, 'b') gl.vertexAttribPointer(posLocation, 2, gl.FLOAT, false, 0, 0) gl.enableVertexAttribArray(posLocation) var run = function() { gl.uniform1f(aLocation, a) gl.uniform1f(bLocation, b) gl.clearColor(0.0, 0.0, 1.0, 1.0) gl.clear(gl.COLOR_BUFFER_BIT) gl.drawArrays(gl.TRIANGLES, 0, 3) a += 0.05 b += 0.05 setTimeout(run, 50) } run() } main()图形的缩放顶点不变的方式缩放var main = function() { // 顶点着色器 var vertexShaderSource = ` attribute vec4 pos; uniform float zoomRadio; void main() { gl_Position.x = pos.x * zoomRadio; gl_Position.y = pos.y * zoomRadio; gl_Position.z = 0.0; gl_Position.w = 1.0; } ` // 片元着色器 var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } ` var gl = document.getElementById('canvas').getContext('webgl') var buffer = gl.createBuffer() gl.bindBuffer(gl.ARRAY_BUFFER, buffer) var data = new Float32Array([ 0.0,0.0, -0.5,-0.5, 0.5,-0.5 ]) gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW) var program = initShader(gl, vertexShaderSource, fragmentShaderSource) var zoomRatio = Math.random() var posLocation = gl.getAttribLocation(program, 'pos') var zoomLocation = gl.getUniformLocation(program, 'zoomRadio') gl.vertexAttribPointer(posLocation, 2, gl.FLOAT, false, 0, 0) gl.enableVertexAttribArray(posLocation) var run = function() { gl.uniform1f(zoomLocation, zoomRatio) gl.clearColor(0.0, 0.0, 1.0, 1.0) gl.clear(gl.COLOR_BUFFER_BIT) gl.drawArrays(gl.TRIANGLES, 0, 3) zoomRatio = Math.random() setTimeout(run, 500) } run() } main()图形的旋转var main = function() { // 顶点着色器 var vertexShaderSource = ` attribute vec4 pos; uniform float sinB; uniform float cosB; void main() { gl_Position.x = pos.x * cosB - pos.y * sinB; gl_Position.y = pos.x * sinB + pos.y * cosB; gl_Position.z = 0.0; gl_Position.w = 1.0; } ` // 片元着色器 var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } ` var gl = document.getElementById('canvas').getContext('webgl') var data = new Float32Array([ 0.0,0.0, -0.5,-0.5 ]) gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW) var program = initShader(gl, vertexShaderSource, fragmentShaderSource) bindAttribute(gl, 'pos', data, program) var sinB, sinBLocation,cosB, cosBLocation sinBLocation = gl.getUniformLocation(program, 'sinB') cosBLocation = gl.getUniformLocation(program, 'cosB') var angle = -135; setInterval(function() { angle -= 1 var t = Math.PI * angle / 180 sinB = Math.sin(t) cosB = Math.cos(t) gl.uniform1f(sinBLocation, sinB) gl.uniform1f(cosBLocation,cosB) gl.clearColor(0.0, 0.0, 1.0, 1.0) gl.clear(gl.COLOR_BUFFER_BIT) gl.drawArrays(gl.LINES, 0, 2) }, 1000) } main()
2022年04月11日
35 阅读
0 评论
0 点赞
2022-04-11
使用「Relation Graph」优化图表展现效果
背景说明近期检查前端工程的打包情况,发现@antv/g6占用了很大的空间:经过前端团队内部了解,这个主要是用于项目内超算中心的关系图展示,关系图这一块也随着业务的需求使用了不同的组件来实现:echarts > Mindelixir > @antv/G6实际使用@antv/G6实现完的效果,我的直观感觉也不是很理想,数据量大的情况下,显示太小,而且看了下相关的代码,感觉实现过程也不够优雅。所以秉承公司精益求精的企业文化,为了减少打包体积及优化使用体验等目的,准备使用「Relation Graph」对这一块进行大刀阔斧的改造。经过三四天的打磨,整体效果得到了运营同事的认可,先看看实现后的效果:本次调整后,打包体积上有较大的缩减:优化前:(原始大小:13.69M;压缩后:4.71M;开启gzip:1.42M)优化后:(原始大小:8.97M;压缩后:3.14M;开启gzip:957.42K)代码实现下面将项目中关系图相关的一些核心代码进行讲解视图代码<relation-graph ref="relationGraph" :options="graphOptions"> <div slot="node" slot-scope="{node}"> <el-popover v-if="node.data.status === 'user'" trigger="hover" placement="right" popper-class="account-graph-popver" > <div slot="reference" class="node-item flex align-center"> <div class="node-icon" :style="{color:node.data.iconColor}"> <em class="node-icon-inner" :class="node.data.nodeIconClassName" /> </div> <span class="node-name margin-left-sm" v-text="node.text" /> </div> <div class="popover-tips"> <p v-if="node.data.realname !== node.data.email && node.data.realname !== ''"> <span>{{ $t('userCenter.name') }}</span>: {{ node.data.realname }} </p> <p><span>{{ $t('common.email') }}</span>: {{ node.data.email }}</p> <p v-if="node.data.phone"> <span>{{ $t('common.mobile') }}</span>: {{ node.data.phone }} </p> <div v-if="belongingType==='use' && stopClick('accountMgmt')"> <el-divider /> <p class="text-center"> <el-button slot="reference" type="text" class="padding-lr-xs" @click="unBind(node)"> <para-lang code="selfService.group.accountUnbinding" /> </el-button> </p> </div> </div> </el-popover> <el-popover v-else-if="node.data.status !== 'accountMessage' && stopClick('accountMgmt')" trigger="hover" placement="right" popper-class="account-graph-popver" > <div slot="reference" class="node-item flex align-center"> <div class="node-icon" :style="{color:node.data.iconColor}"> <em class="node-icon-inner" :class="node.data.nodeIconClassName" /> </div> <span class="node-name margin-left-sm" v-text="node.text" /> </div> <div v-if="node.data.status === 'account'" class="popover-tips"> <p><span>{{ $t('common.SCAccount') }}</span>: {{ node.text }}</p> <div> <el-divider /> <p class="text-center"> <el-button v-if="belongingType==='belonging'" type="text" @click="modifyAccountRelation(node)"> 修改所属关系 </el-button> <el-button v-if="belongingType==='use'" type="text" @click="bindAccount(node)"> <para-lang code="selfService.group.accountBinding" /> </el-button> </p> </div> </div> <div v-if="node.data.status === 'ssc'" class="popover-tips"> <p><span>{{ $t('common.SCCode') }}</span>: {{ node.text }}</p> <el-divider /> <p class="text-center"> <el-button type="text" @click="showAccountApply(node.text)"> <para-lang code="selfService.group.applicationAccount" /> </el-button> </p> </div> </el-popover> <div v-else class="node-item flex align-center"> <div class="node-icon" :style="{color:node.data.iconColor}"> <em class="node-icon-inner" :class="node.data.nodeIconClassName" /> </div> <span class="node-name margin-left-sm" v-text="node.text" /> </div> </div> </relation-graph>图标配置项在Vue 组件的 data 里添加如下信息graphOptions: { 'debug': envName === 'development', // 仅开发或Istio环境下为调试模式 'allowShowMiniView': true, 'allowSwitchLineShape': true, 'defaultFocusRootNode': false, 'layouts': [ { 'label': '树状-横向', 'layoutName': 'tree', 'useLayoutStyleOptions': true, 'layoutClassName': 'member-layout-tree-v', 'defaultLineColor': '#DDDDDD', 'levelDistance': '300,300,300,500', 'min_per_width': 100, 'max_per_width': 300, 'min_per_height': 40, 'max_per_height': 100, 'defaultNodeShape': 1, 'defaultLineShape': 6, 'defaultJunctionPoint': 'lr', 'defaultExpandHolderPosition': 'right', 'from': 'left', 'defaultNodeHeight': '36', 'defaultNodeColor': '#C6E5FF', 'defaultNodeBorderWidth': 1, 'defaultNodeBorderColor': '#CED4D9', 'defaultNodeFontColor': '#666666' }, { 'label': '树状-纵向', 'layoutName': 'tree', 'useLayoutStyleOptions': true, // 'defaultFocusRootNode': false, 'layoutClassName': 'member-layout-tree-h', 'defaultLineColor': '#DDDDDD', // 'levelDistance': '120', 'min_per_width': 100, 'max_per_width': 400, 'min_per_height': 100, 'max_per_height': 500, 'defaultNodeShape': 1, 'defaultLineShape': 6, 'defaultJunctionPoint': 'tb', 'defaultExpandHolderPosition': 'bottom', 'from': 'top', 'defaultNodeHeight': '36', 'defaultNodeColor': '#C6E5FF', 'defaultNodeBorderWidth': 1, 'defaultNodeBorderColor': '#CED4D9', 'defaultNodeFontColor': '#666666' }, { 'label': '中心布局', 'layoutName': 'center', 'useLayoutStyleOptions': true, 'layoutClassName': 'member-layout-center', 'levelDistance': '80', 'defaultNodeShape': 1, 'defaultLineShape': 5, // 'defaultFocusRootNode': true, 'defaultLineColor': '#DDDDDD', 'defaultJunctionPoint': 'border', 'defaultNodeHeight': '36', 'defaultNodeColor': '#C6E5FF', 'defaultNodeBorderWidth': 1, 'defaultNodeBorderColor': '#CED4D9', 'defaultNodeFontColor': '#666666' } ] }将后端响应的数据组织成 Relation Graph 组件所需的数据在 methods 中添加如下方法 // 根据 RelationGraph 图表的数据组织形式,梳理内容 buildGraphData() { const _this = this const graphData = { rootId: '', nodes: [], links: [] } const nodes = graphData.nodes const links = graphData.links // 生成随机ID,针对数据无id属性的情况可生成一个随机ID const buildRandomId = function() { return 'mock-' + Date.now().toString(36) + '-' + Math.random().toString(36).substr(4) } var buildNodeData = function(node) { const nodeData = { 'id': node.id, 'name': node.name, 'data': { ...node } } const nodeClassMap = { 'ssc': { name: '超算中心', color: node.online === 1 ? '#9de173' : '#ccc', icon: 'console-svg svg-sc-center' }, 'user': { name: '用户', color: node.groupId === _this.user.userInfo.groupId ? '#C6E5FF' : '#8aabc1', iconColor: node.userId === _this.user.userInfo.group.payUserId ? '#f7c934' : '', icon: node.userId === _this.user.userInfo.group.payUserId ? 'console-svg svg-main-account' : 'console-svg svg-sub-account' }, 'account': { name: '超算账号', color: node.inSameGroup ? '#da97f9' : '#c7ceff', icon: 'console-svg svg-sc-account-2' }, 'accountMessage': { name: '账号信息', color: '#0f7dfa', icon: 'console-icon icon-sc-account' } } // nodeData.width = node.name.length * 12 nodeData.data.nodeIconClassName = nodeClassMap[node.status].icon nodeData.data.iconColor = nodeClassMap[node.status].iconColor || '#666' nodeData.color = nodeClassMap[node.status].color || '#C6E5FF' if (node.status === 'accountMessage') { nodeData.fontColor = '#fff' } return nodeData } const buildData = function(node) { let parentNodeId = node.id if (!parentNodeId) { node.id = parentNodeId = buildRandomId() } if (nodes.length === 0) { graphData.rootId = parentNodeId const nodeData = buildNodeData(node) nodes.push(nodeData) } if (node.children && node.children.length > 0) { for (const childNode of node.children) { // 若节点没有id,则给一个随机id值 if (!childNode.id) { childNode.id = buildRandomId() } const childNodeData = buildNodeData(childNode) const nodeLink = { from: parentNodeId, to: childNode.id, text: '' } nodes.push(childNodeData) links.push(nodeLink) // 递归添加子节点 if (childNode.children && childNode.children.length > 0) { buildData(childNode) } } } } if (this.drawData && this.drawData.length > 0) { buildData(this.drawData[0]) } return graphData }获取数据并初始化组件在 methods 中添加如下代码initGraph() { this.graphInited = false const graphData = this.buildGraphData() this.$nextTick(_ => { this.$refs.relationGraph.setJsonData(graphData, () => { this.graphInited = true }) }) }其他说明:layoutName 为 force 时存在一些问题,自动时会动态调整各节点的位置,导致一些交互受到影响,所以本工程没有启用自动布局使用纵向树状布局时节点较多的情况,后面的节点容易覆盖在上一个节点上,找了下github里的issue,说可以对各节点进行绝对布局实现,但是工作量会比较大,运营没在这个点上纠结,咱也就不考虑优化了。鼠标悬停在节点上时无法触发el-popover组件的悬停事件,经排查跟节点的 + - 折叠样式有关,该节点的宽度太宽,导致底部的节点内容无法响应鼠标事件,使用如下样式覆盖默认样式完美解决(以下样式代码包含图标组件其他元素的样式调整):.graph-container { ::v-deep .c-mini-graph { position: absolute; top:0; right:0; margin-top:0 } ::v-deep .c-mini-toolbar { margin-left:0; margin-top:0; right:0; bottom:10px; } /* 调整样式,避免出现账号悬停不显示用户信息的情况 */ ::v-deep .c-expand-positon-right{ width: auto; right:0; } ::v-deep .c-expand-positon-bottom { width: auto; left: 50%; margin-left: -10px; } ::v-deep .rel-node-shape-1 { overflow:hidden; padding:0; border-radius: 6px; } ::v-deep .node-item { padding: 0 10px 0 0; line-height:34px; .node-icon { background-color:#fff; width: 36px; text-align: center; line-height: 34px; vertical-align: middle; em { font-size:22px; } } .node-name { white-space:nowrap; display: inline-block; } } // 布局文字定位调整 ::v-deep .c-mb-child-panel .c-mb-button .c-mb-text{ padding-top:3px; display: block; width: 100%; position: relative; margin: 0; } }链接Relation Graph 官网Relation Graph 在Github的开源地址
2022年04月11日
396 阅读
0 评论
1 点赞
2022-04-07
并行计算基础知识-学习笔记
为什么会有并行计算?并行计算的必要性,现实世界计算需求与日俱增,对工期、规模有非常大的要求,并行计算可以非常好的提供计算能力汽车制造。设计制造领域,用于模拟分子模拟。微观领域不好现实观察石油勘探。通过数据推演,大概模拟地下储存情况数学建模。股市预测等处理器发展趋势-并行化功耗墙现代计算机体系架构下的并行化体系架构选择、优化成本(制造与功耗)与性能指令级并行(ILP)流水线(Pipelining)多指令发射乱序执行向量化(SIMD)单条指令执行能够同时处理多个数据片多线程(MIMD)多个程序实例能同时运行多核CPU发展架构的巨大转变并行化线程与进程线程与进程是抽象的概念,对应的物理概念是CPU核心每个线程或进程都至少对应一个CPU物理核心进程是 资源分配 的最小单位线程是 CPU调度 的最小单位线程比进程粒度更小一个进程可以拥有多个线程举例假设要吃完一盆米饭,多进程是每人一个碗 一起吃这盆米饭,多线程相当于多个人共用一个碗起吃这盆米饭,多线程 相当于多个人 共用一个碗 一起吃这盆米饭多进程时,碗(进程)和碗之间是独立的、互不影响的多线程时,每个人共享个碗的资源看起来多进程永远好于多线程但是如果加上这样的条件每个人穿不同颜色的衣服,米饭也分不同的种类,大米、小米、紫米....,规定什么颜色的衣服只能吃什么颜色米,但是盛饭的时候不知道盛到碗里的是什么米需要盛上来之后,各个颜色的人、碗互相沟通归类数据导致:人越多、碗越多,花在沟通上的时间越长,干正事吃饭的时间越短结论:现实情况并不一定多进程是永远好于多线程的,有的时候需要将多进程和多线程结合起来使用。多进程:进程和进程之间是互相独立的多线程:线程和线程之间是共享一个进程的资源多线程程序OpenMP、pthreads、TBB......已被各编译器按收作为基本编程规则,常用编译器都支持多进程程序使用MPI技术编程MPI本身是开放的编程接口,各厂商有自己的版本Intel MPI (白建超算推荐,无论什么程序优先使用,除非明确无法使月)天河MPICH3 (广州/长沙超算推荐)OpenMPI (Intel MPI不可用时备选)MPICH (禁用,无法使用高速网)有些程序只有多进程并行MS、OpenFOAM有些程序只有多线程并行Gaussian有些程序支持多进程和多线程混合并行VASP、 WRF......除只支持多线程的程序及用户特殊要求外,给用户测试交付时默认纯多进程并行CPU利用率运行程序占用的CPU资源的比率操作系统级别统计,分为用户态和内核态直观反映CPU的繁忙程度内存使用率使用的内存超过节点内存,作业会报错退出网络高速网Infiniband/Ominipath/天河自建超算都使用Infiniband高速网,速度相比以太网提升10倍以上编译和安装软件注意MPI环境使用
2022年04月07日
26 阅读
0 评论
0 点赞
2022-04-07
职场人际沟通必备技能-学习笔记
讲师:勾俊伟在职场如鱼得水,你需要两个必备要素:①、技术足够专业。90%②、懂得如何与大多数人相处愉快。10%如何用一张表,从根本上解决不开心工作不爽问题拆解工作问题分类拆解表一味的抱怨从本质上解决不了问题领导沟通术 ● 怎样正确地汇报工作?领导沟通汇报一件事情进行中,还没做完的时候,要多说结果,少说过程请示发生在事情开始之前或事情进行中,征询下一步,在请示前准备多套方案总结一般用于结束的时候,一般多说过程,少说结果,尤其是在项目做得好的时候,总结为什么你这个事情能做得好及为什么做得不好汇报工作注意两点:①、开门见山②、多说结果汇报工作:开门见山,我要沟通以下问题:汇报时多说结果,少说过程领导沟通术 ● 如何向领导做工作总结?准备工作:受众分析:给谁总结?选题拟定:总结什么?横向调研:类似的?受众分析给谁看? 领导风格决定总结风格选题拟定总结的内容主要包括:业绩、计划、心得、建议、分析、调研、资源横向调研领导沟通术 ● 怎样向领导请示工作?{card-describe title="请示工作注意两点"}一、带着方案二、注意句式{/card-describe}解决方案请求句式领导沟通术 ● 怎样向老板提出加薪?奖金:奖金不是福利,不可能人人都有,需要超越公司对你的期待才能获得。加薪:加工资除了是应对物价因素外,重要的是公司对你的岗位有了新的更高要求。红包:公司取得特别成绩的年份才会有的,原则是人人有份,根据你在阿里贡献的年份多久而定。我们鼓励员工在公司里长期发展。谈加薪的步骤如何和平级的同事沟通同事沟通 ● 如何处理同事越级安排工作?方法一(友好型):时间冲突,友好回绝,优先完成领导安排的任务方法二:时间允许,请示领导方法三:事后补救,汇报完成同事沟通 ● 怎样高效地进行跨部门沟通?步骤一:日常沟通。预热步骤二:共赢方案。提前梳理方案,最好以邮件或纸质的方式,清晰说明步骤三:沟通准备。梳理话术,见面扼要,说明重点,让对方便于理解、接受步骤四:工作小组。可以拉工作群组步骤五:留面子效应。算是小技巧,案例:借钱、先难度大,然后降低难度同事沟通 ● 没有太多共同语言,怎么与同事聊天?关系一般,没有共同语言同事太爱装x,怎么相处呢? 同事没营养的碎碎念,越来越受不了肿么办? 公司里领导眼中的红人,不想和他说话但是又得罪不起,怎么办? 没有共同语言的聊天技巧:技巧一:验证而非强加 禁忌: 推荐:技巧二:语言重新定义技巧三:建议顺水推舟技巧四:识别话中的话新工作 ● 如何迅速扮好你在团队中的角色?根据岗位角色定位储备型:人才储备,业务暂时不需要。全面学习、听指挥优化型:人员扩编,业务能力提升。寻求业务超越替代型:刚性需求。迅速掌握专项技能新工作 ● 新人掌握6个细节,迅速融入环境相对于叽叽喳喳一直说、招人烦的类型,大家更加喜欢安静一-点、有能力、贴心的同事。1、说话前准备:①、内容简化,防止别人听不出重点②、语气提前准备。2、就算不发表自己观点,也需要予以语言或表情的回应3、人和小猫一样,喂着喂着就出感情了4、好为人师:适当请教,但注意不是太难也不体现你无知。5、眼神与笑容(注意诚意)6、个人素质(招呼、点头、告别、椅子归位、顺手帮忙)
2022年04月07日
107 阅读
0 评论
0 点赞
2022-04-01
Pointer-Focus:一款功能强大的教学、录屏辅助软件
现在这个时代电脑大家应该都有,你肯定有过给别人展示或者演示自己的操作,尤其是疫情期间会用得很多。例如上网课讲解题、腾讯会议开会、线上答辩什么的。为了表达更清晰,我们就很需要光标高亮、显示按键、聚光灯、画笔、放大镜等功能。Pointer-FocusPointerFocus 是一款非常出名的教学辅助工具,软件功能效果生动,助你讲解更加清晰,一套下来轻松不少。专为想要突出鼠标指针的演示者、培训师和教师而设计。该应用程序提供了一些易于使用的功能,例如高亮光标、鼠标聚光灯、击键可视化、放大镜和屏幕注释。在 PointerFocus 的帮助下,您可以让观众专注于感兴趣的领域,并使您的演示更易于理解。软件官网:https://www.pointerfocus.com/资金允许的情况推荐使用正版,正版官网加个为 $12.5谁需要 PointerFocus?老师演讲者演示制造商培训师PointerFocus 功能用彩色圆圈突出显示鼠标指针当您单击鼠标按钮时,环形动画可以向您的观众展示您的鼠标单击动作。可以高亮显示光标、显示圆圈、显示单击操作文本,还可以自定义大小和颜色。每次点击都会有特效,这样可以让人更加集中鼠标位置。启动热键是 F8,这个可以记一下。击键可视化可以向您的观众展示您刚刚按下了哪些快捷键。此功能可以帮助您使演示更易于理解。有时候你需要进行快捷键时,这个功能就非常恰到好处了!只要按下Ctrl、Shift、Alt、win、insert键开头,显示功能就会自动弹出来。启动热键是 F9,这个可以记一下。鼠标聚光灯当您选择此工具时,它将使屏幕变暗并在鼠标指针周围放置一个“聚光灯”。这可以将听众的注意力集中在感兴趣的领域。这可是个好东西,可以突出某些重要部分进行讲解,可以叫做“高光时刻”。图片启动热键是 F10,这个可以记一下。屏幕注释笔这个是必备的功能了,需要表示什么直接写,直接画。启动热键是F11,这个可以记一下。支持画笔、线条、箭头、矩形、椭圆,还可以更改画笔颜色和大小。屏幕放大镜当您选择此工具时,您可以在屏幕上显示任何部分的观众详细信息。这个和高光有一丁点像,但又不是同一个东西,可以在电脑局部放大。启动热键是F12,这个可以记一下。安卓远程控制您可以使用 Android App 来远程控制鼠标操作和 PointerFocus 功能。安卓客户端软件已打包到本文底部的下载压缩包了。必看安装教程下载地址:PointerFocus v2.4.zip软件安装完成后需要替换补丁和填写注册码直接复制补丁到安装目录下进行替换
2022年04月01日
635 阅读
0 评论
1 点赞
2022-03-31
设计常用图片尺寸
相关图片尺寸来源于凡科快图 和 即时设计移动端iPhone 13 Pro Max 428 x 926iPhone 13 / 13 Pro 390 x 844iPhone 13 mini 375 x 812iPhone 11 Pro Max 414 x 896iPhoneX/ 11 pro 375 x 812iPhone 8 Plus 414 x 736iPhone 8 375 x 667iPhone SE 320 x 568Google Pixel 2 411 x 731Google Pixel 2 XL 411 x 823Android 360 x 640桌面端Desktop 1440 x 1024MacBook 1152 x 700MacBook Pro 1440 x 900Surface Book 1500 x 1000iMac 1280 x 720Web 1920 1920 x 1080Web 1366 1366 x 768Web 1280 1280 x 800公众号公众号封面 900 x 383公众号小图 200 x 200公众号首图 900 x 500公众号超链接配图 600x 200其他手机海报 720 x 1280PC端横幅 1920 x 600手机横版海报 960 x 540淘宝宝贝主图 800 x 800
2022年03月31日
46 阅读
0 评论
0 点赞
2022-03-07
CentOS安装ffmpeg
由于ZCMS在上传视频时会强制对视频进行转码,在网上找了些安装教程发现转码服务不能正常使用。经过跟产品负责人(才哥)沟通后得知,当前ZCMS只能适配FFmpeg 2.8.x版本。后根据提供的一键安装包安装后成功实现。ffmpeg2安装包.zip直接使用编译后的文件wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz xz -d ffmpeg-git-amd64-static.tar.xz tar -xvf ffmpeg-git-amd64-static.tar cd /usr/bin ln -s /app/ffmpeg-git-20211217-amd64-static/ffmpeg ln -s /soft/ffmpeg_in_docker/qt-faststart一键安装脚本(install_ffmpeg_centos7.sh)#! /bin/bash cur_dir=$(pwd) #target_ffmpeg_lib_dir=$cur_dir/lib #target_ffmpeg_inc_dir=$cur_dir/inc rm -rf ffmpeg-4.3.2* rm -rf nasm* rm -rf yasm* rm -rf x264* yum install git # 由于 asm版本是旧的或者没有asm,因此需要安装或者更新 echo " ===================== 开始安装yasm ===================== " wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar zxvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make && make install echo " ===================== 开始安装nasm ===================== " wget https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.gz tar -zxvf nasm-2.14.tar.gz cd nasm-2.14 ./configure make -j60 make install echo " ===================== 开始安装x264 ===================== " git clone https://code.videolan.org/videolan/x264.git cd x264 ./configure --includedir=/usr/local/include --libdir=/usr/local/lib --enable-shared make -j60 make install echo " ===================== 开始安装ffmpeg ===================== " wget http://www.ffmpeg.org/releases/ffmpeg-4.3.2.tar.gz tar -zxvf ffmpeg-4.3.2.tar.gz cd ./ffmpeg-4.3.2 # ubuntu 必须添加 --enable-shared https://github.com/lutris/ffmpeg-nvenc/issues/5--prefix=/usr/local/src/ffmpeg ./configure --enable-shared --enable-swscale --enable-gpl --enable-nonfree --enable-pic --enable-version3 --enable-postproc --enable-pthreads --enable-static --enable-libx264 echo " ===================== 开始 make && make install ===================== " make -j60 make install echo "您还需要手动设置环境变量: export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/local/lib"参考链接:Docker方式安装FFmpegLinux 下ffmpeg的环境搭建与安装
2022年03月07日
14 阅读
0 评论
0 点赞
2022-03-07
CentOS7 Tomcat自启动
由于演示需要,需将Java应用部署到虚拟机的CentOS环境中,为便于演示,需虚拟机启动时自动启动我们的Java应用。有参考 ZVING-Tomcat安装 相关章节配置自启动,效果是OK的,但是不管怎么配置,重启后始终是以root账号启动,为安全考虑,需使用名为zving的普通权限账号启动应用。经过尝试后达到预期目的,特记录如下。Tomcat目录:/data/javaapps/app-hndcdemo/apache-tomcat-8.5.721、添加启动文件vi /etc/systemd/system/tomcatd.servicetomcatd.service文件内容如下:请根据需要调整tomcat的安装目录[Unit] Description=Tomcat8 for ZCMS Service After=network.target [Service] User=zving Group=zving Type=forking ExecStart=/data/javaapps/app-hndcdemo/apache-tomcat-8.5.72/bin/startup.sh ExecStop=/data/javaapps/app-hndcdemo/apache-tomcat-8.5.72/bin/shutdown.sh PrivateTmp=true [Install] WantedBy=multi-user.target2、添加可执行权限chmod 755 /etc/systemd/system/tomcatd.service3、设置开机自启动systemctl enable tomcatd.service
2022年03月07日
14 阅读
0 评论
0 点赞
2022-02-11
记一次跟时大款的促膝长谈
昨晚跟时大款从10点多到凌晨1点多促膝长谈了差不多3个小时,就所谈事项有感而发,利用工作间隙对所谈内容整理以作备忘。洗完澡出来10点多,看主卧的灯还亮着,以为老婆还在艰难的哄睡中,本想进去平息一点老婆哄睡过程中的暴躁情绪,没想到崽这个点就睡着了,在我哄睡的时候这个点就能入睡那绝对是让人开心无比的事,毕竟崽睡后就是自己的时间啦。就所谈事项整理如下:一、年宝的归宿从年宝快2岁的时候检查说是自闭症儿童之后,找了很多自闭症相关的文章来了解,也给年宝的爷爷奶奶看过一个李永乐老师讲的自闭症人群的视频: 你了解“来自星星的孩子”吗?请关爱身边的自闭症儿童 ,看完后爷爷奶奶都沉默了很久,心情也变得沉甸甸的。前两天在B站刷到个说青年自闭症人群的视频: 最孤独的成长_自闭症,听着视频中孩子的嘶吼,心都是碎的,想着年宝如果没在这个阶段好起来的话,以后的他也会跟他们一样,毕竟现在的社会环境也不会有他们可以去的地方,只能整天地锁在家里,这样也就会逐渐跟社会脱节。考虑到年宝的现状,年宝还是可以考虑送专业的自闭症干预机构去,最好能在学龄前能自理并表述自己的诉求。如果可行的话,也可以考虑到干预机构周边租个房陪着,我们也还是要做好打长期战的身心准备。二、亲人的相处之道以前一直认为亲人之间有些负面情绪的宣泄是很正常的,就像平常上班累了或受了什么委屈,回到家就对家人爱搭不理的甚至一点小事就发脾气。经过跟时大款多年的相处,深深的领悟了这是不对的。作为在外辛苦打拼的家庭一员,在外努力本身就是为了在体现自己价值的同时给家人及身边的亲友们带来更好的生活质量。都说家是温暖的港湾,但是从小我成长的家庭就充满着幸酸、争吵甚至打架,老妈从我记事起就跟爷爷奶奶关系不和,因为家里砌房的事情更是跟一些叔叔婶婶关系也弄的很僵,一直以来都没能跟爸妈像普通家庭那样有一个平和的沟通,但是由于爸妈都是家里的长子长女,从小就没什么机会接受文化的熏陶,也怨不得他们。也正是这样的环境中更能让我更珍惜一个有和睦氛围、能平和沟通的家庭。所以也一直让我羡慕时大款从小的成长氛围,虽然她身在福中不知福。三、朋友的相处之道认识时大款快10多年了,这10多年里,我们都在长沙,基本上我们的朋友都是相互了解的,所以正在这个话题上我们是能够聊得特别深入的。朋友之间应保持适当的距离每个人都是独立的个体,每个人也都有自己的小圈子及小秘密,适当的距离恰恰能让彼此活得更自然。朋友之间应礼尚往来在这一点上,感觉我们身边有很多这样的朋友,像高哥李姐、佳哥、艳敏、姚老师、老大、有的时候朋友之间的相处之道是要适当的多付出一些,但不是凭空的一直付出。朋友之间应尽量减少金钱往来身边很多因为借钱而导致的关系破裂的案例。四、对待金钱的态度由于物业的不给力,近半年确实特别添堵,不只是小区环境的乱遭事,更有物业管理的不作为平添的给心情添堵。所以时大款近几个月说了好几次换房的想法。这么几年下来,在奥园结识的邻居都是非常不错的,由于物业的失职就考虑连业主都不想当了,确实有些过犹不及了。从身边的朋友们来看,只要没有大病大灾的,等到我们四五十岁的时候,有个两三套房子也都很正常。现在住房也够,没必要卖了这套再另买。钱重要,但不是全部。
2022年02月11日
4 阅读
0 评论
0 点赞
2022-02-05
CentOS安装LibreOffice
由于应用需要将Office文件转义,经调研后,选择基于LibreOffice作为转译工具。现记录LibreOffice在CentOS上的安装过程。下载可以从LibreOffice官网使用最新的版本下载,官网下载地址为:https://zh-cn.libreoffice.org/download/libreoffice/wget --no-check-certificate https://download.documentfoundation.org/libreoffice/stable/7.3.0/rpm/x86_64/LibreOffice_7.3.0_Linux_x86-64_rpm.tar.gz执行记录如下:[root@VM-12-15-centos soft]# wget --no-check-certificate https://download.documentfoundation.org/libreoffice/stable/7.3.0/rpm/x86_64/LibreOffice_7.3.0_Linux_x86-64_rpm.tar.gz --2022-02-05 10:28:41-- https://download.documentfoundation.org/libreoffice/stable/7.3.0/rpm/x86_64/LibreOffice_7.3.0_Linux_x86-64_rpm.tar.gz Resolving download.documentfoundation.org (download.documentfoundation.org)... 89.238.68.185, 2a00:1828:a012:185::1 Connecting to download.documentfoundation.org (download.documentfoundation.org)|89.238.68.185|:443... connected. WARNING: cannot verify download.documentfoundation.org's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’: Issued certificate has expired. HTTP request sent, awaiting response... 302 Found Location: https://mirrors.nju.edu.cn/tdf/libreoffice/stable/7.3.0/rpm/x86_64/LibreOffice_7.3.0_Linux_x86-64_rpm.tar.gz [following] --2022-02-05 10:28:43-- https://mirrors.nju.edu.cn/tdf/libreoffice/stable/7.3.0/rpm/x86_64/LibreOffice_7.3.0_Linux_x86-64_rpm.tar.gz Resolving mirrors.nju.edu.cn (mirrors.nju.edu.cn)... 210.28.130.3, 2001:da8:1007:4011::3 Connecting to mirrors.nju.edu.cn (mirrors.nju.edu.cn)|210.28.130.3|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 269246349 (257M) [application/octet-stream] Saving to: ‘LibreOffice_7.3.0_Linux_x86-64_rpm.tar.gz’ 100%[============================>] 269,246,349 11.4MB/s in 21s 2022-02-05 10:29:04 (12.2 MB/s) - ‘LibreOffice_7.3.0_Linux_x86-64_rpm.tar.gz’ saved [269246349/269246349] [root@VM-12-15-centos soft]#安装LibreOffice解压主程序tar -zxvf LibreOffice_7.3.0_Linux_x86-64_rpm.tar.gz执行记录如下:[root@VM-12-15-centos soft]# tar -zxvf LibreOffice_7.3.0_Linux_x86-64_rpm.tar.gz LibreOffice_7.3.0.3_Linux_x86-64_rpm/ LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/ LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-math-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-writer-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-dict-fr-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-firebird-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-extension-javascript-script-provider-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-draw-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-pyuno-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-en-US-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-librelogo-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-ooolinguistic-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-extension-beanshell-script-provider-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-onlineupdate-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-gnome-integration-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-ure-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-impress-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-extension-mediawiki-publisher-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-draw-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-math-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-freedesktop-menus-7.3.0-3.noarch.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-postgresql-sdbc-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-impress-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-python-script-provider-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-calc-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-base-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-dict-es-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-extension-nlpsolver-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-kde-integration-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-ogltrans-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-en-US-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-base-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-writer-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-extension-pdf-import-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-dict-en-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-core-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-images-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libreoffice7.3-calc-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-graphicfilter-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-libreofficekit-data-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-xsltfilter-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-ooofonts-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/libobasis7.3-extension-report-builder-7.3.0.3-3.x86_64.rpm LibreOffice_7.3.0.3_Linux_x86-64_rpm/install LibreOffice_7.3.0.3_Linux_x86-64_rpm/readmes/ LibreOffice_7.3.0.3_Linux_x86-64_rpm/readmes/README_en-US [root@VM-12-15-centos soft]# 进入安装目录cd LibreOffice_7.3.0.3_Linux_x86-64_rpm/RPMS/执行安装yum install *.rpm执行记录如下:[root@VM-12-15-centos RPMS]# yum install *.rpm Loaded plugins: fastestmirror, langpacks Repository epel is listed more than once in the configuration Examining libobasis7.3-base-7.3.0.3-3.x86_64.rpm: libobasis7.3-base-7.3.0.3-3.x86_64 Marking libobasis7.3-base-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-calc-7.3.0.3-3.x86_64.rpm: libobasis7.3-calc-7.3.0.3-3.x86_64 Marking libobasis7.3-calc-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-core-7.3.0.3-3.x86_64.rpm: libobasis7.3-core-7.3.0.3-3.x86_64 Marking libobasis7.3-core-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-draw-7.3.0.3-3.x86_64.rpm: libobasis7.3-draw-7.3.0.3-3.x86_64 Marking libobasis7.3-draw-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-en-US-7.3.0.3-3.x86_64.rpm: libobasis7.3-en-US-7.3.0.3-3.x86_64 Marking libobasis7.3-en-US-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-extension-beanshell-script-provider-7.3.0.3-3.x86_64.rpm: libobasis7.3-extension-beanshell-script-provider-7.3.0.3-3.x86_64 Marking libobasis7.3-extension-beanshell-script-provider-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-extension-javascript-script-provider-7.3.0.3-3.x86_64.rpm: libobasis7.3-extension-javascript-script-provider-7.3.0.3-3.x86_64 Marking libobasis7.3-extension-javascript-script-provider-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-extension-mediawiki-publisher-7.3.0.3-3.x86_64.rpm: libobasis7.3-extension-mediawiki-publisher-7.3.0.3-3.x86_64 Marking libobasis7.3-extension-mediawiki-publisher-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-extension-nlpsolver-7.3.0.3-3.x86_64.rpm: libobasis7.3-extension-nlpsolver-7.3.0.3-3.x86_64 Marking libobasis7.3-extension-nlpsolver-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-extension-pdf-import-7.3.0.3-3.x86_64.rpm: libobasis7.3-extension-pdf-import-7.3.0.3-3.x86_64 Marking libobasis7.3-extension-pdf-import-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-extension-report-builder-7.3.0.3-3.x86_64.rpm: libobasis7.3-extension-report-builder-7.3.0.3-3.x86_64 Marking libobasis7.3-extension-report-builder-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-firebird-7.3.0.3-3.x86_64.rpm: libobasis7.3-firebird-7.3.0.3-3.x86_64 Marking libobasis7.3-firebird-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-gnome-integration-7.3.0.3-3.x86_64.rpm: libobasis7.3-gnome-integration-7.3.0.3-3.x86_64 Marking libobasis7.3-gnome-integration-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-graphicfilter-7.3.0.3-3.x86_64.rpm: libobasis7.3-graphicfilter-7.3.0.3-3.x86_64 Marking libobasis7.3-graphicfilter-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-images-7.3.0.3-3.x86_64.rpm: libobasis7.3-images-7.3.0.3-3.x86_64 Marking libobasis7.3-images-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-impress-7.3.0.3-3.x86_64.rpm: libobasis7.3-impress-7.3.0.3-3.x86_64 Marking libobasis7.3-impress-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-kde-integration-7.3.0.3-3.x86_64.rpm: libobasis7.3-kde-integration-7.3.0.3-3.x86_64 Marking libobasis7.3-kde-integration-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-librelogo-7.3.0.3-3.x86_64.rpm: libobasis7.3-librelogo-7.3.0.3-3.x86_64 Marking libobasis7.3-librelogo-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-libreofficekit-data-7.3.0.3-3.x86_64.rpm: libobasis7.3-libreofficekit-data-7.3.0.3-3.x86_64 Marking libobasis7.3-libreofficekit-data-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-math-7.3.0.3-3.x86_64.rpm: libobasis7.3-math-7.3.0.3-3.x86_64 Marking libobasis7.3-math-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-ogltrans-7.3.0.3-3.x86_64.rpm: libobasis7.3-ogltrans-7.3.0.3-3.x86_64 Marking libobasis7.3-ogltrans-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-onlineupdate-7.3.0.3-3.x86_64.rpm: libobasis7.3-onlineupdate-7.3.0.3-3.x86_64 Marking libobasis7.3-onlineupdate-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-ooofonts-7.3.0.3-3.x86_64.rpm: libobasis7.3-ooofonts-7.3.0.3-3.x86_64 Marking libobasis7.3-ooofonts-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-ooolinguistic-7.3.0.3-3.x86_64.rpm: libobasis7.3-ooolinguistic-7.3.0.3-3.x86_64 Marking libobasis7.3-ooolinguistic-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-postgresql-sdbc-7.3.0.3-3.x86_64.rpm: libobasis7.3-postgresql-sdbc-7.3.0.3-3.x86_64 Marking libobasis7.3-postgresql-sdbc-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-python-script-provider-7.3.0.3-3.x86_64.rpm: libobasis7.3-python-script-provider-7.3.0.3-3.x86_64 Marking libobasis7.3-python-script-provider-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-pyuno-7.3.0.3-3.x86_64.rpm: libobasis7.3-pyuno-7.3.0.3-3.x86_64 Marking libobasis7.3-pyuno-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-writer-7.3.0.3-3.x86_64.rpm: libobasis7.3-writer-7.3.0.3-3.x86_64 Marking libobasis7.3-writer-7.3.0.3-3.x86_64.rpm to be installed Examining libobasis7.3-xsltfilter-7.3.0.3-3.x86_64.rpm: libobasis7.3-xsltfilter-7.3.0.3-3.x86_64 Marking libobasis7.3-xsltfilter-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-7.3.0.3-3.x86_64.rpm: libreoffice7.3-7.3.0.3-3.x86_64 Marking libreoffice7.3-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-base-7.3.0.3-3.x86_64.rpm: libreoffice7.3-base-7.3.0.3-3.x86_64 Marking libreoffice7.3-base-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-calc-7.3.0.3-3.x86_64.rpm: libreoffice7.3-calc-7.3.0.3-3.x86_64 Marking libreoffice7.3-calc-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-dict-en-7.3.0.3-3.x86_64.rpm: libreoffice7.3-dict-en-7.3.0.3-3.x86_64 Marking libreoffice7.3-dict-en-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-dict-es-7.3.0.3-3.x86_64.rpm: libreoffice7.3-dict-es-7.3.0.3-3.x86_64 Marking libreoffice7.3-dict-es-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-dict-fr-7.3.0.3-3.x86_64.rpm: libreoffice7.3-dict-fr-7.3.0.3-3.x86_64 Marking libreoffice7.3-dict-fr-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-draw-7.3.0.3-3.x86_64.rpm: libreoffice7.3-draw-7.3.0.3-3.x86_64 Marking libreoffice7.3-draw-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-en-US-7.3.0.3-3.x86_64.rpm: libreoffice7.3-en-US-7.3.0.3-3.x86_64 Marking libreoffice7.3-en-US-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-freedesktop-menus-7.3.0-3.noarch.rpm: libreoffice7.3-freedesktop-menus-7.3.0-3.noarch Marking libreoffice7.3-freedesktop-menus-7.3.0-3.noarch.rpm to be installed Examining libreoffice7.3-impress-7.3.0.3-3.x86_64.rpm: libreoffice7.3-impress-7.3.0.3-3.x86_64 Marking libreoffice7.3-impress-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-math-7.3.0.3-3.x86_64.rpm: libreoffice7.3-math-7.3.0.3-3.x86_64 Marking libreoffice7.3-math-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-ure-7.3.0.3-3.x86_64.rpm: libreoffice7.3-ure-7.3.0.3-3.x86_64 Marking libreoffice7.3-ure-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-writer-7.3.0.3-3.x86_64.rpm: libreoffice7.3-writer-7.3.0.3-3.x86_64 Marking libreoffice7.3-writer-7.3.0.3-3.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package libobasis7.3-base.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-calc.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-core.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-draw.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-en-US.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-extension-beanshell-script-provider.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-extension-javascript-script-provider.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-extension-mediawiki-publisher.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-extension-nlpsolver.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-extension-pdf-import.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-extension-report-builder.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-firebird.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-gnome-integration.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-graphicfilter.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-images.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-impress.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-kde-integration.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-librelogo.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-libreofficekit-data.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-math.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-ogltrans.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-onlineupdate.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-ooofonts.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-ooolinguistic.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-postgresql-sdbc.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-python-script-provider.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-pyuno.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-writer.x86_64 0:7.3.0.3-3 will be installed ---> Package libobasis7.3-xsltfilter.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-base.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-calc.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-dict-en.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-dict-es.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-dict-fr.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-draw.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-en-US.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-freedesktop-menus.noarch 0:7.3.0-3 will be installed ---> Package libreoffice7.3-impress.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-math.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-ure.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-writer.x86_64 0:7.3.0.3-3 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================================= Package Arch Version Repository Size ========================================================================================================================= Installing: libobasis7.3-base x86_64 7.3.0.3-3 /libobasis7.3-base-7.3.0.3-3.x86_64 4.2 M libobasis7.3-calc x86_64 7.3.0.3-3 /libobasis7.3-calc-7.3.0.3-3.x86_64 22 M libobasis7.3-core x86_64 7.3.0.3-3 /libobasis7.3-core-7.3.0.3-3.x86_64 267 M libobasis7.3-draw x86_64 7.3.0.3-3 /libobasis7.3-draw-7.3.0.3-3.x86_64 49 k libobasis7.3-en-US x86_64 7.3.0.3-3 /libobasis7.3-en-US-7.3.0.3-3.x86_64 146 k libobasis7.3-extension-beanshell-script-provider x86_64 7.3.0.3-3 /libobasis7.3-extension-beanshell-script-provider-7.3.0.3-3.x86_64 414 k libobasis7.3-extension-javascript-script-provider x86_64 7.3.0.3-3 /libobasis7.3-extension-javascript-script-provider-7.3.0.3-3.x86_64 656 k libobasis7.3-extension-mediawiki-publisher x86_64 7.3.0.3-3 /libobasis7.3-extension-mediawiki-publisher-7.3.0.3-3.x86_64 4.4 M libobasis7.3-extension-nlpsolver x86_64 7.3.0.3-3 /libobasis7.3-extension-nlpsolver-7.3.0.3-3.x86_64 2.2 M libobasis7.3-extension-pdf-import x86_64 7.3.0.3-3 /libobasis7.3-extension-pdf-import-7.3.0.3-3.x86_64 15 M libobasis7.3-extension-report-builder x86_64 7.3.0.3-3 /libobasis7.3-extension-report-builder-7.3.0.3-3.x86_64 5.4 M libobasis7.3-firebird x86_64 7.3.0.3-3 /libobasis7.3-firebird-7.3.0.3-3.x86_64 11 M libobasis7.3-gnome-integration x86_64 7.3.0.3-3 /libobasis7.3-gnome-integration-7.3.0.3-3.x86_64 2.7 M libobasis7.3-graphicfilter x86_64 7.3.0.3-3 /libobasis7.3-graphicfilter-7.3.0.3-3.x86_64 3.6 M libobasis7.3-images x86_64 7.3.0.3-3 /libobasis7.3-images-7.3.0.3-3.x86_64 60 M libobasis7.3-impress x86_64 7.3.0.3-3 /libobasis7.3-impress-7.3.0.3-3.x86_64 2.1 M libobasis7.3-kde-integration x86_64 7.3.0.3-3 /libobasis7.3-kde-integration-7.3.0.3-3.x86_64 5.9 M libobasis7.3-librelogo x86_64 7.3.0.3-3 /libobasis7.3-librelogo-7.3.0.3-3.x86_64 773 k libobasis7.3-libreofficekit-data x86_64 7.3.0.3-3 /libobasis7.3-libreofficekit-data-7.3.0.3-3.x86_64 1.4 k libobasis7.3-math x86_64 7.3.0.3-3 /libobasis7.3-math-7.3.0.3-3.x86_64 1.9 M libobasis7.3-ogltrans x86_64 7.3.0.3-3 /libobasis7.3-ogltrans-7.3.0.3-3.x86_64 410 k libobasis7.3-onlineupdate x86_64 7.3.0.3-3 /libobasis7.3-onlineupdate-7.3.0.3-3.x86_64 484 k libobasis7.3-ooofonts x86_64 7.3.0.3-3 /libobasis7.3-ooofonts-7.3.0.3-3.x86_64 69 M libobasis7.3-ooolinguistic x86_64 7.3.0.3-3 /libobasis7.3-ooolinguistic-7.3.0.3-3.x86_64 1.4 k libobasis7.3-postgresql-sdbc x86_64 7.3.0.3-3 /libobasis7.3-postgresql-sdbc-7.3.0.3-3.x86_64 4.5 M libobasis7.3-python-script-provider x86_64 7.3.0.3-3 /libobasis7.3-python-script-provider-7.3.0.3-3.x86_64 43 k libobasis7.3-pyuno x86_64 7.3.0.3-3 /libobasis7.3-pyuno-7.3.0.3-3.x86_64 29 M libobasis7.3-writer x86_64 7.3.0.3-3 /libobasis7.3-writer-7.3.0.3-3.x86_64 12 M libobasis7.3-xsltfilter x86_64 7.3.0.3-3 /libobasis7.3-xsltfilter-7.3.0.3-3.x86_64 4.3 M libreoffice7.3 x86_64 7.3.0.3-3 /libreoffice7.3-7.3.0.3-3.x86_64 3.4 M libreoffice7.3-base x86_64 7.3.0.3-3 /libreoffice7.3-base-7.3.0.3-3.x86_64 63 libreoffice7.3-calc x86_64 7.3.0.3-3 /libreoffice7.3-calc-7.3.0.3-3.x86_64 63 libreoffice7.3-dict-en x86_64 7.3.0.3-3 /libreoffice7.3-dict-en-7.3.0.3-3.x86_64 25 M libreoffice7.3-dict-es x86_64 7.3.0.3-3 /libreoffice7.3-dict-es-7.3.0.3-3.x86_64 23 M libreoffice7.3-dict-fr x86_64 7.3.0.3-3 /libreoffice7.3-dict-fr-7.3.0.3-3.x86_64 6.5 M libreoffice7.3-draw x86_64 7.3.0.3-3 /libreoffice7.3-draw-7.3.0.3-3.x86_64 63 libreoffice7.3-en-US x86_64 7.3.0.3-3 /libreoffice7.3-en-US-7.3.0.3-3.x86_64 16 k libreoffice7.3-freedesktop-menus noarch 7.3.0-3 /libreoffice7.3-freedesktop-menus-7.3.0-3.noarch 1.4 M libreoffice7.3-impress x86_64 7.3.0.3-3 /libreoffice7.3-impress-7.3.0.3-3.x86_64 66 libreoffice7.3-math x86_64 7.3.0.3-3 /libreoffice7.3-math-7.3.0.3-3.x86_64 63 libreoffice7.3-ure x86_64 7.3.0.3-3 /libreoffice7.3-ure-7.3.0.3-3.x86_64 42 M libreoffice7.3-writer x86_64 7.3.0.3-3 /libreoffice7.3-writer-7.3.0.3-3.x86_64 65 Transaction Summary ========================================================================================================================= Install 42 Packages Total size: 630 M Installed size: 630 M Is this ok [y/d/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : libreoffice7.3-ure-7.3.0.3-3.x86_64 1/42 Installing : libobasis7.3-ooofonts-7.3.0.3-3.x86_64 2/42 Installing : libobasis7.3-core-7.3.0.3-3.x86_64 3/42 Installing : libobasis7.3-base-7.3.0.3-3.x86_64 4/42 Installing : libobasis7.3-writer-7.3.0.3-3.x86_64 5/42 Installing : libobasis7.3-impress-7.3.0.3-3.x86_64 6/42 Installing : libobasis7.3-draw-7.3.0.3-3.x86_64 7/42 Installing : libobasis7.3-images-7.3.0.3-3.x86_64 8/42 Installing : libreoffice7.3-7.3.0.3-3.x86_64 9/42 Installing : libobasis7.3-math-7.3.0.3-3.x86_64 10/42 Installing : libobasis7.3-en-US-7.3.0.3-3.x86_64 11/42 Installing : libobasis7.3-pyuno-7.3.0.3-3.x86_64 12/42 Installing : libobasis7.3-calc-7.3.0.3-3.x86_64 13/42 Installing : libreoffice7.3-calc-7.3.0.3-3.x86_64 14/42 Installing : libobasis7.3-librelogo-7.3.0.3-3.x86_64 15/42 Installing : libreoffice7.3-en-US-7.3.0.3-3.x86_64 16/42 Installing : libreoffice7.3-math-7.3.0.3-3.x86_64 17/42 Installing : libreoffice7.3-dict-en-7.3.0.3-3.x86_64 18/42 Installing : libreoffice7.3-base-7.3.0.3-3.x86_64 19/42 Installing : libreoffice7.3-dict-es-7.3.0.3-3.x86_64 20/42 Installing : libreoffice7.3-dict-fr-7.3.0.3-3.x86_64 21/42 Installing : libreoffice7.3-writer-7.3.0.3-3.x86_64 22/42 Installing : libreoffice7.3-draw-7.3.0.3-3.x86_64 23/42 Installing : libreoffice7.3-impress-7.3.0.3-3.x86_64 24/42 Installing : libobasis7.3-ogltrans-7.3.0.3-3.x86_64 25/42 Installing : libobasis7.3-postgresql-sdbc-7.3.0.3-3.x86_64 26/42 Installing : libobasis7.3-graphicfilter-7.3.0.3-3.x86_64 27/42 Installing : libobasis7.3-ooolinguistic-7.3.0.3-3.x86_64 28/42 Installing : libobasis7.3-extension-pdf-import-7.3.0.3-3.x86_64 29/42 Installing : libobasis7.3-onlineupdate-7.3.0.3-3.x86_64 30/42 Installing : libobasis7.3-extension-nlpsolver-7.3.0.3-3.x86_64 31/42 Installing : libobasis7.3-python-script-provider-7.3.0.3-3.x86_64 32/42 Installing : libobasis7.3-firebird-7.3.0.3-3.x86_64 33/42 Installing : libobasis7.3-extension-report-builder-7.3.0.3-3.x86_64 34/42 Installing : libobasis7.3-extension-javascript-script-provider-7.3.0.3-3.x86_64 35/42 Installing : libobasis7.3-extension-mediawiki-publisher-7.3.0.3-3.x86_64 36/42 Installing : libobasis7.3-gnome-integration-7.3.0.3-3.x86_64 37/42 Installing : libobasis7.3-extension-beanshell-script-provider-7.3.0.3-3.x86_64 38/42 Installing : libobasis7.3-libreofficekit-data-7.3.0.3-3.x86_64 39/42 Installing : libobasis7.3-xsltfilter-7.3.0.3-3.x86_64 40/42 Installing : libobasis7.3-kde-integration-7.3.0.3-3.x86_64 41/42 Installing : libreoffice7.3-freedesktop-menus-7.3.0-3.noarch 42/42 which: no update-desktop-database in (/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin) /bin/update-mime-database /bin/gtk-update-icon-cache which: no update-desktop-database in (/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin) which: no update-desktop-database in (/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin) Verifying : libobasis7.3-graphicfilter-7.3.0.3-3.x86_64 1/42 Verifying : libobasis7.3-ooolinguistic-7.3.0.3-3.x86_64 2/42 Verifying : libreoffice7.3-en-US-7.3.0.3-3.x86_64 3/42 Verifying : libobasis7.3-extension-pdf-import-7.3.0.3-3.x86_64 4/42 Verifying : libobasis7.3-draw-7.3.0.3-3.x86_64 5/42 Verifying : libobasis7.3-core-7.3.0.3-3.x86_64 6/42 Verifying : libobasis7.3-images-7.3.0.3-3.x86_64 7/42 Verifying : libobasis7.3-onlineupdate-7.3.0.3-3.x86_64 8/42 Verifying : libreoffice7.3-ure-7.3.0.3-3.x86_64 9/42 Verifying : libobasis7.3-math-7.3.0.3-3.x86_64 10/42 Verifying : libreoffice7.3-dict-en-7.3.0.3-3.x86_64 11/42 Verifying : libobasis7.3-base-7.3.0.3-3.x86_64 12/42 Verifying : libreoffice7.3-base-7.3.0.3-3.x86_64 13/42 Verifying : libreoffice7.3-dict-es-7.3.0.3-3.x86_64 14/42 Verifying : libobasis7.3-extension-nlpsolver-7.3.0.3-3.x86_64 15/42 Verifying : libobasis7.3-en-US-7.3.0.3-3.x86_64 16/42 Verifying : libobasis7.3-librelogo-7.3.0.3-3.x86_64 17/42 Verifying : libreoffice7.3-calc-7.3.0.3-3.x86_64 18/42 Verifying : libreoffice7.3-dict-fr-7.3.0.3-3.x86_64 19/42 Verifying : libobasis7.3-writer-7.3.0.3-3.x86_64 20/42 Verifying : libobasis7.3-python-script-provider-7.3.0.3-3.x86_64 21/42 Verifying : libobasis7.3-firebird-7.3.0.3-3.x86_64 22/42 Verifying : libobasis7.3-pyuno-7.3.0.3-3.x86_64 23/42 Verifying : libreoffice7.3-writer-7.3.0.3-3.x86_64 24/42 Verifying : libobasis7.3-extension-report-builder-7.3.0.3-3.x86_64 25/42 Verifying : libobasis7.3-extension-javascript-script-provider-7.3.0.3-3.x86_64 26/42 Verifying : libobasis7.3-extension-mediawiki-publisher-7.3.0.3-3.x86_64 27/42 Verifying : libobasis7.3-ogltrans-7.3.0.3-3.x86_64 28/42 Verifying : libobasis7.3-postgresql-sdbc-7.3.0.3-3.x86_64 29/42 Verifying : libobasis7.3-ooofonts-7.3.0.3-3.x86_64 30/42 Verifying : libobasis7.3-gnome-integration-7.3.0.3-3.x86_64 31/42 Verifying : libreoffice7.3-math-7.3.0.3-3.x86_64 32/42 Verifying : libreoffice7.3-draw-7.3.0.3-3.x86_64 33/42 Verifying : libobasis7.3-calc-7.3.0.3-3.x86_64 34/42 Verifying : libreoffice7.3-impress-7.3.0.3-3.x86_64 35/42 Verifying : libobasis7.3-impress-7.3.0.3-3.x86_64 36/42 Verifying : libreoffice7.3-freedesktop-menus-7.3.0-3.noarch 37/42 Verifying : libreoffice7.3-7.3.0.3-3.x86_64 38/42 Verifying : libobasis7.3-extension-beanshell-script-provider-7.3.0.3-3.x86_64 39/42 Verifying : libobasis7.3-libreofficekit-data-7.3.0.3-3.x86_64 40/42 Verifying : libobasis7.3-xsltfilter-7.3.0.3-3.x86_64 41/42 Verifying : libobasis7.3-kde-integration-7.3.0.3-3.x86_64 42/42 Installed: libobasis7.3-base.x86_64 0:7.3.0.3-3 libobasis7.3-calc.x86_64 0:7.3.0.3-3 libobasis7.3-core.x86_64 0:7.3.0.3-3 libobasis7.3-draw.x86_64 0:7.3.0.3-3 libobasis7.3-en-US.x86_64 0:7.3.0.3-3 libobasis7.3-extension-beanshell-script-provider.x86_64 0:7.3.0.3-3 libobasis7.3-extension-javascript-script-provider.x86_64 0:7.3.0.3-3 libobasis7.3-extension-mediawiki-publisher.x86_64 0:7.3.0.3-3 libobasis7.3-extension-nlpsolver.x86_64 0:7.3.0.3-3 libobasis7.3-extension-pdf-import.x86_64 0:7.3.0.3-3 libobasis7.3-extension-report-builder.x86_64 0:7.3.0.3-3 libobasis7.3-firebird.x86_64 0:7.3.0.3-3 libobasis7.3-gnome-integration.x86_64 0:7.3.0.3-3 libobasis7.3-graphicfilter.x86_64 0:7.3.0.3-3 libobasis7.3-images.x86_64 0:7.3.0.3-3 libobasis7.3-impress.x86_64 0:7.3.0.3-3 libobasis7.3-kde-integration.x86_64 0:7.3.0.3-3 libobasis7.3-librelogo.x86_64 0:7.3.0.3-3 libobasis7.3-libreofficekit-data.x86_64 0:7.3.0.3-3 libobasis7.3-math.x86_64 0:7.3.0.3-3 libobasis7.3-ogltrans.x86_64 0:7.3.0.3-3 libobasis7.3-onlineupdate.x86_64 0:7.3.0.3-3 libobasis7.3-ooofonts.x86_64 0:7.3.0.3-3 libobasis7.3-ooolinguistic.x86_64 0:7.3.0.3-3 libobasis7.3-postgresql-sdbc.x86_64 0:7.3.0.3-3 libobasis7.3-python-script-provider.x86_64 0:7.3.0.3-3 libobasis7.3-pyuno.x86_64 0:7.3.0.3-3 libobasis7.3-writer.x86_64 0:7.3.0.3-3 libobasis7.3-xsltfilter.x86_64 0:7.3.0.3-3 libreoffice7.3.x86_64 0:7.3.0.3-3 libreoffice7.3-base.x86_64 0:7.3.0.3-3 libreoffice7.3-calc.x86_64 0:7.3.0.3-3 libreoffice7.3-dict-en.x86_64 0:7.3.0.3-3 libreoffice7.3-dict-es.x86_64 0:7.3.0.3-3 libreoffice7.3-dict-fr.x86_64 0:7.3.0.3-3 libreoffice7.3-draw.x86_64 0:7.3.0.3-3 libreoffice7.3-en-US.x86_64 0:7.3.0.3-3 libreoffice7.3-freedesktop-menus.noarch 0:7.3.0-3 libreoffice7.3-impress.x86_64 0:7.3.0.3-3 libreoffice7.3-math.x86_64 0:7.3.0.3-3 libreoffice7.3-ure.x86_64 0:7.3.0.3-3 libreoffice7.3-writer.x86_64 0:7.3.0.3-3 Complete! [root@VM-12-15-centos RPMS]# 下载中文包wget --no-check-certificate https://mirrors.nju.edu.cn/tdf/libreoffice/stable/7.3.0/rpm/x86_64/LibreOffice_7.3.0_Linux_x86-64_rpm_langpack_zh-CN.tar.gz执行过程记录如下:[root@VM-12-15-centos RPMS]# cd ../../ [root@VM-12-15-centos soft]# wget --no-check-certificate https://mirrors.nju.edu.cn/tdf/libreoffice/stable/7.3.0/rpm/x86_64/LibreOffice_7.3.0_Linux_x86-64_rpm_langpack_zh-CN.tar.gz --2022-02-05 10:42:57-- https://mirrors.nju.edu.cn/tdf/libreoffice/stable/7.3.0/rpm/x86_64/LibreOffice_7.3.0_Linux_x86-64_rpm_langpack_zh-CN.tar.gz Resolving mirrors.nju.edu.cn (mirrors.nju.edu.cn)... 210.28.130.3, 2001:da8:1007:4011::3 Connecting to mirrors.nju.edu.cn (mirrors.nju.edu.cn)|210.28.130.3|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1090479 (1.0M) [application/octet-stream] Saving to: ‘LibreOffice_7.3.0_Linux_x86-64_rpm_langpack_zh-CN.tar.gz’ 100%[===============================================================================>] 1,090,479 5.40MB/s in 0.2s 2022-02-05 10:42:58 (5.40 MB/s) - ‘LibreOffice_7.3.0_Linux_x86-64_rpm_langpack_zh-CN.tar.gz’ saved [1090479/1090479] [root@VM-12-15-centos soft]# 解压中文包tar -zxvf LibreOffice_7.3.0_Linux_x86-64_rpm_langpack_zh-CN.tar.gz进入中文包安装目录安装中文包yum install -y *.rpm执行过程记录如下:[root@VM-12-15-centos RPMS]# yum install -y *.rpm Loaded plugins: fastestmirror, langpacks Repository epel is listed more than once in the configuration Examining libobasis7.3-zh-CN-7.3.0.3-3.x86_64.rpm: libobasis7.3-zh-CN-7.3.0.3-3.x86_64 Marking libobasis7.3-zh-CN-7.3.0.3-3.x86_64.rpm to be installed Examining libreoffice7.3-zh-CN-7.3.0.3-3.x86_64.rpm: libreoffice7.3-zh-CN-7.3.0.3-3.x86_64 Marking libreoffice7.3-zh-CN-7.3.0.3-3.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package libobasis7.3-zh-CN.x86_64 0:7.3.0.3-3 will be installed ---> Package libreoffice7.3-zh-CN.x86_64 0:7.3.0.3-3 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================================= Package Arch Version Repository Size ========================================================================================================================= Installing: libobasis7.3-zh-CN x86_64 7.3.0.3-3 /libobasis7.3-zh-CN-7.3.0.3-3.x86_64 3.6 M libreoffice7.3-zh-CN x86_64 7.3.0.3-3 /libreoffice7.3-zh-CN-7.3.0.3-3.x86_64 15 k Transaction Summary ========================================================================================================================= Install 2 Packages Total size: 3.6 M Installed size: 3.6 M Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : libobasis7.3-zh-CN-7.3.0.3-3.x86_64 1/2 Installing : libreoffice7.3-zh-CN-7.3.0.3-3.x86_64 2/2 Verifying : libobasis7.3-zh-CN-7.3.0.3-3.x86_64 1/2 Verifying : libreoffice7.3-zh-CN-7.3.0.3-3.x86_64 2/2 Installed: libobasis7.3-zh-CN.x86_64 0:7.3.0.3-3 libreoffice7.3-zh-CN.x86_64 0:7.3.0.3-3 Complete! [root@VM-12-15-centos RPMS]# 安装文档转换相关依赖库yum -y install cairo cups-libs libSM执行过程记录如下:[root@VM-12-15-centos RPMS]# yum -y install cairo cups-libs libSM Loaded plugins: fastestmirror, langpacks Repository epel is listed more than once in the configuration Loading mirror speeds from cached hostfile Package cairo-1.15.12-4.el7.x86_64 already installed and latest version Package 1:cups-libs-1.6.3-51.el7.x86_64 already installed and latest version Package libSM-1.2.2-2.el7.x86_64 already installed and latest version Nothing to do [root@VM-12-15-centos RPMS]# 安装中文字体1.创建中文字体目录mkdir -p /usr/share/fonts/chinese2.拷贝字体文件到中文字体目录,拷贝前将相关的字体文件上传到/soft/fonts/目录cp /soft/fonts/*.* /usr/share/fonts/chinese/3. 目录授权chmod -R 755 /usr/share/fonts/chinese4. 安装ttmkfdir来搜索目录中所有的字体信息,并汇总生成fonts.scale文件yum -y install ttmkfdir5. 执行ttmkfdir命令ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir6.修改字体配置文件vi /etc/fonts/fonts.conf7. 在其他dir节点下加入如下字体文件索引目录<dir>/usr/share/fonts/chinese</dir>8. 刷新内存中的字体缓存fc-cache
2022年02月05日
308 阅读
0 评论
0 点赞
2022-02-04
《你不知道的JavaScript》阅读笔记
判断this现在我们可以根据优先级来判断函数在某个调用位置应用的是哪条规则。可以按照下面的顺序来进行判断:1、函数是否在new中调用(new 绑定) ?如果是的话 this 绑定的是新创建的对象。var bar = new foo()2、函数是否通过call、apply (显式绑定)或者硬绑定调用?如果是的话,this 绑定的是指定的对象。var bar = foo.call(obj2)3、函数是否在某个上下文对象中调用(隐式绑定) ?如果是的话,this 绑定的是那个上下文对象。var bar = obj1.foo()4、如果都不是的话,使用默认绑定。如果在严格模式下,就绑定到undefined,否则绑定到全局对象。var bar = foo()可计算属性名ES6中增加了可计算属性名,可以在文字形式中使用[]包裹一个表达式来当作属性名:var prefix = 'zhuzl' var content = { [prefix + '_name']: 'zhuzl', [prefix + '_age']: 34 } content['zhuzl_name'] // zhuzl属性描述符从ES5开始,所有的属性都具备了属性描述符。var myObject = {} Object.defineProperty(myObject, 'a', { value: 2, writable: true, // 是否可以修改值 configurable: true, // 属性描述符是否可配置,该值为单向操作,无法撤消。即便该值为false,还是可以把writable修改为false,但是无法改为true。若值为false,该值不可delete enumerable: true // 控制该属性是否出现在对象的属性枚举列表中。比如说for...in 循环 }) 对象不变性对象常量 结合writable:false和configurable:false可以创建一个真正的常量属性(不可修改、重定义和删除)var myObject = {} Object.defineObject(myObject, 'FAVORITE_NUMBER', { value: 42, writable: false, configurable: false })禁止扩展 如果想禁止一个对象添加新属性并且保留已有属性,可以使用Object.preventExtensions(...)密封 Object.seal(...) 会创建一个“密封”的对象,这个方法实际上会调用Object.preventExtensions(...) 并把所有现有属性标记为 configurable: false。所以密封之后不仅不能添加新属性,也不能重新配置或删除任何现有属性。冻结 Object.freeze(...)会创建一个冻结对象,这个方法实际上会在一个对象上调用Object.seal(...)并把所有“数据访问”属性标记为writable: false。这个方法是应用在对象上的级别最高的不可变性。setter 和 getter通常getter 和 setter 是成对出现的,只定义一个的话通常会产生意料之外的行为。var myObject = {} Object.defineProperty(myObject, 'b', { get: function () {}, set: function () {} }) // OR var myObject = { get a() { return this._a_ }, set a(val) { this._a_ = val * 2 } }遍历for(var k in obj):用来遍历对象的可枚举属性列表,包括prototype原型链上的属性。for(var v of arr):用于遍历数组的值,理论上是通过调用数组内置的@@iterator迭代器对象,然后通过调用迭代器对象的next()方法来手动遍历数组,原理如下:var myArray = [1, 2, 3] for (var v of myArray) { console.log(v) } // 1 // 2 // 3 // ----实际工作模式---- var myArray = [1, 2, 3] var it = myArray[Symbol.iterator]() it.next() // {value: 1, done: false} it.next() // {value: 2, done: false} it.next() // {value: 3, done: false} it.next() // {done: true}数组forEach():会遍历数组中的所有值并忽略函数的返回值数组every():会一直运行直到回调函数返回false(或“假”值)数组some():会一直运行直到回调函数返回true(或“真”值)原型继承function Foo(name) { this.name = name } Foo.prototype.myName = function () { return this.name } function Bar (name, label) { Foo.call(this, name) this.label = label } // 我们创建了一个新的Bar.prototype对象并关联到Foo.prototype // 注意:现在没有Bar.prototype.constructor 了,如果需要这个属性的话可以手工修复一下 Bar.prototype = Object.create(Foo.prototype) Bar.prototype.myLabel = function () { return this.label } var a = new Bar('a', 'obj a') a.myName() // "a" a.myLabel() // "obj a" WARNING:下面这两种方式是常见的错误左房,实际上他们都存在一些问题:// 和你想要的机制不一样。该方式并不会创建一个关联到Bar.prototype的新对象,他只是让Bar.prototype 直接引用Foo.prototype对象。因此当执行类似Bar.prototype.myLable = xxx 的赋值语句时,是直接修改Foo.prototype对象本身。 Bar.prototype = Foo.prototype // 基本上满足需求,但是可能会产生一些副作用。该方式的确会创建一个关联到Foo.prototype的新对象。但是他使用的Foo(...)的“构造函数调用”,如果函数Foo有一些副作用(比如写日志、修改状态、注册到其他对象、给this添加数据属性等),就会影响到Bar()的“后代”。 Bar.prototype = new Foo()TIPS:ES6添加了辅助函数Object.setPrototypeOf(...),可以作为标准且可靠的方式来修改对象关联:// ES6之前使用Bar.prototype = Object.create(Foo.prototype) Bar.prototype = Object.create(Foo.prototype) // ES6 开始可以直接使用修改现有的Bar.prototype Object.setPrototypeOf(Bar.prototype, Foo.prototype)整数的安全范围能够被“安全”呈现的最大整数是2^53-1,即9007199254740991,在ES6中被定义为Number.MAX_SAFE_INTEGER。最小整数是-9007199254740991,在ES6中被定义为Number.MIN_SAFE_INTEGER。toString基本类型值得字符串化规则null -> "null"undefined -> "undefined"true -> "true"普通对象除非自定义,否则toString() (Object.prototype.toString())返回内部属性[[class]]的值,如“[object Object]”如果对象有自己的toString方法,字符串化时会调用该方法并使用其返回值。数组的默认toString()方法经过了重新定义,将返回单元字符串化以后在用“,”链接起来JSON字符串化:JSON.stringify(val, replacer, space),在将对象序列化为字符串时也用到了toString不安全的JSON值:undefined,function,symbol和包含循环引用的对象,JSON.stringify(...)在对象中遇到undefined、function和symbol时会自动将其忽略,在数组中则会返回null(以保证单元位置不变)。如果对象中定义了toJSON()方法,JSON字符串化时会首先调用该方法,然后用它的返回值来进行序列化。toJSON()应该“返回一个能够被字符串化的安全的JSON值”,而不是“返回一个JSON字符串”toNumber非数字值转换数字逻辑:true -> 1false -> 0undefined -> NaNnull -> 0toBoolean以下这些值都是假值:undefinednullfalse0、+0、-0和NaN""除以上假值列表的数据外均为真值~ 运算符(即字位操作“非” ) 和 |(即字位操作“或” )字位运算符只适用于32位整数,运算符会强制操作数使用32位格式,这是通过抽象操作toInt322来实现的。~x 大致等同于 -(x+1), 如 ~42 = ~(42+1) ==> -43。在-(x+1)中唯一能得到0的x值是-1,也就是说如果x为 -1 时,~x会返回假值0,其他情况下则返回真值。根据该规则可以将~和indexOf一起将结果强制转换为真/假值:if (~a.indexOf('xxx')) { // true // 找到匹配的! }~~x: 截除数字值的小数部分
2022年02月04日
13 阅读
0 评论
0 点赞
2022-01-28
自动化项目部署系列:安装Jenkins
拉取镜像docker pull jenkins/jenkins:lts执行后显示如下信息:[zhuzl@VM-16-6-centos ~]$ sudo docker pull jenkins/jenkins:lts lts: Pulling from jenkins/jenkins 647acf3d48c2: Pull complete 832e288237bc: Pull complete ea194d1bd1da: Pull complete 98569593b9fd: Pull complete dfe249e8cdf2: Pull complete 0f6f2e6d37bb: Pull complete 07fcb98649b6: Pull complete 1e33c26b1882: Pull complete 7b24f0e29fe1: Pull complete 4d90ef3a8f3b: Pull complete d98c8e675bea: Pull complete b45fc2bf9fd7: Pull complete d6e1fda9effc: Pull complete 3635a44047f2: Pull complete 486e1776d3bc: Pull complete 41233d151800: Pull complete 14a67803c2b3: Pull complete Digest: sha256:c1d02293a08ba69483992f541935f7639fb10c6c322785bdabaf7fa94cd5e732 Status: Downloaded newer image for jenkins/jenkins:lts docker.io/jenkins/jenkins:lts [zhuzl@VM-16-6-centos ~]$ 创建磁盘卷sudo docker volume create jenkins_data执行后显示如下信息:[zhuzl@VM-16-6-centos ~]$ sudo docker volume create jenkins_data jenkins_data [zhuzl@VM-16-6-centos ~]$启动容器sudo docker run -d --name jenkins --restart always -p 8003:8080 -v jenkins_data:/var/jenkins_home jenkins/jenkins:lts执行后显示如下信息:[zhuzl@VM-16-6-centos ~]$ sudo docker run -d --name jenkins --restart always -p 8003:8080 -v jenkins_data:/var/jenkins_home jenkins/jenkins:lts ba1dc70b3621c93515eb818daf1600f50a54b441de102319f23152f98b6b7aec [zhuzl@VM-16-6-centos ~]$通过docker logs xxxx 查看控制台信息,显示如下信息:[zhuzl@VM-16-6-centos ~]$ sudo docker logs ba1d Running from: /usr/share/jenkins/jenkins.war webroot: EnvVars.masterEnvVars.get("JENKINS_HOME") 2022-01-28 09:13:17.975+0000 [id=1] INFO org.eclipse.jetty.util.log.Log#initialized: Logging initialized @469ms to org.eclipse.jetty.util.log.JavaUtilLog 2022-01-28 09:13:18.045+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file 2022-01-28 09:13:19.065+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath 2022-01-28 09:13:19.126+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-9.4.43.v20210629; built: 2021-06-30T11:07:22.254Z; git: 526006ecfa3af7f1a27ef3a288e2bef7ea9dd7e8; jvm 11.0.13+8 2022-01-28 09:13:19.360+0000 [id=1] INFO o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet 2022-01-28 09:13:19.395+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0 2022-01-28 09:13:19.396+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults 2022-01-28 09:13:19.397+0000 [id=1] INFO o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 660000ms 2022-01-28 09:13:19.829+0000 [id=1] INFO hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME") 2022-01-28 09:13:20.000+0000 [id=1] INFO o.e.j.s.handler.ContextHandler#doStart: Started w.@3f049056{Jenkins v2.328,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war} 2022-01-28 09:13:20.022+0000 [id=1] INFO o.e.j.server.AbstractConnector#doStart: Started ServerConnector@45e37a7e{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} 2022-01-28 09:13:20.022+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: Started @2518ms 2022-01-28 09:13:20.026+0000 [id=24] INFO winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled 2022-01-28 09:13:20.249+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: Started initialization 2022-01-28 09:13:20.273+0000 [id=30] INFO jenkins.InitReactorRunner$1#onAttained: Listed all plugins 2022-01-28 09:13:20.985+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Prepared all plugins 2022-01-28 09:13:20.990+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: Started all plugins 2022-01-28 09:13:20.995+0000 [id=35] INFO jenkins.InitReactorRunner$1#onAttained: Augmented all extensions 2022-01-28 09:13:21.409+0000 [id=35] INFO jenkins.InitReactorRunner$1#onAttained: System config loaded 2022-01-28 09:13:21.409+0000 [id=35] INFO jenkins.InitReactorRunner$1#onAttained: System config adapted 2022-01-28 09:13:21.409+0000 [id=35] INFO jenkins.InitReactorRunner$1#onAttained: Loaded all jobs 2022-01-28 09:13:21.410+0000 [id=35] INFO jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated 2022-01-28 09:13:21.429+0000 [id=49] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$1: Started Download metadata 2022-01-28 09:13:21.441+0000 [id=49] INFO hudson.util.Retrier#start: Attempt #1 to do the action check updates server WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/var/jenkins_home/war/WEB-INF/lib/groovy-all-2.4.21.jar) to method java.lang.Object.finalize() WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2022-01-28 09:13:21.779+0000 [id=35] INFO jenkins.install.SetupWizard#init: ************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 8420f23681df4e6c90ca9babdb4c366a This may also be found at: /var/jenkins_home/secrets/initialAdminPassword ************************************************************* ************************************************************* ************************************************************* 2022-01-28 09:13:34.191+0000 [id=33] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization 2022-01-28 09:13:34.209+0000 [id=23] INFO hudson.WebAppMain$3#run: Jenkins is fully up and running [zhuzl@VM-16-6-centos ~]$通过 sudo docker inspect jenkins_data, 可查看磁盘卷在本地的目录:[zhuzl@VM-16-6-centos ~]$ sudo docker inspect jenkins_data [ { "CreatedAt": "2022-01-28T17:13:34+08:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/jenkins_data/_data", "Name": "jenkins_data", "Options": {}, "Scope": "local" } ] [zhuzl@VM-16-6-centos ~]$查看jenkins 密码:[zhuzl@VM-16-6-centos ~]$ sudo cat /var/lib/docker/volumes/jenkins_data/_data/secrets/initialAdminPassword 8420f23681df4e6c90ca9babdb4c366a [zhuzl@VM-16-6-centos ~]$ 访问Jenkins应用通过nginx 代理后,访问应用,界面效果如下:输入上面查看到的管理员密码信息:8420f23681df4e6c90ca9babdb4c366a,单击“下一步”按钮,显示loading界面:loading加载完成后,显示如下自定义配置界面:这里我选择“安装推荐的插件”,进入如下图所示的推荐插件安装界面:插件安装完成后,进入如下图所示的管理员设置界面:填写完管理员信息后,单击“保存并完成”按钮,进入如下图所示的实例配置界面:再次单击“保存并完成”按钮,显示如下图所示的“Jenkins已就绪!”界面单击“开始使用jenkins”按钮,进入如下图所示的 Jenkins 主界面:
2022年01月28日
36 阅读
0 评论
0 点赞
2022-01-26
[转载]如何从交互维度量化用户体验?
最近在准备一个用户体验相关的PPT作内部分享,收集素材的时候在知乎上发现一篇讲解非常翔实的文章。故转载于此,仅用于副本留底,若有侵权可联系删除。原文地址:https://zhuanlan.zhihu.com/p/39124206https://mp.weixin.qq.com/s/69SUAWmsg7S4J4CvLk1TNA{mtitle title="以下为转载的内容原文"/}之前参加了回音分享会,认识了很多新朋友,线下分享时间有限,可能有很多东西没有讲的很透彻,所以整理了一下我当时的 ppt 和想要表达的观点,写了这篇文章,和大家分享一些在产品和交互设计中的一些自己的方法。一、什么是交互狭义的交互(Interaction)定义交互主体必须是人本身,而客体可以是产品,环境,服务等等,且不论交互客体是什么,只要主体是人,人和客体去进行交互的时候,一定是人带着心理预期施加一个行为,然后客体会根据这个行为给予一个反馈(没有反馈本质也是一个反馈),而人会根据这个反馈是否符合预期去进行心理修正。如下图所示,这就是我理解的最小交互模型:当时我举的例子是用翻页器去控制 ppt 翻页:如上图所示,拆解这一套交互行为:当我点击翻页器的「下一页」按钮,我点击行为附带的心理预期是「PPT翻往下一页」,然后我点击的时候,遥控器塑胶按钮给到我手指一个物理反馈,证明我按下的行为已经完成了,这是「输出端(我的手)的交互与反馈」,这时候遥控器接收到按钮指令,把指令通过红外线传输到 USB接收器上,接收器把指令传到 PC端然后完成翻页动作,再通过大屏幕传到我的眼(输入端)中,我就可以确认这一次交互反馈是符合预期的。这里有一点想要补充:设备对设备(上图中黑色箭头),也属于广义的交互,只不过现阶段大家研究的交互设计都是狭义的,人为主体的交互。在我们日用科技产品的早期,有两个东西是无法跳过的,那就是按键手机和 PC电脑:他们几乎是同步在发展的,而这两个产品的交互行为基本上延续到了触屏手机时代,所以为了弄明白触屏手机的交互,这两个产品是值得讲一讲的。先看按键手机(就是我们小时候用的非智能手机):在按键手机中,最让用户困惑的其实是按键和屏幕之间存在一个映射关系,而不同厂商缺乏一个统一的规范,各家映射规则不一样。大家是否还记得当年的手机说明书那可以说是相当厚,因为说明书必须要给用户建构一个心理模型;比如上图,点击左上角和右上角那两个「-」按钮,其实一一对应的是屏幕左下角的「Goto」和右下角的「Names」。这个一一对应关系作为今天的用户来看应该是很平常而且很易懂的,但是当年没用过手机的人,需要花很长时间阅读说明书,才能够明白物理按键和屏幕上的映射关系,这就是按键手机很难用的地方,也是很反人性的地方。因为作为用户来说,心智上,我们当然希望所触即所得。再来看 PC,作为和按键手机差不多一起出现的载体形式,人们操作 PC端人是通过媒介(也就是鼠标+键盘)输入的,其实本质上也是我们通过鼠标在桌面上滑动 x-y 区域对应到电脑桌面上指针的移动来创造屏幕中x-y的映射关系,然后键盘上几十个键配合输入完成操作。大家发现了么,上述的两种设备其实本身就是在制造一种一一对应的映射关系去完成交互行为,这两种载体从出身开始就是需要很大交互成本的。随着科技的发展,触屏感应技术推出了之后,印象中触屏手机就是两三年时间就摧枯拉朽的淘汰了按键手机,本质上是干掉了一一对应的交互映射,所按即所得:触屏手机出现之后,交互专家们不禁要问一个问题了:手和触摸屏到底有多少种交互方式?答案是有很多种:越是高阶越是隐藏的交互手势越复杂,所谓的「交互成本」也越高,比如锤子三指滑动换屏保那种,就是利用了高阶交互便捷实现边界功能。那这么看起来,iOS 也好还是所有的安卓手机都好,从用户端而言,就是组合交互手势,让信息更好的传达而已。那么同理,在 App 中也是一样,如果我们了解了每一个交互行为的用户心理预期,对设计工作而言就能做到有的放矢:我们以「单击」和「滑动」这两个最简单的交互行为举例。所谓单击手机屏幕,用户其实最核心的是有两个预期:第一是选中一个元素,比如 Radio组件。第二是逻辑上的 Next,比如点了一件衣服,应该 Next 到衣服的详情;点了付款,应该出现付款流程,点了返回,应该 back 到上一路径点等等。划动交互也是一样的,用户在一块手机屏幕上单指划划划,用户内心的预期其实也不复杂,最核心的预期也就两点:第一是查看屏幕外的线索(前提是设计师给用户留下线索了或者是这个 UI组件长得就是可以划动的样子)。第二是查看相邻标签的内容,或者查看同一个标签下的相邻元素,比如 iOS 的 segment controlle组件就是典型例子:当我们了解了这些之后,我们在实际的设计工作中就可以根据上面这些理论来合理选择 UI组件去呈现对应的信息了。二、从交互维度合理选择UI组件我们在设计工作中,选择 UI组件,本质上就是选择信息的呈现形式。每一个常见的 UI界面和 UI组件,都一定也满足上面所说的最小交互模型:在这里我举一些例子说明。第一个例子:同样的内容,选择不同的 UI组件呈现,给用户呈现的是完全不同的产品结构:大家看下面这张图:这两个 UI模块摆在大家面前,大家应该能清晰的感受到,左边是一个 segment 控制下面内容的 UI;而右边是一个所有内容列表的集合页,只不过通过 tab 聚类了而已。第一件事应该想到的是如果需要采用右边的排列形式就必须要控制 tag 的字数;然后由于右边的 tag 占据了推荐贴的位置,导致推荐贴可能没有左边的那种展现形式更加醒目。但是相对的,图右的优势在于,由于竖向排列 tag 可以让一个屏幕显示更多的 tag,可以让用户更方便的定位内容,比如外卖产品之所以用右边这种形式是因为力求一屏展示更多的菜,而且外卖产品的左侧 tag 一般是一家店铺的菜的品类,用户下滑菜品配合点击品类,点完即走,很方便(京东和淘宝电商类平台也是类似的)。但是比如今日头条,新闻类客户端只能采用左边的这种形式,因为新闻类客户端是需要用户长时间沉浸的,比如用户选中一个「体育」的 tag 之后一般要沉浸的看好久好久,用户需要沉浸在这个 tag 下的内容中,那这个时候显然用右边这种设计方式让 tag 常驻屏幕左侧是不合适的。再来看第二个例子,就是 UI 应该会随着内容而进行调整和优化:这里举一个唱吧的例子,唱吧从7.0到8.6之间做了三次改版,大家可以看到,唱吧团队几乎是损失了屏幕效率来加大了间隔和突出了歌名,这是为什么呢?这是因为页面承载的关键任务不同,大家对比着7.0时候和8.6时候的 UI样式,正好是今天快手和唱吧的对比:大家会发现,其实这个页面,快手和唱吧承载的内容都是消费转化,都希望用户点击进去消费内容,但是两款产品做了截然不同的 UI风格,原因是什么呢?快手在这个页面,其实承载的关键任务是:「迅速让用户找到感兴趣的点」,它这么设计的本质原因是因为它的截图可以帮助用户判断内容本身,比如第一张图是一个人在打高尔夫,右边是一个工人,然后第二排左边是一个游戏的镜头,右边是一个传递正能量,大家可以很方便的通过图片识别里面的内容,用户更沉浸更聚焦的去选择自己喜欢的,点击进入消费就可以了。但是唱吧的视频截图其实是不能识别里面内容的,大家可以看到,第一张图是一个妹子,第二张图是一个妹子,第三张图还是一个妹子,那用户点击进去的动力在哪儿了?除了这个照片长相之外,更多的其实是文字决定的,是这个人唱的这首歌的歌曲名是不是我喜欢的,或者是这个演唱者的歌手等级。所以基于这种更深层次的逻辑,唱吧和快手两款产品的这个页面都是为了促进消费转化,但是 UI 长相上完全不同。我们看第三个例子:同样组件下,选择不同的交互方式,也会使得效果完全不同,比如现在有一个 UI页面,主要由一个 tab(iOS叫segment controlled)组件控制下面的内容,长这样:我先假定一个前提:这个 app 中的这个组件不支持横划,只支持点击切换。好了,现在我假设这是一款已经稳定运营了一年的产品,为了说明问题,我假设一个理想数据:假设每天有20W 的 uv 访问这个页面,其中分流情况是:10Wuv消费「推荐」下的内容2Wuv消费「生活」下的内容1Wuv消费「段子」下的内容3Wuv消费「美女」下的内容4Wuv消费「游戏」下的内容这时候,为了优化交互行为,有一天决定把这个 tab组件从不可横向划动改成可以划动的(并且告诉用户这里可以滑动了),然后给你一次机会重新排列这五个 tab 顺序,你会怎么做呢?最简单的办法当然是把五个 tab 按照用户消费意愿逐一排列,即:「推荐、游戏、美女、生活、段子」。这样排列当然没有任何问题,但是还有没有更优解呢?我给出的解决办法是这样的,大家评判一下:按照用户的消费量,「游戏」是消费量第二的一个 tab,毫无疑问我会把它排在第二项,这样可以刺激用户划动行为,然后「美女」是消费量第三的,我会把它放在第四位,这时候我会把「段子」和「生活」这两个消费率最低的 tab 分 AB test 做两个版本放在第三和第五位拿去测,以判断之前的「段子」和「生活」是由于自身内容不够优质,还是之前交互成本太低导致的数据较差:最后我们来看第四个例子:比如一个 app,他的 UI 如下图所示的这个样子。现在假设在运营和市场团队不做任何努力的情况下,单从产品交互的角度,能不能优化上面这个版块的点击率?首先我们来分析一下页面架构:如果我们认为,不管是点击右上角的「>」,还是点击留个圆形入口都算完成转化的话,我们现在的这个红色的 UI组件,入口位置一共有7个。根据长尾理论,如果我们把这个圆形入口从6个扩展到比如九个,是不是一定对转化率有正向影响?答案并不一定:为什么呢?因为主要是这样的改动会带来一个未知的泳道横划交互,它会产生一定的影响,如下图所示。用户看到这个泳道之后可能出现三种行为:用户完全不滑动——那入口就从6个变成了6.5个,别的没有变量影响。用户滑动看完了之后,点击某一个或者左上角的「>」进入——这是我们想要的转化用户滑动看了这些圆形入口之后松手,就是不点击进去——这是我们不愿意看到的结果想到这里,那为什么我们不能让用户直接滑动之后松手就跳转呢?想到这里,所以优化方案如下图所示,给与用户一个 x轴区间,滑动手势操过那个区间则告诉用户你现在松手默认跳转,用户不愿意跳转也可以回划,只要不足这个 x区间就给与用户自主选择的机会:我之前在上家工作的时候,我们把6个圆形入口变成了10个,然后用这个「松手跳转」的交互把单元模块的穿透率从21%提升到了31%,这是一个实战当中的真实例子。当然了,请大家再思考这样的一个问题:一个页面的流量就这么大,一个地方涨了11%,那势必别的地方就会相应的损失11%。一般情况下 app 首页承担着80%以上的分流工作,根据流量漏斗来看的话每一次引流都会导致其他模块的数据下降,所以设计师们应该要根据运营策略和公司大的产品 OKR 来合理选用合适的交互组件,以达到想要的目的,还是那句话:「小孩儿才分对错,大人只看利弊。」三、从交互的维度量化用户体验移动互联网产品设计中,尤其是在中国的 app 产品,有两大分歧阵营:「扁平」阵营表示了,我们需要产品足够扁平,最好就是三次交互可以触达所有 app 界面:「简洁」阵营也表示了,我们需要页面信息足够简洁,最好一个页面只完成一个核心任务:双方你来我往,谁也说服不了谁,如下图所示,「简洁」阵营反驳「扁平」阵营说:你们一点都不遵守席客定律,层级扁平是扁平了,但是相应的页面信息变得越来越多,给用户呈现的干扰就越来越多,用户做出决定的时间也越来越多,所以你们「扁平党」不行。这时候「扁平」阵营也找到了反驳的论点,他们说你看你页面足够简洁了,但是页面层级就很深啊,交互成本这么高,每一次都伴随流失,可用性这么差,你们还有理了?所以「简洁党」你们才不行。中国的互联网产品,很难做到既简洁又扁平,这个问题的根源在于永远有那么多信息需要呈现,永远有那么多功能需要添加,这个是中国的激烈市场竞争导致的,并不是说中国的产品就不如国外的好(我的哥哥之前在 Facebook 现在 Airbnb 工作,他经常感叹道国外的互联网产品到中国来真的都得死…)我想要讨论的是,面对中国现在互联网产品市场现状, 如果一款产品非要你站队上面两派阵营,你会选哪一派?我现在的选择是「扁平党」,因为用户面临一款眼花缭乱的 app,如果是经常使用,缺功能布局信息架构很少改动的前提下,早晚也会习惯和适应的,但是如果一些核心的东西不能第一时间暴露在用户眼中,很有可能用户就不知道你有这种功能。这个就是为什么我们设计经常会说这个产品经理傻逼吧,怎么什么东西都想展现出来,这一堆东西找个入口集合收起来页面多干净多清爽多好看。我早年间也是和诸位一样的观点,但是现在我越来越觉得,界面清爽了,你的大功能 feature 因为设计隐藏没有被发现,不是设计开发测试都白做了么,说好的 ROI 在哪里?我们大家都是互联网从业者,不管看到这篇文章的你是一位设计、产品、还是开发、测试、运营人员,我们都明白用户体验这个词是由 N多维度综合而成的一个过程性评价,它和方方面面都有关系。那既然是这么专业且牵连甚广的一个名词,我们真的就没有办法去量化评价它了吗?永远不要忘记,用户体验是个过程,而我们每个人也都是用户本身。在这里我提供一种普通用户维度的比较好用的用户体验评估方法是「穷举分析用户行为路径」。比如你是一款外卖产品的设计师,那么用户在不同产品模块下订一个外卖的流程路径大概有多少种,都穷举出来。比如你是一款在线演唱类的产品设计师,那么用户在产品中完成一首歌需要的用户路径到底有多少条,穷举所有路径之后一一优化,让路径变得更加扁平,或许是一个最「笨」但是有效的方案,怎么优化呢?用淘宝消息页举个例子:淘宝消息页上面有「交易物流」、「通知」、「互动」三个 tab,这时候我们假设一个用户三个按钮下面都有消息,用户想要看完这三个消息大概需要几次交互?答案是至少6次:「点击第一个进去 – 返回 – 点击第二个进去 – 返回 – 点击第三个进去 – 返回」,这样的交互显得呆板且冗长,淘宝团队巧妙的把三个内页集合成一个页面的三个 tab 形式,大大缩短的交互成本,这就是所谓的「把用户路径变得更扁平」:大家在使用很多产品的过程中,多多留心就会发现原来细节里面总有魔鬼。欢迎关注作者的微信公众号:「SeanyDesign」
2022年01月26日
59 阅读
0 评论
0 点赞
2022-01-25
使用docker-compose部署前端应用
公司测试服务器都使用docker compose 进行应用部署,之前没接触过,但是有不少项目在使用该方式,对相关的部署机制及命令做了简单了解后,开始尝试将近期开发的一个前端应用部署到测试服务器上部署目录:/root/zhuzl/monthly-report-ui/,该目录下有两个目录:一个 dist 为打包后的前端工程文件;一个 nginx为部署相关的目录。将打包后的文件上传到dist目录。在 nginx 目录添加如下文件:nginx.confuser nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #underscores_in_headers on; server { # listen 443 ssl; listen 80; server_name localhost; # ssl_certificate /usr/local/nginx/conf/server.crt; # ssl_certificate_key /usr/local/nginx/conf/server.key; root /usr/share/nginx/html; location /api/ { proxy_pass http://xxx/api/; proxy_redirect off; proxy_ignore_client_abort on; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; proxy_pass_request_headers on; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }monthly-report-ui-docker-compose.ymlversion: '3' services: monthly-report-ui: #build: # context: . # dockerfile: Dockerfile image: nginx #image: rookiezoe/nginx #image: crunchgeek/nginx-pagespeed volumes: #- ./server.key:/usr/local/nginx/conf/server.key #- ./server.crt:/usr/local/nginx/conf/server.crt - ./nginx.conf:/etc/nginx/nginx.conf - ../dist:/usr/share/nginx/html #- ../helper:/usr/share/nginx/html/helper #- ../api-doc:/usr/share/nginx/html/api-doc ports: - "40001:80" #links: # - hydra #depends_on: # - hydra #environment: # - CONSOLE_VERSION=1.2 command: /bin/bash -c "exec nginx -g 'daemon off;'" networks: default: external: name: dev_oauth 安装以上方式准备好后,进入 nginx 目录,使用如下命令启动或停止应用:# 停止服务 docker-compose -f monthly-report-ui-docker-compose.yml down # 启动服务 docker-compose -f monthly-report-ui-docker-compose.yml up &服务启动后,即可使用http://<SERVER-IP>:40001访问应用本示例配置文件信息:monthly-report-ui.zip 以下内容已加密,请输入密码查看:
2022年01月25日
58 阅读
0 评论
0 点赞
2022-01-24
此内容被密码保护
加密文章,请前往内页查看详情
2022年01月24日
2 阅读
0 评论
0 点赞
2022-01-24
此内容被密码保护
加密文章,请前往内页查看详情
2022年01月24日
1 阅读
0 评论
0 点赞
2022-01-21
自动化项目部署系列:③部署宝塔面板
宝塔面板是一款服务器管理软件,支持windows和linux系统,可以通过Web端轻松管理服务器,提升运维效率。例如:创建管理网站、FTP、数据库,拥有可视化文件管理器,可视化软件管理器,可视化CPU、内存、流量监控图表,计划任务等功能。宝塔官网: https://www.bt.cn/选择使用宝塔,主要是为了更方便的在线管理服务器资源。官方有提供 Docker 版本:https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=79499。但为了更好的应用于服务器管理,我将 Docker 直接安装于宿主机上。安装步骤创建宝塔根目录 /wldata/btroot 并为宝塔应用目录 /www 创建软连接[root@VM-16-6-centos wldata]# mkdir /wldata/btroot [root@VM-16-6-centos wldata]# ln -s /wldata/btroot /www [root@VM-16-6-centos wldata]#开始安装根据官网:https://www.bt.cn/bbs/thread-19376-1-1.html 使用如下命令进行安装yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh安装过程记录如下:[root@VM-16-6-centos wldata]# yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile docker-ce-stable | 3.5 kB 00:00:00 epel | 4.7 kB 00:00:00 extras | 2.9 kB 00:00:00 os | 3.6 kB 00:00:00 updates | 2.9 kB 00:00:00 Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version Nothing to do --2022-01-21 16:16:44-- http://download.bt.cn/install/install_6.0.sh Resolving download.bt.cn (download.bt.cn)... 116.10.184.143, 240e:a5:4200:89::143 Connecting to download.bt.cn (download.bt.cn)|116.10.184.143|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 26258 (26K) [application/octet-stream] Saving to: ‘install.sh’ 100%[========================================================================================================>] 26,258 --.-K/s in 0.03s 2022-01-21 16:16:44 (765 KB/s) - ‘install.sh’ saved [26258/26258] install.sh: line 23: [: : integer expression expected +---------------------------------------------------------------------- | Bt-WebPanel FOR CentOS/Ubuntu/Debian +---------------------------------------------------------------------- | Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved. +---------------------------------------------------------------------- | The WebPanel URL will be http://SERVER_IP:8888 when installed. +---------------------------------------------------------------------- Do you want to install Bt-Panel to the /www directory now?(y/n): y --------------------------------------------- Selected download node... Download node: http://dg2.bt.cn --------------------------------------------- Synchronizing system time... Fri Jan 21 16:16:52 CST 2022 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile docker-ce-stable | 3.5 kB 00:00:00 epel | 4.7 kB 00:00:00 extras | 2.9 kB 00:00:00 os | 3.6 kB 00:00:00 updates | 2.9 kB 00:00:00 Package ntp-4.2.6p5-29.el7.centos.2.x86_64 already installed and latest version Nothing to do 21 Jan 16:16:52 ntpdate[28087]: the NTP socket is in use, exiting setenforce: SELinux is disabled Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version Package 2:tar-1.26-35.el7.x86_64 already installed and latest version Package gcc-4.8.5-44.el7.x86_64 already installed and latest version Package 1:make-3.82-24.el7.x86_64 already installed and latest version Package zip-3.0-11.el7.x86_64 already installed and latest version Package gcc-4.8.5-44.el7.x86_64 already installed and latest version Package libxml2-2.9.1-6.el7_9.6.x86_64 already installed and latest version Package zlib-1.2.7-19.el7_9.x86_64 already installed and latest version Package zlib-devel-1.2.7-19.el7_9.x86_64 already installed and latest version Package libwebp-0.3.0-10.el7_9.x86_64 already installed and latest version Package freetype-2.8-14.el7_9.1.x86_64 already installed and latest version Package lsof-4.87-6.el7.x86_64 already installed and latest version Package pcre-8.32-17.el7.x86_64 already installed and latest version Package pcre-devel-8.32-17.el7.x86_64 already installed and latest version No package vixie-cron available. Package crontabs-1.11-6.20121102git.el7.noarch already installed and latest version Package xz-devel-5.2.2-1.el7.x86_64 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package bzip2-devel.x86_64 0:1.0.6-13.el7 will be installed ---> Package c-ares.x86_64 0:1.10.0-3.el7 will be installed ---> Package freetype-devel.x86_64 0:2.8-14.el7_9.1 will be installed ---> Package gdbm-devel.x86_64 0:1.10-8.el7 will be installed ---> Package icu.x86_64 0:50.2-4.el7_7 will be installed ---> Package libcurl-devel.x86_64 0:7.29.0-59.el7_9.1 will be installed epel/7/x86_64/filelists_db | 12 MB 00:00:01 os/7/x86_64/filelists_db | 7.2 MB 00:00:00 updates/7/x86_64/filelists_db | 7.2 MB 00:00:00 ---> Package libdb4-devel.x86_64 0:4.8.30-13.el7 will be installed --> Processing Dependency: libdb4(x86-64) = 4.8.30-13.el7 for package: libdb4-devel-4.8.30-13.el7.x86_64 ---> Package libffi-devel.x86_64 0:3.0.13-19.el7 will be installed ---> Package libicu-devel.x86_64 0:50.2-4.el7_7 will be installed ---> Package libjpeg-turbo-devel.x86_64 0:1.2.90-8.el7 will be installed ---> Package libpcap-devel.x86_64 14:1.5.3-12.el7 will be installed ---> Package libpng-devel.x86_64 2:1.5.13-8.el7 will be installed ---> Package libwebp-devel.x86_64 0:0.3.0-10.el7_9 will be installed ---> Package libxml2-devel.x86_64 0:2.9.1-6.el7_9.6 will be installed ---> Package libxslt.x86_64 0:1.1.28-6.el7 will be installed ---> Package libxslt-devel.x86_64 0:1.1.28-6.el7 will be installed --> Processing Dependency: libgcrypt-devel for package: libxslt-devel-1.1.28-6.el7.x86_64 ---> Package libxslt-python.x86_64 0:1.1.28-6.el7 will be installed ---> Package ncurses-devel.x86_64 0:5.9-14.20130511.el7_4 will be installed ---> Package openssl.x86_64 1:1.0.2k-22.el7_9 will be updated ---> Package openssl.x86_64 1:1.0.2k-24.el7_9 will be an update --> Processing Dependency: openssl-libs(x86-64) = 1:1.0.2k-24.el7_9 for package: 1:openssl-1.0.2k-24.el7_9.x86_64 ---> Package openssl-devel.x86_64 1:1.0.2k-22.el7_9 will be updated ---> Package openssl-devel.x86_64 1:1.0.2k-24.el7_9 will be an update ---> Package readline-devel.x86_64 0:6.2-11.el7 will be installed ---> Package sqlite-devel.x86_64 0:3.7.17-8.el7_7.1 will be installed ---> Package tk-devel.x86_64 1:8.5.13-6.el7 will be installed --> Processing Dependency: tcl-devel = 1:8.5.13 for package: 1:tk-devel-8.5.13-6.el7.x86_64 --> Processing Dependency: libXft-devel for package: 1:tk-devel-8.5.13-6.el7.x86_64 --> Processing Dependency: libX11-devel for package: 1:tk-devel-8.5.13-6.el7.x86_64 ---> Package unzip.x86_64 0:6.0-22.el7_9 will be updated ---> Package unzip.x86_64 0:6.0-24.el7_9 will be an update --> Running transaction check ---> Package libX11-devel.x86_64 0:1.6.7-4.el7_9 will be installed --> Processing Dependency: pkgconfig(xcb) >= 1.11.1 for package: libX11-devel-1.6.7-4.el7_9.x86_64 --> Processing Dependency: pkgconfig(xproto) for package: libX11-devel-1.6.7-4.el7_9.x86_64 --> Processing Dependency: pkgconfig(xcb) for package: libX11-devel-1.6.7-4.el7_9.x86_64 --> Processing Dependency: pkgconfig(kbproto) for package: libX11-devel-1.6.7-4.el7_9.x86_64 ---> Package libXft-devel.x86_64 0:2.3.2-2.el7 will be installed --> Processing Dependency: pkgconfig(xrender) for package: libXft-devel-2.3.2-2.el7.x86_64 --> Processing Dependency: pkgconfig(fontconfig) for package: libXft-devel-2.3.2-2.el7.x86_64 ---> Package libdb4.x86_64 0:4.8.30-13.el7 will be installed ---> Package libgcrypt-devel.x86_64 0:1.5.3-14.el7 will be installed --> Processing Dependency: libgpg-error-devel for package: libgcrypt-devel-1.5.3-14.el7.x86_64 ---> Package openssl-libs.x86_64 1:1.0.2k-22.el7_9 will be updated ---> Package openssl-libs.x86_64 1:1.0.2k-24.el7_9 will be an update ---> Package tcl-devel.x86_64 1:8.5.13-8.el7 will be installed --> Running transaction check ---> Package fontconfig-devel.x86_64 0:2.13.0-4.3.el7 will be installed --> Processing Dependency: pkgconfig(uuid) for package: fontconfig-devel-2.13.0-4.3.el7.x86_64 --> Processing Dependency: pkgconfig(expat) for package: fontconfig-devel-2.13.0-4.3.el7.x86_64 ---> Package libXrender-devel.x86_64 0:0.9.10-1.el7 will be installed ---> Package libgpg-error-devel.x86_64 0:1.12-3.el7 will be installed ---> Package libxcb-devel.x86_64 0:1.13-1.el7 will be installed --> Processing Dependency: pkgconfig(xau) >= 0.99.2 for package: libxcb-devel-1.13-1.el7.x86_64 ---> Package xorg-x11-proto-devel.noarch 0:2018.4-1.el7 will be installed --> Running transaction check ---> Package expat-devel.x86_64 0:2.1.0-12.el7 will be installed ---> Package libXau-devel.x86_64 0:1.0.8-2.1.el7 will be installed ---> Package libuuid-devel.x86_64 0:2.23.2-65.el7_9.1 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================== Package Arch Version Repository Size ================================================================================================================================================== Installing: bzip2-devel x86_64 1.0.6-13.el7 os 218 k c-ares x86_64 1.10.0-3.el7 os 78 k freetype-devel x86_64 2.8-14.el7_9.1 updates 447 k gdbm-devel x86_64 1.10-8.el7 os 47 k icu x86_64 50.2-4.el7_7 os 187 k libcurl-devel x86_64 7.29.0-59.el7_9.1 updates 303 k libdb4-devel x86_64 4.8.30-13.el7 epel 32 k libffi-devel x86_64 3.0.13-19.el7 os 23 k libicu-devel x86_64 50.2-4.el7_7 os 703 k libjpeg-turbo-devel x86_64 1.2.90-8.el7 os 99 k libpcap-devel x86_64 14:1.5.3-12.el7 os 118 k libpng-devel x86_64 2:1.5.13-8.el7 os 122 k libwebp-devel x86_64 0.3.0-10.el7_9 updates 23 k libxml2-devel x86_64 2.9.1-6.el7_9.6 updates 1.1 M libxslt x86_64 1.1.28-6.el7 os 242 k libxslt-devel x86_64 1.1.28-6.el7 os 309 k libxslt-python x86_64 1.1.28-6.el7 os 59 k ncurses-devel x86_64 5.9-14.20130511.el7_4 os 712 k readline-devel x86_64 6.2-11.el7 os 139 k sqlite-devel x86_64 3.7.17-8.el7_7.1 os 104 k tk-devel x86_64 1:8.5.13-6.el7 os 488 k Updating: openssl x86_64 1:1.0.2k-24.el7_9 updates 494 k openssl-devel x86_64 1:1.0.2k-24.el7_9 updates 1.5 M unzip x86_64 6.0-24.el7_9 updates 172 k Installing for dependencies: expat-devel x86_64 2.1.0-12.el7 os 57 k fontconfig-devel x86_64 2.13.0-4.3.el7 os 138 k libX11-devel x86_64 1.6.7-4.el7_9 updates 981 k libXau-devel x86_64 1.0.8-2.1.el7 os 14 k libXft-devel x86_64 2.3.2-2.el7 os 19 k libXrender-devel x86_64 0.9.10-1.el7 os 17 k libdb4 x86_64 4.8.30-13.el7 epel 607 k libgcrypt-devel x86_64 1.5.3-14.el7 os 129 k libgpg-error-devel x86_64 1.12-3.el7 os 16 k libuuid-devel x86_64 2.23.2-65.el7_9.1 updates 93 k libxcb-devel x86_64 1.13-1.el7 os 1.1 M tcl-devel x86_64 1:8.5.13-8.el7 os 165 k xorg-x11-proto-devel noarch 2018.4-1.el7 os 280 k Updating for dependencies: openssl-libs x86_64 1:1.0.2k-24.el7_9 updates 1.2 M Transaction Summary ================================================================================================================================================== Install 21 Packages (+13 Dependent packages) Upgrade 3 Packages (+ 1 Dependent package) Total download size: 12 M Downloading packages: No Presto metadata available for updates (1/38): c-ares-1.10.0-3.el7.x86_64.rpm | 78 kB 00:00:00 (2/38): bzip2-devel-1.0.6-13.el7.x86_64.rpm | 218 kB 00:00:00 (3/38): expat-devel-2.1.0-12.el7.x86_64.rpm | 57 kB 00:00:00 (4/38): gdbm-devel-1.10-8.el7.x86_64.rpm | 47 kB 00:00:00 (5/38): fontconfig-devel-2.13.0-4.3.el7.x86_64.rpm | 138 kB 00:00:00 (6/38): libXau-devel-1.0.8-2.1.el7.x86_64.rpm | 14 kB 00:00:00 (7/38): libXft-devel-2.3.2-2.el7.x86_64.rpm | 19 kB 00:00:00 (8/38): icu-50.2-4.el7_7.x86_64.rpm | 187 kB 00:00:00 (9/38): freetype-devel-2.8-14.el7_9.1.x86_64.rpm | 447 kB 00:00:00 (10/38): libXrender-devel-0.9.10-1.el7.x86_64.rpm | 17 kB 00:00:00 (11/38): libffi-devel-3.0.13-19.el7.x86_64.rpm | 23 kB 00:00:00 (12/38): libX11-devel-1.6.7-4.el7_9.x86_64.rpm | 981 kB 00:00:00 (13/38): libdb4-devel-4.8.30-13.el7.x86_64.rpm | 32 kB 00:00:00 (14/38): libgpg-error-devel-1.12-3.el7.x86_64.rpm | 16 kB 00:00:00 (15/38): libgcrypt-devel-1.5.3-14.el7.x86_64.rpm | 129 kB 00:00:00 (16/38): libcurl-devel-7.29.0-59.el7_9.1.x86_64.rpm | 303 kB 00:00:00 (17/38): libdb4-4.8.30-13.el7.x86_64.rpm | 607 kB 00:00:00 (18/38): libjpeg-turbo-devel-1.2.90-8.el7.x86_64.rpm | 99 kB 00:00:00 (19/38): libicu-devel-50.2-4.el7_7.x86_64.rpm | 703 kB 00:00:00 (20/38): libpcap-devel-1.5.3-12.el7.x86_64.rpm | 118 kB 00:00:00 (21/38): libwebp-devel-0.3.0-10.el7_9.x86_64.rpm | 23 kB 00:00:00 (22/38): libpng-devel-1.5.13-8.el7.x86_64.rpm | 122 kB 00:00:00 (23/38): libuuid-devel-2.23.2-65.el7_9.1.x86_64.rpm | 93 kB 00:00:00 (24/38): libxslt-1.1.28-6.el7.x86_64.rpm | 242 kB 00:00:00 (25/38): libxcb-devel-1.13-1.el7.x86_64.rpm | 1.1 MB 00:00:00 (26/38): libxml2-devel-2.9.1-6.el7_9.6.x86_64.rpm | 1.1 MB 00:00:00 (27/38): libxslt-python-1.1.28-6.el7.x86_64.rpm | 59 kB 00:00:00 (28/38): libxslt-devel-1.1.28-6.el7.x86_64.rpm | 309 kB 00:00:00 (29/38): openssl-1.0.2k-24.el7_9.x86_64.rpm | 494 kB 00:00:00 (30/38): ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm | 712 kB 00:00:00 (31/38): openssl-devel-1.0.2k-24.el7_9.x86_64.rpm | 1.5 MB 00:00:00 (32/38): sqlite-devel-3.7.17-8.el7_7.1.x86_64.rpm | 104 kB 00:00:00 (33/38): readline-devel-6.2-11.el7.x86_64.rpm | 139 kB 00:00:00 (34/38): tcl-devel-8.5.13-8.el7.x86_64.rpm | 165 kB 00:00:00 (35/38): openssl-libs-1.0.2k-24.el7_9.x86_64.rpm | 1.2 MB 00:00:00 (36/38): unzip-6.0-24.el7_9.x86_64.rpm | 172 kB 00:00:00 (37/38): xorg-x11-proto-devel-2018.4-1.el7.noarch.rpm | 280 kB 00:00:00 (38/38): tk-devel-8.5.13-6.el7.x86_64.rpm | 488 kB 00:00:00 -------------------------------------------------------------------------------------------------------------------------------------------------- Total 4.3 MB/s | 12 MB 00:00:02 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : xorg-x11-proto-devel-2018.4-1.el7.noarch 1/42 Installing : libxslt-1.1.28-6.el7.x86_64 2/42 Updating : 1:openssl-libs-1.0.2k-24.el7_9.x86_64 3/42 Installing : libXau-devel-1.0.8-2.1.el7.x86_64 4/42 Installing : libxcb-devel-1.13-1.el7.x86_64 5/42 Installing : libX11-devel-1.6.7-4.el7_9.x86_64 6/42 Installing : libXrender-devel-0.9.10-1.el7.x86_64 7/42 Installing : 1:tcl-devel-8.5.13-8.el7.x86_64 8/42 Installing : libdb4-4.8.30-13.el7.x86_64 9/42 Installing : libgpg-error-devel-1.12-3.el7.x86_64 10/42 Installing : libgcrypt-devel-1.5.3-14.el7.x86_64 11/42 Installing : expat-devel-2.1.0-12.el7.x86_64 12/42 Installing : ncurses-devel-5.9-14.20130511.el7_4.x86_64 13/42 Installing : libuuid-devel-2.23.2-65.el7_9.1.x86_64 14/42 Installing : libxml2-devel-2.9.1-6.el7_9.6.x86_64 15/42 Installing : 2:libpng-devel-1.5.13-8.el7.x86_64 16/42 Installing : freetype-devel-2.8-14.el7_9.1.x86_64 17/42 Installing : fontconfig-devel-2.13.0-4.3.el7.x86_64 18/42 Installing : libXft-devel-2.3.2-2.el7.x86_64 19/42 Installing : 1:tk-devel-8.5.13-6.el7.x86_64 20/42 Installing : libxslt-devel-1.1.28-6.el7.x86_64 21/42 Installing : readline-devel-6.2-11.el7.x86_64 22/42 Installing : libdb4-devel-4.8.30-13.el7.x86_64 23/42 Updating : 1:openssl-devel-1.0.2k-24.el7_9.x86_64 24/42 Updating : 1:openssl-1.0.2k-24.el7_9.x86_64 25/42 Installing : libxslt-python-1.1.28-6.el7.x86_64 26/42 Installing : sqlite-devel-3.7.17-8.el7_7.1.x86_64 27/42 Installing : libcurl-devel-7.29.0-59.el7_9.1.x86_64 28/42 Installing : icu-50.2-4.el7_7.x86_64 29/42 Installing : libwebp-devel-0.3.0-10.el7_9.x86_64 30/42 Installing : c-ares-1.10.0-3.el7.x86_64 31/42 Installing : bzip2-devel-1.0.6-13.el7.x86_64 32/42 Installing : gdbm-devel-1.10-8.el7.x86_64 33/42 Installing : 14:libpcap-devel-1.5.3-12.el7.x86_64 34/42 Updating : unzip-6.0-24.el7_9.x86_64 35/42 Installing : libffi-devel-3.0.13-19.el7.x86_64 36/42 Installing : libicu-devel-50.2-4.el7_7.x86_64 37/42 Installing : libjpeg-turbo-devel-1.2.90-8.el7.x86_64 38/42 Cleanup : 1:openssl-devel-1.0.2k-22.el7_9.x86_64 39/42 Cleanup : 1:openssl-1.0.2k-22.el7_9.x86_64 40/42 Cleanup : 1:openssl-libs-1.0.2k-22.el7_9.x86_64 41/42 Cleanup : unzip-6.0-22.el7_9.x86_64 42/42 Verifying : libXft-devel-2.3.2-2.el7.x86_64 1/42 Verifying : 2:libpng-devel-1.5.13-8.el7.x86_64 2/42 Verifying : libxslt-python-1.1.28-6.el7.x86_64 3/42 Verifying : libxml2-devel-2.9.1-6.el7_9.6.x86_64 4/42 Verifying : libjpeg-turbo-devel-1.2.90-8.el7.x86_64 5/42 Verifying : 1:openssl-libs-1.0.2k-24.el7_9.x86_64 6/42 Verifying : libicu-devel-50.2-4.el7_7.x86_64 7/42 Verifying : libffi-devel-3.0.13-19.el7.x86_64 8/42 Verifying : unzip-6.0-24.el7_9.x86_64 9/42 Verifying : libuuid-devel-2.23.2-65.el7_9.1.x86_64 10/42 Verifying : libdb4-devel-4.8.30-13.el7.x86_64 11/42 Verifying : 14:libpcap-devel-1.5.3-12.el7.x86_64 12/42 Verifying : gdbm-devel-1.10-8.el7.x86_64 13/42 Verifying : bzip2-devel-1.0.6-13.el7.x86_64 14/42 Verifying : fontconfig-devel-2.13.0-4.3.el7.x86_64 15/42 Verifying : 1:openssl-devel-1.0.2k-24.el7_9.x86_64 16/42 Verifying : libxslt-devel-1.1.28-6.el7.x86_64 17/42 Verifying : ncurses-devel-5.9-14.20130511.el7_4.x86_64 18/42 Verifying : readline-devel-6.2-11.el7.x86_64 19/42 Verifying : libX11-devel-1.6.7-4.el7_9.x86_64 20/42 Verifying : 1:tk-devel-8.5.13-6.el7.x86_64 21/42 Verifying : c-ares-1.10.0-3.el7.x86_64 22/42 Verifying : 1:openssl-1.0.2k-24.el7_9.x86_64 23/42 Verifying : xorg-x11-proto-devel-2018.4-1.el7.noarch 24/42 Verifying : libXrender-devel-0.9.10-1.el7.x86_64 25/42 Verifying : libwebp-devel-0.3.0-10.el7_9.x86_64 26/42 Verifying : icu-50.2-4.el7_7.x86_64 27/42 Verifying : freetype-devel-2.8-14.el7_9.1.x86_64 28/42 Verifying : libgcrypt-devel-1.5.3-14.el7.x86_64 29/42 Verifying : libcurl-devel-7.29.0-59.el7_9.1.x86_64 30/42 Verifying : expat-devel-2.1.0-12.el7.x86_64 31/42 Verifying : libxcb-devel-1.13-1.el7.x86_64 32/42 Verifying : sqlite-devel-3.7.17-8.el7_7.1.x86_64 33/42 Verifying : libxslt-1.1.28-6.el7.x86_64 34/42 Verifying : libgpg-error-devel-1.12-3.el7.x86_64 35/42 Verifying : libdb4-4.8.30-13.el7.x86_64 36/42 Verifying : 1:tcl-devel-8.5.13-8.el7.x86_64 37/42 Verifying : libXau-devel-1.0.8-2.1.el7.x86_64 38/42 Verifying : 1:openssl-1.0.2k-22.el7_9.x86_64 39/42 Verifying : 1:openssl-devel-1.0.2k-22.el7_9.x86_64 40/42 Verifying : 1:openssl-libs-1.0.2k-22.el7_9.x86_64 41/42 Verifying : unzip-6.0-22.el7_9.x86_64 42/42 Installed: bzip2-devel.x86_64 0:1.0.6-13.el7 c-ares.x86_64 0:1.10.0-3.el7 freetype-devel.x86_64 0:2.8-14.el7_9.1 gdbm-devel.x86_64 0:1.10-8.el7 icu.x86_64 0:50.2-4.el7_7 libcurl-devel.x86_64 0:7.29.0-59.el7_9.1 libdb4-devel.x86_64 0:4.8.30-13.el7 libffi-devel.x86_64 0:3.0.13-19.el7 libicu-devel.x86_64 0:50.2-4.el7_7 libjpeg-turbo-devel.x86_64 0:1.2.90-8.el7 libpcap-devel.x86_64 14:1.5.3-12.el7 libpng-devel.x86_64 2:1.5.13-8.el7 libwebp-devel.x86_64 0:0.3.0-10.el7_9 libxml2-devel.x86_64 0:2.9.1-6.el7_9.6 libxslt.x86_64 0:1.1.28-6.el7 libxslt-devel.x86_64 0:1.1.28-6.el7 libxslt-python.x86_64 0:1.1.28-6.el7 ncurses-devel.x86_64 0:5.9-14.20130511.el7_4 readline-devel.x86_64 0:6.2-11.el7 sqlite-devel.x86_64 0:3.7.17-8.el7_7.1 tk-devel.x86_64 1:8.5.13-6.el7 Dependency Installed: expat-devel.x86_64 0:2.1.0-12.el7 fontconfig-devel.x86_64 0:2.13.0-4.3.el7 libX11-devel.x86_64 0:1.6.7-4.el7_9 libXau-devel.x86_64 0:1.0.8-2.1.el7 libXft-devel.x86_64 0:2.3.2-2.el7 libXrender-devel.x86_64 0:0.9.10-1.el7 libdb4.x86_64 0:4.8.30-13.el7 libgcrypt-devel.x86_64 0:1.5.3-14.el7 libgpg-error-devel.x86_64 0:1.12-3.el7 libuuid-devel.x86_64 0:2.23.2-65.el7_9.1 libxcb-devel.x86_64 0:1.13-1.el7 tcl-devel.x86_64 1:8.5.13-8.el7 xorg-x11-proto-devel.noarch 0:2018.4-1.el7 Updated: openssl.x86_64 1:1.0.2k-24.el7_9 openssl-devel.x86_64 1:1.0.2k-24.el7_9 unzip.x86_64 0:6.0-24.el7_9 Dependency Updated: openssl-libs.x86_64 1:1.0.2k-24.el7_9 Complete! Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Package libxslt-1.1.28-6.el7.x86_64 already installed and latest version Package libxslt-devel-1.1.28-6.el7.x86_64 already installed and latest version Package libxslt-python-1.1.28-6.el7.x86_64 already installed and latest version Nothing to do Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Package libjpeg-turbo-devel-1.2.90-8.el7.x86_64 already installed and latest version Nothing to do Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile No package vixie-cron available. Error: Nothing to do Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Package libdb4-devel-4.8.30-13.el7.x86_64 already installed and latest version Nothing to do Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package epel-release.noarch 0:7-14 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================== Package Arch Version Repository Size ================================================================================================================================================== Installing: epel-release noarch 7-14 epel 15 k Transaction Summary ================================================================================================================================================== Install 1 Package Total download size: 15 k Installed size: 25 k Downloading packages: epel-release-7-14.noarch.rpm | 15 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : epel-release-7-14.noarch 1/1 Verifying : epel-release-7-14.noarch 1/1 Installed: epel-release.noarch 0:7-14 Complete! https://mirrors.tencent.com/pypi/simple cat: /etc/.productinfo: No such file or directory OS: el - 7 --2022-01-21 16:17:30-- http://dg2.bt.cn/install/pyenv/pyenv-el7-x64.tar.gz Resolving dg2.bt.cn (dg2.bt.cn)... 116.10.184.219, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|116.10.184.219|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 73258911 (70M) [application/octet-stream] Saving to: ‘/www/pyenv.tar.gz’ 100%[========================================================================================================>] 73,258,911 10.0MB/s in 7.2s 2022-01-21 16:17:37 (9.68 MB/s) - ‘/www/pyenv.tar.gz’ saved [73258911/73258911] Install python env... Python 3.7.9 --2022-01-21 16:17:40-- http://dg2.bt.cn/install/src/bt6.init Resolving dg2.bt.cn (dg2.bt.cn)... 116.10.184.219, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|116.10.184.219|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 9873 (9.6K) [application/octet-stream] Saving to: ‘/etc/init.d/bt’ 100%[========================================================================================================>] 9,873 --.-K/s in 0s 2022-01-21 16:17:40 (229 MB/s) - ‘/etc/init.d/bt’ saved [9873/9873] --2022-01-21 16:17:40-- http://dg2.bt.cn/install/public.sh Resolving dg2.bt.cn (dg2.bt.cn)... 42.157.129.47, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|42.157.129.47|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 4267 (4.2K) [application/octet-stream] Saving to: ‘/www/server/panel/install/public.sh’ 100%[========================================================================================================>] 4,267 --.-K/s in 0s 2022-01-21 16:17:40 (419 MB/s) - ‘/www/server/panel/install/public.sh’ saved [4267/4267] --2022-01-21 16:17:40-- http://dg2.bt.cn/install/src/panel6.zip Resolving dg2.bt.cn (dg2.bt.cn)... 42.157.129.47, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|42.157.129.47|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 9230063 (8.8M) [application/zip] Saving to: ‘panel.zip’ 100%[========================================================================================================>] 9,230,063 24.7MB/s in 0.4s 2022-01-21 16:17:40 (24.7 MB/s) - ‘panel.zip’ saved [9230063/9230063] --2022-01-21 16:17:40-- http://dg2.bt.cn/install/src/bt7.init Resolving dg2.bt.cn (dg2.bt.cn)... 42.157.129.47, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|42.157.129.47|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 10438 (10K) [application/octet-stream] Saving to: ‘/etc/init.d/bt’ 100%[========================================================================================================>] 10,438 --.-K/s in 0s 2022-01-21 16:17:41 (238 MB/s) - ‘/etc/init.d/bt’ saved [10438/10438] --2022-01-21 16:17:41-- http://dg2.bt.cn/install/src/bt7.init Resolving dg2.bt.cn (dg2.bt.cn)... 42.157.129.47, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|42.157.129.47|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 10438 (10K) [application/octet-stream] Saving to: ‘/www/server/panel/init.sh’ 100%[========================================================================================================>] 10,438 --.-K/s in 0.006s 2022-01-21 16:17:41 (1.68 MB/s) - ‘/www/server/panel/init.sh’ saved [10438/10438] --2022-01-21 16:17:41-- http://dg2.bt.cn/install/conf/softList.conf Resolving dg2.bt.cn (dg2.bt.cn)... 116.10.184.219, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|116.10.184.219|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3287 (3.2K) [application/octet-stream] Saving to: ‘/www/server/panel/data/softList.conf’ 100%[========================================================================================================>] 3,287 --.-K/s in 0s 2022-01-21 16:17:41 (348 MB/s) - ‘/www/server/panel/data/softList.conf’ saved [3287/3287] Starting Bt-Panel.... done Starting Bt-Tasks... done username: t1c2mbup Stopping Bt-Tasks... done Stopping Bt-Panel... done Starting Bt-Panel.... done Starting Bt-Tasks... done Loaded plugins: fastestmirror, langpacks Repository epel is listed more than once in the configuration Loading mirror speeds from cached hostfile Package firewalld-0.6.3-13.el7_9.noarch already installed and latest version Nothing to do Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service. Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service. success ================================================================== Congratulations! Installed successfully! ================================================================== 外网面板地址: http://110.40.150.131:8888/ac9859fb 内网面板地址: http://172.17.16.6:8888/ac9859fb username: t1c2mbup password: b6abed29 If you cannot access the panel, release the following panel port [8888] in the security group 若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口 ================================================================== Time consumed: 1 Minute! [root@VM-16-6-centos wldata]# 根据安装成功的登录信息登录宝塔面板并重置相关登录信息
2022年01月21日
79 阅读
0 评论
0 点赞
2022-01-21
自动化项目部署系列:②部署Docker
容器化部署技术在自动化部署过程中有着举足轻重的位置,本章将讲解docker的安装部署。安装过程主要参考 docker官网的文档:https://docs.docker.com/engine/install/centos/安装相关依赖sudo yum install -y yum-utils显示信息如下:[zhuzl@VM-16-6-centos /]$ sudo yum install -y yum-utils Loaded plugins: fastestmirror, langpacks Determining fastest mirrors epel | 4.7 kB 00:00:00 extras | 2.9 kB 00:00:00 os | 3.6 kB 00:00:00 updates | 2.9 kB 00:00:00 (1/3): epel/7/x86_64/updateinfo | 1.0 MB 00:00:00 (2/3): updates/7/x86_64/primary_db | 13 MB 00:00:00 (3/3): epel/7/x86_64/primary_db | 7.0 MB 00:00:01 Package yum-utils-1.1.31-54.el7_8.noarch already installed and latest version Nothing to do设置yum 仓库sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo显示显示如下:[zhuzl@VM-16-6-centos /]$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo Loaded plugins: fastestmirror, langpacks adding repo from: https://download.docker.com/linux/centos/docker-ce.repo grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo repo saved to /etc/yum.repos.d/docker-ce.repo 安装 Docker[zhuzl@VM-16-6-centos /]$ sudo yum install docker-ce docker-ce-cli containerd.io Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile docker-ce-stable | 3.5 kB 00:00:00 (1/2): docker-ce-stable/7/x86_64/primary_db | 70 kB 00:00:00 (2/2): docker-ce-stable/7/x86_64/updateinfo | 55 B 00:00:01 Resolving Dependencies --> Running transaction check ---> Package containerd.io.x86_64 0:1.4.12-3.1.el7 will be installed --> Processing Dependency: container-selinux >= 2:2.74 for package: containerd.io-1.4.12-3.1.el7.x86_64 ---> Package docker-ce.x86_64 3:20.10.12-3.el7 will be installed --> Processing Dependency: docker-ce-rootless-extras for package: 3:docker-ce-20.10.12-3.el7.x86_64 --> Processing Dependency: libcgroup for package: 3:docker-ce-20.10.12-3.el7.x86_64 ---> Package docker-ce-cli.x86_64 1:20.10.12-3.el7 will be installed --> Processing Dependency: docker-scan-plugin(x86-64) for package: 1:docker-ce-cli-20.10.12-3.el7.x86_64 --> Running transaction check ---> Package container-selinux.noarch 2:2.119.2-1.911c772.el7_8 will be installed --> Processing Dependency: policycoreutils-python for package: 2:container-selinux-2.119.2-1.911c772.el7_8.noarch ---> Package docker-ce-rootless-extras.x86_64 0:20.10.12-3.el7 will be installed --> Processing Dependency: fuse-overlayfs >= 0.7 for package: docker-ce-rootless-extras-20.10.12-3.el7.x86_64 --> Processing Dependency: slirp4netns >= 0.4 for package: docker-ce-rootless-extras-20.10.12-3.el7.x86_64 ---> Package docker-scan-plugin.x86_64 0:0.12.0-3.el7 will be installed ---> Package libcgroup.x86_64 0:0.41-21.el7 will be installed --> Running transaction check ---> Package fuse-overlayfs.x86_64 0:0.7.2-6.el7_8 will be installed --> Processing Dependency: libfuse3.so.3(FUSE_3.2)(64bit) for package: fuse-overlayfs-0.7.2-6.el7_8.x86_64 --> Processing Dependency: libfuse3.so.3(FUSE_3.0)(64bit) for package: fuse-overlayfs-0.7.2-6.el7_8.x86_64 --> Processing Dependency: libfuse3.so.3()(64bit) for package: fuse-overlayfs-0.7.2-6.el7_8.x86_64 ---> Package policycoreutils-python.x86_64 0:2.5-34.el7 will be installed --> Processing Dependency: setools-libs >= 3.3.8-4 for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: libsemanage-python >= 2.5-14 for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: audit-libs-python >= 2.1.3-4 for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: python-IPy for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: libqpol.so.1(VERS_1.4)(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: libqpol.so.1(VERS_1.2)(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: libapol.so.4(VERS_4.0)(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: checkpolicy for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: libqpol.so.1()(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: libapol.so.4()(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64 ---> Package slirp4netns.x86_64 0:0.4.3-4.el7_8 will be installed --> Running transaction check ---> Package audit-libs-python.x86_64 0:2.8.5-4.el7 will be installed ---> Package checkpolicy.x86_64 0:2.5-8.el7 will be installed ---> Package fuse3-libs.x86_64 0:3.6.1-4.el7 will be installed ---> Package libsemanage-python.x86_64 0:2.5-14.el7 will be installed ---> Package python-IPy.noarch 0:0.75-6.el7 will be installed ---> Package setools-libs.x86_64 0:3.3.8-4.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================== Package Arch Version Repository Size ================================================================================================================================================== Installing: containerd.io x86_64 1.4.12-3.1.el7 docker-ce-stable 28 M docker-ce x86_64 3:20.10.12-3.el7 docker-ce-stable 23 M docker-ce-cli x86_64 1:20.10.12-3.el7 docker-ce-stable 30 M Installing for dependencies: audit-libs-python x86_64 2.8.5-4.el7 os 76 k checkpolicy x86_64 2.5-8.el7 os 295 k container-selinux noarch 2:2.119.2-1.911c772.el7_8 extras 40 k docker-ce-rootless-extras x86_64 20.10.12-3.el7 docker-ce-stable 8.0 M docker-scan-plugin x86_64 0.12.0-3.el7 docker-ce-stable 3.7 M fuse-overlayfs x86_64 0.7.2-6.el7_8 extras 54 k fuse3-libs x86_64 3.6.1-4.el7 extras 82 k libcgroup x86_64 0.41-21.el7 os 66 k libsemanage-python x86_64 2.5-14.el7 os 113 k policycoreutils-python x86_64 2.5-34.el7 os 457 k python-IPy noarch 0.75-6.el7 os 32 k setools-libs x86_64 3.3.8-4.el7 os 620 k slirp4netns x86_64 0.4.3-4.el7_8 extras 81 k Transaction Summary ================================================================================================================================================== Install 3 Packages (+13 Dependent packages) Total download size: 95 M Installed size: 387 M Is this ok [y/d/N]: y Downloading packages: (1/16): container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm | 40 kB 00:00:00 (2/16): audit-libs-python-2.8.5-4.el7.x86_64.rpm | 76 kB 00:00:00 (3/16): checkpolicy-2.5-8.el7.x86_64.rpm | 295 kB 00:00:00 warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-ce-20.10.12-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY Public key for docker-ce-20.10.12-3.el7.x86_64.rpm is not installed (4/16): docker-ce-20.10.12-3.el7.x86_64.rpm | 23 MB 00:03:30 (5/16): containerd.io-1.4.12-3.1.el7.x86_64.rpm | 28 MB 00:11:41 (6/16): docker-ce-rootless-extras-20.10.12-3.el7.x86_64.rpm | 8.0 MB 00:02:47 (7/16): fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm | 54 kB 00:00:00 (8/16): fuse3-libs-3.6.1-4.el7.x86_64.rpm | 82 kB 00:00:00 (9/16): libcgroup-0.41-21.el7.x86_64.rpm | 66 kB 00:00:00 (10/16): libsemanage-python-2.5-14.el7.x86_64.rpm | 113 kB 00:00:00 (11/16): python-IPy-0.75-6.el7.noarch.rpm | 32 kB 00:00:00 (12/16): policycoreutils-python-2.5-34.el7.x86_64.rpm | 457 kB 00:00:00 (13/16): slirp4netns-0.4.3-4.el7_8.x86_64.rpm | 81 kB 00:00:00 (14/16): setools-libs-3.3.8-4.el7.x86_64.rpm | 620 kB 00:00:00 (15/16): docker-scan-plugin-0.12.0-3.el7.x86_64.rpm | 3.7 MB 00:00:48 (16/16): docker-ce-cli-20.10.12-3.el7.x86_64.rpm | 30 MB 00:15:19 -------------------------------------------------------------------------------------------------------------------------------------------------- Total 86 kB/s | 95 MB 00:18:49 Retrieving key from https://download.docker.com/linux/centos/gpg Importing GPG key 0x621E9F35: Userid : "Docker Release (CE rpm) <docker@docker.com>" Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35 From : https://download.docker.com/linux/centos/gpg Is this ok [y/N]: y Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : docker-scan-plugin-0.12.0-3.el7.x86_64 1/16 Installing : 1:docker-ce-cli-20.10.12-3.el7.x86_64 2/16 Installing : libcgroup-0.41-21.el7.x86_64 3/16 Installing : setools-libs-3.3.8-4.el7.x86_64 4/16 Installing : audit-libs-python-2.8.5-4.el7.x86_64 5/16 Installing : python-IPy-0.75-6.el7.noarch 6/16 Installing : slirp4netns-0.4.3-4.el7_8.x86_64 7/16 Installing : libsemanage-python-2.5-14.el7.x86_64 8/16 Installing : fuse3-libs-3.6.1-4.el7.x86_64 9/16 Installing : fuse-overlayfs-0.7.2-6.el7_8.x86_64 10/16 Installing : checkpolicy-2.5-8.el7.x86_64 11/16 Installing : policycoreutils-python-2.5-34.el7.x86_64 12/16 Installing : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch 13/16 setsebool: SELinux is disabled. Installing : containerd.io-1.4.12-3.1.el7.x86_64 14/16 Installing : docker-ce-rootless-extras-20.10.12-3.el7.x86_64 15/16 Installing : 3:docker-ce-20.10.12-3.el7.x86_64 16/16 Verifying : checkpolicy-2.5-8.el7.x86_64 1/16 Verifying : fuse3-libs-3.6.1-4.el7.x86_64 2/16 Verifying : 1:docker-ce-cli-20.10.12-3.el7.x86_64 3/16 Verifying : fuse-overlayfs-0.7.2-6.el7_8.x86_64 4/16 Verifying : libsemanage-python-2.5-14.el7.x86_64 5/16 Verifying : docker-scan-plugin-0.12.0-3.el7.x86_64 6/16 Verifying : slirp4netns-0.4.3-4.el7_8.x86_64 7/16 Verifying : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch 8/16 Verifying : python-IPy-0.75-6.el7.noarch 9/16 Verifying : policycoreutils-python-2.5-34.el7.x86_64 10/16 Verifying : audit-libs-python-2.8.5-4.el7.x86_64 11/16 Verifying : docker-ce-rootless-extras-20.10.12-3.el7.x86_64 12/16 Verifying : containerd.io-1.4.12-3.1.el7.x86_64 13/16 Verifying : setools-libs-3.3.8-4.el7.x86_64 14/16 Verifying : 3:docker-ce-20.10.12-3.el7.x86_64 15/16 Verifying : libcgroup-0.41-21.el7.x86_64 16/16 Installed: containerd.io.x86_64 0:1.4.12-3.1.el7 docker-ce.x86_64 3:20.10.12-3.el7 docker-ce-cli.x86_64 1:20.10.12-3.el7 Dependency Installed: audit-libs-python.x86_64 0:2.8.5-4.el7 checkpolicy.x86_64 0:2.5-8.el7 container-selinux.noarch 2:2.119.2-1.911c772.el7_8 docker-ce-rootless-extras.x86_64 0:20.10.12-3.el7 docker-scan-plugin.x86_64 0:0.12.0-3.el7 fuse-overlayfs.x86_64 0:0.7.2-6.el7_8 fuse3-libs.x86_64 0:3.6.1-4.el7 libcgroup.x86_64 0:0.41-21.el7 libsemanage-python.x86_64 0:2.5-14.el7 policycoreutils-python.x86_64 0:2.5-34.el7 python-IPy.noarch 0:0.75-6.el7 setools-libs.x86_64 0:3.3.8-4.el7 slirp4netns.x86_64 0:0.4.3-4.el7_8 Complete! 启动 Docker 并配置自启动启动Dockersudo systemctl start docker设置开机自启动# 检查docker版本 [zhuzl@VM-16-6-centos wldata]$ docker -v Docker version 20.10.12, build e91ed57 # 查看docker已有镜像 [zhuzl@VM-16-6-centos wldata]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE # 设置docker开机启动 [zhuzl@VM-16-6-centos wldata]$ sudo systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. [zhuzl@VM-16-6-centos wldata]$ 一些配置使用阿里云配置镜像加速sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://9643wkwg.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker安装portainer链接地址:https://docs.portainer.io/v/ce-2.11/start/install/server/docker/linux安装命令# 创建portainer挂载镜像 sudo docker volume create portainer_data # 查看磁盘卷信息 sudo docker inspect portainer_data # docker方式运行portainer sudo docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.11.0可以使用nginx代理9000端口端外提供服务
2022年01月21日
73 阅读
0 评论
0 点赞
2022-01-21
自动化项目部署系列:①环境准备
以前的项目有基于 devops 的方式来实现项目的开发、测试、上线部署,零零散散在带团队的过程中也有过一些尝试,但是一直没时间系统性的实践过。本次新购一台云服务器,准备进行一次实践。服务器在腾讯云上买的4H8G5M的配置,在这一台上部署相关的环境可能会很吃力,不过咱们也就基于学习研究的目的,够用就行。一、解析泛域名到云服务器系统安装完毕,为便于后续对外提供服务,我们先解析一个泛域名到这台服务器上,我注册的域名都在DNSPOD上管理,所以就在DNSPOD上配置了:解析配置好后,*.test.wljy.xyz都将被解析到 110.40.150.131 这个IP.二、初始配置服务器添加普通权限用户此处添加 zhuzl 用户,并为该用户设置登录密码:[root@VM-16-6-centos ~]# useradd zhuzl [root@VM-16-6-centos ~]# passwd zhuzl Changing password for user zhuzl. New password: Retype new password: passwd: all authentication tokens updated successfully.将用户添加到soduers/etc/sudoers文件添加写权限[root@VM-16-6-centos ~]# chmod +w /etc/sudoers编辑 /etc/sudoers[root@VM-16-6-centos ~]# vi /etc/sudoers找到 root ALL=(ALL) ALL 并在其下一行添加如下信息:zhuzl ALL=(ALL) NOPASSWD: ALL调整后的效果截图:取消/etc/sudoers 的写权限[root@VM-16-6-centos ~]# chmod -w /etc/sudoers创建数据目录并授权[root@VM-16-6-centos /]# mkdir /wldata [root@VM-16-6-centos /]# chown -R zhuzl:zhuzl /wldata/ 切换为普通用户[root@VM-16-6-centos /]# su zhuzl使用普通用户执行后续的安装操作,相关操作见后续章节。
2022年01月21日
53 阅读
0 评论
0 点赞
1
...
4
5
6
...
8