V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  chillwind  ›  全部回复第 1 页 / 共 1 页
回复总数  20
2021-07-29 10:44:43 +08:00
回复了 zw1234 创建的主题 奇思妙想 [搞个副业]临期商品百亿风口,就差一个程序员了
@zw1234 求拉 base64 Y2hpbGx3aW5kdGFu
2021-01-13 10:04:00 +08:00
回复了 chillwind 创建的主题 Android 像滴答清单这种提醒弹框是怎么实现的?
@vone 应该不是,切换完其他 app 这个悬浮窗应该会消失。而且没有给 SYSTEM_ALERT_WINDOW 权限
2020-08-28 15:16:06 +08:00
回复了 chillwind 创建的主题 macOS 一段 object c 代码想转 Swift ,有什么方法吗?
看了半天 swift,自己人肉转了一个。用的不对的地方,还请各位指正
```
import Foundation
import CommonCrypto

struct AES {

// MARK: - Value
// MARK: Private
private let key: Data
// MARK: - Initialzier
init?(key: String) {
guard key.count == kCCKeySizeAES128 || key.count == kCCKeySizeAES256, let keyData = key.data(using: .utf8) else {
debugPrint("Error: Failed to set a key.")
return nil
}


self.key = keyData

}


// MARK: - Function
// MARK: Public
func encrypt(string: String) -> Data? {

let iv = randomGenerateBytes(count: 16)!

let cryptData = crypt(data: string.data(using: .utf8), iv: iv, option: CCOperation(kCCEncrypt))!

var hmac = Data(count: 32)
cryptData.withUnsafeBytes { v in
hmac.withUnsafeMutableBytes { res in
key.withUnsafeBytes { k in
CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA256), k.baseAddress!, key.count, v.baseAddress!, cryptData.count, res.baseAddress!)
}
}
}

let messageData = NSMutableData()
messageData.append(iv)
messageData.append(cryptData)
messageData.append(hmac)

return messageData as Data
}

func decrypt(data: Data) -> String? {
//验证数据
let ivByteData = data.subdata(in: 0..<16)

let contentByteData = data.subdata(in: 16..<(data.count - 32))

let serverHmacData = data.subdata(in: (data.count - 32)..<data.count)
print(data.count)


var hmac = Data(count: 32)
contentByteData.withUnsafeBytes { v in
hmac.withUnsafeMutableBytes { res in
key.withUnsafeBytes { k in
CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA256), k.baseAddress!, key.count, v.baseAddress!, contentByteData.count, res.baseAddress!)
}
}
}

if (serverHmacData == hmac) {
let decryptedData = crypt(data: contentByteData, iv: ivByteData, option: CCOperation(kCCDecrypt))
return String(bytes: decryptedData!, encoding: .utf8)
} else {
print("HMac 不一致")
return nil;
}


}

func crypt(data: Data?, iv: Data, option: CCOperation) -> Data? {
guard let data = data else { return nil }

let cryptLength = data.count + kCCBlockSizeAES128*2
var cryptData = Data(count: cryptLength)

let keyLength = key.count
let options = CCOptions(kCCOptionPKCS7Padding)

var bytesLength = Int(0)

let status = cryptData.withUnsafeMutableBytes { cryptBytes in
data.withUnsafeBytes { dataBytes in
iv.withUnsafeBytes { ivBytes in
key.withUnsafeBytes { keyBytes in
CCCrypt(option, CCAlgorithm(kCCAlgorithmAES128), options, keyBytes.baseAddress, keyLength, ivBytes.baseAddress, dataBytes.baseAddress, data.count, cryptBytes.baseAddress, cryptLength, &bytesLength)
}
}
}
}

guard UInt32(status) == UInt32(kCCSuccess) else {
debugPrint("Error: Failed to crypt data. Status \(status)")
return nil
}

cryptData.removeSubrange(bytesLength..<cryptData.count)

return cryptData
}


func randomGenerateBytes(count: Int) -> Data? {
let bytes = UnsafeMutableRawPointer.allocate(byteCount: count, alignment: 1)
defer { bytes.deallocate() }
let status = CCRandomGenerateBytes(bytes, count)
guard status == kCCSuccess else { return nil }
return Data(bytes: bytes, count: count)
}
}

```
@DeweyReed 今天试了一下 paging + room,通过 onZeroItemsLoaded 初始化数据,onItemAtEndLoaded 拉取后面的数据,测试基本功能可用,但是 onItemAtFrontLoaded 数据会有问题,onItemAtFrontLoaded 开始就会执行,而且 RecyclerView 定位到 onItemAtFrontLoaded 的第一条数据,而不是 onZeroItemsLoaded 的第一条数据。不知道是不是我对 PagedList.BoundaryCallback 理解不对,还是有别的方法?
@DeweyReed 用 paging 刷新时也会卡一下的,感觉是靠 SCROLL_STATE_IDLE 触发的加载数据,没有 onScrolled 里做的加载顺滑
在 AppTheme 里加了个配置 <item name="android:fontFamily">miui</item> 在小米手机上实现了跟微信一样的效果
但是在华为手机上会崩溃。xml 文件里似乎是不能判断机型,全局字体有没有办法可以通过代码配置?
@wowbaby 安卓端没有这个问题,证书验证逻辑不一样?
@wowbaby 是的,用的 let's encrypt,你后续换的什么证书?
不太可能是后端问题,iOS 端配置好 charles 的代理,请求就正常了。charles 要安装个证书在手机上,这部分原理不是很清楚,怀疑是不是减少了证书验证环节,证书验证在电脑上的 charles 上进行了。
服务器端 nginx 收到请求也有延迟,nginx 的日志在客户端启动后约 3s 打印出来
2020-03-30 14:08:36 +08:00
回复了 chillwind 创建的主题 Android 求推荐一个好用的富文本编辑器,支持图文混排
为什么这么多人对接 javascript 的?我需要 android 原生的
2020-03-14 21:42:31 +08:00
回复了 smileherd 创建的主题 分享创造 跳票 3 个月,终于把 dislike Android 版捣鼓出来了~
试用了一下,还不错
2016-04-20 11:19:59 +08:00
回复了 chillwind 创建的主题 酷工作 中国移动杭州研发中心招聘前端和 iOS 开发
@hegfirose 前端 leader 比较年轻,有兴趣可以面试的时候详谈
2016-04-19 21:34:25 +08:00
回复了 chillwind 创建的主题 酷工作 中国移动杭州研发中心招聘前端和 iOS 开发
@hegfirose 想了解那个职位的 leader ?
2016-04-19 21:33:31 +08:00
回复了 chillwind 创建的主题 酷工作 中国移动杭州研发中心招聘前端和 iOS 开发
@hymie 有内推,如果有实力,不在乎这个的^-^.
2016-04-19 21:32:37 +08:00
回复了 chillwind 创建的主题 酷工作 中国移动杭州研发中心招聘前端和 iOS 开发
@zdbeyond 抱歉,初级暂时不招,自己锻炼成高级可以再来
2016-04-19 21:31:49 +08:00
回复了 chillwind 创建的主题 酷工作 中国移动杭州研发中心招聘前端和 iOS 开发
@quietDown 前端是招的,但是校招已经结束了
2016-04-18 18:47:36 +08:00
回复了 chillwind 创建的主题 酷工作 中国移动杭州研发中心招聘前端和 iOS 开发
@shellcodecow 年薪 20-40 吧
2016-04-18 18:38:18 +08:00
回复了 chillwind 创建的主题 酷工作 中国移动杭州研发中心招聘前端和 iOS 开发
@mahone3297 现在位于西溪路 550 号西溪新座, 17 年底会搬到未来科技城自建的园区
2016-04-18 18:37:20 +08:00
回复了 chillwind 创建的主题 酷工作 中国移动杭州研发中心招聘前端和 iOS 开发
@fangquanquan 实习生暂时不可以
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1590 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 16:54 · PVG 00:54 · LAX 09:54 · JFK 12:54
Developed with CodeLauncher
♥ Do have faith in what you're doing.