iOS
Comments

git是Linux之父,Linus这个牛逼哄哄的大神发明的。本来别人以为,这位大神创建了Linux传奇已是人生巅峰了。而几十年后,这位牛人又创造了一个奇迹。常人难以望其项背。大神之所以成为大神,是因为他生来就是一位大神。

git和SVN的简单对比

速度

  • 在很多情况下,git的速度远远比SVN快。

结构

  • SVN是集中式管理,git是分布式管理

其他

  • SVN使用比较笨拙,git轻松拥有无限个分支。
  • SVN必须联网才能工作,git支持本地版本控制。
  • 就版本的SVN会在每个目录下放置一个.svn,git只会在根目录下有一个.git。

分布式对别集中式的最大区别是:在分布式下,开发者可以在本地提交,每个开发者机器上都有一个服务器的数据库。

Read on →
iOS
Comments

在移动APP中,瀑布流越来越流行。本篇自定义一个简单的瀑布流控件。首先,模仿UITableView,定义一个数据源和代理协议。数据源协议有三个方法。如下:

@protocol GYWaterflowViewDataSource <NSObject>

@required
/** 有多少条数据 */
-(NSUInteger)numberOfCellsInWaterflowView:(GYWaterflowView *)waterflowView;

/** index位置对应的cell */
-(GYWaterflowViewCell *)waterflowView:(GYWaterflowView *)waterflowView cellAtIndex:(NSUInteger)index;

@optional
/** 有多少列 */
-(NSUInteger)numberOfColumnsInWaterflowView:(GYWaterflowView *)waterflowView;

@end
Read on →
iOS
Comments

上一篇实现新浪微博图文混排谈到了表情与文本的混合排列。属性文本可以有效的设置一段文本中的文字可以有不同的属性。比方微博文本中有话题,超链接,@某人等等。对这些文本需要进行高亮和事件处理。跳转到相应的微博或者链接等等。要实现这个功能,可以分成四个步骤:

  1. 查找出所有的链接(用一个数组存放所有的链接)
  2. 在touchesBegan方法中,根据触摸点找出被点击的的链接。
  3. 在被点击的链接的边框范围内添加高亮背景
  4. 在touchesEnd中,移除高亮背景。并发出通知,通知相应的控制器进行事件处理。
Read on →
iOS
Comments

通常,我们都会有图片和文字混合起来展示的需求。像杂志中展示一篇文章。QQ发送带表情文字的信息。微博的展示等等… 这里,我们简单的实现一下表情和文字的混合显示。模仿新浪微博,实现效果如下图:

我分为三大步骤:

  1. 将表情插入到编辑框中
  2. 将带有表情的富文本转换为带有表情描述的普通文本,并发送给服务器
  3. 从服务器接收带有表情描述的普通文本,将表情描述解析成对应的表情
Read on →
Comments

JSON

JSON是一种轻量级的数据格式,一般用于数据交互。服务器返回给客户端的数据一般都是JSON或者XML,当然除了下载文件。

JSON的格式很像OC中的字典和数组。

{"name": "jack", "age": 10}
{"names": ["jack", "rose", "jim"]}

标准的JSON格式key必须用双引号。要想从JSON中挖掘具体的数据,需要对JSON进行解析。JSON转换为OC数据类型:

在iOS中,JSON的常见解析方案有四种

  • 第三方库:JSONKit、SBJson、TouchJSON
  • 苹果自带:NSJSONSerialization(性能最好)

NSJSONSerialization的常见方法

  • JSON数据-OC对象

    +(id)JSONObjectWithData:(NSData )data options:(NSJSONReadingOptions)opt error:(NSError )error;

  • OC对象-JSON数据

    +(NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;

XML

XML全称Extensible Markup Language。和JSON一样,也是常用的数据交互格式。一般称作XML文档。

XML的解析方式有两种:

  • DOM:一次性将整个XML文档加载进内存,比较适合解析小文件
  • SAX:从根元素开始,按照顺序一个元素一个元素往下解析,比较适合解析大文件。

在iOS中,解析XML的手段有很多。苹果原生的有NSXMLParser。SAX方式解析,使用简单。第三方框架有libxml2和GDataXML。libxml2使用纯C语言。同时支持DOM和SAX方式解析。GDataXML支持DOM方式解析,是有Google开发的。解析小文件用GDataXML。

NSXMLParser的使用方法

// 传入XML数据,创建解析器
NSXMLParser *parser = [NSXMLParser alloc] initWithData:data];
// 设置代理,监听解析过程
parser.delegate = self;
// 开始解析
[parser parse];

NSXMLParser采取SAX方式解析,特点是事件驱动,下面的情况会通知代理。

  • 当扫描到文档(Document)的开始与结束
  • 当扫描到元素(Element)的开始与结束

当扫描到文档的开始时调用(开始解析)

- (void)parserDidStartDocument:(NSXMLParser *)parser

当扫描到文档的结束时调用(解析完毕)

- (void)parserDidEndDocument:(NSXMLParser *)parser

当扫描到元素的开始时调用(attributeDict存放着元素的属性)

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namaspaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;

当扫描到元素的结束时调用(attributeDict存放着元素的属性)

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namaspaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;
Comments

一直想要去一个清净的地方体验一下。因缘一直都不太成熟。直到这个五一。因缘具足,在北京的朝阳寺参加了为期五天的禅修。

一年多前,应该是大三的时候,一切都感到很迷茫。一直在胡思乱想,不知道人生的意义所在,今后该何去何从。巧合之下,接触到了佛法。一下子有点豁然开朗的感觉。从小到大,心中存在的好多谜团,好多困惑。在佛学中得到了答案。从此,开始看一些佛学的书籍,了解如何是佛法。虽然,直到现在,对于佛法,了解的只是皮毛中的皮毛。但是人生感觉到了一个大的方向。三观的轮廓得到了基本的确定。因为了解了一点佛法的皮毛,发现了自己需要努力的地方太多太多。对于在家人,首先就是要积极上进,感悟生活的真善美。而要对佛法深入,需要多多亲近善知识。广结佛缘。

Read on →
Comments

西方思想体系的问题

在希腊哲学,有两大形而上学体系的派别:一个是巴曼尼得斯的体系,他的基本范畴是being(存有)。另一个,就是赫拉克利特的思想体系,他针对着存有的生灭变化,变迁发展的世界(所谓万物流转说)。由这个生灭变化的动力世界,要成立一个主要的范畴,就是Becoming(变化)。可是从巴曼尼得斯的立场来看,这个Becoming的一切生灭变化,是不断在变迁发展,可以说属于非存有(non-being)。因此,希腊哲学领域有两大境界:一个是巴曼尼得斯的“永恒世界”。并且针对着这个永恒的世界建立了一个基本范畴,being;另一个是赫拉克利特从变迁发展而成“动力世界”,他存在于种种的being。至于这种变如何成为可能?就是要把being转变为non-being。但是这里有问题是being与non-being是如何联系的。

Read on →