rel="nofollow">mapValuesLimit
  • filter
  • filterSeries
  • filterLimit
  • select -> filter
  • selectSeries -> filterSeries
  • selectLimit -> filterLimit
  • reject
  • rejectSeries
  • rejectLimit
  • detect
  • detectSeries
  • detectLimit
  • find -> detect
  • findSeries -> detectSeries
  • findLimit -> detectLimit
  • pick *
  • pickSeries *
  • pickLimit *
  • omit *
  • omitSeries *
  • omitLimit *
  • reduce
  • inject -> reduce
  • foldl -> reduce
  • reduceRight
  • foldr -> reduceRight
  • transform
  • transformSeries *
  • transformLimit *
  • sortBy
  • sortBySeries *
  • sortByLimit *
  • some
  • someSeries
  • someLimit
  • any -> some
  • anySeries -> someSeries
  • anyLimit -> someLimit
  • every
  • everySeries
  • everyLimit
  • all -> every
  • allSeries -> every
  • allLimit -> every
  • concat
  • concatSeries
  • concatLimit *
  • Control Flow

    Utils

    Mode

    Benchmark

    Benchmark: Async vs Neo-Async

    How to check

    $ git clone git@github.com:suguru03/async-benchmark.git
    $ cd async-benchmark
    $ npm install
    $ node . // It might take more than one hour...
    

    Environment

    Result

    Neo-Async is 1.27 ~ 10.7 times faster than Async.

    The value is the ratio (Neo-Async/Async) of the average speed.

    Collections

    function benchmark func-comparator
    each 3.71 2.54
    eachSeries 2.14 1.90
    eachLimit 2.14 1.88
    eachOf 3.30 2.50
    eachOfSeries 1.97 1.83
    eachOfLimit 2.02 1.80
    map 4.20 4.11
    mapSeries 2.40 3.65
    mapLimit 2.64 2.66
    mapValues 5.71 5.32
    mapValuesSeries 3.82 3.23
    mapValuesLimit 3.10 2.38
    filter 8.11 8.76
    filterSeries 5.79 4.86
    filterLimit 4.00 3.32
    reject 9.47 9.52
    rejectSeries 7.39 4.64
    rejectLimit 4.54 3.49
    detect 6.67 6.37
    detectSeries 3.54 3.73
    detectLimit 2.38 2.62
    reduce 4.13 3.23
    reduceRight 4.23 3.24
    transform 5.30 5.17
    sortBy 2.24 2.37
    some 6.39 6.10
    someSeries 5.37 4.66
    someLimit 3.39 2.84
    every 6.85 6.27
    everySeries 4.53 3.90
    everyLimit 3.36 2.75
    concat 9.18 9.35
    concatSeries 7.49 6.09

    Control Flow

    funciton benchmark func-comparator
    parallel 7.54 5.45
    series 3.29 2.41
    waterfall 5.12 4.27
    whilst 1.96 1.95
    doWhilst 2.07 1.96
    until 2.10 1.99
    doUntil 1.98 2.04
    during 10.7 7.09
    doDuring 5.98 6.03
    queue 1.83 1.75
    priorityQueue 1.79 1.75
    times 3.84 3.65
    race 1.45 1.27
    auto 3.23 3.50
    retry 9.43 6.78
    kodo - Gogs: Go Git Service

    Nessuna descrizione

    views.py 5.6KB

      # -*- coding: utf-8 -*- import os from django.conf import settings from django.shortcuts import redirect from django_logit import logit from django_response import response from account.models import UserInfo from operation.models import FeedbackInfo, GuestEntranceControlInfo, LatestAppInfo, SplashInfo from utils.error.errno_utils import UserStatusCode from utils.redis.rapp import get_latest_app from utils.redis.rguest import get_guest_entrance_control from utils.redis.roperation.rbox_program_version import get_box_program_version from utils.redis.rpatch import get_app_patch_info from utils.redis.rsettings import get_app_settings_info from utils.version_utils import is_version_match @logit def upgrade_api(request): """ APP 升级 """ src = int(request.POST.get('src', 0)) latest_app = get_latest_app(src) if request.iOS: appinfo = { 'latest_version_code': latest_app.get('latest_ios_version_code', ''), 'latest_version_name': latest_app.get('latest_ios_version_name', ''), 'latest_url': latest_app.get('latest_ios_url', ''), } else: appinfo = { 'latest_version_code': latest_app.get('latest_adr_version_code', ''), 'latest_version_name': latest_app.get('latest_adr_version_name', ''), 'latest_url': latest_app.get('latest_adr_url', ''), } return response(200, 'Get Latest App Success', u'获取最新版信息成功', { 'appinfo': appinfo, }) @logit def patch_api(request): """ APP 补丁 """ platform = request.GET.get('platform', '') or request.POST.get('platform', '') version = request.GET.get('version', '') or request.POST.get('version', '') src = int(request.POST.get('src', 0)) patch_info = get_app_patch_info(platform, version, src) return response(200, 'Get Patch Info Success', u'获取补丁信息成功', { 'patch_url': patch_info.get('patch_url', ''), }) @logit def online_api(request): """ 是否上线 """ platform = request.GET.get('platform', '') or request.POST.get('platform', '') channel = request.GET.get('channel', '') or request.POST.get('channel', '') version = request.GET.get('version', '') or request.POST.get('version', '') app_settings = get_app_settings_info(platform, channel, version) return response(200, 'Get Online Status Success', u'获取是否上线成功', { 'online': app_settings.get('online', True), }) @logit def guest_api(request): """ 游客状态 """ src = int(request.POST.get('src', 0)) gen = get_guest_entrance_control(src) # 是否配置游客入口控制信息 if not gen: return response(UserStatusCode.GUEST_NOT_ALLOWED) # 平台校验 platform = gen.get('platform', '') if request.Android: if platform not in [GuestEntranceControlInfo.ADR, GuestEntranceControlInfo.BOTH]: return response(UserStatusCode.GUEST_NOT_ALLOWED) else: if platform not in [GuestEntranceControlInfo.IOS, GuestEntranceControlInfo.BOTH]: return response(UserStatusCode.GUEST_NOT_ALLOWED) # 版本校验 if not is_version_match(request, gen): return response(UserStatusCode.GUEST_NOT_ALLOWED) return response(200, 'Guest Login Allowed', u'游客登录开启') @logit def splash_api(request): """ 启动页面 """ src = int(request.POST.get('src', 0)) splashes = SplashInfo.objects.filter(src=src, status=True) splashes = [splash.data for splash in splashes] return response(200, 'Get Splash Success', u'获取最新版信息成功', { 'splashes': splashes, }) @logit def feedback_api(request): """ 用户反馈 """ user_id = request.POST.get('user_id', '') feedback = request.POST.get('feedback', '') src = int(request.POST.get('src', 0)) if not UserInfo.objects.filter(user_id=user_id, status=True).exists(): return response(UserStatusCode.USER_NOT_FOUND) FeedbackInfo.objects.create( user_id=user_id, feedback=feedback, src=src, ) return response(200, 'Feedback Success', u'反馈成功') def download_api(request): """ 下载接口 """ src = int(request.GET.get('src', 0)) if request.weixin: if src == LatestAppInfo.PAIAI_USER: wx_url = settings.PAI2_USER_DOWNLOAD_WX_URL elif src == LatestAppInfo.PAIAI_LENSMAN: wx_url = settings.PAI2_LENSMAN_DOWNLOAD_WX_URL elif src == LatestAppInfo.PAIAI_TOURGUIDE: wx_url = settings.PAI2_TOURGUIDE_DOWNLOAD_WX_URL return redirect(wx_url) if request.iOS: if src == LatestAppInfo.PAIAI_USER: ios_url = settings.PAI2_USER_DOWNLOAD_IOS_URL elif src == LatestAppInfo.PAIAI_LENSMAN: ios_url = settings.PAI2_LENSMAN_DOWNLOAD_IOS_URL elif src == LatestAppInfo.PAIAI_TOURGUIDE: ios_url = settings.PAI2_TOURGUIDE_DOWNLOAD_IOS_URL return redirect(ios_url) return redirect(get_latest_app(src).get('latest_adr_url', '')) def kvformat(bpversion, k): v = bpversion.get(k, '') return '"{}":{}'.format(k, v) if isinstance(v, int) else '"{}":"{}"'.format(k, v) def box_program_version_api(request): """ BOX 程序版本信息 """ bpversion = get_box_program_version() keys = ['srv_version_code', 'srv_version_name', 'srv_sha1', 'proc_version_code', 'proc_version_name', 'proc_sha1'] kvs = [kvformat(bpversion, k) for k in keys] bpversion_str = os.linesep.join(kvs) return response(200, 'Get Box Program Version Success', u'获取盒子程序版本成功', { 'bpversion': bpversion, 'bpversion_str': bpversion_str, })