0

这一年的工作

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: , , , ,

 
0

Objective C 学习笔记(3) – 实现特点

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:

 
0

Objective C 学习笔记(1) — 语法

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方法

[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:

 
2

新的一天

Posted by reedboat on Mar 9, 2011 in 杂乱

太阳每天都是新的。早上起来,看着太阳,深吸一口新鲜空气,微笑着张开双臂,拥抱着这美好的新一天。

 
0

IOS下的Safari的一些特性

Posted by reedboat on Feb 28, 2011 in 杂乱

1. viewport

iOS Sarari 浏览器允许网页 Head 里存在一个 Viewport 声明,用来规范浏览器对此页面的缩放特性,完整的声明如下:

<meta name="viewport" content="width=device-width,
 initial-scale=1, minimum-scale=1,
maximum-scale=2, user-scalable=no" />

Viewport 里目前有五个可以设置的属性,它们各自的作用如下:

  • width:设置 viewport 的宽度,即 iPhone 最初模拟 PC 浏览器的宽度,之后 iPhone/iPad 会这个宽度展现的页面同比缩放到 iPhone/iPad 屏幕上。设置 width=device-width 后就不会再进行缩放了,因为宽度正好和 iPhone/iPad 的宽度相同(前提是没有设置缩放比例)。
  • minimum-scale 和 maximum-scale:是控制用户允许设置的最大/最小缩放比例的。
  • user-scalable:标识是否允许对页面进行缩放,取值有两个 yes 和 no。设置为 no 则不允许进行页面缩放了。
  • initial-scale:设置页面的初始化缩放比例。

通过控制这个,将网页的主体内容扩展到整个界面,能够给用户更好的阅读体验。

2. 横竖屏切换。

Mobile Safari for iPad 可以直接在 link 或者 style 标签的 media 属性里声明该样式是竖屏的还是横屏的。可以利用来在横竖屏下面做一些不同的内容布局。

/* 竖屏时使用的样式 */
<style media="all and (orientation:portrait)" type="text/css">
#landscape { display: none; }
</style>
 
/* 横屏时使用的样式 */
<style media="all and (orientation:landscape)" type="text/css">
#portrait { display: none; }
</style>

Copyright © 2012 苇叶舟 All rights reserved. Theme by Laptop Geek.