魏正大的博客

小小的世界,大大的梦想


  • 首页

  • 归档

  • 标签

  • 留言

使用 trash 避免 rm -rf 悲剧

发表于 2019-04-24

昨晚做了一个令人痛心疾首的操作,rm -rf something,把我个人电脑里的重要文件夹给删掉了,懵逼了半天才缓过来。还好是个人文件,不对公司造成影响。这件事也让我意识到 rm -rf 确实是个高风险操作,文件备份也是重中之重。

为了规避这个风险操作,我决定用 trash 替代 rm,这样文件就不会直接被删除,而是进入废纸篓。

阅读全文 »

实现一个简单的WebSocket聊天室

发表于 2019-04-14

WebSocket 简介

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

为什么传统的HTTP协议不能做到WebSocket实现的功能?这是因为HTTP协议是一个请求-响应协议,请求必须先由浏览器发给服务器,服务器才能响应这个请求,再把数据发送给浏览器。换句话说,浏览器不主动请求,服务器是没法主动发数据给浏览器的。

阅读全文 »

微信支付开发实记

发表于 2018-11-19

微信支付分为JSAPI支付,扫码支付,APP支付,小程序支付等不同的支付方式。但大体的支付过程是一致的,本文以JSAPI支付,也就是微信内的H5支付为例,描述一下支付的整个开发流程。

配置

商户需要提前开通商户平台,并去公众平台或开放平台提交微信支付申请,获得商户号和秘钥。

详细文档可以看这里

阅读全文 »

微信网页授权

发表于 2018-11-19

背景

用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

配置

  1. 在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;

  2. 授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com无法进行OAuth2.0鉴权

阅读全文 »

小程序登录及用户信息和手机号的获取

发表于 2018-11-16

登录流程

登录流程

  1. 小程序通过 wx.login 获取 code(用户登录凭证,有效期五分钟,使用一次后实效)
  2. 服务端拿到 code,调用 code2Session,获取用户的 openid (用户在当前应用的唯一标识)、unionid (用户在开发平台的唯一标识) session_key (会话秘钥是对用户数据进行 加密签名 的秘钥,在获取用户信息时会用到) 等信息。为了安全,服务器不应该把会话秘钥下发到小程序,也不应该对外提供这个秘钥
  3. 通过 unionid openid 自定义服务端登录态
阅读全文 »

Node.js 获取微信JS-SDK CONFIG

发表于 2018-11-07

背景

前端在调用微信提供的分享、拍照、扫一扫等功能时需要到后台获取配置,主要是签名(signature)。Node 开发可以用朴灵大佬的SDK——co-wechat-api。

配置

到微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。前提是该域名的项目目录下有微信提供的校验文件。如果需要本地调试或者测试环境调试,可以把IP白名单也顺便配置一下。

阅读全文 »

代码顺序的重要性

发表于 2018-11-07

背景

在修改前辈留下来的代码时踩到一个坑。简单讲一下代码做了什么事:在 try/catch 里实例化多个类,并调用类的方法为其赋值,catch 到错误也不会中断,而是通过打日志的形式收集报错信息。

我需要在里面新实例化一个类,有样学样,上来就是一顿copy改,可是新增的类的某个属性总是不对,排查了半天才发现一个坑。

阅读全文 »

七牛视频防盗链处理

发表于 2018-11-02

背景

公司在做付费课程,视频教学为主,需要对视频链接作防盗链处理。

REFERER

HTTP referer 是 header 上的一个属性。当浏览器向服务器发起请求时,一般会带上Referer,告诉服务器我是从哪个页面链接过来的。

七牛在融合 CDN -> 域名管理 -> 高级配置里有一个域名防盗链选项。

域名防盗链

配置好之后就可以限制链接只能从配置好的白名单域名进行访问,简单的防御了盗链。但是HTTP header 是可以被伪造的,经测试,直接用 postman 加个 Referer 就可以绕过了。

阅读全文 »

白夜行

发表于 2018-10-31

“我呢,”雪穗继续说,“从来就没有生活在太阳底下。”
“我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。你明白吗?我从来没有太阳,所以不害怕失去。” ——《白夜行》东野圭吾。

《白夜行》

开头是一宗离奇的命案,调查以无任何结果告终。然后开始分别叙述两位主人公的生活。从十一岁到初中到高中到成人,时间跨度长达十九年。每一件事单独看都是一个精彩的故事,谁知道最后所有的事情都会串起来成为解答开头命案的线索。本来以为是两个互不相关的两个人,作者在分别叙述他们的故事,看起来毫无相关性。看到最后才知道两个人始终在一起,策划着每一个意外。

阅读全文 »

《码农翻身》读书笔记

发表于 2018-10-28

花了一天时间翻完了《码农翻身》(跳过了Java部分)。生动有趣的书看起来就是舒服,竟有引人入胜、手不释卷的感觉,一不小心就翻完了。是一本很好的入门科普读物,开阔技术视野。

下面是书中的摘抄和笔记

线程

我是一个线程

  1. 不知道什么时候会被挑中执行
  2. 在执行的过程中随时可能被打断,让出CPU
  3. 一旦出现硬盘、数据库这样耗时的操作,也得让出CPU
  4. 数据来了,也不一定马上执行,还得等着被CPU挑选

三次握手

TCP/IP之大明内阁
TCP/IP之蓟辽督师
TCP/IP 之 大明王朝邮差

三次握手

发送的信息被拆分成小包裹,编上序号,打乱顺序后发送,由服务端发送,客户端接收,接收后返回确认接收信息。如果一定时间内没有收到确认信息,则代表信息丢失(可能是发出的包裹丢失,也可能是返回的确认信息丢失),重新发送该包裹。全部接收完成后按照序号重新组装成完整信息。

HTTPS

一个故事讲完https

阅读全文 »
123
魏正大

魏正大

JavaScript, Node.js

27 日志
18 标签
GitHub
© 2018 - 2019 魏正大
由 Hexo 强力驱动
主题 - NexT.Gemini
你是第 666 位来访的小伙伴 本站总访问量 888 次