#595 软件工程
软件工程 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 军用软件能力成熟度模型
#594 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
组织单位:人社部
- 高级项目管理师(一级)
- 项目管理师(二级)
- 助理项目管理师(三级)
- 项目管理员(四级)
如果不是专门查这一块资料,我应该都不知道有这个东西。
参考资料与拓展阅读
#593 Thunderbird 91 与邮件迁移
软件 Thunderbird 2021-08-14Thunderbird 91 发布了,我本地用的还是去年发布的 78,据说新版本改版挺好的,只是不能从老版本直接升级过来,我就手动下载下来看看。
- 界面布局没有怎么变,但似乎感觉风格确实有一点变化;
- 更新机制变得和 Chrome 一样了,自带更新管理,打开 “关于Thunderbird” 就开始检查更新;
- 新增了 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):
- 打开旧的客户端:菜单 > 帮助 > 更多排障信息 > 配置文件夹,
拿到配置目录:~/.thunderbird/jum510ej.default
- 新版本客户端同样操作,
拿到配置目录:~/.thunderbird/ksml2udy.default-release-1
- 关闭两个客户端,如果像之前跨机器迁移的话,应该是删除新目录,把旧目录复制过来改成新目录名称。
但我这是一个电脑上,我直接删除新目录,然后创建软链就行了。# ~/.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
#592 煮鸡蛋(卤蛋/茶叶蛋)
美食 2021-08-10先把鸡蛋用清水煮熟,然后用钢勺子敲裂,加入佐料,继续煮两个小时。
- 茶叶,也不用太多
- 酱油: 生抽,几勺子(看着办)
- 酱油: 老抽,一点点
- 冰糖
- 八角
#591 访问控制
安全 权限管理 访问控制 2021-08-09关于访问控制,我们接触最多的是操作系统,我们在设计应用的权限系统时多少可以借鉴借鉴。
#590 OCSP 联机证书状态协议
TLS TLSCert X.509 2021-08-08证书使用者拿到证书之后会对其进行完整性校验,可信性校验,有效期校验,适用范围校验。可是其中少了一环:如果证书使用者出于什么原因主动注销证书,如何通知已经在使用该证书的人呢?
PKI (公开密钥基础建设) 有 CRL ((Certificate Revocation List 证书撤销列表) 和 OCSP (Online Certificate Status Protocol 联机证书状态协议) 两套机制。
#589 视频编码
视频 多媒体 2021-08-07压缩技术
- 1929:首次出现帧间压缩
- 1952:差分脉冲编码调制
- 1959:使用时间压缩的帧间预测编码
- 1967:行程长度编码
- 20世纪70年代:早期数字视频算法
- 1972:数字视频的首次压缩
- 1973:DCT技术成为一种图像压缩算法
- 1974:混合编码的发展过程
- 1975:混合编码的进一步发展
- 1977:更快的DCT算法
- 1979~1981:运动补偿DCT视频压缩
- 1984:首个数字视频压缩标准——H.120
- 1988:用H.261举行视频会议
- 1992:使用Motion JPEG(MJPEG)的PC多媒体应用
- 1993:使用MPEG-1的视频CD
- 1994:使用H.262和MPEG-2的电视广播和DVD
- 图像采样
- I帧,P帧和B帧
- 1995:使用DV存储数字视频
- 1996:使用 H.263 的新一代视频会议标准
- 1999:使用 MPEG-4 第二部分的互联网视频
- 2003:使用 H.264/MPEG-4 AVC 的蓝光、DVD、视频直播和广播电视
- 2013:使用 H.265/HEVC 的 360° 沉浸式视频、AR和VR
- 2013:谷歌 VP9 (H.265 的竞争对手)
- 2018:使用 AV1 的高质量网络视频
- 2020:使用 H.266/VVC 实现商业上可行的 4K、8K
- 我国拥有自主知识产权的第三代 “信源编码” 标准——AVS3
编码格式
或者说编解码技术,可能一种技术编码很复杂,但是解码简单。
- 国际电联的 H.261、H.263、H.264
- 运动静止图像专家组 (M-JPEG)
- ISO 运动图像专家组 (Moving Picture Experts Group, MPEG)
- Real-Networks
- RM (Real Media)
- RMVB, 相比较于 RM,支持非固定压缩比,在画面变化小时,更好的压缩文件。
- 微软公司
- WMV
- AVI(Audio Video Interleaved,音频视频交错)
- ASF(Advanced Streaming Format,高级流格式)
- 苹果公司
- QuickTime, MOV 格式
- 北大和国内企业共同推进的 AVS 系列标准
封装格式
- 元数据
- 视频数据
- 音频数据
- 字幕数据
- 可能还有一些版权保护方面的技术。
有一些标准既包括编码格式,也把包括封装格式,如 rm,rmvb,wmv
有一些封装格式可以容纳不同类型的数据,如 mkv
- 3GP(第三代合作伙伴项目):国际电信行业共同推出,MPEG-4 Part 14(MP4)简化版本,流媒体,常用于移动设备,支持自适应速率。过去很常见,似乎现在没见过了。
- flv(Flash Video): 采用 H.263 编码,相同质量的前提下,文件更小,资源消耗更少
- f4v: 采用 H.264 编码
参考资料与拓展阅读
#588 GitHub 上最热门的 PHP 项目
PHP 2021-08-06以 stars:>10000
为条件过滤,得到 51 个结果,进行简单的过滤,结果如下:
- 最火的框架:
- Laravel
- Symfony
- CodeIgniter
- Yii2
- Slim
- phalcon/cphalcon
特色:C语言写的 - PHP 包管理工具: Composer
- HTTP 客户端: Guzzle
- PHP 设计模式 DesignPatternsPHP
- 日志库: Seldaek/monolog
- 单元测试: sebastianbergmann/phpunit
- SMTP 库: PHPMailer
- 产品
- 文件存储: NextCloud
- CMS, WordPress
- WP 主题: roots/sage
- WP 主题: roots/sage
- CMS, getgrav/grav
- CMS, octobercms/october
- 论坛, flarum/flarum
- Personal CRM, Monica
- Musici Streaming Server: koel/koel
- 网站统计: matomo-org/matomo
- 时间处理: briannesbitt/Carbon
- PHP Parser: nikic/PHP-Parser
- Markdown: erusev/parsedown
- 错误处理: filp/whoops
- Status Page System: CachetHQ/Cachet
- 不再维护 phacility/phabricator
Phabricator is a collection of web applications for software development. - 图像处理: Intervention/image
- 存储封装层: thephpleague/flysystem
- 环境变量: vlucas/phpdotenv
Loads environment variables from.env
togetenv()
,$_ENV
and$_SERVER
automagically. - 不再维护 PHPOffice/PHPExcel
继任者: PHPOffice/PhpSpreadsheet - UUID: ramsey/uuid
- 字符串处理: doctrine/inflector
- 代码静态分析: phpstan/phpstan
- 代码格式化, FriendsOfPHP/PHP-CS-Fixer
- doctrine/lexer
- doctrine/annotations
- doctrine/instantiator
- egulias/EmailValidator
- JWT tymondesigns/jwt-auth
- blueimp/jQuery-File-Upload
- fzaninotto/Faker
#587
Python 源码学习 06: tuple
Python PythonSourceCode
2021-08-05
源码
INIT_TYPE(&PyTuple_Type, "tuple");
SETBUILTIN("tuple", &PyTuple_Type);
**cpython/Include/cpython/tupleobject.h
**
typedef struct {
PyObject_VAR_HEAD
/* ob_item contains space for 'ob_size' elements.
Items must normally not be NULL, except during construction when
the tuple is not yet visible outside the function that builds it. */
PyObject *ob_item[1];
} PyTupleObject;
当然,与之对应的 PyTypeObject PyTuple_Type
定义在 Objects/tupleobject.c
,就不贴出来了。
PyTuple_SET_ITEM
似乎是在完成内存初始化的空间内填充元素时使用的。
成员方法
tuple
类型只有两个成员方法:count
, index
#define TUPLE_INDEX_METHODDEF \
{"index", (PyCFunction)(void(*)(void))tuple_index, METH_FASTCALL, tuple_index__doc__},
#define TUPLE_COUNT_METHODDEF \
{"count", (PyCFunction)tuple_count, METH_O, tuple_count__doc__},
static PyMethodDef tuple_methods[] = {
TUPLE___GETNEWARGS___METHODDEF
TUPLE_INDEX_METHODDEF
TUPLE_COUNT_METHODDEF
{"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
{NULL, NULL} /* sentinel */
};
引用计数
Py_INCREF
Py_DECREF
Py_XINCREF
Py_XDECREF