之前在星球说过要带大家实战一个C 项目,想了好久,最终决定做一个埋点相关的客户端SDK。
我看过很多校招生C 简历中的项目经验,几乎清一色的Web Server,但其实现在C 在后端领域岗位相对比较少,貌似只有量化领域和某些游戏公司在使用C 做后端。
如果大家想做后端方向的话,我建议去学习Go或者Java,可能会比C 更适合一些。
C 现在主要应用在嵌入式领域、人工智能工业化、游戏等方向,很多移动端应用底层为了跨平台,也会使用C ,比如编解码能力、音视频能力、人脸识别能力等,都是使用C 开发,然后编译出可以在多平台运行的SDK,给业务方程序员使用。
很多企业也会用QT C 做桌面端应用,这种岗位需要了解QT的相关API使用,甚至是原理,但想做合格的桌面端程序,还是要深入学习C 才行。
所以,虽然很多人在唱衰客户端,但唱衰的很多都是客户端开发页面的程序员,因为现在比较流行大前端,页面很多可以用Flutter等跨平台相关的组件或前端语言开发,不太能唱衰的到C 。
而且在大企业中,相关的程序性能至关重要,想要高性能,几乎都要用到C 或C,当然,Rust也行,但现在Rust在国内岗位相当少,盲目走Rust方向风险比较高。
任何一款客户端应用在线上运行,我们需要监控它的在线状态,比如日活、是否有崩溃、崩溃率、某些模块运行过程中是否出现异常、用户频繁使用哪些功能等等。
这些都需要团队内部的成员可以感知到,拿到这些数据,方便产品运营人员修正迭代产品功能,方便开发人员排查线上问题等。
所以一般客户端应用都需要做很多埋点,把客户端应用运行过程中的相关数据传回到团队内部。当然,上面的某些能力可以当做一个特定产品需求开发,不需要走埋点。
不过在线上,场景非常复杂,比如用户的使用方式、用户的操作系统、硬件等都千差万别,程序不会绝对稳定,代码中的异常位置通常不确定,所以需要开发人员在代码中做很多埋点,出现问题可以及时反馈回团队内部,团队做数据追踪和分析,进而快速修复问题。
所以,这里其实就可以成立一个小组,产品主要有埋点客户端SDK 网站 后端,客户端SDK可以给公司内的多个APP业务部门去集成,然后埋点数据上报到后台,各个业务部门可以在管理端查看搜索相关埋点,再提供聚类和分析能力,就更完美了。
不过这个项目中,我们只会做客户端SDK,后端我会做一个模拟的mock server,只负责接收数据和返回固定body。
因为大多数同学都使用Windows电脑,所以咱做的是Windows SDK,但因为使用的是C 语言,其实可以跨平台到Linux、MacOS、Android、iOS等,只需要把Windows平台相关特性的代码去掉,并且改动Cmake配置即可。
整个埋点SDK功能不多,代码量不大,但麻雀虽小五脏俱全,整个项目会涉及到很多C 相关的知识点:
C、C
C 新特性
线程池
定时器
Windows 注册表操作
数据库操作
文件系统相关操作
时间相关操作
日志系统
Json
加解密
HTTP、HTTPS网络请求
网络通信协议的设计
一个大型项目涉及到的技术点,咱这个项目应该多数都会用到。对于学习进阶C 、提升项目经验,我认为还是很有帮助的。
暂无评论