`
文章列表
iteye的人气现在很差了,而且主页君的质量也相当令我蛋疼 今天开始正式移动到http://blog.csdn.net/kyfxbl了。ITEYE的这个博客以后只定期把CSDN的博客同步过来,保证内容一致,但是排版和分类就不重复维护了 我在csdn的id还是kyfxbl,欢迎大家继续关注我,谢谢!
最近看一个app的源码,发现基本没有用第三方的开源组件,但是特效也做得不错,总结一下实现的思路 <!--more--> 简单的抽屉效果 效果如图: 这种抽屉效果很常见,开源组件也很多。但是一般开源组件都对Controller的结构有要求,有时候不是很方便。 原理主要是:主页面加侧边栏。当弹出侧边栏时,设置主页面的x为一个负数;当收回侧边栏时,将主页面的x设置为0。再加上一些动画和手势就可以了。 初始化侧边栏 func addSidePanelController() { if (sidePanelController == nil) { ...
java平台的keystore是对https证书的一种包装,配置方式和http服务器的证书配置略有不同 <!--more--> 最近和一个第三方系统对接,需要安全认证。安全认证有2种方式,一种是在应用层实现,比如通过ws-security或者在报文头增加一些字段等;另外一种是借助https,对应用层透明。本次对接采用的是https的方案 根据部署方式的不同,具体的实现也有区别。一般在tomcat前面会有一个http服务器如nginx来接收https请求并转发,那么需要在nginx上配置证书。但是这次对方是直接用tomcat响应web请求,所以需要在tomcat里配置 一开始我 ...
hitTest方法,简而言之,就是给定一个点,返回一个view或layer,判定当前是哪一个view或layer被点中了 <!--more--> 原理 当用户触摸屏幕的时候,系统会依次调用view层次中各个子view的hitTest方法,来判断当前是哪个view被点中,决定谁是first responder。关于这点,这篇文章总结得不错:iOS事件分发机制(一) hit-Testing 默认的实现就是触摸点是否在此view的范围内,开发者可以重写此方法,来实现不同的逻辑。具体来说有2种常见的场景 重写UIView的hitTest方法 比如为了扩大某个view的点击 ...
在iOS中绘图,可以使用UIView,也可以使用CALayer。实际上,UIView也是由底层的CALayer完成绘制的工作 <!--more--> UIView和CALayer的关系 每个UIView内部都有一个CALayer对象,由它来完成绘制的工作。和view一样,layer也是一个树形的结构 当不需要自定义组件的时候,用UIView的API就足以胜任,把需要的子view通过addSubview()方法放到view的层次里即可;但是如果需要自己绘制一些图形,就需要在UIView的drawRect()方法或是CALayer的相关方法中,调用CoreGraphics的A ...
这几天尝试了使用Interface Builder,跟以前用纯代码开发还是有比较明显的区别,本文总结一下这几天的感受 <!--more--> 原理 总的来说,在IB里的操作,会在编译时由xcode生成代码,本质上和纯代码是一样的。但是通过IB的方 ...
本文介绍从web页面打开iOS app的方法 <!--more--> 从web页面打开app是一个常见场景,大致上有2种做法 利用Safari原生Banner 只需要在html中加入一段meta,即可在Safari中显示一个Banner。如果未安装此app,会跳转到app store的下载页面 ...
这几天中秋节,配合运营部门开发了个中秋活动,本文总结一下过程中的一些体会 <!--more--> 微信订阅号和服务号混用的方案 我们的微信主账号是个订阅号,所以没有OAuth的能力,也就是说从网页上无法获得当前访问者的 ...
上周参加了一个在阿里云上实施的高性能架构交流,本文结合我们产品的实践,从前端、应用层、数据层等维度,分别总结一下高性能架构的一些常规做法 <!--more--> 总述 性能包含多种维度的考量,最直观的是2个指标: ...
我们的一个项目采用动静分离的部署方式,服务接口在自己的服务器上,静态资源保存在OSS,通过CDN访问。不过这样有时会有跨域问题。本文总结解决的办法 <!--more--> 原来的做法 原本的做法,服务接口部署在自己的服务器上,通过域名api.xxx.com访问,不走CDN 静态文件,包括html,css,js,图片等,部署在OSS上,通过域名s.xxx.com访问,经过CDN加速 这种架构在性能上表现很不错,但是服务接口是通过ajax调用的,通过设置Access-Control-Allow-Origin允许跨域请求,但是这需要跨域 而实践发现,在某些移动端的浏览器里, ...
APP里有一个功能是用户上传图片以后,让其他人来投票,最后得票最多的可以得到某种奖励。最近发现了几次刷票的情况,本文总结一下处理的方法 <!--more--> 投票无需登录 基本的规则是投票无需登录,因为如果需要登录了才能投票的话,会影响活动的传播效率。所以规则设置为任何人都可以投票,这就给拉票行为留下了隐患 相反,如果限制登录才能投的话,刷票就很困难了,服务端可以很容易地控制刷票行为 在服务端控制的方案 所以既然不能用account_id这个天然的唯一标识,就需要找到另一个可以唯一标识终端的标记 在app里可以用IDFA或者device_id作为唯一标识。同时 ...
最近需要把某网站的统计数据聚合到我们自己的系统里,但是该网站没有提供标准API,所以就尝试自己抓取了一下。本文总结一下一般的方法 <!--more--> 分析服务地址 通常网站有2种做法,一种是后端渲染,直接把渲染后 ...
iOS开发有时会用到第三方提供的SDK,一般是以.a的形式提供,用命令行可以看到其中的内容 <!--more--> APP的最新一个版本集成了某广告联盟SDK,结果app store审核被拒了,原因是使用了iHasApp框架。怀疑是此SDK用到了,所以需要查看它提供的.a库的内容 直接用以下命令报错: $ ar -x libPinyouSDK.a ar: libPinyouSDK.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it) 需要先转换格式,通过以下命令: lipo libPinyouSD ...
用rsync命令在不同机器间同步文件夹,及hexo-deployer-rsync一个BUG的规避方法 <!--more--> 命令格式 例如,要把本机public目录与服务器上的/home/blog目录同步,用以下命令: $ rsync --delete -avz -e ssh public/ root@121.xx.xx.212:/home/blog 如果服务器的ssh端口不是默认的22,则需要给ssh指定端口号,这种情况不常见: $ rsync --delete -avz -e 'ssh -p 22' public/ root@121.xx.xx.212: ...
本文总结一下javascript几个比较重要的知识点,包括scope chain,this,和函数的一些高级特性 <!--more--> scope chain scope chain是javascript函数调用里最核心的概念,尤其是要理解闭包的概念的话,必须先了解scope chain的原理 函数在scope chain上查找变量 function执行时,会在scope chain自底向上地查找变量。scope chain的第一个对象是自己的调用对象(activation object),然后是外层的function的调用对象,然后是更外层的调用对象,直到glo ...
Global site tag (gtag.js) - Google Analytics