0%

这个世界不乏浪漫之人,但在我们程序设计的圈子里,能将代码写得像诗般的人,还是凤毛麟角的。本篇文章要介绍的 Promise&Future 便是我觉得非常浪漫的一种抽象思维,无论是它的命名、实际解决的问题,还是它最终的代码风格,都让我们向诗人更近了一步。

当然,我本就是一名诗人。

阅读全文 »

在很早以前,我的有一篇文章中就说过,对于设计模式而言,我们不应该刻意去使用,而是要在非常自然的情况下,不知不觉地去使用。但前提是,你必须对目前所有的设计模式有较深刻的理解,在内心深处烙印下这样的一个种子,后续你才会有更大的机缘,莫名其妙的就使用上它。

本篇文章,主要是介绍了 GoF 23 种设计模式中的组合模式,这算是结构型设计模式中的平民级模式,因为它简单、易用,但效果,往往能助你化繁为简。

阅读全文 »

春节长假归来,相信大多数人都犯了节后综合征,那么就写一篇博文来收收心。没有心思干活的同学们,可以看看我的这篇文章,权当是散散心,找找感觉。

本篇文章主要介绍了关于上下文(_Context_)的一些概念,并提出了在设计上下文时应该考虑到的问题,最后通过一个实例来演示如何用Objective-C实现一个上下文。相信通过阅读本篇文章,大家能够基本掌握软件设计中上下文的使用,并且,我相信,想象力如此丰富的你们,会将此推演到更高的境界。

那么,让我们从一些比较轻松的环节开始吧!

阅读全文 »

经历过最近轰动一时的 Xcode Ghost 事件后,可以看出,即便大如腾讯这般的企业,在面对 APP 的安全性时,态度也是不够严谨的。各大媒体却将矛头指向了苹果手机(_标题:苹果手机不安全_),这种低俗的竞争手段还真让人汗颜。作为开发人员,我觉得非常有必要修习安全相关的知识,即便不是精通,起码要有些常识。

这篇文章,便是在普及 iOS 安全的基本常识,而你目前关于这方面的认知,可能都是错的!

阅读全文 »

国庆长假已经接近尾声了,那么,伴随着国庆的结束,这系列文章也将告一段落。前面两篇里,我们更多的都是在关注设计方面的东西,设计本身就很虚无,难以琢磨。所以,本篇将重点介绍一些实现细节,一些能够实实在在解决问题的策略。

阅读全文 »

在上一篇博文里,我们将最基础的消息通讯组件打磨了一下,并且为了节约开发时间,我们还量身定制了一款代码生成工具。本篇不会再纠结于底层的相关细节,而是将重心放置在高层,乃至整体的一个宏观设计和分析。

软件开发是门很有趣的艺术,如果你真的用心去体会它。

阅读全文 »

在前一段时间里,我曾就TeamTalk和Telegram两款Mac下的IM软件的架构设计作了些许分析,对其亮点和不足之处给出了自己的见解。IM本身就是一个比较复杂的应用,要想做好必须是要花费一点精力的,特别是对细节的把握。倘若服务端设计本身不够理想,客户端又受限于某种并不如人愿的基础库,加之工期逼赶,家事繁忙,似乎一切天时地利都不在时,如何做出一个让自己满意的IM呢?

本文就上述并非虚构的上下文中,带领大家突破这重重枷锁,重塑架构设计,还你一个干净明了的即时通讯。技术在于分享,我并不觉得需要有任何保留,小伙伴们,拭目以待吧!

阅读全文 »

Swift,已经出来一年多了,想必不少人都曾对它抱着观望的态度,如果现在的你还是这样的态度,那么是时候去改变了。作为一个年龄比我还大的语言————Objective-C,是时候淡出历史的舞台了,有人说Objective-CSwift会并存,但我觉得,短期内会这样,从长远的角度来看,并存的可能性并不大。毕竟,它们不是CC++这样的关系,它们更像DelphiC#这样的存在。从可维护的角度来说,并存的代价比较大,所以,对于Objective-C,放手吧。

作为一个绝对现代化的编程语言,Swift集合了当下众多流行语言的特性,这与保守的Objective-C产生了鲜明的对比。如果你还在犹豫踌躇中,那么就让本文带你领略下新欢的风骚,这一切,你值得拥有!

阅读全文 »

上一篇博文的最后提出,如果不出意外,这一篇就是用来介绍telegram的TL-Language,那么我的确也没出什么意外,所以这一篇就兑现这样的承诺吧!

TL-Language是telegram用来描述MTProto的一种自定义语言,不难看出,能将协议的描述定义成一门语言,这也足够说明了telegram的逼格。其存在的意义,类似基于SOAP协议的Web Service用来描述服务元数据的XML Scheme,但又有不同,目前的TL-Language仅仅只能用来作“描述”作用,最终通讯还是序列化成二进制流,并且也没有服务元数据这么一说。

这一次我们不管通讯,不管架构,只是单纯的看看这门语言吧!

阅读全文 »

上回我们对TeamTalk做了一个比较详细的架构分析,并得到了蘑菇街的官方回复,这种态度还是值得很多公司技术运营学习的。本打算对Telegram的Mac客户端也做一次架构分析的,但发现它的源码比较杂乱,里面混合很多有用没用的文件,另外它的抽象方式也是非常奇怪,继承体系也不是很合理,大致看了下,我就决定放弃了。而无意间却让我点开了它里面所依赖的一个Sub Module:MTProtoKit,我发现这个项目和Mac客户端项目完全是两个水准,所以,我决定单独把它拿出来做次分析。

首先,你应该要知道什么是Telegram,它和TeamTalk一样,都是开源的IM,百度搜索一下会有一些关于它的介绍。以下是和本篇博客有关的地址链接:

我说过,要想提高自身的设计能力,阅读开源项目是很好的途径。在分析别人源码的过程中,我们可以汲取到一些其它的思想,架构设计这条路是没有止境的,我们唯有不断学习,才能成为更好的自己!那么,我们开始本次的分析之旅吧!

阅读全文 »