跳至主要内容

博文

目前显示的是 五月, 2018的博文

go 交叉编译

原文链接 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。 Mac 下编译  Linux  和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build linux  下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build Windows 下编译 Mac 和 Linux 64位可执行程序 SET CGO_ENABLED=0SET GOOS=darwinSET GOARCH=amd64 go build main.go SET CGO_ENABLED=0SET GOOS=linuxSET GOARCH=amd64 go build main.go GOOS:目标平台的 操作系统 (darwin、freebsd、linux、windows) GOARCH:目标平台的体系 架构 (386、amd64、arm) 交叉编译不支持 CGO 所以要禁用它 上面的命令编译 64 位可执行程序,你当然应该也会使用 386 编译 32 位可执行程序 很多博客都提到要先增加对其它平台的支持,但是我跳过那一步,上面所列的命令也都能成功,且得到我想要的结果,可见那一步应该是非必须的,或是我所使用的  Go  版本已默认支持所有平台。

iOS App的加固保护原理

原文链接 本文从攻防原理层面解析了iOS APP的安全策略。iOS以高安全性著称,但它并非金刚不坏之身。对于信息安全而言,止大风于青萍之末是上上策,杭研深入各个细节的研发工作,正是网易产品质量的保障。 一、iOS的安全问题 世所公认,iOS系统安全性非常高,很少出现漏洞,几乎不会中毒的情况。然而随着各种iOS安全隐患的频频出现,人们逐渐认识到,iOS跟Android一样也面临严重的安全问题。苹果宣称所有的iPhone都很安全,不会被恶意软件攻击,其实这只不过苹果封闭式的系统管理能够及时处理漏洞罢了,这也正是苹果不敢开放的原因。 我们已经习惯,每个新的iOS系统出来没多久,就会有大牛找到越狱的方法。比较有名的越狱团队如iH8Sn0w、Geohot、Comex等,以及国内的盘古团队。就像最新iOS 10.1.1版本,刚出来一个星期,安全研究员Luca Todesco就在推特上晒图自曝越狱成功,iH8Sn0w和盘古团队也取得了不错的进展。只要越狱了,iPhone手机就处于完全裸奔状态,很多平时不能做的事情就可以做了,比如破解分析APP、大范围泄露用户隐私数据等。 其中,跟我们iOS开发者息息相关的问题,主要就是被破解、分析。APP被破解分析进而刷单作弊,或者APP被山寨以次充好等。APP一直以来存在的“山寨”现象,引起越来越多开发者的不满,山寨泛滥的后果将是劣币驱逐良币,打击创新者的积极性,造成恶性循环。 下面举几个例子: 山寨APP 比如上面的《神庙逃亡》应用,左边是合法的,右边是山寨的,山寨的APP就把图标的背景色以及局部做了一些修改,看起来和正品是如此的相似。 微信多开 这类APP在淘宝上都有销售。正常情况,一个手机只能有一个微信账号在线,但是微信分身版让用户可以在同一个手机上同时登录多个微信号,这样可以满足一些用户的不同需求,比如进行公众号营销、用不同的微信号联系不同的人等。同时这些破解后的微信还有一键转发小视频、一键评论、一键点赞等强大的功能。 自动抢红包 下面是一款红包神器的运行页面: 打开这款神器后再登录微信,如果微信群里有人发出红包,它就会第一时间帮你抢到红包了,从此“发家致富,迎娶白富美,走上人生巅峰”,哈哈! 那么,看起来如此高级的东东又是怎么实现的呢?下面我们做简要的介绍,只...

微信小程序开发之webview组件内网页实现微信原生支付

原文链接 实现方式和主要流程 先说明一下整个小程序实现webview调用支付的代码结构如图 : 整个结构很清晰、简单,不做过多解释。微信小程序采用的MVVM的模式。 xxxx.wxml 类似于安卓activity的xml文件。 xxxx.js 类似于安卓中MVC模式的控制层。 xxxx.wxss 类似于前端的CSS样式。我们目前几乎没用到,因为只用到了小程序的webview组件。 原理分析 我们来看一下微信小程序支付的的业务流程: 上面已经提到如果需要小程序的webview组件调起微信支付,需要网页内部统一下单得到支付参数,然后通过小程序API调起微信支付,如下: wx.requestPayment( { 'timeStamp' : '' , 'nonceStr' : '' , 'package' : '' , 'signType' : 'MD5' , 'paySign' : '' , 'success' : function (res){}, 'fail' : function (res){}, 'complete' : function (res){} }) 那么小程序如何得到支付参数呢,查看webview的API文档发现 webview的内部网页可以通过JSSDK的该API 实现webview网页内部控制小程序。 wx.miniProgram.navigateBack 进行小程序页面的跳转比如我们的项目在 index.wxml 的 webview 网页内部使用该API就可以控制小程序从index page 跳转到wxpay page。 具体实现步骤 1 在index.wxml文件添加webview组件,用来装载原公众号里面的网页内容 <web-view src="{{url}}"></web-view> 该url是index.js里面data定义的一个变量``,方便通过index.js的setData方法对webview的网页进行动态加载 2 新建w...

ES6常用知识点概述

原文链接 ES6,并不是一个新鲜的东西,ES7、ES8已经赶脚了。但是,东西不在于新,而在于总结。每个学前端的人,身边也必定有本阮老师的《ES6标准入门》或者翻译的《深入理解ECMAScript6》。本篇主要是对ES6的一些常用知识点进行一个总结。如果你喜欢我的文章,欢迎评论,欢迎Star~。欢迎关注我的 github博客 正文 我们会更具之前的罗列的内容进行一个深入的分析。 变量的新定义——let和const 在ES6没有被普及时,我们会用的变量定义的方法是var。其实,var对于一个刚刚接触js的人说,或许并不觉得怪异。但是,对于一个开发者而言,或许会在内心抨击它。因为它就是javascript的败笔之一,在其他语言看来的一个怪胎。那我们就来看看怪在何处呢? 可以重复定义 。不知道你的代码里面会不会出现这样子的代码,举例: var a = 10 ; var a = 11 ; 或许,你会看到这样子的写法觉得没啥,那么你很厉(wei)害(xian)。其实,这样子的坏处不言而喻。在大型的工程化开发中,你定义一个a,我定义一个a,还有千千万万个你和我,这时,技术总监就该着急了。所以,这是var的第一点令人讨厌的地方,但是如果你会说不是有严格模式嘛。的确,严格模式做了一定的规范,但是我们不加以讨论。毕竟,这时ES6的地盘(^-^)。 可随意修改 。何为可随意修改?并不是指变量,而是指常量。举例: var PI = 3.1415926 PI = 4.1415926 从例子中,我们可以看到,PI是一个我们经常会使用的常量,是公认的不可变动的。但在javascript中并不是如此。那天,如果你的PI被你们公司新晋的实习生改了,可能你找错误都得找半天,但这可不是实习生的锅,也许,他并不知道这里是个常量。不过,这种情况也是玩笑话(^_^)。 没有块级作用域 。如果你连块级作用域都不知道的话,赶紧收藏一下^_^,回头再来看哈~,举例: if ( true ){ var i = 10 ; } console .log(i); //10 相信,这变量不存在块级作用域给我们带来过不少麻烦吧。不知道啥时候,又得在循环中套一层闭包呢。而且,在非js开发者来说,可能觉得是个特(xiao)点(hua)。...