残剑

Stop walking today and you'll have to run tomorrow!

独自旅行不易

| Comments

alt text

看到一个朋友想独自出去旅行的文章,里面讲述了她那颗向往自由的心,还有就是父母的反对,可能也因此没有随心而动。去年的时候,一个人独自背上包,游走了西南的几个省市,体会最深的是:一个的人的旅行并不是一件简单的事情,吃、住、行都要靠自己去处理。

前十多天还好,毕竟有表弟、姨夫、阿姨及同学的照顾,后面到的一些地方完全没有熟悉的人。在凤凰古城要和表弟分别的时候,心里有一种说不出的失落感,因为此后真的就是一个人在陌生的地方行走。

向上滚动功能

| Comments

使用微博、内涵段子和网易云阅读的时候,总是有两个问题困扰着我:一、什么时候才能够阅读完毕(这种情况一般是在没有心情阅读太多信息的时候会有),到达我上一次阅读过的地方;二、如果有新的更新,我想看到它们,我就得费劲地往上拉。

所以产品经理们是否可以考虑以下的功能:一、刷新后定格到较新但不是排在第一条的信息处,继续阅读的话需要向上滚动而不是向下;二、增加一个回到顶部的功能。

夜间闲谈

| Comments

看过很多的东西未必能够真正的吸收,但终究有那么一些东西融入了你的血液,永远不会忘记。龙兄初中时,在一次期末考试的作文(是满分)中用到了“醉翁之意不在酒,在乎山水之间也”,这让我知道了阅读的意义,需要活学活用;我家门前有两棵树,一棵是杏树,另一棵还是杏树,这让我只知道写作可以以一种幽默的方式出现;我和父亲走在车来车往的马路上,没有半句的言语,父亲把我从路边侧拉到了他的内测,然后继续前行,其实世间最微小的动作才是最感人动听的故事。

最近发现简书上的文字越来越精彩,开始畏惧写作,总担心自己是班门弄斧。如果我们是程序员,同时又有一些写作的爱好,我们时常会这样调侃自己:我们跟作家比写程序,跟程序员比写作,这样我们始终是最优秀的。其实这个时代已经过去,很多东西已经没有了明显的界限:他的职业可能是一个程序员,但他可能更像一个作家;一个以码字为生的人,却在和程序死嗑着。现在很多的程序员都出了非技术类的书籍,而且都还不错。

Scrapy入门简略教程(一)

| Comments

在本教程中,将假设Scrapy已经安装在你的系统上。如果不是,请参见官方的安装指南。我将使用我自己的例子来介绍,主要完成以下任务:

  1. 创建一个新的Scrapy项目;
  2. 定义你将提取的Items;
  3. 写一个蜘蛛抓取网站并提取Items;
  4. 写一个项目管道存储所提取的Items。

Scrapy是用Python编写的,如果不了解的话,需要去学习一下,从项目上入手的话,应该学起来比较的快。

创建一个项目

在开始之前,需要在你的目录下创建一个项目,执行以下命令即可:

1
$ scrapy startproject shiyifang

在当前的目录下就会生成一个叫shiyifang的文件夹,它包含以下一些文件和目录:

1
2
3
4
5
6
7
8
9
10
11
12
$ tree
.
├── scrapy.cfg
└── shiyifang
    ├── __init__.py
    ├── items.py
    ├── pipelines.py
    ├── settings.py
    └── spiders
        └── __init__.py

2 directories, 6 files

关于该目录下文件和文件夹的说明:

  • scrapy.cfg: 项目的配置文件。
  • shiyifang/: 项目的python模块,后续会将代码放入这个目录。
  • shiyifang/items.py: 项目的items文件。
  • shiyifang/pipelines.py: 项目的pipelines文件。
  • shiyifang/settings.py: 项目的settings文件。
  • shiyifang/spiders/: 存放爬虫程序的目录。

关于爬虫开发的选择

| Comments

开发语言:Python
爬虫框架:Scrapy
数据库:PostgreSQL

基于Scrapy爬虫框架,参考官方的教程,很容易写一个爬取淘宝页面的爬虫,但要完善成一个成熟的爬虫却不是一件容易的事情。我这边使用的开发系统是Ubuntu12.10,期间遇到了一些问题,如果有兴趣去尝试,可以参考我博客的“网络爬虫”部分。

引用一下jolie_yu对我的一句回复:

骚年,别急,缘分说到就到。显出你的个性,她会找到方向,走进你的世界。

运行Scrapy项目出错:KeyError: ‘Spider Not Found: Tutorial’

| Comments

运行Scrapy抓取网上数据的时候,出现了以下的错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ sudo scrapy crawl tutorial
Traceback (most recent call last):
  File "/usr/local/bin/scrapy", line 4, in <module>
    execute()
  File "/usr/local/lib/python2.7/dist-packages/scrapy/cmdline.py", line 143, in execute
    _run_print_help(parser, _run_command, cmd, args, opts)
  File "/usr/local/lib/python2.7/dist-packages/scrapy/cmdline.py", line 89, in _run_print_help
    func(*a, **kw)
  File "/usr/local/lib/python2.7/dist-packages/scrapy/cmdline.py", line 150, in _run_command
    cmd.run(args, opts)
  File "/usr/local/lib/python2.7/dist-packages/scrapy/commands/crawl.py", line 48, in run
    spider = crawler.spiders.create(spname, **opts.spargs)
  File "/usr/local/lib/python2.7/dist-packages/scrapy/spidermanager.py", line 44, in create
    raise KeyError("Spider not found: %s" % spider_name)
KeyError: 'Spider not found: tutorial'

剑问君答:IT模范丈夫

| Comments

alt text

残剑:你是班级里公认的模范好男友,世间多少女子希望得到像你这样的好男人!是你让我相信了校园爱情,那么的纯结与真实。7年的努力终究修成了正果,是否可以谈谈你的感情经历?

爱吓人:我只有一次恋爱,也就是这一次,到现在不知不觉已经七年了。我们从最开始对感情的懵懂,到现在成为一对夫妻,可以说是感情跌宕起伏。我有过开心,有过伤心,有过激动,有过失落,有过幸福,有过悲伤。


残剑:在这漫长的爱情路程中,你是如何做的,又有什么样的经验可以提供参考的吗?

爱吓人:我一直坚信一个道理,做任何一件事情都要用心去做,爱一个人也要用心去爱。我谈恋爱的目的就是为了最终能够结婚,能够白头到老,能够在生命的最后能够手牵着手。而且,可能很多人都有我这样的心理,但是最后女朋友和他分手了。我只能说,我是这么做,至于结果我不在乎,也很有可能是我遇对了人。

RTP协议简述

| Comments

实时传送协议(Real-time Transport Protocol,或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合RTCP协议或者RTSP协议)。因为RTP自身具有Time stamp,所以在ffmpeg中被用做一种formate.

RTP协议格式:

1
2
3
4
5
6
7
8
9
10
11
12
    0                   1                   2                   3    
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
   |V=2|P|X|  CC   |M|     PT      |       sequence number         |    
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
   |                           timestamp                           |   
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
   |           synchronization source (SSRC) identifier            |   
   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+   
   |            contributing source (CSRC) identifiers             |   
   |                             ....                              |  
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+