用户接口

如何设计一个 iOS 控件?(iOS 控件完全解析)

ぃ、小莉子 提交于 2019-12-07 03:45:28
如何设计一个 iOS 控件?(iOS 控件完全解析) 一个控件从外在特征来说,主要是封装这几点: 交互方式 显示样式 数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内;而一个好的控件除了有对外一致的体验之外,还有其内在特征: 灵活性 低耦合 易拓展 易维护 通常特征之间需要做一些取舍,比如灵活性与耦合度,有时候接口越多越能适应各种环境,但是接口越少对外产生的依赖就越少,维护起来也更容易。通常一些前期看起来还不错的代码,往往也会随着时间加深慢慢“成长”,功能的增加也会带来新的接口,很不自觉地就加深了耦合度,在开发中时不时地进行一些重构工作很有必要。总之,尽量减少接口的数量,但有足够的定制空间,可以在一开始把接口全部隐藏起来,再根据实际需要慢慢放开。 自定义控件在 iOS 项目里很常见,通常页面之间入口很多,而且使用场景极有可能大不相同,比如一个 UIView 既可以以代码初始化,也可以以 xib的形式初始化,而我们是需要保证这两种操作都能产生同样的行为。本文将会讨论到以下几点: 选择正确的初始化方式 调整布局的时机 正确的处理 touches 方法 drawRectCALayer 与动画 UIControl 与 UIButton 更友好的支持 xib 不规则图形和事件触发范围(事件链的简单介绍以及处理)

网站应用微信登录功能接口开发指南

≡放荡痞女 提交于 2019-12-06 20:12:26
准备工作 网站应用 微信 登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。 授权流程说明 微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。 微信OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。该模式整体流程为: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数; 2. 通过code参数加上AppID和AppSecret等,通过API换取access_token; 3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。 获取access_token时序图: 第一步:请求CODE

Now直播应用的后台服务器性能测试实践

大憨熊 提交于 2019-12-06 18:23:13
版权声明:本文由Oliver原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/208 来源:腾云阁 https://www.qcloud.com/community 作者介绍:Oliver,腾讯服务器性能测试团队产品经理。 直播的火爆带来了海量的用户,也带来了海量的服务器并发。本文分析了目前直播行业存在的难点,从腾讯目前的新直播产品——NOW直播出发, 了解直播应用背后的那些事。 直播,突然成为了中国互联网的一个最流行的词汇。在《2016-2020年中国网络直播行业深度调研及投资前景预测报告》中的数据表示,2015年,全国在线直播平台数量接近200家,其中网络直播的市场规模约为90亿,网络直播平台用户数量已经达到2亿,大型直播平台每日高峰时段同时在线人数接近400万,同时直播的房间数量超过3000个,更可怕的是,这一数据还在以极快的速度向上攀升。 直播平台用户数量2亿是什么概念?2016版的《微信数据化报告》中提到,目前微信用户达到了6.97亿人,也就是说,在你身边同龄的3-4个朋友之中,很有可能有一个人是网络直播的用户。 直播火没火,看用户就知道,但是直播有没有前景,就要看科技巨头们对它的态度了。 国外的Facebook推出的Facebook live给其用户带来的全新的体验,不仅增加了用户粘性

HTML5 Geolocation API和Google Maps API结合实现路线导航

百般思念 提交于 2019-12-06 16:52:42
HTML5提供了地理位置定位功能(Geolocation API),能确定用户位置,我们可以借助HTML5的该特性开发基于地理位置信息的应用。本文结合实例给大家分享如何使用HTML5,借助百度、谷歌地图接口来获取用户准确的地理位置信息。 定位功能(Geolocation)是HTML5的新特性,因此只有在支持HTML5的现代浏览器上运行,特别是手持设备如iphone,地理定位更加精确。首先我们要检测用户设备浏览器是否支持地理定位,如果支持则获取地理信息。注意这个特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的,所以我们在访问该应用时会提示是否允许地理定位,我们当然选择允许即可。 function getLocation(){ if (navigator.geolocation){ navigator.geolocation.getCurrentPosition(showPosition,showError) }else{ alert("浏览器不支持地理定位。") } } 上面的代码可以知道,如果用户设备支持地理定位,则运行 getCurrentPosition() 方法。如果getCurrentPosition()运行成功,则向参数showPosition中规定的函数返回一个coordinates对象,getCurrentPosition()

Jmeter脚本优化

这一生的挚爱 提交于 2019-12-06 13:15:53
  我们在做接口测试过程中,往往会遇到以下几种情况 每次发送请求,都需要更改参数值为未使用的参数值,比如手机号注册、动态时间等 上一个接口的请求体参数用于下一个接口的请求体参数 上一个接口的响应体参数用于下一个接口的请求体参数,比如:sessionId、token 上一个接口的响应体参数用于下一个接口的url接口地址中 上一个接口的响应头参数用于下一个接口的请求体参数,比如:token ......   针对以上种种情况,我们都可以通过参数化和正则提取的方式来解决 一、参数化   举例演示,提供一个注册和登录的接口,请求体需要手机号和密码进行注册登录,并且注册过的账号再次注册会提示已注册,因为不管是未注册还是已注册的手机号去注册接口都会调用成功,所以我会在注册接口上添加一个断言 注册接口: 登录接口: 断言: 我们再次注册时,就会断言失败 1.用户定义的变量   上面的示例看到,每次去调用接口都要手动修改手机号码,并且注册和登录接口都要同步修改,这样操作相当繁琐,针对这个问题我们使用用户定义的变量的工具进行优化   在线程组上:右键—>添加—>配置元件—>用户定义的变量   我们把注册和登录的手机号和密码都提取出来放到这里   定义了之后,我们需要调用该参数,调用方式是在对应的取样器里,使用${key}的格式替换取样器请求体里的值

小程序模板消息下线快开启订阅消息功能

两盒软妹~` 提交于 2019-12-06 12:25:44
小程序模板消息能力在帮助小程序实现服务闭环的同时,也存在一些问题,如: 1. 部分开发者在用户无预期或未进行服务的情况下发送与用户无关的消息,对用户产生了骚扰; 2. 模板消息需在用户访问小程序后的 7 天内下发,不能满足部分业务的时间要求。 为提升小程序模板消息能力的使用体验,我们对模板消息的下发条件进行了调整,由用户自主订阅所需消息。 一次性订阅消息 一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。 (一次性订阅示例) 长期性订阅消息 一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。 目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。 调整计划 小程序订阅消息接口上线后,原先的模板消息接口将停止使用,详情如下: 1. 开发者可登录小程序管理后台开启订阅消息功能,接口开发可参考文档: 《小程序订阅消息》 2. 开发者使用订阅消息能力时,需遵循运营规范,不可用奖励或其它形式强制用户订阅,不可下发与用户预期不符或违反国家法律法规的内容。具体可参考文档

[转]移动APP安全测试

让人想犯罪 __ 提交于 2019-12-06 11:41:35
1 移动App安全 风险分析 1.1 安全威胁分析   安全威胁从三个不同环节进行划分,主要分为客户端威胁、数据传输端威胁和服务端的威胁。     1.2 面临的主要风险       1.3 Android 测试 思维导图    1.4 反编译工具   有两种反编译方式,dex2jar和apktool,两个工具反编译的效果是不一样的,dex2jar反编译出 java 源代码,apktool反编译出来的是java汇编代码。   dex2jar主要是用来把之前zip解压出来的classed.dex转成jar包的   jd-gui主要是用来打开Jar包的    2 本地客户端安全 2.1 反编译保护 2.1.1 问题描述   APP源代码对于一个公司是非常重要的信息资源,对APP的保护也尤为重要,APP的反编译会造成源代码被恶意者读取,以及APP的逻辑设计,    反编译方法   我们一般想要反编译一个apk,无非就是想获得三样东西:图片资源、XML资源、代码资源   一. 图片资源获取   首先准备一个apk,这里是一个.apk后缀的文件,我们先把后缀改成,zip,打开zip文件在res目录下,我们就可以获取到我们需要的图片了。   二. XML资源获取   我们可以在刚刚打开的zip文件目录下看到很多.xml的文件,这个xml文件是无法直接打开的

drf之组件(认证、权限、排序、过滤、分页等)和xadmin、coreapi

不想你离开。 提交于 2019-12-06 10:56:21
认证Authentication 可以在配置文件中配置全局默认的认证方案 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', # 基本认证 'rest_framework.authentication.SessionAuthentication', # session认证 ) } 也可以在每个视图中通过设置authentication_classess属性来设置 from rest_framework.authentication import SessionAuthentication, BasicAuthentication from rest_framework.views import APIView class ExampleView(APIView): authentication_classes = (SessionAuthentication, BasicAuthentication) ... 认证失败会有两种可能的返回值: 401 Unauthorized 未认证 403 Permission Denied 权限被禁止 权限Permissions

linux内核线程的创建与销毁

十年热恋 提交于 2019-12-06 10:44:22
linux将创建内核线程的工作交给了一个专门的内核线程kthreadd来完成,该线程会检查全局链表kthread_create_list,如果为NULL,就会调schedule()放弃cpu进入睡眠状态,否则就取下该链表中的一项创建对应的线程。本文就从khtreadd内核线程的创建开始来展示一下内核线程的创建过程。 1 kthreadd linux2.6.30,创建内核线程是通过kethradd内核守护线程来完成的,虽然机制上有所变化,但是最终还是调用do_fork来完成线程的创建。Kthreadd守护线程是在linux内核启动时就已经创建的内核线程。在start_kernel调用的结束位置,会调用rest_init接口,而kthreadd就是在这个接口中创建的,代码如下所示: asmlinkage void __init start_kernel(void) { 。。。。。。。。。。。。。。。。。。。。。。 rest_init(); } static noinline void __init_refok rest_init(void) __releases(kernel_lock) { int pid; /*在启动时创建内核线程,该线程主要用来创建内核线程*/ pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);

路由策略和策略路由配置与管理-2

安稳与你 提交于 2019-12-06 09:26:50
策略路由基础 “路由策略”( Routing Policy , RP )与“策略路由”( Policy-BasedRouting , PBR )有着本质上的区别。“路由策略”中的“路由”是名词,而“策略”是动词, 操作对象是路由信息 。“路由策略”主要用来实现路由表中的路由过滤和路由属性设置等功能。它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。而“策略路由”中的“策略”是名词,“路由”却变成了动词,是基于策略的路由(这里的“路由”也是动词), 操作对象是数据报文,是在 路由表已经产生 的情况下,不按照路由表进行转发,而是根据需要按照某种策略改变数据报文转发路径 。 一、策略路由概述 传统的路由转发原理是首先根据报文的目的地址查找路由表,然后进行报文转发。但是目前越来越多的用户希望能够在传统路由转发的基础上根据自己定义的策略进行报文转发和选路。策略路由正是这样一种可依据用户制定的策略进行报文路由选路的机制。策略路由可使网络管理者不仅能够根据报文的目的地址,而且能够根据报文的源地址、报文大小和链路质量等属性来制定策略路由,以改变报文转发路径,满足用户需求。 策略路由具有如下优点: ①可以根据用户实际需求制定策略进行路由选择,增强路由选择的灵活性和可控性 ②可以使不同的数据流通过不同的链路进行发送,提高链路的利用效率。 ③在满足业务服务质量的前提下