在特殊情况下,两个系统之间是无网络连接的,但又需要传输少量的数据. 抽时间验证了下基于二维码视频流实现文件传输的想法,核心思路是将数据编码为二维码视频流,然后通过录像设备再从视频流中解析出原始数据.
博客用法笔记
本篇文章的目的是记录hexo+github搭建博客的使用方法,以备查询。
项目管理的一点思考
纸上得来终觉浅,绝知此事要躬行。
一定要做计划
做计划时,任务的粒度一定要细,分解的越细,越能及早的发现实际和计划之间的偏差,不至于到最后不可挽回。
任务的结果一定要明确、可量化、易检查,模糊不清的结果是无法判断是否完成了的。
以软件中的模块开发为例,可以分解为XXX模块开发,也可以分解成XXX模块接口定义和XXX模式接口实现。在实际执行中,推荐采用后者。
一个经验教训是,模块的对外接口、系统的对外接口(接口包括但不限于API、通讯规范、交互模式)都需要先评审,评审通过后再继续后续开发。
一定要监控计划的落实情况
实际情况和计划一定会有偏差,有偏差是正常的,没有偏差才是不正常的,关键在于是否及时的发现了偏差并采取了应对措施。所以一定要监控计划的落实情况
要形成适合自己的工作流程
管理书上讲的流程、工具当然是有用的,但应该根据自己的实际情况裁剪,定制属于自己的工作流程,并经常评估是否还满足当下的实际情况。
事情的可观测性/可量化性
项目的进度、执行的结果都应该是可观测的、可量化的,否则很容易成为一锅粥。
做事情的原则
- 做事情、评估事情时,不能仅限于把眼前做好,还应该关注它对我未来有什么用
- 在做事情之前,应该想清楚,它应该是什么样子,现有的资源我能做成什么样子,以什么途径向最终的样子去逼近,也就是所谓的以终为始
在短视频的时代,读书过时了吗
科学思维要点
LD_DEBUG说明
在排查动态库符号查找失败、符号覆盖时特别有用。
1 | LD_DEBUG=help ./program1 |
基于C的开发实践
从头到尾刷了下云风的博客,将和C、软件设计相关的文章汇总在了该页面,有时候,通过查看文章下面的评论更能理解文章在说什么
关于 getter 和 setter
好的设计
C 语言对模块化支持的欠缺
浅谈 C 语言中模块化设计的范式
给你的模块设防
我所偏爱的 C 语言面向对象编程范式
关于分工合作
libuv 初窥
Ring Buffer 的应用
一起 select 引起的崩溃
断点单步跟踪是一种低效的调试方法
程序员应该怎样提高自己
一个 C 接口设计的问题
connect_nonb的问题
linux socket API connect函数,在socket是堵塞模式下,该API是不允许设置超时时间的,一个经常的实现如下:
1 | #include "unp.h" |
这是Unix-Network-Programming书上给的一个示例程序,但要注意,实现过程中采用了select函数,所以sockfd不能超过1024,否则会出问题
两个半小时学会perl
因工作需要用到了perl语言,在有C开发基础的情况下,通过如下教程可以快速的入门
ubuntu离线安装软件包
因为只离线安装过openssh-server,所以以该软件包的安装为例,想必其它软件包操作方式类似
下载openssh-server包
1
sudo apt-get download openssh-server
下载openssh-server依赖包
1
sudo apt-get build-dep --download-only -o dir::cache=PATHFORDEPS openssh-server
PATHFORDEPS 替换为保存依赖包的目录
下载额外的依赖包
1
sudo apt-get download openssh-sftp-server openssh-client
安装依赖包
注意,通过find命令将所有的依赖包和主包放在同一个路径下面1
sudo dpkg -i *.deb