文章列表

3.1k 3 分钟

# 引言 众所周知 P 站主站是被屏蔽的,需要科学上网才能正常访问。前阵子发现有些 P 站第三方客户端可以做到直连 P 站,便心血来潮想要研究一下他们是如何实现的。同时也做一个可以直连 P 站的图片下载器。 # 知己知彼 常言道知己知彼才能百战不殆。想要知道 P 站直连的原理就要先知道 P 站是如何被拦截的。通过查阅网上资料知道 P 站是被 DNS污染 + SNI阻断 的方式被墙。接下来就可以从这两个方面入手。 # DNS 污染 所谓 DNS污染 就是污染你的 DNS 让你得到的 DNS 解析是一个错误的结果,令你最终的请求发送到一个不正确的 IP...
1.7k 2 分钟

# 前言 工作里习惯用 git 命令行进行代码提交,但是用来用去一直都是只会 push 、 pull 、 checkout 等最基本的操作。还是有一些常用的命令操作不太记得,在此记录一下留一个备份以便日后查看。 # 目标 本文目标是介绍几个经典场景下 git 命令行的运用,通过本文的你将可以学会如下操作: 修改历史 commit 的描述信息 合并多个 commit 对分支进行重命名 推荐的 commit 规范 # 修改历史 commit # 修改最近一次的 commit # 方法一 有时我们想对刚刚提交的 commit 信息进行修改,那么此时我们可以将版本退回到上一次 commit...
2.3k 2 分钟

# 背景 最近朋友叫我帮忙起一个 Nginx + PHP 的项目,因为一直做的前端工作。对于后端服务怎么起来没太多了解。今天就从安装 MySQL 数据库开始,摸索一下后端搭建。 # 先决条件 系统环境:Ubuntu 用户权限:root 理论上用 apt 包管理器安装东西的都可以直接套用该教程,不是 apt 的理论上就把 apt 安装命令换一下就行。 # 目标 安装 5.6 版本的 MySQL 安装 7.2 版本的 PHP # 安装 MySQL # 更新 apt 仓库 使用 apt 命令更新包仓库。 apt update && apt...
1.2k 1 分钟

众所周知,在 Node 中不能直接使用 ES6 模块。通常情况下是这样的,但是如果我们非要用 ES6 模块那也是可以滴。下面我就介绍两种在 Node 环境下使用 ES6 模块的方法。不过在此之前,你必须保证项目中 Node 的版本在 14 以上。 # 方法一:修改文件后缀名 在 Node 项目中使用 ES6 模块最简单的方法就是将 .js 文件的扩展名替换为 .mjs 。Node 在编译 .mjs 文件时,将会使用 ES6模块化规范 来处理代码,而不是使用默认的 CommonJS模块化规范 。同时,你也可以用 .cjs 文件扩展名告诉 Node 使用 CommonJS模块化规范...
2.4k 2 分钟

# 何为防盗链 防盗链是一种用于保护站点内容的技术,通常用于防止其它网站在未经授权的情况下使用本站链接或者嵌入本站内容。图片、视频、音频等资源是最常见的会做防盗链处理的资源。因为这些资源的传输会占用比较大的带宽资源,一是会拖慢源站速度,二是增加源站的带宽负担却不给源站带来任何访问或点击。为了避免这种资源盗用的行为,许多网站都会做防盗链处理,阻止薅羊毛保护自己资源的安全。 例如本站的文章图床就是 B 站,白嫖 B 站嘿嘿。右击鼠标,审查文章图片元素,我们可以看见图片链接来自 B 站。代码大概如下 <img...
3k 3 分钟

# 浏览器文件上传原理 现代网站的前端上传文件的流程主要是利用 input 标签读取到文件,再利用 ajax 将文件的数据发送到后端服务器。 因为 web 程序的运行环境是在浏览器里,在这个流程中 web 应用无法像直接运行在操作系统里的程序那样直接操作用户计算机上的文件。以前的做法是利用 <input type="file"> 把文件放到一个表单中提交。而以前提交表单通常需要刷新页面,现代 web 应用发送数据基本都是利用 ajax 异步提交、获取数据。所以以前利用表单提交数据的方法做法就不太合适了。 为了解决 js...
413 1 分钟

因为工作上开发移动端的应用,而移动端并没有像 Chrome 那样好用的调试工具去查看网络请求的信息,所以需要利用抓包来进行网络请求的监控调试。在此介绍一些 Charles 抓包工具的基础使用,以作备份。 # 基础抓包 本文以抓 ios 手机上的流量为例。安卓手机的基本步骤也是同理。 # 基本流程 抓包基本流程: 确保手机与抓包的电脑连接在同一局域网下 抓包电脑开启 http 代理,并设置好本机的端口号 手机设计好代理服务器为抓包电脑的 ip 和端口 # 图例 设置电脑代理的端口,以 192.168.6.238:8888 为例 打开 Charles。 Proxy ->...
1.7k 2 分钟

# 何为设计模式 说起设计模式很多人就以为设计模式就是那 23 种设计模板,设计思路。其实不是的。在我看来设计模式应该把设计与模式拆分开来看待。设计是设计,指用按某种思路、原则或标准去实现功能达到目的。我将其称之为方法。而模式,指实现功能、达到目的的手段,是在设计原则指导下用以具体实操的手段。设计是方法、原则,模式是手段、实现。就如 ECMAScript 和 Javascript 的关系。23 种设计模式本质上就是在编程语言抽象能力不足的情况下,应对某些场景的最佳实践。 #...
3.5k 3 分钟

# 正则表达式急速上手 正则表达式,即 Regular Expressions,缩写为 Regex 或 Regexp,是在正则表达式语法框架内创建的字符串。您可以用正则表达式轻松管理数据,执行查找、匹配或编辑等命令。正则表达式适用于 Python、SQL、JavaScript、R、Google Analytics、Google Data Studio 等编程语言和整个编程过程。 # 基本匹配 我们想要查找的字符或单词可以直接输入,就像搜索一样。例如匹配文本中的 curious: const str = "I have no special talents. I am only...
1.5k 1 分钟

# Web Workers 因为 Javascript 从设计之初就是单线程的,所以它没有原生支持多线程操作。它没有办法在浏览器 UI 线程之外运行代码。Web Workers API 改变了这种状况,它引入了一个接口,能够使代码运行且不占用浏览器 UI 线程的时间。作为 HTML5 最初的一部分,Web Workers API 已经被分离出去称为独立的规范。 Web Workers 给 Web 应用带来的潜在的巨大性能提升,因为每个 Worker 都在自己的线程中运行代码。这意味着 Worker 运行代码不仅不会影响浏览器 UI,也不会影响其它 Worker 中运行的代码。 # Worker...