Ted

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

03 2012 档案

摘要: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 阅读全文
posted @ 2012-03-31 23:36 wufawei 阅读(1436) 评论(0) 推荐(0)

摘要:RabbitMQ大家应该不陌生,著名的消息队列嘛。可惜我最近才听说它的大名,了解之后不禁惊呼,世界上居然还有这种东西! 立刻觉得手里有了锤子,就看什么都是钉子了,主网站不愿意干的操作统统扔给RabbitMQ去做吧言归正传,先介绍一下这篇文章的应用场景吧。我们知道大型网站的性能非常重要,然而有时不得不做一些相当耗时的操作。 比如SNS网站的“新鲜事儿”系统,我发帖之后,会给所有关注我的人推送一条通知。乍一看没什么难的,发帖之后找出关注我的人, 然后生成相应的消息记录就行了。但问题是,100个人关注我,就要执行100条INSERT查询,更要命的是,Web服务器是同步的, 这100条查询执行完成之前 阅读全文
posted @ 2012-03-31 23:28 wufawei 阅读(1070) 评论(1) 推荐(0)

摘要:What is so cool about Android 4.0 View more presentations from Lars Vogel 阅读全文
posted @ 2012-03-29 20:40 wufawei 阅读(181) 评论(0) 推荐(0)

摘要:Building beautiful User Interface in Android View more presentations from Lars Vogel 阅读全文
posted @ 2012-03-29 20:34 wufawei 阅读(169) 评论(0) 推荐(0)

摘要:作者:阮一峰日期:2012年3月28日(这个系列实在拖得太久,今天是最后一篇。)上一篇介绍了"威尔逊区间",它解决了投票人数过少、导致结果不可信的问题。举例来说,如果只有2个人投票,"威尔逊区间"的下限值会将赞成票的比例大幅拉低。这样做固然保证了排名的可信性,但也带来了另一个问题:排行榜前列总是那些票数最多的项目,新项目或者冷门的项目,很难有出头机会,排名可能会长期靠后。以IMDB为例,它是世界最大的电影数据库,观众可以对每部电影投票,最低为1分,最高为10分。系统根据投票结果,计算出每部电影的平均得分。然后,再根据平均得分,排出最受欢迎的前250名的电 阅读全文
posted @ 2012-03-28 22:00 wufawei 阅读(375) 评论(0) 推荐(0)

摘要:公司组织2012 Hackfest比赛,这边共有29支队伍参加,cloud 14支,mobile 15支。我们team获得mobile小组第一名。相当开心,我负责写了crawler,collaborative filtering algorithms, Push Notification.还有其他一些杂活。最后的展现形式,也是在brainstorm的时候,我提的方式展现。大家一起合力完成,各司其职,都有付出。 阅读全文
posted @ 2012-03-26 20:17 wufawei 阅读(159) 评论(0) 推荐(0)

摘要:首先,这篇blog是标题党。看到一篇文章,有个有趣的app。1)android版本。把android版本的看了下,代码是混淆过的。不过还是很容易看出。通信是基于XMPP的,采用的开源的smack, 之前有过对xmpp的介绍,详细参见之前blog。feedback用的是umeng。地图信息用的是baidu map 提供的api,libs目录下是baidu map的库。对了,还有tencent和weibo的分享其他的没看了,根据这些,相信有心人可以直接实现一个了。具体逆向工具和方法,已经满天飞,这里就不给出了。2)iOS版本没法下载下来看。不过找了篇文章,iOS applications reve 阅读全文
posted @ 2012-03-26 01:04 wufawei 阅读(486) 评论(0) 推荐(0)

摘要: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 阅读全文
posted @ 2012-03-25 18:28 wufawei 阅读(616) 评论(0) 推荐(1)

摘要:出品Draw Something的OMGPOP 是如何在3周之内应对3600万用户的呢?采用了:1) Cloud Computing.2) NoSQL参见:How OMGPOP scaled to 36 million users in threeweeksOMGPOP can thank the cloud forits acquisition by Zyngaon Wednesday. The gaming startup, whose Draw Something iPhone app used cloud computing and a NoSQL database to scale 阅读全文
posted @ 2012-03-25 18:13 wufawei 阅读(202) 评论(0) 推荐(0)

摘要:Written byDaveBeckett• Filed underTechnologyAt Digg we have substantially rebuilt our infrastructure over the last year in what we call "Digg V4". This blog post gives a high-level view of the systems and technologies involved and how we use them. Read on to find out the secrets of the Dig 阅读全文
posted @ 2012-03-25 18:10 wufawei 阅读(221) 评论(0) 推荐(0)

摘要:Scraping with Python for Fun and Profit - PyCon India 2010 View more presentations from Abhishek Mishra 阅读全文
posted @ 2012-03-24 00:46 wufawei 阅读(206) 评论(0) 推荐(0)

摘要:Python抓取框架:Scrapy的架构Written by标点符on 2011年07月3日 in程序设计最近在学Python,同时也在学如何使用python抓取数据,于是就被我发现了这个非常受欢迎的Python抓取框架Scrapy,下面一起学习下Scrapy的架构,便于更好的使用这个工具。一、概述下图显示了Scrapy的大体架构,其中包含了它的主要组件及系统的数据处理流程(绿色箭头所示)。下面就来一个个解释每个组件的作用及数据的处理过程。二、组件1、Scrapy Engine(Scrapy引擎)Scrapy引擎是用来控制整个系统的数据处理流程,并进行事务处理的触发。更多的详细内容可以看下面的 阅读全文
posted @ 2012-03-24 00:44 wufawei 阅读(443) 评论(0) 推荐(1)

摘要:之前写过一个crawler。在这个过程中,也发现更多资料,将发几篇blog分享相关slides。互联网访问者大多数不是人类!研究报告显示,网站只有49%的访问者是人类,51%的流量来自于自动程序。51%中:20%来自搜索引擎;5%是黑客工具;5%是内容抓取;2%是垃圾留言发布工具;19%是竞争情报收集工具,如SEO和关键词分析。Crawling the web for fun and profit View more presentations from Federico Feroldi 阅读全文
posted @ 2012-03-23 23:30 wufawei 阅读(170) 评论(0) 推荐(0)

摘要:英文版:How Not To Sort By Average Rating中文版:基于用户投票的排名算法(五):威尔逊区间作者:阮一峰日期:2012年3月20日迄今为止,这个系列都在讨论,如何给出"某个时段"的排名,比如"过去24小时最热门的文章"。但是,很多场合需要的是"所有时段"的排名,比如"最受用户好评的产品"。这时,时间因素就不需要考虑了。这个系列的最后两篇,就研究不考虑时间因素的情况下,如何给出排名。一种常见的错误算法是: 得分 = 赞成票 - 反对票假定有两个项目,项目A是60张赞成票,40张反对票,项 阅读全文
posted @ 2012-03-20 21:41 wufawei 阅读(326) 评论(0) 推荐(0)

摘要:Bootstrap——优秀的开源前端框架2012-02-23 15:56 by 池建强, 2798 visits,收藏,编辑声明:本文已经首发于InfoQ中文站,版权所有,原文为《优秀的开源前端框架Bootstrap发布2.0.1版》,如需转载,请务必附带本声明,谢谢。Bootstrap是著名的社交网站、微博的先驱Twitter在2011年8月推出的开源WEB前端框架,集合CSS和HTML,使用了最新的浏览器技术,为快速WEB开发提供了一套前端工具包,包括布局、网格、表格、按钮、表单、导航、提示等等。使用Bootstrap可以构建出非常优雅的前端界面,而且占用资源非常小。Bootstrap发布 阅读全文
posted @ 2012-03-20 01:47 wufawei 阅读(542) 评论(0) 推荐(0)

摘要:Paul Sciarra,I'm a co-founder:We use python + heavily-modified Django at the application layer. Tornado and (very selectively) node.js as web-servers. Memcached and membase / redis for object- and logical-caching, respectively. RabbitMQ as a message queue. Nginx, HAproxy and Varnish for static-d 阅读全文
posted @ 2012-03-19 21:22 wufawei 阅读(177) 评论(0) 推荐(0)

摘要:Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYC View more PowerPoint from Cal Henderson 阅读全文
posted @ 2012-03-18 22:51 wufawei 阅读(185) 评论(0) 推荐(0)

摘要:Python在豆瓣的应用 View more presentations from Qiangning Hong 阅读全文
posted @ 2012-03-18 19:06 wufawei 阅读(438) 评论(0) 推荐(0)

摘要:How Not To Sort By Average RatingByEvan MillerFebruary 6, 2009(Changes)PROBLEM: You are a web programmer. You have users. Your users rate stuff on your site. You want to put the highest-rated stuff at the top and lowest-rated at the bottom. You need some sort of "score" to sort by.WRONG SO 阅读全文
posted @ 2012-03-18 01:24 wufawei 阅读(681) 评论(0) 推荐(0)

摘要:作者:阮一峰日期:2012年3月16日这个系列的前三篇,介绍了Hacker News,Reddit和Stack Overflow的排名算法。今天,讨论一个更一般的数学模型。这个系列的每篇文章,都是可以分开读的。但是,为了保证所有人都在同一页上,我再说一下,到目前为止,我们用不同方法,企图解决的都是同一个问题:根据用户的投票,决定最近一段时间内的"热文排名"。你可能会觉得,这是一个全新的课题,伴随着互联网而产生,需要全新的方法来解决。但是,实际上不是。我们可以把"热文排名"想象成一个"自然冷却"的过程: (1)任一时刻,网站中所有的文章 阅读全文
posted @ 2012-03-18 01:17 wufawei 阅读(546) 评论(0) 推荐(0)

摘要:作者:阮一峰日期:2012年3月11日上一篇文章,我介绍了Reddit的排名算法。它的特点是,用户可以投赞成票,也可以投反对票。也就是说,除了时间因素以外,只要考虑两个变量就够了。但是,还有一些特定用途的网站,必须考虑更多的因素。世界排名第一的程序员问答社区Stack Overflow,就是这样一个网站。你在上面提出各种关于编程的问题,等待别人回答。访问者可以对你的问题进行投票(赞成票或反对票),表示这个问题是不是有价值。一旦有人回答了你的问题,其他人也可以对这个回答投票(赞成票或反对票)。根据投票结果,系统自动找出最佳回答。排名算法的作用是,找出某段时间内的热点问题,即哪些问题最被关注、得到 阅读全文
posted @ 2012-03-12 23:16 wufawei 阅读(319) 评论(0) 推荐(0)

摘要:基于用户投票的排名算法(二):Reddit作者:阮一峰日期:2012年3月 7日(不好意思,这个系列中断了近两周,我会尽快在这几天,把后面几篇写完。)上一次,我介绍了Hacker News的排名算法。它的特点是用户只能投赞成票,但是很多网站还允许用户投反对票。就是说,除了好评以外,你还可以给某篇文章差评。Reddit是美国最大的网上社区,它的每个帖子前面都有向上和向下的箭头,分别表示"赞成"和"反对"。用户点击进行投票,Reddit根据投票结果,计算出最新的"热点文章排行榜"。怎样才能将赞成票和反对票结合起来,计算出一段时间内最受欢迎 阅读全文
posted @ 2012-03-12 22:09 wufawei 阅读(299) 评论(0) 推荐(0)

摘要:1)在Python3 之前,可以用python -m SimpleHTTPServer在当前目录开启server。也可以指定端口,比如python -m SimpleHTTPServer port。2) 在python3 中,要实现相同的功能,可以用:python3 -m http.server更多关于Python3中的SimpleHTTPServer,参见:SimpleHTTPServer in Python 3 阅读全文
posted @ 2012-03-09 00:12 wufawei 阅读(273) 评论(0) 推荐(0)

摘要:第一部分:在Ubuntu1104 上面安装mosquitto1)安装mosquitto根据http://mosquitto.org/download/上面对ubuntu的安装介绍(https://launchpad.net/+help-soyuz/ppa-sources-list.html)使用下面命令:a) sudoapt-add-repository ppa:mosquitto-dev/mosquitto-ppab)sudo apt-get updatec) sudo apt-get install mosquitto2) 把mosquitto.py,setup.py拷贝到linux下面( 阅读全文
posted @ 2012-03-09 00:03 wufawei 阅读(3346) 评论(0) 推荐(0)

摘要:SoftwareServers / BrokersIBM WebSphere MQ TelemetryThe Telemetry feature is available as an add-on for WebSphere MQ version 7.0.1.3 and above, and is included as an optional extra in the install for WebSphere MQ version 7.1 and above. It provides full MQTT v3.1 support and direct interoperability wi 阅读全文
posted @ 2012-03-08 23:57 wufawei 阅读(931) 评论(0) 推荐(0)

摘要:在基于MQTT实现Android消息推送(Push)中介绍了android客户端使用MQTT的示例代码AndroidPushNotificationsDemo有一个Mosquitto,实现Server/broker的网站,可以用来作为测试网站,使用这个网站发送消息的示例代码如下。#!/usr/bin/env python#coding=utf-8import mosquittoimport osimport timebroker = "test.mosquitto.org"port = 1883mypid = os.getpid()client_uniq = "p 阅读全文
posted @ 2012-03-08 23:53 wufawei 阅读(1366) 评论(0) 推荐(0)

摘要:How to Implement Push Notifications for AndroidHello everyone. In this post I will try to provide you with a quick example on how to implement push notifications for your Android app using MQTT protocol. I will NOT discuss here why an application might need push notifications or the advantages of Pu 阅读全文
posted @ 2012-03-07 23:17 wufawei 阅读(5783) 评论(9) 推荐(0)

摘要:2月中旬开始准备做个儿童保护相关的应用,花了几天时间讨论feature,今天同事提交到market上面。做产品,每个人都有自己的想法,怎么统一是个问题。左脑思维和右脑思维,结合起来才好。今天team有所调整,我充满期待,希望能够和同事们一起做出效果很好的产品。 阅读全文
posted @ 2012-03-06 23:42 wufawei 阅读(160) 评论(0) 推荐(0)

摘要:郑昀20101213Hacker News是Y Combinator旗下的一个新闻频道,属于digg类产品,SEOmoz曾经在2008年7月隆重推出Reddit、Stumbleupon、Del.icio.us和Hacker News算法全揭秘。由此,这些知名Web2.0网站的算法浮出水面。谷文栋曾在2009年时如下讲述了Hacker News的Ranking算法:(p – 1) / (t + 2)^1.5其中,1)p 表示文章得到的投票数,之所以要使用 (p – 1),应该是想去掉文章提交者的那一票。2)(t + 2)^1.5, 这个是时间因子。t 表示当前时间与文章提交时间间隔的小时数。但为 阅读全文
posted @ 2012-03-04 21:30 wufawei 阅读(288) 评论(0) 推荐(0)

摘要:作者:阮一峰日期:2012年2月24日互联网的出现,意味着"信息大爆炸"。用户担心的,不再是信息太少,而是信息太多。如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题。各种各样的排名算法,是目前过滤信息的主要手段之一。对信息进行排名,意味着将信息按照重要性依次排列,并且及时进行更新。排列的依据,可以基于信息本身的特征,也可以基于用户的投票,即让用户决定,什么样的信息可以排在第一位。下面,我将整理和分析一些基于用户投票的排名算法,打算分成四个部分连载,今天是第一篇。一、Delicious最直觉、最简单的算法,莫过于按照单位时间内用户的投票数进行排名。得票 阅读全文
posted @ 2012-03-04 20:51 wufawei 阅读(331) 评论(0) 推荐(0)

摘要:在Quitting an application - is that frowned upon?中,很多人探讨了android中退出app的问题,Google官方是这样说的:Question:Does the user have a choice to kill the application unless we put a menu option in to kill it? If no such option exists, how does the user terminate the application?Answert (Romain Guy):The user doesn' 阅读全文
posted @ 2012-03-04 18:01 wufawei 阅读(217) 评论(0) 推荐(0)

摘要:我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新。得益于Android系统的软件包管理和安装机制,这一功能实现起来相当简单,下面我们就来实践一下。首先给出界面效果:1. 准备知识在AndroidManifest.xml里定义了每个Android apk的版本标识:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.myapp" android:versionCode="1" andro 阅读全文
posted @ 2012-03-04 17:50 wufawei 阅读(292) 评论(0) 推荐(0)

摘要:问题某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为2亿;积分为非负整数,且小于100万。PS: 据说这是迅雷的一道面试题,不过问题本身具有很强的真实性,所以本文打算按照真实场景来考虑,而不局限于面试题的理想环境。存储结构首先,我们用一张用户积分表user_score来保存用户的积分信息。表结构:示例数据:下面的算法会基于这个基本的表结构来进行。算法1:简单SQL查询首先,我们很容易想到用一条简单的SQL语句查询出积分大于该用户积分的用户数量:select 1 + count(t2.uid) as ra 阅读全文
posted @ 2012-03-04 17:26 wufawei 阅读(220) 评论(0) 推荐(0)

摘要:简单基站定位程序介绍了如何获得当前的基站位置,写得详细。下面简单概括一下:在Android操作系统下,基站定位其实很简单,先说一下实现流程:调用SDK中的API(TelephonyManager)获得MCC、MNC、LAC、CID等信息,然后通过google的API获得所在位置的经纬度,最后再通过google map的API获得实际的地理位置。MCC,Mobile Country Code,移动国家代码(中国的为460);MNC,Mobile Network Code,移动网络号码(中国移动为00,中国联通为01);LAC,Location Area Code,位置区域码;CID,Cell I 阅读全文
posted @ 2012-03-04 17:13 wufawei 阅读(1002) 评论(0) 推荐(0)

摘要:关于“点九”智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在界面改变方向后,界面上的图形会因为长宽的变化而产生拉伸,造成图形的失真变形。android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边角会模糊失真。在android平台下使用点九PNG技术,可以将图片横向和纵向同时进行拉伸,以实现在多分辨率下的完美显示效果。“点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png【普通拉伸和点九拉伸效果对比】对比很明显,使用点九后,仍能保留图像的渐变质感,和圆角的精细度。 从中我们也可以理解 阅读全文
posted @ 2012-03-04 17:01 wufawei 阅读(264) 评论(0) 推荐(0)

摘要:不像其他广播包,Intent.ACTION_SCREEN_OFF 和Intent.ACTION_SCREEN_ON不能在manifest中申明,需要用代码注册。Receiver代码如下:public class ScreenReceiver extends BroadcastReceiver { // thanks Jason public static boolean wasScreenOn = true; @Override public void onReceive(Context context, Intent intent) { if ... 阅读全文
posted @ 2012-03-04 16:11 wufawei 阅读(324) 评论(0) 推荐(0)

摘要:现在的不少应用都用到了摇动手机改变内容的功能,比如微信中的“摇一摇”功能。前两天要实现这个功能,稍微看了一下关于传感器Sensor的内容。传感器有几种类型: 方向传感器: Sensor.TYPE_ORIENTATION 加速度(重力)传感器: Sensor.TYPE_ACCELEROMETER 光线传感器: Sensor.TYPE_LIGHT 磁场传感器: Sensor.TYPE_MAGNETIC_FIELD 距离(临近性)传感器: Sensor.TYPE_PROXIMITY 温度传感器: Sensor.TYPE_TEMPERATURE在摇动手机的功能中,我们只用加速... 阅读全文
posted @ 2012-03-04 16:01 wufawei 阅读(1835) 评论(0) 推荐(1)

摘要:用ScrollView 覆盖原来的layout,如下:<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android" ... <!-- Your current layout here --></ScrollView>参见:Soft Keyboard comes over the EditText 阅读全文
posted @ 2012-03-04 15:58 wufawei 阅读(364) 评论(0) 推荐(0)

摘要:现在已经有了一个Android工程A。我们想扩展A的功能,但是不想在A的基础上做开发,于是新建了另外一个Android工程B,想在B中引用A。一个思路是把工程A做成纯Jar包,这样其他的工程就可以直接引用了。但是,如果在工程A中用了R.java中的引用,则无法打成jar包了。原因是R.java是自动生成的,是动态的,每次编译都是不相同的。如果一定要做成jar包,就不能使用自动生成的R文件,用到资源时候就要写代码去获取。另一个思路就是将工程A做成android library project。设置工程A,右键->Properties->Android,将Is library项选中,然 阅读全文
posted @ 2012-03-04 15:53 wufawei 阅读(292) 评论(0) 推荐(0)

摘要:为什么需要反馈Crash报告?做Android应用程序,要尽量避免程序Crash的发生。虽然说零Crash是程序员追逐的最终目标,但是现实的情况是,程序员只能尽量的减少Crash的发生,而几乎不可能完全杜绝Crash。也许,你认为你的应用的健壮性已经近乎完美,轻松的经受住了测试部门魔鬼般的考验,但是当你的应用发布到市场,面对百万甚至千万级别的用户的时候,可能就没有那么幸运了。基于以上原因,一般的应用程序,都要有一个Crash反馈的机制。程序员可以根据反馈的结果,对当前的版本的代码进行改进,使发布的下一个版本更加稳定。如何反馈?先来看如何捕获Crash的发生。Java中有一个接口,Uncaugh 阅读全文
posted @ 2012-03-04 15:51 wufawei 阅读(505) 评论(0) 推荐(0)

摘要:首先要说的是,用户可能把这种做法视为流氓软件。大部分时候,程序员也不想把软件做成流氓软件,没办法,领导说了算。我们在使用某些Android应用的时候,可能会发现安装了某应用以后,会有一些服务也会随之运行。而且,这些服务每次都会随着手机开机而启动。有的服务做的更绝,当用户停止该服务器以后,过了一段时间,服务又自动运行了。虽然,从用户的角度来说,这种方式比较流氓。但是,从程序员的角度来说,这是如何做到的呢?经过研究,我发现有一种方式是可以实现的。下面就和大家分享。先简单介绍,一会儿会贴上全部代码。如何做到开机启动?这个比较简单,网上的资料够多,只要实现一个BroadcastReceiver,监听手 阅读全文
posted @ 2012-03-04 15:44 wufawei 阅读(2289) 评论(0) 推荐(0)

摘要:Android应用开发中, 有一种场景,就是我们不希望用户直接按Back键退出Activity,而是希望应用隐藏到后台,类似于按Home键的效果。下面提供代码示例,请参考。public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);... 阅读全文
posted @ 2012-03-04 15:42 wufawei 阅读(244) 评论(0) 推荐(0)

摘要:1)smack中登陆:Establishing a Connection// Create a connection to the jabber.org server.Connection conn1 = new XMPPConnection("jabber.org");conn1.connect();// Create a connection to the jabber.org server on a specific port.ConnectionConfiguration config = new ConnectionConfiguration("jabb 阅读全文
posted @ 2012-03-01 21:41 wufawei 阅读(2287) 评论(0) 推荐(0)