那片树海

用心做一件工艺品


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

给你的哈希算法加点“盐”

发表于 2019-03-15 | 更新于: 2019-03-15

我们在平常的开发过程中为了保证信息的完整性以及安全性,我们通常都会对信息进行哈希计算签名,然后比对签名信息。

但是黑客可以通过彩虹表反推原始输入,为了增加黑客的破解难度,我们会对原始输入做一些处理,通常的做法是加入另外一个输入(也就是盐)混淆,以sha1为例,大概是sha1(message+salt)这个样子。

注:message+salt并不是表示字符串拼接,是表示经过特定的计算或者字符组合。

Hmac算法(Keyed-Hashing for Message Authentication)是一个将盐加入哈希计算的标准算法,它会在计算过程中将salt混入计算过程中,而且它针对所有的哈希算法都通用,相比较我们自己的实现更标准也更安全。

阅读全文 »

2018年个人总结

发表于 2019-01-28 | 更新于: 2019-01-28

20190128-1

阅读全文 »

iOS单元测试-各种问题

发表于 2019-01-09 | 更新于: 2019-04-02

编写用例时注意

1.用例只针对SDK对外开放的入口

2.注意异常情况和边界值

3.注意用例之间的依赖情况

单测用例如何按照顺序执行

测试函数的执行顺序与测试的字符大小有关系,如- (void)test001Example > - (void)test002Example > - (void)testExample

理论上单元测试不应该控制用例的执行顺序,每个case都能够单独执行,但是针对某些特殊的情况,可以适当使用一次此特性。

阅读全文 »

iOS单元测试-代码实现

发表于 2019-01-09 | 更新于: 2019-01-28

iOS的单元测试代码我们使用Xcode自带的XCTest,XCTest可以从逻辑和性能两个方向进行测试,下面我们来一起看下如何实现。

逻辑测试

1.为工程添加一个单元测试的Target(已经有的可以略过这一步)

阅读全文 »

记一次cp错误

发表于 2018-11-15 | 更新于: 2018-12-29

前两天在编写脚本时遇到一个奇怪错误

rm -rf /Users/yzq/b/*
cp -r /Users/yzq/a/* /Users/yzq/b

使用这两个命令将a下面的工程拷贝的b中,然后编译b却始终报错,提示某个framework文件重复

a工程编译是没有问题的
手动清空b,将a中的文件手动复制到b编译也没有问题

最初以为是rm -rf /Users/yzq/b/*命令没有清除掉某些缓存或者隐藏文件之类的,后来验证发现和rm无关

经过文件比较发现报错的framework与正确的framework下某个文件存在差异,正确的是以链接(快捷方式)的方式存在的,而错误的是一个文件夹,文件夹下还有对应的文件,原来这种错误是我们复制时没有保留对应的文件属性导致的,使用cp -a /Users/yzq/a/* /Users/yzq/b进行复制即可解决,因为-a在复制的同时保留了文件的链接及文件属性

所以正确的命令应该是

rm -rf /Users/yzq/b/*
cp -a /Users/yzq/a/* /Users/yzq/b    
阅读全文 »

Xcode 10 library not found for -lstdc++.6

发表于 2018-10-10 | 更新于: 2018-10-10

最近升级了Xcode 10,发现编译的时候报如下错误,在Xcode 9上正常:

library not found for -lstdc++.6

这个是因为iOS 12废弃了libstdc++,也删除了相关的库,改为使用libc++替代

解决方案

将缺失的库拷贝到原来对应的目录下,使Xcode能够引用

将相应的库拷贝到如下四个目录当中,才能保证模拟器和真机都能用,缺少哪个库拷贝哪个就行,不用全部拷贝

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/

文件下载:libstdc++

其他

如果拷贝进去之后重启Xcode编译还是报这个错误,建议在TARGETS->Build Phases->Link Binary With Libraries当中把当前依赖添加进去

多说两句

这种方法虽然可以暂时解决问题,但最好还是升级下相关库,使用新的库和API。

编写一个基于node的CLI

发表于 2018-09-05 | 更新于: 2018-12-29

最近因为需要给其他同事提供一些方便开发的工具,就写了一个基于node的CLI,下面给大家分享下怎么自己去动手写一个基于node的CLI。

原理

当前端工程安装到全局目录下之后,可以直接通过别名来执行package.json当中bin下面的js文件,我们就是通过编写这个js文件来实现相应命令。

{
  "name": "testnode-cli",
  "version": "1.0.0",
  "description": "CLI测试",
  "main": "index.js",
  "bin": {
    "testnode": "./bin/index.js"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git@github.com:yangzq007/testnode-cli.git"
  },
  "author": "yangzq007@126.com",
  "license": "ISC",
  "dependencies": {
    "commander": "^2.15.1"
  }
}
阅读全文 »

Cocoapods target has transitive dependencies that include static frameworks

发表于 2018-07-09 | 更新于: 2018-12-29

最近在写一个新的Swift工程,在引用旧的objective-c的pod时开启了use_frameworks!配置项,结果在pod install和pod update出现了这么一个问题

target has transitive dependencies that include static frameworks: (AAA)

问题原因

Podfile中不使用use_frameworks!时是会生成相应的.a(静态链接库)文件,然后通过static libraries来管理pod代码,在Linked时会包含该pod引用的其他的pod的.a文件

Podfile中使用use_frameworks!时是会生成相应的.framework文件(动态链接库:实际内容为Header+动态链接库+资源文件),然后通过dynamic frameworks的方式来管理pod代码,在Linked时会包含该pod引用的其他的pod的.framework文件

我们开启了use_frameworks!以动态framework的方式引用了AAA,然而AAA实际上是一个静态库,需要拷贝并链接到该pod中,然而dynamic frameworks方式并不会这么做,所以就报错了。

解决方案

在引用AAA的pod的podspec文件当中开启static_framework配置

s.static_framework = true

把该pod作为一个静态framework来编译链接,这样AAA就会被拷贝链接到到该pod的framework当中,这样就能正常引用了。

iOS Archive之后出现Other Items无法导出

发表于 2018-05-28 | 更新于: 2018-05-28

最近在iOS打包时碰到了无法导出为ipa的情况,问题表现为打包之后包出现在Other Items下而不是iOS Apps下。

这是因为打包的项目中某些配置导致打出来的包多了一些文件,网上大致有以下几种解决方案:

1.依赖工程的skip install设置为Yes,Build Settings->Deployment->Skip Install

2.依赖工程Build Phases->Copy Headers中所有的头文件拉到Project下,即Public和Private下不能有文件

3.清空Build Settings->Deployment->Installation Directory选项的内容

这里我需要指出的是如果你是升级了CocoaPods之后出现的这种情况,而且CocoaPods的版本大于1.3.1并且小于1.5.2,那么也有可能是CocoaPods的脚本错误造成的,所以可以尝试下

4.将CocoaPods降级至1.3.1或者升级为大于等于1.5.2的版本

另外苹果官方有个文档,虽然比较旧,也可以参考下
https://developer.apple.com/library/content/technotes/tn2215/_index.html

CocoaPods重复生成UUID的问题

发表于 2018-05-28 | 更新于: 2018-12-29

最近使用CocoaPods在pod install或者pod update时会出现[!] [Xcodeproj] Generated duplicate UUIDs:的错误,大段的warning占满整个终端。

解决方案:

终端执行如下命令

export COCOAPODS_DISABLE_DETERMINISTIC_UUIDS=YES

后续CocoaPods已经把该配置移入到Podfile当中,执行上面命令无效的可以在Podfile当中添加如下配置即可:

//建议放在文件开始或者source之后    
install! 'cocoapods', :deterministic_uuids => false
123…6
树海

树海

59 日志
1 分类
21 标签
RSS
GitHub Weibo
© 2023 树海
由 Hexo 强力驱动
|
主题 — NexT.Muse