首页
免费后端云服务
关于
推荐
免费图床源码
Search
1
小程序后端入门系列视频教程【一-微信开发工具介绍】
9,715 阅读
2
微信小程序三级联动之多列选择器
9,598 阅读
3
小程序开发免费后端之神秘利器分享
9,526 阅读
4
Golang-开发企业级资源权限管理【第一步表设计】-1
9,075 阅读
5
学会微信服务端开发第一步
8,972 阅读
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
登录
Search
Magic
累计撰写
119
篇文章
累计收到
21
条评论
首页
栏目
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
页面
免费后端云服务
关于
推荐
免费图床源码
搜索到
117
篇与
的结果
2024-09-12
python 多版本安装pyenv,国内镜像解决版本安装不上问题
python 多版本,window,mac,liunx都有不同的工具,由于现在国内墙太厉害,连docker镜像,python官方,github都访问不到,导致安装实在困难,今天我记录下如何安装pyenv 是一个用于管理多个 Python 版本的工具。它允许你在同一台机器上安装和切换不同的 Python 版本,非常适合开发者在不同的项目中使用不同的 Python 版本。以下是 pyenv 的一些主要功能和使用方法:主要功能多版本管理:允许你在同一台机器上安装多个 Python 版本(如 Python 2.7、Python 3.6、Python 3.8 等)。可以在不同的项目中使用不同的 Python 版本。版本切换:可以轻松地在不同的 Python 版本之间切换,无需手动修改环境变量。隔离环境:每个项目可以有自己的 Python 版本,不会相互干扰。插件支持:支持插件扩展,如 pyenv-virtualenv,可以与 virtualenv 结合使用,创建和管理虚拟环境。正常来说即可在 Linux 上安装你可以使用以下命令安装 pyenv:curl https://pyenv.run | bash实际国内无法链接github原因,无法安装这时候只能去找一个pyenv压缩包,或者你浏览器可以墙的话,直接浏览器github下载例如安装python 3.12.2版本pyenv install 3.12.2 -v 实际是不成功的然后网上找export v=3.12.4; wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/; pyenv install $v 结果也是失败的,其他几个国产的镜像也测了,不行最终找到华为提供的这个可以export v=3.12.4; wget https://mirrors.huaweicloud.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/; pyenv install $v当然除了pyenv,也可以用其他版本管理工具,例如condaconda 是一个开源的包管理系统和环境管理系统,主要用于数据科学和机器学习领域。它可以管理多个 Python 版本和相关的依赖项。# 安装 Miniconda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh # 创建新环境并指定 Python 版本 conda create -n myenv python=3.12 conda activate myenv
2024年09月12日
11 阅读
0 评论
0 点赞
2024-09-04
Serverless实战驾校小程序【考题练习】三
Serverless实战驾校小程序【考题练习】三介绍上一节我们讲了,实现了分类、题目显示、进度条显示等功能,这节我们继续完善答题功能。由于开发时间比较紧,这里主要写实习思路,与核心代码。这一节做顺序练习与模拟考试。都属于答题详细页面功能这次进度条可以根据答题进度,显示进度。 这个也用了iview的一个插件, 目前样式没调整, 这个后面再说。这一节主要实现了一些逻辑计算逻辑一:记录学习题目进度记录的核心代码,在提交保存的时候调用。当然,也可以在练习离开的时候触发,这里给了个按钮,点击保存即可保存学习记录const AddLearning = ({ num, result, type = 1 }) => { let current = wx.Bmob.User.current() return new Promise((resolve, reject) => { const query = wx.Bmob.Query('learning'); query.set('bSubjects', '1') query.set('bModels', '1') query.set('num', num) query.set('result', result) query.set('type', type) query.set('uid', current.objectId) query.save().then(res => { resolve(res) }).catch(err => { console.error(err) reject(err) }) }); }逻辑二:记录题目回答的对错上面的变量result记录,格式请看上一节数据库格式说明,是题目的对错。这里点击一个选择就记录一次,我在页面data里面增加了一个items变量来保存。选择答案执行以下代码,今天先实现单选,我们单选与多选,判断事件分开来做,这样便于逻辑管理// 单选题 handleFruitChange ({ detail = {}, target = {} }) { let questionInfo = this.data.questionInfo // 判断单选是否正确 if (target.dataset.id) { console.log('ok') questionInfo.isOk = 1 } this.setData({ questionInfo: questionInfo, current: detail.value }); // 单选自动跳到下一题 this.statistical() // 显示第几道题 this.setThisData(this.data.index) this.setData({ index: this.data.index + 1, current: '' }); },逻辑三:答题相关统计逻辑二讲了,记录对错,这里有一些统计需要拿出来计算,先做单选题,点击选择,判断是否正确, 如果正确,记录到结果对象 [{" id ":" XXX ', '0'}, {" id ":" XXX ", "1"}] ,0代表回答错误,1正确例如错题个数、对题个数,页面提示,进度条进一步statistical () { // 统计错题个数 let questionErr = this.data.questionErr //错题个数 let questionOk = this.data.questionOk //错题个数 let questionInfo = this.data.questionInfo let items = this.data.items let arr = { "id": questionInfo.objectId, "o": 0 } let t = 'error', m = '回答错误' if (questionInfo.isOk === 1) { // o 0代表失败,1代表成功 arr.o = 1 questionOk = questionOk + 1 t = 'success' m = '回答正确' } else { // 错误数+1 questionErr = questionErr + 1 } items.push(arr) // 提示 $Message({ content: m, type: t, duration: 2 }); //进度条 let totalW = this.data.index / this.data.total totalW = (totalW * 100).toFixed(2); totalW = totalW < 1 ? 1 : totalW this.setData({ items: items, questionErr: questionErr, questionOk: questionOk, totalW: totalW, }); },逻辑四:上一题下一题的实现页面显示第几个题目,我们用数组的下面来记录,单电机下一题,我们记录回答对错,并且数组下标+1// 翻页 handlePageChange ({ detail }) { const type = detail.type; const current = this.data.current if (current == "") { console.log('空') $Toast({ content: '请选择答案!', type: 'warning' }); return; } this.statistical() if (type === 'next') { this.setThisData(this.data.index) this.setData({ index: this.data.index + 1, current: '' }); } else if (type === 'prev') { this.setData({ index: this.data.index - 1, current: '' }); this.setThisData(this.data.index) } },逻辑五:引入模式概念因为答题页面逻辑非常多,今天写这么多也没写完一般, 除了学习模式,后面还有模拟考试模式,这里不单独使用另外的页面来开发,统一在一个页面。 所以,我们在页面data里加入model变量,代表模式。/** \* 这里有个模式, 练习模式,与模拟考试模式 \* model 1.练习模式 2.模拟考试考试 \* 练习模式查询出所有数据练习 \* 模拟考试 随机100题 计算打分 */ 总结今天练习模式里面的单项选择逻辑基本已经做好,明天将实现模拟考试,计算考试成绩等等功能
2024年09月04日
2,906 阅读
0 评论
46 点赞
2024-08-15
Bmob-小程序源码交易教程
源码交易介绍如何购买?如何读取到之前应用的数据?如何上线?1. 源码交易介绍解决问题:对于开发者。开发者应用未盈利,或提交市场审核不通过,代码丢弃又可惜。可以发布到此交易市场,赚一些成本回来。对于企业经常会有一些个人或企业团体需要做个跟某某APP或小程序一样的东西,如果已经有了这样的东西,可以很好的降低成本。代码来源:主要开发者2. 如何购买?打开购买网址:https://www.bmob.cn/shop/index选择自己需要的应用支付备注:购买后并不会立刻在自己账户下创建此应用功能的响应数据库结构,请看下一步。3. 如何读取到之前应用的数据?我们点击立刻查看进入购买项目列表https://www.bmob.cn/shop/getBuyProject创建应用,看下面截图,此处创建的应用会复制购买的应用数据表结构。如何上线?在购买项目列表下载代码使用微信开发者工具打开修改app.js 初始化appid,改为自己的appid。Bmob平台设置自己微信appid,AppSecret微信开发者工具发布上线参数说明AppID,小程序ID,填写后可通过Bmob服务端获取该值AppSecret,小程序密钥,填写后可通过Bmob服务端获取该值MchID,商户号,小程序开发接入微信支付需填写此项Key,商户支付密钥,小程序开发接入微信支付需填写此项
2024年08月15日
6,622 阅读
0 评论
29 点赞
2024-07-27
小程序后端入门系列视频教程【一-微信开发工具介绍】
计划录制一整套视频教程,主要讲如何对接后端到上线,从开发工具介绍到,项目提交上线,总计1小时。每个视频控制10分钟左右,总计6个视频。也可以称为60分钟学会小程序开发到上线。小程序视频目录1.微信开发工具介绍2.小程序后端介绍3.开发相关准备工作4.小程序首页开发5.小程序列表详细开发6.发布、显示评论以及上线1.第一节:微信开发工具介绍这节主要针对0基础,可能连开发工具都没摸过的童鞋,没开发过小程序可以可以看下。注册成为微信公众平台开发者 安装开发者工具 小程序开发工具介绍 目录介绍 项目app.js相关目录 文件介绍 逻辑层 视图层 数据层 学习技能 DIV+CSS JavaScript 小程序文档如有任何疑问,可在本文章下留言。视频地址:https://www.bilibili.com/video/av17914778/?from=search&seid=5983525011627926771
2024年07月27日
9,715 阅读
3 评论
10 点赞
2024-07-07
Serverless_公众号邀请返利开发
公众号邀请返利开发,通过Faas,一个函数即可实现微信授权返回昵称头像。 APP里有个注册页面,希望互相转发微信,邀请返利。 为了方便传播,注册页面单独用H5页面实现。 为了提高邀请用户质量,提高邀请用户的有效性,我们强制要求微信里面打开才能注册。所以基于公众号开发。 为了快速开发,这里使用Bmob云Serverless 里的Faas服务与文件CDN存储服务。1.准备材料公众号Bmob云Serverless支持自己域名(需备案)2.设置公众号 一、设置AppSecret值 开发者ID(AppID)开发者密码(AppSecret)二、设置白名单 IP白名单 image.png三、设置授权域名 接口权限,登陆,找到网页授权域名四、设置调试微信开发者 开发者工具-》web开发者工具 【这个跟小程序一样的工具】,添加微信到开发者,最多可以绑定50个 image.png3.开发过程 一、注册Bmob账号 二、创建一个应用 image.png三、点击进入云函数 编写微信获取用户昵称代码 image.png四、新建云函数 云函数getOpenId 获取用户openid,拿到openid调用getUserInfo获取用户信息云函数function onRequest (request, response, modules) { var code = request.body.code ? request.body.code : '011jOWiN0vmFa42ynziN0B6bjN0jOWir' //获取数据库对象 var db = modules.oData; var functions = modules.oFunctions; //http请求方式: GET var appid = ''; var secret = ''; var url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + appid + '&secret=' + secret + '&code=' + code + '&grant_type=authorization_code'; //获取Http模块 var http = modules.oHttp; //发起Get请求 http(url, function (error, res, body) { if (!error && res.statusCode == 200) { //写入数据库 var resultObject = JSON.parse(body); //如果返回错误则打印 if (resultObject.errcode) { response.send(resultObject); } functions.run({ "name": "getUserInfo", "data": { "openid": resultObject.openid, "access_token": resultObject.access_token } }, function (err, data) { //回调函数 response.send(data); }); } }); } getUserInfo云函数function onRequest (request, response, modules) { var db = modules.oData; var openid = request.body.openid || 'ol2Ey0tePs0fdFdVRZKqzu50_83c'; var access_token = request.body.access_token || 'xxxx'; getUserInfoMp(openid, access_token); function getUserInfoMp (openid, access_token) { var http = modules.oHttp; http('https://api.weixin.qq.com/sns/userinfo?access_token=' + access_token + '&openid=' + openid + '&lang=zh_CN', function (error, res, body) { if (!error && res.statusCode == 200) { var at = JSON.parse(body); response.send(body); } response.send(body); }); } } 获取头像昵称开发完成 五.运行流程介绍 image.png用户打开一个url,这个url打开后会提示用户是否授权,同意后跳转到自己的网址,并带上code。(URL地址)[https://open.weixin.qq.com/connect/oauth2/authorize?appid\=wxbafdda995607cc\&redirect\_uri\=https://goldenage.xxxxx.com/\&response\_type\=code\&scope\=snsapi\_userinfo\&state\=STATEwechat\_redirect](https://open.weixin.qq.com/connect/oauth2/authorize?appid\=wxbafdda995607cc\&redirect\_uri\=https://goldenage.xxxxx.com/\&response\_type\=code\&scope\=snsapi\_userinfo\&state\=STATEwechat\_redirect)redirect\_uri参数关键:指定统一授权后打开的网址,接下来就1步,通过code拿到openid。上面函数getOpenId就可以拿到openid,如果需要昵称头像,可以调用第二个云函数getUserInfo[https://mp.weixin.qq.com/wiki?action\=doc\&id\=mp1421140842\&t\=0.356007856098852443](https://mp.weixin.qq.com/wiki?action\=doc\&id\=mp1421140842\&t\=0.356007856098852443))六.如何调用 image.pnghttps://cloud.bmob.cn/19b475f87c366db2/getOpenId 方法:post 参数:code: 微信code 返回: {"openid":"ol2Ey0tePs0fdFdVRZKqzu50_83c","nickname":"magic","sex":1,"language":"zh_CN","city":"广州","province":"广东","country":"中国","headimgurl":"http:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/DYAIOgq83epySXbnQqg4MialjffKNKbxj42prvL2aIaIFbs3pj7svlT4gbQeQPbricZNBGYWfv1zcOo86fjwc99Q\/132","privilege":[]}}总结: 相比自己服务器开发优势,成本低,速度快。 基于Serverless,的Faas 只需要一个函数,即可实现用户openid功能。如果熟悉,整个微信开发不需要10分钟。这里有个用户点击授权的页面是HTML的,这个HTML我们可以用CDN云存储,把静态html页面保存到文件里面,支持绑定自己域名,让用户访问。 整个开发,不需要购买服务器,ip,环境,微信设置好,一个函数,暴露接口就可以实现。前端网页调用效果截图: image.png
2024年07月07日
6 阅读
0 评论
0 点赞
1
2
3
4
...
24