<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[在前端路上]]></title><description><![CDATA[前端开发路上的风景]]></description><link>https://blog.csdn.net/ccaoee</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; ccaoee]]></copyright><item><title><![CDATA[vscode 代码格式化认知与实践]]></title><link>https://blog.csdn.net/ccaoee/article/details/128399225</link><guid>https://blog.csdn.net/ccaoee/article/details/128399225</guid><author>ccaoee</author><pubDate>Wed, 21 Dec 2022 16:57:20 +0800</pubDate><description><![CDATA[对于开源协同来说，前期的问题主要是环境配置和代码格式化。环境配置可以让你将项目跑起来，代码格式化可以让你在提交代码的时候避免不必要的因不统一的格式化配置程序所带来的内容差异也即，做好这两点，你就能专注于代码逻辑本身。本文要讲的即是vscode编辑器中代码格式化的相关实践。]]></description><category></category></item><item><title><![CDATA[编写ESM风格的nodejs应用]]></title><link>https://blog.csdn.net/ccaoee/article/details/127677289</link><guid>https://blog.csdn.net/ccaoee/article/details/127677289</guid><author>ccaoee</author><pubDate>Thu, 03 Nov 2022 20:07:07 +0800</pubDate><description><![CDATA[众所周知，nodejs应用刚出现的时候，大家都在编写commonjs风格的应用。随着nodejs逐步的实现ECMAScript规范。大家更乐意使用esm的编码风格。本文旨在引导大家无负担的将编写nodejs应用时的风格切换为esm。]]></description><category></category></item><item><title><![CDATA[udp协议下sendto与recvfrom函数对应的errno]]></title><link>https://blog.csdn.net/ccaoee/article/details/127568139</link><guid>https://blog.csdn.net/ccaoee/article/details/127568139</guid><author>ccaoee</author><pubDate>Fri, 28 Oct 2022 11:23:09 +0800</pubDate><description><![CDATA[在C/C++中，使用udp socket时，sendto与recvfrom有不同的errno而在高阶语言Javascript中，使用udp socket, 会将两种类型的错误通过同一个事件error抛出来因此，有必要将sendto与recvfrom对应的 errno列出来，以便在error中进行区分。]]></description><category></category></item><item><title><![CDATA[/etc/bashrc “command not found: shopt“ 报错解决]]></title><link>https://blog.csdn.net/ccaoee/article/details/127126441</link><guid>https://blog.csdn.net/ccaoee/article/details/127126441</guid><author>ccaoee</author><pubDate>Fri, 30 Sep 2022 17:10:34 +0800</pubDate><description><![CDATA[在安装zsh之后并将其设置为默认终端后，每次登录进终端，都会提示: `/etc/bashrc "command not found: shopt"`

这里提供一种解法]]></description><category></category></item><item><title><![CDATA[编码与进制]]></title><link>https://blog.csdn.net/ccaoee/article/details/126067020</link><guid>https://blog.csdn.net/ccaoee/article/details/126067020</guid><author>ccaoee</author><pubDate>Sat, 30 Jul 2022 03:11:26 +0800</pubDate><description><![CDATA[Base62编解码研究，从“没有前面那个1，后面多少个0都无意义”说起]]></description><category></category></item><item><title><![CDATA[respondWith注意事项]]></title><link>https://blog.csdn.net/ccaoee/article/details/123995078</link><guid>https://blog.csdn.net/ccaoee/article/details/123995078</guid><author>ccaoee</author><pubDate>Wed, 06 Apr 2022 17:32:35 +0800</pubDate><description><![CDATA[respondWith
拦截请求并允许Worker发送自定义响应。

respondWith方法仅在worker域(WorkerGlobalScope)中有效
使用Module Worker格式，直接从处理程序返回一个Response。

如果fetch事件处理器没有调用respondWith方法，那么运行时将会将该事件传播到下一个注册为fetch事件的处理器中。因此，添加多个fetch事件的处理器是可行的，但是不推荐这样做。
如果没有任何的fetch事件处理器来显式地调用respondWith方法，那么运]]></description><category></category></item><item><title><![CDATA[在Docker环境下跳过cypress下载]]></title><link>https://blog.csdn.net/ccaoee/article/details/121276481</link><guid>https://blog.csdn.net/ccaoee/article/details/121276481</guid><author>ccaoee</author><pubDate>Fri, 12 Nov 2021 10:28:20 +0800</pubDate><description><![CDATA[使用vue-cli脚手架建立的项目，一般都带有cypress功能, cypress是用于端到端的测试框架，在项目开发过程中（本地或者云主机），我们有可能会对端到端测试做一些编码处理，但在项目构建过程中，一般不依赖此功能。
因此，我们实际上可能并不需要在vue项目中添加cypress功能。然而，如果已有的项目已经接入了cypress功能，我们应该如何在docker构建环境中避免呢。我从cypress的官方文档中找到了答案
在安装cypress时，有这样的文档：https://docs.cypress.io/g]]></description><category></category></item><item><title><![CDATA[Promise.allSettled 垫片]]></title><link>https://blog.csdn.net/ccaoee/article/details/121252340</link><guid>https://blog.csdn.net/ccaoee/article/details/121252340</guid><author>ccaoee</author><pubDate>Wed, 10 Nov 2021 17:10:38 +0800</pubDate><description><![CDATA[想用Promise.allSettled，但又不想升级tsconfog.json下的lib属性，可以这样模拟
]]></description><category></category></item><item><title><![CDATA[源码阅读浅谈]]></title><link>https://blog.csdn.net/ccaoee/article/details/121030253</link><guid>https://blog.csdn.net/ccaoee/article/details/121030253</guid><author>ccaoee</author><pubDate>Fri, 29 Oct 2021 10:54:59 +0800</pubDate><description><![CDATA[从入口阅读源码时，一边找抽象概念，一边基于抽象概念找对应的分层，然后又基于分层去有的放矢地阅读对应的源码]]></description><category></category></item><item><title><![CDATA[算法学习笔记]]></title><link>https://blog.csdn.net/ccaoee/article/details/120572662</link><guid>https://blog.csdn.net/ccaoee/article/details/120572662</guid><author>ccaoee</author><pubDate>Thu, 30 Sep 2021 21:30:12 +0800</pubDate><description><![CDATA[数据结构的基本存储方式就是链式和顺序两种，基本操作就是增删查改，遍历方式无非迭代和递归。

我们分析问题，一定要有递归的思想，自顶向下，从抽象到具体。你上来就列出这么多，那些都属于「上层建筑」，而数组和链表才是「结构基础」。因为那些多样化的数据结构，究其源头，都是在链表或者数组上的特殊操作，API 不同而已。
比如说「队列」、「栈」这两种数据结构既可以使用链表也可以使用数组实现。用数组实现，就要处理扩容缩容的问题；用链表实现，没有这个问题，但需要更多的内存空间存储节点指针。
「图」的两种表示方法，邻接表就是]]></description><category></category></item><item><title><![CDATA[CentOS安装中文字体]]></title><link>https://blog.csdn.net/ccaoee/article/details/119643350</link><guid>https://blog.csdn.net/ccaoee/article/details/119643350</guid><author>ccaoee</author><pubDate>Thu, 12 Aug 2021 14:19:02 +0800</pubDate><description><![CDATA[免费中文字体：https://github.com/zenozeng/Free-Chinese-Fonts

安装思源黑体
思源黑体 Github repo：https://github.com/adobe-fonts/source-han-sans/blob/master/README-CN.md
首先切换到CentOS中存放字体的文件目录 cd /usr/share/fonts/
下载压缩包：wget https://github.com/adobe-fonts/source-han-sans/rel.]]></description><category></category></item><item><title><![CDATA[执行流了解]]></title><link>https://blog.csdn.net/ccaoee/article/details/119282634</link><guid>https://blog.csdn.net/ccaoee/article/details/119282634</guid><author>ccaoee</author><pubDate>Sat, 31 Jul 2021 22:41:19 +0800</pubDate><description><![CDATA[程序员需要多个执行流。为此，Lua提供了通用的方案，叫coroutine。
除了coroutine以外，别的语言或平台提供的“多执行流”的通用方案包括：进程、线程、Fibers (Windows)、setcontext、Continuation、Monad (functional programming)。这些技术底层实现分为三类：

由平台调度的线程，包括操作系统调度的线程或进程，或者Erlang虚拟机调度的进程。
由平台提供栈，但是由用户手动切换，包括Lua的coroutine、Windows的Fibe]]></description><category></category></item><item><title><![CDATA[rbd入坑指南]]></title><link>https://blog.csdn.net/ccaoee/article/details/117920650</link><guid>https://blog.csdn.net/ccaoee/article/details/117920650</guid><author>ccaoee</author><pubDate>Tue, 15 Jun 2021 11:11:33 +0800</pubDate><description><![CDATA[react-beautiful-dnd[drop and drag]入坑指南

Beautiful and accessible drag and drop for lists with React

相关链接：

项目主页
官方Demo网站
codesandbox项目


React拖拽库调研

react-beautiful-dnd 23.9k⭐
react-dnd 15.9K⭐
react-grid-layout 13.7⭐
react-dropzone 8.2⭐
react-draggable 6.]]></description><category></category></item><item><title><![CDATA[浅谈前端框架中的DSL]]></title><link>https://blog.csdn.net/ccaoee/article/details/116785436</link><guid>https://blog.csdn.net/ccaoee/article/details/116785436</guid><author>ccaoee</author><pubDate>Fri, 14 May 2021 11:44:45 +0800</pubDate><description><![CDATA[一、前言
一个普通的web网站应用使用 html、xhml 等更具描述能力的 external dsl（domain-specific language）来描述界面，然后使用javascript代码来解决界面上的一些逻辑问题，使用css来描绘界面的样式。这些 external dsl 用于将数据配置跟代码逻辑分离开来
一些现代语言加入了 internal dsl 这种东西，它赋予你在代码中写 dsl 的能力：比如jsx语法，vue语法。就是在javascript中使用类似于 html 的语法。
前端编程界的]]></description><category></category></item><item><title><![CDATA[从GIT系统设计认识编程领域中的‘抽象和分层’思想]]></title><link>https://blog.csdn.net/ccaoee/article/details/116132141</link><guid>https://blog.csdn.net/ccaoee/article/details/116132141</guid><author>ccaoee</author><pubDate>Sun, 25 Apr 2021 16:24:59 +0800</pubDate><description><![CDATA[从GIT系统设计认识编程领域中的‘抽象和分层’思想
前言

“抽象与分层，是计算与程序世界里最根本的思想。逻辑之始。”


宇宙的终极图景人类无法认知，愚蠢是人类理智的最后一道防线 ——《论克苏鲁世界观中的认知哲学》

毋庸置疑，现实世界是无比复杂的，以人类有限的脑力来认识和解构世界，无疑是需要一定的方法论的。
在编程领域中，系统可以是无比复杂的。而人类为了开发和持续维护复杂系统，必然要做好优秀的架构设计，才能有效降低开发者的心智负担
因此，抽象和分层是人类应对方法。
抽象是对普遍性的表达，分层则是在恰当的]]></description><category></category></item><item><title><![CDATA[异步流程控制浅谈]]></title><link>https://blog.csdn.net/ccaoee/article/details/113433560</link><guid>https://blog.csdn.net/ccaoee/article/details/113433560</guid><author>ccaoee</author><pubDate>Fri, 12 Mar 2021 12:00:57 +0800</pubDate><description><![CDATA[bash脚本语言，基本上每个命令都是需要不定时等待的，所以是一种天然的异步流程控制语言“我们要寻找的就是如何组织我们的代码，来让其更加容易，极少冗余的表述我们的思维过程，同时这个过程本身又是容易被不断延展的，我称之为编织代码。”表面同步，内在异步的模型，才是高并发编程和高效率编程的最终方案。...]]></description><category></category></item><item><title><![CDATA[JavaScript Async/Await: 串行，并行和复杂流]]></title><link>https://blog.csdn.net/ccaoee/article/details/113572932</link><guid>https://blog.csdn.net/ccaoee/article/details/113572932</guid><author>ccaoee</author><pubDate>Tue, 02 Feb 2021 20:05:48 +0800</pubDate><description><![CDATA[JavaScript Async/Await: 串行，并行和复杂流
如果你有ASP.NET MVC编程语言的从业经历，你应该很熟悉C#的关键字async/await。现在JavaScript 也有同样的特性了。在async/await关键字还没有出现在JavaScript时，我们通常使用回调函数和Promise来处理异步代码。async/await构建与Promise对象和非阻塞特性之上。它的强大之处在于提供了一种语法使其写异步代码如同同步代码一般体验。在这篇文章中，我们将遍历串行/链式和并行流，并使用as]]></description><category></category></item><item><title><![CDATA[你应该理解的编程概念：上下文]]></title><link>https://blog.csdn.net/ccaoee/article/details/112317393</link><guid>https://blog.csdn.net/ccaoee/article/details/112317393</guid><author>ccaoee</author><pubDate>Thu, 07 Jan 2021 16:08:56 +0800</pubDate><description><![CDATA[前言

张飞：“俺也一样！”

正文
##　概念：是什么

上下文定义：位于关键词前部或后部的词句或文字。它是关键词所处的语言环境，影响关键词的含义。通过阅读上下文，有助于理解和鉴别某关键词所具有的准确含义和用法，判断文献是否相关。
---《图书馆·情报与文献学名词》 


上下文切换（context switch）定义：根据某种条件，暂停当前进程或线程的执行，保护当前进程或线程的现场，恢复另一个进程或线程的现场，转而执行该进程或线程的过程。
---《计算机科学技术名词 》 (第三版)

因此，我们得知：上]]></description><category></category></item><item><title><![CDATA[WSL：失去潜力]]></title><link>https://blog.csdn.net/ccaoee/article/details/111036081</link><guid>https://blog.csdn.net/ccaoee/article/details/111036081</guid><author>ccaoee</author><pubDate>Fri, 11 Dec 2020 15:18:33 +0800</pubDate><description><![CDATA[如果你最近几年在关注windows10系统，你应该知道Windows Subsystem for Linux，或者简称为WSL是周边开发人员的热门话题。最终你可以在Windows上以一等公民的身份运行你的Linux工具，这意味着你无需学习PowerShell或忍受古老的CMD.EXE控制台。
不幸的是，并非一切都像听起来那么美好。作为Azure新角色的一部分，我现在必须在Windows上开发。WSL仍然与本机Windows环境分开的事实表明了：即使我满怀希望，我也不能将WSL用作日常开发环境，因为我需要与“]]></description><category></category></item><item><title><![CDATA[(大众版本)从用户开始输入URL到最后屏幕上页面展示之间到底发生了什么?]]></title><link>https://blog.csdn.net/ccaoee/article/details/110410540</link><guid>https://blog.csdn.net/ccaoee/article/details/110410540</guid><author>ccaoee</author><pubDate>Mon, 30 Nov 2020 23:11:49 +0800</pubDate><description><![CDATA[当在计算机的浏览器输入URL(https://www.baidu.com)后，用户的计算机开始处理输入的URL,在本地查找是否有对应域名的IP地址，如果没有则向DNS服务器请求解析https://www.baidu.com对应的IP地址。计算机拿到对应域名的IP地址，然后向该IP地址的服务器发起请求，请求网址为：https://www.baidu.com。
该IP地址所对应的服务器对请求网址处理，然后向用户计算机返回相应的资源（一般包括HTML文档，CSS样式表，JS脚本文件，以及其他的图片资源，XHR请求]]></description><category></category></item></channel></rss>