- 博客(61)
- 收藏
- 关注
原创 Android指定名称和路径打包apk
有时候会需要打包到指定的路径然后由脚本推送。打包apk时可以通过gradle指定名称和路径,并且可以配置更多信息。def appReleaseDir = "apk输出文件夹"signingConfigs { //签名信息 可以自定义很多,以下是必须的 releaseConfig { storeFile file("jks签名文件路径") storePassword "xxxxxx" keyAlias "xxxxxx" key
2022-01-27 18:47:52 3019
原创 通过ve模板实现一键在线视频制作
通过ve模板实现一键在线视频制作。具体工具从以下网站获取:http://vesdk.com/ https://www.mbjia.com/ 。ve视频引擎拥有强大的ae导出工具个渲染sdk, 我们可以从ae工具中导出基础模板,通过渲染sdk进行视频制作。https://www.mbjia.com/ 就是通过这种形式实现一键视频制作。ve视频模板模板文件夹结构assets:存放所有参与模板渲染资源文件datas:存放所有动画数据文件ui:存放ui界面设计所需配饰图文件config.jso
2022-01-14 21:43:18 1018 1
原创 react项目中使用引导功能_intro.js
如何在react项目中使用新手引导功能呢?在网上发现了几种插件,都挺不错的,最终还是选择了 intro.js ,下面介绍一下这个插件的具体用法官网地址:https://introjs.com/npm安装npm install intro.js --save在项目中引入可以在你的根目录中引入css样式import "intro.js/introjs.css";在组件中引入intro.jsimport IntroJs from "intro.js"最简单的用法 import Reac
2022-01-07 17:53:06 1303
原创 web测试前的准备
今天主要所讲的内容是关于web端页面测试的,对于从事这方面的小伙伴来说,接触的应该是比较多的,对于页面测试来说,考虑的步骤、流程是很多的,还有考虑测试中的一些有效测试和无效测试,所以今天讲解的主要功能测试,主要是针对链接测试、表单测试、搜索框测试、还有删除数据这四方面,也是我们常会涉及到的地方。分类及测试要点功能测试测试那些方面一、链接测试册数所有链接是否按指示的那样确实连接到了该链接的页面测试所有链接的页面是否存在测试web应用系统上没有孤立的页面二、表单测试什么是表单测试,表单
2021-12-28 17:11:29 441
原创 OpenGL 高质量文本渲染
High Quality Text Rendering前言在实时 3D 图形中保留尽可能高质量的文本具有挑战性。对象可以动态地改变它们的位置、旋转、比例和视角。所有这些都会对质量产生负面影响,因为文本通常只生成一次,而不是在每一帧中生成。根据字体引擎及其性能,为整个文本生成纹理需要很长时间。通常,这段时间足以影响性能。本文档介绍了如何在对象为半动态时获得最佳文本质量的方法。半动态对象是既不经常(不是每帧)也不在动画时间内更改的对象。此示例描述了如何计算字体大小,这应该使纹理像素与屏幕像素紧密匹配。
2021-12-24 14:03:57 594
原创 SharedArrayBuffer 及其跨域下的使用
什么是跨域跨域问题是前端开发人员面前绕不过去的问题。所谓跨域,通俗点表达,就是当前站点,请求或加载了其他域名的资源。比如当前 app.a.com 请求了 file.b.com 的资源,就产生了跨域资源的加载。浏览器在渲染当前页面时,校验网页请求的资源是否可以安全的在当前页面使用。比如:是同站点下的资源,比如 app.a.com/logo.png,可以直接使用如果是同域名下的资源,比如 file.a.com/logo.png, 这时会校验文件的响应头,看有没有配置 Access-Contro
2021-12-13 10:10:31 2156 2
原创 Opengl混合算法探究
在我们的实际应用中使用OpenGL进行混合常见的问题有以下三种:使用Opengl自带的混合算法自定义混合算法半透明混合针对以上三种情况我们具体分析有何不同及如何解决问题。一、Opengl自带混合算法OpenGL渲染管线的最后阶段会将源色和底色进行混合,我们大部分情况下只需考虑实现此次drawcall的渲染实现即可,无心过分操心如何与底色进行混合。那么如何使用自带的混合呢?首先我们需要开启混合模式,开启混合模式之后即可使用OpenGL自带的混合算法。glEnable(GL_BLEND);
2021-12-07 15:31:15 398
原创 iOS对图片进行像素读取
图片解码常见的图片压缩格式主要是PNG和JPEG,在iOS的程序开发中,一般不需要获取一张图片解码后的数据,但如果需要对像素进行操作,可能就需要了解怎么获取相关的像素值。位图图像(bitmap),是由多个像素点排列组成的。当我们对PNG和JPG进行解码后,应该获取到一组像素点数据,这样一组数据就组成了解码后的位图。图片解码可以看做一次解压缩,所以位图占用的空间会更大,位图所占的空间很好计算,图片的面积*每个像素占用的字节。+ (nullable UIImage *)imageWithContentsO
2021-11-29 16:06:46 1868
原创 react拖曳组件react-dnd的简单封装使用
分享原因由于项目中需要使用拖曳组件(需求:全局,跨组件,跨数据),我选择了react-dnd概念React DnD 是一组 React 高阶组件,我们在使用的时候只需要将目标元素进行包裹,就可以实现目标元素具有拖动或接受拖动的功能。它将整个拖动的事件完整的描述了出来,这使得我们在使用的过程变得简单易用和扩展上有了无限的可能,在处理复杂拖曳和丰富需求的时候强烈建议使用它。官网 https://react-dnd.github.io/react-dnd/基本Item type:跟redux或其他组
2021-11-26 14:22:41 1262
原创 oneinstack申请免费的R3 域名证书
OneinStack 是知名 Linux 技术博客 LinuxEye 推出的一个可以一键安装 LNMP(Linux + NGINX + MySQL + PHP)、LAMP(Linux + Apache + MySQL + PHP)、LNMPA(Linux + NGINX + MySQL + PHP + Apache)等建站环境的一键安装包。主要是提供了一个可视化页面,可以直接在页面上选择自己想要的配置,然后自动生成安装命令,然后就等待自动安装完成就行oneinstack 官网linux 下载onei.
2021-11-15 16:13:01 2921
原创 git rebase 与git merge
1.区别rebase:也称为变基,会将当前分支的 commit 放到公共分支的最后面。就好像从公共分支又重新拉出来这个分支一样。举例:如果你从 master 拉了个feature分支出来,然后你提交了几个 commit,这个时候刚好有人把他开发的东西合并到 master 了,这个时候 master 就比你拉分支的时候多了几个 commit,如果这个时候你rebase master 的话,就会把你当前的几个 commit,放到那个人 commit 的后面。merge:会把公共分支和你当前的commi
2021-11-08 16:01:17 247
原创 OpenGL 链式滤镜(帧缓冲离屏渲染)
OpenGL 编写特效在部分应用中可通过单个shader实现,即通过修过修改顶点着色器或片元着色器实现。但更多的场景是要求有多个特效组合而成,例如最终效果是图片灰度加上下颠倒,效果不复杂条件下可以通过修改片元着色器实现,当效果复杂特效、组合特效、特效的模块化开发都会通过链式滤镜实现。一、链式滤镜概念链式滤镜 通过帧缓冲离屏渲染技术实现特效的组合和叠加。通过多次draw最终实现预期效果。二、渲染流程中的帧缓冲OpenGL的工作流程,输入像素数据和顶点数据,两种数据分别操作后,通过光栅化,得到片段,再经
2021-11-05 17:28:16 423
原创 iOS 组件化构思
一、iOS 组件化常用方式讨论使用openURL进行组件的注册和调用App 启动时实例化各组件模块,然后这些组件向 ModuleManager 注册 URL ,有些时候不需要实例化,使用 class 注册。当组件A需要调用组件B时,向 ModuleManager 传递 URL ,参数跟随 URL 以 GET 方式传递,类似openURL 。然后由 ModuleManager 负责调度组件B,最后完成任务。方案分析第一步的问题,在组件化的过程中,注册 URL 并不是充分必要条件,组件是不需要向组
2021-10-25 17:31:09 786
原创 自定义指令directive
前言公司技术栈围绕react为主,但是时间有限研究较少,本文以vue中自定义指令为切入点,详细介绍directive的作用和如何实现自定义指令。vue自定义指令顾名思义,就是vue给我们提供的一个编写各种指令的入口。比如v-for,v-if ,v-show等,根据实际业务需求 时会用到自定义指令,一定程度上可以解决过滤器并承担部分组件功能的作用。但是总体而言,由于指令需要操作dom,因此能用组件就不用指令。言归正传:比如写一个v-focus,任何input或者textarea绑定该属性可直接获取焦点
2021-10-18 14:58:40 184
原创 After Effects 图层属性及属性组结构详解
根据结构类型的属性分类在 After Effects 的脚本开发中,图层的属性可被区分为三种类型:PROPERTY、INDEXED_GROUP 和 NAMED_GROUP 。通过使用app.project.item().layer().propertySpec.propertyType可以对属性的类型进行判断。在 AEGP 插件的开发中这些类型对应为 AEGP_StreamGroupingType_LEAF 、AEGP_StreamGroupingType_INDEXED_GROUP 和 AEGP_Str
2021-10-12 21:15:48 999
原创 PHP中的FFmpeg安装及使用
本文和大家分享PHP中的FFmeg安装及使用,希望能帮助到大家FFmpeg简介FFmpeg是视频处理最常用的开源软件。它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。关于FFMPEG视音频编解码的知识可以参考大神雷霄骅的系列教程https://blog.csdn.net/leixiaohua1020/article/details/15811977FFmpeg安装下载fmmpeg代码git clone h
2021-09-28 09:30:14 3113 2
原创 css实现三角形
在实际编程中我们经常会遇到下拉菜单的下三角和一些特殊的图形,那么这些如何用css来实现呢?例1例2例3原理:仔细想想,原理非常简单,利用CSS的border以及它的属性值transparent来实现三角形,其中最主要的是要明白由于div的高度跟宽度都为0,margin,padding也为0,所以元素框的大小就是他的border的叠加,由于相邻border会重叠,故存在内容宽高时其实任意一边存在的border都是梯形的,当div内容宽高为0时,border就表现为三角形,将四个border的颜
2021-09-22 17:03:54 107
原创 java 并发编程中的ConcurrentModificationException 异常问题
云渲染服务中的 java.util.ConcurrentModificationException 异常问题针对最近云渲染服务中的出现的一个问题进行反思与回顾回调视频渲染进度问题在修改过回调进度的 url 后,启用了之前的代码片段。导致之前的漏洞被爆出:在多线程编程中,直接使用 hashmap 来保存当前的渲染任务,而不进行一些必要的线程间的互斥与同步操作,导致在一个线程通过迭代器遍历 hashmap 时,另一个线程同时修改 hashmap,导致程序抛出java.util.ConcurrentM
2021-09-13 17:07:21 268
原创 IOS应用崩溃复活
IOS应用崩溃一直是一个很苦恼的问题,而崩溃的同时又未获取bug原因,更令人苦恼。好在苹果自带的crash检测api,以及runloop可以让应用复活一次,不过第二次依旧会崩溃,但是还是一个很实用的小技巧。以下是IOS崩溃复活的类和使用方法#import "CrashHandler.h"//Appdelagte中注册crash记录上报- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NS
2021-09-06 16:40:30 177
原创 移动端功能测试
测试用例的存在,能对复杂需求的功能质量提升,以及自身测试效率的提升,起到非常基本的促进作用,因为测试用例本身就是通过对需求点的梳理,找出潜在的测试点,避免测试点的遗漏。而case是否覆盖全、漏测少则显得很重要;对于一名测试,思维严谨、效率高、沟通顺畅、责任心强,这些都要具备,在梳理测试点的过程中,要很清楚找出各个测试点之间的各种关系:互斥、前后关联、相互影响等,省去了在执行阶段费心构造设计的时间。功能测试主要是测试软件app的功能点、业务逻辑;关联性(主要是测试客户端和PC的交互,客户端处理完后,保证P
2021-08-30 11:06:28 284
原创 在Activity和附贴的Fragment中同时使用多Surface错乱解决
SurfaceView因为独特的双缓冲机制,在android应用中十分普遍,视频播放器、摄像机预览等都会用到,如果在两个Fragment或者一个Fragment和Activity同时使用都会造成无法正常显示。即使设置前面的SurfaceView为不可见也会在少部分机型上依然存在该问题。后来发现原因是SurfaceView是在Windows层显示的,仅仅用View层的方法并不能控制Surface的生命周期。解决办法:在需要播放视频的位置外层嵌套一个Layout,这里我用的Framelayout,在释放的时候
2021-08-27 17:32:55 363
原创 Twig 模板渲染前端基本使用
1.{% … %}、{{ … }}、{# … #}{% for item in list %} {{ item }}{% endfor %}{{…}} 用来输出模板表达式的结果{{ item }}{# … #}用来注释代码{# <div>{{ item }}</div> #}2.循环{% for key,item in list %} <div>{{ key }}---{{ item['user'] }}</div>
2021-08-17 14:07:07 178
原创 ubuntu 权限管理设置
最近工作中涉及文件操作的内容较多,所以会出现各种各样的权限不足问题,导致操作失败。下面就来讲解下我碰到这种问题是通过什么的方法解决的一、用户和权限用户 是 Linux 系统工作中重要的一环,用户管理包括 用户 与 组 管理在 Linux 系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限在 Linux 中,可以指定 每一个用户 针对 不同的文件或者目录 的 不同权限对 文件/目录 的权限包括:读写执行 rwx同时为了
2021-08-13 13:50:53 416
原创 ANT-DESIGN_PRO的使用
Ant Design Pro文档链接 https://pro.ant.design/zh-CN/docs/getting-startedAnt Design Pro 是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案,致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。随着『设计者』的不断反馈,我们将持续迭代,逐步沉淀和总结出更多设计模式和相应的代码实现,阐述中后
2021-08-02 17:23:37 656
原创 测试计划流程
说到测试计划相信很多小伙伴进入这行的时候对这个并不陌生,但是要针对一个项目做一个完整的测试计划却不是那么简单,因为我们在测试之前我们首先要针对一个项目的了解,还有项目每个需求的分析,还要进行评审等等一系列的准备工作,所以在测试之前,我们要做好很多前奏工作,确保在测试过程中不会遗漏掉本该要发现的问题,所以本次编辑这篇文章主要是针对测试计划做的一套流程讲解,希望对同行的小伙伴有一定的帮助。一、测试计划的目的(1)为测试各项活动制定一个现实可行的、综合的计划,包括每项测试活动的对象、范围、方法、进度和预期结果
2021-07-27 16:45:54 181
原创 Android使用PGO优化native库运行速度
Profile-guided optimization (PGO),配置文件引导的优化,基于插桩或采样从程序运行时生成配置文件,使编译器对内联和代码布局做优化,可以获得免费的性能提升。在安卓中使用的教程较少,实际操作时会遇到一些问题,在这里记录一下使用插桩的方式。1. 使用-fprofile-generate编译和链接经过插桩的动态库添加编译参数android { ... defaultConfig { ... externalNat
2021-07-21 16:24:59 660
原创 Linux 动态库 undefined symbol 原因定位与解决方法
在使用动态库开发部署时,遇到最多的问题可能就是 undefined symbol 了,导致这个出现这个问题的原因有多种多样,快速找到原因,采用对应的方法解决是本文写作的目的。可能的原因依赖库未找到这是最常见的原因,一般是没有指定查找目录,或者没有安装到系统查找目录里链接的依赖库不一致编译的时候使用了高版本,然后不同机器使用时链接的却是低版本,低版本可能缺失某些 api符号被隐藏如果动态库编译时被默认隐藏,外部代码使用了某个被隐藏的符号。c++ abi 版本不一致最典型的例子就是 gcc
2021-07-12 16:28:48 46461 3
原创 OpenGL ES 压缩纹理
什么是压缩纹理在实际应用特别是游戏中纹理占用了相当大的包体积,而且GPU无法直接解码目前流行的图片格式,图片必须转换为RGB等类型的格式才能上传到GPU内存,这显然增加了GPU内存的占用。为了处理这些问题于是出现了GPU支持的压缩纹理格式,在GPU中进行解码。压缩纹理属于有损压缩,更在意解码速度,而编码在程序运行之前,因此速度较慢。压缩纹理的常见格式基于OpenGL ES的压缩纹理有常见的如下几种实现:1)ETC1(Ericsson texture compression)2)ETC2(Erics
2021-07-05 11:22:29 228
原创 AVAssetWriter视频数据编码
AVAssetWriter介绍可以通过AVAssetWriter来对媒体样本重新做编码。针对一个视频文件,只可以使用一个AVAssetWriter来写入,所以每一个文件都需要对应一个新的AVAssetWriter实例。AVAssetWriter初始化使用一个视频文件路径对AVAssetReader进行初始化,并指定文件类型。 NSError * error;_mAssetWriter = [[AVAssetWriter alloc] initWithURL:videoUrl fileType:A
2021-06-21 14:25:51 900
原创 浅谈瀑布流
瀑布流又称瀑布流式布局,是比较流行的一种网站页面布局方式。视觉表现为参差不齐的多栏布局,最早采用此布局的是网站是 Pinterest,后逐渐在国内流行。瀑布流布局效果即多行等宽元素排列,后面的元素依次添加到其后,等宽不等高,根据图片原比例缩放直至宽度达到我们的要求,依次按照规则放入指定位置。那么规则是什么呢?下面通过图解来分析一下瀑布流的算法。图解瀑布流算法当第一排排满足够多的等宽图片时(如下图情况),自然而然的考虑到之后放置的图片会往下面排放。那么第六张图片,放置在什么位置呢?是下图的位
2021-06-16 14:13:13 213
原创 Qt QGraphicsView应用:定点缩放
功能:以鼠标位置为中心点定点缩放原理说明实现在光标位置缩放画布的效果可以理解为,光标所对应到画布上的坐标点在缩放之前和之后都继续对应在光标所在的位置。而一般缩放画布,画布会以画布的左上角为固定点缩放。所以在每一次缩放完成后,我们需要把画布上 光标对应的位置 移动回去,就可以实现目的效果。a.计算原理:1.找到光标所对应到画布坐标系统的位置点,这里记作target2.缩放(参见如下代码块)3.按缩放比例计算得到 经历缩放后 target的新位置_target4.计算位移量5.移动画布缩放
2021-06-08 13:48:11 1355
原创 Yii2:在多个表之间定义关系的正确方法
在控制器中,我有以下代码:public function actionView($id){ $query = new Query; $query->select('*') ->from('table_1 t1') ->innerJoin('table_2 t2', 't2.t1_id = t1.id') ->innerJoin('table_3
2021-05-24 13:44:24 120
原创 Ios 多线程之NSOperation与NSOprationQueue
在说NSOperation之前,先说一下gcd,gcd 技术是一个轻量的,底层实现隐藏的神奇技术,我们能够通过gcd和block轻松实现多线程编程,有时候,gcd相比其他系统提供的多线程方法更加有效,当然,有时候gcd不是最佳选择,另一个多线程编程的技术 NSOprationQueue 让我们能够将后台线程以队列方式依序执行,并提供更多操作的入口,这和 gcd 的实现有些类似。这种类似不是一个巧合,在早期,MacOX 与 iOS 的程序都普遍采用Operation Queue来进行编写后台线程代码,而之后
2021-05-17 13:45:58 228 2
原创 web测试之功能测试
功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:1、页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。(LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,xenu
2021-05-10 14:17:33 279
原创 Android neon加速优化
neon是一种SIMD(单指令多数据)指令集,其效率相当于汇编,用于arm cpu平台的优化,在音视频、图形图像处理领域性能提升较大。arm架构的CPU从armv7a开始已经支持neon(可选项),从而实现并行计算功能。 本文记录一下在android上使用neon加速的方法。 首先不用多说先创建支持native C++的android工程 然后在gradle中添加对neon的支持: externalNativeBuild { cmake { cpp
2021-05-06 15:30:20 756 1
原创 Yii2配合LinuxCrontab执行定时脚本
首先我们就来说说Yii Console 是如何实现定时任务的 一、首先在创建Controlle 并继承 yii\console\Controller;<?phpnamespace app\commands;use yii\console\Controller;class HelloController extends Controller{ public function actionIndex($message = 'hello world')
2021-04-19 13:54:07 223
原创 微信小程序中使用canvas
1.使用canvas画布2.使用矩阵截图注意ios上会有截取不到的问题, 一定要检查下基础库,context.drawImage()里边是可以传一个本地路径进行截图的。最后要放到 context.draw(true,()=>{})的回调中,保证成功绘制图片,我这里是返回出去一个路径和文件的后缀名。...
2021-04-12 14:19:24 476
原创 canvas使用Affine,实现任意点变换(旋转,位移,缩放)
矩阵入门教程及文件获取地址http://www.seeshiontech.com/docs/page_145.html1.首先我们创建canvas标签,为了方便查看效果,我们为canvas添加一下样式,这里图片我使用的是1920*1080的尺寸 <canvas id="canvas" width="1920" height="1080"></canvas> canvas { display: b
2021-04-07 14:27:23 263
原创 SDK音频测试流程
概述在上篇文章中,给小伙伴们讲述了sdk模板在渲染中的流程,我们简单来回顾一下,主要讲述了数据创建、素材替换、音频、文字等四部分,在上次讲述中也因为时间于原因没有特别仔细的去讲述他们。上次我们说到最为复杂的部分测试要属于我们音频这一块了,因为除了添加素材,去渲染生成的视频中去对她们的效果去进行对比效果之外另外还要从数据中去对比时间播放点与播放内容的准确性,这一块相对来说是比较复杂一点的,更多的是耐心,所以今天我们主要就讲解在音频在模板的测试中注意点与数据更换。 音频功能测试素材替换还是和
2021-03-29 14:37:20 544
原创 Qt4K高分屏自适应,解决字体没有跟随组件增大的问题
解决背景在一次做项目的过程中,公司让我做高分屏适配,就是让我们所开发的软件支持4K屏的显示,我在百度上开始搜索资料,有很多博客给出的答案就是:#if(QT_VERSION >= QT_VERSION_CHECK(5,6,0)) QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);#endif QApplication a(argc, argv); 解决过程我也这样做了,结果,没
2021-03-23 15:52:11 1148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人