luoqiang 发布于 01月04, 2018

centos安装puppeteer爬坑

前面一篇文章《PhantomJS截图实践》介绍了PhantomJS,这次介绍一下puppeteer截图,主要说下使用过程中遇到的坑。安装npm install puppeteer --save在我自己mac上使用的时候直接安装是没有问题的,到我的centos服务器上就挂了。主要原因是安装puppet...

阅读全文 »

luoqiang 发布于 01月02, 2018

canvas指纹追踪技术

一般情况下,需要在网络上定义一个个体,比如用户登录、广告追踪,都会用到cookie(session)技术。当用户在当前网站访问或登录时可以种下一个唯一的cookie值,并将其与服务器session存储的值进行对比就可以定位一个用户或判断一个用户是否登录。 然后随着网民对个人隐私的重视,cookie...

阅读全文 »

luoqiang 发布于 12月11, 2017

使用iframe无刷新上传文件

如果需要无刷新提交数据,一般来说我们都会使用AJAX来实现,AJAX的强大是毋庸置疑的。特别是在XMLHttpRequest Level 2中,AJAX进一步得到扩充,可以使用AJAX来上传文件,并且可以监控上传进度,同时还可以对大文件进行分片上传。 MLHttpRequest Level 2上传...

阅读全文 »

luoqiang 发布于 12月07, 2017

PhantomJS截图实践

PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎。它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG。 有时候我们需要浏览器处理网页,却不需要视图浏览。比如网页截图、抓取SPA网站、自动化测试等操作。这个时候就用得上PhantomJS了,...

阅读全文 »

luoqiang 发布于 12月04, 2017

mysql存储emoji表情

MySQL的文本类型(varchar,text),对emoji的支持度不是很好,在5.5.3版本之前,MySQL是直接不支持emoji存储的,纵使是utf8编码模式。 其原因在于,MySQL的utf8编码规定一个字符按照3个字节来存储,而emoji缺是用4个字节来存储的。所以导致了,如果强制将em...

阅读全文 »

luoqiang 发布于 12月04, 2017

记一次磁盘占满导致PM2无法启动事故

今早来到公司,日常查看一下博客,居然发现博客502了,记录一下查找问题并重启程序的过程。 意识到应该是NODE服务挂了,登录ECS一看,一顿命令打下来(其实就是pm2 ls),果然,pm2守护进程都不见了,只报给了我一个[PM2] Spawning PM2 daemon with pm2_ho...

阅读全文 »

luoqiang 发布于 11月21, 2017

开始使用 Let's Encrypt 证书

博客一直使用的是赛门铁克(Symantec)的免费ssl证书,最近发现Chrome默默的在控制台给我报了一个warning,这怎么能忍?控制台怎么能报warning呢? 谷歌一顿操作后,决定使用Let's Encrypt证书,Let's Encrypt 是个免费、自动化、开放的证书...

阅读全文 »

luoqiang 发布于 11月19, 2017

使用NodeJs上传文件到七牛云

七牛云是国内比较出色的云存储提供商,同时提供10G免费空间、10G免费流量。国内不少网站都选择七牛来存储网站图片等静态资源,不少博客框架也默认提供七牛的存储配置,包括本博客使用的火麒麟,还有诸如Ghost博客也是默认提供七牛存储配置的。 七牛的文档提供的比较完善,但还是有一些坑,总会一些没有提及到...

阅读全文 »

luoqiang 发布于 11月15, 2017

搜索sug中踩的坑

背景是这样的,最近开发一个查询地址的sug功能,即监控输入框的变化,一但变化可以通过API查询该关键字,将结果列出在下面供用户选择。接下来说一下开发过程中遇到的两个坑。一、函数Debounce虽说只是监控变化,就发起请求。但是如果用户输入特别快,特别频繁。比如一秒内按了10几个字母(可能单身很多年了...

阅读全文 »

luoqiang 发布于 10月27, 2017

JS如何优雅的交换数值

有值a和b,怎么样能优雅又高效的交换他们的数值呢? 常规方法交换数值最常见的方法应该是临时变量交换方法了,该方法比较通用,适合所有类型数值。效率也是很高的,经典的很优雅。 var a = 1,b = 2;var tmp = a;a = b;b = tmp;利用数组该方法也比较常见,可以给小白装...

阅读全文 »