- 博客(177)
- 资源 (5)
- 收藏
- 关注
原创 浏览器UA是如何一步步变成今天这个屎样的
引擎老牛了,Mozilla就骄傲的把它写进UA里面了,然后他还发展的好;而KHTML也是一个棒棒哒排版引擎,但是发展略慢,为了发展于是决定兼容Gecko(没错又是兼容),所以他们在UA里面不仅写了KHTML,还加了一句link Gecko,表示我兼容Gecko了(原先的兼容就是这么简单直接)。2.问:为啥Firefox UA里只有Firefox,但是Chrome UA里面不仅有Chrome还有Safari,Edge更过分,里面不仅有Edg(不知道为啥不是Edge),还有Safari和Chrome。
2024-12-07 09:14:29
1262
原创 Git报错: Failed to connect to github.com port 443 解决方案
命令中的主机号(127.0.0.1)是使用的代理的主机号(自己电脑有vpn那么本机可看做访问github的代理主机),即填入127.0.0.1即可,否则填入代理主机 ip(就是网上找的那个ip)命令中的端口号(7890)为代理软件(代理软件不显示端口的话,就去Windows中的代理服务器设置中查看)或代理主机的监听IP,可以从代理服务器配置中获得,否则填入网上找的那个端口port。socks5和http两种协议由使用的代理软件决定,不同软件对这两种协议的支持有差异,如果不确定可以都尝试一下。
2024-09-26 17:01:52
1858
1
原创 Pyinstaller简单使用说明
PyInstaller是一个非常方便的Python库,可以将Python程序打包成可执行文件,并将依赖项打包到可执行文件中,方便用户在不安装Python环境的情况下直接运行Python程序。PyInstaller是一个非常实用的Python库,可以将Python代码打包成可执行文件,方便用户在不安装Python环境的情况下直接运行Python程序。执行上述命令后,PyInstaller会自动分析你的Python程序,并将其打包成一个可执行文件,并将依赖项打包到可执行文件中。
2024-05-16 14:23:41
555
原创 UICollectionView自定义layout
在使用UICollectionView的过程中,可能会遇到这样的场景:在UICollectionView frame改变的过程中,对应的UICollectionViewCell也要做对应的改变,可能是跟随父view bounds改变而更改,也有可能是做一些天马行空的动画效果。
2023-07-14 12:07:36
269
原创 iOS安装包瘦身
FengNiao 的基本原理是查找出项目中所有使用到的字符串和项目中所有的资源文件,两者进行匹配(完全匹配和模式匹配,模式匹配支持带数字资源的前缀/中缀/后缀匹配),计算差集就为未使用的资源。查找出 AppCode 中无用的类、无用的方法甚至是无用的 import ,但是无法扫描通过字符串拼接方式来创建的类和调用的方法。基本思路是基于 clang AST,追溯到函数的调用层级,记录所有定义的方法/类和所有调用的方法/类,再取差集。维持安装包体积是一个持续的过程,建立预警机制,监控每个版本的体积大小。
2023-05-17 16:48:13
286
原创 iOS App启动优化:利用 __attribute__((used, section (“name“)))处理静态协议
__attribute__((section("name")))
2023-02-15 19:16:25
757
原创 责任链模式
亦称:职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility意图责任链模式是一种行为设计模式,允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。问题假如你正在开发一个在线订购系统。你希望对系统访问进行限制,只允许认证用户创建订单。此外,拥有管理权限的用户也拥有所有订单的完全访问权限。简单规划后,你会意识到这些检查必须依次进行。只要接收到包含用户凭...
2022-05-08 15:40:43
1083
原创 ffmpeg调整视频角度
最近公司要做一款视频版宠物喂食器,存在一个问题,就是视频sensor是旋转90度放置的,可能是开模影响或者是方案选型问题,这里先不做讨论。由于视频sensor不是正立放置,那么出来的视频流也是被旋转90度的,这样在app端显示的视频也需要调整。针对实时流,是比较容易处理的。可以有两种方法进行处理:一种就是将正立着的播放器旋转90度,也就是View层次的操作;第二种就是利用OPENGL的旋转矩阵,进行一个角度的旋转,也能达到显示的效果。遇到的问题就是在录像这里,由于设备端无法处理,只能由强大的Ap
2021-07-26 10:38:54
1069
1
原创 iOS激光扫地机地图
最近在做一款激光扫地机地图,期间遇到了很多问题,在此做个记录,基本效果如下:主要涉及到:1、十六进制点阵转位图。这部是绘制地图的关键,主要实现如下:NSData *newData = [NSData dataWithBytes:dstBuffer length:decompressLen];Byte *newByte = (Byte *)newData.bytes;char* rgba = (char*)malloc(width*height*4);int offset=0;
2021-06-21 16:32:17
823
4
原创 UIColor 中提取 RGBA
遇到一些获取颜色RGB的需求,在这里记录下UIColor *color = [UIColor redColor];// 普通颜色可以通过 这个方法获取的RGBA的值// 颜色空间是固定的,对应RGBAconst CGFloat *cmp = CGColorGetComponents(fColor.CGColor);r = cmp[0];g = cmp[1];b = cmp[2];a = cmp[3];有些颜色是获取不到RGBA的, 比如[UIColor whiteColor][U..
2021-05-26 15:45:42
586
1
原创 MP4V2封装h265
mp4v2一般是用来做h264到mp4的封装,后来经过总结和优化,出现了支持h264/h265的版本,链接如下:mp4v2-h265从以上链接中下载的MP4V2源码相关接口如下:MP4V2_EXPORTMP4TrackId MP4AddH265VideoTrack( MP4FileHandle hFile, uint32_t timeScale, MP4Duration sampleDuration, uint16_t width,
2021-04-19 14:33:15
5914
7
原创 使用Appium搭建跨平台的自动化测试环境
在上一篇iOS自动化测试环境搭建中,我们介绍了如何搭建iOS平台的自动化测试。 然而,在企业中,我们不仅要进行iOS端的自动化测试,还需要进行android端的自动化测试。所以一个跨平台的自动化测试工具就显得尤为重要,这篇文章,我们就来探索一下如何使用Appium来进行跨平台的自动化测试。Appium自动化方案的特点: 开源免费 支持多个平台 iOS (苹果)、安卓 App 的自动化都支持。 支持多种类型的自动化 支持 苹果、安卓 应...
2021-04-07 14:37:16
357
原创 iOS自动化测试环境搭建
macOS相关库安装* libimobiledevicebrew install libimobiledevice使用本机与iOS设备的服务进行通信的库。* ideviceinstallerbrew install ideviceinstaller获取设备uuid、安装app、卸载app、获取bundleid。* carthagebrew install carthage第三方库管理工具。* ios-deploybrew install ios-deplo
2021-03-26 15:31:20
497
原创 python3 IOT设备模拟器
由于公司快速发展,规模日益增长,敏捷开发和人员统筹就显得越来越重要。 最近,我们就遇到了一个问题。因为我们是做IOT安防设备类的,现在又面临一款IOT设备在异地研发,为了使app端不受制于固件端的研发进度,一个设备模拟器就显得尤为重要了。 大致要求如下: 1、使用mqtt接入服务端,代替某个IOT设备。 2、能自主定义IOT设备协议,而不需要去改代码,就是给小白用的。 3、简单易用。 基于以上需求和自己的个人喜好,我选择了使用p...
2021-03-10 09:46:04
913
1
原创 iOS app 无侵入控制语言显示
最近遇到了一个需求,对于支持国际化的app,需要显示指定的语言。比如:一个app做了“中文”和“英文”两种国际化语言,公司销售拿着这个app去了德国,姑且说是入乡随俗,所以呢,就把手机语言切成了德语。 这样问题就来了:在国内用的是中文,现在切成了德文,然而app依然显示的是中文,要求显示为英文。 首先,在没有无法立刻更新app的情况下,我让他提供了app语言首选项列表,就是下面这个页面: 我们做iOS的都知道,app默认在读取语言的时候是按照系统的语言首选项来的,也...
2021-02-05 10:10:46
227
原创 iOS 当前网络类型判断(2G/3G/4G/5G)
由于一直在做iOT方面的工作,所以app跟硬件设备之间的交互就做的特别多,自然而然的手机当前连接的ssid是什么类型的就尤为重要,之前在判断网络的发现发现xcode12竟然没有5G相关的key,今天升级到Xcode12.1发现多了CTRadioAccessTechnologyNRNSA和CTRadioAccessTechnologyNR。从而是的判断当前网络连接类型变得更完善。NR是New Radio的缩写,新无线(5G)的意思,NRNSA表示5G NR的非独立组网(NSA)模式。+ (...
2020-12-28 10:38:40
4943
3
原创 iOS常用权限是否开启判断
1.iOS开发检测是否开启定位:需要导入:#import <CoreLocation/CoreLocation.h>代码如下:+ (void)openLocationServiceWithBlock:(void(^)(BOOL))callback{ BOOL isOPen = NO; if ([CLLocationManager locationServicesEnabled] && [CLLocationManager authori.
2020-12-17 15:17:05
2409
1
原创 iOS圆形颜色选择器
最近公司做一款彩色灯,涉及到app控制灯的颜色,这样就催生了这个需求:做一个颜色选择器。做完后的效果如下:实现源码:https://github.com/hpy8804/ColorPickerDemo
2020-12-17 11:24:14
1163
5
原创 使用python3读取Excel,导出翻译供iOS&Android使用
在日常工作中,我们在开发app的时候,经常有这么一种场景: 对于一个UI效果,如果存在多语言支持(国际化支持),我们往往希望事先在需要做翻译的地方标注对应的翻译标识符(这里我们称之为Key)。如果UI页面比较多的话,累积起来的Key就会很多。最后应用到项目中,我们就需要翻译人员针对每个Key给定不同语言下的显示值(这里我们称之为Value)。在一个项目中,如果翻译较多,涉及到的语言多的话,单靠人工来对应这个Key&Value的话,工作量将会是巨大的,而且也是非常容易出错的。 这个...
2020-11-04 10:13:53
328
原创 MAC上解决Python3的pip安装模块路径问题
默认mac上已经安装了 python2; 而我又安装了 python3,并使用 python3;安装了 pip 默认,pip安装的包安装在了 python2上了;但是我想用 pip把安装的包安装在 python3上 ,所以如下解决方式;1:在mac上先安装virtualenv终端:sudo pip install virtualenv2: 找到 python3的路径;默认 python2的路径都在 /usr/lib/目录下,但是python3的不在终端:which pyt...
2020-10-23 09:02:49
1430
原创 SiriKit使用
一、SiriKit介绍Siri是一款苹果 iOS 系统提供的智能语音助手软件,它的全名是Speech Interpretation and Recognition Interface。2011年Siri第一次以 iOS 内置软件的形式随iPhone 4s一同问世之后,终于在WWDC 2016上,苹果开放了Siri的 API,开发者们可以利用SiriKit将自己的服务提供给用户。备注:SiriKit是系统调用,是一个语义处理结合扩展UI的框架,不是语音转文字的框架。SiriExtensio...
2020-09-21 14:18:34
5181
原创 NSString、NSData、char相互转换
NSString 转换成NSData 对象NSData* newData = [@"testdata" dataUsingEncoding:NSUTF8StringEncoding]; NSData 转换成NSString对象NSData * data; NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 在iOS底层网络的开发中,会遇到NSData 转 NSSt
2020-07-06 08:53:18
1078
原创 RGB and YUV
什么是RGB、YUVYUV、RGB和YCbCr是色彩空间模型,而我们最常听到的BMP、PNG、JPEG、GIF都是文件存储格式。RGB就是red green blue三原色,任何颜色都可以通过这三原色按不同比例混合出来。所以应用很广泛。YUV则是亮度Y(灰度值)、色差信号U和V。我们人眼对色彩的亮度信息会比色差信息敏感,没有UV信息一样可以显示完整的图像,只不过是黑白的。在默认情况下是图像和视频压缩的标准。YCbCr 其实是YUV经过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致,C...
2020-06-10 13:24:24
822
原创 iOS内购规则及做法分析
1、 IAP规则详解本文所述IAP(In-App Purchase),特指苹果App Store的应用内购买,是苹果为App内购买虚拟商品或服务提供的一套交易系统。首先来讨论一下IAP的基本规则以及其中的一些要点:1.1 适用范围在App内需要付费使用的产品功能或虚拟商品/服务,如游戏道具、电子书、音乐、视频、订阅会员、App的高级功能等。苹果规定,适用范围内的虚拟商品或服务,必须使用IAP购买支付,不允许使用支付宝、微信支付等其它支付方式(包括Apple Pay),也不允许..
2020-06-01 11:15:18
7345
2
原创 MQTT协议
MQTT是什么?MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布,目前最新版本为v3.1.1。MQTT最大的优点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务。做为一种低开销、低带宽...
2020-01-17 11:10:22
1111
原创 linux连接iOS设备并且安装ipa应用
Android有个adb命令,可以很方便的做一些事情,比如直接安装应用。但是因为苹果比较封闭,没有直接的命令可以使用。但是有大牛做出了这样的东西–libimobiledevice关于libimobiledevice的描述A library to communicate with services of Apple iOS devices using native protocols.i...
2019-12-30 10:54:12
1979
原创 iOS开发 常备的底层面试题合集!
一、Runtime一个objc对象的isa的指针指向什么?有什么作用? 一个 NSObject 对象占用多少内存空间? 说一下对 class_rw_t 的理解? 说一下对 class_ro_t 的理解? 说一下对 isa 指针的理解 说一下 Runtime 的方法缓存?存储的形式、数据结构以及查找的过程? 使用runtime Associate方法关联的对象,需要在主对象deall...
2019-11-22 19:03:27
1617
原创 iOS开发 数据结构
集合结构 线性结构 树形结构 图形结构1.1、集合结构 说白了就是一个集合,就是一个圆圈中有很多个元素,元素与元素之间没有任何关系 这个很简单 1.2、线性结构 说白了就是一个条线上站着很多个人。 这条线不一定是直的。也可以是弯的。也可以是值的 相当于一条线被分成了好几段的样子 (发挥你的想象力)。 线性结构是一对一的关系 1.3、树形结构 说白了 做开发的肯定或多或少的知道xml 解析 ...
2019-11-22 16:44:09
280
原创 简述 `SSL` 加密的过程用了哪些加密方法,为何这么作?
简述SSL加密的过程用了哪些加密方法,为何这么作?SSL加密的过程之前有些过,此处不再赘述。SSL加密,在过程中实际使用了对称加密和非对称加密的结合。主要的考虑是先使用非对称加密进行连接,这样做是为了避免中间人攻击秘钥被劫持,但是非对称加密的效率比较低。所以一旦建立了安全的连接之后,就可以使用轻量的对称加密。...
2019-11-22 16:42:10
772
原创 iOS 内存相关面试题(内存中的5大区分别是什么?)
内存中的5大区分别是什么?栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 堆区(heap):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一块区...
2019-11-22 16:38:54
285
原创 iOS Runtime面试题(代码题 一)
题目一:下面的代码输出什么?@implementation Son : Father- (id)init { self = [super init]; if (self) { NSLog(@"%@", NSStringFromClass([self class])); NSLog(@"%@", NSStringFromClass([super...
2019-11-20 18:56:21
1022
原创 iOS Runtime面试题([self class] 与 [super class])
[self class] 与 [super class]下面的代码输出什么?@implementation Son : Father - (id)init { self = [super init]; if (self) { NSLog(@"%@", NSStringFromClass([self class])); ...
2019-11-20 18:56:13
646
原创 iOS 性能优化面试题(怎么检测图层混合?)
1、模拟器debug- 选中 color blended layers红色区域表示图层发生了混合2、Instrument-选中Core Animation-勾选Color Blended Layers避免图层混合:1、确保控件的opaque属性设置为true,确保backgroundColor和父视图颜色一致且不透明2、如无特殊需要,不要设置低于1的alpha值3、确保UIIm...
2019-11-20 18:56:05
751
原创 iOS 性能优化面试题(如何检测离屏渲染?)
1、模拟器debug-选中color Offscreen - Renderd离屏渲染的图层高亮成黄 可能存在性能问题2、真机Instrument-选中Core Animation-勾选Color Offscreen-Rendered Yellow离屏渲染的触发方式设置了以下属性时,都会触发离屏绘制:1、layer.shouldRasterize(光栅化)光栅化概念:将图转化为一...
2019-11-20 18:55:59
2094
原创 iOS 性能优化面试题(什么是 离屏渲染?什么情况下会触发?该如何应对?)
什么是离屏渲染?什么情况下会触发?该如何应对?离屏渲染就是在当前屏幕缓冲区以外,新开辟一个缓冲区进行操作。离屏渲染出发的场景有以下:圆角 (maskToBounds并用才会触发) 图层蒙版 阴影 光栅化为什么要避免离屏渲染?CPUGPU在绘制渲染视图时做了大量的工作。离屏渲染发生在GPU层面上,会创建新的渲染缓冲区,会触发OpenGL的多通道渲染管线,图形...
2019-11-20 18:55:51
825
原创 iOS 性能优化面试题(如何有效降低 APP 包的大小?)
如何有效降低APP包的大小?降低包大小需要从两方面着手可执行文件 编译器优化 Strip Linked Product、Make Strings Read-Only、Symbols Hidden by Default 设置为 YES 去掉异常支持,Enable C++ Exceptions、Enable Objective-C Exceptions 设置为 NO, Oth...
2019-11-20 18:55:44
648
原创 iOS 性能优化面试题(如何优化 `APP` 的电量?)
如何优化APP的电量?程序的耗电主要在以下四个方面:CPU 处理 定位 网络 图像优化的途径主要体现在以下几个方面:尽可能降低 CPU、GPU 的功耗。 尽量少用 定时器。 优化 I/O 操作。 不要频繁写入小数据,而是积攒到一定数量再写入 读写大量的数据可以使用 Dispatch_io ,GCD 内部已经做了优化。 数据量比较大时,建议使用数据库 网络...
2019-11-20 18:55:35
1059
原创 iOS 性能优化面试题(如何提升 `tableview` 的流畅度?)
如何提升tableview的流畅度?本质上是降低 CPU、GPU 的工作,从这两个大的方面去提升性能。CPU:对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制 GPU:纹理的渲染卡顿优化在 CPU 层面尽量用轻量级的对象,比如用不到事件处理的地方,可以考虑使用 CALayer 取代 UIView 不要频繁地调用 UIView 的相...
2019-11-20 18:55:29
574
原创 iOS 性能优化面试题(如何高性能的画一个圆角?)
如何高性能的画一个圆角?视图和圆角的大小对帧率并没有什么卵影响,数量才是伤害的核心输出label.layer.cornerRadius = 5label.layer.masksToBounds = true首先上面的方式是不可取的,会触发离屏渲染。 如果能够只用cornerRadius解决问题,就不用优化。 如果必须设置masksToBounds,可以参...
2019-11-19 15:02:52
590
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人