1. 如何定义版本号

    版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。 如何定义版本号 主版本号为零(0.y.z)的软件处于开发初始阶段,一切都可能随时被改变。这样的公共 API 不应该被视为稳定版 1.0.0 的版本号用于界定公共 API 的形成。这一版本之后所有的版本号更新都基于公共 API 及其修改内容 修订号 Z(x.y.Z | x > 0)在只做了向下兼容的修正时才递增。这里的修正指的是针对不正确结果而进行的内部修改 次版本号 Y(x.Y.z | x > 0)在有向下兼容的新功能出现时递增。在任何公共 API 的功能被标记为弃用时也递增。也“可以 MAY ”在内部程序有大量新功能或改进被加入时递增,其中包括修订级别的改变。每当次版本号递增时,修订号归零。 主版本号 X(X.y.z | X > 0)在有任何不兼容的修改被加入公共 API 时递增。其中包括次版本号及修订级别的改变。每当主版本号递增时,次版本号和修订号归零 预发版本号 在常规的版本号命名之上还有一个特殊类别,叫做预发版本号(prerelease version)。它表示当前版本是一个不稳定的版本,使用它时需要注意风险。 预发版本号的格式是 <major>.<minor>.<patch>-<tag>,即前半部分和常规版本号相同,然后跟上连接符 -,后面再跟上字母数字点号连接符([0-9A-Za-z-.])。 一个典型的预发版本号形如 1.0.0-beta.1。建议使用这种 <major>.<minor>.<patch>-<stage>.<num> 的形式。其中 <stage> 一般选用:alpha、beta、rc。 预发版本号是常规版本号的附属,因此在版本的大小比较上,仍然先比较常规版本号部分;对于预发标记部分的比较,则是根据 ASCII 字母表中的顺序来进行。

  2. html css编码规范

    有人建议编码规范这种东西应该落实到ESlint这类工具上去,而不是停留在文档层面。 在我看来,规范也要看和记,难道你用 vscode/sublime 写个demo还要配上语法检查这一套东西么。 HTML section里面要有标题标签 section/aside/article/nav这种标签,需要在里面写一个h1/h2/h3之类的标题标签,因为这四个标签可以划分章节,它们都是独立的章节,需要有标题,如果UI里面根本就没有标题呢?那你可以写一个隐藏的标题标签,如果出于SEO的目的,你不能直接display: none,而要用一些特殊的处理方式,如下套一个hidden-text的类: <style>.hidden-text{position: absolute; left: -9999px; right: -9999px}</style> <section> <h1 class=”hidden-text”>Listing Detail</h1> </section> 要用table布局写邮件模板 由于邮件客户端多种多样,你不知道用户是使用什么看的邮件,有可能是用的网页邮箱,也有可能用的gmail/outlook/网易邮箱大师等客户端。这些客户端多种多样,对html/css的支持也不一,所以我们不能使用高级的布局和排版,例如flex/float/absolute定位,使用较初级的table布局能够达到兼容性最好的效果,并且还有伸缩的效果。 另外邮件模板里面不能写媒体查询,不能写script,不能写外联样式,这些都会被邮件客户端过滤掉,样式都得用内联style,你可以先写成外联,然后再用一些工具帮你生成内联html。 写完后要实际测一下,可以用QQ邮箱发送,它支持发送html格式文本,发完后在不同的客户端打开看一下,看有没有问题,如手机的客户端,电脑的客户端,以及浏览器。 由于你不知道用户是用手机打开还是电脑打开,所以你不能把邮件内容的宽度写死,但是完全100%也不好,在PC大屏幕上看起来可能会太大,所以一般可以这样写: <table style=”border-collapse:collapse;font-family: Helvetica Neue,Helvetica,Arial;font-size:14px;width:100%;height:100%”> <tr><td align=”center” valign=”top”><table style=”border:1px solid #ececec;border-top:none; max-width:600px;border-collapse:collapse”> <tr><td>内容1</td></tr> <tr><td>内容2</td></tr> </table></td></tr></table> 最外面的table宽度100%,里面的table有一个max-width:600px,相对于外面的table居中。这样在PC上最大宽度就为600px,而在手机客户端上宽度就为100%。 但是有些客户端如比较老的outlook无法识别max-width的属性,导致在PC上太宽。但是这个没有办法,因为我们不能直接把宽度写死不然在手机上就要左右滑了,也不能写script判断ua之类的方法。所以无法兼容较老版本outlook.  img空src的问题 有时候可能你需要在写一个空的img标签,然后在JS里面动态地给它赋src,所以你可能会这么写: <img src=”” alt> 但是这样写会有问题,如果你写了一个空的src,会导致浏览器认为src就是当前页面链接,然后会再一次请求当前页面,就跟你写一个a标签的href为空类似。如果是background-image也会有类似的问题。这个时候怎么办呢?如果你随便写一个不存在的url,浏览器会报404的错误。 我知道的有两种解决方法,第一种是把src写成about:blank,如下: <img src=”about:blank” alt>…

  3. 红米1s 绕过账户锁

    MIUI V6 及以上的版本,如果之前登录过小米账号以及设置了设备防丢的话,如果没有退出账户就直接刷机,后果就是设备被锁。有点好奇这个原理是怎么实现的。 第一、手机尝试过线刷、卡刷、9008深度刷,删除fastboot分区等操作,而且刷完之后没有联网,没有sim卡,直接进入到系统,然后我用了论坛上的俄罗斯版MIUI,进行卡刷,或者改名为update.zip用官方的recovery进行升级,升到 V6 版本后开机就立马会有账户锁。 猜测: 手机有隐藏分区记录设备是否上锁,如果是这样的话那么 9008 删分区这些操作还是不够底层,或者说对账户锁无效。。 其中,下面的两条命令至少对 红米1s 2003028的型号是不管用,提示没有 hide 这个命令。 输入adb shell pm hide com.miui.cloudservice 敲回车 输入adb shell pm hide com.xiaomi.finddevice 敲回车 但是刷 V5 的版本体验又太差怎么办?别人的刷机包又不敢用。。 尝试假装卖家去X宝询问小米解锁服务,问了5家,其中有4家店表示只能刷机,且不能自己随意更改其他系统,所以说他们肯定是刷了自己修改的room,只有一家表示解锁完后可以随便刷其他 MIUI room(价格是20)。 我猜想可能是改硬件指纹这种方式。。 此时除了X宝,貌似没有路可以尝试了,google 百度都找了很多方法无非就是上面的思路。由于手边没有其他小米手机,所以无法验证9008模式是否能解开带BL锁的小米手机。 9008模式,网上有几种方式可以进入(一次用一种命令)。建议使用刷机精灵调起 Adb命令行 adb reboot edl fastboot oem edl 论坛里有 红米NOTE3深度变砖以后进入9008模式的方法 关机后,按着音量上下键一块按着,然后连接USB,电脑设备管理器出现9008端口高通驱动 此方法我在 红米1s 联通电信版 上面试过,确实能进但是…