Fengxiaoping's bubble

  • 全天候工作的二维码

    5月 9th, 2014

    一到了晚上,一般的二维码由于缺少背景光就不管用了。当然你可以打开闪光灯,闪一下来扫描二维码。但那样未免太“高调”了。。。夜光二维码就是这样一个想法。

    超低技术含量,唯一目的就是让夜里人眼也能看到二维码(手机开灯当然也能看到,但前提是你先看到那有个二维码)。无论是晚上集市上凸显你的店铺个性,让顾客了解更多你的小店的信息,或者就是“夜间交友”…

    附上一张失败的尝试图片(荧光涂料太难画了,尤其是这么小的间隔)。

    daydream trello board: https://trello.com/c/QJUcKtG6

    2014-05-09 21.37.20 2014-05-09 21.37.28

    00
  • 会爬到身上被子

    4月 22nd, 2014

    睡觉踹被子的,没人给盖被子的,如果有一个可以自己爬到身上的被子,是不是会很开心呀~在屋顶安装一个kinect,根据骨骼结构算出被子应该覆盖的区域,然后给被子发命令“爬过去”!给被子装上一身“肌肉”,让被子能像虫子一样爬行。

    讨论移步Daydream https://trello.com/c/qdzOupdX

     

    2014-04-22 00.51.27

    00
  • 使用事件响应把Todo关联起来

    4月 20th, 2014

    经常会有一些TODO之间存在依赖关系。比如有一批货到了之后提醒我给某个人发货。

    使用这样一个基于事件的todo list软件,让TODO之间靠on start,on success,on failed这样的事件关联起来。

    前面的例子就可以创建一个“新货到了”的TODO,再它的on success添加一个“发货给某人”的TODO。

    就这样用事件驱动的方式来把TODO串起来。

    讨论移步 Daydream https://trello.com/c/cD7Npxj2

     

    2014-04-20 22.42.01

    00
  • 坏事情发生,让所有手机都变成传感器

    4月 19th, 2014

    在一些特殊场合,如银行等。要求每个员工都在自己的设备(BYOD)里装上一个特定应用。一旦有人打劫银行,每个人都可以有机会触发所有人的手机进入特殊模式。这个模式下,手机会把周围的数据大量的传到警方的数据库中,如周围的声音,影响,mic收到的声音,位置。用这些数据警方就可以重构整个银行当前的环境。如劫匪的位置,劫匪的声音,影像,移动方向等。

    讨论请移步Daydream:https://trello.com/c/hRlTW0hK

     

    2014-04-20 00.48.54

    00
  • 自管理的收纳箱

    3月 9th, 2014

    找那些零碎的东西是件很痛苦的事儿,尤其是那些又比较珍贵又不常用的东西。所以如果有一个可以自管理的收纳箱,箱子自己可以获得当前里面有哪些物品,并把信息传给家里的“信息中心”(无论是路由器还是什么东西)。这样下次我要找到我可爱的小熊的时候,只要搜索一下“小熊”,那个箱子自然就会亮一下,甚至叫一句“小熊在我这儿”。

    技术上,选用RFID的原因的是成本低。箱子本身可以用iBeacon或者wifi来向外传输数据。这样一个箱子的成本也许能在200元以下。箱子周围有电磁隔离,防止旁边箱子的东西被这个箱子感知。

    一个带有RFID发射器的箱子,可以获得箱子里面的所有RFID标签内容。RFID标签会把自己上面写的内容发射给箱子。箱子再把内容都发给移动设备。这样找起东西来就很方便啦。可以在自己的“家庭首页”搜索“小熊”,在手机上就能看到怎么找到小熊的指示。
    一个带有RFID发射器的箱子,可以获得箱子里面的所有RFID标签内容。RFID标签会把自己上面写的内容发射给箱子。箱子再把内容都发给移动设备。这样找起东西来就很方便啦。可以在自己的“家庭首页”搜索“小熊”,在手机上就能看到怎么找到小熊的指示。
    00
  • 看美剧找用户需求 (机器之心,第一季第九集)

    2月 5th, 2014

    机器之心这美剧有很多好玩的关于未来科技的设想,其中不乏不错的点子。剧情就不透露啦~

     

    户外的巨型玻璃可以随时变换颜色,来调节内部的光线,也增加娱乐效果
    户外的巨型玻璃可以随时变换颜色,来调节内部的光线,也增加娱乐效果
    还是全息投影,不过没看懂这是干啥的
    还是全息投影,不过没看懂这是干啥的
    剧认为支付还是要有个touch比较好:)
    剧认为支付还是要有个touch比较好:)
    警察用无人机跟踪罪犯,比直升机便宜也灵活多了。为啥现在没有...
    警察用无人机跟踪罪犯,比直升机便宜也灵活多了。为啥现在没有…
    应该是一种内置在包装袋上的可视标签
    应该是一种内置在包装袋上的可视标签
     与一个新的控制系统连接前,要做一些兼容性测试么…难道是因为所有IO都是无线的所以要扫一下么。
    与一个新的控制系统连接前,要做一些兼容性测试么…难道是因为所有IO都是无线的所以要扫一下么。
    机器人也有“血型”而且能无线track
    机器人也有“血型”而且能无线track
    注射版本的emp....嗯,什么化学反应能产生大量的电磁波呢?
    注射版本的emp….嗯,什么化学反应能产生大量的电磁波呢?
    有个gif的垃圾桶…当然也可以想想更多:满了的时候就变色,提醒环卫部门尽快清理,或者其实地下也是有管道的之类
    有个gif的垃圾桶…当然也可以想想更多:满了的时候就变色,提醒环卫部门尽快清理,或者其实地下也是有管道的之类
    使用一种啥射线能缝合伤口呢?或者,只是杀菌?
    使用一种啥射线能缝合伤口呢?或者,只是杀菌?
    00
  • 书屋的重构记

    2月 4th, 2014

    2013年初作为开发工程师加入阳光书屋,正好一年总结下。
    我们这产品可以说是比较简单的,就是一个可以让学生在pad上做题的Web App,叫阳光提高班,做单选多选什么的。所以主要是支持离线能力时,上下行数据通路的问题。啊还有,实际的使用场景中,一个班级可能有一半的平板不能连上网络(都是泪)。

    第一阶段,sqlite传球
    Android端有关的APP有俩,一个这个提高班的APP,一个叫daemon,负责server与提高班之间的数据管道。
    当时呢,下行数据是这样的。

    • 服务器提供一个API:根据传入的timestamp,给出这个时间点后面所有的数据库修改,daemon拿到这数据来更新自己的sqlite。
    • daemon暴露一个provider给提高班那个APP, 由提高班主动拉去数据
    • 提高班呢,把数据从daemon拿过来,存在自己的sqlite里。
    • 再说提高班本身就是个webview。html js什么的都存在apk的asset里。inject一个object到js里,把数据从java扔给js。

    image

    上行呢,就是把熊孩子们做题的记录传回给服务器。因为有离线这需求,所以自然要做一个队列来存放所有要回传的数据。流程是这样。

    • js把数据通过上面的方式把数据传回java,java把它存到db里,再扔给daemon。
    • daemon把数据queue下来,碰到晴朗的日子就把数据发回给服务器。

    好了,我的任务是用backbonejs做一个完整的学习逻辑在asset里。
    具体的开发流程就不说了,由于没有产品设计,各种混乱。

    第二阶段,好啦,终于可以说重构了!大概7月份开始吧。
    嗯,为啥要重构呢

    • 一片儿数据从服务器到js手里要转三道手,daemon,提高班,injected object。
    • 这几道手中,数据的形态变了又变。有sql语句,有table,有java object,有json。
    • 以上任何一个环节出错就挂了。 恰好这三个环节还是三个人分别负责的。
    • 前端的一个小需求变更,就需要环节中每个人对代码的修改。

    好,开始重构。基本就是我甩开膀子干的时候了~
    基本的思路就是,打掉至少一个中间环节,让js和服务器贴的越近越好。

    第一个决定:把daemon干掉。这个很好理解,sqlite,provider,增量更新,太累了。
    第二个最重要的决定:在android上搭一个web server来host这个app。这个花了巨多的时间调研各种技术,nano-httpd,iJetty,android build-in http server,最后锁定在restlet上。1. 它有客服,2. 跨平台, 3. 文档还算ok。
    第三个决定:设计一套API,让js可以指挥web server把一部分内容离线下来。这部分可以写血泪史了…
    最后一个决定:compile一个自己的chrome来支持HTML5。

    image (1)

    离线API的设计,主要源自如下需求:孩子们会不定期的收到新的课程,这课程体现为一张张卡片,每次新出现卡片,孩子们就需要点一下下载按钮,然后就是等啊等啊(你知道在一个贫瘠的网络环境中,httpclient有多辛苦么!),只要下载完成就可以打开卡片离线使用啦。
    这里就有个离线过程的设计:需要有进度,需要找个劳力来干下载这活儿,下载的内容可能挺大的,几十兆上百兆。
    这API大概有3个版本的设计。前两个已经记不清了,包括创造了一种Method:离线GET,一种离线下载清单API等等。有兴趣的可以看那UML。

    xServer UML

    Turtle。最后呢,在国庆(是的,delay了一个月的时候),终于在无限的纠结和惆怅中想出了目前的方案:把那些要下载的东西都打包做成app,跟提高班本身一样,类似数据包的形式。把下载行为变为web server与服务器之间的同步app行为。所有文件都在android的web server上静态serve在不同url下。

    image (2)

    那,web server的代码也变得异常简单了,只要把某个folder host到url就好啦。下载的行为也变成了pad上得server与服务器的server同步他们的app列表的工作(当然,app会被打包传输,android的webserver收到以后再解压)。

    为了描述每个app的内容,还设计了一种描述文件manifest.json(后来发现跟大大们的方案完全重叠=.=)。

    啊,还有个问题,提高班怎么知道有哪些课程已经完成了?通过一个类似/apps?query的API,可以通过各种不同的域query当前有哪些app,query可以对manifest.json中任何域所过滤,所以web server基本不需要改变也可以实现很多种功能啦。比如前面说的,到底有哪些app装上了呢?/apps?package_name=org.sunshinelibrary.exercise 就好啦。

    对啦,这架构名字叫Turtle~

    后来发现,这种设计和chrome的packaged application很相似,只是我们没有browser,就只能用chrome+webserver这种方案了。

    呃,为啥不用html5 offline?哎,那玩意儿,谁用谁知道…

    好啦,花了快半年的重构告一段落,基本形成了turtle+webapp的架构。可跑可用~

    更大的重构
    书屋原来的后端结构是:aliyun上有个cloud服务器,每个当地学校有个局域网内的local服务器。之间通过各种方法进行同步。
    学校多了人就懒了,不想再每个学校都部个服务器啦~理想中我们当然是想统一的aliyun服务器来管理所有的平板,所有的在线学习学生。但那些农村学校整个学校的对外带宽也就几兆,怎么能让他们直接从aliyun下载几百兆的东西呢。
    答案就是localcache服务器,把localserver改造成一个只会缓存数据的文件服务器,这样基本就没有维护成本啦,挂了其实也可以从外网下=.=

    差不多就这些啦,胡乱的总结了下去年的成果,希望今年能做出更牛逼的东西来!

    00
  • Paper pencil入手体验

    2月 1st, 2014

    大年初二来了个快递,原来是paper的pencil到了!

    包装比我想象的简单,就是一个笔筒,里面有一根笔,一副备用笔头,说明书。

    IMG_20140201_155032 IMG_20140201_154009 IMG_20140201_154902 IMG_20140201_154348

    要做的事也很简单,先把“笔芯”拿出来充电。把笔头一拔就可以看到一个USB口的“芯儿”。查到电脑上充电去吧。充好了上面的灯就变绿了。

    使用起来真的超简单——打开paper,随便打开一本notebook,翻开任何一页,工具栏左边就有个pencil的标志,用pencil指在上面就会开始转轮子,几秒钟后就好了!然后paper会蹦出来个小教学视频。

    功能跟介绍的没什么区别:可以直接把手腕按在pad上画,尾巴当橡皮擦,用pencil的时候手指可以用来“抹”。另外,似乎买了pencil以后,之前没买得调色板功能也变成可用了。

    响应速度。比起我以前的wacom笔,pencil一大优点就是“够硬”,几乎不用把橡胶头按变形就能感应到。但依然会有初始化时间——突然用pencil画的时候会有几百毫秒延迟,这段时间画不上。解决办法就是画之前先把笔搭在pad上一小下。

    IMG_20140201_205852 IMG_20140201_210049 IMG_20140201_210104

    00
  • 随使用者视角变化的UI

    1月 31st, 2014

    想法源自daydream

    借用手机的前置摄像头时刻判断人脸与手机的角度,依此调整UI。可以使用的场景很多,比如在想保证阅读者认真阅读的情况下。如下图,一旦人脸没有直视(如超出10s,45°范围)就提示你要focus!

    tumblr_n09wc0BxHm1sqcyswo1_1280 (1) tumblr_n09wf6MMuz1sqcyswo1_1280

    或者你想把操作界面变得特别禅,特别zen。默认只出现内容,没有那些retweet,like之类的。只要靠人脸角度来判断是否显示那些乱七八糟的菜单就好了。

    tumblr_n09wfoTO7T1sqcyswo1_1280

    当然我觉得可能最好玩的场景还是游戏,比如那些密室逃脱的,拼眼对眼的…

     

    如果是斜视的同学…就disable这功能吧…

    00
  • Estimote beacons 数字砖头 基本概念

    12月 28th, 2013

    Estimote Beacon其实就是一个小电脑,配置了

    • 最重要的BLE(Bluetooth low energy)
    • 32bit ARM
    • 256kB flash RAM
    • 加速传感器
    • 温度传感器

    Beacon的信号范围为5cm到70m左右。支持BLE的设备(一般都是手机啦)可以**同时**接收多个beacon的信号,在同时收到3个以上信号的时候,手机就可以根据这些信号计算出距离beacon的**相对位置**。
    当然,每一个beacon都有的自己的唯一ID。要想看周围有哪些beacon,可以用这个软件BLExplr app

    由于每一个beacon只会发送很小的信息,所以像之前演示视频中那样的图文内容,都需要用户手机使用beacon传输过来的内容ID,再从”云“中获取其对应的内容,这像极了一个保存了<a href>的盒子。而多个布置在不同位置的beacon,就像是把你的小店铺HTML化了一样——这里有个<img>那里有个<a href>。而对于IT圈的人,自然会想到爬虫,搜索,广告等,然后就会想到Google。当然Estimote不会放弃成为这个物联网时代的Google,他们承诺即将宣布用于存储beacon推送内容的云服务。除了内容托管,相比大家也已经想象出了很多其他的应用场景,比如把到店里闲逛的用户想象成spiders爬来爬去…

    gettingstarted3

    数字篱笆(Geofencing)
    这个概念与beacon没啥关系,意思就是用户可以在自己的手机上订阅(subscribe)某个beacon,一旦以后进入这个beacon的区域就会收到提醒。即使手机处于锁定状态,甚至app没有运行(不清楚为什么,应该是OS做的,跟NFC似的)。

    距离监控和提醒
    这也是在手机上完成的。手机根据beacon的信号强度计算出距离以后,按照预设的两个值将这种距离分为三类:远,中,近。一旦这个分类出现变化——用户走进/原理了某个beacon,程序就能收到提醒。

    App时代到了现在,大家都在踌躇怎么占领入口,抢Launcher,ROM,App store,锁屏页,浏览器。而那些并不垄断的,比较开放的入口,却没有被足够重视,如二维码,NFC,BLE。Beacon又打开了另一个入口,不知这次会怎样?

    下面就要进入具体的code啦。由于这玩意儿几乎完全是为了移动设备做的,所以如果不会android或者iOS的话…就…就学吧:)

    我的Daydream trello board

    00
←上一页
1 … 5 6 7 8 9
下一页→

Blog at WordPress.com.

 

正在加载评论...