首页
留言
导航
统计
Search
1
追番推荐!免费看动漫的网站 - 支持在线观看和磁力下载
3,142 阅读
2
推荐31个docker应用,每一个都很实用
1,502 阅读
3
PVE自动启动 虚拟机 | 容器 顺序设置及参数说明
1,050 阅读
4
一条命令,永久激活!Office 2024!
680 阅读
5
优选 Cloudflare 官方 / 中转 IP
539 阅读
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
登录
Search
标签搜索
Java
小程序
Redis
SpringBoot
docker
Typecho
Cloudflare
uni-app
docker部署
虚拟机
WordPress
群晖
CentOS
Vue
Java类库
Linux命令
防火墙配置
Mysql
脚本
Nginx
微醺
累计撰写
266
篇文章
累计收到
11
条评论
首页
栏目
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
页面
留言
导航
统计
搜索到
266
篇与
的结果
2023-02-15
从零搭建 Spring Cloud 服务(超级详细)
原作者:Anakki;从零搭建SpringCloud服务(史上最详细) 这里会介绍很多基础知识,直接想开始搭建微服务的可以看第二章,微服务的搭建。直接看第二章不会有什么影响,可以先学会开车再学习车的构造的,看个人习惯来。
2023年02月15日
148 阅读
0 评论
0 点赞
2023-02-15
VUE后台管理中使用富文本编辑器导入word 文档进行编辑
前言最近因业务需求在项目中嵌入了[tinymce]这个编辑器,用于满足平台给用户编辑各类新闻内容什么的业务需求,前后也花了不少时间体验和对比了市面上各类开源编辑器,直接将新闻部门的工作从半天工作量提升只要一个小时就可以搞到,一两分钟就可以搞定一个任务优点文档好,功能强,bug 少,无外部依赖。word 文档粘贴进来要带格式 兼容移动端 word 文档粘贴进来要正常显示并且还要兼容移动端 电脑网页里粘贴进来内容要正常显示并且排版还不能乱 电脑网页拷过来的内容还要兼容到移动端安装npm install tinymce @tinymce/tinymce-vue@3.2.8 -S下载语言包中文语言包下载开始操作文件将依赖包 node_modules 里找到 tinymce文件夹,复制到 public 里,【左图是 tinymce,右图是 public 复制后的目录】一下是注意点:很多的博客的写法是将 node_modules 里面的skins文件夹复制到public/tinymce目录下,经过尝试是不完善的,需要将整个目录倒入进 public 里不完全导入的错误显示,我还以为是语言包的问题,一个个语言包版本去试,这种展示一半英文一半中文的导入 tinymcejspublic/index.html 添加 tinymce.js<div id="app"></div> <script src="/tinymce/tinymce.min.js"></script>引入基本文件// 引入组件 import tinymce from 'tinymce/tinymce' import Editor from '@tinymce/tinymce-vue' // 引入富文本编辑器主题的js和css import 'tinymce/themes/silver/theme.min.js' import 'tinymce/skins/ui/oxide/skin.min.css' // 扩展插件 import 'tinymce/plugins/image' import 'tinymce/plugins/link' import 'tinymce/plugins/code' import 'tinymce/plugins/table' import 'tinymce/plugins/lists' import 'tinymce/plugins/wordcount'注册组件components: { Editor },使用组件<div class="activeConfig-container"> <Editor id="tinymce" v-model="tinymceHtml" :init="editorInit" /> </div>tinymce 初始化配置data() { return { // tinymce的绑定值 tinymceHtml: '', // tinymce的初始化配置 editorInit: { selector: '#tinymce', language_url: '/tinymce/langs/zh_CN.js', language: 'zh_CN', skin_url: '/tinymce/skins/ui/oxide', height: 400, plugins: 'link lists image code table wordcount importword', toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat | importword', //点击富文本图片上传的时候将图片转成base64再通过success插入 images_upload_handler: (blobInfo, success) => { const img = 'data:image/jpeg;base64,' + blobInfo.base64() success(img) }, importword_filter: function(result, insert, message) { // console.log(result) // console.log(insert) // console.log(message) // 自定义操作部分 insert(result) // 回插函数 }, // statusbar: false // 是否隐藏底部的状态栏 // menubar: false, // 是否隐藏最上方的菜单 branding: false // 是否禁用“Powered by TinyMCE” } } },整体代码<template> <div class="activeConfig"> <div class="activeConfig-container"> <Editor id="tinymce" v-model="tinymceHtml" :init="editorInit" /> </div> </div> </template> <script> // 引入组件 import tinymce from 'tinymce/tinymce' import Editor from '@tinymce/tinymce-vue' // 引入富文本编辑器主题的js和css import 'tinymce/themes/silver/theme.min.js' import 'tinymce/skins/ui/oxide/skin.min.css' // 扩展插件 import 'tinymce/plugins/image' import 'tinymce/plugins/link' import 'tinymce/plugins/code' import 'tinymce/plugins/table' import 'tinymce/plugins/lists' import 'tinymce/plugins/wordcount' // import { uploadImgage } from '@/api/activeConfig' export default { name: 'ActiveConfig', components: { Editor }, data() { return { // tinymce的绑定值 tinymceHtml: '', // tinymce的初始化配置 editorInit: { selector: '#tinymce', language_url: '/tinymce/langs/zh_CN.js', language: 'zh_CN', skin_url: '/tinymce/skins/ui/oxide', height: 400, plugins: 'link lists image code table wordcount importword', toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat | importword', // 此处为图片上传处理函数 // images_upload_handler: (blobInfo, success, failure) => { // this.handleImgUpload(blobInfo, success, failure) // }, images_upload_handler: (blobInfo, success) => { const img = 'data:image/jpeg;base64,' + blobInfo.base64() success(img) }, importword_filter: function(result, insert, message) { // console.log(result) // console.log(insert) // console.log(message) // 自定义操作部分 insert(result) // 回插函数 }, // statusbar: false // 是否隐藏底部的状态栏 // menubar: false, // 是否隐藏最上方的菜单 branding: false // 是否禁用“Powered by TinyMCE” } } }, mounted() { tinymce.init({}) }, methods: { // 图片上传 handleImgUpload(blobInfo, success, failure) { // this.baseUrl = process.env.VUE_APP_BASE_URL // const imgBase64 = 'data:image/jpeg;base64,' + blobInfo.base64() // const data = { img: [imgBase64] } // uploadImgage(data).then(res => { // // 传入success回调里的数据就是富文本编辑器里插入图片的src的值 // success(`${this.baseUrl}/${res.data[0]}`) // }).catch(() => { failure('error') }) } } } </script> <style lang="scss" scoped> .activeConfig { &-container { margin: 30px; } } </style>特殊需求需要找个能实现 word 文档上传到富文本编辑器,减轻编辑机构的负担,解决机构需要每次打开文档复制再编辑的繁琐工作,实现直接导入编辑tinymce 插件一个下载插件,一个是注意点,图片在富文本是 base64 的方式导入插件下载解压后将整个文件复制到 public 的插件目录再往 tinymce 配置添加即可editorInit.plugins 和 editorInit.toolbar 添加 importword 即可editorInit: { selector: '#tinymce', language_url: '/tinymce/langs/zh_CN.js', language: 'zh_CN', skin_url: '/tinymce/skins/ui/oxide', height: 400, plugins: 'link lists image code table wordcount importword', toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat | importword' }图片解决方案如果碰到图片的问题,处理图片有两种方式: 1、一种在提交内容的时候统一处理图片,稿件文件里图片只要提交一次。 2、一种是监听图片上传,每次更新图片都上传图片。图片上传函数有images_upload_handler第二种const files = [] const base64ImgSum = [] for (let i = 0; i < imgs.length; i++) { //去除不用的属性 imgs[i].removeAttribute('data-mce-src') imgs[i].removeAttribute('alt') //拿到所有的图片列表 imgs[i].src.includes('base') && base64ImgSum.push(imgs[i]) } //将base64图片转换file文件 dataURLToFile(dataURL, filename) { const arr = dataURL.split(',') const mime = arr[0].match(/:(.*?);/)[1] // mime类型 image/png const bstr = atob(arr[1]) // base64 解码 let n = bstr.length const u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } return new File([u8arr], filename, { type: mime }) // return new Blob([a8arr], {type: mime}); }, //将处理file文件当参处理即可 fd.append('file', this.dataURLToFile(base64ImgSum[i].src, `${(new Date()).getTime()}.jpg`))
2023年02月15日
117 阅读
0 评论
0 点赞
2023-02-15
uniapp webview 直接调用原生摄像头拍照 拍视频
uniapp webview 直接调用原生摄像头拍照 拍视频 img video,通过ajax获取blob(file为特殊的blob)对象并上传到后端服务器web-view中通过plus方法调用摄像头拍照或者拍视频并上传后端的操作步骤如下:plus.camera.getCamera()获取摄像头对象 cmrcmr.captureImage(callback)\ cmr.startVideoCapture(callback)获得临时资源的临时路径 pathplus.io.resolveLocalFileSystemURL(‘路径path’,callback) 通过临时路径获得文件对象 entryentry.toRemoteURL() 获得网络路径通过ajax,设置responseType为blob,获取文件的blob对象,根据后端接口要求进行处理并上传例子中的后端接口要求表单数据formData的形式上传附上htm5文档地址http://www.html5plus.org/doc/zh_cn/io.html#plus.io.DirectoryEntry.toRemoteURL 以图片为例,代码如下,let cmr = plus.camera.getCamera() //获取相机对象 cmr.captureImage( //调用拍照方法,获得临时路径 function (p) { plus.io.resolveLocalFileSystemURL(p, function (entry) { //通过临时路径,获得文件系统中的文件对象entry entry.file(function (file) { // 可通过entry对象的file方法,获取文件数据对象(该文件数据对象仍无法直接使用) axios({ method: 'get', url: entry.toRemoteURL(), responseType: 'blob', }).then(res => { let blob = res.data const uploadFile = new FormData() uploadFile.append('file', blob ) axios({ method: 'post', url: '/file/api/Upload', headers: { 'Content-Type': 'multipart/form-data'}, data: uploadFile, }) }) file.close() }) }) }, function (error) { console.log('---' + 'Capture image failed: ' + error.message) }, )视频相同,将 captureImage 换成 startVideoCapture 即可
2023年02月15日
95 阅读
0 评论
0 点赞
2023-02-15
用uni-app开发自定义微信小程序头部导航
uni-app 官网:uni-app 官网微信小程序开发文档:微信开放文档官方介绍 uni-app:uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可编译到 iOS、Android、H5、以及各种小程序等多个平台。即使不跨端,uni-app同时也是更好的小程序开发框架。个人感受(功能很丰富,bug 也很丰富)*接下来我会将在项目中用到的一些我感觉还不错的东西记录一下,以供分享以及自己的积累=。=如有不足,请大佬们指教!!1.环境介绍编译器就用官方的 HBuilderX 编译器, 然后好像没了,创建一个 uni-app 项目就可以开始撸了。2.首先要先去除小程序自带的头部导航,在 page.json 文件里的对应的页面的 style 配置项里加上:"style":{ "navigationStyle":"custom" }就可以开始自定义导航了。3.为了适配不同型号手机的头部高度,所以要通过(异步)uni.getSystemInfo()或者(同步)uni.getSystemInfoSync()获取顶部状态栏的高度得到的状态栏高度可以存 vuex 里。(增加,获取头部高度,定义在全局)/*main.js*/ import Vue from 'vue' import App from './App' import store from './store' Vue.prototype.$store = store Vue.config.productionTip = false Vue.prototype.isBarHeight999 = function() { return new Promise((resolve, reject) => { var that = this var isTemp = {} uni.getSystemInfo({ success(res) { let totalTopHeight = 68 if (res.model.indexOf('iPhone X') !== -1) { totalTopHeight = 88 } else if (res.model.indexOf('iPhone') !== -1) { totalTopHeight = 64 } isTemp['statusBarHeight'] = res.statusBarHeight isTemp['titleBarHeight'] = totalTopHeight - res.statusBarHeight isTemp['allHeight'] = totalTopHeight resolve(isTemp) }, fail(e) { reject(e) } }) }) } App.mpType = 'app' const app = new Vue({ store, ...App }) app.$mount()4.在 components 文件里创建头部导航组件,名字自己起,我这边是 navTop.vue,直接上代码:/*navTop.vue*/<template> <view> <view class="nav_top" :style="{height:barHeight.allHeight+'px','background-color':hasBgc}"> <view class="status-bar" :style="{height:barHeight.statusBarHeight+'px'}"></view> <view class="topContent"> <view v-if="isBack" class="goBack" @click="goBack(backUrl)" hover-class="bgBlack999"> <image :src="'../static/icon_back_'+backColor+'.png'" mode=""></image> </view> <view class="title" :style="{color:color}">{{title}}</view> </view> </view> <view v-if="isHeight" class="marginBox" :style="{height:barHeight.allHeight+'px'}"></view> </view> </template> <script> import {mapState} from 'vuex' export default { props:{ title:{ type:String, default:'XXX' }, hasBgc:{ //背景色 type:String, default:'#5FCBAD' }, color:{ //字体颜色 type:String, default:'#fff;' }, isBack:{ //是否有返回箭头 type: Boolean, default:false }, backColor:{ //回退箭头颜色 type:String, default:'white' }, isHeight:{ //头部撑开高度 type:Boolean, default:true }, isNavBack:{ //固定返回前面的页面 type:Boolean, default:true }, backUrl:{ //返回到那个页面 type:String, default:'index' }, backNum:{ //返回几个页面 type:Number, default:1 } }, computed:{ ...mapState(['barHeight']) }, data() { return { }; }, methods:{ goBack(url){ if(this.isNavBack){ const that = this uni.navigateBack({ delta:that.backNum }) }else{ var isUrl = `/pages/${url}/${url}` console.log(isUrl) uni.switchTab({ url: isUrl }) } } }, created() { if(!this.barHeight.allHeight||!this.barHeight.statusBarHeight){ this.isBarHeight999().then((isTemp)=>{ this.$store.state.barHeight = isTemp }) } } } </script> <style lang="scss"> .nav_top{ width: 100vw; position: fixed; top: 0; left: 0; z-index: 900; display: flex; flex-direction: column; background-color: transparent; &.bgColor{ background-color: #5FCBAD; } .topContent{ width: 100vw; height: 100upx; position: relative; .goBack{ position: absolute; top: 0; left: 0; width: 10vw; height: 100upx; display: flex; align-items: center; padding-left: 20upx; box-sizing: border-box; image{ width: 40upx; height: 42upx; } } .title{ text-align: center; width: 100%; height: 100%; line-height: 100upx; font-size: 40upx; font-family:'自定义字体'; } } } </style>使用:/*test.vue*/<template> <view> <navTop :title="navtop.title" :isHeight="false" hasBgc="red" :color="navtop.color" :isBack="true"></navTop> </view> </template> <script> import navTop from '../../components/navTop.vue' export default { components: { navTop }, data() { return { navtop: { title: 'XXX', color: '#024230' } }; } } </script>效果图如下:已适配大部分机型,具体尺寸可以根据需求自行调整。。(还有不足之处,慢慢完善吧 o(∩_∩)o 哈哈)
2023年02月15日
70 阅读
0 评论
0 点赞
2023-02-15
uni-app人脸识别功能
在听到人脸识别,连忙去看看,去阿里 腾讯 看他们的人脸识别方法,官方sdk什么的。到后来,需求确定了,拍照(照片)上传,后台去识别是不是本人,这一瞬间从天堂到地狱,放着官方那么好的方法,不要。用照片,还的自己去写,去实现。下面为大家提供一个 uni-app 自动拍照 上传照片 后端做匹配处理。参考插件市场的 https://ext.dcloud.net.cn/plugin?id=4892在使用前 先去manifest.json 选择APP模块配置, 勾选直播推流 直接采用nvue开发,直接使用live-pusher组件进行直播推流,如果是vue开发,则需要使用h5+的plus.video.LivePusher对象来获取 nuve js注意事项 注意nuve 页面 main.js 的封装函数 。无法直接调用(小程序其他的端没有测试)在APP端 this.api报错,显示是undefined,难道nvue页面,要重新引入api文件在APP端,main.js中挂载Vuex在nvue页面无法使用this.$store.state.xxx简单粗暴点直接用uni.getStorageSync 重新获取一遍//获取用户数据 userInfo在Data里定义 this.userInfo = uni.getStorageSync('userInfo')nuve css注意事项 单位只支持px其他的em,rem,pt,%,upx 都不支持需要重新引入外部css不支持使用 import 的方式引入外部 css<style src="@/common/test.css"></style>默认flex布局display: flex; //不需要写 //直接用下面的标签 flex-direction: column; align-items: center; justify-content: space-between;页面样式<view class="live-camera" :style="{ width: windowWidth, height: windowHeight }"> <view class="title"> {{second}}秒之后开始识别 </view> <view class="preview" :style="{ width: windowWidth, height: windowHeight-80 }"> <live-pusher id="livePusher" ref="livePusher" class="livePusher" mode="FHD" beauty="1" whiteness="0" aspect="2:3" min-bitrate="1000" audio-quality="16KHz" :auto-focus="true" :muted="true" :enable-camera="true" :enable-mic="false" :zoom="false" @statechange="statechange" :style="{ width: cameraWidth, height: cameraHeight }"></live-pusher> <!--提示语--> <cover-view class="remind"> <text class="remind-text" style="">{{ message }}</text> </cover-view> <!--辅助线--> <cover-view class="outline-box" :style="{ width: windowWidth, height: windowHeight-80 }"> <cover-image class="outline-img" src="../../static/idphotoskin.png"></cover-image> </cover-view> </view> </view>JS部分<script> import operate from '../../common/operate.js' import api from '../../common/api.js' export default { data() { return { //提示 message: '', //相机画面宽度 cameraWidth: '', //相机画面宽度 cameraHeight: '', //屏幕可用宽度 windowWidth: '', //屏幕可用高度 windowHeight: '', //流视频对象 livePusher: null, //照片 snapshotsrc: null, //倒计时 second: 0, ifPhoto: false, // 用户信息 userInfo: [] }; }, onLoad() { //获取屏幕高度 this.initCamera(); //获取用户数据 this.userInfo = uni.getStorageSync('userInfo') setTimeout(() => { //倒计时 this.getCount() }, 500) }, onReady() { // console.log('初始化 直播组件'); this.livePusher = uni.createLivePusherContext('livePusher', this); }, onShow() { //开启预览并设置摄像头 this.startPreview(); }, methods: { //获取屏幕高度 initCamera() { let that = this uni.getSystemInfo({ success: function(res) { that.windowWidth = res.windowWidth; that.windowHeight = res.windowHeight; that.cameraWidth = res.windowWidth; that.cameraHeight = res.windowWidth * 1.5; } }); }, //启动相机 startPreview() { this.livePusher.startPreview({ success(res) { console.log('启动相机', res) } }); }, //停止相机 stopPreview() { let that = this this.livePusher.stopPreview({ success(res) { console.log('停止相机', res) } }); }, //摄像头 状态 statechange(e) { console.log('摄像头', e); if (this.ifPhoto == true) { //拍照 this.snapshot() } }, //抓拍 snapshot() { let that = this this.livePusher.snapshot({ success(res) { that.snapshotsrc = res.message.tempImagePath; that.uploadingImg(res.message.tempImagePath) } }); }, // 倒计时 getCount() { this.second = 5 let timer = setInterval(() => { this.second--; if (this.second < 1) { clearInterval(timer); this.second = 0 this.ifPhoto = true this.statechange() } }, 1000) }, // 图片上传 uploadingImg(e) { let url = e // console.log(url); let that = this uni.uploadFile({ url: operate.api + 'api/common/upload', filePath: url, name: 'file', formData: { token: that.userInfo.token }, success(res) { // console.log(res); let list = JSON.parse(res.data) // console.log(list); that.request(list.data.fullurl) } }) }, //验证请求 request(url) { let data = { token: this.userInfo.token, photo: url } api.renzheng(data).then((res) => { // console.log(res); operate.toast({ title: res.data.msg }) if (res.data.code == 1) { setTimeout(() => { operate.redirectTo('/pages/details/details') }, 500) } if (res.data.code == 0) { setTimeout(() => { this.anew(res.data.msg) }, 500) } }) }, // 认证失败,重新认证 anew(msg) { let that = this uni.showModal({ content: msg, confirmText: '重新审核', success(res) { if (res.confirm) { // console.log('用户点击确定'); that.getCount() } else if (res.cancel) { // console.log('用户点击取消'); uni.navigateBack({ delta: 1 }) } } }) }, } }; </script>css 样式<style lang="scss"> // 标题 .title { font-size: 35rpx; align-items: center; justify-content: center; } .live-camera { .preview { justify-content: center; align-items: center; .outline-box { position: absolute; top: 0; left: 0; bottom: 0; z-index: 99; align-items: center; justify-content: center; .outline-img { width: 750rpx; height: 1125rpx; } } .remind { position: absolute; top: 880rpx; width: 750rpx; z-index: 100; align-items: center; justify-content: center; .remind-text { color: #dddddd; font-weight: bold; } } } } </style>
2023年02月15日
81 阅读
0 评论
0 点赞
2023-02-14
uni-app云打包成ipa文件安装到iPhone上全过程记录
今天记录一下关于uniapp开发出来的项目怎么进行云打包,到本地手机上,这篇文章将从注册苹果开发者开始记录,一直到安装到 iPhone 手机上整个完整的过程,之所以写这篇文章第一是我自己需要记录一下,第二是很多博主也有写,但是都是片段,我也早就想写了,但是之前的例子没有截图,所以借助这次又写类似项目的机会,记录一下,我希望您在我这可以直接解决关于云打包中遇到的大部分问题。ok 废话不多说,开整,篇幅较长,我尽量分段加导航的模式进行! 本文主要是记录 ios 的打包过程,安卓的不写原因是他没有那么多的要求,放张图说明一下:我们就下面的四个红框的文件怎么来的分别进行讲解。(获取的地方我都进行加粗标记了,看的时候可以注意一下)不喜欢看我的可以看官方的官方地址 我们今天就是搞定上面需要的四个文件。需要的准备工作一个苹果的开发者账号 申请流程APP 的一系列大小的 logo (配置 manifest.json)登录到开发者平台(使用注册的开发者账号)进行证书、设备、开发人员的配置Hbuilder 开发工具进行云打包一台 MAC 笔记本,需要用到 mac 自带的钥匙串功能进行证书的申请APP 图标配置找到项目中的 manifest.json 文件,打开以后将本地的图标配置好就 ok,此步骤在 hbuilder 中操作 下面的步骤都是在您申请开发者账号以后需要做的事情。证书、设备、开发人员的配置登录到开发者平台进行配置开发者平台 添加开发者如果需要别的开发人员进行开发这个项目,可以直接打开 People,进行添加开发者,需要注意的是这一步只有注册者可以打开,也就是被拉进去的开发者是没有权限拉别人的。下面说一下具体拉人的步骤: 然后就到邀请成功,被邀请的开发者会收到一封邮件,点击同意就可以了 配置 App ID App 的唯一标识打开登录以后的开发者中心,点击下面的 Certificates 点击 ➕ 选择注册 选择 App 这里的配置名字的时候建议是域名反过来,加上你的描述,保证唯一就可以 不要选择太多,每一个的审核不一样,太多到时候审核失败了,不好搞! 下一步就是点击确认注册 至此 AppID 就创建结束了,也就意味着我们云打包的截图上面的第一个红框(BundleID(AppID))内容有了。生成证书请求文件这里需要 mac 笔记本自带的钥匙串功能,我们打开钥匙串,可以 command+空格,输入钥匙串 我这里没办法截图了,尴尬, 点击钥匙串访问-证书管理-从证书颁发机构请求证书 至此先放着,我们接着注册申请开发证书和描述文件这个东西申请下来以后就可以将 APP 安装到我们的 iPhone 上,进行测试,但是这个需要注意的一个点是,一个描述文件最多可以绑定 100 台测试手机 此时 cer 文件双击可以打开这个证书,会直接打开钥匙串,这个 cer 文件是为了后面导出 p12 证书,也就是为第一张红框中的最后一个文件进行准备导出 p12 证书导出证书的目的就是添加到红框中最后一个选项,我们打开刚才下载的证书 我们右键进行导出 这里设置的密码就是我们云打包里面的第二个红框里面需要输入的密码(证书私钥密码) p12 文件就是红色框中的最后一个文件(私钥证书) 至此我们云打包需要的四个地方已经搞定了三个,就剩第三个红框中的内容了,我们接着看申请开发 描述文件这个文件是云打包中的第三个红框需要的文件,这个文件可以确定哪些设备可以进行安装 beta 版本的 APP,也就是没有发布之前可以在哪些手机上进行安装。 在生成描述文件之前要先添加设备信息添加设备 UDID 获取 UDID这个方式很多,最快的方式就是直接使用 mac 自带的 itunes 程序连接手机 这里很多人看到的是序列号,没事,点击序列号会变,变到 UDID 的时候右键进行拷贝就好了。 这样就获取到 udid,然后按照上面的步骤继续,最后保存就好了。至此设备就添加结束了。生成描述文件 下一步就是点击下载到本地,至此云打包中的第三个红色框(证书 profile 文件)的文件也准备完毕,现在就可以打包了。打包结束安装到本地 至此 ipa 文件就生成了,但是他和安卓不同的是 iPhone 不支持直接点击安装,这个时候我们需要下载一个爱思助手进行帮助我们安装本地的 ipa 文件,爱思助手下载地址 下载好以后连接上手机 如果是 windows 电脑也是可以安装的,只是没办法打包,如果给你一个 ipa 文件,你需要的是下载一个爱思助手 windows 版本的,然后安装 itunes,windows 版本的,连接上你的 iPhone 手机,下面的操作都一样了,我们接着看,打开以后添加本地文件,或者将 ipa 文件直接拖进去也可以,如图: 然后就等待安装结束,提示成功以后手机上就可以正常使用了。常见问题安装失败安装失败很大一个原因是没有配置 UDID,配置以后没有重新成功描述文件,也就是云打包中的第三个红框中文件没有更换就打包了。手机连接不上数据线是不是有问题是不是没有解锁是不是没有点击信任是不是 type-c 或者 usb 口坏掉了博客转载与 uni-app云打包成ipa文件安装到iPhone上全过程记录
2023年02月14日
99 阅读
1 评论
0 点赞
2023-02-14
PVE 7.2 ikuai + openwrt + DSM6.2.3 + 网心云 重装备用
PVE 7.2 ikuai + openwrt + DSM6.2.3 + 网心云 重装备用1.PVE 7.2 安装 PVE 系统官网下载下载后用 RUFUS 以 DD 模式写入 U 盘选择 U 盘启动,安装时最好连接外网 域名 pve.lan ip 192.168.10.253 /24 网关 192.168.10.1更新 PVEPVE 换源wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bullseye.gpg -O /etc/apt/t硬件配置CPU i3-8300T主板 工控主板 6SATA 2NVME 2 千兆口内存 8G*2 DDR4 2666机箱 迎广 MS04电源 益恒 250W硬盘 大华 1T NMVE 三星 250G 2.5 寸 SSD 4 块 3.5 希捷银河企业盘 8T网卡 PCIE 2 口千兆1.PVE 7.2 安装PVE 系统官网下载 https://www.proxmox.com/en/downloads下载后用 RUFUS 以 DD 模式写入 U 盘选择 U 盘启动,安装时最好连接外网 域名 pve.lan ip192.168.10.253 /24 网关 192.168.10.1更新 PVEPVE 换源wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg echo "#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise" \> /etc/apt/sources.list.d/pve-enterprise.list echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription" \> /etc/apt/sources.list.d/pve-no-subscription.listDebian 换源mv /etc/apt/sources.list /etc/apt/sources.list.bk nano /etc/apt/sources.listSources.list 加入源deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free # deb-src http://mirrors.ustc.edu.cn/debian stable main contrib non-free deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free # deb-src http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free # deb http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free # deb-src http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free更新apt update apt upgrade -y设置 PVE 直通shell 里面输入命令:nano /etc/default/grub在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"然后修改为GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"更新一下update-grub新增所需模块修改文件/etc/modules,加入如下的行nano /etc/modules在里面填入vfio vfio_iommu_type1 vfio_pci vfio_virqfd执行命令来更新 initramfsupdate-initramfs -u -k all重启 PVE 虚拟机2.ikuai 安装ikuai 系统官网下载 https://www.ikuai8.com/component/downloadiso 上传常规 名称:ikuai操作系统 使用 CD/DVD 光盘镜像文件(ISO):选择 ikuai 镜像系统 默认磁盘 总线/设备:SATA 磁盘大小:8GCPU 核心:2内存 内存 :2048网络 模型:VirtIO (半虚拟化)确认添加 PCI 设备 选择直通的网口选项里开机自启动改成是安装好后移除 CD 镜像设置 ikuai修改用户名密码,远程 web 访问修改内外网设置,外网 PPPOE,内网 LAN 多网口桥接 192.168.10.1修改 DHCP 服务 192.168.10.11-192.168.10.110 DNS 223.5.5.5 114.114.114.114打开 UPNP,导入备份的端口映射高级应用里,设置 aliyun 域名映射跨三层应用里设置 192.168.10.2设置 VPN 认证计费里先添加用户账号,本地认证服务里启用 L2TP绑定 ikuai 云,网络里启用 ipv63.openwrt 安装镜像文件 自己编译(20220410)旁路由专用在阿里云共享里iso 上传 img 文件常规 名称:openwrt操作系统 不使用任何介质CPU 核心:2内存 内存 :1024网络 模型:VirtIO (半虚拟化)其余默认确认原硬盘分离删除选项里开机自启动改成是转换 openwrt 镜像盘为虚拟磁盘qm importdisk 101 /var/lib/vz/template/iso/openwrt.img local-lvm使用虚拟磁盘,修改 SATA 总线设置 openwrt修改用户名密码修改 ip 192.168.10.2 网关 192.168.10.1 DNS223.5.5.5 114.114.114.114 忽略此接口修改主题、背景ACC 网络加速设置安装 SNMPD服务里插件订阅,仅常用端口4.DSM6.2.3 安装引导文件系统文件在阿里云共享里iso 上传 img 引导文件常规 名称:DSM操作系统 不使用任何介质CPU 核心:4内存 内存 :6144网络 模型:VirtIO (半虚拟化)其余默认确认原硬盘分离删除选项里开机自启动改成是转换群晖引导盘为虚拟磁盘qm importdisk 102 /var/lib/vz/template/iso/synoboot.img local-lvm使用虚拟磁盘,修改 SATA 总线添加直通 PCI SATA 控制器,硬盘直通启动后爱快 DHCP 里查看 IP 地址,安装或恢复系统设置 DSM设置用户名密码修改 ip 192.168.10.210 网关 192.168.10.2 DNS223.5.5.5修改主题、背景等添加第三方套件源 矿神群晖套件中心安装 webstation、phpmyadmin、docker 等5.网心云安装网心云 X86 ISO 镜像官网下载 iso 上传常规 名称:WXY操作系统 使用 CD/DVD 光盘镜像文件(ISO):选择 X86 镜像系统 默认磁盘 总线/设备:SATA 磁盘大小:20GCPU 核心:4内存 内存 :3072网络 模型:VirtIO (半虚拟化)确认选项里开机自启动改成是安装好后移除 CD 镜像设置网心云安装后添加数据盘 480G激活或迁移网心云修改 IP 192.168.10.188修改带宽等信息APP 查看是否正常电信 1000M 宽带上传 50M,网心云稳定下来,平均 1.8 元左右一天,ALL IN ONE 一天的电费够了
2023年02月14日
250 阅读
0 评论
0 点赞
2023-02-14
宝塔面板卸载重装教程:清理删除宝塔面板并重新开始
宝塔面板卸载重装怎么操作?我们很多用户可能安装宝塔之后会经常看一下有没有新版本,如果有新版直接右上角”更新”升级一下版本就可以了,升级新版也有助于修复已知的 BUG 或漏洞。那么除了升级之外,如果我们想卸载宝塔,并且使用其他的建站环境的话,可以看一下本文整理的宝塔面板一键卸载重装教程。目前,卸载方法主要包括直接重装系统法以及使用宝塔提供的卸载命令进行卸载的方法。一、直接重装系统以实现卸载宝塔面板重装系统很容易,直接在云服务器管理中点重装,选择操作系统即可重装,主流云服务商都有这功能。等重装完之后,所有数据都没了,自然也就实现了卸载的目的。但是,重装之前,一定要做好数据备份,否则如果有重要的数据,丢失了就不好了。注意:如果是云服务器,我们可以利用快照备案,不过也并不是万能的,尽量把数据打包到本地备份,以防不测!二、使用卸载命令进行卸载宝塔面板宝塔官方有提供宝塔面板的卸载命令,使用这个卸载命令,我们就能将宝塔面板卸载掉。Ps:这里有一点需要注意的,如果卸载宝塔面板的同时,也希望将 Nginx、MySQL、PHP 等组件卸载掉,那么我们应该先在宝塔面板里面卸载掉以上软件后,再进行下面的步骤。登录 VPS 后,我们复制以下卸载命令并回车执行,即可一键卸载宝塔面板:/etc/init.d/bt stop && chkconfig --del bt && rm -f /etc/init.d/bt && rm -rf /www/server/panel三、使用卸载脚本进行卸载宝塔面板除了使用卸载命令进行卸载外,我们也可以使用官方提供的卸载脚本进行卸载,同时这个卸载脚本会更暴力一些。同样也是需要通过 SSH 登录搬瓦工 VPS 的,登录后,我们复制以下命令,然后依次执行即可:wget http://download.bt.cn/install/bt-uninstall.sh sh bt-uninstall.sh执行第二行命令后,会让我们进行以下选择:1、卸载宝塔2、卸载宝塔及运行环境(可能影响站点、数据库及其他数据)如果是单纯的卸载宝塔,需要保留 LNMP 等运行环境,则选择 1 选项;如果是想卸载宝塔和运行环境,则选择 2 选项。按照自己的需求,选择对应的选择,回车后即可卸载宝塔面板。本文来源:https://yuntue.com/post/30105.html | 云服务器网,转载请注明出处!
2023年02月14日
139 阅读
0 评论
0 点赞
2023-02-14
最详细的宝塔安装教程
宝塔安装教程(一)服务器(二)进入 shell 页面(三)在 shell 页面安装宝塔(四)登陆宝塔(一)服务器先搞台服务器,1 核 2G 就可以了 我们选择安装在服务器上,我选择的服务器是阿里云 有了服务器后先设置好登陆密码 (二)进入 shell 页面直接远程连接服务器,方法有很多,不一一展示了 这边我就直接用浏览器演示输入下面代码切换至 root 账号//切换root账号sudo su root(三)在 shell 页面安装宝塔宝塔官网:https://www.bt.cn 点击立即安装 复制代码// 最好是去官网看最新代码yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh回车下载安装,遇到(y/n)输入 y,也就是 yes,继续安装 看到黄色字体后(_是颜色哈_),就代表安装完成了 把这部分代码复制下来保存好,我们使用外网进入宝塔在 shell 里,复制粘贴我都用的是鼠标右键(有更好的快捷键可以留言告诉我,谢谢各位大佬)对了我们还要放行 8888 端口直接去服务器控制台,放行 8888 端口(四)登陆宝塔在浏览器输入我们刚才复制保存的外网链接 使用刚才的账号密码登陆即可这是宝塔推荐的一些 LAMP,选择推荐的一键安装就好了 **到这里本教程也就结束了 谢谢各位观看,如果有错误的地方,可以留言告知**
2023年02月14日
114 阅读
0 评论
0 点赞
2023-02-14
青龙面板集合仓库(不断更新)安装青龙面板开启京东白嫖模式
之前网上有只要扫码一下就可以每天领上百京豆和一些红包的活动,后来呢,扫码就失效了,但是呢,这背后的技术还没有失效。这白嫖活动其实就是用脚本代替我们去参与京东的各种活动,去获取红包和京豆,而这些脚本是部署在电脑上,定时去执行的,接下来,根据网上的大佬的教程,我们也来实现一下。一、安装前的准备青龙面板是使用Docker来安装的,理论上,只要有可以运行 Docker 的电脑都可以进行安装。但是呢,因为脚本要定时运行,所以最好安装在服务器上,或者一直不关机的的电脑上。有人说使用树莓派等开发板能够实现吗,理论上好像也可以,但是因为树莓派是 arm 架构的,得找到相应的 arm 版的青龙面板镜像。个人建议购买一台服务器,阿里云、腾讯云都有很便宜的服务器,那种一核一 G 的服务器完全够用,我买的是一核 2G 的腾讯云服务器,一年也就 74 元,运气好的话,一个月就回本了。服务器最好选用 Linux 服务器,搭建只需要执行些简单的命令即可。接下来的教程都是使用Linux 服务器进行搭建的。二、安装 docker已经安装 Docker 的可以跳过这一步,没有安装的可以使用以下脚本命令直接安装 Docker。curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun安装 Docker 后记得启动 Docker,并配置开机启动sudo systemctl start docker #启动Docker sudo systemctl enable docker #配置开机自启三、拉取镜像docker pull whyour/qinglong:latest四、部署镜像(二选一)4.1 docker命令部署docker run -dit \ -v $PWD/ql/config:/ql/config \ -v $PWD/ql/log:/ql/log \ -v $PWD/ql/db:/ql/db \ -v $PWD/ql/repo:/ql/repo \ -v $PWD/ql/raw:/ql/raw \ -v $PWD/ql/scripts:/ql/scripts \ -v $PWD/ql/jbot:/ql/jbot \ -p 5700:5700 \ --name qinglong \ --hostname qinglong \ --restart always \ whyour/qinglong:latest4.2 docker-compose部署## 安装docker-compose sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ## 创建docker-compose.yml version: "3" services: qinglong: image: whyour/qinglong:latest container_name: qinglong restart: unless-stopped tty: true ports: - 5700:5700 environment: - ENABLE_HANGUP=true - ENABLE_WEB_PANEL=true volumes: - ./config:/ql/config - ./log:/ql/log - ./db:/ql/db - ./repo:/ql/repo - ./raw:/ql/raw - ./scripts:/ql/scripts - ./jbot:/ql/jbot - ./ninja:/ql/ninja labels: - com.centurylinklabs.watchtower.enable=false ## 到docker-compose.yml目录启动容器 docker-compose up -d五、打开防火墙青龙面面板通过网页访问,走的是 5700 端口,记得在服务器防火墙设置中放行 5700 端口六、配置青龙面板1、登录青龙面板面板地址:http://服务器IP:5700 默认账号:admin 默认密码:adminadmin当您使用以上密码首次登录后,面板会显示已初始化密码。请在 SSH 终端内查看新密码(输出的结果就是实际的密码了{“username”:“admin”,“password”:""),查看代码如下docker exec -it qinglong cat /ql/config/auth.json2、青龙面板基础命令青龙面板基础命令(容器内执行或者新建定时任务时忽略 docker exec -it qinglong),一般不需要使用,大部分操作可以在网页中实现,此处仅做记录。#更新青龙 docker exec -it qinglong ql update #更新青龙并编译 docker exec -it qinglong ql restart #拉取自定义仓库 docker exec -it qinglong ql repo https://ghproxy.com/https://github.com/whyour/hundun.git "quanx" "tokens|caiyun|didi|donate|fold|Env" #拉取单个脚本 docker exec -it qinglong ql raw https://ghproxy.com/https://raw.githubusercontent.com/moposmall/Script/main/Me/jx_cfd.js #删除7天前的所有日志 docker exec -it qinglong ql rmlog 7 #启动bot docker exec -it qinglong ql bot #导出互助码 docker exec -it qinglong ql code #通知测试 docker exec -it qinglong notify test test #立即执行脚本 docker exec -it qinglong task test.js now #并行执行脚本 docker exec -it qinglong task test.js conc3、添加库青龙面板本身不具备京东脚本的功能,只是一个管理和执行相应脚本的平台,接下来使用青龙面板拉去一些库。登录面板后选择定时任务->添加任务 添加任务的界面如下图所示,名称随便起,命令待会给出,定时规则自定义,我使用的是0 0 0 * * *,代表每天零点执行脚本。我们添加的脚本是拉取脚本的脚本,实际执行的脚本会在我们添加的脚本运行后自动添加。 4、拉取各种库的脚本如下### 签到集合库 各平台签到,项目地址 https://github.com/Sitoi/dailycheckin 某东,目前还在维护的,集合库(包含开卡)拉其一就好,太多重复请求可能黑。 开卡是店铺会员卡,邀请好友开卡得豆的活动,开多了会有很多垃圾短信。 天天喊让人上他车的就是为了做他工具人助力各活动。 ### jdpro(集合库) 点评:更新勤,无重复,互助模式可选,有一键配置适合小白。 项目地址:https://github.com/6dylan6/jdpro.git 国内机用下面指令(带代理): ql repo https://js.dayplus.xyz/https://github.com/6dylan6/jdpro.git "jd_|jx_|jddj_" "backUp" "^jd[^_]|USER|JD|function|sendNotify" 国外机用下面指令: ql repo https://github.com/6dylan6/jdpro.git "jd_|jx_|jddj_" "backUp" "^jd[^_]|USER|JD|function|sendNotify" ### KR(集合库) 点评:更新勤,无重复,内部互助,顺序不可选。 项目地址:https://github.com/KingRan/KR.git ql repo https://github.com/KingRan/KR.git "jd_|jx_|jdCookie" "activity|backUp" "^jd[^_]|USER|utils|function|sign|sendNotify|ql|JDJR" ### yydspure(集合库) 点评:更新一般,比较多失效的。 ql repo https://github.com/okyyds/yyds.git "jd_|jx_|gua_|jddj_|m |jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator" "master" ### Faker3(集合库) 点评:更新算勤,比较多重复和失效的。 ql repo https://github.com/shufflewzc/faker3.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator" "main" ### 【619】【集合库,可选】 ql repo https://github.com/gys619/jdd.git "jd_|jx_|jddj_|gua_|getJDCookie|wskey" "activity|backUp" "^jd[^_]|USER|utils|ZooFaker_Necklace|JDJRValidator_|sign_graphics_validate|jddj_cookie|function|ql|magic|JDJR|JD" "main" ### 【zero205】【集合库,拉KR即可】 ql repo https://github.com/zero205/JD_tencent_scf.git "jd_|jx_|jdCookie" "backUp|icon" "^jd[^_]|USER|sendNotify|sign_graphics_validate|JDJR|JDSign|ql" "main"仓库中的脚本可能会重复,但是没事,建议都拉。拉完之后记得运行,不运行的话要等到你设置好的时间才会自动执行。运行后会自动拉去一些执行活动的脚本。七、登录京东账号之前登录京东账号很简单,扫个码就实现了,那是通过ninjia来实现的,但是现在不管用了,需要我们手动添加。手动添加的话有很多种方法,可以通过网页查看源代码,也可以通过抓包,原理都是一样,都是为了获取 Cookie,这里介绍一种更为简单的方法,只需要获取验证码登录,就可以获取 Cookie。软件的下载地址放蓝奏云了,需要的自取。 蓝奏云地址:电脑获取验证码抓京东 ck 运行软件获取验证码 复制获取的 Cookie,Cookie 千万别泄露,Cookie 千万别泄露,Cookie 千万别泄露,重要的事情说三遍。然后打开青龙面板,选择环境变量->添加变量,名称为JD_COOKIE,值为刚复制的 COOKIE,备注自己填,别的不需要动。添加后点确定就可以,如果需要添加多个账号,只需要获取多个 COOKIE 添加上去就可以了,名称仍然为JD_COOKIE。添加好京东账号之后就可以去执行脚本了,如果等不及想尝试,可以自己触发脚本运行,否则就会在相应的时间执行。 八、Others1、将京东账号绑定微信该脚本执行时会执行京东极速版的一个任务,那个任务执行时会往绑定的微信里面打钱,虽然不多,一天几毛,但是积少成多嘛!有的账号即使绑定微信了也不会打钱,不知道为啥2、下载京喜不是打广告,也没钱啊。这个脚本会帮你领各种红包,大概两三天就能够弄到十来块,这些红包是无门槛的,但是大部分只能够在京喜里面使用。京东里面的商品在惊喜同样可以结算,美滋滋!3、打开京东京喜各种活动什么农场啊,牧场啊,都给打开,这些东西一般第一次需要人手动选择商品,然后等待脚本执行就好了。
2023年02月14日
267 阅读
0 评论
0 点赞
1
...
24
25
26
27