闻心阁

一蓑烟雨看苍生,半壶浊酒笑红尘

NodeJS 将 JSON 转换成 EXCEL(CSV)

2018-03-09 约 1 分钟读完 搬砖秘籍
最近要使用LeanCloud的数据,导出来是一个JSON格式的文件,妹子根本没办法打开处理,于是使用 Node 将这个JSON文件转换成CSV格式的文件,让她能在EXCEL中打开使用。 方法 用到了2个库,一个是 zemirco/json2csv,另外一个就是系统自带的 fs 模块了。json2csv 这个库非常强大,可以在命令行及Javascript module方式使用,具体使用参考github地址即可。 代码 var fs = require('fs'); const Json2csvParser = require('json2csv').Parser; const fields = ['car', 'price', 'color']; const myCars = [ { "car": "Audi", "price": 40000, "color": "blue" }, { "car": "BMW", "price": 35000, "color": "black" }, { "car": "Porsche", "price": 60000, "color": "green" } ]; const json2csvParser = new Json2csvParser({ fields }); const csv = json2csvParser.parse(myCars); console.log(csv); fs.writeFile("./out.csv", csv, function(err) { if(err) { return console. 继续阅读

JavaScript 封装一个显眼的 console

2018-03-05 约 1 分钟读完 搬砖秘籍
开发时候经常会打印很多log,开始的时候还好,可后来就会打印一堆log出来,有时候调试为了找自己的log就会使用如下的句式: console.log('=============================>', a) 有没有办法让log更显眼一点?有。官方文档中说可以设置一个 %c 来指定输出样式。 那接下来就好办了 封装一个函数 最先想到封装一个函数。 function lc(tips, v, style) { if (!style) { style = 'background: red;color:white;font-size: 16px;'; } try { console.log('%c ' + (tips || v) + '=====>', style, v); } catch(e) { console.log('loger==>', e) } } module.exports = { lc: lc } 改原型 但这样调用每次都要引用这个文件,可不可以不引用?直接改 console 的 __proto__ 属性 try { if (typeof console.__proto__.lc !== 'function') { console.__proto__.lc = function(tips, v, style) { if (!style) { style = 'background: red;color:white;font-size: 16px;'; } console. 继续阅读

PWA浅尝辄止

2018-03-01 约 1 分钟读完 搬砖秘籍
前段时间看到苹果官方将对PWA提供支持,之前看到沪江也已经开始了PWA的尝试,于是尝试自学了一把,写点心得。 教程 Your First Progressive Web App 几点心得 PWA不算一种技术标准,算是一种理念,目的是为了给web应用提供接近APP的用户体验。大约有几个特性(我理解的,不保证全): 可添加HOME访问图标,支持全屏运行 离线访问 消息推送 所以,PWA是一系列技术的合集。添加图标这个靠浏览器及系统实现,离线访问依赖了Service Worker + CacheStorage API + Fetch API,消息推送Chrome支持GCM(这玩意国内肯定不好用。。。) 虽然看起来依赖的东西很多都不完备支持(实际上也是),但因为是 Progressive,不支持也没关系,也不影响原来的Web APP运行,就是没了上述的特性而已。总而言之,PWA这东西加上之后,支持的可以提升用户体验,不支持的就当什么都没发生。 示例 模仿官方的示例,我也自己写了一个。只实践了离线访问的特性。 PWA测试页面 总体流程如下: 正常加载页面 检测支持PWA? 继续3 : 啥也不做。 缓存请求及数据(图片等资源) 再加载页面资源直接从缓存加载,请求的接口数据先从缓存展示,等有返回再更新。 问题 强制需要https 测试离线页面竟然在firfox下完美,在chrome上离线有问题。。。还在找原因。

《JavaScript高级程序设计》读书笔记:classList 与 readyState

2018-02-24 约 1 分钟读完 搬砖秘籍
继续学习《JavaScript高级程序设计》,体会原生 JavaScript 之美。今天记录2个有用的属性。 1.classList HTML5 对DOM操作 class 做了优化,增加了 classList 属性,从此再也不用对 className 做字符串操作了。它有4个方法 add // 增加一条属性(已经存在就不添加) contains // 判断属性是否存在 remove // 删除属性 toggle // 如果存在就删除,不存在就添加。这个好玩~ 2.readyState 曾几何时,使用 onload 方法来判断页面有没有加载完毕,现在有了 document.readyState , 一切就简单了。 其中书中的内容不完整(P292),这个属性目前已经有了3个值(2018-02-24) loading //页面还在加载 interactive //文档已经完成加载,文档已被解析,但是诸如图像,样式表和框架之类的子资源仍在加载。 complete // 文档和所有子资源已完成加载。状态表示 load 事件即将被触发。 之前使用 m-React 的时候使用的是 onload 方法,如果下次有机会再来测试一波 readyState

Manjaro Wine-QQ 无法发送表情解决方案

2018-02-23 约 1 分钟读完 百宝箱
使用Wine-QQ-Tim的时候,发现表情无法发送。通常情况下,点了头像按钮,弹出来,再选表情的话,刚刚弹出的表情就没了。 解决方案 以Manjao为例。 设置 –> 窗口管理器 –> 焦点,把聚焦新窗口前面的勾去了。 问题解决。

AppImage —— 一个值得跟踪使用的Linux项目

2018-02-23 约 1 分钟读完 百宝箱
最近不太想使用虚拟机安装QQ,每次启动都感觉很臃肿,后来在github上发现了这个项目:askme765cs/Wine-QQ-TIM。看了一下,使用的是Wine-QQ的安装方法,不过使用了一种叫做 AppImage 的技术,详情可以看这里:AppImage | 让Linux应用随处运行。 有什么用 简单来说,这个项目将Linux下的软件安装做到了简单->极致。所有的软件只是一个 *.AppImage 文件,直接运行这个文件,就是运行这个软件。这就厉害了,下载软件再也不用担心自己是什么Linux了,管它是 .rpm 还是 .deb ,只要将这个软件打包成 AppImage 格式,就可以在任意Linux发行版本下运行。 目前有哪些软件 实话说不多,可以年这里:Apps in AppImage format – AppImageHub。 不过可以参照wiki自己打包,然后共享出来。 畅想 如果这可以推进完善,也许Linux将会对新手更加友好。PS:虽然我现在的yaourt感觉很好用,但 AppImage 更极致。安装软件本来就应该这样,不是么?

解决Manjaro字体阴影问题

2018-02-23 约 1 分钟读完 百宝箱
年前更新了Manjaro之后,桌面字体有了阴影,基于当时的开发进度,也不影响使用,就没去管。大约是下面这个样子。 搜索了一下是 Vertex-Maia 主题的问题。 解决方案 xfconf-query -c xfce4-desktop -p /desktop-icons/center-text -n -t bool -s false