PostGIS笔记(下)

上篇说了为什么用Geography,这篇具体讲怎么取“范围n米以内的数据”。

Rails里运行Migration,建Portal Model,以下是Schema

距离东京站1km内所有的portals

  • ST_Distance

    float ST_Distance(geography gg1, geography gg2, boolean use_spheroid);

  • ST_DWithin

    boolean ST_DWithin(geography gg1, geography gg2, double precision distance_meters, boolean use_spheroid);

结果:

Read More

postGIS笔记(上)

好久没写博客,来扯淡一下。

2月~4月参与了一个游戏app的backend开发,基本上就是写API给app调用。
除了组里规定的严打不动的得用rails以外,这次项目自由度很大。

先简单介绍一下游戏功能:
把全日本10w左右的公园当portal,用户打开app可以看到附近当portal,到了portal范围内就可以玩游戏抓snoopy。
这次server要做的事情就是不停接受app的polling request,看用户附近是否有公园portal。

组里做过LBS的人不多,leader很早之前做过一次,推荐我用Geohash,并警告我说可能数据库压力会很大。
于是开发前准备阶段便搜了些相关资料。
结果发现Geohash相关gem都几乎没有在更新维护,便开始怀疑Geohash是否可行。
偶尔在infoQ和RubyChina发现了一些中文文章,谈到LBS的解决方案,其中包括:

Read More

[Rails]壁纸推荐网站

简单来说就是一次ITEM CF的尝试。不过壁纸本身的管理也花了不少时间,ITEM CF是最后才做的……

源代码在这里 https://github.com/xnnyygn/get-wallpaper

screenshot-index-2014-12-03

上面第一行是推荐,第二行是最新的,第三行是热度最高的。
所谓ITEM CF推荐就是根据人得到相似的物品,然后推荐给你。
热度最高是按照下载次数来的。
这些都是在网站日常操作中得到数据,然后通过推荐计算得到的。

Read More

[ruby script]ping hosts and sort latency

脚本的目的是ping多个主机地址,排序ping的平均延时,用来看看现在的网络环境连接哪台服务器比较快。

使用方法是

第一行是直接输入所有主机地址,后面一个是从一个文件中输入所有主机地址。假如输入alipay,taobao和etao。结果如下

Read More