1.那服务器端渲染到底有什么好处呢?
主要的原因时SPA(单页应用)不利于搜索引擎的SEO操作,Nuxt.js适合作新闻、博客、电影、咨询这样的需要搜索引擎提供流量的项目。如果你要作移动端的项目,就没必要使用这个框架了。
2.什么是SSR?
SPA虽然给服务器减轻了压力,但是也是有缺点的:
sentry是一个实时事件日志记录和汇集的平台。其专注于错误监控以及提取一切事后处理所需信息而不依赖于麻烦的用户反馈。它分为客户端和服务端,客户端(目前客户端有Python, PHP,C#, Ruby等多种语言)就嵌入在你的应用程序中间,程序出现异常就向服务端发送消息,服务端将消息记录到数据库中并提供一个web页方便查看。Sentry由python编写,源码开放,性能卓越,易于扩展,目前著名的用户有Disqus, Path, mozilla, Pinterest等。
1 | 1.docker-compose的使用非常类似于docker命令的使用,但是需要注意的是大部分的compose命令都需要到docker-compose.yml文件所在的目录下才能执行。 |
Docker在2016年很早的时候就明确了将会在企业级方面重点跟进。而在短短的一年时间之内推出的1.12和1.13的版本在功能上确实是很大的进步。而在2017年的3月1号之后,Docker的版本命名开始发生变化,同时将CE版本和EE版本进行分开了,EE是企业版,CE是社区版,如果直接使用
1 | yum install -y docker-engine 或者 |
我们采用的是安装Docker CE版:
1 | yum remove docker docker-common docker-selinux docker-engine |
1 | yum install -y yum-utils device-mapper-persistent-data lvm2 |
1 | yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
1 | yum-config-manager --enable docker-ce-edge |
1 | yum install makecache fast |
1 | yum -y install docker-ce |
1 | sudo systemctl start docker |
查看docker版本,docker至少是17.05.0以上的版本,如果我没有指定版本默认安装最新的则肯定满足条件
docker --version
1 | sudo yum install epel-releasesudo yum install -y python-pipsudo yum install docker-compose |
可以安装指定版本
1 | sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
因为sentry本身就是开源的,代码在github上,可以上git直接拉取
github地址:https://github.com/getsentry/onpremise
完成之后,执行如下命令:
1 |
|
发现build成功
进入sentry文件夹,将默认的config.example.yml和sentry.conf.example.py重命名为config.yml和sentry.conf.py。执行如下命令
1 |
|
执行如下命令生成秘钥
1 | docker-compose run --rm web config generate-secret-key |
将生成的秘钥添加到config.yml的system.secret-key字段上
执行如下命令开始服务迁移
1 | docker-compose run --rm web upgrade |
正常情况下是会出现输入账号密码的步骤的,如果不可以请详细查阅这个 https://github.com/getsentry/onpremise/issues/147
执行以下命令
1 | docker-compose run --rm web createuser |
1 | docker-compose up -d |
执行如下命令
1 | service docker status # 查看docker服务是否启动 |
打开浏览器输入ip:9000,如下图说明安装成功:
打开sentry/config.yml文件,编辑如下信息:
具体配置查看这里 https://docs.sentry.io/server/config/#mail
1 | mail.host: 'smtp.dc.17zuoye.net' |
1 | docker-compose build --pull --force-rm web |
可以看到邮箱信息已经修改掉了,下面我们发送一封测试邮件,点击下方的Test Settings
5.Sentry使用
在页面每次渲染完之后都会执行
1 | import React,{ useState,useEffect } from 'react'; |
在document监听click事件会有问题,所以sueEffect提供了清除回调
1 | import React , {useState,useEffect} from 'react'; |
控制useEffect的执行
1 | useEffect(()=>{},[]) |
自定义hook 胜于 HOC 高阶组件 更加清晰 便于阅读
Apple iOS 13之后,iPad iOS 13的Safari中的window.navigator.userAgent与MacOS相同。像这样:
1 | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15 |
1 | 所以不能用之前方式来判断 是否是 ipad 了 |
功能如下:
图1
图2
最开始的想法是 使用斜率 k=tanα=(y1-y2)/(x1-x2) 来时时的计算倾斜角来控制圆规的三部分运动;
可是后来我发现,我想多了:
机智的我想想到了一个极简的想法,不管他是曲线运动还是什么斜率,无非逃不出一个界定的范围,运动什么的都让代码自行事项吧。
这样就完成了图1和图2的需求
效果如下:图3
图3
效果如下:
图4
这个画圆可是让我选择了好久,我的方案有这么几种:
序号 | 方案 | 采用与否的原因 |
---|---|---|
1 | 直接用 JS 生成 Dom元素 往页面里不断push就行 | 不可行 生成Dom太多了 不太好 |
2 | 使用css boder 滚动(类似圆形进度条) | 可行 备选状态 但是它消耗页面性能 |
3 | 使用canvas 画圆 | 尝试 感觉不可行(使用style 动态改变画布宽高是 内部画出来的圆是椭圆形) 有明显锯齿 需要优化 |
4 | 使用svg 画圆 | 目前采用的是这个方案 |
!!! 但是使用 svg circle 画圆他默认是顺时针旋转的 这里我用了一个骚操作 使用 transform:scaleY(-1); 使svg 水平镜像翻转。
1 | <svg id="svg" :style="svgCss"> |
后续还需使用 Math.atan2 来时时计算倾斜度 来进行拖动画圆
1 | /** |
1 | .test{ |