写于农历狗年前的除夕

因为外婆现在住在我们家,奶奶家离我家走路过去也就几分钟,所以过年家里会比较热闹。昨天小舅小舅妈和他们的儿子女儿到家里来了,小舅的儿子在浙大念大四,不打算考研了,应该今年就会出来工作了,小舅的女儿也在念大学,金融相关专业的,还没到毕业的时候,多半会去考研。今天家里来又了几个亲戚,大姨的儿子和两个女儿,然后还有一个是小姨的女儿,小姨的女儿感觉应该有好几年没见了,感觉变化真大,根本没认出来,我悄悄地问大姨的女儿这是不是嫂子(大姨儿子的老婆,囧),大姨的女儿可能因为几乎每年都会见,所以没觉得变化这么大。问了下小姨女儿她今年多大了,说是20岁,98年的,这么一想,突然觉得我年纪真的好大了,以前小的时候大家在一起的时候我会觉得我是小孩,她也是小孩——比我小一点的小孩,现在感觉就是我是大人了,她还是小孩。大伯的儿子估计今天会过来。因为家里跟奶奶家很近,而且这种落地房里面的房屋数量相对比较多可以住比较多的人,比较适合亲戚过年暂住,所以,我经常过年都要跟爸妈挤一起睡觉,这样好多腾出来一个房间,大家挤一挤,一个房间挤一家人^_^。

几个eslint插件的介绍

ESLint支持第三方插件。在使用这些第三方插件前,你需要先使用npm来安装它们。要在eslint配置文件中配置这些插件,需要在配置文件中添加一个“plugins”根属性,其值即为由这些插件名(插件名前面的“eslint-plugin-”前缀可以省略)构成的字符串数组。

说明:由于Node里require函数的限制,全局安装的ESLint只能使用全局安装的ESLint插件,项目里安装的ESLint只能使用项目里安装的ESLint插件。

Java导出含有多个工作表(sheet)的excel文件

最近碰到一个需求,后台有个台账导出的功能,以前所有数据都是导出到excel的一个sheet中集中显示的,这次的需求是要根据列表中的签单机构名称来分sheet导出,即签单机构相同的台账在同一个sheet中显示。把完成这个需求的核心代码去掉业务逻辑后就变成了下面这样的代码。需要说明的一点是,像这样的需求不可以真的是根据“名称”来分sheet导出的,你应该根据id这种不会重复的字段来作为分类依据,“名称”理论上是存在同名的可能性的。

Enable jqgrid to do/cancel selecting only selectable items

I had this requirement these days: We have a table with many rows among which some are selectable and some are not selectable, and there is also a selecting-all button which should support do/cancel selecting all selectable rows. But after glancing over the old project, I found no similar ready-made code, so I search for this by Baidu, and found solution like below (modified and beautified):

Centos7开机自启动nginx, php-fpm

今天收到邮件才发现VPS到期被停用了o(╯□╰)o,赶紧地,去把费用续了,ssh到服务器发现,还好还好,文件都还在,不用重新装软件,不用重新clone仓库代码。不过发现我的wordpress博客没法用了(nginx + php-fpm + mysql),service nginx restart 没用,service mysqld restart 也没用,后来发现可能是php-fpm模块的问题。

InnoDB: Error number 28 means ‘No space left on device’

前几天数据库挂了,ssh 登陆服务器后service mysqld restart 重启数据库后正常了就没当回事,今天又挂了,然后重启mysql启动不了了。vi /var/log/mysql.log 查看mysql日志发现是因为磁盘容量差不多被用光了,一记df -h更加佐证了这个现象,删掉wordpress博客定期备份的数据库和文件后,硬盘容量又回来了,重新service mysqld restart后mysql服务就恢复正常了

桌面端浏览器兼容性问题总结

这里有个非常好用的网站:http://caniuse.com,在这上面可以查各种CSS属性的兼容性,比如可以查到微软对border-radius属性的支持是从IE11开始的,这个地方如果考虑为优雅降级处理的话,就是IE11开始的现代浏览器里显示圆角,IE10及以下的浏览器里显示矩形;这个地方如果想都显示圆角的话,可以不使用border-radius属性,改为使用background-image背景图片,然后将圆角图片作为背景使用。

IE8出现的比Html5还早,不支持header、footer、article、nav这些新标签是能理解的。在IE8中,可以通过document.createElement(‘article’); 这样的方式来让IE8能对其进行识别,另外还需要在CSS里对这些元素进行display属性的声明,因为IE8并不知道他们是块级元素还是行内元素。这种重复性的工作早有现成的解决方案——可以直接使用一个叫html5shiv的js库(这种对页面样式潜在影响比较大的库,应当在head头部中就进行引入,而不是至于body结束标签处)。

JS原型与原型链

JS中,对象分为普通对象和函数对象两种,Object和Function是JS自带的函数对象。凡是通过new Function()的创建的对象都是函数对象,其他的都是普通对象。

每当定义一个对象(函数)时,对象中都会包含一些预定义的属性。其中,函数对象会有一个prototype属性,其值就是我们所说的原型对象(普通对象没有prototype,但有__proto__属性;函数对象同时含有prototype和__proto__属性)。注意__proto__这里proto前后分别都是两个下划线,不是一个。

promise的使用

不像旧回调风格代码,promise可以确保下面这些特性:

回调不会在当前事件循环结束之前被调用;
通过.then追加的回调函数在异步操作结束(成功或失败)之后会被调用,即便这个.then是在异步操作已经被resolved之后追加的;
可以通过多次追加.then来添加多个回调函数,这些回调函数会按照被添加的顺序独立执行。
不过promise的最直接的好处还是可链式使用。

怪异模式与标准模式

这里应该敲下黑板。如果你的服务器在HTTP响应头的Content-Type里使用application/xhtml+xml 这个MIME类型来将你的网页声明为XHTML的话,你不再需要通过声明一个DOCTYPE来激活标准模式,因为这类文件总是会被浏览器按完全标准模式进行解析。但是需要注意的是,使用application/xhtml+xml 这个MIME类型的话,IE8浏览器会出现下载对话框而不是显示对应的网页,因为IE8不认识这个文档格式——第一个支持XHTML格式的IE浏览器是IE9。