2017 年我进入 Avid.ly, 一家数据驱动的海外发行公司, 因为业务的需要我接触了 Computational Advertising 计算广告 (互联网商业变现的市场与技术) 这本书, 让我对目前广告行业生态的全貌有了一个比较完整的认识. 当然这本书中对于技术部分的描述比较简略, 涉及到具体技术细节的部分对普通吃瓜群众来说又有些艰深, 需要比较扎实的数学背景来理解. 所以目前这本书我比较喜欢, 同时也最易于理解的部分是对当前互联网商业变现市场的描述, 也诞生了我这篇希望小白也能迅速理解的删减版速览. 推荐广告行业新人阅读, 有助于规范一些概念和专有名词, 便于行业交流.
Qt 集成 ImageMagick 实录
近来需要基于 Qt 写一个桌面客户端视频编辑工具, 可以切割视频分段, 为部分分段增加蒙版图片, 再生成一份配置以供后续使用. 这期间使用到了 FFmpeg 和 ImageMagick 两个优秀的第三方开源框架. FFmpeg 的集成最终使用了调用命令行参数的方式, 因为 FFmpeg 提供的 C 形式 api 难于阅读, 而且没有一份详尽的 capi 文档, 故作罢. 而 ImageMagick 的集成并没有使用命令行方式, 原因是 ImageMagick 似乎依赖了比较多的东西, 调用命令行时会遇到诸多问题. 比如腾讯退出的图片压缩工具智图, 就需要用户额外自己安装一个 ImageMagick 以供调用. 还提供了一个 GUI 的 ImageMagick 安装方式, 使用起来体验并不理想. 所以最终我选择了使用 ImageMagick 的 C++ 形式来集成之. 但是这个过程也是一波三折, 记录一下, 后来人有缘相见, 免得白折了诸多时间.
Qt(C++) 跨平台集成 Python(with site-package) 完全指南
Qt 无疑是桌面客户端的开发的上上之选之一. 跨多平台自然不必多说, 更新稳定, 工具支持完整, 社区健全. 能够让开发者保持一个比较高的开发效率. 如果你还嫌业务逻辑的开发效率不够高, 或者移植性不够好. 没有问题, 你还可以选择 Python 脚本来实现你的业务逻辑. 将 Python 集成到你的 Qt 应用中. 这样你可以同时高效地开发 GUI, 高效地编写业务逻辑. 这个技术栈我已经使用了两年, 虽然现在有些想法觉得可能有更好的选择(比如 Qt(QML) + Golang), 但是这套搭配我还是非常推崇的.
不过在使用这个搭配的过程中, 有一个问题困扰了我很久. 就是 Python 环境如何干净地集成到 Qt 中, 既不影响用户自身的 Python 环境, 也不要受到用户本地 Python 的影响. 由于本地环境的干扰, 很长一段时间内我发布的程序都是在使用用户的 Python 环境, 而我完全都没有发觉, 直到用户低版本的 Python 出现了 bug 才发现了这个问题. 而 Python 环境集成的错误, 也导致我不能够正常的使用我需要的 site-package, 一番摸索之后, 这个问题总算是解决了. 最近有点时间, 对之前的处理做个总结, 免得后人踩坑.
年轻的技术合伙人, 你所付出的将比你想象中的多
福州厦门的房价在过去的十几个月中, 不断地上升. 前年住所附近的侨福城, 80 多平米的小户型卖到了三百多万. 在榕在厦的年轻人如若不是有些家底, 根本不用指望自己的薪水和存款能够跟上房价的涨幅. 可能今年算出来不吃不喝攒满 7 年(算上定期存款的复利)能够凑足一套小户型的首付, 到了明年发现离这个目标并没有变得更近.
在房价和未来丈母娘的高压之下, 年轻人实现财富自由的阈值变得越来越高. 加之中国社会的上升通道正在不断地收窄, 年轻人不论是想实现自我的价值, 还是只是单纯地想富成一个废物, 光靠单纯的打工挣钱已经很难实现了.
拥抱 Git
Git 无疑是当今互联网最酷, 最炙手可热的版本管理系统, 没有之一. 由 Linux 之父 Linus 一手缔造, 其由来也一如 Linux 一般传奇. 如果你还未了解它, 请参看迟建强的一篇文章 Linus,一生只为寻找欢笑. 如果你想要学习它, 推荐从廖雪峰的 Git 教程 入门, 然后再通过阅读书籍等途径深入学习.
今天我要安利的并非 Git, 而是 Githug. Githug 是 Gary Rennie 在 Github 上建立的一个开源项目. 是一个基于 Git 的闯关小游戏, 将许多的应用场景提炼成关卡, 用来练习你的 Git 技能.
提问的艺术
这篇文章一直是我的最爱之一, 告诉我在学习交流的过程中, 有哪些事情该做, 哪些不该做才不会引起别人的反感, 强烈建议软件行业入行的新人们阅读. 今天在找这篇文章回顾时, 发现网上大多的中文版本都没有一个良好的排版, 所以在我的博客中重新精排一次, 并对其中一些过时的翻译重新作出调整, 欢迎大家引用, 并注明出处.
我又来了, 带来了新的 Bug
这并不是一次复杂 Debug 过程, 也不是一篇充满干货的记录, 但这是我生平第一次为开源社区提交了我发现的 Bug, 具有象征性的意义. 鼓励着我融入这个理想主义大家庭, 贡献自己微薄的力量.
拥抱社区, 记一次 Qt bug 的折腾过程
年初 Qt 发布了最新版本 5.8 的 Release 版本, 两天前我对自己的项目进行了版本升级, 遇到了莫名其妙的崩溃问题. 经过两天的瞎折腾之后, 仍然没有办法独立解决问题. 于是我向 Qt 社区发起了求助, 在 20 次浏览量, 15 个回复之后, 找到了问题的答案, 从此对 Qt 社区另眼相看. 趁热记录一下:
当我们谈论组团时, 没提到的:让一些人离开
过去的这一年我做为联合创始人参与了一家公司的创造, 走过了 12 个月的起起伏伏, 两个月前我们发生过一次裁员. 在那之后我的心态经历过各种阶段的变化, 看到湾区日报推荐的这篇博文, 觉得三观很正, 分享一下
防御性编程之道
一份好代码并不取仅仅决于脑子是否灵活, 工作是否努力. 还有经验和对待自己工作的态度, 重要的事情强调三遍, 态度, 态度, 态度. 码如其人, 从字里行间可是很能够考察人的品性的, 今天在湾区日报上看到了这篇文章, 忙中抽空, 在半夜完成了翻译, 分享出来