蓄丰空间

蓄丰的空间

“我在游”——从技术原型至应用系统的阶段总结

“我在游”——从技术原型至应用系统的阶段总结

2014-04-16

翻阅了日志,发现最近专注的事情坚持了近一个月了。从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接入是有效的应用之一。

只能叫做阶段总结,能作为作品推出还有很多工作要做。总结分享呈上,接下来埋头继续。

欢迎交流共进,谢谢!

本文地址:http://blog.xufun.cn/?p=647

评论已关闭。