简介

本文介绍基于docker和projector搭建一套c++的开发环境,提升研发效率问题。大多数c++服务是运行在linux平台的,代码也只能在linux上编译,但大部分开发者使用的是macbook或者thinkpad,很少用linux开发。开发环境、编译运行环境两边代码同步影响研发效率。
隔壁的vscode通过remote插件,支持远程开发模式,一定程度上提升了研发效率。
年初Jetbrains开源的projector_install项目,旨在让IDE运行在服务端,然后本地通过网络与其交互。
本文将介绍这个环境的搭建。

环境搭建

阅读全文 »

简介

bazel是google开源的构建系统,支持多种语言、支持云端构建等功能。

bazel与cmake、autoconf不太一样,bazel进行构建时会启动一个服务,然后bazel命令与这个服务进行交互发送指令,这个服务实际进行编译任务。同时bazel提供了一套远程构建、缓存的接口,实现这套接口就可以制定自己的远程构建系统了。

阅读全文 »

autoFDO调研

背景

传统 FDO(Feedback-Directed Optimization)需要两步编译:先插桩编译出 instrumented 二进制,用它跑 workload 生成 profile,再基于 profile 重新编译。插桩版本运行开销大,且需要维护两套二进制。

阅读全文 »

简介

boost.asio是boost中的一个基于事件的网络库。本文将介绍asio的多线程模型。
asio有两种支持多线程的方案:方案一,开启一个线程池,每个线程独占一个io_context,并在各自的线程中运行io_context的run方法;方案二,开启一个线程池,并创建一个全局的io_context,在每个线程中调用io_context的run方法。
备注:新版本的asio使用io_context代替io_servvice。

多io_context方案

阅读全文 »

简介

v8js是一个特殊的php拓展, 其作用是将v8嵌入到php中, 使得用户可以在php中运行js代码. 同时, 经过作者的努力, 运行在php中的js可以无缝访问并php中的数据结构, 调用php內建的函数, 从而实现”1 + 1 > 2”的目标. 本文将跟随作者的, 领略v8js的风采.

功能介绍

阅读全文 »

简介

“node-addon-api”是nodejs的”n-api”接口的c++封装, 通过提供c++对象模型和异常异常处理方式, 简化nodejs开发的成本.

“n-api”是nodejs为原生拓展提供的c语言风格ABI, 它独立于js运行环境, 旨在屏蔽js运行环境的差异, 让拓展能够运行在不同版本的nodejs下.

阅读全文 »