话说一停就是好几个月没有更新文章, 如果侥幸还有关注的读者, 我觉得真是抱歉了. 希望你还能接着看~
    最近在做Silk平台(之前的文章介绍过~)下N多组件的跨平台移植, 先移植到Linux下再考虑MacOS. 界面重新用wxWidgets实现, 还好原来底层组件封装的比较好, 要不现在工作量就大了啊~ 呵呵. 其实C++跨平台并没有我之前想象的那么神秘和复杂, 主要注意使用标准语言, 避开一些系统特性关联性很强的宏, 语法, API什么的, 而这些就封装成统一的接口即可. 移植工作大致算起来还是比较顺利的, 这点比较欣慰, 把组件移植到Ubuntu, OpenSuse等Linux平台上进行编译, 和测试程序的调试, 当测试程序完整顺利的完成全部功能和性能方面的测试, 还是小激动了一把. 自己感觉还是蛮不容易的, 因为之前开发的时候并没有考虑到跨平台的通用性, 所以对移植还是很忐忑的, 当全部测试用例通过测试, 最终的数据和Window下的完全一致时, 心里的大石总算放下来了~
    我考虑的网络应用平台, 整体应用策略就是需要跨平台的, 后续还会包括手机客户端的. 所以代码移植我虽然没有考虑过, 但是整体产品的通用性还是想的比较多的. 以前开发并没有太注重这方面, 很多时候都是使用系统强相关的特性来提升产品应用性能, 反而忽略了通用性. 其实这也是需要平衡的. 应用范围太狭隘的产品也许会很专业, 但是某些情况下也会限制其产品本来在市场环境下的竞争力, 而这种固步自封的状态是自寻死路的, 特别是对于广大客户应用的.
    以前一直专注于Windows平台下的开发, 涉及到Linux的东西全部自动回避, 因为不了解也因为没有涉足的必要. 而今不同了, 虽然对研究Linux内核依旧没有兴趣, 不过相信在平台扩展时迟早是会或多或少接触一些的. 我对自己的定位就是, 不需要特别的去了解某些技术和领域, 但是产品需要的时候, 就要做预研, 分析, 甚至深入研究. 我觉得这样才是效率最高, 关注点最集中的方式. 对于一个大型的平台型产品, 不这样做迟早累死. 
    在Linux下面开发还是蛮有意思的, 大多数时候是使用命令行来操作, 很少用到IDE, 感觉又回到了以前Dos下的状态, 很温馨熟悉的感觉. 而且有很多的开源组件, 开源框架可以用, 开发起来感觉和Windows上做开发是完全不一样的. 还好C++都是通的, 要不我一时半会儿还真适应不过来的, 呵呵. 不过话说回来, 我在移植过程中还是遇到一些小麻烦的. 比如gtk+的安装啊, 对于我们这些Linux新手, 通过源码编译安装这样霸气的组件时, 手足无措的, 虽然网上有很多的教程, 但是遇到刁钻的环境问题还是挺难办的. 了解和熟悉真的有很大的差距啊. 
    其实在整个平台产品的开发过程中, 还是经历了不少冥想, 担忧, 激进, 阻塞, 瓶颈. 这还是一步步的克服困难走了过来. 其实对于开发一个大型的软件, 还真是有蛮多艰辛的, 不过苦也乐, 甜也乐, 软件开发就是这样一个过程. 有很多时候都会迷茫于市场应用, 身边会有很多的人给你说, "这方面的应用已经有很多拉~", "有没有创新的东西啊?", "产品稳定性怎么保证啊?", "怎么进行市场扩展啊?", "相比同类产品你这个优势在哪里啊?"  其实我觉得问的都在点子上, 很多问题还是确认认真的做过市场调查和分析, 对于自己的产品也还是有一定的前景展望和规划, 只是目前产品只是个雏形, 很多考虑都太超前了, 就算是做风险预防, 也还是太早了. 相当于才怀孕就把孩子的大学都定好了. 我这个人还是比较注重实际, 太远的不会想太多, 太近的不会纠缠很久, 把握时机也许才是最好的控制手段. 目前对于我来说主要任务还是将这个产品从雏形发展到成型, 这样产品有了, 才能根据之前的市场调查, 预研和整体规划给产品制定出一个长远的生存目标, 在这个过程中不断的调整产品功能和细节, 以达到市场需求.
    最近可能会涉及到工作的变迁吧, 自己的产品也会暂时的停止开发, 毕竟得先考虑吃饭的问题啊. 到时候也没有机会在这里发帖了, 还是蛮可惜的. 希望尽量多写点多分享点心得吧.

未完待续...

我所热衷的编程生涯 连载(11)相关推荐

  1. 编程生涯 21 载,那些我踩过的坑

    作为一个有着21岁编程年龄的中年程序员,我可以自豪地说,我成功地经历了软件行业这个充满变数的世界的高峰和低谷. 这篇文章记录了迄今为止我在软件开发的职业生涯中所犯的错误,同时也是如何避免这些错误的一本 ...

  2. Java黑皮书课后题第2章:2.11(人口统计)重写编程练习题1.11,提示用户输入年数,然后显示这个年数之后的人口值,将1.11中的提示用于这个程序

    2.11(人口统计)重写编程练习题1.11,提示用户输入年数,然后显示这个年数之后的人口值,将1.11中的提示用于这个程序 题目 题目描述 运行示例 涉及的1.11代码(非本题代码) 破题 代码块 题 ...

  3. 初学者应该如何开启自己的编程生涯?,nginx架构图

    后端.看不见的真相,未透露的故事.在过去,知道PHP足以自称为后端开发者,然后微软引入了ASP.NET.这两个就开始打架,直到Node.js冒出来把东西整理得井然有序.一些事件驱动开发的概念在Node ...

  4. justjavac:从辍学到成为Deno核心代码贡献者,我的十年编程生涯

    [CSDN 编者按]大学因学费而辍学,最困难时睡在公园长椅,有远见的母亲让他走上了编程之路,温柔智慧的妻子用爱与信任激励着他秉承初心.奋勇前行.编程十余年,他已在GitHub开源三百多个项目,项目总S ...

  5. 网络编程学习(11)/ FTP项目(5) ——文件上传和上传断点续存功能

    网络编程学习(11)/ FTP项目(5) --文件上传和上传断点续存功能 `服务端 lib 文件夹下的 main.py 状态码的变化` 文件上传功能 `服务端 lib 文件夹下的 main.py` ` ...

  6. C++并发编程(C++11到C++17)转载

    C++并发编程(C++11到C++17)转载 作者:paulquei https://paul.pub/cpp-concurrency/ 为什么要并发编程 大型的软件项目常常包含非常多的任务需要处理. ...

  7. Java编程那些事儿11——JDK的获得、安装和配置

    Java编程那些事儿11--JDK的安装.配置和使用 作者:陈跃峰 出自: http://blog.csdn.net/mailbomb 第二章 建立开发环境 "工欲善其事,必先利其器&quo ...

  8. ▷Scratch课堂丨【编程趣味卡11】虚拟宠物

    授权转载 | Geekid 原文作者 | Mr.炎 原文标题 | 少儿编程 教程丨Scratch编程趣味卡 - 11.虚拟宠物 标签:难度初级:适合年龄段:8+: Scratch介绍 Scratch融 ...

  9. 带领初学者学习 SQL 数据库编程视频教程(11 个视频)

    带领初学者学习 SQL 数据库编程视频教程(11 个视频) #1 课程介绍「02:04」 #2 在各操作系统中安装 MySQL 和 PostgreSQL 数据库「05:46」 #3 工欲善其事,必先利 ...

最新文章

  1. 【数据结构】图的深度优先遍历 广度优先遍历
  2. 清华“法律数据科研平台”向校内师生开放试运行
  3. [mysql] mysql 5.6.X 慢查询日志
  4. 0212互联网新闻 | 华为将发布5G折叠屏手机;谷歌在小范围内推出AR实景导航
  5. java file构造方法_Java中FileOutputStream类的常用方法
  6. WebRTC直播课堂实践:实时互动是核心
  7. php strval,PHP strval()函数
  8. Internet Explorer 6 中的 CSS 增强功能
  9. Eclipse导入Zookeeper源码Version2017.11.3
  10. 【转】Web实现音频、视频通信
  11. Vivado设计流程(四)设计综合
  12. 为什么div设置其border无效?
  13. Go程序设计语言读书笔记-1
  14. IO编程 之 缓冲篇
  15. matlab 标准色度图,采用Matlab图像进行有色溶液样液浓度测试
  16. MySQL8.0和MySQL 5的不同
  17. 苹果录屏没声音_苹果耳机突然没声音
  18. 兵以诈立 —— 三国的谋略
  19. 电脑主屏幕黑屏但有计算机硬盘显示,显示器黑屏但电脑一直在运行怎么办?显示器黑屏的详细解决方案...
  20. 魂斗罗归来大觉机器人_魂斗罗归来挑战Boss血量分析 魂斗罗归来Boss模式挑战攻略...

热门文章

  1. opus 源码下载 以及 相关资料
  2. 「滴滴-橙心优选」秋招面试复盘总结
  3. MySQL关系型数据库
  4. Android SurfaceView预览变形完美解决方法
  5. [QT_040]Qt学习之通用对话框:QColorDialog、QFontDialog、QInputDialog
  6. 发射功率 dBm 计算
  7. matlab绘制累计频率曲线图,累积频率曲线怎么画,怎么画累计曲线图
  8. HFS+ vs APFS
  9. collect2.exe: error: ld returned 1 exit status分析与解决
  10. 钉钉企业主要功能介绍