回答在 《都是程序员,来认识一下啊!》这篇文章的评论中,朋友们问到的几个问题哈

这个开源项目是做什么的,它解决什么问题?

开始在这篇文章里,试图回答这个问题,但是又发现内容有点多。

我另起了一篇文章来聊这个问题,请看这里:Lithosphere是什么,它解决什么问题?

先简单聊聊Lithosphere是啥,后面我会开专题来详细阐述各个专门的话题。

有没有图和在线Demo,最直观

怎么说呢?

应用系统是比较容易有图的,UI界面,用户功能。

开发框架、开发平台,怎么说呢,不好抓图啊。比如说,Spring Framework,抓几个图来看,这个图怎么抓呢?

我们会用Spring来开发各种应用系统,这些应用系统都会有图。

我以前做的Iot应用项目,当然有图,但是它们不是用Lithosphere做的,那时候还没有Lithosphere呢。

我第一个IoT创业项目是民宿专用智能锁,走到Pre-A轮(这一轮融了1600W),部署了3500个节点。然后,项目失败了。

第二个IoT项目,不是创业项目,上市公司的一个IoT项目,智慧路灯杆。

Lithospere项目里,提供的Demo程序,会有些图。不过Demo程序哈,看上去,比起直接卖给最终用户最终产品,看上去要简陋得多。毕竟,它就是用来做演示用。

我抓两个图贴一下哈,很简陋,莫笑哈!




这个是Lithosphere里的Webcam插件做的例子,实时摄像头监控,手机上远程打开IoT设备上的摄像头查看。

一个有趣的功能,当视频流中出现人脸的时候,视觉识别检查到人脸,就给这个人头上带个帽子。

这个算是AIoT吗?哈哈哈。

请忽略打了马赛克的人脸,看那个帽子就行。




这两张是树莓派接上了实时视频监控的摄像头。


这个是例子程序里,接上了LoRa通讯模块,接上了LED小灯的Arduino硬件板。

这个可以被手机遥控的IoT闪灯设备,在Arduino UNO R3硬件板测试通过。

Arduino UNO R3硬件板有2K SRAM内存,在淘宝上买零售价15块RMB。10元硬件板,Mud IoT通讯C库在这个板子上运行良好,说明Mud通讯库的性能还不错。

关于Demo,这个问题是这样的。

Hello, Lithosphere系列教程中,基本上每个教程,都带有软硬件结合的IoT Demo。

有一个全功能的例子,sand-demo。这个Demo演示了执行器、传感器、LoRa网关、事件上报、远程控制、数据上报、实时视频监控等一堆功能,相较完整一些的例子。

关于在线Demo,这事是这样的。这些Demo里都会有终端和网关硬件板存在,这个没法做成在线Demo啊,在线Demo没有这些硬件的东西,做不了演示啊。

就好比一个在线Demo,用手机来看这个Demo,你说,我没有手机,那肯定演示不了。

缺少了硬件的IoT例子,这个确实不太好弄成在线Demo,现在没有。

现在用C#了,你这个用Java做的,没法搞了。

这个看你想用IoT来做什么了。

如果是项目中要用,用.net来开发,那这个你就去找.net的IoT解决方案呗。

MS提供了Azure IoT云的解决方案,业界应该也有.net的开源解决方案吧,我对.net不熟悉不太了解了。

如果是想来参与开源,学习设计和IoT相关技术,我觉得用什么编程语言无所谓吧。

XMPP、插件架构、IoT Component,这些用什么语言来做,区别不大吧,设计上是相通的。

Lithosphere主要是用Java、C++和C来开发的。正好我比较熟悉这些开发语言,而且也适用够用。

Basalt库,Chalk库,完全没有使用第三方依赖库,完全是重头开始写的东西,纯Java代码,没用到什么依赖库。Chalk的插件开发框架,都是我自己从头写的,没有用第三方的东西。Java和C#区别没这么大吧,这些项目,对你应该完全没有障碍啊。

Granite项目,Sand项目,那没办法,我不可能重新造所有的轮子。肯定会用到一些Java的开源库。比如,Spring Framework。Lithosphere提供Spring Framework的无缝集成,没办法,这些东西肯定是要用的。

Mud库,大部分是纯C代码,少量的Arduino适配代码。这和Java和C#都无关。

欢迎参与Lithosphere开源项目哈,如果你是急着找手上项目要用的东西,那Lithosphere就不太适合了。

聊聊大数据技术

我又回来改回答了,哈哈!

为啥呢,因为我又想起了一些东西,我觉得第一个版本的回答并不是太好,我改改,说点自己想说的

---以下是原版本回答---

我记得应该是2014年做的项目了,到现在也快有10年了。

后来一直没搞大数据了。

怎么说呢,我个人看法是这样的哈。

学习和使用一个技术,其实就是基础技术 + 设计能力(创新思维能力)。

我其实并不是大数据专家,当然,我要负责大数据项目的时候,我肯定得学习大数据技术,我会读书,上网看资料,甚至去读源码。

但我确实不是大数据专家,我的团队里有对大数据技术很熟悉的开发者,何况电信研究院那边合作的团队,还有一堆博士呢。

并不需要我去具体做部署大数据平台、数据库,写大数据程序这些具体工作。

我需要考虑整体架构,需要分析设计问题,和团队成员们一块儿讨论设计,以及解决项目中碰到的一些障碍。

我印象中的大数据,是Map-Reduce,是怎么理解应用,合理的设计算法,让数据能够均匀的Map到各个硬件节点上去,来平衡所有节点算力。

然后,我们需要把Map出去计算的结果,再Reduce合并起来。

是的,我印象中,就是怎么将应用需求,合理的拆分成Map和Reduce算法,合理平衡的分布到各个节点去做计算,然后再用算法合并结果,得到最后的输出。

如果设计做好了,具体的开发,似乎并不是那么大的问题。部署系统和写代码不就是用大数据的一些基础技术来做吗?

我相信现在大数据技术一定很不一样了,毕竟我们这个行业,技术进步那真是日新月异的啊!

---原版本回答结束---


---我又有些想聊的,我把修改的版本放这里下面---

我个人看法,对程序员来说,一个技术的掌握程度,分两方面:

  • 对这个专项技术的熟悉和掌握程度
    不同的专项技术,会有不同的问题领域,以及相关基础开发知识。

    肯定要掌握这些,这不但影响你去写这个技术的程序,也会指导你对相关领域问题的理解和思考模式。
  • 你对软件开发的理解,你的设计能力,你的抽象能力、逻辑能力,你的思维创新性。

    这些会帮助你迅速理解问题,一针见血的找到问题的根本,让你能找出更简单、与众不同的解决方案。

    简单来说,就是你的设计能力,你思考问题的方式,你的程序员基本功,决定了你能走到什么高度。

    我想,是这些基础程序员能力,帮助我在快速的学习了大数据技术之后,开始领导这只大数据团队,团队里有不少大数据的专家,还有一堆的计算机学的博士。

    我依然参与、甚至可以说主导了系统的设计。


    再聊点别的,我到底是想表达什么?

    是的,程序员有35岁危机。

    行业整体状况如此,我们改变不了,我们能改变的,只有自己。我们应该努力奋发,不断学习,保持自己的竞争力。

    听上去很卷,但是没办法啊,我们只能加油!加油!!

    对,在说35岁危机呢。

    我自己是在40岁以后,还有拿到过超过百W年薪的Offer,银行的工作。虽然我没去,我去了一家创业公司。

    哈哈,你想毁自己吗?去创业吧,你想把自己毁得彻底一些吗?做一个连续创业者吧!😃

    我核高基那家公司的一些以前的同事,有去了大厂的拿百万年薪的;有自己开公司上了三板的;还有在中小公司里当CTO的。

    做程序员其实也没那么悲观,但是你得保持并提高自己的竞争力。

    对软件开发的理解,设计能力,思维方式,学习能力,这些可以训练吗?

    当然可以的!

    我在20多年程序员生涯里,是有保持不断学习的。但是,我依然会觉得,在某些阶段,我的软件开发能力,有了质变的提升。

    我说一个我觉得给我带来最大质变的工作。

    国家核高基重大专项项目,公司老板,创始人,一个挺牛逼的人!媒体评的,改变中国软件行业的20个人,他是其中之一。

    我觉得在这家公司,我有质变的提升。

    我在去这家公司之前,我已经是小公司技术部门的技术负责人了。浅薄又自信,狂妄且自大。

    当我在新公司里感觉痛不欲生,觉得这东西怎么这么难啊!该怎么弄啊!每天熬夜读资料,研究源码时,其实我正在进步。

    这不是对编程语言的理解不够的问题,也不是对技术细节的学习不够透彻的问题。

    这是思维的方式问题,是对软件开发的理解,是更高的抽象,更巧的设计,更强的学习能力,你必须竭尽心智,推陈出新,努力做到完美。

    其实问题很简单,你开发了10年的应用程序,在别人做好的开源框架上,搭搭架子,写写应用代码。

    突然让你去开发基础软件。写底层最基础的东西,怎么能够一下子适应啊!你会感觉自己啥都不懂啊!

    但是这就是真正的训练,做超过自己能力的事情,是极好的训练,会对你的软件开发能力有质的提升。

    是的,去做复杂的东西,用复杂训练自己。当你开发了复杂的东西,再回来看应用开发时,你会突然觉得,应用开发没那么难嘛,其实也还挺简单的。

    我还想说一个话题,我并不是天赋型选手,我见过这个行业里一些很聪明的人,我望尘莫及。

    就说我们当时核高基项目的公司老板吧,我们在一起喝酒,他和我们吹水。他说:我30岁的时候,公司上市了,我分了股票。那时候,我就可以不用工作了,下半辈子都不用工作了,可以去周游世界,消磨余下的人生。

    Dongger当时的心理活动:老大,你说话能不能委婉一点?能不能照顾一下别人的情绪嘛!我也已经过30了好吧,你这样说,我会很伤心的啦!

    老大又说:但是我还不想退休,我还想做点事情,我不信,老外能做的东西,我们中国人就做不了。我不服,我能做出来!

    好吧,跟对老大还是有用的,虽然达不到他那样的高度,但是我眼界提高了。当离开那家公司的时候,我变得很自信了。

    我后面再去其它公司面试的时候,坐在面试桌这边跟对方技术负责人聊的时候,我时常会浮现出这样的想法:对面这哥们,感觉技术也一般吧。

    其实,很多时候,并不是你的基本功不够,写上5年代码后,谁都对编程语言都很足够熟悉了啊!你只是一直在做很简单的事情,经常在Copy-Paste,经常在搞CRUD。这种重复性的经验,给你带来的进步是很小的

    你没有被复杂训练过,你没有尝试去解决软件开发中更根本的一些问题,你没有竭尽心智过,没有痛不欲生过,所以就不太容易获得突破。

    参加开源软件,我觉得这肯定是训练自己的一个好办法。

    欢迎大家有空的时候,来参与Lithosphere项目,我很期待大家的参与!。

Ok,今天先聊这些呗,希望能跟大家保持交流。特别是做IoT和学习IoT的朋友们哈,希望能和大家多多交流。
posted @ 2023-08-11 23:19  XDongger  阅读(150)  评论(3编辑  收藏  举报