-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
60 lines (51 loc) · 18.4 KB
/
index.html
File metadata and controls
60 lines (51 loc) · 18.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE html><html><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><meta name="description" content="摸摸鱼"><meta name="keywords" content=""><meta name="author" content="张熠"><meta name="copyright" content="张熠"><title>前端搬砖工 | Codan's Blog</title><link rel="shortcut icon" href="/img/zhangyi.png"><link rel="stylesheet" href="/css/index.css?version=1.6.1"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/font-awesome@latest/css/font-awesome.min.css?version=1.6.1"><link rel="dns-prefetch" href="https://cdn.staticfile.org"><link rel="dns-prefetch" href="https://cdn.bootcss.com"><link rel="dns-prefetch" href="https://creativecommons.org"><script>var GLOBAL_CONFIG = {
root: '/',
algolia: undefined,
localSearch: {"path":"search.xml","languages":{"hits_empty":"╥﹏╥木有找到: ${query}"}},
copy: {
success: '复制成功!',
error: '复制失败了',
noSupport: '当前浏览器并不支持~'
}
} </script><meta name="generator" content="Hexo 6.3.0"></head><body><canvas class="fireworks"></canvas><i class="fa fa-arrow-right" id="toggle-sidebar" aria-hidden="true"></i><div id="sidebar"><div class="author-info"><div class="author-info__avatar text-center"><img src="http://ww1.sinaimg.cn/large/006tNc79ly1g4mh0h5ecmj30uv0u0e82.jpg"></div><div class="author-info__name text-center">张熠</div><div class="author-info__description text-center">摸摸鱼</div><div class="follow-button"><a target="_blank" rel="noopener" href="https://github.com/crazyoctopusdan">Follow Me</a></div><hr><div class="author-info-articles"><a class="author-info-articles__archives article-meta" href="/archives"><span class="pull-left">文章</span><span class="pull-right">21</span></a><a class="author-info-articles__tags article-meta" href="/tags"><span class="pull-left">标签</span><span class="pull-right">16</span></a></div><hr><div class="author-info-links"><div class="author-info-links__title text-center">友链</div><a class="author-info-links__name text-center" target="_blank" rel="noopener" href="https://zcxb.github.io">陈小波</a><a class="author-info-links__name text-center" target="_blank" rel="noopener" href="https://www.yongsheng.us">康师傅</a><a class="author-info-links__name text-center" target="_blank" rel="noopener" href="https://wukong1995.github.io">悟空</a></div></div></div><nav class="no-bg" id="nav"><div id="page-header"><span class="pull-left"> <a id="site-name" href="/">Codan's Blog</a></span><i class="fa fa-bars toggle-menu pull-right" aria-hidden="true"></i><span class="pull-right menus"><a class="site-page social-icon search"><i class="fa fa-search"></i><span> 搜索</span></a><a class="site-page" href="/">主页</a><a class="site-page" href="/archives">归档</a><a class="site-page" href="/tags">标签</a><a class="site-page" href="/categories">分类</a></span></div><div id="site-info"><div id="site-title">Codan's Blog</div><div id="site-sub-title">前端搬砖工</div><div id="site-social-icons"><a class="social-icon" target="_blank" rel="noopener" href="https://github.com/crazyoctopusdan"><i class="fa-github fa"></i></a><a class="social-icon" target="_blank" rel="noopener" href="https://gitlab.com/CrazyOctopusDan"><i class="fa-gitlab fa"></i></a><a class="social-icon search"><i class="fa fa-search"></i></a></div></div></nav><div id="content-outer"><div class="layout" id="content-inner"><div class="recent-post-item article-container"><a class="article-title" href="/2023/04/28/%E6%88%90%E4%B8%BA%E4%B8%80%E4%B8%AA%E6%9C%89%E4%BB%B7%E5%80%BC%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%91%98/">成为一个有价值的程序员</a><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2023-04-28</time><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fa fa-tag article-meta__icon" aria-hidden="true"></i><a class="article-meta__tags" href="/tags/%E8%AF%91%E6%96%87/">译文</a></span><div class="content">MVP:最有价值的程序员缩写 MVP 通常代表最小可行产品,至少如果你在软件工程领域工作。但今天我想谈谈另一种 MVP:最有价值的程序员。
就像最小可行产品一样,最有价值程序员也不是一个具体的概念。相反,它是一个你为之奋斗的目标。此外,这也不是说你要成为同事中最有价值的人。相反,它是关于成为最好的自己。让我详细说明一下……
年轻的我有一天,我想起了大约 15 年前我与一位高级开发人员的谈话。我不记得当时脑子里是怎么想的了,但是我自己对几个大的 PHP 文件进行了 ...</div><a class="more" href="/2023/04/28/%E6%88%90%E4%B8%BA%E4%B8%80%E4%B8%AA%E6%9C%89%E4%BB%B7%E5%80%BC%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%91%98/#more" style="margin-top: 14px">进入阅读</a><hr></div><div class="recent-post-item article-container"><a class="article-title" href="/2023/03/27/%E5%A5%BD%E7%94%A8%E7%9A%84Vscode/">好用的Vscode</a><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2023-03-27</time><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fa fa-tag article-meta__icon" aria-hidden="true"></i><a class="article-meta__tags" href="/tags/%E5%BC%80%E5%8F%91Tips/">开发Tips</a></span><div class="content">用了 Vscode 好多年,从一开始开箱即用到现在慢慢地完善成为自己趁手的利器,我觉得有必要来建立一个文章长期完善更新我的武器。
效率插件插件 yyds,一个谁都在用的工具想要变得更加适配,符合自己的插件必不可少!
Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code简单来说就是汉化包虽然英文是咱们程序员的必备选项,但是开发时候一目了然的中文也会很舒坦~
Github Copilot
插 ...</div><a class="more" href="/2023/03/27/%E5%A5%BD%E7%94%A8%E7%9A%84Vscode/#more" style="margin-top: 14px">进入阅读</a><hr></div><div class="recent-post-item article-container"><a class="article-title" href="/2023/03/08/%E6%80%8E%E4%B9%88%E5%A4%84%E7%90%86React%E4%B8%AD%E7%9A%84Errors/">怎么处理React中的Errors</a><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2023-03-08</time><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fa fa-tag article-meta__icon" aria-hidden="true"></i><a class="article-meta__tags" href="/tags/React/">React</a></span><div class="content">怎么处理 React 中的 Errors背景最近在研究如何在 React 中捕获和处理错误,try/catch和ErrorBoundary的用法、模式和警告,什么时候是可行的,什么时候是不行的,以及如何用ErrorBoundary捕获所有错误,包括async错误和来自事件处理程序的错误。
我们都希望我们的应用能够稳定,能够完美地运行,并且能够满足所有可以想象到的情况,但可悲的现实是,我们都是人类(至少我是这么认为的),我们都会犯错误,不存在没有错误的代码。无论我 ...</div><a class="more" href="/2023/03/08/%E6%80%8E%E4%B9%88%E5%A4%84%E7%90%86React%E4%B8%AD%E7%9A%84Errors/#more" style="margin-top: 14px">进入阅读</a><hr></div><div class="recent-post-item article-container"><a class="article-title" href="/2023/03/07/%E3%80%8AReact%20Query%20%E7%AC%94%E8%AE%B0%E3%80%8B/">《React Query 笔记》</a><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2023-03-07</time><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fa fa-tag article-meta__icon" aria-hidden="true"></i><a class="article-meta__tags" href="/tags/react-query/">react-query</a></span><div class="content">《React Query 笔记》要开始做请求方案的调研,第一个深入看的是 React Query(下面简称为 RQ)。本文是 Practical React Query | TkDodo’s blog 系列文章的阅读笔记。1. 为啥很多人会认为 apollo 会取代 redux?apollo 是请求方案,而 redux 是全局状态库,看起来八竿子打不着,但如果我们能在客户端通过缓存的方式访问服务端的数据,那对于 80% 的应用来说,剩下需要处理的客户端状态其实很 ...</div><a class="more" href="/2023/03/07/%E3%80%8AReact%20Query%20%E7%AC%94%E8%AE%B0%E3%80%8B/#more" style="margin-top: 14px">进入阅读</a><hr></div><div class="recent-post-item article-container"><a class="article-title" href="/2021/03/04/gitflow%20%E6%93%8D%E4%BD%9C%E6%80%9D%E8%80%83/">gitflow 操作思考</a><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2021-03-04</time><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fa fa-tag article-meta__icon" aria-hidden="true"></i><a class="article-meta__tags" href="/tags/gitflow-%E5%85%B1%E5%90%8C%E5%8D%8F%E4%BD%9C/">gitflow 共同协作</a></span><div class="content">Git Flow 的另一种思路
Master 分支 下文简称(M)Test 分支 下文简称 (T)Feature 分支 下文简称(F)Hotfix 分支 下文简称(H)Merge Request 操作请求 下文简称(MR)
高度精简为一句话:一切分支都从Master分支中拉出!
迭代开始暂定当前迭代为Vn,则上一个稳定迭代的版本为Vn-1。
首先从M -> T,作为开发过程中的测试分支。
根据产品文档等需求划分工具提示,每一位同志按照自己手头的工作进行: ...</div><a class="more" href="/2021/03/04/gitflow%20%E6%93%8D%E4%BD%9C%E6%80%9D%E8%80%83/#more" style="margin-top: 14px">进入阅读</a><hr></div><div class="recent-post-item article-container"><a class="article-title" href="/2020/06/11/React%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0/">React源码学习</a><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2020-06-11</time><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fa fa-tag article-meta__icon" aria-hidden="true"></i><a class="article-meta__tags" href="/tags/React/">React</a></span><div class="content">React-dom 源码阅读react-dom-render首先 => 创建ReactDOM.render
步骤
创建ReactRoot
创建FiberRoot和RootFiber
创建更新
通过DOM Renderer.createContainer 创建了一个 FiberRoot;
接下来挂载到container._reactRootContainer上面;
然后最重要的是,调用 DOMRenderer.unbatchedUpdates(批量更新), ...</div><a class="more" href="/2020/06/11/React%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0/#more" style="margin-top: 14px">进入阅读</a><hr></div><div class="recent-post-item article-container"><a class="article-title" href="/2020/06/09/G6%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/">G6使用指南</a><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2020-06-09</time><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fa fa-tag article-meta__icon" aria-hidden="true"></i><a class="article-meta__tags" href="/tags/UMI3-G6-Graphin/">UMI3 G6 Graphin</a></span><div class="content">G6 使用指南背景在吾来产品中有任务机器人的画布功能,我们在设计之初调研了众多库,最后挑选了一款将canvas和HTML DOM结合地不错的JSPlumb库,的的确确也很大程度上完成了功能的开发,在效果上也具有不错的体现,然而在后期,产品团队和设计团队想要对这个画布功能进行修改的时候便遭遇了极大困难,所以说,JSPlumb是一款起点和上限都不高的库。
于是静极思变,我们看见了现在新的库G6,作为阿里团队开发维护的库,我们决定去尝试一下。G6G6 是一个简 ...</div><a class="more" href="/2020/06/09/G6%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/#more" style="margin-top: 14px">进入阅读</a><hr></div><div class="recent-post-item article-container"><a class="article-title" href="/2020/06/01/%E4%BD%BF%E7%94%A8UMI3%E6%90%AD%E5%BB%BA%E9%A1%B9%E7%9B%AE%E6%96%B0%E7%9A%84/">使用UMI3搭建项目心得</a><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2020-06-01</time><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fa fa-tag article-meta__icon" aria-hidden="true"></i><a class="article-meta__tags" href="/tags/UMI3-Dva-Webpack/">UMI3 Dva Webpack</a></span><div class="content">
写这一篇之前感谢子杰同学的付出,给我们搭建了一套基于umi3的框架,内置了启动配置等等耗时的基础操作,达到了快速启动项目的目的。
但是在使用中仍然需要注意几点,听我细细道来。
UMI3基础结构这个是给小白说的,虽然umi3的写法超高度类似于reactjs的写法,但是不代表你就可以不去阅读umi3的文档了。
当然阅读了文档也不代表你就全部领悟了(可能因为作者默认你是老的开发者,所以有部分change他会说是从umi2中变换而来的,想了解还是得看一眼早期文档 ...</div><a class="more" href="/2020/06/01/%E4%BD%BF%E7%94%A8UMI3%E6%90%AD%E5%BB%BA%E9%A1%B9%E7%9B%AE%E6%96%B0%E7%9A%84/#more" style="margin-top: 14px">进入阅读</a><hr></div><div class="recent-post-item article-container"><a class="article-title" href="/2020/04/09/%E5%90%BE%E6%9D%A5-%E7%94%BB%E5%B8%83%E5%8A%9F%E8%83%BD%E8%A6%81%E7%82%B9%E6%B1%87%E6%80%BB/">吾来-画布功能要点汇总</a><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2020-04-09</time><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fa fa-tag article-meta__icon" aria-hidden="true"></i><a class="article-meta__tags" href="/tags/React-Redux-JsPlumb-Dom/">React Redux JsPlumb Dom</a></span><div class="content">要点汇总
画布的前身今世
技术选择
技术实现
画布的前身今世
画布是任务场景中对于对话单元的设置以及排布的区域,以下介绍对比了画布的演进历史。
DM1时代DM1(Dialog Manage 1st version)对话管理 即 任务对话管理第一版本;
现在(2019.11.25)依然呈现在项目中-任务对话-场景列表-「旧版」场景;
里面的触发器和对话单元呈现y轴排布,编辑场景对于对话单元的排布要求编辑人员有较高的水准,界面较为简陋,使用起来不是特别得心应手。 ...</div><a class="more" href="/2020/04/09/%E5%90%BE%E6%9D%A5-%E7%94%BB%E5%B8%83%E5%8A%9F%E8%83%BD%E8%A6%81%E7%82%B9%E6%B1%87%E6%80%BB/#more" style="margin-top: 14px">进入阅读</a><hr></div><div class="recent-post-item article-container"><a class="article-title" href="/2020/04/05/%E5%88%92%E8%AF%8D%E6%A0%87%E6%B3%A8%E7%BC%96%E8%BE%91%E5%99%A8%E5%BC%80%E5%8F%91%E4%B9%8B%E6%97%85/">划词标注编辑器开发之旅</a><time class="post-meta__date"><i class="fa fa-calendar" aria-hidden="true"></i> 2020-04-05</time><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fa fa-tag article-meta__icon" aria-hidden="true"></i><a class="article-meta__tags" href="/tags/JavaScript-DOM/">JavaScript DOM</a></span><div class="content">
技术方案类似于如何把大象塞进冰箱,句式操作页面总共分为三个大块:
初始化数据;(打开冰箱门)
编辑操作;(把大象塞进去)
存储数据;(关上冰箱门)
一、初始化步骤在一个页面中的句式或许有非常多条(例如任务对话 中的意图触发器),也可能只有一条(任务对话中的填槽句式页面),但是对于句式编辑器来说,一个编辑器对应一条句式。
那么编辑器肯定不会“无中生有”,它所要展示的内容均来自于接口传递的句式数据。这份数据结构中最重要的几个key分别是”content”、”n ...</div><a class="more" href="/2020/04/05/%E5%88%92%E8%AF%8D%E6%A0%87%E6%B3%A8%E7%BC%96%E8%BE%91%E5%99%A8%E5%BC%80%E5%8F%91%E4%B9%8B%E6%97%85/#more" style="margin-top: 14px">进入阅读</a><hr></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="page-number" href="/page/3/">3</a><a class="extend next" rel="next" href="/page/2/"><i class="fa fa-chevron-right"></i></a></div></nav></div></div><footer><div class="layout" id="footer"><div class="copyright">©2018 - 2023 By 张熠</div><div class="framework-info"></div><div class="footer_custom_text">欢迎来到Codan的博客 | <i class="fa fa-envelope-o" aria-hidden="true"></i><a href="mailto:contactcodan@163.com">contactcodan@163.com</a> | <i class="fa fa-weixin" aria-hidden="true"></i>zy840271360</div><div class="busuanzi"><script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script><span id="busuanzi_container_site_uv"><i class="fa fa-user"></i><span id="busuanzi_value_site_uv"></span><span></span></span><span class="footer-separator">|</span><span id="busuanzi_container_site_pv"><i class="fa fa-eye"></i><span id="busuanzi_value_site_pv"></span><span></span></span></div></div></footer><i class="fa fa-arrow-up" id="go-up" aria-hidden="true"></i><script src="https://cdn.jsdelivr.net/npm/animejs@latest/anime.min.js"></script><script src="https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js"></script><script src="https://cdn.jsdelivr.net/npm/velocity-animate@latest/velocity.min.js"></script><script src="https://cdn.jsdelivr.net/npm/velocity-ui-pack@latest/velocity.ui.min.js"></script><script src="/js/utils.js?version=1.6.1"></script><script src="/js/fancybox.js?version=1.6.1"></script><script src="/js/sidebar.js?version=1.6.1"></script><script src="/js/copy.js?version=1.6.1"></script><script src="/js/fireworks.js?version=1.6.1"></script><script src="/js/transition.js?version=1.6.1"></script><script src="/js/scroll.js?version=1.6.1"></script><script src="/js/head.js?version=1.6.1"></script><script src="/js/search/local-search.js"></script><script>if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
$('#nav').addClass('is-mobile')
$('footer').addClass('is-mobile')
}</script><div class="search-dialog" id="local-search"><div class="search-dialog__title" id="local-search-title">文章搜索</div><div id="local-input-panel"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索封面标题(-^〇^-)"></div></div></div><hr><div id="local-search-results"><div id="local-hits"></div></div><span class="search-close-button"><i class="fa fa-times"></i></span></div><div class="search-mask"></div></body></html>