Shi Hai's Blog

随遇而安

gcc编译相关内容汇总

自己不懂的、容易忘记的都持续记录一下。

gcc -c 和 gcc -s -c:编译或者汇编,但是不链接,此编译产物一般用于构建静态文件。 -S:仅编译,不会汇编或者链接。 pthread/lpthread 在05年前,有各类不兼容的pthreads API实现,所以必须用lpthread来指定,但现在的操作系统就没有这个问题就可以使用pthread。 Xlinker 编译需要链接动/静态文件则需要此参数,等价于Wl。一个是-...

python print执行过程剖析

python print()函数在cpython内部的执行过程简单剖析梳理。

print()主要流程剖析 实际这个测试文件test.py就一行代码:print('Hello World!')。 print('Hello World!') 相关的字节码为: 1 0 LOAD_NAME 0 (print) 2 LOAD_CONST 0 ('Hello Worl...

bpo-37224 python子编译器资源竞争问题

cpython MR门禁中偶现的一个失败用例问题修复过程记录

问题背景介绍 这个问题是cpython项目门禁中发现的一个问题,具体的表现就是子编译器相关的两个用例(test_still_running, test_already_running,用例代码详情)会高概率出现失败,尤其是并行测试数量多于300时,基本在10小时内就能再次捕捉到相关错误。问题单详情 此问题可以用./python -m test test__xxsubinterpreters...

git repo的由来

工作中用到了git repo理念,考古一下相关历史迭代过程(此博客不介绍内部代码逻辑)。 背景介绍 aosp(android)开发涉及到数百个代码仓,为了降低数百个仓库的管理成本,Shawn Pearce在2008年开发了git repo工具(需要和gerrit配套使用)。但开发aosp是不是一定要掌握git repo? 答案为:不一定,可以根据developer的情况按需使用。 备注:代...

cpython编译过程分析

编译及执行的主要流程 decode过程分析 cpython在编译源码过程会先判断source code使用的编码方案,因为不同的编码方式意味着不同的解码过程。 我这里用一个demo来演示一下python是如何来判断编码方案。 # 我有一个fab算法文件存放于 /home/shihai/test_fab.py中,具体内容如下所示: def fab(max): n, a, b = 0,...

DevOps软件工程师行动指南

《DevOps软件工程师行动指南》里面的好理念。 第一章 DevOps是什么 1.DevOps是一套实践方法,在保证高质量的前提下缩短系统变更从提交到部署至生产环境的时间。 2.保证质量的手段主要有:部署前的测试验证,部分线上流量的灰度验证及运维监控。 3.DevOps是目标为导向的,需要关注实践的目标、所需的时间及质量。

How Google Tests Software

《How Google Tests Software》 Points 测试方法不当会扼杀一个本来有机会成功的商品或公司,至少拖慢这个产品的速度; 工程生产力(Engineering Productivity)团队:更加关注生产力,而不是测试和质量。测试和质量是开发过程里每个人都要承担的工作。这意味着开发人员负责测试,开发人员负责质量。生产力团队负责帮助开发团队搞定这两项任务(横跨开发和测...

深入敏捷测试相关摘要

好观点记录一下 比较赞的观点 1.从找bug到开发效率的提升; 2.从长远看,不充分的自动化回归测试覆盖和缺乏探索式测试之类的根本活动将降低团队的效率;

ABTest及Ngnix实现

ABTest及相关实践 ABTest基础理念 A/B测试(也称为分割测试或桶测试)是比较网页或应用程序的两个版本以确定哪一个更好地执行的方法。 Ngnix安装 在两台机器上(我的两台机器地址为:114.115.162.219、114.115.162.141)安装nginx,具体的操作如下所示: # 通过rpm安装nginx rpm -ivh http://nginx.org/package...

smokeping代码走读

smokeping架构设计(第一次小结) 背景介绍 基础安装 核心代码   base类和basefork类是smokeping的基类,所有探针(probe)扩展都需要从这两个继承这两个类,其中fping、echoping等系统工具在smokeping中一个独立的探针(probe),如下图probe所示。basefork与base类相比的差异点在于basefork支持多进程的并发性。在当前的...