weekly of 20180805

wiki:p_np_npc_problem

工具技巧

  • Detecting the use of “curl | bash” server side : 直接执行curl | bash的命令是存在比较大的安全风险的,因为可能执行一些未经确认的恶意代码; 那有没有办法可以去构造这种攻击吗?也就是对于普通的浏览器访问或者命令行下面直接的 curl 输出,我们返回正常的内容,但是如果是执行了curl | bash我们就返回还有恶意代码的内容呢?作者的回答是肯定的,其主要的思路是在返回内部的时候,初步先通过 chunk 机制返回带有sleep 5之类的能够检测时间/bash 的监测代码,在通过在服务端对于响应时间进行判断,就能知道我们输出的内容是否运行在 bash 环境下面(会不会感觉其实和检测一个代码是否跑在一个 JS 环境下面一样?);当然实现上面还有不少细节,比如说对于发送/接受/pipe 的 buffer 等控制和填充~

系统设计

  • Modern SAT solvers: fast, neat and underused (part 1 of N) — The Coding Nest : 本文的SAT是指Boolean satisfiability problem, 其实也就是个NP完全问题(NP-complete)。虽然是NP 问题,但是也有不少的 Lib 库存在,用于去解决这方面的问题,比如说文章提到的Minisat,DIMACS等; 从计算复杂性的理论,我们知道NPC 的问题是可以相互规约的,利用这个规则和现有的 Lib,我们可以认为,对于现实中存在的真正的 NP 问题,只要建立好正确对应的数学模型,将其规约到一个 NPC 问题,就能用这些基础库解决此类问题了。本文作者举了一个具体数独问题的例子,并演绎如何将其规约到基础的 NPC 问题,最终求解这类问题。对于,我们可以对计算复杂性的理论有进一步的了解和认识,也可以将其应用到其他的问题解决领域。先 mark 下,周末手动测试这些代码。如下的几个相关的参考资料,有助于了解整体文章:

  • Kafka 2.0重磅发布,新特性独家解读 : Kafka顺应了现在这个时代对于数据的规模化和流式化处理的需求,本身是发展也是非常迅猛;Maybe 可以其作为自己第二个侧重投入的重点工具链

  • How we scaled nginx and saved the world 54 years every day : 本文介绍了CloudFlare在 Nginx 部署和运维上面的一些先进经验,不少都是 Nginx 的性能深入优化点,比如SO_REUSEPORT, read thread pool, 算是真正有在规模化应用这些特性的大团队,经验等值得参考和采纳

  • 小米DevOps团队针对容器的Nginx优化 : 主要谈到容器化的时候,通过worker_processes auto的指令,并不能很好的控制 nginx 的进程数,基于此,可以通过旁路的脚本或者程序的升级来支持读取争取分配给他的CPU 线程数。其实,个人感觉,CPU 的限制是软限制,通过控制进程数并不合理,但是其深入分析问题的思路和精神值得佩服~

专题topic

本周主要关注P2P下载相关的技术

其他