;

1.登录到微信支付(https://pay.weixin.qq.com/),提交各种企业资料开通微信支付功能 2.获取商户号和API密钥(初次设置需要先设置操作密码) 小程序端: testWxCloudPay: function () { wx.cloud.callFunction({ name: ‘getPay’, // data: {body:"body",attach:"attach",total_fee:1}, // 可传入相关参数。 success: res => { console.log(res.result) if (!res.result.appId) return wx.requestPayment({ …res.result, success: res => { console.log(res) } }) } }) }, 云函数getPay: const key = "ABC…XYZ" //换成你的商户key,32位 const mch_id = "1413092000" //换成你的商户号 //以下全部照抄即可 const cloud = require(‘wx-server-sdk’) const rp = requi…

小程序云开发接入微信支付 2020年4月15日
;

环境初始化 1.创建新项目,启用云函数 2.所有文件复制后,云函数需要现在本地安装依赖包,再上传到云端 3.手动创建数据库,并确保权限无误,初始化config表 4.数据库设置索引,应为所有需要成为查询条件的字段建立索引 5.确保开发工具中的基础库版本一致 支付成功后发送提示消息 6.小程序后台添加订阅消息,注意不同行业消息字段不同 7.前端及云函数代码中都要填写模板ID,同时检查对应字段参数 客服 8.小程序后台添加客服,有新消息在“客服小助手”中回复 客服自动回复 9.云开发控制台->全局设置->添加消息推送配置->设置要触发的云函数(生效好像有延迟,刚添加不生效,等一会就好了) 小程序菊花码 10.images目录下小程序码更换 其他问题 11.如有奇怪问题可以查看基础库版本2.11.2

商城部署注意事项 2020年4月15日
;

1 背景 在PC端反抓取过程中为了识别爬虫,其中一种方式通过上报请求者的设备信息,通过设备信息来识别是否是一个爬虫。 当请求目标网站后,必须请求一个指纹计算脚本,该脚本收集设备信息,根据这些设备信息计算出一段数值并作为指纹,最终将计算结果发送给服务器。 浏览器设备信息包括navigator.userAgent、window.screen、navigator.languages等。抓取者在抓取时通常会自己构造请求、或使用无头浏览器工具,例如phantomJs。而这些工具的设备信息实际上会和真实浏览器有一定差异。因此根据这些差异达到识别的目的。 2 指纹脚本 以github上一个指纹库[1]为例,其中检测虚假浏览器的代码片段如下。 var getHasLiedBrowser = function () { var userAgent = navigator.userAgent.toLowerCase() var productSub = navigator.productSub // we extract the browser from the user agent (respect the order of the tests) var browser if (userAgent.indexOf(‘firefox’) >= 0) { b…

反爬虫之浏览器指纹上报代码的分析 2020年4月9日
;

Automated auditing, performance metrics, and best practices for the web https://github.com/GoogleChrome/lighthouse 1、在chrome开发者工具中使用lighthouse Lighthouse是直接集成到chrome开发者工具中的,位于‘Audits’面板下。 2、使用Node Cli npm install -g lighthouse lighthouse http://willless.com/

Lighthouse前端性能优化测试工具 2020年4月9日
;

1.下载 http://airtest.netease.com/changelog.html 2.手机开启usb调试 华为手机开启方式 https://jingyan.baidu.com/article/a3aad71a0a4c4eb1fb00963a.html 3.AirtestIDE中操作 http://airtest.netease.com/docs/cn/2_device_connection/1_android_phone_connection.html https://www.cnblogs.com/xieqiankun/p/use_airtest.html

AirtestIDE进行小程序ui测试 2020年4月8日
;

1.图片绘制到canvas <canvas type="2d" id="canvas"></canvas> <view catchtap="canvasSave">保存到相册</view> onLoad: function (options) { wx.createSelectorQuery() .select(‘#canvas’) .fields({ node: true, size: true, }) .exec(this.drawInit.bind(this)) }, drawInit: function (res) { const width = res[0].width const height = res[0].height const canvas = res[0].node const ctx = canvas.getContext(‘2d’) const dpr = wx.getSystemInfoSync().pixelRatio const canvasWidth = width * dpr const canvasHeight = height * dpr canvas.width = canvasWidth c…

小程序canvas生成分享图 2020年3月30日
;

1.单字段 var keyWord = ‘abc’ const db = wx.cloud.database() const _ = db.command db.collection(‘product’).where({ title: { $regex: ‘.*’ + keyWord, $options: ‘i’ } }).get() 2.多字段 var keyWord = ‘abc’ const db = wx.cloud.database() const _ = db.command db.collection(‘product’).where(_.or([ { title: db.RegExp({ regexp: ‘.*’ + keyWord, options: ‘i’, }) }, { subtitle: db.RegExp({ regexp: ‘.*’ + keyWord, options: ‘i’, }) } ])).get()

微信小程序云开发中模糊查询 2020年3月10日
;

说明:用户头像名称等作为公开数据以前需要通过wx.getUserInfo接口获取,这个过程中会有弹框让用户授权,估计是觉得这个流程小题大做了,因此现在这部分数据可以直接通过open-data组件展示,但是要进一步获取更多身份特征信息就需要用button组件。 方式一: <open-data type="userAvatarUrl"></open-data> <open-data type="userNickName"></open-data> 方式二: <button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">获取用户信息</button> onGotUserInfo: function (e) { console.log(e.detail.errMsg) console.log(e.detail.userInfo) console.log(e.detail.rawData) } 授权弹框中已经没有了拒绝按钮,因此可以重复弹出 其它: 云开发方式默认已经获取到了openid因此w…

wx.getUserInfo接口废弃,改用button和open-data 2020年3月2日
;

1.svg标签直接在页面中 svg { fill: currentColor; //currentColor为css变量,自动读取当前元素颜色 } 2.通过img引入的svg文件 此时css对svg文件无法生效,此时要用到CSS3滤镜filter中的drop-shadow,通过生产一个可指定颜色的阴影放置于svg的位置,并将原始svg移出视线 <img src="img/success.svg"> img{ position: relative; left: -80px; filter: drop-shadow(#fff 80px 0); } 备注:drop-shadow可用于png图片变色

通过img引入的svg如何改颜色? 2020年2月21日
;

1.问题描述 通过addEventListener添加事件,代码多次触发后会导致重复的click事件累加 2.问题原因 addEventListener对同一个事件是可以多次添加的,多次调用就会重复添加 3.解决方案一,每次添加后通过removeEventListener将其注销 var btn = document.getElementById(‘btn’); // 添加事件绑定 btn.addEventListener(‘click’, btnClick, false); // 按钮点击方法 function btnClick() { console.log(‘hello’); // 删除事件绑定 btn.removeEventListener(‘click’, btnClick, false); } 4.解决方案二,通过onclick的方式添加,这样的事件只会添加一次

js中click事件多次触发的处理 2020年2月19日
;

1.作用 元素内通过字符串添加节点 2.jquery中使用 $ele.append(‘<div id="two">two</div>’); 3.原生api var d1 = document.getElementById(‘one’); d1.insertAdjacentHTML(‘afterend’, ‘<div id="two">two</div>’); 第一个参数为插入的位置 <!– beforebegin –> <p> <!– afterbegin –> foo <!– beforeend –> </p> <!– afterend –> 4.其它方法appendChild 参数必须为node类型,通过createElement创建,遇到多层嵌套,较为繁琐 5.另一种方法innerHTML拼接 先获取本来的innerHTML和新追加的部分拼接到一起,再重新赋值给innerHTML 6.如何把字符串模板转为node节点 var str='<div><span>aaa</span></div>’; let tempNod…

原生js使用insertAdjacentHTML实现jquery中的append功能 2020年2月19日
;

1.问题描述 在不同的DOM元素之间通过拖拽实现内容交换,此时对正在交互中的元素用一个active类做标记,drag离开后取消active,需求本身很简单,但是实现过程中发现每次从对象元素进入子元素中也会触发dragleave。 dragenter,dragleave的触发类似于mouseover,mouseout而满足当前需求的mouseenter,mouseleave在drap中并没有 2.解决方案,在所操纵dom元素的子元素上添加元素穿透 .dom *{pointer-events: none;} 缺点:导致所有子元素上的事件失效 3.鼠标最终跑出父元素的上一个事件是dragenter,而目标恰好就是父元素自身 var lastenter = null; item.addEventListener(‘dragenter’,function(e){ lastenter = e.target; this.classList.add(‘active’); }); item.addEventListener(‘dragleave’,function(e){ if(lastenter==this){ this.classList.remove(‘active’); } }); 4.相关知识 drag事件 被我们拖的元素(按住鼠标) ondrags…

禁止dragleave事件在对象元素的子元素中触发 2020年2月18日
;

1.下载 wget -O – https://debian.neo4j.org/neotechnology.gpg.key | sudo apt-key add – echo ‘deb https://debian.neo4j.org/repo stable/’ | sudo tee /etc/apt/sources.list.d/neo4j.list sudo apt-get update 2.安装 sudo apt-get install neo4j 3.修改配置 cd /etc/neo4j vim neo4j.conf dbms.connectors.default_listen_address=0.0.0.0 #跳到54行,去掉前面的注释,让所有用户可以通过服务器IP来访问网页版 4.启动 neo4j start 报错:JAVA_HOME环境变量路径错误 ERROR: JAVA_HOME is incorrectly defined as /usr/lib/jvm/Java-7-openjdk-amd64 错误诊断 java -version #查看版本 $JAVA_HOME #查看变量值 java -verbose #查看java的安装目录,最后一行你会看到你的jdk安装路径 修改配置文件/etc/profile export JA…

ubantu安装neo4j 2020年2月14日
;

什么是直方图? 直方图如何绘制? 什么是通道直方图? 什么是RGB直方图? 如何阅读直方图? 直方图在后期修图中如何应用? 认真学习这篇文章 就能找到答案! 一.认识色彩与RGB模型 1为什么人能看见色彩 我们之所以能够看到这个世界,是因为有光的存在,而我们之所以能区分不同的颜色,正是因为光的波长和强度可以有很大的区别。 光作为一种电磁波,其波长范围很大,但人眼可以看到的波长范围却很有限,这部分能够被人眼所观察到的波长范围被称为可见光,人眼可以感受到的波长范围一般是落在390 纳米到 700纳米。 可见光的范围 人眼之所以能够区分不同的色彩,正是因为人眼中的视锥细胞对波长有着不同的敏感范围,一般人眼中有三种不同的视锥细胞: 第一种主要感受红色,它的最敏感点在565纳米左右;第二种主要感受绿色,它的最敏感点在535纳米左右;第三种主要感受蓝色,其最敏感点在420纳米左右。 视锥细胞的光敏感曲线 例如现在有一束光光进入人眼睛,S视锥细胞的反应最强烈,另外两种视锥细胞的几乎没有反应,那么大脑就知道进入我们眼睛的光线是蓝色,正是基于此,我们才能区分各种各样的色彩。 也正是基于人眼这样一个生理特征,我们才将红绿蓝确定为三原色。 虽然眼球中的椎状细胞并非对红、绿、蓝三色的感受度最强,但是因为椎状细胞所能感受的光的带宽很大,红、绿、蓝也能够独立刺激这三种颜…

很多人都知道直方图,但真正懂的只有1% 2020年2月11日
;

黑暗效应(Dark Effect)在光线比较暗的场所,约会双方彼此看不清对方表情,就很容易减少戒备感而产生安全感。在这种情况下,彼此产生亲近的可能性就会远远高于光线比较亮的场所。心理学家将这种现象称之为“黑暗效应”。 另外,相对来说,黑夜能够给人一定的伪装空间。在白天的时候,人们往往很注意自己的行为举止,无论面对任何人,总会把自己伪装起来,因为人是群体性、社会性的,在心理学中,这也是一种保护机制。黑夜的时候,人们的感知降到很低,就意味着更加安全,同时,黑夜的空间也让人有了一层伪装的空间,这时候能够展示自己的另一面,同时也不用担心如同白天一般在意行为细节而导致产生的距离感。另一方面,黑夜中,双方交谈所给予的由于地位、身份等所产生的压迫感也会降到最低,利于能够更加愉快地交流。 在正常情况下,一般的人都能根据对方和外界条件来决定自己应该掏出多少心里话,特别是对还不十分了解但又愿意继续交往的人,既有一种戒备感,又会自然而然地把自己好的方面尽量展示出来,把自己弱点和缺点尽量隐藏起来。因此,这时双方就相对难以沟通。而黑暗登场,对方感官失效后,自己便没了危险,不需要伪装,表情不需要安排,自然而然的自我流露;而自己的感官失效后,人就会变得脆弱而敏感,倾向于在黑暗中抓住同伴的安全感,这种吸附性非常强。所以说,黑暗效应就产生了。

黑暗效应 2020年1月22日
;

从宏观角度而言,爽文无非就是撩拨人们心中的欲望,具体的感受主要是以下三种: 一.畅快感 所谓的畅快,简单说就是随心所欲,自由自我,主要由暴力与性爱获得。 经典的做法有: 1.主角碾压反派。 2.破坏规则,挑战权威,满足叛逆心理。 3.床戏:满足生殖冲动。 4.狠削装B犯/傲娇女,满足现实中的仇富心态。 5.迷宫夺宝,满足红果果的占有欲。 6.胖揍狗腿子。 7.战斗 二.成就感 所谓的成就,就是实现自我价值,以及由此产生的自豪,主要由克服重重困难获得。主角在逆境中发掘自己的优势,实力渐渐提升。读者因此获得人物养成的朴素的成就感。(为了增强感度,这优势一般不怎么起眼) 这里所说的实力,可以是个人武力,也可以是受主角支配的人力,财力,物力。前者的集中表现形式,就是所谓的“升级”;而后者的集中表现形式,则叫做“种田”。 经典的做法有: 1.推倒冰山美女 2.干翻BOSS 3.制造出某神器 4.调教 三.优越感 所谓的优越感,就是高高在上,受人膜拜的虚荣,主要靠装B获得。如果说畅快感的关键词是“爆发”,成就感的关键词是“稳定”,那么优越感的关键词就是“含蓄”。 经典的做法有: 1.有眼不识泰山 2.人之患在好为人师 3.这些垃圾,老子赏你了。 但是,道理你尽管懂,可如何表现出来后让你感同身受被带着走,这就需要对故事铺垫、伏笔、节奏等方面的把握了,就好比…

爽文的原理 2020年1月21日
;

所有生意的本质,都是流量! 1、案例一 两个东北人,2014年合伙拉滴滴,三个月时间,赚了70万。这是一个励志故事吗?_NO这是“风口猪”的故事吗?_NO NO这其实是个“刷单致富”的故事。 2014年滴滴手持巨资抢市场,疯狂补贴司机,一周只要能拉五单,就补贴司机2000块。于是这两人:一个前面开车,一个后面刷单;不眠不休,专心致富,以“手机+轮子”的“敏捷创业”模式,3个月薅走了滴滴70万现大洋。 陈轩点评 这个案例是真实案例,首先告诉我们:赚稍微大点的钱,没有走寻常路的。当然此案例见不得光,大家批判着看。其次印证一点:工业时代,传统企业可以通过机器、地段、资源的控制来保持比较长的竞争优势;而在互联网时代,物理资本变得越来越不重要。重要的是你能否低成本地获取和变现流量。 2、案例二紧挨北京地处燕郊的东贸服装城,是福建老板投资的。刚开始一个10平米档口年租金4万,现在呢?月租金就已经达到了3万。为啥?做起来了呗。与他们老板聊了一早上,发现其获取客流的方式很接地气! 服装城类似于滴滴本质是平台模式实质是流量变现机器关键是B2B2C最后的C是核心 B2B2C 第一个B,是福建老板第二个B,是被从北京动物园批发市场赶出来的老板们C呢,不是滴滴的终端消费者,而是开服装店的小老板们,是第二个B的下游分销渠道和零售渠道。 第一步好做,毕竟燕郊离北京近。承…

所有生意的本质,都是流量! 2020年1月18日
;

1.前期准备 安装python3 2.相关组件 VS2019 https://support.microsoft.com/zh-cn/help/2977003/the-latest-supported-visual-c-downloads faceswap代码 https://github.com/deepfakes/faceswap 3.安装依赖 pip install -r requirements.txt 如果缺少某个模块可手动安装 pip3 install tqdm 4.启动gui python faceswap.py gui

faceswap安装 2020年1月14日
;

自恋人格量表(NPI)是由美国加州大学教授拉斯金于1979年设计的一套自恋测量工具,此后经过历年修订,直到21世纪初仍是使用最为广泛的自恋测量工具,以其为操作性指标的研究表明自恋与自尊、攻击性呈正相关,并且在亲密关系中是消极的概念。 请表明您在多大程度上同意或不同意下面的陈述:   1=非常不同意,2=很不同意, 3=有点不同意,4=有点同意,5=很同意,6=非常同意 题目:   1 我天生就有一种能影响人们的本事               2 我不是一个谦虚的人               3 我几乎敢挑战任何事情               4 我是一个非凡的人               5 如果让我来统治世界,这个世界将会更好               6 我能靠口才说服他人以避免麻烦               7 我喜欢成为注意的中心               8 我将会是一个成功的人               9 我觉得我是个特别的人               10 我认为我是一个好领导               11 我是一个坚定自信的人               12 我喜欢拥有支配他人的权力               13 我发现操纵别人是容易的               14 我坚持获得我应得的尊重  …

自恋人格量表 2020年1月12日
;

世界进入“一切皆互联”的后真相时期,虽然同质化和共振性的问题已经提出,但最优解尚未求出,接下来有针对性地“趋利避害”就自然而然成为探索和再创新的动因。 刘珺/文 互联网时代和物联网时代的共同特征是科技创新居于主导地位,是时代前进的决定性力量。在普遍联系的网络中,国别政策或许能够应对税收、贸易、就业等经济民生问题,甚至移民、反恐等国际敏感问题, 但对日行千里乃至万里的科技创新所带来的深刻变化明显应接不暇。任何基于一时一地的政策,其效应在科技织就的全球系统内往往转瞬消弭于无形。 人类的发展史有言在先:凡事皆有两面性,既然有好的一面,就会有不好的一面,矛盾始终存在,只是以何种方式、何种程度相互转换并展现出来而已。那么,科技在显著增进人类福祉的同时是否会带来新的风险,包括已知的未知风险(known unknowns)和未知的未知风险(unknown unknowns)呢?风险属性和结构是否发生演变、嬗变甚至蜕变呢? 发展同质化与同质化发展 网络时代是人类历史长卷的“大写意”,技术和产品的创新由点到线,连线成面,组面成体,进而聚合为广袤的系统。变化成为不变的主题,变化无处不在,变化标识出时代的进步和进步的时代。新生事物形塑出以毫秒为单位的幻化和差异的时空和人,让不同演绎到极致。变化的结果一定是今不同昔,但是否“异”百分之百定义新时代而“同”无足轻重呢?…

互联网时代的同质化与风险共振 2020年1月12日
;

说明 使用 CSS 可以绘制出许多形状,比如三角形、梯形、圆形、椭圆,等 并不只是可以绘制矩形。下面来看看怎么实现这些形状的吧。 为了容易理解,文章分为基本形状 和 组合形状来说,基本形状是比较容易实现的,而利用这些基本形状进行组合,就可以实现稍微复杂点的组合形状了。 基本形状 三角形 .triangle { width: 0; height: 0; border: 50px solid blue; /* 通过改变边框颜色,可以改变三角形的方向 */ border-color: blue transparent transparent transparent; } 梯形 .trapzoid { width: 40px; height: 100px; border: 50px solid blue; border-color: transparent transparent blue transparent; } 圆形 .circle{ width:100px; height:100px; border-radius:50%; background:blue; } 球体 .sphere { height: 200px; width: 200px; border-radius: 50%; background: radial-gradient(c…

CSS 绘制各种形状 2020年1月10日
;

1.Airbnb JavaScript Style Guide https://github.com/airbnb/javascript/blob/master/README.md 2.http://youmightnotneedjquery.com/ 3.https://github.com/ryanmcdermott/clean-code-javascript

前端代码优化,代码风格 2020年1月10日
;

1.https://mp.weixin.qq.com/s/EYzaQXpOTBtFUJDLfvpu4Q 2.https://ts.xcatliu.com/

typescript教程 2020年1月9日
;

1.介绍 GitBook 是一个基于 Node.js 的命令行工具,支持 Markdown 和 AsciiDoc 两种语法格式,可以输出 HTML、PDF、eBook 等格式的电子书。 2.安装及初始化 npm install -g gitbook-cli //全局安装gitbook命令 gitbook init //初始化,会生成README.md和SUMMARY.md两个文件 README.md —— 书籍的介绍写在这个文件里 SUMMARY.md —— 书籍的目录结构在这里配置 3.生成文件目录 编辑SUMMARY.md # 目录 * [前言](README.md) * [第一章](Chapter1/README.md) * [第1节:衣](Chapter1/衣.md) * [第2节:食](Chapter1/食.md) * [第3节:住](Chapter1/住.md) * [第4节:行](Chapter1/行.md) * [第二章](Chapter2/README.md) * [第三章](Chapter3/README.md) * [第四章](Chapter4/README.md) 执行命令gitbook init。 GitBook 会查找 SUMMARY.md 文件中描述的目录和文件,如果没有则会将其创建。 4.预览 gitbook …

gitbook入门 2020年1月9日