2014年8月

mySql的timestamp

timestamp有两个属性,分别是CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP两种,使用情况分别如下:

1.

CURRENT_TIMESTAMP

当要向数据库执行insert操作时,如果有个timestamp字段属性设为

CURRENT_TIMESTAMP,则无论这个字段有没有set值都插入当前系统时间

2.

ON UPDATE CURRENT_TIMESTAMP

当执行update操作是,并且字段有ON UPDATE CURRENT_TIMESTAMP属性。则字段无论值有没有变化,它的值也会跟着更新为当前UPDATE操作时的时间。

关于"每日阅读"这款应用

“每日阅读”这款应用已经上线了,链接:http://myreading.sinaapp.com

这款应用的目的是实现资讯的获取与阅读,资讯内容有简单介绍也有深度阅读。

互联网的资讯太多太杂,有时候不知道该阅读什么,有时候也找不到好的阅读源。

“每日阅读”的技术是python爬虫,考虑到原信息出处网站的版权,因此只爬和解析它们的rss源。

网上确实有很多rss阅读器,但是提供的内容太繁而杂,而且阅读体验也未必好。

我想做好阅读体验,因此设计了一个模板。

我也人工地对这些rss源做了筛选,只爬该爬的,但说到底是基于我自己的考虑。

我选了四大栏目,分别是:“互联网”、“豆瓣”、“阅读”、“图赏”。

每个栏目下精选几个rss源,它们有知乎的,豆瓣的,一个 的,leica中文杂志的等等。

总结起来就是文字、书籍、电影、问答、美图。

目前这些选择看起来是对我这种类型的人考虑,不知道大家喜不喜欢。

但是这些栏目和rss源以后不只这些,我会不断收集和增加。

关于界面,现在就只做了一个模板,我觉得用户体验还行。

 

简单介绍一下这款应用的开发过程:

离线下载版-> sae html版 -> bootstrap前端优化 -> django功能扩充 ->sae上线

离线下载版:当时是直接download下来成.doc和.html文件,然后用office和浏览器打开,不过当时只有标题和链接,内容是没有的。

sae html版:想要把它做成应用,于是就放到sae上,当时只有一个单页。

bootstrap前端优化:为了前端更好的显示效果,继续采用熟悉的bootstrap,之前设计html的时候琢磨着花了几天,用boot优化不过用了一两个小时。

django功能扩充:如果要做大做成应用怎么可能不使用框架呢?在django的使用体验上面感觉比php的框架舒服的多,代码少,功能明了。遇到最多的问题是它的模板系统,挺糊涂的。

sae上线:把本地写好的django都搬上去,参照了网上的做法,很快就搞定了。

 

程序的编译与解释有什么区别?

(转自“知乎”http://www.zhihu.com/question/21486706

取决于你怎么解读这个问题。

从数学的角度,或者从科学的角度来说,王垠的说法是正确的,但这个正确的答案对解答题主的疑问并无帮助。

从工程的角度来说,我们讲究的是一个问题的『实用价值』,把这个问题上升到哲学意义上其实用处不大。

传统意义上的所谓编译与解释,区别在于代码是在什么时候被翻译成目标CPU的指令。——虽然这种解释从科学上说不通(科学上,王垠的那个定义更准确),但这却是一直以来大家更认可的更约定俗成的定义。

对 C 语言或者其他编译型语言来说,编译生成了目标文件,而这个目标文件是针对特定的 CPU 体系的,为 ARM 生成的目标文件,不能被用于 MIPS 的 CPU。这段代码在编译过程中就已经被翻译成了目标 CPU 指令,所以,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新编译

对于各种非编译型语言(例如python/java)来说,同样也可能存在某种编译过程,但他们编译生成的通常是一种『平台无关』的中间代码,这种代码一般不是针对特定的 CPU 平台,他们是在运行过程中才被翻译成目标 CPU 指令的,因而,在 ARM CPU 上能执行,换到 MIPS 也能执行,换到 X86 也能执行,不需要重新对源代码进行编译。

至于为什么会有虚拟机的存在?这个答案也很简单了,因为那些非编译型语言生成的并不是目标平台的代码,而是某种中间代码。而能够运行这种中间代码的机器并不广泛存在,所以我们在每个不同的平台中用软件模拟出这个假想平台的虚拟机,这个虚拟机执行这种中间代码,而虚拟机负责把代码转换成最终的目标平台上的指令。

--
简单总结:
1,编译型语言在编译过程中生成目标平台的指令,解释型语言在运行过程中才生成目标平台的指令。
2,虚拟机的任务是在运行过程中将中间代码翻译成目标平台的指令。

如何在无聊的时候查看"知乎每日精选"?

enter image description here

附上源码:
# -- coding=utf-8 --
import urllib2,re

'''
基本爬虫入门-知乎日报
实现将每天的精选的title和link下载下来
写成zhi-daily.doc

参考链接:
http://blog.csdn.net/yiliumu/article/details/21335245
'''
def httpCrawler(url):
'''
网页抓取
'''
content=httpRequest(url)#发送请求
title=parseHtml(content)#解析网页内容 获得title
saveData(title)#存储到本地

def httpRequest(url):
'''
发送请求
'''
try:
page=None#返回请求内容
SockFile=None#中间变量
request=urllib2.Request(url)#使用urllib2模块
#添加header 模拟客户端
request.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)')
request.add_header('Pragma', 'no-cache')
opener=urllib2.build_opener()
SockFile=opener.open(request)
page=SockFile.read()

finally:
if SockFile:
SockFile.close()

return page

def parseHtml(html):
'''
解析rss内容

'''
result=""
content=""
pattern=r'<title>(.+?)</title>'#正则表达式匹配
pattern1=r'<link>(.+?)</link>'
temp = re.compile(pattern)
link = re.compile(pattern1)
temp=re.findall(temp,html)#temp为list-列表
link=re.findall(link,html)#link为list-列表

article=temp[0]
x=0
for title in temp:
if x!=0:
string=str(x)+"."
string+=title.decode('utf-8').encode('gbk')
string+="\v\v"
string+=link[x]
string+="\v"
#将unicode译码为utf-8编码 再转gbk在cmd下显示
content+=string+"\v" #纵向制表符换行
x+=1

result="\t\t\t"+article.decode('utf-8').encode('gbk')+"\v"+content
return result

def saveData(data):
'''
存储到本地
'''
f=open('dou-daily.doc','w') #写二进制
f.write(data)
f.close()

if __name__=='__main__':#如果运行的是主程序
url='http://www.douban.com/feed/review/latest'#要爬的网页
httpCrawler(url)