摘要:
上回说到了用经纬度范围实现附近地点搜索。 一些小型应用中这样做没问题,但在大型应用中它有个显著的缺点:速度慢。慢的原因有两个, 第一是范围比较的索引利用率并不高,第二是SQL语句极其不稳定(不同的当前位置会产生完全不同的SQL查询),很难缓存。可以考虑使用geohash算法。geohash是一种地址编码,它能把二维的经纬度编码成一维的字符串。比如,北海公园的编码是wx4g0ec1。geohash有以下几个特点:首先,geohash用一个字符串表示经度和纬度两个坐标。某些情况下无法在两列上同时应用索引 (例如MySQL 4之前的版本,Google App Engine的数据层等),利用geoha 阅读全文
摘要:
附近地点搜索,顾名思义,就是搜索用户附近有哪些地点。随着GPS和带有GPS功能的移动设备的普及, 附近地点搜索也变得炙手可热。不过在网上却很少有这方面的讨论。本文的方法并不算最好, 但足以应付一般的应用了。本文中,数据库采用MySQL,语言采用python。理论上别的数据库和语言也没问题, 但我们要在经纬度上设置两个索引,所以如果你的数据库不支持索引,或者不支持在一个查询中使用两个索引, 那就只能想别的办法了。球面最短距离公式球面上任意两点之间的距离计算公式可以参考维基百科上的下述文章,这里就不再赘述了。Great-circle distanceHaversine formula值得一提的是, 阅读全文
摘要:
OpenCV的人脸检测功能在一般场合还是不错的。而ubuntu正好提供了python-opencv这个包,用它可以方便地实现人脸检测的代码。写代码之前应该先安装python-opencv:$ sudo apt-get install python-opencv我测试电脑上提示依赖其他文件,我装了libcurl3,然后重新上面的步骤,就可以了。代码如下:#!/usr/bin/python# -*- coding: UTF-8 -*-# face_detect.py# Face Detection using OpenCV. Based on sample code from:# http://. 阅读全文
摘要:
1) android (client):Getting Started with RabbitMQ on Android – Part 1介绍了如何在android上使用rabbitmq接收server端的push通知。2) server :server端安装rabbitmq,写了个python脚本来发送消息,例子代码:#!/usr/bin/env pythonimport pikaimport timeconnection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost'))channe 阅读全文
摘要:
RabbitMQ大家应该不陌生,著名的消息队列嘛。可惜我最近才听说它的大名,了解之后不禁惊呼,世界上居然还有这种东西! 立刻觉得手里有了锤子,就看什么都是钉子了,主网站不愿意干的操作统统扔给RabbitMQ去做吧言归正传,先介绍一下这篇文章的应用场景吧。我们知道大型网站的性能非常重要,然而有时不得不做一些相当耗时的操作。 比如SNS网站的“新鲜事儿”系统,我发帖之后,会给所有关注我的人推送一条通知。乍一看没什么难的,发帖之后找出关注我的人, 然后生成相应的消息记录就行了。但问题是,100个人关注我,就要执行100条INSERT查询,更要命的是,Web服务器是同步的, 这100条查询执行完成之前 阅读全文
摘要:
What is so cool about Android 4.0 View more presentations from Lars Vogel 阅读全文
摘要:
Building beautiful User Interface in Android View more presentations from Lars Vogel 阅读全文
摘要:
作者:阮一峰日期:2012年3月28日(这个系列实在拖得太久,今天是最后一篇。)上一篇介绍了"威尔逊区间",它解决了投票人数过少、导致结果不可信的问题。举例来说,如果只有2个人投票,"威尔逊区间"的下限值会将赞成票的比例大幅拉低。这样做固然保证了排名的可信性,但也带来了另一个问题:排行榜前列总是那些票数最多的项目,新项目或者冷门的项目,很难有出头机会,排名可能会长期靠后。以IMDB为例,它是世界最大的电影数据库,观众可以对每部电影投票,最低为1分,最高为10分。系统根据投票结果,计算出每部电影的平均得分。然后,再根据平均得分,排出最受欢迎的前250名的电 阅读全文
摘要:
首先,这篇blog是标题党。看到一篇文章,有个有趣的app。1)android版本。把android版本的看了下,代码是混淆过的。不过还是很容易看出。通信是基于XMPP的,采用的开源的smack, 之前有过对xmpp的介绍,详细参见之前blog。feedback用的是umeng。地图信息用的是baidu map 提供的api,libs目录下是baidu map的库。对了,还有tencent和weibo的分享其他的没看了,根据这些,相信有心人可以直接实现一个了。具体逆向工具和方法,已经满天飞,这里就不给出了。2)iOS版本没法下载下来看。不过找了篇文章,iOS applications reve 阅读全文
摘要:
1)RabbitMQAMQP stands for Advanced Message Queuing Protocol.RabbitMQ is the market leader in AMQP with several hundred production deployments and hundreds more in development.2)tutorials对RabbitMQ的介绍,参见这里:RabbitMQ_Introduction和RabbitMQ How to使用RabbitMQ的tutorial见:Tutorialscode in github3)python中使用在pyt 阅读全文