尝试理解 Koa、Redux middleware 的演进过程
之前开发 web 端,使用 Egg 框架,期间实现的一些功能例如:权限检测、操作日志上报等都是基于框架的 middleware 机制件完成的。虽然最后完成了功能,但其实对中间件真正的实现机制、运行时序还不能做到完全的理解。Egg 是基于 Koa 实现的,Koa 的代码量非常少,加起来也就 1000 多行,涉及到中间件核心的部分,也就不到 100 行,如果有耐心可以直接读 Koa 源码学习。我在读完...
View ArticleWEB 安全漏洞之目录遍历
什么是目录遍历第一次接触到目录遍历漏洞还是在 ThinkJS 2 的时候。代码如下图,目的是当用户访问的 URL 是静态资源的时候返回静态资源的地址。其中 pathname就是用户访问的 URL 中的路径,我们发现代码中只是简单的解码之后就在22行将其与资源目录做了拼接,这就是非常明显的目录遍历漏洞了。为什么这么说呢?假设用户访问的 URL 是...
View ArticleES新提案:双问号操作符
摘要:简单实用的新特性。原文:ES新提案:双问号操作符译者:前端小智本文主要讲Gabriel Isenberg撰写的ES提案“Nullish coalescing for JavaScript”。 它提出??替换||的运算符,并提供默认值。这里先把这相提案叫作双问号操作符,如果你有好的叫法,欢迎留言讨论。1. 概述双问号 ??的操作符跟 ||类似,如果给定变量值为 null或者...
View Article请问如何开发一个 midwayjs 插件
我知道 midwayjs 底层是 eggjs,插件也知道这么开发,但是我想用 typescript 开发一个插件,可是路径不知道这么管理,构建出的源码是放在 dist 目录的,有点方啊
View Article【字节跳动 前端】WebGL方向前端寻人
我们是字节跳动(今日头条)广告部门下的创意交互团队,我们的核心工作就是开发炫酷的3D特效广告。目前在寻求对 计算机图形/图像/WebGL/3D 感兴趣的同学加入我们简历请投:...
View Article记录自己毕业两年来所学
原文地址: https://github.com/zmecust/learning-manual学习路程(生命不息,学习不止):非科班 CS 专业,硕士期间自学编程。最开始从 PHP 起家,最喜欢 Laravel 框架以及它所包含的设计模式后因工作需要,转移到大前端。Vue、Angular、React 都撸过项目,喜欢 Vue 的渐进式即插即用,喜欢 React 的 JXS,喜欢 Koa...
View Articlenodejs gif无组件动画验证码
V1.1版本更新修正: 1.IOS不能显示的bug。 新增: 1.gif文件的压缩 2.取消setWidth,setHeight方法,宽高在初始化时候使用new gif(100,34)...
View ArticleMySQL created_at、updated_at 列是用 INT 还是 TIMESTAMP 来存储时间?
MySQL server 的时区不一定和 Nodejs App 一样,不确定用哪种类型存储时间。 StackOverflow 上高票赞同 TIMESTAMP,但如果 App 和 MySQL 时区不一样,手动插入时间时会引起混乱:// Node App 时区 +0800 // MySQL server 时区 UTC const mysql = require('mysql'); const...
View Article一个有点2的基于tinypng图片压缩服务的图片压缩工具;只支持png、JPEG格式图片
重要的事情说三遍 无需api key 无需api key 无需api key稳定性依赖于当前网络环境访问 https://tinypng.com/的性能勉强能用~ 不要声张~ps: 基于网络,无网络时无法使用requirenode version >=12.4.0Installnpm install -g @weivea/tinypng2Usagecd dirOfImage #进入指定目录...
View Article初学Node.js的小白,学习过程中碰到了如下问题,劳请各位社区的伙伴看一下,并给出意见。
我正在学习《七天学会Node.js》,当我试着照下面图片的方法去做的时候,总是出现问题。我有几个疑问:添加PATH环境变量是和添加Java环境变量类似吗?node-echo.cmd文件中的内容是什么意思呢?
View Articleredux请求api的时候,传参应该在哪个生命周期?
redux请求api的时候,传参应该在哪个生命周期?//code... getTopics(tab) { this.props.dispatch((dispatch, getState) => { axios.get(`/topics?tab=${tab}&page=1&limit=10`) .then(res => { dispatch({ type:...
View Article图数据库 Nebula Graph 的安装部署
Nebula Graph:一个开源的分布式图数据库。作为唯一能够存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅能够在高并发场景下满足毫秒级的低时延查询要求,还能够实现服务高可用且保障数据安全性。本文目录简介Nebula 整体架构 Meta ServiceStorage ServiceGraph Service安装部署 单机运行集群部署...
View Article数据结构之并查集
定义并查集是计算机科学中为了解决集合之间的合并和查询操作而存在的一种树型数据结构。并查集是由若干个大小不同的子树来存储表示的,也可以把整个并查集的存储结构叫做森林,每颗子树表示一个集合。集合的数量又叫做连通分量。基本操作find(查询):确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。union(合并):将两个子集合并成同一个集合。isConnected(两个元素是否相连):确定两...
View Article数据结构知否知否系列之 — 队列篇
有一天,当回顾自己走过的路时,你会发现这些奋斗不息的岁月,才是最美好的人生。——弗洛伊德队列,英文 First In First Out 简称 FIFO,遵从先进先出的原则,与 “栈”...
View Article数据结构知否知否系列之 — 栈篇
愿每次回忆,对生活都不感到负疚。——郭小川栈,英文 Last In First Out 简称 LIFO,遵从后进先出的原则,与 “队列” 相反,在栈的头部添加元素、删除元素,如果栈中没有元素就称为空栈。作者简介:五月君,Nodejs Developer,慕课网认证作者,热爱技术、喜欢分享的 90 后青年,公众号「Nodejs技术栈」,Github 开源项目...
View Article