HTTPS 详解(二)

HTTPS 是在 TCP 和 HTTP 之间增加了 TLS(Transport Layer Security,传输层安全),提供了内容加密、身份认证和数据完整性三大功能。TLS 的前身是 SSL(Secure Sockets Layer,安全套接字层),由网景公司开发,后来被 IETF 标准化并改名。

前面写过一篇 HTTPS 详解,这一篇作为其补充,主要记录一下 HTTPS 的回话(密钥)重用、如何使用 CDN,以及 TLS 握手阶段的 Diffie-Hellman 算法。

Read More

一张图片引发的深思

在项目开发中使用 SDWebImage 来做图片缓存加载,但是遇到一个问题就是服务器的某一张图片始终无法加载出来,通过URL拿到原图之后可以正常查看。于是追根溯源定位到了 SDWebImage 中的 decodedImageWithImage 方法中,也给自己科普了一下图像处理的相关知识。

下面先了解图像的一些基础知识,然后分析遇到的问题。

Read More

Laravel 5.2 使用 JWT 进行多用户认证

Laravel 5.2 中本身自带了 auth 认证,也是支持多用户的,但是项目使用 Angular,所以后端只需要以接口的形式提供 json api 就可以了,这里就需要使用 JWT 来进行用户认证了,网上普遍的方式是使用 JWT-Auth 框架来进行 JWT 认证,但是发现 5.9 版本不支持多用户认证,1.0 之后才支持。但是由于 1.0 版本是 alpha 版本,所以 github 上并没有其相关文档,找了半天发现作者在某个 issue 里面提到了多用户的使用方法,遂在这里整理记录一下。

Read More

Threejs 全景探索

前端制作全景使用 krpano 的比较多,这是一套比较成熟的东西了,功能非常强大,包括 720云 等网站都在使用,但是缺点在于是需要商用授权的,而且灵活性不高。另一种方案就是使用 ThreeJS 来实现,ThreeJS 是一套 JavaScript 3D 库,全景实际上也是对 3D 场景的展示,使用 ThreeJS 可以实现任意的定制,但是由于是从头实现,且社区组件等不是太完善,所以复杂功能实现的成本相对较高。

这次只做全景主要就是为了抛弃 krpano,所以从开始就选定了 ThreeJS 方案。关于 3D 场景的基础知识网上有很多教程。这里总结一下这次做全景遇到的一些问题。

Read More

我的个人 Wiki

之所以要搞这个个人 Wiki 是因为看了一篇文章 《程序员的知识管理》 ,里面提到个人 Wiki 的重要性。

对于我来说,通常一些知识碎片又不值得写篇博客,都随手写完放到 dropbox 里面了,也懒得进行分类处理,导致放的到处都是,用的时候我自己都得翻半天。刚好文章里面提到了 simiki,于是我就搜索了一番,发现这个 markdown 的 Wiki 系统确实足够满足我的日常需求了,于是就抽时间搭了起来。以后会慢慢把之前整理的一些东西搬到这个 Wiki 上面来,方面统一管理。

另外, 《程序员的知识管理》 里面提到的另一篇文章 《个人知识管理的方法》 也值得一读~

Wiki 地址:http://wiki.honglu.me

我想念你的多种方式

  比如,我改变一种习惯,从前我不吃胡萝卜,现在我开始吃胡萝卜,这样每次我吃胡萝卜的时候,都想到你;

  比如,从现在开始,一年之内,我搭乘公车,都提前一站下来,走路到目的地,这样我可以慢下来,看看周围的人和树,还有店铺,它们沉默不语,我也是,因为我想到了你;

  比如,有一个词我永远都不用,每次要用到的时候,我很小心,绕开它,换过一个词,这样我又想到你一次;

  比如,每次我到大街上,如果我很高兴,我就大声叫你的名字,你的名字听起来这么普通,所以,我每次叫你,都会有人回过头来看我,以为我叫的是他们,他们也许对我笑,也许露出困惑的表情,我很高兴,我觉得也许有一次,回头看我的人正好是你;

  比如,夏天的时候,天气太热了,我把手里的水从头上淋下来,这么凉,我把这个行为叫做你;

Read More

Cocoa中常用的宏定义

我们在 Cocoa 的头文件中常会看到很多宏定义,这里列举几个可能会用到的

NS_AVAILABLE

这个宏定义常用于 API 版本控制,表明函数/属性的使用版本,是否废弃等情况,用法如下:

该方法在 iOS 4.0 中引入

+ (void)animateWithDuration:(NSTimeInterval)duration 
animations:(void (^)(void))animations
completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);

Read More