在IOS开发中,总是会有很多的重复性的事件需要去做,特别是在开发ios社交APP的时候,很多工具的应用,需要很熟悉,所以在本篇就介绍一下几个常用的小工具,以方便大家IOS开发时的使用。
一、输入频率检测
如今多数都会用Redis去做三件事情:1. 存Token 2. 记录用户在线状态 3. 做频率检测 现在来介绍频率检测的实现。
对频率检测的要求:
1. 按业务区分,不同业务有自己不同的检测需求,比如发布评论只能2s钟发布一次,但是短信认证一天最多只能发五条短信。
2. 同一业务有不同的时间段要求,比如发布评论只能2s发布一次,但是要求一天发布的次数不能超过200次等等。
过期时间检测的大体思路是这样,每个用户的某个行为都算作redis里面的一个key,比如threshold:comment:10000, comment是指评论行为,10000是用户的id, 值是次数,每操作一次,就进行一次incr操作,redis过期时间为时间段要求,每次从redis里面获取这个key的值,跟最大次数做比较,超过最大次数则说明超过限度。
二、用户输入验证
用Python装饰器做用户输入验证特别爽,就不用写一堆蛋疼丑陋又麻烦的if else了
三、一些小细节
有一些小的细节,比如获取用户输入,用web.py的web.input()可能不是很方便,我们经常会把提交过来的东西从input字典里面拿出来赋值给一个个变量或者总是需要strip一下再使用等等,因此就做了个获取用户输入的工具:
view sourceprint?01 import web
02
03 def form(is_strip, *args):
04 form_data = web.input()
05 values = []
06 for arg in args:
07 value = form_data.get(arg, '')
08 if is_strip:
09 value = value.strip()
10 values.append(value)
11 if len(values) == 1:
12 return values[0]
13 else:
14 return values
15
16 def form2model(is_strip, model_class, exclude=()):
17 model = model_class()
18 form_data = web.input()
19 for field in form_data:
20 #排除一些特殊Field
21 if field in exclude or field == 'submit' or field == 'captcha' \
22 or field.endswith('_btn') or field == 'formkey':
23 continue;
24 value = form_data[field].strip() if is_strip else form_data[field]
25 model.__dict__[field] = value
26 return model
这样获取输入就很方便了,就像这样:
view sourceprint?1 name, age = form(True, 'name', 'age')
第一个参数如果为true那么说明需要对参数进行strip
第二个函数可以把用户的输入直接转换为一个Python对象。
基本的ios开发工具就是这些了,虽然是很小的开发工具,但是在实际的操作中也能有效提高开发的效率和代码的可维护性。