子匠_Zijor | 前端开发 / 程序媛 / 潜心学艺。

node.js中TCP Socket多进程间的消息推送

前段时间接到了一个支付中转服务的需求,即支付数据通过http接口传到中转服务器,中转服务器将支付数据发送到异构后台(Lua)的指定tcp socket。

image_1c25ihq2mmi116tlvkq1b811dg9.png-30kB

一开始评估的时候感觉蛮简单的,就是http server和tcp server间的通信,不是一个Event实例就能解决的状态管理问题吗?注册一个事件A…

+ 阅读更多

(待完善) 组件封装:使用隐藏iframe解决跨域问题的无刷新表单提交

事起缘由:

二月份在做倩女coser报名专题的时候,被表单的POST跨域提交闹腾了一阵子。JSONP允许跨域但是不能使用POST请求也不能提交大文件;FormData的ajax提交能提交大文件,可惜会存在跨域报错;Form表单提交不存在跨域问题,但是却会刷新页面并跳转到数据接口页。显然这都不是我想要的。

对于POST请求跨域问题的处理,业界流行的解决办法有…

+ 阅读更多

摄影:当这座城市华灯初上-钱塘江畔-20180407

在杭州的最后一个晚上。明早八点的飞机,十点即能抵达深圳。

一个阶段结束了。我的北漂生活画上完美的句号。

今天下午6点醒来,洗漱完本想赶到江边去看日落的,奈何小区的自行车没了,就快步走过去。奈何日落太匆忙,到江畔便是华灯初上时。

试着拍了几张,竟发现此时的天空,色彩也甚是绚丽。新发现呀,往日总是想拍蛋黄落日,殊不知日落西山后的夜幕前夕,色彩竟也妩媚。

丝丝的离别情绪。但是很决断,对于杭州我没有遗憾了。

后会有期…

+ 阅读更多

摄影:太子湾公园-20171119

看着滨江的银杏叶黄又纷纷飘落满地,好想去西湖边拍秋意浓系列。于是一整周的阴雨绵绵,终于等来了周日早上短暂的半天阳光。

一大早就出门了,然而太子湾公园的枫叶并没有红,一派初秋的景致。

看着水流清澈的绿色真好看,然后决定尝试手持慢门。额,然后糊了好多张。

过三周再来吧,那时候枫叶该红了。

DSC_0419.jpg-297.1kB

DSC_0449.jpg-196.1kB

DSC_0462.jpg-231.6kB

DSC_0436.jpg-188.1kB

DSC_0504.jpg-93.5kB

DSC_0507.jpg-98.3kB

DSC_0517.jpg-20.7kB

DSC_0414.jpg-110.4kB

DSC_0529.jpg-182.2kB

DSC_0526.jpg-116.8kB

+ 阅读更多

摄影:向阳而生的小雏菊

农历九月廿一,我的生日,真是美好的一天。

独自一人的孤独感应该是过去了,事实证明,情绪消化不良的人,真不应该每天听别人的埋怨吐槽,很影响自己。

开始享受每一天吧~

之前一直觉得早睡简直天方夜谭,知道得了干眼症,才老实了,一两个月下来,也就养成了早睡早起的好习惯。早起,还能拍到美丽的日出。

室友的云计算部门搬到英飞特园区了。一开始会觉得有一点点难过,毕竟一起上下班一整年了。但真到了分开的这一天,觉得还挺好…

+ 阅读更多

摄影:老家的猫

这是一只有8年+大的乡下猫了。

很喜欢它,没有城里网红猫的娇气,多了几分锐气和野性。

平日里,它一直陪伴着爷爷奶奶。

阳光懒懒的午后才能抓拍它,平时鬼马精灵完全找不见影子。

1071359700.jpg-277.1kB

490504010.jpg-282.2kB

1527072209.jpg-310.5kB

DSC04736.jpg-1554.7kB

DSC04743.jpg-1439.8kB

DSC04744.jpg-1044.9kB

DSC04746.jpg-1452.1kB

DSC04749.jpg-1385kB

DSC04751.jpg-1557.3kB

DSC04752.jpg-1790kB

DSC04753.jpg-2121.4kB

DSC04754.jpg-2092.1kB

DSC04755.jpg-2108kB

DSC04757.jpg-1968.3kB

DSC04758.jpg-2048.5kB

DSC04763.jpg-1976kB

DSC04764.jpg-1951.7kB

DSC04767.jpg-1847.6kB

DSC04770.jpg-1369.1kB

DSC04773.jpg-1122.7kB

DSC04773-min.jpg-2185.1kB

DSC04775.jpg-1674.4kB

DSC04780.jpg-1416.1kB

DSC04782.jpg-1265.9kB

+ 阅读更多

摄影:信宜乡下老家

年底拟去国外旅游,为了办护照,国庆特意请了两天假回信宜老家。

清晨的乡下空气特别清新,浓雾渐散,露珠挂滴。午后阳光暖暖,蓝天白云。

阵阵稻香。袭袭绿意盎然。

天然的氧吧。

随手拍系列。

DSC04721.jpg-353.4kB

DSC04718.jpg-2938.4kB

DSC04719.jpg-4074.1kB

DSC04720.jpg-4032.8kB

DSC04713.jpg-3213.5kB

DSC04712.jpg-3577.5kB

DSC04717.jpg-3092.6kB

DSC04709.jpg-4266.7kB

DSC04705.jpg-6444.8kB

DSC04698.jpg-3182kB

DSC04697.jpg-3696.5kB

DSC04696.jpg-5720kB

DSC04785.jpg-1989kB

DSC04786.jpg-1392.3kB

DSC04787.jpg-1516.8kB

DSC04788.jpg-2570.7kB

DSC04793.jpg-1771kB

+ 阅读更多

摄影:深圳小梅沙

国庆第二天,不畏烈日当空,不畏人潮拥挤,我们来到了有‘深圳最美海岸线’之称的东部华侨城。确实很美,别样的婉约宁静。

旅游最重要的,不是风景多美,而是你跟谁一起。

8年的好朋友啦,自然的默契,总有聊不完的话题,总是轻松自在。感谢一生有你。

旅行以欣赏聊天为主,摄影为辅。所以随意拍了几张。

DSC04673.jpg-3517.9kB

DSC04685.jpg-6401.3kB

DSC04627.jpg-715.1kB

DSC04670.jpg-1293.8kB

DSC04676.jpg-1199.7kB

DSC04671.jpg-1292.2kB

DSC04666.jpg-821kB

DSC04681.jpg-730.5kB

DSC04666.jpg-821kB

DSC04633.jpg-900.9kB

DSC04639.jpg-911.3kB

DSC04645.jpg-1153.5kB

DSC04646.jpg-1444.5kB

DSC04653.jpg-2431.4kB

+ 阅读更多

2017年8月份月度总结

在前段透支身体的时间里,我充分得意识到了自己的身体有多差。开始制定健身计划,每隔一天去跑步。每天回家30个仰卧起坐。为了健康的体魄,坚持坚持,每日打卡!

八月份的工作量总体还好。总算熬过了醉人的7月。开始有了大块头的个人时间。

月初捣鼓了小程序聊天室的后台接口,遇到了几个坑爹的bug,然后一一解决。对socket.io更了解了一些。准备用websocket重写一下。

对H5动画有迷之兴趣…

+ 阅读更多

2017年7月份月度总结

时间过得飞一般快,比以往的任何时候都快。

隔了好多个月没写月度小结。不是因为没时间,是害怕用文字和回忆告诉自己,这个月又没干啥事就过去了。我大概在自我逃避着什么。

这个月来了一个超级坑爹的专题。有过委屈和辛苦,熬了几个可怕的通宵,几个周末都在加班。…

+ 阅读更多

JS工具库封装:Video转换成Canvas

在PC端,IE9+浏览器对原生视频的支持还是很不错的,然而一到了移动端就会各种兼容性的坑爹问题。

在移动端,各大浏览器厂商对视频会植入许多他们自定义的交互方式(如默认全屏播放、视频不能初始化播放、窗口置顶等等),更坑爹的是这些被植入的交互还无法去掉。移动端的视频行内自动播放看起来确实很棘手。

目前主流有两种方法处理移动端的视频播放问题:

一种是改设计和说服需求方,…

+ 阅读更多

JS工具函数封装:使用隐藏iframe实现跨域表单提交

关于iframe的原理,之前写的一篇文章里面有提及到。使用隐藏iframe进行表单跨域提交的方法封装。这里就不再赘余了,有兴趣的点击链接查看。但是这篇文章封装的JS工具库有些不够通用,所有特地重构了一遍代码,方便以后的直接使用。

github地址:https://github.com/dengzhirong/fakeAjax

工具库代码重构后如下:

/* 
 * 使用隐藏的iframe发送表单提交
 * Author:
+ 阅读更多

原生Node.js实现WebSocket的原理

let crypto = require('crypto');
let http = require('http');

let app = http.createServer();
let sockets = [];  // 存放每一个客户端socket的数组

app.on('upgrade', (req, socket, head) => {
    socket.setEncoding('utf8');  // 统一socket的编码格式为utf8

    //
+ 阅读更多

笔记:在Windows中杀死特定端口的进程的方法

譬如,要杀死占用 3000 端口的进程,步骤如下:

1)查找特定端口的进程:

> netstat -aon|findstr "3000"

查询结果为:

TCP  0.0.0.0:3000  0.0.0.0:0  LISTENING  9980

说明本机3000端口被PID(进程号)为9980进程占用。

2)查询对应进程的应用:

 > tasklist|findstr "9980"

查询结果为:

node.exe  9980  Console  1  
+ 阅读更多

2017年4月份月度小结

忙忙碌碌,盲盲目目,总体感觉这个月过得很浮躁,略焦虑。

月初赶着脚步准备上线产品,月中旬之后便是大片大片闲下来的时间。忙着的时候有时熬到了凌晨三点想着啥时才是个尽头,闲下来的时候便若有所失随处逛逛博客社区停不下来。颓废呀。可天知道我才刚毕业一年。。。

为啥而焦虑我就不说了,真心觉得自己满身都是bug,希望五月能喝点鸡汤振作起来。

月中去了趟省图书馆,U书借阅功能超级好。相较之…

+ 阅读更多

【摘记】node-xlsx的使用

node-xlsx文档地址:https://github.com/mgcrea/node-xlsx

node-xlsx依赖于 js-xlsx 组件,API极简单,可读写xlsx文件内容。

node-xlsx的主要使用方法如下:

1 . 读xlsx文件:

let xlsx = require('node-xlsx'),
    fs = require('fs');

const workSheetsFromBuffer = xlsx.parse(fs.readFileSync(`${__dirname}/myFile.xlsx`));
+ 阅读更多

2017年3月份月度小结

纪念一下,我的社会工作终于满一年了!一年里,改变的真多。想想当年3月7日入职开源中国,还是初涉商业项目的黄毛丫头,代码风格和经验都停留在比helloWorld高那么一丢丢的水平,而现在的成长是明显真切地感受得到的。未来的路还很长,一旦停下,就可能被发展潮流所抛弃。总之,保持着一个爱学习的心总是没错的。

经历了闲得蛋疼的上个月,这个月过…

+ 阅读更多

摄影:杭州植物园之晚春的脚步_20170416

想了想,周末还是决定出来浪,去趟植物园,顺便去一趟浙江省图书馆看看。了解一下这个图书馆有木有什么书。

春天快要过去了,夏天的脚步正在慢慢走来。

DSC03871.jpg-1657.9kB

DSC03874.jpg-845.4kB

DSC03858.jpg-857.8kB

DSC03819.jpg-1349.8kB

DSC03868.jpg-492.5kB

DSC03788.jpg-973.1kB

DSC03787.jpg-1071kB

DSC03791.jpg-1069kB

DSC03810.jpg-906.1kB

DSC03815.jpg-1137.4kB

DSC03822.jpg-1199.8kB

DSC03825.jpg-1609.2kB

DSC03833.jpg-251.8kB

DSC03835.jpg-941.9kB

DSC03860.jpg-238.2kB

+ 阅读更多

摄影:清明时节之苏州小游_20170403

好不容易清明有三天小长假,难得上海的雅洁酱也有空可以一起去玩耍,所以地点选在了心仪已久的苏州。希望能好好感受感受当地的历史。

然而现实总是与理想有一些差距。清明节人山人海,用摩肩擦踵来形容一点都不夸张。二是小伙伴带的化妆品甚重,为此我也腾不出手拿相机了;小伙伴才跑了一两个景点就累得…

+ 阅读更多

公司园区,春色满园关不住 —— 20170325

杭州的花儿真多。春天一到就竞相盛放。啊啊啊,我就喜欢这么粉粉的季节~

公司园区开了许多花儿,饭后走在这路上散步,我是打心里觉得幸福。

我也不知道自己是从何时开始喜欢上赏花的。。。

1.jpg-238.8kB

DSC03533.jpg-387.1kB

2.jpg-401.8kB

3.jpg-383.1kB

DSC03569.jpg-210.7kB

DSC03587_1.jpg-390.8kB

4.jpg-227kB

5.jpg-376.6kB

15.jpg-288kB

6.jpg-759.8kB

8.jpg-425.1kB

9.jpg-231.1kB

10.jpg-221kB

11.jpg-349.3kB

DSC03600.jpg-279.8kB

DSC03602_1.jpg-273.4kB

DSC03614.jpg-260.1kB

DSC03642_1.jpg-769.4kB

12.jpg-203.6kB

13.jpg-742.4kB

+ 阅读更多

上班之路,紫陌芳华 —— 20170325

经历了一周的劳累,昨晚早早就睡了,今天睡到自然醒,简直太满足了。醒来发现阳光正好,啊啊啊,历经了几周的阴雨天,这阳光太难得了,于是洗漱完就扛起相机往外走了。

这才是周末应有的样子呀~

不敢走太远,毕竟我还是要写代码的人。。。于是就到去公司的路上一直拍过去。。。

虽然多云天阴晴不定,但与阳光不期而遇的时候还是很多的~

2.jpg-221kB

1.jpg-131.7kB

3.jpg-270.7kB

4.jpg-308kB

5.jpg-215.4kB

6.jpg-260.9kB

7.jpg-613.3kB

10.jpg-929.2kB

DSC03445.jpg-293.5kB

DSC03450.jpg-302.4kB

DSC03467_1.jpg-416.9kB

DSC03480.jpg-265kB

DSC03499.jpg-723.2kB

DSC03509.jpg-402kB

+ 阅读更多

[小笔记] Restify中接入Socket.io时报Error:Can’t set headers after sent.

在restify的官方文档中,接入socket.io的代码是酱汁的: http://restify.com/#socketio

var server = restify.createServer();
var io = socketio.listen(server);

// ...

io.sockets.on('connection', function (socket) {
    socket.emit('news', { hello: 
+ 阅读更多

大光圈镜头试拍(小区附近)—— 20170319

天空阴沉沉的,浓霾不散,整个心情都略带压抑。本来想着好好敲代码的,结果被朋飞姐姐叫去吃火锅,想着已经是下午四点半,那好吧,走起。

突然想起新镜头到货后还没真正试拍呢,刚好楼下新开了几株梨花,江一公园也有一些柳树嫩芽,说不定还会有什么新发现呢。。。好,扛起相机就走。

不得不说,大光圈镜头的虚化效果果然不是盖的!定焦的成像效果也很好,色彩还原度很高。大写的赞~(≧▽≦)/~

DSC03347.jpg-642.6kB

DSC03363_1.jpg-917.2kB

DSC03381.jpg-458.8kB

DSC03386_1.jpg-670kB

DSC03401.jpg-596.1kB

DSC03404.jpg-782.5kB

DSC03397.jpg-354.1kB

DSC03385-2.jpg-591.2kB

DSC03391.jpg-1240kB

DSC03394.jpg-974.3kB

DSC03351.jpg-661.9kB

DSC03373.jpg-218.7kB

12.jpg-961.4kB

DSC03377.jpg-884.5kB

DSC03426_2.jpg-529.1kB

+ 阅读更多

Node.js:设置CORS跨域请求中的多域名白名单

说到CORS,相信前端儿都不陌生,这里我就不多说了,具体可以详看阮一峰老师的跨域资源共享 CORS 详解

CORS,主要就是配置Response响应头中的 Access-Control-Allow-Origin 属性为你允许该接口访问的域名。最常见的设置是:

res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Credentials',
+ 阅读更多

陌上花开,可缓缓归矣 —— 20170312

上周周末因为在折腾项目,累得简直要shi。还好我们的努力还是换来了大家的一致好评。这周末说什么都要出来浪,浪里个浪~

虽然天气很糟糕,灰沉沉的。但总得出来,不然又有可能将要错过花期了。

原本以为我将是孤零零一人出来赏花的,还好朋飞也想去西湖走走,就拉她一起。但是她重感冒在身,所以我们只逛了一个小时,她就有些头晕了,只得陪她回家。无论怎样,要好好注意身体呀,要好好心疼自己呐。

赏花的时候,春哥的‘君…

+ 阅读更多

2017年2月份月度小结

2月份,工作上难得清闲。恰好可以好好地重构以前做的项目。

嗨得飞起的春节后,颓废的长尾效应也该告一段落了。

这个月确实过得挺颓废的,没有学习比较多的新技术(除了Redis缓存),也没有好好整理过去的组件库,除了重构几个项目。

颓废从何说起?

周末老在家窝着,除了去了一次上海之外,再没去其他地方外拍过了。常常是周末两天没出过大门,或者只出过一次门买菜。

在家干嘛呢?好吧,就是在看电视和重构代码,我已经把《三生三世十里桃花》、《盗墓笔记》和《锦绣未央》看…

+ 阅读更多

使用隐藏iframe进行表单跨域提交的方法封装

事起缘由:

最近被表单跨域POST提交挤爆了头,特别是要上传大文件时,JSONP就不管用了,FormData的ajax提交虽能提交大文件可惜还是存在跨域报错,各种折磨,坑死姐姐了!

奈何后台不会为此专门设置CORS,早有耳闻复杂的iframe可以实现无刷新表单提交,只是就不想去碰。闻说ajaxForm也有无刷新表单提交的功效,于是前往尝…

+ 阅读更多

[小gist] 用正则提取固定字符之间的字符串

在JS的正则零宽断言匹配中,只支持前瞻匹配,不支持后瞻。这就尴尬了,因为在业务当中,我们大多时候是知道了要目标数据的前后缀字符串,但是并不想连同前后缀一起获取。

为了模拟后瞻,我想,要不就用笨方法,先将前后缀字符串一同提取,然后再讲前后缀字符串一同replace为空字符串。于是就有了下面这个简单的方法,但确实很实用:

// 提取固定字符之间的字符串
function getInnerString(source,
+ 阅读更多