#600 HTML 总结

2021-08-21

HTML5 的一个重要变化是彻底放弃 XML 化路线,也就是所谓的 “no logger based on SGML”,事实上 HTML5 就是因为浏览器厂商和 W3C 之间存在是否应该 XML 化这个分歧才诞生出来的。最终厂商联盟 WHATWG 获胜,取得了标准制定方面的绝对话语权(W3C 设计的 XHTML2 胎死腹中),其他的功能上的大跨度变化(除了本身的功能增加之外,对外设备连通性,性能)都只能算是副产品。

我们常说的 H5 实际上是 HTML5 + CSS3, JS 一般好像没有要求,应该还是默认 ES5, 不过现在 ES6 目前也已经在主流浏览器上得到了很好的支持。

黄色:废弃
绿色:新增
红色:非标准

标签

基础框架

  1. <!DOCTYPE>
  2. <!-- -->
  3. html
  4. head
  5. body
  6. title
  7. meta
  8. base
  9. basefont
  10. style
  11. link

文档结构

  1. p
  2. h1 ... h6
  3. ul, ol, li
  4. dl, dt, dd
  5. dir 使用 ul 替代
  6. span
  7. div
  8. table, tr, td, th, thead, tbody, tfoot, col, colgroup, caption
  9. a

样式/排版

  1. abbr, acronym 简写
  2. bdo 文字书写方向
  3. b, strong
  4. big, small
  5. center
  6. font
  7. i 斜体
  8. s, stike 中划线
  9. u 下划线
  10. del, ins 删除、插入,默认就是加上中划线和下划线
  11. em 强调
  12. dfn 术语
  13. q, blockquote, cite 引用
  14. address
  15. var 变量
  16. samp 样本
  17. kbd
  18. br
  19. hr
  20. sub, sup
  21. ruby, rt, rp
  22. pre, code

图片/视频/音频

  1. img
  2. map
  3. area
  4. canvas
  5. figcaption
  6. figure
  7. piture
  8. svg
  9. audio
  10. video
  11. source
  12. track

表单

  1. form
  2. input
  3. select
  4. textarea
  5. button
  6. option, optgroup
  7. label
  8. legend
  9. datalist 配合 input 使用
  10. output

Frame

  1. frame
  2. frameset
  3. noframes
  4. iframe

程序

  1. script
  2. noscript
  3. embed 可能是 v4 没有纳入标准
  4. object
  5. param
  6. applet

语义标签

  1. main
  2. header
  3. footer
  4. nav
  5. article
  6. aside
  7. section
  8. details
  9. dialog
  10. menu
  11. menuitem 火狐
  12. summary

Web Components

Custom Elements
H5 特性。

新的 API

  1. SVG
  2. Canvas
  3. 音频/视频
  4. WebRTC
  5. 本地存储
  6. WebStorage: LocalStorage + SessionStorage
  7. IndexedDB
  8. WebSQL
    PS: WebSQL 相关规范已经冻结,所以现在不属于 HTML5 标准,只有 Safari 和 Chrome 系浏览器支持。
    火狐全力支持 IndexedDB,认为一项标准不应该依赖一个具体的实现(SQLite),而且对于在网页端执行 SQL 非常不看好。
  9. WebAssembly
    这同样不属于 HTML5 的范畴,不过也是一项重要的标准,可能对 Web 开发产生很大的影响。
  10. WebSockets
  11. Server-Sent Event
  12. 2D/3D (WebGL)
  13. XMLHttpRequest Level 2

参考资料与拓展阅读

#599 Discuz! Q

2021-08-21

在看腾讯云服务器时,意外看到一个镜像的名称是 Discuz! Q,看这个名字,难道康盛发了新产品?

打开官网,从其介绍中了解到:

  1. 完全重写的版本
  2. 真开源:Apache 2.0 协议
    从官网下载的包可以看到代码中的版权声明确实是 Apache 2.0 协议,不是之前那种语焉不详的中国特色 “开源” 协议
    不过,官网号称即将上到 GitHub,但距离第一个版本发布已经一年半了,依然不能在 GitHub 上找到相关仓库
  3. 读写分离:后端 PHP7,前端 Vue.js
  4. H5 友好

其他:

  1. 更新记录
    Discuz! Q alpha v0.1.200124 2020/1/24  第一个版本
    Discuz! Q RC v1.0.200715    2020/7/15  第一个正式版本
    Discuz! Q RC v3.0.210824    2020/8/24  最新版本
    
    1. 官方演示站:https://discuz.chat/ 如果感兴趣可以打开看看。

既然腾讯有投入,那说明这个东西还是有一定价值啊,不知道阿里巴巴收购的 PHPWind (09 年就歇菜了) 会不会再起来蹦跶蹦跶?

#598 Python 源码学习 07: list

2021-08-19

cpython/Include/cpython/tupleobject.h

INIT_TYPE(&PyList_Type, "list");
SETBUILTIN("list", &PyList_Type);

PyTypeObject PyList_Type 的定义在 Objects/listobject.c 中。

成员方法

相关的方法在 #define LIST_.+_METHODDEF 的定义中,比如 extend 方法:

#define LIST_APPEND_METHODDEF    \
    {"append", (PyCFunction)list_append, METH_O, list_append__doc__},

static PyObject *
list_append(PyListObject *self, PyObject *object)
/*[clinic end generated code: output=7c096003a29c0eae input=43a3fe48a7066e91]*/
{
    if (app1(self, object) == 0)
        Py_RETURN_NONE;
    return NULL;
}

static int
app1(PyListObject *self, PyObject *v)
{
    Py_ssize_t n = PyList_GET_SIZE(self);

    assert (v != NULL);
    if (n == PY_SSIZE_T_MAX) {
        PyErr_SetString(PyExc_OverflowError,
            "cannot add more objects to list");
        return -1;
    }

    if (list_resize(self, n+1) < 0)
        return -1;

    Py_INCREF(v);
    PyList_SET_ITEM(self, n, v);
    return 0;
}

#596 软件工程

2021-08-15
  • 分析:产品需求文档 (Product Requirements Document, PRD)
  • 设计:模型,模式,业务规则,软件架构
  • 编码:开发,验证,集成
  • 测试:测试
  • 维护:安装部署 Deploy、升级 Upgrade、配置、迁移 Migration、集成 Integration、评估 Evaluation 、技术支持 Support

https://www.ruanyifeng.com/blog/2019/03/agile-development.html
敏捷开发入门教程
https://docs.microsoft.com/zh-cn/devops/plan/what-is-agile-development
什么是敏捷开发?

净室
CMMI
RUP
极限编程 XP
Scrum
Kanban
RAD

分析
设计
编码
测试
维护:运维,运营,售后工程师

技术写作:

  • 用户手册 User Guide
  • 开发手册 Developer Guide
  • 管理员手册 Administrator Guide
  • 故障排除 Troubleshooting
  • 问答 FAQs (Frequently Asked Questions)
  • 发布说明 Release Notes
  • 白皮书 Whitepaper
  • How To Guide
  • 用户案例 User Cases / Success Stories

开发模型

CMM,能力成熟度模型 Capability Maturity Model
CMMI,能力成熟度模型集成 Capability Maturity Model Integration,还有要给中文商标:希迈

GJB5000
GJB 5000-2003 军用软件能力成熟度模型
GJB 5000A-2008 军用软件研制能力成熟度模型
GJB 5000B-2021 军用软件能力成熟度模型

#595 PMP & IPMP

2021-08-15

在软件开发领域,最知名的项目管理证书应该就是 PMP 了。与之对应的有 IPMP, CPMP。

PS:此外还有 6Sigma 等。
PS:PMI 协会除了 PMP 认证之外,还有 ACP 敏捷项目管理认证,PgMP 项目集管理认证。

PMP

项目管理专业人士资格认证 Project Management Professional

组织单位:美国项目管理协会 Project Management Institute (简称PMI)
费用:大概 3800 人民币
要求:3 年以上担任项目经理经历

IPMP

国际项目经理资质认证 International Project Manager Professional

  • A 级 (IPMA Level A) 证书:特级项目经理 Certified Projects Director
  • B 级 (IPMA Level B) 证书:高级项目经理 Certified Senior Project Manager
  • C 级 (IPMA Level C) 证书:项目经理 Certified Project Manager
  • D 级 (IPMA Level D) 证书:助理项目经理 Certified Project Management Associate

其中 C 级对应 PMP 认证。

组织单位:国际项目管理协会 International Project Management Association (简称 IPMA)
费用:大概 1200 人民币
要求:3 年以上担任项目经理经历(C 级), D 级没有要求。

CPMP

中国项目管理师 China Project Management Division

组织单位:人社部

  • 高级项目管理师(一级)
  • 项目管理师(二级)
  • 助理项目管理师(三级)
  • 项目管理员(四级)

如果不是专门查这一块资料,我应该都不知道有这个东西。

参考资料与拓展阅读

#594 Thunderbird 91 与邮件迁移

2021-08-14

Thunderbird 91 发布了,我本地用的还是去年发布的 78,据说新版本改版挺好的,只是不能从老版本直接升级过来,我就手动下载下来看看。

  1. 界面布局没有怎么变,但似乎感觉风格确实有一点变化;
  2. 更新机制变得和 Chrome 一样了,自带更新管理,打开 “关于Thunderbird” 就开始检查更新;
  3. 新增了 OpenPGP 功能,之前需要通过插件来实现;

下载

wget -c --trust-server-names https://download.mozilla.org/?product=thunderbird-91.0-SSL&os=linux64&lang=zh-CN
tar -xjvf thunderbird-91.0.tar.bz2
mv thunderbird ~/Tools/

迁移

还是官网提供的老方法 (Moving Thunderbird Data to a New Computer):

  1. 打开旧的客户端:菜单 > 帮助 > 更多排障信息 > 配置文件夹,
    拿到配置目录: ~/.thunderbird/jum510ej.default
  2. 新版本客户端同样操作,
    拿到配置目录: ~/.thunderbird/ksml2udy.default-release-1
  3. 关闭两个客户端,如果像之前跨机器迁移的话,应该是删除新目录,把旧目录复制过来改成新目录名称。
    但我这是一个电脑上,我直接删除新目录,然后创建软链就行了。
    # ~/.thunderbird/profiles.ini
    rm -rf ~/.thunderbird/ksml2udy.default-release-1
    rm -rf ~/.cache/thunderbird/ksml2udy.default-release-1
    ln -s jum510ej.default ~/.thunderbird/ksml2udy.default-release-1
    ln -s jum510ej.default ~/.cache/thunderbird/ksml2udy.default-release-1
    

替换旧版本

# type thunderbird        # thunderbird is /usr/bin/thunderbird
# ll /usr/bin/thunderbird # ../lib/thunderbird/thunderbird.sh
sudo ln -sf ~/Tools/thunderbird/thunderbird /usr/bin/thunderbird
# sudo apt remove thunderbird

#593 煮鸡蛋(卤蛋/茶叶蛋)

2021-08-10

先把鸡蛋用清水煮熟,然后用钢勺子敲裂,加入佐料,继续煮两个小时。

  • 茶叶,也不用太多
  • 酱油: 生抽,几勺子(看着办)
  • 酱油: 老抽,一点点
  • 冰糖
  • 八角

#591 OCSP 联机证书状态协议

2021-08-08

证书使用者拿到证书之后会对其进行完整性校验,可信性校验,有效期校验,适用范围校验。可是其中少了一环:如果证书使用者出于什么原因主动注销证书,如何通知已经在使用该证书的人呢?
PKI (公开密钥基础建设) 有 CRL ((Certificate Revocation List 证书撤销列表) 和 OCSP (Online Certificate Status Protocol 联机证书状态协议) 两套机制。