MongoDB aggregate 入门
本文可能随着 MongoDB 使用技能的增长而更新,因为 aggregate 可以做的事情太多啦。
在 MongoDB 中,最强大的工具无异于 aggregate,aggregate 接受一个数组,数组的每一项都是管道(pipeline)对象。
管道的概念我们在 Linux 中也遇到过,可以把前面的返回值作为后者的输入值操作。
本文可能随着 MongoDB 使用技能的增长而更新,因为 aggregate 可以做的事情太多啦。
在 MongoDB 中,最强大的工具无异于 aggregate,aggregate 接受一个数组,数组的每一项都是管道(pipeline)对象。
管道的概念我们在 Linux 中也遇到过,可以把前面的返回值作为后者的输入值操作。
这次的标题起得比较简单是因为起标题太难了。
故事要从我在 Element 里发现了一个 Bug 说起,实际上这是 Safari 的渲染问题:http://jsfiddle.net/erpf75ky/4/
实际上在新版也能够复现这个问题,只要是 Safari,屡试不爽。
我们发现是table-layout
的问题,在动态添加的table-layout
似乎存在了一些微妙的渲染问题,于是在 Safari 下添加一个 class 去修改table-layout
的状态,改变一次设置值即可正确渲染。
然而,这样的 Hack 在大部分浏览器里是没有必要的,所以就想着试试加了一下 Safari 的 Hack:
// Simple hack for Safari 9+
_::-webkit-:not(:root:root), .el-table.loading {
.el-table__body, .el-table__header {
table-layout: auto;
}
}
参考:
在 PC 上,有的时候我们并不需要 Chrome 给我们限定 12px 的最小字号,可是我们也不可能强行要求用户人工设置一波(当年 CodeCademy 的 Bug 就是因为最小字号的问题),所以必须想办法。
旧版 Chrome 可以通过:-webkit-text-size-adjust:none
来设置,但其实是利用了一个微小的 Bug,在新版已经修复了,此外,这种方法会导致全局的缩放失效,不够友好。
在新版中,可以用 scale
解决缩放的问题,但如果是:-webkit-transform: scale(0.75);
,Safari 也在缩放范围内,有两个方法解决:
第一是所有的浏览器统一的使用缩放,在 12px 的基础上操作。
最近干了一件特别勤劳的事情——把博客迁移到阿里云服务器,不过期间也出了一点有趣的小插曲。
关于 CentOS 里安装 PHP,这篇已经写过很多次了:http://codesky.me/archives/centos-lnmp-yum.wind
然后只需要绑定好域名,可以看这篇:http://codesky.me/archives/centos-ghost-install-introduce.wind,如果要有多个子域,直接复制黏贴一份进行对应修改就行了。
以前在面试的时候正好做过一道拖动方块的题,那个时候没有用 HTML5 的 Drag & Drop 来做,其实用 Drag 来做的话会简单很多,不过当时写的文件现在估计早就找不到了,这次业务正好有这个需求,而且又不用考虑兼容性,理所当然的用起了这个。
Drag 的使用门槛还是相当低的,基本上只要知道什么时候触发什么事件就行了,因此这篇主要也像是过一遍 API。
用原生 JS 实现了以下效果:
在公司的黑客松放弃治疗之后,好久没有看我的 GitHub 了,于是更新了一下自己的其中一个万年大坑。
项目地址:https://github.com/csvwolf/hide-locked-problem-in-leetcode
这里推荐一下一个汉化版的开发手册:https://crxdoc-zh.appspot.com/extensions/
在上一版中简单的做了一个click
触发的插件,不是我理想中的效果,于是研究了一下如何对页面加载做监听,甚至是监听指定的 DOM 载入。
I reposted an article to avoid high maintenance cost of the repo and as well, everyone can have a try, no more need to repy on cloing the repo.
First of all, the steps of how to install laravel is omitted, use laravel new blog
directly.
If you are a Chinese mainland user, you can use the composer image: http://pkg.phpcomposer.com
If there is a Warning
after new
like( Hmmm, anyway, I met the problem everytime. OTZ )
重新开一篇文章来写,这样可以免于仓库个人维护成本比较高,以及大家可以自己尝试配一下,不必依赖克隆仓库等。
首先这里省略安装Laravel的步骤,直接laravel new blog
。
如果你是中国大陆用户,可以尝试这个composer镜像:http://pkg.phpcomposer.com。
如果在new
之后发生了Warning
(嗯,反正我每次都遇到了OTZ)
实际上也不能说是严格意义的跨域,因为我们的跨域只针对同源策略中的部分情况,也就是在host为不同子域的情况,这类问题其实是比较常见的,在大型网站中使用到的单点登录等技术的情况下,我们才会遇到诸如登录页面为login.codesy.me,而我的目标页面是admin.codesky.me。
那么此时如果我简单的设置Cookie,实际上设置的是login.codesky.me的Cookie,对于admin.codesky.me是不起作用的,而又不能直接通过Selenium去设置(因为本质上就是一个浏览器嘛)。
但是尽管不能设置在admin.codesky.me,我们可以把Cookie设置在.codesky.me中,这样会匹配到全部的子域。
昨天在帮受泽写一句查询的时候才发现MySQL在子查询中是无法直接使用Limit的,不仅低版本没法用,官方手册表明连最新版(5.7)依旧不能用:
https://dev.mysql.com/doc/refman/5.7/en/subquery-restrictions.html
当然,实在想要搞也是可以的,在子查询里再嵌套一层就行了。
比如原句:
select * from table where id in (select id from table limit 10);