git commit 规范和 如何在 commit 里使用 emoji

前言 大家好,我是桃翁,今天给大家带来的是关于 git commit 那些事儿,希望大家喜欢。 对于规范 git commit message 我是分成了两种类型去看待。 对于通用库、开源项目这类多人维护,而且极大可能别人会来看这份代码的,一定要规范,特别是对于开源项目,往往会要列 Change Log,规范好 commit 节省自己整理 log 的时间,也方便了用户。 对于业务代码,特别是那种一个人维护的,其实不搞问题也不大,因为极小可能会有人来看你的 commit message。但是我依然还是建议规范一下,不然一旦后面想去看就会花费很多的力气,毕竟规范一下也不麻烦。 通过本篇文章你讲了解到三部分内容: 了解 git commit 规范 学到用工具 Commitizen 来规范 commit 学到如何在 commit message 里加上好看的 emoji 规范 现在主流的 commit message 规范就是 Angular 团队所用的准则,继而衍生了 Conventional Commits specification. 很多工具也是基于此规范。 每次提交,Commit message 都包括三个部分:header,body 和 footer,其中 header 有一个特殊的格式,包括了 type、scope、subject。 <type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer> 其中 header 是必选的,但是 header 里的 scope 是可选的,另外提交的 message 长度不要超过 100 个字符,太长了不易阅读。...

September 5, 2021 · 3 min · 494 words · 桃翁

每个前端工程师都应该了解的图片知识

前言 随着web的发展,网站资源的流量也变得越来越大。据统计,60% 的网站流量均来自网站图片,可见对图片合理优化可以大幅影响网站流量,减小带宽消耗和服务器压力。 有时候你花大力气去配置 webpack 使打包体积减少,不如好好优化几张图片,这篇文章就是让你明白如何选择正确的图片,并且让你明白这么多图片格式,在什么场景下使用什么格式,如果想看答案,那么直接滑到文末看图即可。 我的更多文章可以看 GitHub博客, 基本概念 在进入正题之前,先聊聊一些图片相关的基本概念。 一张照片(位图)不断放大之后,会看到一个个小格子,这些小格子,叫像素。 一个格子(像素),在计算机中,用二进制来表示,使用的二进制位数越多,像素的色彩就越丰富。 举个例子,如果一个像素用一位二进制数表示,能有多少种颜色呢? 两种,一个二进制位,要不放 0(表示黑色),要不放 1(表示白色) 下图展示了一个像素二进制的位数最多可以展示多少种颜色。 在对图片有了基本的了解之后,接下来对图片进行分下类,有利于理解各种格式图片的特点。 根据图的类型分类 点阵图(位图) 矢量图 位图(点阵图) 位图,也叫做点阵图,像素图。构成点阵图的最小单位是像素,位图就是由像素阵列的排列来实现其显示效果的,每个像素有自己的颜色信息,在对位图图像进行编辑操作的时候,可操作的对象是每个像素,我们可以改变图像的色相、饱和度、透明度,从而改变图像的显示效果。 前面介绍中的那种不断放大会有小格子的图就是属于位图。 常见的比如:jpg、png、webp等,我们平时遇到的大多数都是位图。 矢量图 矢量图,也叫做向量图。矢量图并不纪录画面上每一点的信息,而是纪录了元素形状及颜色的算法,当你打开一幅矢量图的时候,软件对图形对应的函数进行运算,将运算结果图形的形状和颜色显示给你看。 无论显示画面是大还是小,画面上的对象对应的算法是不变的,所以,即使对画面进行倍数相当大的缩放,其显示效果仍然相同(不失真)。 常见的就是 svg 格式的。 根据压缩分类 无压缩。 无损压缩。 有损压缩。 无压缩 无压缩的图片格式不对图片数据进行压缩处理,能准确地呈现原图片。BMP 格式就是其中之一。 有损压缩 指在压缩文件大小的过程中,损失了一部分图片的信息,也即降低了图片的质量,并且这种损失是不可逆的,我们不可能从有一个有损压缩过的图片中恢复出原来的图片。 常见的有损压缩手段,是按照一定的算法将临近的像素点进行合并。压缩算法不会对图片所有的数据进行编码压缩,而是在压缩的时候,去除了人眼无法识别的图片细节。因此有损压缩可以在同等图片质量的情况下大幅降低图片的尺寸。其中的代表是 jpg。 无损压缩 在压缩图片的过程中,图片的质量没有任何损耗。我们任何时候都可以从无损压缩过的图片中恢复出原来的信息。 压缩算法对图片的所有的数据进行编码压缩,能在保证图片的质量的同时降低图片的尺寸。 png 是其中的代表。 小结 使用有损压缩处理图像,是去除某些像素数据,无法找回原图。 使用无损处理图像,是对像素数据进行压缩,可以找回原图。 常见的图片格式解析 GIF 关键词:无损压缩、索引色、透明、动画 GIF(Graphics Interchange Format) 的原义是“图像互换格式”,是一种基于 LZW 算法连续色调的无损的基于索引色的压缩格式。其压缩率一般在 50% 左右,它不属于任何应用程序所以几乎所有相关软件都支持它,公共领域有大量的软件在使用 GIF 图像文件。 GIF 是一种无损压缩,所以它只是对像素数据进行压缩,其实 LZW 算法只是一个压缩数据的算法,如果你懂哈夫曼算法的话,可能就比较好理解压缩数据是怎么回事儿了。 GIF 的特性是帧动画。...

May 20, 2019 · 3 min · 632 words · 桃翁

pm2 使用教程

简介 PM2 是 node 进程管理工具,可以利用它来简化很多 node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。 安装 npm install -g pm2 快速使用 pm2 start app.js 常用命令 启动 参数说明: --watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。 -i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。 --ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts"" -n --name:应用的名称。查看应用信息的时候可以用到。 -o --output <path>:标准输出日志文件的路径。 -e --error <path>:错误输出日志文件的路径。 --interpreter <interpreter>:the interpreter pm2 should use for executing app (bash, python…)。比如你用的coffee script来编写应用。 重启 pm2 restart app.js 3.3 停止 停止特定的应用。可以先通过pm2 list获取应用的名字(–name指定的)或者进程id。 pm2 stop app_name|app_id 如果要停止所有应用,可以 pm2 stop all 停止 类似pm2 stop,如下 pm2 stop app_name|app_id pm2 stop all 从进程列表删除进程 // pm2 delete [appname] | id pm2 delete app // 指定进程名删除 pm2 delete 0 // 指定进程id删除 删除进程列表中所有进程 pm2 delete all 查看进程状态 pm2 list // 或者 pm2 ls 查看某个进程的信息 pm2 describe 0 负载均衡 命令如下,表示开启三个进程。如果-i 0,则会根据机器当前核数自动开启尽可能多的进程。...

January 30, 2019 · 2 min · 270 words · 桃翁

git 之修改 commit 以及 rebase 的使用

我在提交中犯了一个错误,我该如何解决? 我的提交历史一团遭,我改如何让它整洁? 如果您有过上述问题,那么这篇文章适合您。这篇文章介绍了一个让你成为 Git 专家的主题列表。 如果您不了解 Git 基础知识,请单击此处查看我的 Git 基础知识博客。您必须了解 Git 的基础知识才能充分利用本文。 我的提交中犯了一个错误。我该怎么办? 情景 1 假设您已经提交了一堆文件并意识到您输入的提交消息实际上并不清楚。现在您要更改提交消息。为此,您可以使用 git commit --amend git commit --amend -m “新提交消息” 情景 2 假设您想提交六个文件,但是,错误地,您最终只提交了五个文件。您可能认为可以创建新提交并将第6个文件添加到该提交。 这种方法没有错。但是,为了保持整洁的提交历史,如果你真的可以以某种方式将此文件添加到您之前的提交本身,那会不会更好?这也可以通过以下方式完成 git commit --amend: git add file6 git commit --amend --no-edit --no-edit 表示提交消息不会更改 场景3 无论何时在 Git 中进行提交,提交都会附上作者姓名和作者电子邮件。通常,当您第一次设置 Git 时,您需要设置作者姓名和电子邮件。您无需担心每次提交的作者详细信息。 也就是说,对于特定项目,您可能希望使用不同的电子邮件 ID。您需要使用以下命令为该项目配置电子邮件 ID: git config user.email “你的电子邮件ID” 假设您忘记配置电子邮件,并且已经完成了第一次提交。Amend 也可用于更改先前提交的作者。可以使用以下命令更改提交的作者: git commit --amend --author“作者姓名<作者电子邮件>” 注意:仅在本地存储库中使用该 amend 命令。使用远程存储库可能会造成很多混乱 amend 我的提交历史是一团糟。我该如何处理? 假设您正在处理一段代码。您知道代码大约需要十天才能完成。在这十天内,其他开发人员也将提交代码到远程存储库。 将本地存储库代码与远程存储库中的代码保持同步是一种很好的做法。这会在您提出拉取请求时避免很多合并冲突。因此,您决定每两天从远程存储库中提取一次更改。 每次将代码从远程存储库提取到本地存储库时,都会在本地存储库中创建新的合并提交。这意味着您的本地提交历史记录将会进行大量的合并提交,这会使审阅者感到困惑。 如何使提交历史看起来更整洁? 这就是 rebase 拯救的地方。...

January 22, 2019 · 1 min · 213 words · 桃翁

像素相关概念:PPI、DPI、设备像素、独立像素

欢迎访问我的个人站点 前言 我相信对于像素,英文「pixel」,缩写「px」,这个概念并不陌生吧,不管是设计师设计图片用的单位 px,还是前端工程师在 css 里面的单位 px等等,很多领域都会用到这个单位,但是当我问他们一些问题的时候,基本上都答得不好。 比如: iPhone 6 的分辨率是 750 x 1334 像素,然而我们我们在写 css 的时候是以 375 x 667 来调的; 为什么我们做的一个网页在 pc 端可以正常显示,在移动端也可以正常显示,但是有时候又不正常显示; 我们如果在 pc 端把浏览器的宽度调到只有 200px 宽,里面写一个 100px 宽的 div ,然后再调整浏览器的放大为 200%,然后这个 div 可以充满整个显示器。 如果都能答上来,已经很不错了哦! 像素 定义:是指在由一个数字序列表示的图像中的一个最小单位,称为像素。 —- 百度百科 注意: 我觉得这里最关键的是『单位』,像素是一个单位,而不是一个点,我认为理解为一个长度单位比较好理解,后面我会解释为什么我会觉得是一个长度单位比较好理解。 我在很多文章里看到的定义是,像素就是组成图像的一个一个的点,这会让人感觉像素是个面积单位,我觉得这样有点不妥,并不是不对,要根据上下文而定。 比如 设备像素比(device pixels ratio),简称 DPR,DPR = 设备像素 / 设备独立像素。现在我们就拿 iPhone 6 来做例子,我们可以通过 window.devicePixelRatio 获取设备的 DPR 为 2,设备独立像素,在这里可以认为是 css 像素,整个 iPhone 6 的像素点就有 375 * 667 个。...

March 30, 2018 · 2 min · 338 words · 桃翁