过去的2015

2015年终究觉得比往年过得慢一些,对某些事依旧耿耿于怀,对某些人仍然念念不忘,删掉了三年来所有的微博,生怕再勾起某些回忆。生活依旧过得不好不坏,换了工作搬了家,每天步行20分钟上班,不再为每天上下班痛苦的挤地铁而烦恼。工作也早已得心应手,可以花更多的时间与精力做自己喜欢的事情,也越发觉得写代码是件多么有趣的事。也意识到身体健康的重要性,现在跑10公里已经没有那么的累,好在跑步虽是自己一直断断续续但仍旧坚持下来的一个习惯。

也领悟到了钱真的可以买来快乐,当吃到好吃的,买到喜欢的东西那一刻心总是能得到莫大的安慰,并且屡试不爽。

anyway,还是坚强而乐观的活着,这个就够了,其他真的都不重要。

Comment and share

关于环境

MAC OS :10.10

PyCharm :推荐使用,最开始使用的是 Sublime Text 加终端的方式,但是来回切换实在太繁琐,后来切换到了 PyCharm 下,好的 IDE 真是会使效率事半功倍,更重要还提供了一些很好用的功能用于Django框架开发。

安装 MySQL

由于之前一直做移动开发,并没有真正使用过 MySQL,而 MySQL 数据库在第一次安装后出现了各种莫名其妙的问题,无论是使用系统偏好设置启动,还是终端启动服务均失败,总是出现各种 permission failed或Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’等问题,各种方法使用后无解还是尝试重新安装。MySQL下载地址,一定要选择对应的系统版本及位数。

重新安装前一定要将原本机器上的MySQL删除干净,建议使用终端方法进行删除,注意安装完成后会弹出提示,提示中 password 就是 MySQL 的 root 密码

Continue reading

众所周知,iOS 应用审核机制,所以当我们的线上应用面对突如起来的 bug 的时候会显得很手足无措,有时候仅仅可能就是添加一两行代码解决这个问题却要因为审核等待一周或者美国人过节就会有甚至更长的审核周期。所以hoxfix热修复的作用简直就是掉炸天的功能啊。而 JSPatch 就是这样一个极小的轻量级框架,它可以使用 JavaScript 调用任何 Objective-C 的原生接口,替换任意 Objective-C 原生方法。目前主要用于下发 JS 脚本替换原生 Objective-C 代码,实时修复线上 bug。

Continue reading

主要为阅读一些博客和书籍,对一些 UIKit 方便的性能优化的一些知识点进行了整理

尽量避免图层的混合

  • 避免使用控件的 opaque 属性将其透明,当然默认的情况下 UIVie 的 opaque 属性就是 true,同时尽量将UIView的背景颜色设置与其父控件相同且不是透明的
  • 没有特殊情况下不要设置控件的 alpha 值降低透明度
  • 使用 UIImage 尽量使用没有带 alpha 通道图片

图层的混合

首先对于像素点,屏幕上的每一个点就是一个像素,像素有R/G/B三种颜色构成,某些时候还要有 alpha 值。

举个栗子,我们将两个图层混合,上层的是蓝色(R=0/G=0/B=1),设置其透明度为50%,下层是红色(R=1/G=0/B=0),那么最终我们看到的效果将是紫色(R=0.5/G=0/B=0.5),这种颜色的混合,尤其上层的图层有透明度的时候,会小号一定的GPU资源,想避免这种情况,尽量直接将上层的图层透明度设置为100%,这样GPU就会忽略下面的所有图层,避免了过多不要的运算。

Continue reading

在iOS视频开发中,传统的方案可以直接使用系统的 MPMoviePlayerController 既可以直接将系统的播放页面掉出来,更贴心的为我们添加了控制条,全屏放大及暂停按钮。但是实际中我们可以需要针对播放器做更多的自定义设置,继而更多的是会采用 AVPlayer,因为 AVPlayer 提供了更为强大的功能,虽然在使用的过程会比较麻烦,但是确实能为我们的 app 提供更好的视频播放体验提供前提。

Continue reading

CAShapeLayer是CALayer的子类,但是比CALayer更灵活,配合一个神奇的属性path用这个属性配合上 UIBezierPath 这个类就可以达到超神的效果。

玩一下 UIBezierPath

UIBezierPath 顾名思义,这是用贝塞尔曲线的方式来构建一段弧线,你可以用任意条弧线来组成你想要的形状,它包含起始点、终点、及控制点三个参数。如下图红色矩形范围内的白色背景,最上面就是一条有弧度的曲线。

Continue reading

NSURLSession 是iOS7之后对 NSURLConnection 更进一步的优化封装,可通过 NSURLSessionConfiguration 对其进行初始化设置,其中 requestCachePolicy 属性设置就是配置获取得到 NSURLResponse 之后的缓存策略:

Continue reading

之前在使用 AFNetworking都会进行二次封装便于开发使用,但是通常的结构是一种集中式的封装,如下:

1
2
3
- (void)asyncWithQueryString:(NSString *)query params:(NSDictionary *)params 
requestType:(RequestType)requestType
completionHandler:(void (^)(NSDictionary *result, NSError *error))handler;

这种结构的弊端在于,每次调用的时候都需要传递所有的参数,而即使没有参数也需要传递 nil 值站位,尤其如果一开始没有封装好导致后期要在方法里面添加一个参数,那么我们所有调用此方法的地方都需要进行修改,虽然这种可能性很小。所以后来采用了链式结构进行了封装。使用这种方法主要是借鉴了IOS中的布局适配框架 Masonry,关于链式编程更多的了解可以参考:

Continue reading

在支付宝的爱心支付和恩基爱看到一些捐助活动偶尔也会献些爱心,当看到腾讯的这个公益 404 页面真是喜欢的不得了,更重要的在 hexo 中接入也很简单,当然从某种意义上并不希望经常看到它。

  • 在项目根目录source文件夹下直接创建404.html页面
  • 编辑下面html代码,如果定制超链接,修改“homePageUrl”、“homePageName”两个参数即可。
  • 一定要设置layout:false(还有三个短横线),不然会被hexo解析。
1
2
3
4
5
6
7
8
9
10
11
12
layout: false
---
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>宝贝,公益404带你们回家</title>
</head>
<body>
<script type="text/javascript" src="http://www.qq.com/404/search_children.js" charset="utf-8" homePageUrl="http://yoursite.com/yourPage.html" homePageName="回到我的主页"></script>
</body>
</html>
Continue reading
  • page 1 of 1
Author's picture

Bin Han

纸上得来终觉浅 绝知此事要躬行


Software Engineer


Hangzhou China