Framework

利用 Serverless,实现 COS & CDN Combo Handler

无人久伴 提交于 2020-08-12 10:53:25
背景 小 S 维护的一个前端系统,单个页面中有数个没有依赖关系的 js, css 需要加载,此时浏览器会分别去请求对应的文件。此时小 S 收到 Leader 给的一个任务:优化前端的静态资源请求,尽量做合并。 什么是 Combo Handler?相信很多前端同学并不陌生。 2008 年 7 月 YUI Team 宣布在 YAHOO! CDN 上对 YUI JavaScript 组件提供 Combo Handler 服务 。简单讲,当前端有 n 个 js 需要分别去拉取时,通过 cdn combo 技术能用一个请求把 js 在服务端合并后拉回,同理可用于 css 文件。 现状 小 S 马上开始着手,看了下手头的项目,目前静态资源是经过 腾讯云 CDN 的,静态资源放在了 腾讯云对象存储 COS ,js、css 文件因为模块的不同,被打包成了多个。而腾讯云 CDN 目前不支持 Combo 的方式。 分析 小 S 开始想到了 HTTP2.0,但看了 CDN 的请求配置已开启 HTTP2.0,这一块能提升的空间已不大。那是否能做静态的离线合并处理,看似可行的一条路,但改动量不小,且确实涉及到一些历史原因,这块不好动。小 S 突然想起以前了解过的 CDN Combo,那从请求实时合并入手,也是可行的。但可惜,目前接入的 CDN 没能支持。 此时天空飘来一句秦牛·道格拉斯·正威的话打在了小 S

Web UI 自动化测试框架 pyse

百般思念 提交于 2020-08-12 08:40:58
WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动化测试框架。 特点 默认使用CSS定位,同时支持多种定位方法(id\name\class\link_text\xpath\css)。 基于Selenium二次封装,使用更简单。 提供脚手架,快速生成自动化测试项目。 自动生成/reports/目录,以及HTML测试报告生成。 自带断言方法,断言title、URL 和 text。 支持用例参数化。 安装 > pip install -U git+https://github.com/defnngj/pyse.git@master   加入我们。群,642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料! pyse命令 1、查看帮助: > pyse -h usage: pyse [-h] [-V] [--startproject STARTPROJECT] [-r R] WebUI automation testing framework based on Selenium. optional arguments: -h, --help show this help message and exit

使用 serverless 在腾讯云部署第一个函数

天涯浪子 提交于 2020-08-12 06:22:39
Serverless 是各大云服务商提供出来的一种无服务的计算资源。为什么叫无服务呢,因为如果你使用 serverless ,你只需要关注应用层,而无需关心底层基础设施,无需运维。简而言之, serverless 并不是真的无服务,而是关于有服务的不归你管,云服务商帮你搞定,比如 Google , AWS 或者 TencentCloud 。 关注点分离,好呀好!有了 serverless 以后只需要也只能关心业务了,这也不知是喜是忧。但你也无需过于担心,这是对已有并且成熟的开发模式的挑战,解决痛点有限,因此很多团队对于替换为 serverless 也动力不足。 但是我仍然建议你学习 serverless ,毕竟各大云厂商对于 serverless 有很多免费额度可以让你薅羊毛,对于个人开发者利好。 Serverless Framework serverless 是基于各大云服务商的产品,每一个云厂商对于 serverless 都有一套自己的 API。为了能够兼容这些 API,为了让你的代码 Write Once, Run Everywhere ,于是 serverless framework 诞生了。 通常认为 serverless = faas + baas,然而 serverless framework 只兼容到了 faas,对于 baas,如各家提供的数据存储服务

腾讯云 Serverless 部署应用耗时降低了 73%

前提是你 提交于 2020-08-12 04:57:58
在使用 Serverless Framework 部署 Next.js,Egg.js 项目时,由于安装的依赖包过大,部署时压缩上传时间很长,可能出现上传超时、控制台卡死等问题。 为此,Serverless 团队近期对部署做了一个性能优化,原来部署一个 Next.js 的 Demo 项目大约需要 55s 左右,而现在只需要 18s 的时间。 下面我们一起看一下,优化前后部署方案哪些不同。 一、部署性能对比 本次提速主要做的是压缩上传性能的提升。优化后采用流式上传压缩,并直接在压缩包内注入组件代码,大大的提升了性能。选取三种不同大小的代码包进行测试,优化前后平均部署性能如下所示: 代码包大小(MB) 优化前(秒) 优化后(秒) 111 MB 55 s 18 s 216 MB 100 s 38 s 418 MB 185 s 70 s 可见,部署的整体性能提升了将近 3倍 !对于一个轻量级别的网站或博客( 200 MB 左右),每次部署只需要 35s 左右的时间! 二、CLI 控制台输出对比 在 CLI 控制台输入 sls deploy 命令后,CLI 控制台状态的对比,如下图所示: 优化前部署全流程仅有 deploying 状态,直到部署结束返回结果。优化后将部署流程的每一步实时反馈到控制台界面上,让用户更清晰的看到整个部署流程,也能方便定位问题(如本地网络问题导致上传失败)。

Spring5--@Indexed注解加快启动速度

て烟熏妆下的殇ゞ 提交于 2020-08-12 04:50:26
引 Spring Framework 5.0作为 Spring Boot 2.0 的底层核心框架,就目前已经发布的版本来看,相对于 Spring Framework 4.x 而言,注解驱动的性能提升不是那么明显。然而随着 Spring Framework 注解驱动能能力逐渐受到开发人员的关注,尤其在 Spring Boot 应用场景中,大量使用注解 @CompoentScan 扫描指定的 package,当扫描的 package 所包含的类越多时,Spring 模式注解解析的耗时就越长。对于这个问题,Spring Framework 5.0 版本引入的注解 @Indexed,为 Spring 模式注解添加索引,以提升应用启动性能。 举个栗子: @Indexed @Configuration public class WebMvcConfig implements WebMvcConfigurer {} 但是,注解 @Indexed 不能孤立地存在,需要在工程 pom.xml 中增加 org.springframework:spring-context-indexer 依赖: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-indexer</artifactId>

iOS小技巧总结,绝对有你想要的(持续更新)

爱⌒轻易说出口 提交于 2020-08-12 03:42:40
最近在这里总结一些iOS开发中的小技巧,能大大方便我们的开发。 UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0.1)]; self.tableView.tableHeaderView = view; UITableView的plain样式下,取消区头停滞效果 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat sectionHeaderHeight = sectionHead.height; if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView;.contentOffset.y>=0) { scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); } else if(scrollView.contentOffset.y>=sectionHeaderHeight) { scrollView.contentInset = UIEdgeInsetsMake(

Spring系列.IOC容器简介

随声附和 提交于 2020-08-12 03:32:52
IOC容器简介 我们经常说Spring是一个IOC容器,Spring中这么多代码,那么到底哪些类是IOC容器的主要表现形式呢?其实在Spring中IOC容器的主要表现形式是BeanFactory和ApplicationContext这两个接口。这两个接口的具体实现类就可以看成是IOC容器在Spring中的具体体现。 BeanFactory提供了最基本的IOC和依赖注入功能, ApplicationContext继承了BeanFactory,在BeanFactory的基础上添加了很多新功能,主要包括国际化、事件分发机制(ApplicationEvent)、资源访问(Resource)等功能 。在实际的开发过程中,一般都会选择ApplicationContext系列的容器实现。下面列举下BeanFactory和ApplicationContext系列容器的常见实现类。 上图是BeanFactory系列容器的继承图,需要重点关注的是 DefaultListableBeanFactory ,这个类是Spring默认使用基础容器类。在每个ApplicationContext容器中都使用这个基础容器。 上图是ApplicationContext系列的容器实现。常用的有ClasspathXmlApplicationContext和XmlWebApplicationContext。Spring

了不起的 Deno 入门与实战

馋奶兔 提交于 2020-08-12 03:01:11
了不起的 Deno 入门篇 一、Deno 简介 Deno 是一个 JavaScript/TypeScript 的运行时,默认使用安全环境执行代码,有着卓越的开发体验。Deno 含有以下功能亮点: 默认安全。外部代码没有文件系统、网络、环境的访问权限,除非显式开启。 支持开箱即用的 TypeScript 的环境。 只分发一个独立的可执行文件(deno)。 有着内建的工具箱,比如一个依赖信息查看器(deno info)和一个代码格式化工具(deno fmt)。 有一组经过审计的 标准模块,保证能在 Deno 上工作。 脚本代码能被打包为一个单独的 JavaScript 文件。 Deno 是一个跨平台的运行时,即基于 Google V8 引擎的运行时环境,该运行时环境是使用 Rust 语言开发的,并使用 Tokio 库来构建事件循环系统。Deno 建立在 V8、Rust 和 Tokio 的基础上,它的架构如下: (图片来源: deno.land/manual/cont… 1.1 Rust Rust 是由 Mozilla 主导开发的通用、编译型编程语言。设计准则为 “安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的编程风格。Deno 使用 Rust 语言来封装 V8 引擎,通过 libdeno 绑定,我们就可以在 JavaScript 中调用隔离的功能。 1.2 Tokio

6 个珍藏已久 IDEA 小技巧,这一波全部分享给你!

风格不统一 提交于 2020-08-11 23:15:34
趣图 产品经理设计体验/用户实际体验 ↓ ↓ ↓ 分享几个珍藏已久的 IDEA 的「骚技巧」,助你快速完成代码。 还等什么?赶紧上车吧...... 前进/后退 我们使用浏览器的过程,可以点击后退查看之前的浏览记录。在 IDEA 也有同样的功能,当我们编辑代码时,点击查看了调用类实现逻辑,然后可以使用后退快捷键,快速回到刚才待编辑的代码处。 有后退,当然也有前进啦~ 前进/后退快捷键如下: Windows:Ctrl + Alt + Left/Right(方向键) Mac: ⌘ + ⌥ + ← / →(方向键) 示意图如下: 查看历史记录 还是以浏览器为例,当我们已经点击很多网页,这时想查看之前看过一个网页,使用后退就会很费劲,需要一个个回退过去查找。这种情况下,直接从历史记录查看将会变得很高效。 同样的,IDEA 也提供类似的功能查看历史文件,并且在弹出窗口内可以使用关键键快速查找。 快捷键如下: Windows:ctrl + E Mac:⌘ +E 另外 IDEA 中还有可以查看最近修改代码的位置,直接点击快速跳转。 快捷键如下: Windows:ctrl + shift + E Mac:⌘ + ⇧ +E 小技巧 讲到这里,建议大家设置一个选项,限制标签页(Edit Tabs)数量。 默认情况下, Tab Limit 为 10,标签页只能打开 10 个,对于会按照打开顺序关闭。