boost asio executor

boost::asio "Executors and Asynchronous Operations" — https://chriskohlhoff.github.io/executors/ →Read more

向曾国藩学习

向曾国藩学习 早起 自省 读书写笔记 曾国藩语录 1.凡人做一事,便须全副精神注在此一事,首尾不懈,不可见异思迁,做这样,想那样,坐这山,望那山。人而无恒,终身一无所成。 2.人该省事,不该怕事。人该脱俗,不可矫俗。不该顺时,不可趋时。 3.天可补,海可填,南山可移。日月既往,不可复追。 4.天下古今之庸人,皆以一惰字致败;天下古今之人才,皆以一傲字致败。 5.用功不求太猛,但求有恒。 6.既往不恋,当下不杂,未来不迎。 7.多躁者必无沉毅之识,多畏者必无卓越之见,多欲者必无慷慨之节,多言者必无质实之心,多勇者必无文学之雅。 8.士人读书,第一要有志,第二要有识,第三要有恒。有志,则断不甘为下流。有识,则知学问无尽,不敢以一得自足;如河伯之观海,如井蛙之窥天,皆无见识也。有恒,则断无不成之事。此三者缺一不可。 9.一个喜欢读书的人,品格不会坏到哪去;一个品格好的人,一生的运气不会差到哪去。 10.与多疑人共事,事必不成。与好利人共事,己必受累。 11.行事不可任心,说话不可任口。 12.轻财足以聚人,侓己足以服人,量宽足以得人,身先足以率人。 13.观人四法:讲信用、无官气、有条理、少大话。 14.坚其志,苦其心,劳其力,事无大小,必有所成。 15.少年经不得顺境,中年经不得闲境,晚年经不得逆境。 →Read more

SRS with WebRTC

1. RTMP to WebRTC Start SRS with configuration – rtpm2rtc.conf CANDIDATE="192.168.1.10" docker run –rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \ –env CANDIDATE=$CANDIDATE -p 8000:8000/udp \ registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/rtmp2rtc.conf use ffmpeg to push stream docker run –rm -it registry.cn-hangzhou.aliyuncs.com/ossrs/srs:encoder ffmpeg -stream_loop -1 -re -i doc/source.flv \ -c copy -f flv rtmp://host.docker.internal/live/livestream 2. WebRTC […] →Read more

Poco project

Overview The POCO C++ Libraries are a collection of open source C++ class libraries that simplify and accelerate the development of network-centric, portable applications in C++. The libraries integrate perfectly with the C++ Standard Library and fill many of the functional gaps left open by it. Their modular and efficient design and implementation makes the […] →Read more

build pipeline

提交代码到开发分支: 在本地构建并通过单元测试之后,可以将代码提交到代码仓库的开发分支中。 自动构建: 包括编译、链接、打包,在一些大型项目中,这个过程往往需要几十分钟以上。 自动代码检查: 各种语言都有各自的代码静态检查工具,例如C++ 的 CppCheck、CppLint,Java的CheckStyle、PMD、FindBug,Python 的Pylint、Pyflakes、Pycodestyle 等。如果检查出严重的错误,并立即终止构建流水线,检查结果会生成检查报告。 自动执行单元测试: 确保这次提交不会造成其他模块的单元测试失败,任何一条单元测试不通过,也会终止构建流水线,我们也会在这个阶段执行一个不依赖于外部环境的API 测试. 测试的结果会生成测试报告。 自动生成文档: 利用 Doxygen、Javadoc、Sphinx 之类的自动文档生成工具, 分析代码并生成 API 和帮助文档。 自动部署在测试环境: 利用Puppet、Ansible 之类的部署脚本将软件包部署到测试环境,注入预设的配置变量并启动服务。 自动执行功能测试: 在测试环境中,自动运行所有需要依赖外部环境的 API 和 E2E(端到端)的测试,如果有一条测试不通过,也会终止构建流水线,自动测试的结果会生成报告。 将代码合并入主分支: 这个点可以设置一个批准环节,由产品负责人决定是否立即合并到主分支,如果改动太大,自动化测试覆盖率不够,开发人员信心不足的话,可以暂时不并入主分支,在开发分支添加更多测试。 自动运行性能测试: 性能测试分为基准性能指标测试和压力测试,各种压测参数需要事先设定,性能测试会生成性能测试和剖析报告,包括吞吐量(TPS)、最耗时模块和函数,以及对系统资源消耗的各种指标。 探索性测试: 指望自动化测试把一切潜在问题找出来往往是不现实的,手工进行一些探索性测试在发布在产线之前是必不可少的。 自动部署到产品环境上: 这个环节当然也是需要产品负责人批准的,由产品负责人根据测试报告来决定何时部署到产线上 →Read more

信息保护的八个设计原则

Protecting Against Insider Attacks — Jereome Saltzer, Michael Schroeder 最小权限 一个实体应该只拥有执行授权操作所需的权限集合,而不是更多。 权限可以根据需要进行添加,而当不再使用时就应当被撤销。 故障安全默认值 强调了默认状态下保证系统安全的重要性,用户对任何资源的默认访问级别都应该是“拒绝访问”,除非系统明确赋予用户“允许访问”的权限。 结构精简 完全控制 开放设计 权限隔离 最少共有原则 心理承载力 →Read more

WebRTC 安全之道

概述 WebRTC 的安全需要满足三个基本需求 Authentication 用户访问需要认证 Authorization 用户访问需要授权 Audit 用户的访问应该可被追踪和审查 其中前两项也可以归结为 CIA Confidentiality 机密性:信息需要保密, 访问权限也需要控制 Integrity 完整性:信息需要保持完整,在存储和传输过程不被未授权,未预期或无意地篡改或销毁,或者可以快速检测到被篡改 Availablity 可用性: 信息可被合法用户访问并向其提供所需的功能和特性,例如拒绝服务攻击就是对可用性的破坏 WebRTC 的安全在 "RFC8826 Security Considerations for WebRTC" 有较为详细的阐述。 以一个简单的 WebRTC 应用为例, 我们需要考虑浏览器在客户端的安全及隐私,通信和传输的安全 +—————-+ | | | Web Server | | | +—————-+ ^ ^ / \ HTTPS / \ HTTPS or / \ or WebSockets / […] →Read more

何以解忧,唯有编程

何以解忧, 唯有编程 让程序在手指尖跳动, 让程序在电脑上奔跑 管它这个需求,管它那个规定, 在这一方天地里, 我写,我运行,我快乐 →Read more

openssl adapter in WebRTC

Overview DTLS Flow Client Server —— —— ClientHello ——–> Flight 1 <——- HelloVerifyRequest Flight 2 ClientHello ——–> Flight 3 ServerHello \ Certificate* \ ServerKeyExchange* Flight 4 CertificateRequest* / <——– ServerHelloDone / Certificate* \ ClientKeyExchange \ CertificateVerify* Flight 5 [ChangeCipherSpec] / Finished ——–> / [ChangeCipherSpec] \ Flight 6 <——– Finished / TLS with session ticket Client […] →Read more