Posted by reedboat on Mar 6, 2012 in
软件
昨天试用了一下编辑器Sublime Text 2。 跨平台,据说有超越textmate的趋势。 还支持vim操作方式(这个对我相当的受用),zencoding支持非常的完美。 文件切换非常的快速方便,缩进指示也很好。支持TextMate的bundle等等。也有很好的扩展支持和管理.我没用的很仔细,但是初步感觉很好。
这个时候,想到vim还有很多的地方不完善。比如项目管理和插件管理,虽然也有扩展支持,但是其实效果都不理想。 在想,是否该适当的转换一下我的编辑方式,尤其是sublime还支持基本的vim操作方式情况下。
今天抽空在网上转了转,没想到找到了一个我非常喜欢的vim插件管理机制。在github上发现了一个项目vim-scripts (https://github.com/vim-scripts) 它将vim的插件,全部搬到了github,使用git来管理。
例如FuzzyFinder,
git clone "http://github.com/vim-scripts/FuzzyFinder.git"
然后在vimrc中增加配置
set runtimepath+=path_to_fuzzyfinder
这样以后,就可以直接用git pull来更新了。
后来又发现还有更好的方式, 有个工具vundle支持这个项目。 安装扩展只需要在vimrc中加入一句
就可以方便的下载安装和升级插件了。
这正是我想要的,vim的插件管理终于完美了。是时候将我之前的插件们都迁移一下了
Tags: vim
Posted by reedboat on Mar 5, 2012 in
编程
影响写代码速度的因素
- 未考虑清楚就匆忙下手,导致不断的停下来思考和重写。
- 匆匆写完之后,出现很多的错误,包括各种语法错误,花费了大量时间
- 在整体逻辑没理清之前,陷入了很多的细节,纠缠不清。
- 对于一些方法的使用不清楚,需要不停的去查询手册或者google之。
- 编写重复的代码,执行重复的操作。
- 经常被其他的人或者事情打断,无法集中精力。
- 过早的进行性能之类的优化,引入了复杂性和潜在的bug。
提高编码速度的方法
- 使用恰当的工具。如一些代码生成工具,好的编辑器(vim, textmate, eclipse and so on)。
- 掌握相当数量的快捷键,
- 先写整体逻辑和测试代码,再逐步实现细节。
- 对于常用的库函数记住用法,并想办法提高查询文档的效率
- 写完代码先自己阅读,检查语法逻辑是否正确。也可以采用结对编程的方式
- 检查无误之后,再测试。
- 使用番茄工作法等方法,为自己建立较为完整的编码时间,在这段时间完成高质量的编码。
- 问题整体思路想清楚了,然后开始编码。
- 有意加强练习上面的一些方法。
- 选择好的调试方法,日志、断言等等,积累自己的调试工具。
- 积累自己的代码库,经常做改进
- 想到了再继续添加
Tags: 编程
Posted by reedboat on Nov 23, 2011 in
产品
阅米从开始到现在做了半年了。加上之前产品的摸索阶段,来每讯有一年了。从开始学习模仿Flipboard和zite,到慢慢形成自己的特点。邀请码内测了很久, 不断的完善,用户较少,心里没有底。 现在在Q+平台上, 终于用户开始有较快的增长,活跃度也还不错,不禁有一些欣慰。当然产品还有很多需要完善的地方,推荐算法也要进一步改进。还有手机和ipad客户端,希望尽快的能够上线使用。这一年收获很多,研究了不少东西
热文发现:
- 从微博,RSS中发现热门的内容
- 按照热度排序.
- 按照时间衰减。
自然语言处理:
- 网页正文提取, 过滤广告、导航等内容,只保留文章主体。
- 文章标题提取, 自动去掉标题中含有的网站名称、标语等噪音。
- 制作缩略图,制作不同的缩略图,适用不同的版式和终端展示。
- 文本去重,内容相同或者相近的文章识别并只保留一篇。
- 文本分类,自动将内容划分到合适的分类。
- 来源提取,友好的文章来源展示。
- 关键词提取,分词并自动提取适用于展示给用户的关键词。
社会化:
- 接入腾讯微博、新浪微博
- Q+、人人等开放平台
- 社会化分享
个性化算法:
- 用户喜好模型的建立, 用户的主动、被动行为分析。
- 用户模型的快速生成和更新,用于冷启动。
- 新闻按照用户个人喜好等排序.
- 微博过滤,按照时间、热门度、用户关系、用户兴趣排序
- 即时计算用户喜欢的文章列表。
- 各种个性化因子的权重优化、评价。
- LDA话题模型。
- 计算用户间的亲密度
- 杂志化自动排版技术。
跨平台:
- 普通的Web版本, Q+版。
- 手机web版
- 未能完成的HTML5版本
- 即将推出的Andoroid、IPhone手机版本
- 即将推出的IPad客户端
语言层面:
- 在php, javascript之外,也写了一些Java,C++, Python 的代码。
- 此外还研究了HTML5, NodeJs, Objective C等等。
Tags: 个性化阅读, 全网热文发现, 阅米, 推荐算法, 文本挖掘
Posted by reedboat on Jun 9, 2011 in
编程
objc的内存管理方式
1. retain count. 对象创建的时候(new, alloc, copy)系统自动为对象指定了计数1. 当向向对象发送retain消息的时候,计数+1,当发送release消息的时候,技术-1. 如果计数为0,对象就被销毁,并发送dealloc消息。 注意手工发送retain方法的时候,retain和release必须对应上,保持平衡。
2. 还可以向对象发送autorelease消息,该对象将被放到一个NSAutorelasePool对象池中。当对象池被销毁的时候,会给其中的每个对象,发送release消息. 这些对象的计数都会-1,如果计数减为0,对象就会被销毁. 如果使用Appkit, 会在特定的时间给对象池发送销毁消息,比如当前的用户事件处理完后。
3. 垃圾回收机制。编译的时候,指定-fobjc-gc-only选项,将启用gc机制。用户不需要自己管理内存,像java一样,系统自动识别哪些对象没有指针指向了,自动释放这些内存。. GUI程序中,gc也在事件处理完后触发。 只是目前iphone开发中还不能用这个特性.
对象初始化
objc的对象初始化包括两步
1. 分配内存[ClassName alloc],alloc方法继承自NSObject,分配内存,并清空置0.
2. 初始化[Object init], 返回对象实例; 注意init方法有可能返回的是跟alloc取得的不同的对象. init 是个普通的方法,类可以有多个初始化方法.
- (id) init {
if (self = [super init]){
}
return (self);
}
object = [[ClassName alloc] init];
categories
作用: 给已经存在的类增加新的对象方法
用法
1. 将类的实现代码拆分到多个文件,如果很多的话
2. 创建私有方法的前向引用
3. 给对象增加非正式的协议
动态特性 [待补充]
Tags: ios
Posted by reedboat on Jun 8, 2011 in
编程
objective c 是在C语言上扩展出来的,C的各种语法特性仍然适用。
#import 引用头文件,比#include 好的地方在于头文件只会包含一次,不用再写#ifdef 了.
NSLog Cocoa提供的函数库,统一以NS作为前缀,以示同C标准库的差别. NSLog与printf类似。
@”strings” @后接双引号字符串,代表NSString类型的字符序列,比普通的字符串有更多的用法。
main方法,同c语言一致 int main(int argc, const char * argv[]){return (0);}
面向对象.
id:对象指针类型
方法调用 [shape draw] ,调用shape对象的draw方法.shape 是id类型
[circle draw]
//带参数的调用,green是参数
[circle setFillColor:green]
@interface 声明类接口
@interface Circle
:NSObject
{
ShapeColor fillColor;
ShapeRect bounds;
}
- (void) setFillColor
: (ShapeColor
) fillColor;
- (void) setBounds
: (ShapeRect
) bounds;
- (void) draw;
@end
@implementation 实现类
@implementation Circle. 实现代码中省略掉了self self->fillColor = c;
- (void) setFillColor: ( ShapeColor ) c
{
fillColor = c;
}
@end //Circle
创建新实例, 调用类的new方法
构造方法
init
访问器 getter/setter
set方法需要带上set前缀,get方法不需要,保持跟属性一致即可。
@property 可以简化访问器. 声明同数据成员相同的属性,可以省去访问器方法的编写
@property (选项) 类型 名字;选项包括readwrite/readonly/assign/retain/copy/atomicity等。
在实现中需要用@synthesize让编译器获取实现代码
之后可以用.来引用属性来读取和写入,而不需要调用方法。
继承/组合
super 访问父类
self
@class 声明使用的类,可以不需要#import a.h, 避免循环引用
静态方法, 以+开头
+ (void) instance;
@protocol 协议,类似其他语言中的接口。 遵循协议就必须实现其中规定的方法。
一个类可以同时遵循多种协议。还可以用@optional指定非必须实现的方法
@protocol NSCoding
- (void) encodeWithCoder: (NSCoder *) aCoder;
- (id) initWithCoder: (NScoder *) aDecoder;
@end
@interface Car: NSObject
{
}
@end
Tags: ios