Archives

Tip.It诞生记

灵光一闪

之所以想做 Tip.It,完全是受自己初到北京时找房子各种痛苦的启发,当时为了跳过中介租房子,去58同城,豆瓣等各种网站去看房子,比如说下图就是一个典型的58同城的租房页面。

可以看到电话号码是图片,如果我想记录这个房源,只能一个个号码的往自己的Evernote里面敲,同时还得记录这个房源的网址,以防自己空有号码但是忘记房源信息的尴尬。

即便这样,还是经常导致自己 chrome tab 开了几十个,分不清是否已经电话过某房源的主人的情况发生。

所以我灵光一闪,为什么我们不把这个做成一个可以追述原地址,同时可以保存文字,图片和链接的 todo-list 呢?

这个todo-list不同于evernote,它一打开就是我们要做的东西,里面的内容更像是对网页最有价值的部分的提炼。这个提炼我们会在短时间内频繁的用到,比如我们需要回复某人的邮件,网上看见优惠码等等。

而我自己本人则在不找房子的时候,用来管理我的 bug 清单同时用来记录自己感兴趣但是又需要花时间来阅读的文章链接。

动手

来了 yahoo 之后,自己从最喜欢的 firefox 逐步迁移到了 chrome, 后来经过一番调研后发现 chrome 的 extension 还很好写, 于是自己开始了 chrome 插件的开发之旅。当时自己定的开发目标是这样的。

1
2
3
4
5
6
7
  - 能够 tip 网上的地图,视频,文字以及链接。
  - 通过每条 tip, 用户都能轻易的找到 tip 的原始链接。
  - 用户对每条 tip 添加备注。
  - 能够自动同步,就像evernote一样。
  - 用户手动可以创建各种类型的tip。
  - 有完整的登陆认证功能。
  - 后端的Api能够支持移动应用的开发。

于是就有了第一版的半成品,有登陆,用户可以自由添加 tip,后端用的是 Rails,数据存储是 Mysql + Redis, Redis 主要用来分发用户的login token。

可是当自己写到同步功能时,各种复杂的情况需要考虑,写出的程序自然是 bug 百出,同时考虑 Tip.It 设计的初衷是用户离线时也能使用,能够像 pocket 一样 archieve delete, 自然而然,程序逻辑变得非常复杂,用户每 sync 一次,mysql db 都要运行数十条语句。一度让我对这个项目产生了一些动摇,从最初的每天 check in code 到后面的长达一个月没有check in 过 code。

做减法

Pig On Mac

Install

首先是 Mac OS 下的安装

1
2
 export JAVA_HOME=$(/usr/libexec/java_home)
 brew install pig

Run

Pig 运行分为两种模式,如果需要在本地调试的话,可以使用 shell 模式。

通过运行下面的 command 就行了

Shell mode

1
 pig -x local

Count Words

下面我们用个简单的统计单词次数的例子做进入 pig 世界的 hello world。

首先我们在网上随便找一篇文章做实验。

jing js (二)

Javascript Engine

Parser

1
  - Usually generates AST

Runtime

1
2
3
4
5
6
  - Value representation
  - Object model
    - Dictionary mode
    - Fast mode
  - Built-in Objects
  - Misc

Execution Engine

1
  - Execute code

GC

Foreign Function Interface (FFI)

1
2
3
  - Handle interaction between JS and "the outside world"
  - JS call out to native function
  - Native function call into JS function

Debugger

jing js (一)

Info

这次lyk同学北上,参加 jingjs ,我托lyk童鞋的福,也去jing js打了次酱油。

以下是本次大会两天议程的简要笔记。

A Better World for node.js

Debug

node-inspector

1
slc debug blog

Performance

strongOps

First sign up to get app key.

1
slc strongops [options]

Thrift入门 (一)

Install

Go to thrift page download thrift.

1
2
3
4
brew install boost
 ./configure --without-python
sudo make
sudo make install

Maven

add depndency

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<dependency>
    <groupId>org.apache.thrift</groupId>
    <artifactId>libthrift</artifactId>
    <version>0.9.1</version>
</dependency>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.6.6</version>
</dependency>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.6.6</version>
</dependency>

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.16</version>
</dependency>