MongoDB 初窥

这周开始由于项目的原因正式接触 MongoDB,之前稍微看过一点,但没怎么正式用过,一方面是设计思维牢固的钉死在了关系数据库的三大范式上(第四和 BC 有点过了……),另一方面是没有一个机会去做 PHP 以外的站(嗯,因为黄金搭档……)。

所以兜兜转转,稍微介绍一下 MongoDB 的一些事。

引言

MongoDB 是一个 NoSQL (Not Only SQL) 的数据库,提供面向文档的存储,操作简单,天生的分布式,带文件存储功能(GridFS)。

- 阅读剩余部分 -

Xcode 编译 Weex Playground 到 iOS 设备

作为不懂 iOS 开发的萌新,Weex Playground 的 App Store 版本现在还不能运行 Vue 版本,实在是苦大仇深,原生自然比模拟器爽一些,所以试了一下编译到自己的手机上,步骤如下:

首先,git clone git@github.com:alibaba/weex.git

然后如同文档介绍的:

npm install
./start

- 阅读剩余部分 -

双端队列 Deque 与 随机化队列 RandomizedQueue 的实现

双端队列,也就是栈和队列的结合,同时可以从头和尾进行进出栈 / 队列的功能,看一下他的数据结构就懂了:

public class Deque<Item> implements Iterable<Item> {
   public Deque()                           // construct an empty deque
   public boolean isEmpty()                 // is the deque empty?
   public int size()                        // return the number of items on the deque
   public void addFirst(Item item)          // add the item to the front
   public void addLast(Item item)           // add the item to the end
   public Item removeFirst()                // remove and return the item from the front
   public Item removeLast()                 // remove and return the item from the end
   public Iterator<Item> iterator()         // return an iterator over items in order from front to end
   public static void main(String[] args)   // unit testing (optional)
}

双端队列的实现还是比较简单的(虽然实际上还会是踩了一些微小的坑)。

- 阅读剩余部分 -

CSS Safari Hack

这次的标题起得比较简单是因为起标题太难了。

故事要从我在 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;
    }
}

参考:

is there a css hack for safari only NOT chrome?

并查集与渗漏问题

前两周的时候看到有人推荐https://www.coursera.org/learn/algorithms-part1/的算法课,正好基础也忘得差不多了,觉得也是应该复(yu)习(xi)一下了,普林斯顿的这个公开课确实不错。

好了,废话不多说,来总结一下第一周,说说并查集和渗漏问题吧。

数据结构介绍

并查集是一个处理连接问题的数据结构,可以用这个结构快速的找到两个元素是否属于同一集合(或者说连通),和图的连通算法不同的是它忽略了路径的概念,只需要结果。

- 阅读剩余部分 -

CSS 解决 Chrome 限制最小12px字号问题

在 PC 上,有的时候我们并不需要 Chrome 给我们限定 12px 的最小字号,可是我们也不可能强行要求用户人工设置一波(当年 CodeCademy 的 Bug 就是因为最小字号的问题),所以必须想办法。

旧版 Chrome 可以通过:-webkit-text-size-adjust:none来设置,但其实是利用了一个微小的 Bug,在新版已经修复了,此外,这种方法会导致全局的缩放失效,不够友好。

在新版中,可以用 scale 解决缩放的问题,但如果是:-webkit-transform: scale(0.75);,Safari 也在缩放范围内,有两个方法解决:

第一是所有的浏览器统一的使用缩放,在 12px 的基础上操作。

- 阅读剩余部分 -

CentOS + Nginx Typecho 迁移指南

最近干了一件特别勤劳的事情——把博客迁移到阿里云服务器,不过期间也出了一点有趣的小插曲。

关于 CentOS 里安装 PHP,这篇已经写过很多次了:http://codesky.me/archives/centos-lnmp-yum.wind

然后只需要绑定好域名,可以看这篇:http://codesky.me/archives/centos-ghost-install-introduce.wind,如果要有多个子域,直接复制黏贴一份进行对应修改就行了。

- 阅读剩余部分 -

HTML5 Drag & Drop 入门

以前在面试的时候正好做过一道拖动方块的题,那个时候没有用 HTML5 的 Drag & Drop 来做,其实用 Drag 来做的话会简单很多,不过当时写的文件现在估计早就找不到了,这次业务正好有这个需求,而且又不用考虑兼容性,理所当然的用起了这个。

Drag 的使用门槛还是相当低的,基本上只要知道什么时候触发什么事件就行了,因此这篇主要也像是过一遍 API。

用原生 JS 实现了以下效果:

- 阅读剩余部分 -

Hide Locked Problem In LeetCode Chrome插件 开发总结

在公司的黑客松放弃治疗之后,好久没有看我的 GitHub 了,于是更新了一下自己的其中一个万年大坑。

项目地址:https://github.com/csvwolf/hide-locked-problem-in-leetcode

这里推荐一下一个汉化版的开发手册:https://crxdoc-zh.appspot.com/extensions/

在上一版中简单的做了一个click触发的插件,不是我理想中的效果,于是研究了一下如何对页面加载做监听,甚至是监听指定的 DOM 载入。

- 阅读剩余部分 -