《道士下山》2015年7月上映的时候,口碑极差,很多人说是烂片,网上各种吐槽,包括豆瓣也是。
我是看着陈凯歌的电影长大的,我就觉得陈凯歌导演拍出的片子,不可能太烂。
我花了一天时间仔细看了两遍,极为震感,这毋庸置疑是陈凯歌最有水平的一部电影。
这部影片在我心中的地位超过《无极》,它是有历以来最好看的武侠奇幻电影。
特意写了这么长的故事情节,后面有彩蛋哦。
No Schema –> Freedom Schema
数据库模式(Database Schema)是概念层数据模型在物理层描述的集合,
注意是数据模型在物理层的描述,而不是实现,实现是数据库引擎的工作。
在关系型数据库中模式也就是:
声明a表有哪些字段,b表有哪些字段,a表和b表是如何关联在一起的。
开始接触mongodb时也一直以为mongodb是无模式设计(no schema),
譬如我们在创建表时无需提前声明字段类型,直接使用即可。
但这只是mongodb模式设计的表象:没有模式就是最好的模式。
当我们要实现类似mysql中的多表join操作时,
这时你会发现mongodb模式设计的本质:自由模式才是最好的模式。
最近在简书上看到一篇关于Mongodb模式设计的文章,
翻译略显生硬,理解起来有些吃力,看了原文后发现中文版省略了很多关键细节和代码,
所以我重新翻译了下,希望对感兴趣的同学有所帮助。
这里仍然要感谢译者,有些地方翻译得还是很精妙的。
代码压缩在后端很少用到,在前端却成为一个必不可少的环节。
公司用的压缩工具是一个脚本,位于/utils目录,每次更改文件后,
都要进入这个目录,用./generate.do命令重新生成一下这个文件。
这个脚本是采用YUI compressor来压缩,用java来引入这个包,然后写各种钩子实现的。
很复杂,基本上前端人员是无法维护这个脚本的。
这个脚本已经写好了,对于前端人员来说只需要知道如何使用即可。
在项目中也确实如此,但直到有一天。
后端做了一个功能,他修改了些js,然后让我帮忙发布下这个js。
测试已经通过了,只需要发布代码到线上。
我按照惯例,发布上线了。
上线测试后发现有问题,一看js代码没改过来。
线上有问题,后端人员压力颇大,直接向测试说我这边没问题,是前端代码未更改过来。
我表示非常委屈啊,我是按照标准流程来做的。
随后我又重新试验了几次,发现问题依旧,然后找几个同事来帮忙,
他们都说很奇怪,不知为何会出现此问题。
我向后端反映了这个问题,我表示无能为力。
这时候后端人员开始发飙了,直接指责就是我的问题。
我感觉非常奇怪,出现问题了为什么首先追究是谁的问题,而不是寻求解决办法。
后来我实在没办法,主动去找团队的一个大牛帮忙。
看到这个问题后,大牛弄了一个多小时,终于搞定。
写了一行代码:
此前学习node.js期间follow了这个github项目:N-blog
基于这个版本做了一些改进,
譬如:页面样式的美化、登录支持多种方式、更新文章同时支持更新多个字段等。
详情可以查看我这个版本:(https://github.com/huluoyang/N-blog)
写这个博客项目是我第一次实战node.js,中途也遇到一些坑。
有些是express版本升级导致api变动导致,有些是我对node.js不够熟悉导致。
学习时都是按照别人写好的方法来做,做完后却觉得此前的实现不优雅,有太多限制。
N-blog项目前后端耦合得很紧,但如果我想做的是一个单页应用呢?
之前一直都是用express的res.render()方法来渲染视图,虽然功能已实现,
但一直想前后端分离,想用ajax来访问后端接口,根据返回数据由前端来渲染视图。
当用router.post(“/login”)来接收form表单提交没问题,用ajax提交却遇到拒绝请求这个问题。
实在很不解,查阅资料后发现express4.0后router成了一个单独的组件,有自己独立而且强大的route方法。
表单页面访问用router.get(“/login”),
表单页面默认提交用router.post(“/login”),
表单页面ajax获取数据用router.route(“/login”).get()。
表单页面ajax提交数据用router.route(“/login”).post(),
简单理解:
router是express的一个单独组件,
route是router组件提供的方法,
这个方法的强大之处是可以自定义接口,实现前后端分离。