软件工程
knowthyselfcn
桌面端、网站架构,会点opengl,会点Android
展开
-
机器人应用开发
这三周(2018年11月)一直在做机器人手臂方面的调研工作。我负责三维显示与交互、机器人逆向动力学、碰撞检测等功能的demo搭建,另一位同事负责自动路径规划,硬件驱动交互等调研。调研过程中,我发现了机器人手臂这一个小的系统涉及到内容也是很有难度的,更不用说像Boston Dynamics 的机械狗那样复杂度的整体系统。真的非常佩服这个团队。我们主要调研一个商业的算法lib。也有开源的机器人...原创 2019-12-02 18:06:07 · 889 阅读 · 5 评论 -
C++ include 顺序
我不认同google style。我倾向于链接2 里面的的解释。我倾向的风格: local to global1. cpp 对应的h 文件2. 同一个模块的h 文件3. 其他模块的 h 文件(内部,或者外部,如Qt,Eigen)4. 系统级别的 C++ h 文件5. 系统级别的 C h 文件Google Style: global to local1. c...原创 2019-12-02 18:03:43 · 1171 阅读 · 0 评论 -
QString 转 wchar_t*
这两天浪费了一点时间在编码转换上。我们使用到的一个算法库,接口参数是一个wchar_t*,作为文件路径。经过实验,几种方法都没有用,是个麻烦问题。记录一下。找到了下面三种可以工作的方式。方法1:file = filename.toStdWString();const wchar_t* str1 = file.c_str();Returns a std::wstring o...原创 2019-11-22 23:59:36 · 5111 阅读 · 3 评论 -
工业软件设计上一些简单的原则
做了一年多新的项目,好几个,有的是部分参与,有的相当于全程参与,有的好,有的坏,关于交互设计这一部分,我实在是要吐槽一下。公司要是没有UE,就请一个好的PM;要是没有足够经验的PM,那么,请尊重程序员的建议。学历固然重要,经验也很重要。主管者不想听,自然,下次别人也不会多说。公司要求每个人都为大局着想,基层员工倒是提意见了,结果把PM惹烦了,绩效都不好了。结果却是谁都不知道他是想为大局着想了,...原创 2019-11-20 21:05:03 · 943 阅读 · 0 评论 -
Qt View 中用多线程
在View层,我们不可避免的需要一些多线程的控制,但是,却又没有达到抽象出一个线程给程序全局使用的程度,这个线程仅仅只需要负责本view内部的操作,这个线程的生命周期一般短于view的生命周期。所以,我们需要一个简单的方式。这里主要涉及到如下几种需求:时间短,即使多算一遍、几遍也无所谓;时间很久,没必要完成前一次;时间不一定,但是需要排队;对于第一种需求,我们可以使用Fu...原创 2019-11-20 19:56:53 · 513 阅读 · 0 评论 -
工程师个人价值
2019-11-09 最近出了华为胡玲一档子事儿,在这个关键节点把华为再次推向的舆论风口。虽然,在互联网的圈子很关注这件事,但是,相信并不会有太多人会因为胡玲的言论而坚决抵制华为。似乎大家都心知肚明,华为给员工超量工作,给出市场上两三倍的回报,两个字:公平。反而,我觉得华为是一家很实诚的公司,任总都亲自说了,公司不是家,不搞虚的,打工就是做生意,钱货两清。不要有感情。像阿里、华为,因为给钱足...原创 2019-11-13 19:41:33 · 1197 阅读 · 0 评论 -
Qt 项目中的View、Controller
2019-11-05 我发现,一些Qt项目中,开发者因为Qt的框架提供了很好的解耦方式,便不再关注controller,把widget class 当作controller。这实在是不应该。在这样的代码基础上进行下去,就会发现所有的东西都逐渐放在了widget上。超大的cpp文件,ui、逻辑、数据库操作,混杂,不可直视。在这里,我们假设系统比较简单,MVC中Model包含了数据库访问(DAO...原创 2019-11-06 12:41:57 · 832 阅读 · 0 评论 -
软件授权与加密技术简单原理
2019-11-05 当前趋势下,互联网公司一般对外提供服务,而非直接出售软件,所以,大家不怎么关心软件授权、加密。但是,一些工业的软件拥有很核心的算法及技术专利。对外发布时,需要保护好程序。一般有如下要求:不能让未被授权的第三方未经授权而使用程序。不能让他人反编译程序,重现代码,推算出算法。对于第一个需求,就是需要实现授权。简单的授权方式有:1,license文件2,U...原创 2019-11-06 12:41:18 · 14292 阅读 · 0 评论 -
QImage与QPixmal视频播放
2019-11-05 新的项目中,需要从传感器实时获取图片并刷新显示,这边已有的代码里混用了QImage 与QPixmap。从QImage 转换为QPixmap 极为耗时,1000*1000 的size,debug模式下竟然需要12ms,CPU单核80%左右。导致UI很卡,这实在就过分了。我带有一些疑惑。其实,看一下定义就知道了。TheQPixmapclass is anoff-sc...原创 2019-11-06 12:40:45 · 1096 阅读 · 0 评论 -
osgWidget::Window数量较多时性能问题
2019-11-05 项目对三维显示功能提出了一项性能要求:在三维窗口上显示2000左右的overlay 控件。在OSG中,就是定制osgWidget::Window了,但是,OSG似乎并没有考虑这样数量的需求,而且osgWidget::Window构造2000个会非常慢,极其慢,十几分钟。另外,超过1800个数后,渲染的overlay 文字会重叠错误,显示模糊。针对问题一,很容易确定...原创 2019-11-06 12:40:12 · 400 阅读 · 0 评论 -
OSG QGLWidget ContextMenu删除致崩溃问题
2019-11-05 去年,公司项目在三维交互中提出了一项需求。在QGLWidget上构造的右键菜单中直接删除点选中的对象。对于被选择的普通三维对象,弹出的右键菜单删除它是没有问题的,但是,删除overlay层控件时,却导致OSG内部崩溃。我查看了一下OSG源代码,发现是设计之初没有考虑过这个需求。然而,实现这个功能patch却是很简单的,只需要修改两个文件,并且,需要定制osgWidget...原创 2019-11-06 12:39:29 · 385 阅读 · 0 评论 -
工程管理文档:概要设计说明书
2019-11-05 软件工程管理中,有几个比较重要的文档,软件开发者这边会接触到的,有:需求输入表、需求规格说明书,概要设计,详细设计,自测报告。这里我想要谈一谈概要设计文档,也是对于开发者而言,最重要的文档。其他文档及相关过程,另写文章总结。一、谁负责? 谁负责这个问题一定要明确?我觉得这个问题很重要,非常重要。有些时候,项目的技术负责人会把概要设计交给属下每一个人负责一部分,然...原创 2019-11-06 12:39:01 · 1478 阅读 · 0 评论 -
UI编辑器 vs 手写UI代码
2019-09-21 相信做客户端UI的时候,肯定会如何实现UI而争论。是使用UI编辑器,还是完全依赖于手写。而且,对于不同类型的客户端UI,我们还需要更细致的区分一下,如桌面客户端UI、移动端UI、网页端UI、H5。 还需要针对不同类型的项目进行区分讨论,持续运营的互联网项目,传统企业项目,个人项目。如;还需要目标受众进行区分:to B端、to C端。我们先讨论一下各种情况,尝试理解各种...原创 2019-09-22 14:17:58 · 759 阅读 · 0 评论 -
我的软件项目分级理论
2019-09-09 前两年就开始做一个项目体量分级,这个基础的概念,不说清楚,总感觉不好。现在笔记总结的差不多了,整理发布博客吧。这里只谈交付产品为软件,或者软硬件一体的项目类型。对于当下的软硬件一体的项目,大多重点在软件上,在算法上,结合在一起,可能虽然名义上软件不单独售卖,也不收费,但是,可以说,软件仍是其核心所在。我们软硬件开发者,经常会对一个项目的大小进行评价,但是,缺乏一个统一...原创 2019-09-09 23:11:00 · 3257 阅读 · 0 评论 -
基于接口编程
2019-08-09 桌面端软件开发者可能不大注意到这个概念。可能做Java Web的同学对于这个概念接触的更多,理解会比较深入。Java语言比C++更加注重接口概念,提出单独的interface关键字。而且,Java支持的RTTI也倚重接口概念。两种语言上细微的差异其实并不是关键,而在于开发者是否会多花费一些时间去遵守这个标准,多写一些代码,从而提高系统的模块化。我们经常接口两方面特性:限...原创 2019-08-12 09:39:15 · 366 阅读 · 0 评论 -
这天杀的win10
2019-08-18 这两年使用win10的过程中,发生了一些让我感觉很不爽的事情。而这些事情,从来没有在使用MacOS X,或者Linux上发生过,我实在想不通win10的产品经理脑子里到底在想什么?总的来说,我用win7也挺好的,也不是非得win10不可,也没瞧着win10带来了那些革命性的、不可或缺的功能。上一次,我下班了,电脑锁屏了,win10 自动升级了,我上班的时候还没有升...原创 2019-08-19 09:39:06 · 206 阅读 · 0 评论 -
单例设计模式
2019-08-05 这四五年的工作经验里,特别是在桌面端程序项目里,一些同事很喜欢使用单例设计模式。我感到难以理解,说实在的,很难以理解。《设计模式》一书中描述了我们使用此模式的意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。我认为这种模式的目的是最简单的,非常明确。凡是与此目的无关的需求,就不应该联想到“单例模式”。我一直以为,若不是没有办法,是绝不应该让单例模式上场的,是最...原创 2019-08-08 09:03:21 · 127 阅读 · 0 评论 -
程序员的英语
我在前面的文章中讨论了点程序员与数学学习的话题,其实对于大多数程序员,数学远远没有另外一个技能重要--英语。软件行业,被称为全球化的行业,早已经 打破了国家的界限。前年有一则很有趣的新闻,说一个美国人的程序员可以在家办公,结果他把薪水分出一部分在中国雇佣了几个程序员干他自己的活儿,他在家休 息。当然了,他雇佣的中国程序员当然是能懂英文的工作需求的。 基础的工作查资料,最好的资料都是英文写的,原创 2017-02-12 19:04:43 · 5433 阅读 · 0 评论 -
VR的元年?
2017-01-09 2016年被誉为VR技术的元年,年初到年中,三大厂商都推出了消费者版本的头显设备,各路厂商陆续跟进,各种周边设备也如纷纷发布,好不热闹。到了下半年,一直被提及的“互联网寒冬”似乎终于出现了,可见的统计资料上就可看到风投笔数明显的减少,这个所谓的VR元年中,VR马上就走入了末路一般,这段时间唱衰的也不少。 增强现实的Magic Leap 最近被打脸了,以前原创 2017-02-10 14:22:19 · 625 阅读 · 0 评论 -
《代码整洁之道》
2017-02-11我对本书的看法就是:赞扬与批评并容。没有外界夸奖的那么好,也不差。本书的优点:年轻一代程序员之中,很大一部分是Web开发者,入门的语言就是Java/PHP,本书以Java语言讲解,是非常好的入门材料作者讲解还是较全面、细致的,做Web编程中需要注意的点基本都涉及到了本书的缺点:我觉得本书也有一点问题,理由有:Robert太罗嗦了,精简一下原创 2017-02-15 17:24:53 · 510 阅读 · 0 评论 -
程序员要不断学习
2016-10-20 计算机技术的发展速度还是很快的,当个人电脑赶上10年前的超算时,我们不得不感叹硬件的发展编程开发带来了很大的影响,对世界带来了很大的影响。知识和工具的更新速度还是比较快的。这就要求程序员始终需要学习。我在知乎上看到一个问题“计算机专业还能火几年?“。这个问题非常好。类似的问题“搞编程的是吃青春饭”,所谓的“青春饭”,应该是指依赖20岁阶段的身体和脸蛋儿,我一向原创 2017-02-10 14:19:07 · 4928 阅读 · 3 评论 -
追时髦技术
得益于互联网信息传播,程序员是一个能快速接触新鲜事物的群体。我们也热衷于追一些新潮的技术,其原因也不是可简单而论的。这样的追逐,有好处也有坏处。从正面意义上来说,是我们在对一些问题做主动的尝试,大多数尝试是失败的,或许需要从很多次失败的尝试中总结出有用的经验,这也是推动技术的方式。不好的方面是,有时候夸大的新技术的应用范围和能力,吸引了人去学习,却带不来“预期”的收益,浪费了一些人力、时间。原创 2017-03-18 10:51:11 · 767 阅读 · 0 评论 -
什么是全栈工程师
2017-03-06“全栈工程师”是很多开发者喜欢提到的一个词,很多人刚入行的人也想成为这样牛叉的存在。想当初,我毕业的时候主打技术是Java系列的,可能会去做企业级系统的开发吧。却误打误撞做了PHP,入了互联网的坑(这里是狭义的互联网,指以WEB或App呈现技术,BS模式做产品的技术公司)。我也是对这个title梦寐以求。看了不少书,做了不少练习。从编译器,操作系统,Linux,汇编原创 2017-03-07 00:17:54 · 10261 阅读 · 0 评论 -
Web框架系列:框架基础
很多做Web开发的同学都会有一个梦想,就是将来开发出来自己的一套Web应用框架,在项目中使用。刚开始做开发时,觉得这个东西好牛啊。只需要写一点代码,就能够做出带有业务逻辑的网站,就能够挣工资了。其实,写一个Web应用框架并不难,但是,写出一个能够经受工业强度测试的就不容易了。如果这个世界没有cracker,没有恶意攻击,我们现在做的工作可以减少一半。当然,世界就是这个样子的,或许,当下就是最好的样原创 2017-03-22 11:23:27 · 3047 阅读 · 0 评论 -
程序员的可迁移技能和经验
不少新手程序员怕转工作方向。毕业后,我们几个同学做的方向不一,工作一段时间后,都有转变一下方向的想法,转变或大或小。如从2D游戏转向3D游戏,从Web转向游戏服务端,我自己也从Web转向了图形学开发,大家所经受的难度以不尽相同。我见到了较大的转方向是在HDF时和我差不多时间入职的一个同事,以前是做嵌入式的,现在转来做Web开发。做的也是很好。到目前为止,我都没有见到工作五年以上再转换工作方向的人。原创 2017-03-14 13:55:22 · 4927 阅读 · 0 评论 -
libevent的使用
一般而言,我们有时候也需要写一些网络通信的功能,但是,用原生的TCP/UDP又让人感觉麻烦。所以,我们还是希望用某些lib。libevent就是一个很好的选择。只要花费一两个小时看了官方的文档[2],还是很容易开始使用这个lib的。 对于客户端程序,大多数情况下只有一个连接,甚至是一问一答这样的模式。是非常简单的模式。在服务端,我们一般使用Linux,相信现在使用BSD的也少了,更不用说Wi原创 2017-04-17 11:15:50 · 720 阅读 · 0 评论 -
蛋疼的英语翻译-2
2017-08-11Dec 29, 14stencil OpenGL 中常用到这个词做术语,被广泛翻译为“模板”,我认为这个翻译不准确。 因为我们基本上把“模板”和 template 这个词汇对应起来了。translate.google.cn也把stencil翻译为“模板”,这就尴尬了。但有道的结果还是不错的,“漏字板”。google translate: a thin s原创 2017-10-25 16:13:10 · 733 阅读 · 0 评论 -
最近三个月=加班
2017-09-16 最近三个月也算特别忙,今年也只有算五六月份算稍微轻松一些,加班不是那么多,享受过几单双休。从钉钉统计记录上来看,这三个月只有单休,每天工作时长均10.3小时,标准工作时长的1.6倍。不过,似乎这三年大部分时间都是差不多这样。真的很累,早期来的同事们都说累。不知道这样的情况还需要持续多长时间。我毕业的前两年,反而是我职业生涯中没有加班的两年,我真的特别幸运。在这样原创 2017-10-25 16:16:57 · 350 阅读 · 0 评论 -
设计模式小结
2018-12-02 这三年的开发工作中,基本上在做桌面端程序开发,一部分还是界面化编程。设计模式一直也在用,却没有好好总结一下。这段时间工作不忙了,突然发现没有总结的这种状况实在很糟糕。最近又买了一本《设计模式》,之前从老夫子旧书网淘的本英文版,被送给同学了。这种书放在手头,还是很有让人觉得很稳的感觉:有它在手,问题不愁。做开发这些年了,现在也该开始对于设计模式、架构、流程等问题做做总结了...原创 2019-08-06 10:52:22 · 222 阅读 · 0 评论 -
CAD/CAM 软件架构总结
2019-03-02 2014年,我第一次参与了桌面端的软件开发项目。从惴惴不安到坦荡对待。2015年中,帮助设计了新版的CAD软件架构,那个时候,我们几个人都没有过架构大型桌面端软件的经验,参考着各种资料摸着石头过河。直到架构稳定下来,我们也废弃了不少原有的设计,不断的重构、重写花费了大半年的时间,不得不承认这中间有部分的时间是因为我们的经验不足、错误的设计导致的。今年我又参与了一个新的3...原创 2019-08-06 10:53:25 · 4425 阅读 · 3 评论 -
毕业后,大公司还是小公司?
相信很多面临毕业的软工方向学生都会面临一个选择,是小的创业公司,还是大公司,注意哦,我只是想谈谈互联网行业。我们需要从两方面考虑这个选择的得失: 其一,是否能够学到东西,其二,对未来五年的工作的影响,其三,工资水平。注意,小公司不等同于创业公司,创业公司也不一定就有优质的团队,这个概率实在 是比大公司出现低水平开发的概率还低。 第一,大公司的员工肯定平局水平较高的。毕竟很多都是名校的。大公司原创 2017-02-12 15:03:55 · 1753 阅读 · 0 评论