stay hungry stay foolish

love Ruby.

So Slow!

又一个不眠夜

尽管思绪万千,但是还是写不出东西。 就像吃错了东西,肚子疼但是拉不出屎!

1
shit.run()

百度就是不会做产品

百度收购千千静听是2006年,百度音乐自从收购千千静听后没几年就改名百度音乐,我真觉得这是一桩损人不利己的生意。我这个小脑袋瓜怎么也想不通,这尼玛是几个意思啊?

收购千千静听后没想着怎么强化功能提升用户体验,安置流氓软件,内置广告弹窗。好说 赚钱嘛! 麻烦你,百度那些做产品的,脑袋被驴踢了么?你要这么做你自己做一个播放器就行了嘛,干嘛要收购千千静听这个做纯净播放器的软件。在短时间内赚到了流量和广告费,但严重影响了的用户体验非但不只是流失而是回启到反作用的,我担心这个收购费用赚回来没有??这些都不说亏了就亏了,但是这斯没点长进。

再怎么说!你又不缺钱,你先投资点做好了东西再想赚钱行不行? 然后软件开发设计那块用点心好不,非要用浏览器套个框这样来草草了事,软件卡的不行,我直接用浏览器还没这么卡(虽然没详细测试对比过,但是的确能感觉出来!)

跨平台也做的不行,都用webkit来做了干嘛不在mac和linux上面做一个,懒,从一开始百度这些 子产品 就没有用心去做!就尼玛一个音乐播发播发器都要加p2p,还改不了速度,猛上传流量!抛开版权不说,我听了的歌,下次打开还要下载,做个加密缓存到本地也行吧!

大家别以为百度规模大,就能在所有方面都能做得很好。举个栗子,百度当年跟阿里巴巴竞争的交易网站“百度有啊”,在淘宝面前完全是一败涂地,惨淡收场。如果当年有个相当规模的购物网站直接被百度收购,在足够的客户群支撑下,电子商务方面百度还是能插个手的。建个交易网站对百度来说也很容易,但吸引的客户群很难。

Pyquery

python pyquery

pyquery,python程序员一定要了解的库,极其好用! 类似于jquery的语法来查询XML文档。pyquery使用lxml库来实现快速XML和HTML操作。 使用easy_install 或者pip安装往往都是应为 lxml库没有安装造成安装失败,所以请事先安装lxml

download 本人使用python2.7

1
2
3
4
5
6
7
8
from pyquery import PyQuery as pq
from lxml import etree
import urllib
d = pq('<html></html>')
d = pq(etree.fromstring("<html></html>"))
d = pq(url='http://google.com/')
# d = pq(url='http://google.com/', opener=lambda url: urllib.urlopen(url).read())
d = pq(filename=path_to_html_file)

红van影评 !

有种feel要来一发,看了香港所谓的新锐电影 《那夜凌晨,我坐上了旺角开往大埔的红VAN》 的一点点感悟,

唉,老实说我对这个电影本来是很期待的,但是真的不知道怎么说,不知道是不是香港电影的通病,视乎好东西到了 香港的 制作 流程里面就要变味。

怎么说,小说应该是比电影要好很多了,各方面评论都不错,很多说书评都说不错,是香港近年来少有的好作品。作者也很谦虚,很客观的评论了小说的不足。

然后就是宣传片了,我乍一看真是以为香港电影要翻天,有些台词我都没想到,貌似要赶美超欧了。起码我在我电影宣传片里面我看到了对这个故事很深刻的描写。

可是。。。。 可是 我看了电影后就陷入了沉思。

演员都是半豪华整容,任达华,惠英红,林雪 都是老戏骨,戏很到位,几个新演员就认识李璨琛

6.0

故事开头到时很能带入,几个香港市井对话镜头把前戏铺的很好,但是我到觉得其实也没什么难度,毕竟这个都是香港业界常态了。我估计摄影师,什么的导演不用说都知道怎么拍的好。

好了,故事起开蛮顺利。我看过小说一点,在豆瓣里面。我尽力不被影响,前20分钟真是不错,大家都是按照正常香港人的生活方式,表达出来的。

故事到了下车那会儿还把,每个人物的性格分的淋漓尽致,从那里开始人物的在危机面前表现出来的不愿意接收,智慧,自私都是正常的。

好故事到这后面好都不错,几个大学生的遭遇立刻把恐怖气疯营造出来了。

就在这之后后开始慢慢狗血了,严格来说,我主观的来说应该是那个 毒冷(粤语那个字不知道怎么打,接下来陆陆续续都有些)开始唱歌说了个我觉得跟故事完全没有必要联系在一起的歌。

吧,然后莫名其妙的挂了。

接着大家去追 日本人 ,和 回忆的朝鲜人都是狗血的,我觉得是降低故事档次。

你说你没事把一个日本本搬出来,说成救心,不管怎么说 都是在间接的抬高日本文化。很难在建立强势的香港本土文化 对吧??导演编辑 这个在电影里面可以改啊~

然后就是强奸 大家对强奸犯的处理态度,这样安排并不能够把电影的气疯烘托出来的,真的!

你说要是把那个人多憋几天,然后花点时间来刻画这个恶徒->再到告发,,这样一起喝成,主角几个马上变的正义凛然,下面的故事也好铺垫。

居然就,无蛇蛇的要一人插一刀。这样要来的气氛,真的是降分,竖下拇指的。

好,,这个也不错了,后面的气氛就处于,导演想要营造恐怖紧张,却又不必要的弄搞笑了的时间中度过..。加上后来的5毛 特技,又要加浪漫写实主意风格的拍摄方法,你好啊..,导演, 行啊导演…这样的大烂作收尾,拍出来不容易啊!

客观的来说你前期营造的气氛对后面的拍摄真的很有利,你稍微把逻辑性弄好,合理性弄好,想拍的烂真的很难啊~,陈果你并不是要因为你拍了几个艺术片就硬是要把自己的风格再加进去的啊

好吧我们再来看下中期,好几个,乱插乱安排的镜头真的不太写意,就比如说,导演你要把主角到底要塑造成什么形象,开始的话还有救,后面你就彻底安排成了个懦夫,又没主见,又不正义,又胆小,偶尔要装下B,其他都就更无厘头了,中期就看几个老戏骨还有点看头,其他的都是狗血!

后期把 来了个浪漫写实主义,哥你还能在扯点么。 你慢慢的代入故事,收尾个 结束了给点意境 ,给点念想 不好么,非要弄成粤语话剧!

追车那里 就不说了,弄得我完全没有心情看下去,于是乎我不看了 。。

我也来个务实狗血的收尾。

这个电影不好跟 导演,现在香港电影市场,体制 各有一点的关系。 现在香港电影需要杜琪峰,尔冬升 这个的顶梁柱,陈果这些的继续拍艺术片。对吧,培养些好导演!

演员这块更是掺不忍睹,完全在吃老本,积累的好演员都老了,新演员不知道是不是体制和产片量的原因 都慢慢有点扶不上墙,这个红van的还行,那个新古惑仔的那批就没救了。

不是我刻薄,无脑,是我有点惋惜有点恨,

为什么我这么恨 因为我爱它爱的深沉!!!

Mongodb 速度成法

mongo的优点就不说了,我觉得在我认证范围内的业务大部分可以用mongo,这里也主要介绍python 和php的安装和使用

根据自己的系统选择 解压后在bin里面 有很多个工具

  • Mongod.exe 是用来连接到mongo数据库服务器的,即服务器端。

  • Mongo.exe 是用来启动

  • MongoDB shell的,即客户端。

其他文件:

  • mongodump 逻辑备份工具。

  • mongorestore 逻辑恢复工具。

  • mongoexport 数据导出工具。

  • mongoimport 数据导入工具。

启动 X:/X/bin/mongod.exe --dbpath=x:/x/data/db

(例如) dbpath 是自动的数据库存放位置

好了那么现在我们就可以进入客户端了

1
>mongo.exe

4.2)创建collection并插入数据

在传统关系型数据库中,创建完了库后接下来会创建表,但是在mongoDB中没有“表”的概念,与其对应的一个概念是集合,即collection。

在shell 命令窗口键入如下命令:

1
> db.users.insert({'name':'xumingxiang','sex':'man'}) // 这条命令是向users 集合中插入一条数据。如果集合users不存在,则会先新建一个,然后再插入数据,参数以JSON格式传入。

因为我们后面要测试删除数据,所以我们再插入一条数据:

1
2
3
db.users.insert({'name':xiangshu','sex':'man'})
4.3
//在上面4.1)和4.2)我们创建了数据库,创建了集合,还插入了两条数据,那么这些操作有没有执行成功呢?我们来查询一下:

在shell 命令窗口键入如下命令:

1
2
3
>show dbs // 显示所有数据库  
>show collections // 显示当前数据库下的所有集合  
>db.users.find() // 显示users集合下的所有数据文档

看我用红色标记的部分。这说明我们之前的操作是成功的。我们还看到系统给每条记录分配了一个惟一主键 _id 。

4.4)更新数据

现在我们要把第二条数据的sex改成女即“women”

1
> db.users.update({'name':'xiangshu'},{'$set':{'sex':'women'}},upsert=true,multi=false)

解释一下几个参数:

第一:查询的条件

第二:更新的字段

第三:如果不存在则插入

第四:是否允许修改多条记录

4.5)删除记录

我们现在要把第一条记录即'name'为'xumingxiang'的

1
2
3
4
 > db. users.remove({'name':'xumingxiang'})
 我们在检验一下45两步有没有操作成功在shell 命令窗口键入如下命令

 > db.users.find()

从输出的界面我们看到现在只剩下一条'name'为'xiangshu'的了,并且它的'sex'为'women',这说明4)5)两步操作成功了。

4.6)删除所有记录

1
> db.users.remove()

4.7) 删除collection

1
> db.users.drop() //如果删除成功会返回“true”,否则返回“false”

4.8)删除当前数据库

1
> db.dropDatabase()

mongo 相关命令

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
db.AddUser(username,password)  添加用户

db.auth(usrename,password)     设置数据库连接验证

db.cloneDataBase(fromhost)     从目标服务器克隆一个数据库
db.commandHelp(name)           returns the help for the command
db.copyDatabase(fromdb,todb,fromhost)  复制数据库fromdb---源数据库名称todb---目标数据库名称fromhost---源数据库服务器地址
db.createCollection(name,{size:3333,capped:333,max:88888})  创建一个数据集相当于一个表
db.currentOp()                 取消当前库的当前操作
db.dropDataBase()              删除当前数据库
db.eval(func,args)             run code server-side
db.getCollection(cname)        取得一个数据集合同用法db['cname'] or
db.getCollenctionNames()       取得所有数据集合的名称列表
db.getLastError()              返回最后一个错误的提示消息
db.getLastErrorObj()           返回最后一个错误的对象
db.getMongo()                  取得当前服务器的连接对象get the server
db.getMondo().setSlaveOk()     allow this connection to read from then nonmaster membr of a replica pair
db.getName()                   返回当操作数据库的名称
db.getPrevError()              返回上一个错误对象
db.getProfilingLevel()
db.getReplicationInfo()        获得重复的数据
db.getSisterDB(name)           get the db at the same server as this onew
db.killOp()                    停止杀死在当前库的当前操作
db.printCollectionStats()      返回当前库的数据集状态
db.printReplicationInfo()
db.printSlaveReplicationInfo()
db.printShardingStatus()       返回当前数据库是否为共享数据库
db.removeUser(username)        删除用户
db.repairDatabase()            修复当前数据库
db.resetError()
db.runCommand(cmdObj)          run a database command. if cmdObj is a string, turns it into {cmdObj:1}
db.setProfilingLevel(level)    0=off,1=slow,2=all
db.shutdownServer()            关闭当前服务程序
db.version()                   返回当前程序的版本信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
db.test.find({id:10})          返回test数据集ID=10的数据集
db.test.find({id:10}).count()  返回test数据集ID=10的数据总数
db.test.find({id:10}).limit(2) 返回test数据集ID=10的数据集从第二条开始的数据集
db.test.find({id:10}).skip(8)  返回test数据集ID=10的数据集从0到第八条的数据集
db.test.find({id:10}).limit(2).skip(8)  返回test数据集ID=1=的数据集从第二条到第八条的数据
db.test.find({id:10}).sort()   返回test数据集ID=10的排序数据集
db.test.findOne([query])       返回符合条件的一条数据
db.test.getDB()                返回此数据集所属的数据库名称
db.test.getIndexes()           返回些数据集的索引信息
db.test.group({key:...,initial:...,reduce:...[,cond:...]})
db.test.mapReduce(mayFunction,reduceFunction,<optional params>)
db.test.remove(query)                      在数据集中删除一条数据
db.test.renameCollection(newName)          重命名些数据集名称
db.test.save(obj)                          往数据集中插入一条数据
db.test.stats()                            返回此数据集的状态
db.test.storageSize()                      返回此数据集的存储大小
db.test.totalIndexSize()                   返回此数据集的索引文件大小
db.test.totalSize()                        返回些数据集的总大小
db.test.update(query,object[,upsert_bool]) 在此数据集中更新一条数据
db.test.validate()                         验证此数据集
db.test.getShardVersion()                  返回数据集共享版本号

与sql语法比较

MongoDB语法 MySql语法
db.test.find({‘name’:‘foobar’}) select * from test where name=‘foobar’
db.test.find() select * from test
db.test.find({‘ID’:10}).count() select count(*) from test where ID=10
db.test.find().skip(10).limit(20) select * from test limit 10,20
db.test.find({‘ID’:{$in:[25,35,45]}}) select * from test where ID in (25,35,45)
db.test.find().sort({‘ID’:-1}) select * from test order by ID desc
db.test.distinct(‘name’,{‘ID’:{$lt:20}}) select distinct(name) from test where ID<20
db.test.group({key:{‘name’:true},cond:{‘name’:‘foo’},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}}) select name,sum(marks) from test group by name
db.test.find(‘this.ID<20’,{name:1}) select name from test where ID<20
db.test.insert({‘name’:‘foobar’,‘age’:25})<==>insert into test (‘name’,‘age’) values(‘foobar’,25)
db.test.remove({}) delete * from test
db.test.remove({‘age’:20}) delete test where age=20
db.test.remove({‘age’:{$lt:20}}) elete test where age<20
db.test.remove({‘age’:{$lte:20}}) delete test where age<=20
db.test.remove({‘age’:{$gt:20}}) delete test where age>20
db.test.remove({‘age’:{$gte:20}}) delete test where age>=20
db.test.remove({‘age’:{$ne:20}}) delete test where age!=20
db.test.update({‘name’:‘foobar’},{$set:{‘age’:36}}) update test set age=36 where name=‘foobar’

可视化的客户端管理工具MongoVUE

使用mongo.exe 管理数据库虽然可行,功能也挺强大,但每次都要敲命令,即繁琐枯燥而且效率低下。下面介绍一款Windows下的可视化操作的管理工具MongoVUE

下载地址: