第一个马拉松

跑步过程中关于成绩的想法:

1.  有的人你永远不可能超越。至少身体素质,训练你不是第一。
2.  时刻保持自己的节奏才能跑出自己的最优成绩。一丝懈怠可能就会被多个同水平的对手领先。

感悟

cron秒级调度

配置文件格式:

1
*/5, *, *, *, *, *#echo `date` >> /tmp/fortest

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package main
import (
"fmt"
"os"
"bufio"
"io"
"strings"
"os/exec"
"github.com/robfig/cron"
)
func main() {
c := cron.New()
f, err := os.Open("/root/bitcron")
if err != nil {
panic(err)
}
defer f.Close()
rd := bufio.NewReader(f)
for {
line, err := rd.ReadString('\n')
arr := strings.Split(line,"#")
if err != nil || io.EOF == err {
break
}
c.AddFunc(arr[0], func() {
exec.Command("/bin/bash", "-c", arr[1]).Output()
})
}
c.Start()
select {}
}

又一个情怀产品

昨天发现一个不错的APP,得到。像网易公开课,微信读书一样,一种改变学习方式的产品。

主要通过音频来给用户讲书。一个10w字的说也就不到1小时就能讲完,讲师自己阅读原作。然后通过音频讲自己的读书笔记。从而使用户在较短时间内获取知识,试听了“暗时间”,“钝感力”,感觉不错

主要侧重: 科技 新闻 互联网 方法论 思维

还有随身听功能,随机获取内容。

优势: 1. 省时,快速学习 2. 拓展知识广度

当然想细究的,自己也可以阅读原版!

让App灵活扩展

对于一个商品App页面,一般不会直接显示商品列表。而是对商品分类,展示多个分类的商品信息
来增加用户点击,带动收入。分类像热门,运动,女性,数码这些。可能对应的接口可是就是类似下面
的格式:

 {
      errno: "0",
      end_state: "1",
      total: "-1",
      data: {
          hot: {
              data: []
          },
          sport: {
              data: []
          },
          it: {
              data: []
          },
          xx: {
              data: []
          },
      }
}

对应到客户端也是直接解析具体字段并分类展示,还可能会存在部分硬编码。编程珠玑中提到 数据决定
程序结构
, 那么什么决定数据结构呢? 业务需求! 上面接口数据格式,要是业务要增加一个分类呢?
服务接口添加业务逻辑,添加分类字段。客户端也要开发,等发版,放量,最后展示到用户整个周期是很长的。这种接口格式很难扩展功能。 怎么才能易于扩展呢?看看下面的格式:

 {
      errno: "0",
      end_state: "1",
      total: "-1",
      data: {
          {
              desc: hot,
              data: []
          },
          {
              desc: sport,
              data: []
          },
          {
              desc: it,
              data: []
          },
          {
              desc: xx,
              data: []
          },
      }
}

这种格式客户端不需要知道有多少分类,data里面每个元素就是一个分类,分类里面有自己的描述信息,
数据信息。若要添加分类,只要服务端添加分类数据就行。线上直接生效,避免了客户端开发,发版,放量。