Archive


Category: Uncategorized

  • 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 […]

  • build pipeline

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

  • 信息保护的八个设计原则

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

  • WebRTC 安全之道

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

  • 何以解忧,唯有编程

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

  • 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 […]

  • RFC5077 TLS Session Resumption without Server-Side State

    概述 这篇 RFC 废弃了 "RFC4507: Transport Layer Security (TLS) Session Resumption without Server-Side State" 主要描述了在不需要维护服务器状态的情况下如何重启一个 TLS Session 状态总归是要有的, 比如加密套件, 加密的主密钥, 它们都保存在一个由服务器知道的密钥加密过的一个 ticket 里 it stores its session state (such as ciphersuite and master secret) to a ticket that is encrypted and integrity-protected by a key known only to the server. The ticket is distributed to […]

  • 失业意味着什么

    现在经济环境糟糕, 政治环境不可说,看不到未来的希望,公司刚刚经历大裁员,失业的老同事找工作很难, 年龄越大,机会越少。 失业对我意味着什么呢? 没有收入, 没有施展平生所学的舞台,失去自信,尊严受到了打击。 可是我还是我, 我自己没做错什么, 没有必要惩罚自己,反而要相信自己天生我材必有用, 千金散尽还复来。 中国的互联网界很奇怪, 程序员35岁似乎就感觉岁数太大了,不适合在这行工作了, 而我已经年过四十,年近半百,在大多数互联网公司, 这么大岁数的程序员差不多绝迹了。现在即使顶个 Tech Leader 的 title, 做的还是一线设计和编程,我也乐此不疲,虽然也常常给难搞的 bug 折磨。 如何未来有一天我失业了, 我不知道该去做什么, 写书,翻译,或者去家小公司打工,或者去跑外卖, 我不知道,我只知道自己不可能在家歇着啥事不干,这既不是我的作风, 也不符合我们家的家风,母亲曾经在工厂发不出工资的窘况下,一边独自抚养我们兄弟, 一边兼职做各种小生意,卖过水果,矿泉水,报纸等等。 我是我妈的儿子,我也是打不垮的小强,我能在这浊世自处,为家人撑起一片天。 只是当下的时光里, 我需要做点什么未雨绸缪的事情呢?

  • 韭菜的自白

    自从卖了旧房子,买了处新房子, 我感觉自己就象一棵韭菜, 任由中介,开发商,装修公司尽情收割。 我则彻底躺平, 任由别人收割, 并不知道如何保护自己, 程序员的世界中,一是一,二是二, 黑是黑, 白是白,哪里知道人世间的尔虞我诈, 相互算计,只觉得厌烦, 大的方向不要欺瞒过分,超越底线, 让他们赚该赚的钱,我自己省点心去学点新知识,读个新学位,或者写本新书