算法——两数之和、字母异位词分组、最长连续序列、移动零
算法——两数之和、字母异位词分组、最长连续序列、移动零的实现 两数之和 给指定的数,找到数组中两数之和为给定数的 index 思路: 使用字典 dict 存储,key 为数组中 index 对应的值, value 为 index。然后遍历数组, 如果 target - value在数组中存在,则返回target-value 对应的字典的 value 即 index和当前 value 对应的 index; 如果不存在,则把当前 value 和 index 存入数组中。 解法: 123456789101112131415161718192021/**index, value 遍历数组如果 target - value 在字典中,则返回字典中的index和当前index如果不存在,则存储当前值和 index,dict[value] = index*/func twoSum(_ nums: [Int], _ target: Int) -> [Int] { var dict = [Int: Int]() for (index, value) in nums.enu...
提醒描述文件有效期的 Mac APP 开发
背景之前有写过使用Python实现提醒iOS描述文件有效期,这篇文章介绍一下使用SwiftUI通过Mac APP实现提醒描述文件有效期。 实现原理是: 打开描述文件所在的文件夹,遍历读取文件内容,过滤掉后缀不为.mobileprovision的文件,然后读取文件内容(这里不需要再存储为其他格式,因为可以直接读取内容),从文件中读取指定的字段,然后根据ExpirationDate字段判断是否过期。 想要实现的功能: 不同有效期期显示不同颜色——已完成 筛选过期的、临近过期的、正常的描述文件——已完成 添加到期提醒到日历——已完成 筛选同一个 BundleID 重复的描述文件——未完成 一键删除所有过期的描述文件——已完成 代码放在了ScanProfileInfo,感兴趣的下载运行即可。 样式如下:
Safari 获取 Bing Rewards 插件
背景Bing Rewards 可以兑换天猫礼品卡、中国石化礼品卡、肯德基电子券、盒马礼品卡、苹果礼品卡等。level 1 的时候每天至多获取 30 积分,level 2 的可以电脑端 90积分、手机端60 积分。每天150 积分点着太累了,就想着有没有一键的便捷操作。 找到了一个通过 Chrome 插件Rewards-Search-Automator: Chrome / Edge extension for automatic Bing Search,来实现的,除去其中的 Mobile 不生效,外加搜索完成跳转开发者的网站,别的还好,可以自己下载代码,修改去掉跳转开发者网站的逻辑。 但是就是还有个问题,在 iPhone 上用不了,所以手机端的 60 积分还是不能一键获取,所以就想到了,借鉴这个做个 Safari 插件,然后就可以在iPhone上用了。 实现逻辑很简单,iPhone 使用 Bing 搜索,然后抓包出请求,然后提取出关键的form,再封装到 Safari Extension 中,当 popup 出来的时候,触发搜索。添加生成随机字符串的逻辑,每隔 6 秒,重新搜...
Safari 中简书登录框屏蔽
背景在[[借助腾讯混元助手屏蔽简书登录框]]中已经实现了Chrome 中屏蔽简书登陆框、右侧热门、左侧点赞、以及底部推荐。然后我用Userscripts 在 Safari 中使用了一下,发现登陆框并不能屏蔽掉,所以这里再补充下,如果在 Safari 中移除简书登陆框。 实现排查原因首先,回顾一下:在 Chrome 中是如何移除登录框的?通过移除class="__copy-button"的 div 后面新增 div 的来移除,即使用class="__copy-button"作为锚点来定位,但是在 Safari 中,查看源代码可以看到,并没有这个class="__copy-button"的 div,所以导致了移除失败。 这让我突然意识到,class="__copy-button"这个可能不是简书源代码中的东西,而是Tampermonkey中使用了某个脚本导致的,而在 Safari中,缺失了这个脚本,所以没有这个东西。验证如下: — | — 所以,选用class="__copy-button...
借助腾讯混元助手屏蔽简书登录框
背景查东西的时候,有些文章在简书,然后在浏览简书的时候,未登录时会弹出登录框,很烦人,所以想屏蔽掉。也想把右边的热门故事和底部的推荐关闭掉。说实话,我对《离婚后,妈宝男前夫后悔了》之类的是真的不感兴趣啊。。。所以就想通过 js 实现过滤掉这三部分。通过暴力猴,然后自己实现一个过滤脚本,具体步骤如下: 首先明确需求,要移除的共有三个部分, 未登录时的登陆框 右边的热门故事 底部的推荐 如下图所示: 然后一步步来看。 实现登陆框的移除查看网页源代码,对比登录框弹出前后,可以看出,当登陆框弹出时,body的style变为了overflow: hidden;;且尾部多了一个div。如下图: 所以如果想要去除登陆框,要做的就是在登陆框弹出时,移除尾部的div,并把body的style改为none。问题是,如何判断登陆框弹出时? 有两种方案,一种是监听滚动的位置,因为观察发现,登陆框是滚动到指定位置时才弹出的。还有一种是,换一个思路,监听 body 的 style,当body的style变为overflow: hidden;时,说明登陆框弹出了。 这里采用方法二,因为方法一太麻烦...
Python实现提醒iOS描述文件有效期
Python实现提醒iOS描述文件有效期背景公司企业APP描述文件过期,没有提醒,导致当天出现不可用的问题。 为了避免再发生类似的问题,笔者想要写一个Python脚本,读取描述文件,获取有效期,设置提醒,且自动运行。 实现首先再来理一下思路,所有的描述文件都在~/Library/MobileDevice/Provisioning Profiles/目录下,但是里面的内容通常不会自动删除,过期的或者重复的都在这个目录中,而且这个目录下的文件名是uuid命名的和Xcode中的文件名字也不能直接对应,所以一眼看去,只能用一个字形容:乱。 如果账号是管理员,直接登录在电脑上,项目中用的自动管理描述文件的,还好一些,现在会自动续期。但是如果账号是开发者,发布的描述文件没有权限用自动管理的,就需要注意这个描述文件有效期的问题。 再来理一下思路,想要的是一个读取描述文件夹下所有描述文件,获取描述文件中的内容,根据有效期,设置提醒,且自动运行的脚本。 那这里面最重要的是什么?是获取描述文件的内容,这关系到这个思路是否可行。 获取描述文件的内容首先,来看下,描述文件的格式是uuid.mobi...
Mac M2芯片安装Picgo 打不开
Mac M2芯片安装PicGo 打不开背景Mac M2 芯片,PicGo安装后打开提示PicGo 已损坏,无法打开。 解决起初以为是打开的方式不对,因为有些新APP,从 LaunchPad 中打开会报错,从 Application/中打开一次就可以了;但是这个从Applicaiton中打开也报这个错; 然后以为是下载的版本不对,是不是下载的不是 arm64 芯片的,于是又专门去下载了一次。结果再次打开还是报这个错。 搜索了一下发现,解决方法如下: 在终端输入: 12345# sudo xattr -r -d com.apple.quarantine 你的APP路径sudo xattr -r -d com.apple.quarantine /Applications/PicGo.app Ps: 然后再备注一个 PicGo 设置 Github图床一直失败,可以看下分支是不是 main,PicGo默认是 master,所以分支也要改对。
yilia 接入 google adsense
yilia 接入 google adsense背景昨天看 V2 上有个老哥说,自己离职一个月,收益怎么怎么样,然后看到里面有个 Google Adsense 的收益,想到给自己的 blog 也添加一下,虽然是个小网站,但是还是想试试。 步骤开通 Google AdsenseGoogle搜索 Google Adsense,我已经有谷歌账号了,但是没有开通google adsense,打开按照步骤绑定即可,选国家就按照实际的选,选中国也是支持的。 配置 Google Adsense然后会出现一个添加广告代码的逻辑,提示把这段代码放在每个页面的中,这里我的博客是用 hexo 搭建的,我以为自己的主题是 Next,按照关键字 “hexo next 主题添加 Google adsense”,搜索出来的方法放在themes\next\layout\_partials\head.swig中任意一个script块下,然后重新发布,点击网页上的验证,结果不通过。 12<script async src="https://pagead2.googlesyndication.com...
无标题
网络货运平台SDK初始化失败修改背景之前集成了网络货运平台SDK,已经成功初始化,调试过。后来由于变动,这个功能搁置了,最近重新启用这个功能,发现初始化失败。报错如下: code = 100018, fail = “公钥为空”, message = “服务开启失败”。 如下图: 排查排查一由于报错公钥为空,所以首先排查初始化时传入的appId、appSecurity、enterpriseSenderCode,确认这些值没有错误,且正常可用(安卓端可以初始化成功),然后排查初始化方法,确认方法调用没有错误。 然后陷入了疑惑,为什么SDK 集成成功,所有需要的值没有错误的情况下,SDK初始化失败,且提示公钥为空呢? 排查二无奈,再次下载 QQ,联系网络货运平台 SDK 的技术支持,答复说:100018是加密 pod可能有问题(这里建议联系的时候要有耐心,且要有悟性),距离我上次集成已经过去一年了,已经忘记了当时集成的时候都有哪些 Pod 库,技术支持指明了方向,余下的只能自己查了。再次查看集成文档发现,SDK 依赖了GMObjC和GMOpenSSL两个库。且提供的文档里指定的版...
Pod 私有库相互引用
私有库的相互引用文章是转载自OC和Swift混合开发(Pod私有库的相互引用),在这里记录一下,方便以后查看。 概述:该文档主要介绍OC和Swift混合开发相互调用,包括3大类情况和12种具体情形。 三大类情况: 主工程内的混合互调, 主工程和Pod三方库之间的混合互调, Pod三方库和其他Pod三方库之间的混合互调。 十二种情形: 主工程内的OC 调用 主工程内的OC:#import “NSObject.h” 导入头文件直接调用。 主工程内的OC 调用 主工程内的Swift: 1. 主工程中创建.pch文件,在TARGETS -> Build Setting -> 搜索pch -> 设置.pch文件的路径, 2. 在.pch文件中添加 : 例如:#import “xxxxx_Swift.h” (该文件命名规则为:”工程名_Swift.h”,该文件为系统自动生成) , 3. 编译之后才可自动识别需要调用的Swift的文件 。 主工程内的OC 调用 OC的Pod三方库: #import ...