Deepsea

Results 47 issues of Deepsea

## 前言 今年难得的4天五一假期,放假当天就去下馆子吃饭,发现餐馆的叫餐系统很奇特,在前台点餐后,每桌领取块塑料牌子。餐馆前台在饭菜做好的时候,就做操作让食客的塑料牌子响动和发亮,引导食客交回塑料牌子然后去取餐。 当时点餐的我觉得这套系统很高大上,最后回家上网一查,发现这种系统叫“无线取号寻呼系统”,换句通俗的话来讲,就是局域网的“寻呼机”或者“BB机”。这就涨知识了,我的惯性常识认为二十多年前主流通信工具的“BB机”,应该早就退出历史的舞台,尘封在日新月异智能手机的浪潮底下,没想到此类技术还能在餐饮行业的信息化发展中继续发挥着余热。 当我抱着好奇心在网上继续搜索时候,发现当年的“BB机”无线寻呼技术除了应用在餐饮行业,还应用在医院的局域通信中。说到这里,也许读者很奇怪我会这么大的反应,因为我是信息工程专业出身的,虽然毕业后从事了互联网前端开发工作,但是大学4年耳濡墨染的通信技术还是有一定的技术敏感度的。 这次假期吃饭发现的“BB机”技术的新时代应用,在处于互联网前端技术的频繁更替的大环境下,给了我很大的思考,因为我的开发工作时间中,基本每周有那么一两次和同事对所谓前端“新旧技术”的友好(si)交流(bi)。因为我负责的是基础功能的前端应用,接受的锅很多都是近十年的陈年代码,基础应用99%都是基于jQuery的技术去实现的。日常重构和升级,最大的交流是对jQuery是否已经落伍淘汰的讨论和分析。 ## 寻呼机的前世今生 作为一个电子信息相关专业出身的开发者,先从卖弄一下自己了解到的“寻呼机”技术历史 ![mp-002](https://user-images.githubusercontent.com/8216630/59156592-2a5bca00-8ad0-11e9-9eb4-e76718090459.jpg) > 注: 图片来自于网络 - 大概在1970年代,寻呼机在香港和台湾开始流行,香港称之为“Call机”,也有称之为“传呼机”、“BB机”或者“BP机”。 - 到了1980年代,寻呼机开始在内地普及。在1990年代,内地的寻呼机业务达到了空前的繁荣。 - 到了1990年代,此时的香港由于手提电话的开始普及,寻呼机开始没落了。但是直到2017年,香港仍然有一间无线电寻呼运营商继续运营“寻呼机”的服务。 - 1998年,中国的寻呼机数量达到六千多万,已经是世界第一的数量。 - 2000年后,功能手机开始普及,寻呼机在内地开始式微。 - 直到2007年,内地大部分身份的运营商开始申请停止寻呼机的无线传呼服务,这也标志着“寻呼机”在内地正式推出通信界的历史舞台。 - “寻呼机”虽然在推出了主流民用通信方式,但在一些特殊场合,如餐厅和医院,利用其在局域网内无线寻呼通信能力,继续发光发热实现着自己的技术价值。 ![mp-001](https://user-images.githubusercontent.com/8216630/59156594-3e073080-8ad0-11e9-828a-b8d67f931cea.jpg) > 注:...

other

人到了中年,经常忙里偷闲多喝了两口枸杞水就容易上头,伤春悲秋地胡思乱想。想着2019年已经结束了,不能免俗地总结一下2019年的不羁的业余学习总结。 为啥是只做业余时间的总结?是因为工作是生活所迫,业余学习才是兴趣驱动。在很多时候,业余时间才能静下来看书写字,丝毫没有工作需求那种滚滚烟火的纷扰。用句鸡汤点的表达,业余学习才是超越别人成长的秘诀。 ## 重新变“废”为宝 2019这一年,花了最多心思是在思考怎样把以前学到过的但是没用过知识做个落地使用,例如大学教过一堆图像处理的知识,但是受限于工作的场景,很少有用武之地。因为对于大学学到的知识基本都在吃灰感到可惜,所以在花了三个多月的构思和编程,将`TypeScript`和“荒废”已久的图像处理知识结合,写了一个H5美图工具 `pictool`[1]。 ![pictool-ui-adjust](https://user-images.githubusercontent.com/8216630/62010318-f03baa00-b19b-11e9-8fa4-2cd13dfaa874.gif) ![pictool-ui-effect](https://user-images.githubusercontent.com/8216630/62010321-fe89c600-b19b-11e9-9e11-3d34456d7aee.gif) ![pictool-ui-process](https://user-images.githubusercontent.com/8216630/62010326-05b0d400-b19c-11e9-854d-1e8e6b061c2e.gif) 写了这个H5美图工具,也顺便熟悉了 `TypeScript`。同时感慨,工作了三四年,才第一次用`TypeScript`写了一个完整的项目。 很多时候都在想大学或者平时学到的东西有什么用?其实换个思路来看待这个问题,应该是我目前想实现的事物,在我学到的知识哪些可以用来给达到目的铺路。 ## 重新理解“一万小时定律” > “人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成世界级大师的必要条件。” ——出自 马尔科姆·格拉德韦尔《异类》[2] > 美国两位畅销书作家,丹尼尔·科伊尔的《一万小时天才理论》与马尔科姆·格拉德韦尔的一本类似“成功学”的书《异类》,其核心都是“一万小时定律”,就是不管你做什么事情,只要坚持一万小时,基本上都可以成为该领域的专家。[2] “一万小时定律” 这个词汇我是在刚毕业不久合租的室友跟我提到的一个定律,意思是任何人把一件事件做一万小时,就能成为这个领域的大师。当时“年轻气盛”的我是对于这种“成功学鸡汤”是嗤之以鼻的,后来在个人的技术成长遇到瓶颈的时候,又“真香”地喝起这碗鸡汤。 在前端快餐式的技术潮流中,很容易给人一种错觉,就是不管任何技术,只要找到官方文档和多写demo踩多几次坑就能掌握,然后就不知道下一步该怎么学习技术陷入迷茫。 这个问题在我工作了两三年后就变得更加明显。一开始是在技术快餐的错觉中写了《Koa2进阶学习笔记》、《Koa.js设计模式学习笔记》等开源书籍后续就陷入技术快餐式学习带来的迷茫期。 在2019年为了跳出这种快餐式的迷茫状态,刚好遇上 Deno这个技术的起步,就选择在无文档啃源码去学习。换个方式去学习一门技术,从2019年初的时候,就开始写《Deno进阶开发笔记》,跟着Deno的一年多的官方推翻重写等迭代,去维护这本开源书。 一开始的每天一小时读源码维护《Deno进阶开发笔记》,到后续工作太忙了变成每周至少4小时的学习去迭代,在这2019年里一共提交了370多个commit迭代。重新捧起“一万小时定律” 这碗鸡汤,放下技术快餐,静下心去沉淀。 ## 具体业余产出...

## 前言 经常用系统终端进行技术开发的过程会看到一些终端的动画效果,例如这个 ![002-progress](https://user-images.githubusercontent.com/8216630/68126954-d7d3ec00-ff4f-11e9-8113-ac0a914af723.gif) 最近刚好好奇的了解了一下,才知道实现这个能力是利用了终端支持的 `ANSI转义序列`,任何语言只要能调用终端的标准输入/输出(`stdin/stdout`),都可以直接使用`ANSI转义序列`的规范制作对应的终端动画。 ## 什么是ANSI ANSI是一种字符代码,为使计算机支持更多语言,通常使用 `0x00~0x7f` 范围的1个字节来表示 1个英文字符。超出此范围的使用`0x80~0xFFFF`来编码,即扩展的ASCII编码 [1] ## 什么是ANSI转义序列 ANSI转义序列是一种带内信号的转义序列标准, 相关视频终端控制光标屏幕位置、文本显示、显示样式等操作。[2] ## 历史 [2] ### 规范历史 - 每个计算机显示终端制造商都有自己的转义序列规范 - 为了解决转义序列的不统一带来的问题,1976年通过的第一版ANSI标准——ECMA-48 - “ANSI转义序列”这个名词可以追溯到 1979年ANSI采用ANSI X3.64...

other

## 前言 最近两月在学习`canvas`时候,发现很多有意思的技术能力,特别是在图像处理这一领域。让我想起大学课堂教学的《数字图像处理》(冈萨雷斯 版本)。但是很遗憾的是,大学上完课应付考试后全部还给老师了,毕业后一直做WEB相关开发,再也没怎么去接触图像处理这一领域技术。 利用每天下班回家后的零星时间,用`TypeScript`基于`canvas`的能力,写了一个H5图像处理小工具,勉强算是低配版的“美图秀秀”。这个图像处理的小工具我命名为 `Pictool`。 ![pictool-ui-adjust](https://user-images.githubusercontent.com/8216630/62010318-f03baa00-b19b-11e9-8fa4-2cd13dfaa874.gif) 具体源码地址 [https://github.com/chenshenhai/pictool](https://github.com/chenshenhai/pictool) 具体文档地址 [https://chenshenhai.github.io/pictool-doc/](https://chenshenhai.github.io/pictool-doc/) 在线例子 [https://chenshenhai.github.io/pictool/example/index.html](https://chenshenhai.github.io/pictool/example/index.html) ![pictool-logo](https://user-images.githubusercontent.com/8216630/62009310-73570300-b190-11e9-8298-539908494cc3.png) ## CDN 快速使用 ```html ``` ```js (function(Pictool) { const util = Pictool.browser.util; const PictoolUI = Pictool.UI;...

## 发布步骤如下 ### 打tag版本 ```sh git tag -a 0.1.0 -m "[email protected]" ``` - `-a` 后面加的是` 版本号的标签` - `-m` 后面加的是 `标签的描述/注释` ### 提交标签 ```sh git push origin --tags ``` - 提交之前标签...

git

看了很多大神、大厂的github仓库提交记录和规范,总结一下几点commit规范 - feat: 添加新功能 - docs: 修改注释、文档 - fix: 修复bug - style: 修改代码格式,例如代码lint处理等代码风格处理,**不能影响原功能** - refactor: 重构代码,**不能影响原功能** - perf: 提升性能 - test: 测试用例增删改 - chore: 工具操作,例如初始化脚本,启动脚本和代码校验脚本等等 - deps: 依赖修改,例如升级、降级或锁死版本

git

## 前言 对于js的`Worker`的使用,看了很多网上资料,都是基于`worker.js`新开一个文件来执行后台线程。 但是如果不想太麻烦新开一个`work.js`文件,想在同一个js文件里执行后台线程的资料就很少,最后翻遍了[MDN](https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers) 文档,找到了一种在同js文件下执行后台线程Worker的方法,具体实现如下 ## 实现 ### 实现源码 ```js /** * 执行函数的后台线程 * @param func 待后台线程执行的函数 * @param params 待后台线程执行的函数参数 * @param feedback 执行后台线程函数后反馈回调函数 */ const asyncWorker = function...

f2e

## 前言 > 写这篇文章主要是近年来前端服务端渲染框架层出不穷,开发的选择眼花缭乱。最近有个想法,把HTML的DOM树抽象成用`JSON schema` 语言描述,可以用于HTML渲染描述中间层抹平框架的差异。 > **注意:只是作为中间层抹平差异,不是代替框架** 。更好地抽象处理HTML的DOM节点在前端渲染,或者服务端渲染。 - 如果觉得文章啰嗦,我已经实现了该Node模块 `html-schema-parser`,可以直接安装使用。 - 或点击 github 查看源码[https://github.com/chenshenhai/html-schema-parser/](https://github.com/chenshenhai/html-schema-parser/) 具体的渲染设想如下: - 输入 JSON Schema ```js { tag: 'div', attribute: { style: 'background:#f0f0f0;' },...

HTML

2019年已经过了两个多月了,本来很早就想写一篇关于2018年的总结,但是由于工作的繁忙,加之碰上春节假期,所以这篇个人技术总结搁置了两个多月。所以在今天,趁着春节假期的余温,把2018年的技术学习历程总结一下。 ### 1. 春风得意马蹄疾,一朝看尽长安花 —— 立flag又打脸 从2017年初把以前koa.js的学习笔记整理成开源书[《Koa2进阶学习笔记》](https://github.com/chenshenhai/koa2-note)后,得到了很多社区朋友的支持和反馈。个人也感觉有点膨胀了,去年2月份,也就是2018年2月份左右,立了个flag,要把平时对Egg.js的学习笔记整理成《Egg.js深入浅出学习笔记》,膨胀后立flag的后果就是响亮的打脸,没有评估时间,也没有完整的学习规划,直至2019年初,该开源书才实现了30% 左右,最后在社区网友的催促下,很惭愧的宣布暂停更新了。 ### 2. 有心栽花花不开,无心插柳柳成荫 —— 意外的产出 在2018年初立flag的后续,为了配套完成《Egg.js深入浅出学习笔记》,研究了Koa.js的发展历程和源码变更历史,同时也硬生生地啃下一堆主流中间件的源码。同时,为了配套Koa使用TypeScript的项目开发,也选择了研究rollup.js的编译。但是最后由于工作太忙了加上笔记深度不够,肚子里干货太少,导致该立flag的开源书难产。虽然立的flag没实现,但是意外的整理了两本学习笔记[《Koa.js设计模式学习笔记》](https://github.com/chenshenhai/koajs-design-note)和[《Rollup实战学习笔记》](https://github.com/chenshenhai/rollupjs-note)。 最后安慰了自己,有时候朝着定下目标努力前进,最后发现画饼太大了,达不到目的地,但起码自己付出过了,即使最后吃不到饼,至少也能收获点芝麻。 ### 3. 读书患不多,思义患不明 —— 探索新大陆 2018年诞生了很多新技术,每一种都很感兴趣,都很想去学。由于懒惰的借口和没有落地应用场景,很多新技术学习的程度都是浅尝即止。同时,加上一整年立flag的打脸,深刻理解贪多嚼不烂的道理,最后就选择了个人比较感兴趣的新领域deno去学习。 deno从2018年6月份诞生开始,我是抱着观望的态度去看待的。直至后续几个月里,deno从golang转移到rust,同时deno_std(deno官方标准模块)的诞生。在我的理解中,deno官方标准模块deno_std有点类似Java的官方maven,统一管理官方审核的包。至此,我就开始觉得deno有点意思了,总得来说令我感兴趣的有以下几点: - 1.权限控制网络权限,文件、子进程和环境都被限制使用,除非用户赋予权限。 - 2.浏览器化的模块机制可以像浏览器引用js链接一样的使用模块。 - 3.浏览器的API的使用像fetch类似的浏览器API可以直接使用。 ### 4....

other

# node_modules 常用模块 ## web框架 - express - koa - koa-route - koa-static ## 前端模板引擎 - ejs - jade - artTemplate - doT - nunjucks ## 数据库 - mysql -...

nodejs