Kivi

没有什么远大理想,只是永远都不会满足而已


  • 首页

  • 关于

  • 标签

  • 归档

goaccess初探

发表于 2016-05-03 更新于 2017-07-02 分类于 运维
本文字数: 4.9k 阅读时长 ≈ 4 分钟

需求

1.0

  • 分析nginx日志,统计经过给出的过滤条件过滤后的接口的接口信息,访问量,平均响应时间
  • 过滤条件依次为: 时间(time), 请求来源(src), 设备(device), 请求去向(dist), 资源(resourse)

2.0

  • 将给统计服务添加轮询机制,定时统计并发送邮件给管理员
  • 统计数据周期性持久化,支持复杂统计,如用户存活情况统计

解决方案

  • 分析nginx日志,打通根据各个过滤项统计出结果的过程
  • 启node server,把分析命令打包成服务
  • 添加轮询机制和与轮询机制相关的服务(如发送邮件)
  • 数据持久化
阅读全文 »

Cocoapods踩坑总结

发表于 2016-03-07 更新于 2017-07-02 分类于 iOS
本文字数: 575 阅读时长 ≈ 1 分钟

执行pod install报错

错误1

1
NoMethodError - undefined method `to_ary' for #<Pod::Specification name="AFJSONRPCClient">

描述:这是cocoapods的一个issue,master上已经fix,目前并没有添加到release版本中(0.39.0)

解决方案:切换到master上1.0.0beta.4版本

1
pod _1.0.0.beta.4_ --version

未解决的问题:怎么才能再切换回去

阅读全文 »

CocoaPod 安装和更新

发表于 2016-03-04 更新于 2017-07-02 分类于 iOS
本文字数: 257 阅读时长 ≈ 1 分钟

命令行安装(更新步骤)

1
2
3
4
5
6
7
sudo gem update --system
gem sources --remove https://rubygems.org/ // 删掉官方ruby源
gem sources -a https://ruby.taobao.org/ // 添加淘宝ruby源
gem sources -l // 查看ruby源
sudo gem install cocoapods // 安装cocoapods
pod setup // 首次使用需要执行
pod --version // 查看pod版本

iOS基础知识总结

发表于 2016-03-03 更新于 2017-07-02 分类于 iOS
本文字数: 1.1k 阅读时长 ≈ 1 分钟

tip 1 #define和static的区别

  • #define是一个简单的代码替换,将标记替换为宏定义标记后面的代码
  • static标记的变量会存储到全局变量区,声明周期和程序相同,而宏定义的生命周期与所在的载体的生命周期有关,static标记的变量只在声明的类中可见,在声明的类结束后,再次使用还是之前的值

tip 2 代理和通知的区别

  • 通过NSNotification可以给多个对象传递数据和消息,代理只能给一个对象传递数据和消息
  • 对于同一个代理,一个对象只能设置一个代理,所以单例对象就不能用代理
  • 代理更注重过程信息的传输,比如一个网络请求何时开始,是否收到数据,何时结束

tip 3 内存管理的理解

  • 内存管理的原则:引用计数的增加和减少相等
  • 凡事使用alloc,copy,retain等方法增加了引用计数,那么就要使用release和autorelease减少引用计数,引用计数为0的时候,对象所占的内存被系统回收

tip 4 app性能优化的理解

  • 首先是表视图的优化

    * tablecell的渲染
            * 绘制时候尽量避免分配资源,比如UIFont和NSDateFormatter或者是任何绘制时候需要的对象,推荐使用类层级的初始方法中执行分配,并将其存储为静态变量
    * 图册渲染问题,尤其是透明图层的渲染系统需要将图层与下面的视图混合其俩计算颜色,减少透明图层的数量可大大提高渲染速度
    * 为代理方法瘦身,避免在cellForRowAtIndexpath这样的代理方法内写过多的代码
    * 复杂的视图尽量采用纯代码的方式,档tablecell拥有多个子视图的时候,iOS的渲染机制会拖慢速度,重写drawRect方法,直接绘制内容的方式可以提高性能,而不是在类初始化的时候初始化一些label或者是一些imageView等
    
  • CPU资源消耗&解决方案

    * 对象的创建会分配内存,调整谁难过,甚至还有读取文件的操作,比较消耗CPU资源。尽量用轻量级的对象替换重量级的对象,比如用CALayer代替UIVIew,用storyboard创建视图对象资源消耗会比纯代码大非常多
    
    * 对象的创建
            * 尽量推迟对象创建的时间,或者把对象创建的任务分配到多个任务中去
            * 尽量让对象可以复用
    * 对象调整
            * UIView,尽量避免调整视图的层次,添加移除视图
    * 对象释放
            * 对象释放的资源消耗不太大,但是积累起来也会有较大影响,tip,把对象捕获到block中,然后扔到其他线程中销毁
    

编写高质量代码-改善Objective-C程序的61个建议

发表于 2016-03-02 更新于 2017-07-02 分类于 iOS
本文字数: 6.6k 阅读时长 ≈ 6 分钟

###写在前面
自己看完这本书之后做的一点记录,收获还是有的,但是没有封面上吹的那么好,建议还是去看英文版的《Effective Object-C》系列的吧,如果能忍受住英语,还是不要看翻译过的了。

###让自己习惯Object-C

tip 1 Objective-C为一门动态开发语言

  • Objective-C是动态语言,C++是静态语言,runtime相当于是运行Objective-C的操作系统
  • 静态语言的执行效率和安全性要比动态语言高,但是不够简便
  • 运行时可以处理弱类型,函数存在检查等工作,确保了Object-C的灵活性

tip 2 在头文件中尽量减少其他头文件的引用

  • 尽可能使用@class,@class的使用也要求类名和.h文件名需要保持一致
  • 在.h文件中使用@class,在.m文件中使用#import可以减少不必要的编译时间,降低类之间的藕合度,还可以避免出现循环引用
  • 设计类的时候尽量多的使用协议,避免过多的使用#import引入不必要的部分
  • 如果头文件.h中有多个类的定义,尽量采用模块方式,只针对性引进所需要的类
阅读全文 »
1…789…12
kivi

kivi

nodejs | server
58 日志
17 分类
32 标签
RSS
© 2019 kivi | 173k | 2:37
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0
|