Skip to content

Instantly share code, notes, and snippets.

Avatar
🎯
Focusing

Yudu banyudu

🎯
Focusing
View GitHub Profile
@banyudu
banyudu / ipv4-ipv6-port-listen.blog.md
Last active Jul 14, 2021
浅谈ipv4和ipv6中的端口占用
View ipv4-ipv6-port-listen.blog.md

浅谈ipv4和ipv6中的端口占用

前两天在调试一个本地应用的时候,偶然发现一个奇怪的问题:nginx和spring boot应用竟然同时监听了8080端口,且能正常工作!

这实在是太震惊了,我一向认为只有父子进程才可以共用端口,而nginx和调试中的spring boot应用很明显不是父子关系。

@banyudu
banyudu / ipv4.js
Created Jul 14, 2021
nodejs ipv6 ipv4 test
View ipv4.js
require('http').createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello ipv4!\n');
res.end();
}).listen({
port: 9999,
host: '127.0.0.1'
});
@banyudu
banyudu / react-use-outdated-effect.blog.md
Last active Jul 14, 2021
React自定义hooks useOutdatedEffect 介绍
View react-use-outdated-effect.blog.md

React自定义hooks useOutdatedEffect 介绍

前言

React中有一个常见的问题,数据获取之后,组件已经销毁,此时会有这样一段警告:

@banyudu
banyudu / frontend-ast-parse-practice.blog.md
Last active Jul 10, 2021
前端AST处理实践指南(基于ts-morph)
View frontend-ast-parse-practice.blog.md

前端AST处理实践指南(基于ts-morph)

背景

最近在工作中遇到了一些重复性的任务,为了提升效率,使用了AST进行了批量处理。

ts-morph是一个适用于Javascript、Typescript的AST处理工具库,基于typescript实现。

@banyudu
banyudu / typescript-related-type.blog.md
Last active Jun 14, 2021
Typescript中的类型联动
View typescript-related-type.blog.md
View react-test-driven-development-part3-setup-environment.blog.md

React测试驱动开发 - 环境搭建

工欲善其事,必先利其器

久等了,本篇讲一下React项目测试环境搭建。

工具集

@banyudu
banyudu / react-test-driven-development-part2-practice-pandect.blog.md
Last active Jun 16, 2021
React测试驱动开发 - 实践篇(总纲)
View react-test-driven-development-part2-practice-pandect.blog.md

React测试驱动开发 - 实践篇(总纲)

上篇React测试驱动开发 - 理论篇中提到了React测试驱动开发的一些理论知识,这篇里面讲一下实践过程。

因为内容会比较多,一篇文档中全部讲完不太现实。所以我计划分成下面的几个部分来讲:

View react-test-driven-development-part1-theory.blog.md

React测试驱动开发 - 理论篇

前端业务开发中如何做到测试驱动?怎么样平衡测试的效果与维护的成本?

这些问题我摸索了挺长时间,也略微有了一些心得,在这里总结一下。

测试的意义

@banyudu
banyudu / spwan-inherit-stdio.js
Created Apr 17, 2021
Node.js中spawn子进程继承Shell中的颜色等信息
View spwan-inherit-stdio.js
const { spawn } = require('child_process')
const params = ['--someoption=somevalue', 'subcommand', 'any other params']
const myCmd = spawn('command-name', params, { stdio:'inherit' })
// 加上 { stdio:'inherit' } 选项之后,子进程会接管父进程的标准输入输出,这样console中的表现就和直接执行子进程相同,而不会丢失颜色、清屏等信息了
@banyudu
banyudu / qywx-bot-post-image.js
Created Apr 8, 2021
企业微信发送图片
View qywx-bot-post-image.js
const axios = require('axios').default
const textToImage = require('text-to-image');
const crypto = require('crypto')
const text = process.argv[2] || 'Hello World!'
const md5= (str) => crypto.createHash('md5').update(str).digest('hex');
const botUrl = process.env.TEST_BOT_URL