冷落博客已有一年,理由种种,想来是腾出了些时间,但未见得其他方面有了什么可观的进步。打理博客犹如健身,每天不抬几次杠铃活动活动筋骨则憋的荒。消耗了大量的体力,一天下来却倍感清爽,人清爽了做什么都很来劲儿,久而久之反而能积累不少成果。写博客,百利而无一害也。

  最近一年与往年相比相差甚远,不管是Positivity、Endurance还是各种Ablilities,好比黄金圣斗士堕落到了青铜级别,更可怕的是对技术越感麻木,难道这就是所谓的技术阶段性更年期?思前想后确实有一点变了:”过去把技术视作目标,现在更愿意把技术作为达成其他目标的手段。“这种思想观念的变化有利有弊,也可能预示着什么。写点儿东西,一部分我了解的技术,不一定说得详细,但求从整体上把握能拥有全局的观念。人就是如此,知道今天的小树苗在未来会成为参天大树,则会在十年间乐此不疲的付出,并收获过程中的快乐。倘若在沙漠中茫然向前,即使水源充足也会放弃在绿洲前的沙丘身后。

  从手机入手,当下正时髦的各种智能机谈起。

  作为一个曾经搞手机的ITer无比遗憾一件事,人生其实有很多乐趣,记得大学时看着各种新颖的数码产品充满了好奇也获得了很多快乐,若干年后作为一名开发者,快乐就这么没了!各种数码产品丝毫没了吸引力,放眼望去只是一堆的处理器和存储器而已。类似的事情还有旅游,无比后悔当初到处穷游,直接导致现在对祖国的大好河山没了兴趣。所以,个人总结了一个生活教训:”吃,不要吃太饱;玩,要给未来留点余地。”

  “搞手机开发”,一句经常听到的回答,但也过于笼统。搞IPHONE,也得有个UI和Coder之分。搞Android,这个Coder可能包括:

  Java,XML为主的上层APP开发。重点是对语言的熟练程度和调试技巧。如果要深入研究,尝试了解JaveFramework层的代码,更甚者,可以研究下Dalvik。

  高级点儿的就得往下走,一方面是各种Lib的应用,比如Media。Android的video, audio development往往重难点不在于编程,而在于原理。复杂的东西往往封装到最后给开发者保留的仅仅是几个简单的api,谁能剥开这层分装参透其原理就会更具有竞争力。另一方面便是对于Linux的了解,熟悉Linux系统的各种系统调用、进程关系、文件的属性。这一层也可以看作是NDK开发,通常意义上讲它便是Android开发的核心,撇开Android的东西在Linux的基础上利用C/C++独立处理任务,快速、干净、利索,最后得到return value,让表现力更好的Android体现到用户面前。真正意义上的安卓或许就是一个跑在Linux上的一个多进程的软件,我如此理解,误导勿怪。

  说起Linux这一层,这本是Android前世投胎前既有的存在,所以,它早已成为一块独立的领域:Linux System Programming。《Unix高级环境编程》便是你的学生证。这一层之下便是Kernel,内核的一部分为Linux开发者提供了大量的系统API,而Kernel Development便是山寨最热门的一块领域。任何一件数码产品都关心成本,降低成本往往意味着更换为价格更低廉的芯片。但这不等于产品质量的下降,原本廉价的芯片随着产量规模的增大会趋于性能稳定,而原装芯片的昂贵或许只是源于市场规则。芯片的更换便意味着芯片驱动的更换,也就是Kernel Development中山寨的灵魂:Driver Development。

  驱动开发是个比较奇怪的领域,电子工程的同学不懂Kernel Architecture,软件工程的同学搞不定杂乱的PIN脚高低电平变来变去。然后,这东西就火了。不会背语录的不是好同志,不使用Oscilloscope不看Datesheet都是伪驱动开发。软件开发需要一个人思维活跃、大胆创新,驱动开发需要一个人性格沉稳、谨慎小心,而驱动开发正是“数码产品麻木症”的罪魁祸首。总结:玩驱动者,看破红尘,心如止水。

  不能打电话的phone是mini pad,能打电话的pad是增大版phone。作为一部智能手机,“智能”是因为安卓,通话则是因为有Modem。好比人,有大脑更要有心脏,大脑不够用最多是植物人,心脏不好使那就玩儿完了。Modem固然重要,也必然有自己的处理器,而且不止一颗。作为一部真正的手机,它要接收射频信号,而后变频、放大、滤波、转换,而后成为可读的0101,再经过协议解析终获得暗藏于载波中的声音信号,最后通过音频接口传给安卓一边的处理器,经过Kernel Developer开发的audio驱动解读后传给Earphone。接收无线电需要专门的处理器,或者叫DSP,也就是当下比较火的的RF部分。信号处理、解析协议也都需要处理器,也就是Baseband部分。再匹配一套实时操作系统,瞧,Modem完全是一个独立的体系。

  非智能机也叫Feature Phone,当然没有安卓,但一定得有Modem。在没有安卓、塞班的年代Feather Phone独霸天下,一个Modem包揽了全部的任务,数年后一颗专门跑智能系统的CPU分担了Modem一部分任务,Modem在人们的视野中便退居了二线。“没有我,你不能成为一部智能手机,而我只是默默地负责供血这种单调重复的任务。我是Modem,我为自己代言。”

  就先这吧,算是练手。又是一年端午节,却没有南下。

Communication - 01.Foreword的更多相关文章

  1. [Code::Blocks] Install wxWidgets & openCV

    The open source, cross platform, free C++ IDE. Code::Blocks is a free C++ IDE built to meet the most ...

  2. Call U

    Communication - 02.Call U App层 从大拇哥Click CallButton开始手机便已明白,主人这是要打电话.当然,你可以选择直接拨号,也可以通过ContactList,或 ...

  3. 本人SW知识体系导航 - Programming menu

    将感悟心得记于此,重启程序员模式. js, py, c++, java, php 融汇之全栈系列 [Full-stack] 快速上手开发 - React [Full-stack] 状态管理技巧 - R ...

  4. uml和模式01

    // */ // ]]> uml和模式01 1. UML 2. 用例图 3. 用例和类的关系 4. 类图 1 UML 模型语言(Modeling Language 检查ML)是一种设计语言,人们 ...

  5. 【WCF--初入江湖】01 WCF编程概述

    01 WCF编程概述 SOA的优点 1.服务独立于平台和工作环境.服务并不关心自己所处的环境,也不关心与之进行通信的服务所处的    环境. 2.服务相互隔离. 3.服务对协议.格式和传输中立. 4. ...

  6. [转]A Faster UIWebView Communication Mechanism

    ref:http://blog.persistent.info/2013/10/a-faster-uiwebview-communication.html Use location.hash or t ...

  7. 01: docker 基本使用

    1.1 docker基础 1.docker与虚拟机比较 2.docker版本 1. 社区版(Community Edition, CE) 2. 企业版(Enterprise Edition, EE) ...

  8. 一步步Cobol 400 上手自学入门教程01 - 基础概念

    先学习基础概念 1.COBOL字符:包含: User-defined words 用户定义字符 ŸSystem-names ŸReserved words 关键字 2.用户定义字符User-defin ...

  9. Windows Communication Foundation (WCF)和Windows CardSpace的示例程序

    微软公司昨天发布了一个Windows Communication Foundation (WCF)和Windows CardSpace的示例程序包,内容极为丰富,从最简单的Hello World到复杂 ...

随机推荐

  1. 携程Android App插件化和动态加载实践

    携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验.本文将详细介绍Android平台插件式开发和动态加载技术的原理和实 ...

  2. PoolMon 使用

    PoolMon 显示   PoolMon 在命令窗口中显示有关池内存分配的数据列.使用箭头键.PAGE UP 和 PAGE DOWN 键在数据间滚动. 注意   若要查看全部 PoolMon 显示,则 ...

  3. Crontab中shell每分钟执行一次HDFS文件上传不执行的解决方案

    一.Crontab -e 加入输出Log */1 * * * * /qiwen_list/upload_to_hdfs.sh > /qiwen_list/mapred.log 2>& ...

  4. 奇怪吸引子---YuWang

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  5. Spectrum to XYZ to sRGB

    如何将频谱响应转换为对应的RGB显示值: 首先要在频率功率分布(SPD)曲线的基础上,分别使用X/Y/Z三个频率匹配曲线(spectral matching curves,又名CIE XYZ Colo ...

  6. Linux文件系统性能优化 (转)

    http://blog.chinaunix.net/uid-7530389-id-2050116.html 由于各种的I/O负载情形各异,Linux系统中文件系统的缺省配置一般来说都比较中庸,强调普遍 ...

  7. JS验证 只能输入小数点,数字,负数。

    <script language="JavaScript" type="text/javascript"> function clearNoNum( ...

  8. callable object与新增的function相关 C++11中万能的可调用类型声明std::function<...>

    在c++11中,一个callable object(可调用对象)可以是函数指针.lambda表达式.重载()的某类对象.bind包裹的某对象等等,有时需要统一管理一些这几类对象,新增的function ...

  9. mediawiki的管理与使用

    本文主要讲述搭建好私有的mediawiki之后,管理员可能需要用到的几个功能.   维基百科的设计思路与我以往使用的系统不太一样,以管理员模式进入之后,并没有我预想的添加wiki页面入口,和侧边栏导航 ...

  10. iPhone设备字体详解

    做iPhone开发的同学一定对:UIFont systemFontOfSize.boldSystemFontOfSize.italicSystemFontOfSize很熟悉,但你们知道它们都是什么字体 ...