KISS - Keep It Simple and Stupid
我们在项目中,会碰到各种 build-system。其实很多时候,build-system is overkill。与其花时间在学习各种 build-system 上,不如熟悉好编译器参数,写个最简单的 .bat/Makefile 就可以搞定了。
看看 build-system bigbang!
C/C++
Java
Others
fastbuild 是给超大型 C++ 项目(几百万行 C++ 代码)的项目用来做并行编译的。
pantsbuild 是给超大型混搭语言的项目用的。
工作中我主要用 C/C++/Python,对于 build-system,有一套固定的组合。
- CMake,大型 C++ 项目
- Makefile/emake,中小型 C/C++ 项目
有段时间 fmod 有个 bug,需要改改源码,build 一个新版 .lib 出来。但 fmod 自带的 vc 工程已经很老了。想 build 出来,要得做升级,改配置。
我又想是不是用 cmake 改造一下 fmod 的工程,方便以后适配新的 vc 版本。失败了:
- fmod 有一些汇编代码,需要 nasm 编译。cmake 编译汇编有点麻烦
- 对 cmake 不熟,折腾了半天
当时正好在看 handmadehero,作者 第一章 就推荐不要用 build-system。自己写 .bat 即可。灵感突来,最后改用 .bat,花了十几分钟,搞定。
@echo off
set Fmod4Dir=..\..\fmod4
set CompilerFlags=/nologo /Od /MTd /Zi /c
set CompilerFlags=/DDEBUG /D_DEBUG /DWIN32 %CompilerFlags%
set CompilerFlags=/I%Fmod4Dir%\src %CompilerFlags%
set LibFlags=/NOLOGO /OUT:"..\fmod_event.lib"
IF NOT EXIST ..\build\fmod_event mkdir ..\build\fmod_event
pushd ..\build\fmod_event
:: compile files
cl %CompilerFlags% %Fmod4Dir%\tools\fmod_event\src\fmod_buckethash.cpp
set ObjFiles=fmod_buckethash.obj
:: ...
:: make .lib
lib %LibFlags% %ObjFiles%
popd
寻找最合适的方式去解决问题,不要在外围事情上花费太多时间。
之前的 blog 在 163 上。最近要关闭了。
准备把 blog 搬家到 github,一直在研究 static site generator。却没选到足够简单的。
我不过是要一个 blog,搞这么多 generator 干啥。需求:
- 用来写自己的学习心得 (markdown is good enough)
- 能有网页,方便查看
最后,自己设计一个最简单的方法。
- /blog,写 .md
- /kasicass.github.io,写个 python 小程序,生成 index.html,索引 /blog 中的 .md
新 blog,在 这里。
做技术的,总会说:"技术变革太快了,每天都再不停地学习。"。诚然。
拿互联网来说。从早年的 web server & middleware
到现在很火的,大数据 & 容器
然后到,人工智能
What's the fuck~ 这么多东西,怎么学得完?
先说个故事。
大学时期,听过 IBM 的讲座,介绍 WebSphere 的。现场讲解如何用
SOAP 来封装一个 WebService,演示如何做一个 add(a, b)函数,把
两个数加起来。讲解员费了九牛二虎之力,终于把 1 + 1 = 2 跑起来了。
十多年过去,WebSphere 在哪里?
对于工作业务中不接触 SOAP 的 coder,SOAP 与你何干?
做了多年技术之后,自己要学会分辨哪些该学,哪些只是过眼云烟。
- 对于工作业务相关的,需要很好的掌握。
- 找一些自己感兴趣的,和业务比较相关的技术研究下。
- 熟悉应用开发下面一个层次的内容,比如:Operating System
游戏服务端技术栈
- C/golang/python
- C++ (optional)
- Operating System
- Database
- HTTP
- TCP/IP
对于 C/C++ 服务端程序员来说,golang 是最佳的升级选项。
C++ 是一门开发效率很低,脑力消耗很大的语言,能不用的时候,尽量不用。
做 high-performance 调教的时候,Operating System 是绕不开的话题。越熟悉越好。
- linker and loader
- process and thread
- dtrace/systemtap
数据库,掌握好业务中用到的即可。
HTTP/TCP/IP 是写应用程序需要接触到的,最常用的协议栈。多熟悉熟悉,有好处。
将 Markdown 转换为 富文本,然后贴到公众号平台即可。