HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

论如何在 uni-app 上使用 sockjs 以及 stomp(顺便)

GitHub 项目

>本项目可在uni-app 环境上兼容 WebSocket api, 使 sockjs+stomp 可如浏览器环境一般正常运行

> 该方式原理极其简单, 目前简单测试一切 ok, 关键代码在 js/websocket-uni.js 中, 在其中造一个 WebSocket 对象兼容 uni 的 API 即可

> 本项目可运行在 IOS APP 上(模拟器亲测) 以及 浏览器上(浏览器本身就支持 WebSocket), 小程序目测也是 ok的(小程序的 api 被 uni 封装过了, 所以应该是 ok 的)

> 另照此方式, 理论上 写个 websocket-wxmini.js , 然后拿到纯微信小程序上跑目测也是可行的, 单由于本人 996 日夜操劳, 就不亲测了!!

继续阅读 »

GitHub 项目

>本项目可在uni-app 环境上兼容 WebSocket api, 使 sockjs+stomp 可如浏览器环境一般正常运行

> 该方式原理极其简单, 目前简单测试一切 ok, 关键代码在 js/websocket-uni.js 中, 在其中造一个 WebSocket 对象兼容 uni 的 API 即可

> 本项目可运行在 IOS APP 上(模拟器亲测) 以及 浏览器上(浏览器本身就支持 WebSocket), 小程序目测也是 ok的(小程序的 api 被 uni 封装过了, 所以应该是 ok 的)

> 另照此方式, 理论上 写个 websocket-wxmini.js , 然后拿到纯微信小程序上跑目测也是可行的, 单由于本人 996 日夜操劳, 就不亲测了!!

收起阅读 »

安卓原生定位

Native.JS
        var i=0;//执行次数  
        var chenggong=0;//成功次数  
        var shibai=0;//失败次数  

    mui.plusReady(function(){   
            var context = plus.android.importClass("android.content.Context");  
            var locationManager = plus.android.importClass("android.location.LocationManager");  
            var main = plus.android.runtimeMainActivity();  
            var mainSvr = main.getSystemService(context.LOCATION_SERVICE);  

            // 定位方式有network和GPS两种  

            var locationListener = plus.android.implements("android.location.LocationListener", {  
                "onLocationChanged": function(location) {  
                    i++;  
                    chenggong++;  
                    var latitude = plus.android.invoke(location, "getLatitude");  
                    var longitude = plus.android.invoke(location, "getLongitude");  
                    var gpsLocation = "lat:"+ latitude+",lng:"+longitude;  

                    $("#zhixing").val(i);  
                    $("#dingwei").val(chenggong);  
                    $("#area").val(gpsLocation);  

                },  
                "onProviderEnabled": function(res) {  
                },  
                "onProviderDisabled": function(res) {  
                    console.log("无法获取GPS模块,将无法获取经纬度信息!");  
                        i++;  
                        shibai++;  
                        $("#zhixing").val(i);  
                        $("#dingwei").val(shibai);  
                        $("#area").val("");  
                },  
                "onStatusChanged": function(p, s, e) {  
                    console.log(p);  
                }  
            });  
            // locationManager.GPS_PROVIDER 只使用GPS,locationManager参数可以自己百度  
            mainSvr.requestLocationUpdates(locationManager.GPS_PROVIDER, 1000, 0, locationListener);      
    });
继续阅读 »
        var i=0;//执行次数  
        var chenggong=0;//成功次数  
        var shibai=0;//失败次数  

    mui.plusReady(function(){   
            var context = plus.android.importClass("android.content.Context");  
            var locationManager = plus.android.importClass("android.location.LocationManager");  
            var main = plus.android.runtimeMainActivity();  
            var mainSvr = main.getSystemService(context.LOCATION_SERVICE);  

            // 定位方式有network和GPS两种  

            var locationListener = plus.android.implements("android.location.LocationListener", {  
                "onLocationChanged": function(location) {  
                    i++;  
                    chenggong++;  
                    var latitude = plus.android.invoke(location, "getLatitude");  
                    var longitude = plus.android.invoke(location, "getLongitude");  
                    var gpsLocation = "lat:"+ latitude+",lng:"+longitude;  

                    $("#zhixing").val(i);  
                    $("#dingwei").val(chenggong);  
                    $("#area").val(gpsLocation);  

                },  
                "onProviderEnabled": function(res) {  
                },  
                "onProviderDisabled": function(res) {  
                    console.log("无法获取GPS模块,将无法获取经纬度信息!");  
                        i++;  
                        shibai++;  
                        $("#zhixing").val(i);  
                        $("#dingwei").val(shibai);  
                        $("#area").val("");  
                },  
                "onStatusChanged": function(p, s, e) {  
                    console.log(p);  
                }  
            });  
            // locationManager.GPS_PROVIDER 只使用GPS,locationManager参数可以自己百度  
            mainSvr.requestLocationUpdates(locationManager.GPS_PROVIDER, 1000, 0, locationListener);      
    });
收起阅读 »

动态修改导航栏上的按钮状态

导航栏组件

var currentWebview = this.$mp.page.$getAppWebview();
currentWebview.setTitleNViewButtonStyle(1,{
text :this.isStop?'全部暂停':'全部开始',
})

继续阅读 »

var currentWebview = this.$mp.page.$getAppWebview();
currentWebview.setTitleNViewButtonStyle(1,{
text :this.isStop?'全部暂停':'全部开始',
})

收起阅读 »

第三方SDK

uni_app

uni-app怎么引入第三方SDK,我想去引用第三方SDK,但是他没有支持uni-app的资源包,只有android和ios的原生开发资源包,请问我怎么去根据手机系统去引入不同的SDK调用里面的方法

uni-app怎么引入第三方SDK,我想去引用第三方SDK,但是他没有支持uni-app的资源包,只有android和ios的原生开发资源包,请问我怎么去根据手机系统去引入不同的SDK调用里面的方法

关于 nvue 里touchstart等事件无法获取touch坐标的问题 目前解决方法

nvue

因为现在出来了一个新的nvue编译模式“uniapp”模式,所以我就用上了,在使用过程中发现touchstart等事件无法获取touch的坐标,经过测试,这个应该是新的uniapp模式还不完善导致的,我把编译模式改回来,再把组件改为weex组件,就能够获取到坐标了。

继续阅读 »

因为现在出来了一个新的nvue编译模式“uniapp”模式,所以我就用上了,在使用过程中发现touchstart等事件无法获取touch的坐标,经过测试,这个应该是新的uniapp模式还不完善导致的,我把编译模式改回来,再把组件改为weex组件,就能够获取到坐标了。

收起阅读 »

意见反馈:左侧项目管理器里面的文档列表,能否按修改时间排序?

项目管理器

目前文档列表是按文件名来排序的,找文件不是那么方便,如果能按文件修改时间由近到远来排序就方便多了

目前文档列表是按文件名来排序的,找文件不是那么方便,如果能按文件修改时间由近到远来排序就方便多了

壮哉! 我大 uni-app 生态

感概贴

感概贴

【全球架构师峰会 干货分享】大数据在金融风控中如何应用?

作者:个推高级数据工程师 晓骏

众所周知,金融是数据化程度最高的行业之一,也是人工智能和大数据技术重要的应用领域。随着大数据收集、存储、分析和模型技术日益成熟,大数据技术逐渐应用到金融风控的各个环节。个推作为专业的数据智能服务商,拥有海量数据资源,在智慧金融领域也推出了相应的数据解决方案,为金融客户提供智能反欺诈、多维信贷风险评估和高意愿用户智能筛选等全流程的数据服务,助力各金融机构全面提升风控能力。本文将围绕大数据风控,结合个推实践,介绍金融风控机器学习的基本流程、算法实践和产品化建设等内容。



风控流程 & 多维度特征

大数据风控的内容
数据是风控的核心要素,大数据风控实际上就是对数据的处理、建模和应用的过程。大数据风控的流程主要分为四个阶段:数据获取、数据分析、数据建模、风控产品应用。对获取到的海量数据进行清洗和挖掘,有针对性地对金融特征进行深加工;接着通过规则策略和模型算法的构建,对外输出相应的风控服务。

个推以消息推送服务起家,为数十万APP提供高效稳定的推送服务,并沉淀了丰富的数据资源,覆盖超过40亿终端设备,数据全面、广泛且有深度。利用设备基础信息、线上APP偏好数据、线下场景数据以及外部补充数据,个推构建了8个维度、350+特征,同时对特征进行动态更新。基本属性、资产、金融、行为偏好、社会属性、消费偏好、风险和稳定性构成了个推金融数据的八大维度;个推利用数据的八大维度,逾350种特征进行模型构建,并将其应用于金融风控各环节。

金融风控机器学习的基本流程
整个风控建模流程,在个推大数据平台上完成。首先,对持续更新的海量一手数据进行收集、清洗、存储,在数据存储前进行ID打通;第二步,对清洗好的原数据进行特征构建;最后,利用多维度特征进行金融风控模型构建,用到的技术包括协同推荐算法、LR算法、XGBoost、营销模型、多头模型和信用分模型等。


建模流程

如何高效构建特征,是风控建模中一个至关重要的问题。在实践中,个推会对特征进行稳定性分析、脏数据/异常数据处理、特征分箱、特征聚合和特征有效性验证。特征评估指标则包括IV值、Gain值、单调性、稳定性和饱和度等。

风控场景机器学习的算法实践
利用上述多维度特征和建模能力,增能于贷前、贷中和贷后全流程:拉、选、评、管、催五大环节。

全流程数据增能

拉-营销模型,甄别虚假注册,评估借贷意愿

在拉新获客阶段,个推制定贴合大额、小额两种营销场景需求的营销模型,通过规则策略、模型策略、风控策略三管齐下,帮助客户识别“真人”,有效降低获客成本、提升注册率和转化率。客户可通过提供样本数据,通过个推来完成建模,同时,在缺乏样本数据的情况下,个推依托自身积累的海量样本数据,可以构建出多种营销场景下的通用模型,供客户使用。

选-贷前的审核,识别欺诈人群,防范恶意骗贷

贷前审核阶段我们通常采取两个策略:欺诈分模型、风险人群筛选。欺诈分模型指的是根据客户提供的数据信息在个推平台进行数据转换、特征匹配,并对其风险特征予以筛选,利用预设规则予以打分,最后得出相应的欺诈分。个推在逾350种特征中识别出数几十种风险特征。举例来说,当某用户安装小贷类APP达到多款以上,或线下到访场景异常,或该用户命中黑名单都会被识别为风险特征。根据欺诈分的高低予以排序,为客户列出不准入人员、需重点关注人员等。

风险人群筛选指的是根据用户存在的风险特征数量及程度,梳理出风险人员。个推利用筛选出的8种维度、350+特征,通过模型预测和规则制定,输出三类风险人群:黑名单、灰名单、多头名单。多头名单顾名思义,当某用户频繁安装或卸载多款借贷类APP时则会被模型系统判定为多头人员;灰名单指的是稳定性较差的人员,黑名单指的是异常人员。在贷前审核阶段,黑名单人员可直接不予以准入,灰名单和多头人员则需要重点关注。

评-信用分模型,贷前信用评估,辅助贷款定额

在评的阶段,个推采用信用分模型,为客户输出用户的信用评分。信用评分由五种维度构建而成:资产、身份、稳定性、关系、行为。个推信用评分模型先根据模型训练与规则模型,得到各个维度分,再将五个维度的个人评分作为特征输入模型,作为特征得到总体个人信用分。

信用分模型由多个模型整合而成,第一层是分类模型(lr+xgboost),得到分值;第二层在维度分的基础上再进行回归,得到最终信用评分。

管-贷中管控,监测异常特征,实现风险预警

在管的环节,个推采用贷中监测模型。从整体人群筛选出逾期相似(相关)人群,结合实时数据与高危特征异常监测得到高疑用户,结合客户的实际需求,对此类用户通过进一步的精准研判得到逾期风险人员,将此类人员告知客户,让其予以重点关注或排查。

催-贷后催管,催回价值评估,提高催回效率

在催的环节,个推基于自身构建的催回评分系统,可以有效指导金融机构制定差异化催管策略,助力更高效地完成催收工作。比如,当客户出现逾期和坏账时,金融机构通过个推的催回评分,对用户的还款能力和还款意愿进行评估,从而判断哪些用户优先催。

风控系统产品化
前面几个流程主要讲的是个推利用多维度特征自主构建风控模型,但在很多业务场景客户希望快速构建特征、快速返回风控结果。为此,我们研发上线个真决策引擎,在规则设计层为客户提供风控规则,让业务人员在规则执行层通过规则性加工进行灵活操作,目前已提供给部分客户试用。


风控决策引擎

如今,科技与金融深度交融的时代已经到来,金融风险控制任重而道远,。个推将持续挖掘其丰富的数据资产,不断打磨自身技术,助力金融行业运作效率和服务能力的全面提升。

(本文所有图片均来源于个推)

更多技术干货,请关注公众号:个推技术学院。

继续阅读 »

作者:个推高级数据工程师 晓骏

众所周知,金融是数据化程度最高的行业之一,也是人工智能和大数据技术重要的应用领域。随着大数据收集、存储、分析和模型技术日益成熟,大数据技术逐渐应用到金融风控的各个环节。个推作为专业的数据智能服务商,拥有海量数据资源,在智慧金融领域也推出了相应的数据解决方案,为金融客户提供智能反欺诈、多维信贷风险评估和高意愿用户智能筛选等全流程的数据服务,助力各金融机构全面提升风控能力。本文将围绕大数据风控,结合个推实践,介绍金融风控机器学习的基本流程、算法实践和产品化建设等内容。



风控流程 & 多维度特征

大数据风控的内容
数据是风控的核心要素,大数据风控实际上就是对数据的处理、建模和应用的过程。大数据风控的流程主要分为四个阶段:数据获取、数据分析、数据建模、风控产品应用。对获取到的海量数据进行清洗和挖掘,有针对性地对金融特征进行深加工;接着通过规则策略和模型算法的构建,对外输出相应的风控服务。

个推以消息推送服务起家,为数十万APP提供高效稳定的推送服务,并沉淀了丰富的数据资源,覆盖超过40亿终端设备,数据全面、广泛且有深度。利用设备基础信息、线上APP偏好数据、线下场景数据以及外部补充数据,个推构建了8个维度、350+特征,同时对特征进行动态更新。基本属性、资产、金融、行为偏好、社会属性、消费偏好、风险和稳定性构成了个推金融数据的八大维度;个推利用数据的八大维度,逾350种特征进行模型构建,并将其应用于金融风控各环节。

金融风控机器学习的基本流程
整个风控建模流程,在个推大数据平台上完成。首先,对持续更新的海量一手数据进行收集、清洗、存储,在数据存储前进行ID打通;第二步,对清洗好的原数据进行特征构建;最后,利用多维度特征进行金融风控模型构建,用到的技术包括协同推荐算法、LR算法、XGBoost、营销模型、多头模型和信用分模型等。


建模流程

如何高效构建特征,是风控建模中一个至关重要的问题。在实践中,个推会对特征进行稳定性分析、脏数据/异常数据处理、特征分箱、特征聚合和特征有效性验证。特征评估指标则包括IV值、Gain值、单调性、稳定性和饱和度等。

风控场景机器学习的算法实践
利用上述多维度特征和建模能力,增能于贷前、贷中和贷后全流程:拉、选、评、管、催五大环节。

全流程数据增能

拉-营销模型,甄别虚假注册,评估借贷意愿

在拉新获客阶段,个推制定贴合大额、小额两种营销场景需求的营销模型,通过规则策略、模型策略、风控策略三管齐下,帮助客户识别“真人”,有效降低获客成本、提升注册率和转化率。客户可通过提供样本数据,通过个推来完成建模,同时,在缺乏样本数据的情况下,个推依托自身积累的海量样本数据,可以构建出多种营销场景下的通用模型,供客户使用。

选-贷前的审核,识别欺诈人群,防范恶意骗贷

贷前审核阶段我们通常采取两个策略:欺诈分模型、风险人群筛选。欺诈分模型指的是根据客户提供的数据信息在个推平台进行数据转换、特征匹配,并对其风险特征予以筛选,利用预设规则予以打分,最后得出相应的欺诈分。个推在逾350种特征中识别出数几十种风险特征。举例来说,当某用户安装小贷类APP达到多款以上,或线下到访场景异常,或该用户命中黑名单都会被识别为风险特征。根据欺诈分的高低予以排序,为客户列出不准入人员、需重点关注人员等。

风险人群筛选指的是根据用户存在的风险特征数量及程度,梳理出风险人员。个推利用筛选出的8种维度、350+特征,通过模型预测和规则制定,输出三类风险人群:黑名单、灰名单、多头名单。多头名单顾名思义,当某用户频繁安装或卸载多款借贷类APP时则会被模型系统判定为多头人员;灰名单指的是稳定性较差的人员,黑名单指的是异常人员。在贷前审核阶段,黑名单人员可直接不予以准入,灰名单和多头人员则需要重点关注。

评-信用分模型,贷前信用评估,辅助贷款定额

在评的阶段,个推采用信用分模型,为客户输出用户的信用评分。信用评分由五种维度构建而成:资产、身份、稳定性、关系、行为。个推信用评分模型先根据模型训练与规则模型,得到各个维度分,再将五个维度的个人评分作为特征输入模型,作为特征得到总体个人信用分。

信用分模型由多个模型整合而成,第一层是分类模型(lr+xgboost),得到分值;第二层在维度分的基础上再进行回归,得到最终信用评分。

管-贷中管控,监测异常特征,实现风险预警

在管的环节,个推采用贷中监测模型。从整体人群筛选出逾期相似(相关)人群,结合实时数据与高危特征异常监测得到高疑用户,结合客户的实际需求,对此类用户通过进一步的精准研判得到逾期风险人员,将此类人员告知客户,让其予以重点关注或排查。

催-贷后催管,催回价值评估,提高催回效率

在催的环节,个推基于自身构建的催回评分系统,可以有效指导金融机构制定差异化催管策略,助力更高效地完成催收工作。比如,当客户出现逾期和坏账时,金融机构通过个推的催回评分,对用户的还款能力和还款意愿进行评估,从而判断哪些用户优先催。

风控系统产品化
前面几个流程主要讲的是个推利用多维度特征自主构建风控模型,但在很多业务场景客户希望快速构建特征、快速返回风控结果。为此,我们研发上线个真决策引擎,在规则设计层为客户提供风控规则,让业务人员在规则执行层通过规则性加工进行灵活操作,目前已提供给部分客户试用。


风控决策引擎

如今,科技与金融深度交融的时代已经到来,金融风险控制任重而道远,。个推将持续挖掘其丰富的数据资产,不断打磨自身技术,助力金融行业运作效率和服务能力的全面提升。

(本文所有图片均来源于个推)

更多技术干货,请关注公众号:个推技术学院。

收起阅读 »

nvue使用vuex的解决方案

vuex nvue

在main.js中挂载Vuex
但是在nvue页面无法使用this.$store.state.xxx
于是找文档看评论说都无法解决,没办法只好自己想办法解决了

下面提供两种方式:
方式一:
1.通过globalData建立公用变量 不懂的移步文档地址

  1. 把vuex挂在globalData
  2. nvuex操作更改挂载在globalData的vuex变量 getApp().globalData.vuex 操作就行
    注:此方法是我现在在用的

方式二:
1.通过 onUniNViewMessage 去监听nvue页面发送的消息 再去操作store 文档地址
2.在nvue页面中通过postMessage发送数据

没有测试过,但是理论上是没有问题的。大家可以测试下

继续阅读 »

在main.js中挂载Vuex
但是在nvue页面无法使用this.$store.state.xxx
于是找文档看评论说都无法解决,没办法只好自己想办法解决了

下面提供两种方式:
方式一:
1.通过globalData建立公用变量 不懂的移步文档地址

  1. 把vuex挂在globalData
  2. nvuex操作更改挂载在globalData的vuex变量 getApp().globalData.vuex 操作就行
    注:此方法是我现在在用的

方式二:
1.通过 onUniNViewMessage 去监听nvue页面发送的消息 再去操作store 文档地址
2.在nvue页面中通过postMessage发送数据

没有测试过,但是理论上是没有问题的。大家可以测试下

收起阅读 »

使用 editor 组件导出的 html

editor

在 uni-app 中使用

在 editor 组件显示

使用EditorContext.setContents接口设置内容即可

在 rich-text 组件显示

设置 nodes 属性值为 editor 组件导出的 html 即可,若想和 editor 组件样式保持一致可以需要给 rich-text 组件和其父级组件设置对应的 class,如:

<view class="ql-container">  
    <rich-text class="ql-editor" :nodes="html"></rich-text>  
</view>

使用插件解析 html(以 u-parse 为例)

  1. 下载此 css
  2. 将里面的标签名改为类名,如 .ql-container img 改为 .ql-container .img
  3. 在页面中引入修改后的css
  4. 标签结构如下
    <view class="ql-container">  
    <u-parse class="ql-editor" :content="article" @preview="preview" @navigate="navigate" ></u-parse>  
    </view>

在 web 页面中使用

  1. 在 html 页面中引入此 css
  2. 将 editor 组件导出的 html 内容放入如下标签结构中
    <div class="ql-container">  
    <div class="ql-editor" >  
        editor 组件导出的 html  
    <div/>  
    <div/>
继续阅读 »

在 uni-app 中使用

在 editor 组件显示

使用EditorContext.setContents接口设置内容即可

在 rich-text 组件显示

设置 nodes 属性值为 editor 组件导出的 html 即可,若想和 editor 组件样式保持一致可以需要给 rich-text 组件和其父级组件设置对应的 class,如:

<view class="ql-container">  
    <rich-text class="ql-editor" :nodes="html"></rich-text>  
</view>

使用插件解析 html(以 u-parse 为例)

  1. 下载此 css
  2. 将里面的标签名改为类名,如 .ql-container img 改为 .ql-container .img
  3. 在页面中引入修改后的css
  4. 标签结构如下
    <view class="ql-container">  
    <u-parse class="ql-editor" :content="article" @preview="preview" @navigate="navigate" ></u-parse>  
    </view>

在 web 页面中使用

  1. 在 html 页面中引入此 css
  2. 将 editor 组件导出的 html 内容放入如下标签结构中
    <div class="ql-container">  
    <div class="ql-editor" >  
        editor 组件导出的 html  
    <div/>  
    <div/>
收起阅读 »