摘要: 当C++系统依赖模块多了之后,构建系统本身的工程质量就成为了重要的瓶颈,这方面开源项目里做的最好的是Chromium项目。 全局视角 构建系统有很多东西,从全局视角来说,这是一个目录 理解 C/C++ 代码的基本编写 理解 C99 理解 C++ 11/14/17/20 标准 理解 C++ 现代多线程 阅读全文
posted @ 2023-08-24 14:42 ffl 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 0x00 最新博文 C++工程如何系列: 如何排查C++链接库之间链接顺序问题 如何解决库链接出现符号重定义问题 如何证明一个静态库没有使用 malloc 0x01 工具/技术 工具 工具(1): 极简Word排版示例(Example by Word2013) 工具(2): 极简MarkDown排版 阅读全文
posted @ 2019-04-02 13:14 ffl 阅读(1910) 评论(24) 推荐(2) 编辑
摘要: 本文主要展示Transfomer, Bert, GPT的神经网络结构之间的关系和差异。网络上有很多资料,但是把这个关系清晰展示清楚的不多。本文作为一个补充资料组织,同时利用chatGPT,让它使用Tensor flow Keras 来组装对应的迷你代码辅助理解。 从这个组装,可以直观的看到: Tra 阅读全文
posted @ 2024-07-11 14:07 ffl 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 很多技术,我们并不会动手去实现,有时候也不必要自己都动手实现。但是如果不对它有过一些「操作」,对这些名词的理解就会缺乏具体的感觉。通过对GPT的略微系统的提问,结合自己的经验,可以极大的扩展此类知识的理解和掌握。 Q: 数据库底层有哪些重要的数据结构? A: 数据库底层有以下几种重要的数据结构: B 阅读全文
posted @ 2024-07-11 14:01 ffl 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Pandas 的核心数据模型主要有两个:Series 和 DataFrame。 Series: Series 是一个一维的数据结构,可以理解为带有标签的一维数组。标签可以是数字或字符串。 每个 Series 对象包含两部分:数据 (values) 和索引 (index)。 示例:import pan 阅读全文
posted @ 2024-06-27 18:49 ffl 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 主成分分析(PCA)是一种用于降维的统计方法。以下是一个包含具体数据的PCA计算例子,包含每一个步骤。 数据集 假设我们有一个2D数据集,如下所示: X = [[2.5, 2.4], [0.5, 0.7], [2.2, 2.9], [1.9, 2.2], [3.1, 3.0], [2.3, 2.7] 阅读全文
posted @ 2024-06-18 21:30 ffl 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 要证明表面积相同时,正方体的体积比长方体的体积大,可以通过比较它们的体积公式来证明。以下是详细的证明过程: 设定变量: 设正方体的边长为 \(a\)。 设长方体的长、宽、高分别为 \(l\)、\(w\)、\(h\)。 表面积公式: 正方体的表面积 \(S_{\text{cube}} = 6a^2\) 阅读全文
posted @ 2024-06-16 21:47 ffl 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 下面的方式,把任意的局部代码包装在λ 函数里,就地调用,同时把λ 函数保存到全局表,在外部访问。 #include <iostream> #include <vector> #include <functional> #include <map> #include <any> // 全局的 map, 阅读全文
posted @ 2024-05-30 20:35 ffl 阅读(8) 评论(0) 推荐(0) 编辑
摘要: // 下面是GPT的回答,实际上并不靠谱,gcov生成的多个branch信息,但是它并没有给出足够的信息表明这些branches如何判断是否进入了if 理解 branch Q: 这里的fallthough 是什么意思 600000: 116: if (lu_dis >= 0 && ru_dis > 阅读全文
posted @ 2024-05-25 01:43 ffl 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 应用程序里可以任意写SQL语句,到了数据库这层,所有的SQL语句都被做了编排。 在应用层可以同步、异步的投递SQL语句:s1, s2,s3,...。混在意大利面条一样的代码里,看不到谁先执行谁后执行。 在数据库层,这些语句会被编排。编排后,实际的执行时序可能是 s2,25,s1,s3,s4... 那 阅读全文
posted @ 2024-05-24 23:04 ffl 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 假设有要处理的数据 A1 A2 A3 ... 你想要设计一个功能 F,这个F应该处理数据 Ai,那么你需要编写程序P=F,是的: O1 = F(A1) O2 = F(A2) O3 = F(A3) ... 如果写了个F,一次就解决了,那就万事大吉了。 如果不行,你会发现: 处理A1,需要上下文 C1 阅读全文
posted @ 2024-05-21 02:11 ffl 阅读(20) 评论(0) 推荐(0) 编辑
摘要: “malloc.c: No such file or directory.” 参考:https://www.cnblogs.com/gatsby123/p/11755320.html 安装依赖 sudo apt-get install libc6-dbg sudo apt-get source li 阅读全文
posted @ 2024-05-06 21:16 ffl 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 无论系统怎么组织,只要发生如下问题,工程上就会非常费劲: 一个叶子结点的模块,在不同的系统集成里集成叶子结点模块的不同分支,这些分支之间代码差异很大。 单模块的分支管理 git解决了单项目的分支管理问题。但是这只是一个模块的分支管理。 一个模块内的版本可以是: main dev somebody/d 阅读全文
posted @ 2024-04-30 01:14 ffl 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 最好用的C++圈复杂度分析工具:pip install lizard,没想到它解析C++的函数块超级快,可以用来作为建立进一步的代码片分析的基础,完胜其他所有工具。 我花了1天多将一个C++模块测试覆盖率做到100%,对于代码如何才具有良好可测试性有了直观的经验,从测试的角度看代码的设计是否简洁是一 阅读全文
posted @ 2024-03-30 15:49 ffl 阅读(116) 评论(0) 推荐(0) 编辑
摘要: CodeReview发生在软件工具链的每一层,例如这里有对 GCC 生成的代码(汇编)的CodeReview: https://skanthak.hier-im-netz.de/gcc.html GCC 14对静态代码分析的改进:https://developers.redhat.com/artic 阅读全文
posted @ 2024-03-27 14:42 ffl 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 重装 nvidia-docker2 apt-get remove docker docker-engine docker.io containerd runc apt-get install apt-transport-https ca-certificates curl gnupg-agent s 阅读全文
posted @ 2024-03-27 14:26 ffl 阅读(14) 评论(0) 推荐(0) 编辑
摘要: NodeJS: async/awiat: https://github.com/fanfeilong/jsasync Python: asyncio支持 async/await: https://realpython.com/async-io-python/ Rust: async/await: h 阅读全文
posted @ 2024-03-25 14:57 ffl 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 静态变量在编译时和运行时初始化的顺序问题:https://www.modernescpp.com/index.php/c-20-static-initialization-order-fiasco/ C风格代码:https://github.com/mcinglis/c-style Unreal的C 阅读全文
posted @ 2024-03-21 13:00 ffl 阅读(11) 评论(0) 推荐(0) 编辑
摘要: Python 库精选 基础库 os, sys, shuitl, subprocess json, pyyaml 机器学习 numpy, pandas, matplotlib numpy basic:https://wesmckinney.com/book/data-cleaning tensorfl 阅读全文
posted @ 2024-02-28 17:08 ffl 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 大模型(LLM)需要大量的算力,从而导致大部分人没办法像旧时代一样轻易的参与AI时代的编程。网上也有很多从零开始写GPT的例子,我们也可以这么做。对于数据和算力的需求,可以通过把目标定的比较小的方式来实现。 先开个头,随时更新。 // 可以从这里开始:https://github.com/karpa 阅读全文
posted @ 2024-02-21 10:40 ffl 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 以GCC9.2为例,下面是一个完整的下载源代码,编译,安装,配置的过程 cd /usr/local/src wget ftp://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.xz xz -d gcc-9.2.0.tar.xz tar -xf gcc-9.2 阅读全文
posted @ 2024-02-06 22:23 ffl 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 一个容器,进入容器的时候是否开启gpu,会导致 curl 的行为不一致。具体表现为 容器开启 --gpus all 后进入容器,执行 curl 会出现“curl: symbol lookup error: curl: undefined symbol: curl_mime_free” 错误 诊断中, 阅读全文
posted @ 2024-02-06 20:44 ffl 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 如何安全的在一个已有的git分支上,自动化的切换到另外一个分支指定commit?下面是一种干净的安全的可以自动化的做法: 清理本地脏数据 git checkout . git clean -df . 将 commit 重置到 HEAD git reset --hard HEAD 重置子git模块 g 阅读全文
posted @ 2024-01-30 22:52 ffl 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 这几天写了一些有趣的代码: 规格设计 把git当作 json 数据库。做法是这样的: 创建一个git仓库 为每个最小粒度的数据创建一个独立的json文件({table}.json) 客户端通过 Python写git操作代码,实现几个数据库操作接口。 数据库操作接口最小集: 初始化:把git仓库拉下来 阅读全文
posted @ 2024-01-30 12:39 ffl 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 编写干净清晰的Python代码的一种通用设计 在 python 和 shell 之间选择 如果有Python环境,应该大部分时候都选择使用 Python 来编写系统。这是因为: Python 更易于维护,适合模块化设计(class, 多文件 import,层次文件夹支持,成熟的库依赖) Shell 阅读全文
posted @ 2024-01-29 00:45 ffl 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 构架 在代码编写和工程设计中,构架的好坏往往决定着模块代码编写和系统构建的不变性和灵活性。构架的好坏往往在根本层面上导致了实际开发中的效率和反碎片化问题。好的构架思维经常是会丢失的,被反复重新发现的。因此我们有必要不断收集好的构架设计,从中归纳不变的部分。 构架的图示 图片来自:https://ia 阅读全文
posted @ 2023-12-24 00:45 ffl 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 工程中的“面向对象”编程 在工程处理中,工程师很容易写出碎片的脚本代码,例如处理服务器上的脚本: 假设了一些存在的环境变量、目录结构、配置和数据 脚本基于这些假设开始做一堆中间处理,并最终得到一些输出数据。 即使有了docker,有了k8s,无论是在docker外,还是docker内,还是会有很多这 阅读全文
posted @ 2023-11-21 18:03 ffl 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 实用"函数式"编程范式 通常说函数式编程,可能就会提到 map / reduce, 或者函数编程语言,例如 lisp, Haskell 等。 我以前读过一篇文章,具体链接找不到了,作者的观点是函数式编程具体体现在通过函数编程可以直观得看到逻辑调用链条之间的关系。 例如下面这段代码: p = a( b 阅读全文
posted @ 2023-11-19 19:37 ffl 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 软件开发,基本的过程是三部分: 工具,流程,和人。开发中,每个角色需要关注两个方向的问题,一个是向下的问题拆解(How),另一个是向上的问题定义(What)。这两部分又都分别和另外一个绑定在一起: Why,为什么问题这样解决,为什么问题是这个。常常,解决How耗费了工程师大量的精力,因为向下解决问题 阅读全文
posted @ 2023-11-04 09:26 ffl 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 软件都有分层,C/C++代码的覆盖率工具亦如此。我们从测试覆盖率工具的分层,来理解工程上十分普遍分层概念,而在工具链上,这点又常常容易被忽视。 一个简单的例子,C/C++的基本测试覆盖率介绍 源代码main.cpp: #include <stdio.h> void test_1(){ int arr 阅读全文
posted @ 2023-10-27 04:42 ffl 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 最近总想,算法好像没有数学那样直观,例如方程可以解决一大类问题,我们遇到许多数学问题,只要将其转成方程问题,剩下的就是解方程。算法好像不是那么直观,顺着这个思路开始重新看算法问题。今天有一个收获,也可能其他人早就知道。 int max=INT_MIN; for(size_t i=0;i<v.size 阅读全文
posted @ 2023-10-20 00:35 ffl 阅读(38) 评论(0) 推荐(0) 编辑
摘要: by @幻灰龙 && GPT3.5 PDF下载:学习Linux基础的一种思维链条.pdf 介绍Linux 的目录结构 Linux的目录结构采用了树形结构,主要包括以下核心目录: /(根目录):整个文件系统的起点,包含所有其他目录和文件。 /bin:二进制可执行文件,包括一些基本的系统命令,如ls、c 阅读全文
posted @ 2023-10-15 14:45 ffl 阅读(200) 评论(0) 推荐(0) 编辑
摘要: <stdint.h>是C99的标准,在里面定义了8,16,32,64位的有符号和无符号整数类型定义。 分别是: int8_t, int16_t, int32_t, int64_t; uint8_t, uint16_t, uint32_t, uint64_t; 那么,这些类型具体是什么呢?让我们一起追 阅读全文
posted @ 2023-10-13 22:36 ffl 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 引子 昨天为了教大一的小朋友入门C++,又去折腾了下windows的环境。 windows上的开发环境,从老的到新的 DevCpp (CCF出的一套针对初中生的编程入门书还在用这个,作为上手简化先把代码写起来的角度也能接受) VisualC++6.0 (学校教学居然还在用这个) VisualStud 阅读全文
posted @ 2023-10-05 12:12 ffl 阅读(237) 评论(0) 推荐(0) 编辑
摘要: GCC 动态链接库链接查找 https://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html It looks in the DT_RPATH section of the executable, unless there i 阅读全文
posted @ 2023-09-22 23:32 ffl 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 下面是一组和GPT的对话,通过逐个排查,我们知道只有一种情况会导致符号重定义。以下假设在 CMake 配置环境。 Q:如果一个静态库a,链接了b,这个时候 c 链接了 a 和 b ,会导致 b 符号重复定义么? A: 任何库(静态或动态)本身都不链接其他库。他们可能有对其他库的依赖性,但实际上并不包 阅读全文
posted @ 2023-09-21 13:17 ffl 阅读(728) 评论(0) 推荐(0) 编辑
摘要: 今天我还做了另外一个有趣的事情: 有一个客户要求我们提供的一个 libxxx.a 文件不能使用 malloc 动态分配内存。研发排查了下代码都没有用到 malloc。 但是客户说他们还是可以看到 malloc 符号,但是他们把malloc的实现hook成空的也能跑。所以他们相信我们应该没有调用mal 阅读全文
posted @ 2023-09-21 00:36 ffl 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 今天浪费了8个小时排查了一个 C++ 库编译后依赖的cuda符号找不到的问题。后面在凑巧的情况下在 链接库的地方加了一个可能会用到的库,结果就通过了。但是凑巧肯定是有更深刻的原因,再反复验证,实际上是这样的: link(A) link(B) link(mm) 我加的 mm 库后链接就通过了。但是 m 阅读全文
posted @ 2023-09-21 00:13 ffl 阅读(83) 评论(0) 推荐(0) 编辑
摘要: https://abuseofnotation.github.io/category-theory-illustrated/01_set/ 阅读全文
posted @ 2023-09-14 11:10 ffl 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 这些博客仍然非常值得读,虽然再也不会更新了: Vamei: https://www.cnblogs.com/vamei/ 一个程序员被骗去养猪 左耳朵耗子:https://www.coolshell.cn/ 我做系统架构的一些原则 程序员技术练级攻略 阅读全文
posted @ 2023-09-13 13:29 ffl 阅读(40) 评论(0) 推荐(0) 编辑
摘要: CMAKE 强制忽略警告 将目录当作系统目录,可以忽略目录下头文件产生的警告,在某些情况下有用 include_directories(SYSTEM "xxx/include") CMAKE 配置 protobuf Q: protobuf_generate_cpp 是 CMake 的内置函数么? A 阅读全文
posted @ 2023-09-08 18:30 ffl 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 在编写 Python 程序的时候,很容易直接调用 system, subprocess.Popen, subprocess.run, subprocess.call, subprocess.check_call, subprocess.check_output 等方法执行命令。但是如果一个系统里充满 阅读全文
posted @ 2023-09-07 02:44 ffl 阅读(66) 评论(0) 推荐(0) 编辑