- 博客(684)
- 问答 (6)
- 收藏
- 关注
原创 iOS的几个特效实现思路
最近看一个app的源码,发现基本没有用第三方的开源组件,但是特效也做得不错,总结一下实现的思路 简单的抽屉效果效果如图: 这种抽屉效果很常见,开源组件也很多。但是一般开源组件都对Controller的结构有要求,有时候不是很方便。原理主要是:主页面加侧边栏。当弹出侧边栏时,设置主页面的x为一个负数;当收回侧边栏时,将主页面的x设置为0。再加上一些动画和手势就可以了。初始化侧边栏func addS
2016-02-06 22:44:30 986
原创 tomcat配置https
java平台的keystore是对https证书的一种包装,配置方式和http服务器的证书配置略有不同 最近和一个第三方系统对接,需要安全认证。安全认证有2种方式,一种是在应用层实现,比如通过ws-security或者在报文头增加一些字段等;另外一种是借助https,对应用层透明。本次对接采用的是https的方案根据部署方式的不同,具体的实现也有区别。一般在tomcat前面会有一个http服务器如
2016-02-06 22:43:57 1338 1
原创 hitTest
hitTest方法,简而言之,就是给定一个点,返回一个view或layer,判定当前是哪一个view或layer被点中了 原理当用户触摸屏幕的时候,系统会依次调用view层次中各个子view的hitTest方法,来判断当前是哪个view被点中,决定谁是first responder。关于这点,这篇文章总结得不错:iOS事件分发机制(一) hit-Testing默认的实现就是触摸点是否在此view的
2016-02-06 22:43:03 2626
原创 用CALayer绘图
在iOS中绘图,可以使用UIView,也可以使用CALayer。实际上,UIView也是由底层的CALayer完成绘制的工作 UIView和CALayer的关系每个UIView内部都有一个CALayer对象,由它来完成绘制的工作。和view一样,layer也是一个树形的结构当不需要自定义组件的时候,用UIView的API就足以胜任,把需要的子view通过addSubview()方法放到view的层
2016-02-06 22:42:26 1324
原创 这几天使用IB的总结
这几天尝试了使用Interface Builder,跟以前用纯代码开发还是有比较明显的区别,本文总结一下这几天的感受 原理总的来说,在IB里的操作,会在编译时由xcode生成代码,本质上和纯代码是一样的。但是通过IB的方式,可以用更少的代码实现同样的功能比如说segue,实际上还是会生成pushViewController或者presentViewController的调用。以及各种组件的实例化,
2016-02-06 22:41:53 1583
原创 从web页面打开iOS应用
本文介绍从web页面打开iOS app的方法 从web页面打开app是一个常见场景,大致上有2种做法利用Safari原生Banner只需要在html中加入一段meta,即可在Safari中显示一个Banner。如果未安装此app,会跳转到app store的下载页面,否则会直接打开应用效果图:html代码如下:<meta name='apple-itunes-app' content='app-i
2016-02-06 22:41:07 3387
原创 中秋活动开发总结
这几天中秋节,配合运营部门开发了个中秋活动,本文总结一下过程中的一些体会 微信订阅号和服务号混用的方案我们的微信主账号是个订阅号,所以没有OAuth的能力,也就是说从网页上无法获得当前访问者的微信身份。而稍微完善一点的流程,都要求有这个能力。比如识别此人是否访问过此页面,显示访问者的微信昵称和头像等所以我们就想了一个巧妙的办法,又认证了一个微信服务号,然后把订阅号和服务号关联起来,于是就可以通过u
2016-02-06 22:39:33 644
原创 高性能架构
上周参加了一个在阿里云上实施的高性能架构交流,本文结合我们产品的实践,从前端、应用层、数据层等维度,分别总结一下高性能架构的一些常规做法 总述性能包含多种维度的考量,最直观的是2个指标:单次请求时间和吞吐量单次请求时间直接影响到用户的体验,即网页打开快不快。吞吐量反映的是系统的并发能力要提升系统的性能,需要系统每个环节的协同作用前端高性能前端的架构优化,往往能够直观地缩短单次请求时间。除此以外,对
2016-02-06 22:38:38 903 2
原创 避免跨域的CDN部署方案
我们的一个项目采用动静分离的部署方式,服务接口在自己的服务器上,静态资源保存在OSS,通过CDN访问。不过这样有时会有跨域问题。本文总结解决的办法 原来的做法原本的做法,服务接口部署在自己的服务器上,通过域名api.xxx.com访问,不走CDN静态文件,包括html,css,js,图片等,部署在OSS上,通过域名s.xxx.com访问,经过CDN加速这种架构在性能上表现很不错,但是服务接口是通过
2016-02-06 22:37:59 3361
原创 防刷票方案
APP里有一个功能是用户上传图片以后,让其他人来投票,最后得票最多的可以得到某种奖励。最近发现了几次刷票的情况,本文总结一下处理的方法 投票无需登录基本的规则是投票无需登录,因为如果需要登录了才能投票的话,会影响活动的传播效率。所以规则设置为任何人都可以投票,这就给拉票行为留下了隐患相反,如果限制登录才能投的话,刷票就很困难了,服务端可以很容易地控制刷票行为在服务端控制的方案所以既然不能用acco
2016-02-06 22:37:18 2504
原创 抓取第三方网站数据
最近需要把某网站的统计数据聚合到我们自己的系统里,但是该网站没有提供标准API,所以就尝试自己抓取了一下。本文总结一下一般的方法 分析服务地址通常网站有2种做法,一种是后端渲染,直接把渲染后的完整界面呈现在浏览器;另一种前端是静态页面,通过ajax到后台取数据后端渲染这种网页抓取起来比较麻烦,因为结构不标准,需要从DOM里把需要的数据抠出来。node平台我推荐使用cheerio,API类似jque
2016-02-06 22:36:33 2486
原创 查看静态链接库内容
iOS开发有时会用到第三方提供的SDK,一般是以.a的形式提供,用命令行可以看到其中的内容 APP的最新一个版本集成了某广告联盟SDK,结果app store审核被拒了,原因是使用了iHasApp框架。怀疑是此SDK用到了,所以需要查看它提供的.a库的内容直接用以下命令报错:$ ar -x libPinyouSDK.aar: libPinyouSDK.a is a fat file (use li
2016-02-06 22:35:22 1310
原创 用rsync同步文件夹
用rsync命令在不同机器间同步文件夹,及hexo-deployer-rsync一个BUG的规避方法 命令格式例如,要把本机public目录与服务器上的/home/blog目录同步,用以下命令:$ rsync --delete -avz -e ssh public/ root@121.xx.xx.212:/home/blog如果服务器的ssh端口不是默认的22,则需要给ssh指定端口号,这种情况不
2016-02-06 22:34:12 777
原创 javascript几个知识点
本文总结一下javascript几个比较重要的知识点,包括scope chain,this,和函数的一些高级特性 scope chainscope chain是javascript函数调用里最核心的概念,尤其是要理解闭包的概念的话,必须先了解scope chain的原理函数在scope chain上查找变量function执行时,会在scope chain自底向上地查找变量。scope chain
2016-02-06 22:32:15 590
原创 Hexo插件机制分析
最近想开发一个rest API的框架,需要用到插件机制。正好前段时间在玩Hexo,觉得它那套机制还不错,于是参考了一下。本文总结一下它的实现思路
2015-08-19 21:04:16 2502 1
原创 微信OAuth总结
当用户从微信中打开网页时,基于微信提供的OAuth机制,可以获取到当前用户的基本信息,如昵称,头像等。这一能力是现在很多基于微信传播的网页的基础。本文总结这方面的一些心得技巧
2015-08-19 21:02:56 1335
原创 使用CSStickyHeaderFlowLayout实现头部固定的CollectionView
最近流行的一种界面效果,是瀑布流的header固定,也叫sticky header或者parallax。对于UITableView,可以比较方便地让table header固定,但是对于UICollectionView,原生的iOS API比较难以实现。本文推荐一个开源组件,专门用于实现这种效果
2015-07-21 01:20:51 3306
原创 通过node.js保存emoji到mysql
什么是emojiemoji在诞生之初有多种标准,所以早期兼容性是个问题。但是现在已经标准化了,是unicode的一部分。可以认为,跟字母、汉字一样,emoji就是unicode中一个普通的字符但是emoji通过utf-8编码后,每个字符占4个字节,属于宽字符。而老版本的mysql只支持一个字符占3个字节,所以老版本的mysql是无法存储emoji的。新版本的mysql增加了字符集utf
2015-06-29 18:22:03 2404
原创 前端页面一些路径问题的总结
今天把一个站点重新部署了一下,目录结构调整比较大,发现了几个问题,本文总结一下首先页面里的URL,和硬盘的路径有对应关系,主要是文件服务器在解析URL的时候,会跟硬盘上的目录结构对应起来找实体文件。但是URL和硬盘路径不完全一样。比如本地路径,如果是/,那么会从硬盘的根目录开始找;而URL的/,只会到虚拟主机的根目录,不会到真的根目录引用资源尽量使用相对路径在html页面里引用资源
2015-06-18 18:11:36 2641
原创 html5跨域方法
从html5开始,可以通过在响应头里增加Access-Control-Allow-Origin,实现跨域请求node的代码:res.setHeader('Access-Control-Allow-Origin', '*');res.setHeader('Access-Control-Allow-Credentials', true);res.setHeader('Access-Cont
2015-06-13 21:50:30 1244
原创 查询评论接口优化案例
最近做性能优化,发现“查询用户评论”这个接口特别慢首先对接口进行了测量,由于这个接口需要查询用户的昵称和头像,需要关联到accounts表,而accounts表里的数据比较多,所以接口的查询速度比较慢。因此我们采取的优化,是把accounts中的数据缓存到redis里,部署后接口的查询速度提升了80%接下来发现,虽然接口查询速度提升了,可是在APP上的表现还是不好,loading还是要转圈
2015-06-04 21:29:58 811
原创 content-type引发的CDN错误
最近发现一个问题,同样一个视频,在深圳可以打开,在南京地区的android可以打开,南京地区的iPhone无法打开我们的视频都是通过CDN下发的,把链接改成资源实际所在的地址,绕开CDN,就都可以正常访问了,所以定位出是CDN的问题。可能是深圳的CDN节点是好的,南京的android设备和iOS设备访问了不同的节点,而iOS节点有错误联系了CDN提供商,对方的技术人员也没有定位出问题,最后
2015-06-04 21:22:27 1331
原创 UITableView固定表头
APP开发常有这种界面:顶部是一个表头,下面是一个UITableView如果不使用headerView,而是上面一个自定义的UIView,下面是UITableView的话,则表头会固定,即滚动UITableView时,上方的view会固定不动,不会跟着滚动如果希望表头不固定,需要是用headerView来实现,类似:tableView.tableHeaderView = [self b
2015-06-04 21:16:13 3165 1
原创 Unable to create unsliced image from csi bitmap data
xcode有个BUG,截止到6.3.1还没有修复当打ipa包,需要支持iOS7的设备时,xcode不会把Images.xcassets里的.jpg图片正确打包。现象是在iOS8上可以正确显示的图片,在iOS7上会显示白屏,并且console报错:Unable to create unsliced image from csi bitmap data,解决办法是使用.png图片,或者把.jpg图
2015-06-04 21:08:48 1927
原创 iOS屏幕适配(续)
上一篇博客总结了iOS屏幕适配的若干技巧,本文再补充几点别的方面设计图一般会先由美工做出界面的设计图,然后开发再去实现。上一篇博客说的主要是,开发怎么实现的问题。实际上从设计图这个环节,就需要开始考虑界面适配的问题。主要是2点:1、出几张图如果以iPhone6为基准出设计图的话,一般很难完美地适配到iPhone4,5和6P上,因为屏幕尺寸差异很大。一般在6上摆得很紧凑好看,在4和5
2015-05-20 15:44:55 872
原创 iOS布局和屏幕适配的一点总结
曾经,iOS开发是不需要考虑屏幕适配问题的,因为只有一种屏幕尺寸。而现在已经有了4种屏幕,4,5,6,6P,因此屏幕适配也成了iOS开发中必须考虑的问题。并且,这4种屏幕的宽高比全部都不一样,所以简单的按比例缩放并不能解决问题。我们最近做的一个APP也处理了屏幕适配,本文简单总结一下根据屏幕类型判断我不知道有没有更好的办法,我们的做法是根据设备类型,写一些if...else,或者switc
2015-05-18 19:27:21 1767
原创 iOS8,UILabel实现圆角
直接通过layer的cornerRadius属性,设置圆角,发现在iOS下显示错误(故意设置了红色边框,看得清楚)虽然边框是圆角,但是UILabel本身还是直角在iOS8下,需要这样写:cancelLabel.layer.cornerRadius = 5.f;cancelLabel.layer.borderColor = [UIColor whiteColor].CG
2015-05-18 17:27:43 1221
原创 Unbalanced calls to begin/end appearance transitions for
执行以下代码的时候:[self dismissViewControllerAnimated:NO completion:nil];UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];// 用户选择的图片CropImageViewController *cropViewController = [
2015-05-08 16:44:10 4359
原创 UITableView和UICollectionView的cell重用问题
APP的一个页面用到了自定义的UITableViewCell,由于iOS框架的cell重用机制,遇到了一个BUG,总结一下现象自定义的UITableViewCell里有一个UIButton,点击这个button以后,需要改变cell的样式,包括换UILabel字体颜色,禁用该UIButton等。结果发现,点击按钮之后,不仅当前cell的字体颜色变了,还有另外几个cell的字体颜色也跟着变,
2015-05-02 15:45:56 1966
原创 UIActionSheet和其他模态窗冲突的问题
虽然iOS8引进了UIActionController,但是由于目前还需要兼容iOS7版本,所以还不能完全放弃UIActionSheet我们有一个界面用到了自定义的模态对话框。当用户点击某个按钮时,会弹出ActionSheet,然后选择ActionSheet的一项,会弹出一个模态的对话框。基本的思路是用一个透明的view直接add到UIWindow上,类似:-(void) show{
2015-05-01 17:16:09 914
原创 iOS学习过程回顾
从2013年12月入坑至今,差不多做了一年半iOS开发,回顾一下学习的过程学习iOS开发的几个阶段首先我觉得,学习一门语言,需要5个步骤:1、了解语言本身。比如首先需要了解objective-c的特性,以及各种相关的东西。从基础的变量类型、语法,到语言的高级特性如block、反射等等2、了解平台。如UIView的类层次结构,UIViewController的生命周期,app的生命周
2015-04-26 02:06:46 1770 2
原创 EOC摘要
今天有事回老家,在动车上把EOC囫囵吞枣看完了,晚上回来摘要几条觉得比较重要的,备忘1、在可能的时候,尽量多用字面量2、尽可能为对象实现description方法3、私有方法的前缀,不用_,会跟苹果冲突。那我考虑用__4、如果一个类里的方法太多,考虑用category分类5、category也要加前缀,比如sd_setImageWithUrl。总之因为oc缺少完备的namesp
2015-04-20 00:42:22 816
原创 iOS app中使用webview的时机
hybrid还是native使用hybrid开发,有几个好处:1、web程序员参与开发2、跨平台3、快速更新缺点主要是UI体验比不上原生,比如滚动、弹性、拖拽、动画等,web的效果现在还是比不上native。所以实际项目中,选择哪种开发方式,取决于具体的需求比如说,我们做的一个店务管理的APP,逻辑非常复杂,但是对UI的要求比较低,这就比较适合使用hybrid来做。因为对U
2015-04-19 23:30:27 1004
原创 用友盟社会化组件,分享到微信和新浪微博
最近做的APP,需要分享功能,于是试了一下友盟的社会化组件。总的感觉还不错,虽然没有比直接集成官方SDK简便多少,但是后台统计的功能不错,所以最后还是用了。官网的文档说明已经挺详细了,不过章节组织得有点乱,本文总结一下获取友盟app key首先去友盟注册一个app key,然后下载它的SDK。这里要注意的是,SDK分为IDFA版和非IDFA版,前者需要设置一个默认的广告页,否则有可能被苹果
2015-04-10 02:16:45 1892
空空如也
客户端用的ActiveMQ,能连接JBoss发布的JMS消息吗
2011-04-25
单元测试的接口问题
2011-03-04
jquery的$(document).ready()中定义变量的范围问题
2011-01-18
java很难模拟闭包?还是我对闭包理解有误?
2011-01-14
JAVA2年工作经验,在深圳年薪税后9W左右,是个什么水平?
2010-05-13
struts2中取值的问题
2009-03-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人