“我在游”——从技术原型至应用系统的阶段总结
翻阅了日志,发现最近专注的事情坚持了近一个月了。从3月14日开始的一个小课题研究,延伸到想把近年来关注了解的技术做个集成,到今天初步实现,将一个月了。这种:“我编程、我充实、我快乐”的一段时间,可以做一个阶段总结。
因为都是工作之外的事情,下班后,周末,清明假期都在干这一件事。陪小孩的时间少了,陪家人的时间少了,除了求助媳妇给做了几个图标,全家人其实都不知道我关在房间里做什么。家人的支持是我前进的动力,自不鸣谢。
整个过程使用我自己的多款手机,自己付费的流量,自己申请的账号,自己付费的存储和计算环境,全全的是个人作品。这是,一点声明。
这三年多来,多做部门管理工作,在指导大家的工作,给团队定规矩,提高组织的成熟度,提高集体的战斗力。虽然也专注一些工作遇到的技术难题,但是,解决一个就开始处理下一个了,都没有全面深入研究和总结。从本性来说,不符合内心的诉求。
在我的认识中,比如 CPU Affinity和IOCP是技术含量比较高的一些专题,但是十多年的工作经历,能遇到这样的机会也就几次,总计下来也就五六年的时间。现在进入移动互联时代以后,存储和计算能力都很廉价,数据传输和计算不再做字节精简(遇到的,只有嵌入式开发者还在用一个字节代表8个信息),在周围同事中间已经很难理解一个字节的8位用途,更多的是JSON和XML内字符串的解析和应用。技术的进步让他们可以更多地考虑偏应用的问题而不必专注于底层的技术。最近上市的手机开始8核普及,更标志这样的趋势是发展的方向了。
言归正传,我这次做的是一个移动应用集成作品,和我在2010年的远图有相似,但是全面采用了新的技术。
首先,事情的开始,还是定位技术。在08,09年深入研究了综合定位技术,采集分析了大量数据(10^5,远不足海量的)。设计了“时间附近”和“空间附近”的参考点定位处理算法,实现了不依赖GPS的移动定位。有了位置后,需要画出来,那时手机地图还是灵图、高德的封闭产品,我们是无法获得数据的。当时,谷歌地图可以在桌面使用,初步开放。于是乎,我再自己研究,加上网上交流,实现了Symbian和WinMobile的瓦片拼接算法,和多种异步下载资源的引擎。当时正值百度无线开始相应研究,虽受招唤,但是不愿离家赴京,下文就没有了。
现在,各种地图SDK都开始推广,样本代码甚至使用流程Demo都全面提供,开发者只要想一个问题“我想做什么?”
我的集成当然也是引入这样的技术支持。但是各家的地图坐标是不同的,百度地图,高德地图,SoSo地图采用了不同的坐标偏移算法,所以需要处理的一个问题就是从GPS取得的位置经过多种偏移计算才能使用。
第二个问题,用Native还是Web?从各方面的关注信息了解,这个一直是多家讨论的焦点。其实,这个问题有点像2000年前后教育系统的网上招生开始前,是用J2EE还是.Net平台一样,事实上选哪个都可以,有微软,Sun,Oracle 这些恐龙企业支持,又具有庞大的生态链,都可以实现自己的设计需求,关键是你怎么用它。Native还是Web,我想这样的问题也将长期存在,并且可以共存。Hybrid就是这样的产物,用户操作和体验为重的就采用Native,信息展示和更新方便的就采用Web。原则是这样,不过具体选择起来,还是要动动脑筋,做一些实验原型再定。
我的选择,当然是Hybrid。
第三个问题,代码管理。个人作品,无法建立企业SVN的模式,使用云存储每天的代码Zip和拷贝同步虽然不算复杂,但是版本管理还是个问题。遇到两个解决方案:一种,百度BAE,原生提供SVN,可以做代码管理,版本管理,和直接发布这样全流程的解决方案。第二种,对于不依赖百度环境的代码工程,这样:在云存储环境的指定目录,使用SVN的“Create Repository Here”就可以建立自己的SVN系统,可以实现多机同步,非常方便。来源于网络的经验,点赞,分享。
第三个问题,用户入口和第三方平台支持。从微博的媒体形态到微信的通讯形态,人们已经习惯了这些终端入口。所以一个系统的推广,选择这些大众入口还是必要的。打开浏览器输入网址,和打开微信点个菜单,在手机上哪个方便,不言而喻的。虽我不研究社会学,不过这些普世的行为习惯还是要理解的。
微信的接入开发可以说非常方便,腾讯的技术力量加上庞大生态链的依存和促进,稍有代码经验就可以实现全面接入。噢,还有不需要代码开发的:“编辑模式”,这个不属于我的关注范围。后来,又有跟进推出的“易信”,其接口实现和微信几乎完全一致。经过几天的引入开发测试修改,还是发现了几点不同:QQ表情在易信是不可用的(这个有知识产权?),易信内置的浏览器,GeoLocation是不可用的。
易信的跟进策略还是比较明智的,无门槛,提供开放的权限比微信多。希望电信和网易能够坚持一段时间,推广下去。
第三方支持,还引入了百度推送。原来自己开发的版本升级流程,参数更新流程,现在可以使用百度推送完成。这样实现前后台协同,非常方便。从短期测试来看,基于百度推送可以自己构建一个非即时的通讯系统也是可行的。
以上平台都是初步引入,“长期和大量”以后是不是会有其它问题,还待观察,希望有参考。
第四个问题,有了入口,怎么全面规划系统设计?每个用户会有手机号,手机编号,微信号,易信号,百度推送用户号,加上系统的注册号。这还不是强认证系统再加上个人身份信息,哇,那真多。怎么管理和关联,怎么处理后续的设备更换和历史数据查阅方式,都是信息系统建设的综合问题。
我在分步实现,逐步优化完善。哪里有好的方案参考呢?
第五,QR二维码。现在到处可见的“花格格方块”,这么流行的东西,我怎么能没有!曾经的图像识别经历,我对条码识别还是有深入研究的(多种制式的一维条码),后来对QR码的编码原理,混码(纠错和掩膜)也做了初步了解。不过,有了ZXing,遇到的应用场景也想不出需要自己再开发QR的识别代码了。
找了PHP的QR工程,无难度直接引入。可以使用QR的地方:App的扫描下载;指定地址标识用手机扫描打开;个人用户扫描二维码登录。等等。关于二维码中间增加一个图标,也是QR天生支持的,没有难度。
第六个问题,UI,还是UI。“属于技术型的,所以不熟悉UI”,虽然我对同事中开发不了解UI持反对意见,这个和“术业专攻”有点相悖。我的经历,一直关注计算性能,网络数传等无UI技术领域,所以一直有个短板。现在真的要自己集成一个“项目”难题就不易解决了。虽然查阅借鉴了几个CSS,不过对absolute,hidden,overflow这些行为的具体现象还是不甚了解。有一天,因为position的使用不当,大半天的时间都没有显示出想看到的东西。很怀念table一招搞定,不过整个行业在进步,需要学习补充知识面的内容真的很多。
UI是个庞大的领域,不仅仅涉及信息技术,加上社会学,美学,哲学,行为习惯等等。腾讯CDC,百度MUX,阿里UED都成立专门的部门,研究和设计用户体验。谷歌,苹果更甚,他们的用户体验研究直接影响了世界的用户行为习惯。对吧?
希望有个UI顾问,改善我的作品,共同研究噢?
第七,有很多的技术问题。凡叫做“系统”的,就要集成多方面的技术,这次,至少用到:服务端PHP技术,数据库MySQL,Web前端JavaScript技术,手机端Android Java,SQLite,多方要实现互联互通,同一个技术专题,就要用不同的语言实现,单个都不是难题,但是链接起来还是有不少问题,逐个处理。摘录几个:
JSON是成熟的应用技术了,多种语言平台都有相应的实现。遇到的问题:
PHP对JSON要求双引号,单引号会解析失败,先执行一些str_replace(“‘”, “\”", $s),再做解析,可靠些。
JavaScript解析JSON也有,在不确定的严格要求下,eval会失败,增加两个括号:var jsn0 = eval(‘(‘+rst+’)'); 成功率高点。
关于Android的版本,原来一直是内部代码写入版本号,自己做管理。在系统的manifest里面又默认有一套,android:version,一直没有同步起来。这次查阅引入PackageManager.getPackageInfo(ctx, 0).version,这样直接使用系统的版本标识流程。
关于数据传输,那年3.15的高德明文传输数据的问题被曝光。作为互联网应用,是不能再犯这样的错误的。系统内数据传输必须保证不能被第三方截获并取得其中的信息。当然,这个针对“常规”的第三方,应该应付不了棱镜系统的。
关于数传承载效率,作为移动互联网深入多年,一定不能再有大量的“非人读”的ViewState数据存在,所以选择高效的语言,全面可控的代码框架。提高系统的数传承载效率,提高响应速度和减少用户的电量和流量消耗。
第八,关于坐标偏移的转换,我也对各家的转换接口参数困扰过,我尝试的结果,供参考:convert?from=0&to=2&x=120.123&y=31.456,其中(from,to)的参数含义是为:0=WGS84, 2=GCJ-02, 4=BD-09,高德地图和SoSo地图用的都是GCJ-02。这是简单测试结果。是不是有普遍性,还待确认。
第九,操作日志和数据挖掘。作为互联网应用系统,网站的访问管理,是需要重点考虑的问题。用输入用户名口令的登录至“扫一扫”登录,是较大的创新(还能再怎么进步呢?思考)。从后台来说,用户从登录后的访问轨迹分析,可以作为网站内容调整和流程优化的重要参考。从访问频度,访问来源,访问时间,访问设备的分析,可以作为用户特征和内容定向提供的参考。同时可以做异常访问的预警分析。这部分技术初步引入,记录数据,作为后续数据挖掘资源。又是一个大计算量的工程,可有成熟资源参考?
第十,关于位置。简单的位置服务会认为涉及用户隐私,但是如果叫做“手机找回”,“老幼关爱”就是有意义的工具型应用。这些非技术的文案策划成了非常重要的任务。
作为“移动应用深度技术分享”,可以做的事情还很多。随着访问量的扩大,准备引入NoSQL作为门户入口数据环境;对部分快速计算功能项,准备部分引入Node.js运行系统;可穿戴设备的发展起步,作为和“游”相关的位置应用,Galaxy Gear接入是有效的应用之一。
只能叫做阶段总结,能作为作品推出还有很多工作要做。总结分享呈上,接下来埋头继续。
欢迎交流共进,谢谢!
相关推荐
《软件工程——原理、方法与应用》复习总结涵盖了软件工程的基础概念、软件的特性、软件危机及其原因,以及软件工程学的范畴和发展历程。以下是详细的知识点解析: 1. **软件定义**:软件是由程序、数据和相关文档...
《从算法设计到硬线逻辑的实现——复杂数字逻辑系统的Verilog HDL设计技术和方法》这本书深入探讨了在数字电子系统设计中,如何利用Verilog HDL(硬件描述语言)将高级算法转化为实际的硬线逻辑。Verilog HDL是一种...
本课程分为系统需求分析与数据库设计、应用程序功能设计和系统集成调试三个阶段进行。 主要目标如下: 1、加深学生对数据库系统、应用程序设计语言的理论知识的理解和应用水平。 2、通过设计实际的数据库系统应用...
5. **原型的开发代价较高**:虽然原型有助于验证概念和技术可行性,但在有限的开发周期内制作原型可能会占用宝贵的资源,影响项目的整体进度。 6. **应用程序通用性差**:由于不同平台之间的接口差异,应用程序...
这部分主要描述项目从启动到当前状态所经历的主要阶段、所采用的技术路线、关键研究和开发活动,以及实施过程中所遇到的主要问题和相应的解决措施。 成果: 在成果部分,需详细列举项目所取得的技术成果,包括但不...
在本节中,我们将深入探讨“魔方机器人的开发历程(下)——如何进行快速原型”的主题。这个讲座是基于一个具体的项目,即魔方求解机器人的开发,旨在阐述快速原型的重要性和实施过程,这对于任何希望在IT行业中创新...
《一个APP的诞生——从零开始设计你的手机应用》是一本深入浅出的指南,旨在帮助读者理解并实践移动应用的设计过程。这本书涵盖了从概念构思到最终产品上线的全过程,涉及了UI(用户界面)设计和APP开发的关键环节。...
【标签】"jdbc"、"jdbc系统"、"原型"这些标签明确了项目的关键技术点和开发阶段。"jdbc"再次强调了项目的核心技术——JDBC,用于数据库操作。"jdbc系统"可能指的是整个系统架构基于JDBC,意味着系统中的数据访问层...
交互原型设计是软件开发过程中的重要环节,它用于在项目早期阶段清晰地表达产品的功能布局和用户界面。在这个过程中,低保真原型是一个初步的、简化的版本,它并不追求细节和视觉效果,而是关注于核心功能和用户体验...
【JAVA初级教程——Web系统开发技术与方法】涵盖了Web编程的多个核心领域,旨在帮助初学者建立起完整的Web系统开发知识体系。以下是对每个知识点的详细解释: 1. **Web编程基本知识**: - **HTML**是超文本标记...
本文旨在从作者的实践经验出发,深入探讨原型方法的核心理念及其在软件开发过程中的应用,并通过具体案例分析该方法的优势与潜在风险。 #### 二、原型方法的意义 **2.1 为何选择原型法** 1. **明确用户需求:** ...
总结,无线监测通信系统在地铁列车中的研究与实现是一项涵盖多领域技术的综合工程。从理论设计到实际应用,每个环节都需要精确计算和严谨验证。通过不断的技术创新和优化,我们能够构建更安全、更可靠的地铁无线通信...
### 软件工程——从过去到现在,论软件开发过程 #### 一、软件开发模型的发展历程 随着软件行业的快速发展,软件开发模型也在不断地演变和完善。为了更好地理解这些模型及其发展历程,本文将从过去的瀑布模型到...
《蚂蚁金服原型设计——揭示高效工具的奥秘》 在当今互联网产品开发过程中,原型设计扮演着至关重要的角色。它不仅能够帮助团队快速验证概念,还能为设计师和开发者提供清晰的视觉指南,确保产品的用户体验(UX)...
标题中的“单片机课程设计——TIP122应用.zip”表明这是一个关于单片机课程设计的项目,其中特别关注了TIP122晶体管的应用。TIP122是一款大功率 Darlington 对管,常用于驱动高电流负载,如电动机或LED灯。在单片机...
这项技术已经广泛应用于快速原型制造、工业设计、建筑、工程和施工、汽车、航空航天、教育、地理信息系统、土木工程、医疗和许多其他领域。 2. 3D打印的原理和过程:3D打印涉及计算机辅助设计(CAD)文件的创建和三...
《大张超市综合信息管理系统——课程设计报告》 在当今社会,中型超市的规模日益扩大,商品种类和数量的增长带来了海量的商品信息处理需求。为了有效地应对这一挑战,超市需要一个既符合自身特点又能够提高工作效率...