天猫最近搞了个全民开喵铺瓜分20亿活动, 大概套路就是浏览各种商品和店铺来挣喵币, 喵币升级喵铺, 到11月10号按等级分红包.
作为一个程序员怎么能手动去浏览挣喵币呢, 而且还要每个滑动浏览15秒, 于是这里提供自动脚本教程
先上效果图:
天猫最近搞了个全民开喵铺瓜分20亿活动, 大概套路就是浏览各种商品和店铺来挣喵币, 喵币升级喵铺, 到11月10号按等级分红包.
作为一个程序员怎么能手动去浏览挣喵币呢, 而且还要每个滑动浏览15秒, 于是这里提供自动脚本教程
先上效果图:
ijkplayer 是 bilibili 开源的一款优秀的播放器, 基于 FFmpeg, 支持 iOS/Android, 点播/直播, 以及多种编码. 官方并不直接提供 framework 框架包, 这样大家可以根据需要选择配置, 自己编译并打包. 但是也让很多第一次使用的小伙伴一脸懵逼, 并且默认配置只支持 http, 如果想播放 https 链接的视频, 那么需要做额外的配置
本文为 iOS 的编译打包过程, 环境为 Mac + Xcode
安装 homebrew, git, yasm. (如果已经安装好可以跳过, 不清楚的再来一遍也无妨)
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm
最近微信跳一跳这个小游戏火爆, 由于朋友排行版的存在, 激发了我们的上(pan)进(bi)心. 除了正常方式爆肝提高分数以外, 也有各种技术宅的非正常手段出来:
第 3 种方法相当于第 2 种方法的软件版, 本文用的就是这种方式
ps:
目前方法 1 的提交漏洞已经被修复, 方法 3 特别是方法 2 原理上是模拟人的操作 (代码中有故意随机偏移落地点和停顿间隔), 理论上微信是没法区别的, 但是微信貌似有一套成长曲线检测方法, 如果你的进步曲线不科学, 还是会把你分数清零的
NSString
常量定义:
正确:
NSString * const name = @"value";
错误:
const NSString * name = @"value";
NSString const * name = @"value";
总结: const
在 *
前 代表 *name
不可变, 在 *
后代表 name
不可变. 我们一般都 是想让 name
的值不变, 所以应该把 const
放在 *
后;
*
前面是指针指向的修饰符, *
后面是指针本身的修饰符
格式化日期输出星期的不同表示:
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"E EE EEE EEEE EEEEE EEEEEE EEEEEEE";
NSString * dateStr = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"%@", dateStr);
//输出: 周六 周六 周六 星期六 六 周六 周六
Keychain
(钥匙串) 中的数据不会随应用卸载而删除, 除非恢复出厂设置. 所以可以生成一串字符保存到钥匙串中, 作为设备唯一标识.生成一串唯一的字符作为设备唯一标识. 要在一个大程度上唯一的只有 UUID 了. iOS中提供了相关方法可以获取 UUID
:
[[NSUUID UUID] UUIDString]
: [NSUUID UUID]
方法每次调用都会生成一个不同的 UUID
.
[[[UIDevice currentDevice] identifierForVendor] UUIDString]
: identifierForVendor
可以获取这个应用在这台手机上的唯一标识, 但是卸载重装应用之后会变化.
把 UUID
保存到 Keychain
中: 直接操作 Keychain
的代码是非常繁琐容易出错的, 所以使用一个已经封装好的操作类 SFHFKeychainUtils 来操作 Keychain
.