多端开发
文章平均质量分 62
客户端软件开发学习和实践,小程序,移动端APP,桌面端软件都来这里吧
1024小神
不会就去学,学习是永远不会亏的(wx:lanxingme)
展开
-
vue3长列表优化,使用vue-virtual-scroller实现直播间弹幕列表虚拟滚动效果
但是需要注意:获取DynamicScroller这个组件的时候,要使用document.getElementById('liveMsg')这种形式,不能使用ref这种,因为ref获取到的并不是一个html元素,没有scrollTop方法,所以无法滚动到底部。这三个组件区别是滚动每一项高度是固定的还是动态的,Recycle就是固定的高度,Dynamic是动态的,动态的话,必须要包含DynamicScrollerItem。原创 2024-07-02 15:21:39 · 1489 阅读 · 0 评论 -
tauri使用github action实现跨平台编译并解决编译错误,mac已损坏,无法打开,你应该将它移到废纸篓解决办法
里面有编译文件可以参考。今天主要讲一下遇到的问题。原创 2024-06-28 14:07:03 · 986 阅读 · 0 评论 -
如何使用WxPusher向个人微信推送发送实时消息,比如定时任务等
(微信推送服务)是一个使用微信公众号作为通道的,实时信息推送平台,你可以通过调用API的方式,把信息推送到微信上,无需安装额外的软件,即可做到信息实时通知。你可以使用来做服务器报警通知、抢课通知、抢票通知,信息更新提示等。WxPusher是免费的推送服务,为了能更好的服务大家,这里说明一下系统相关数据限制消息发送,必须合法合规,发送违规违法欺诈等等非正常消息,可能被封号;原创 2024-06-27 16:32:09 · 1643 阅读 · 0 评论 -
在rust中使用reqwest获取响应里面的cookie,报错borrow of moved value: `response`value borrowed here after move
说的是先move了,然后再borrowed,因为move会转移response的所有权,转移所有权之后,就不能在原实例上租借了,这是rust中的规范。可以看到cookies上面绑定了一个生命周期`a,这个生命周期是和Response绑定的,所以当Response销毁的时候,这个cookie对应的也会销毁。确实是的,我在获取响应内容的时候使用了这个response实例和.text()方法,看一下这个方法里面的内容是啥?那是不是在这个cookie之前有某个地方使用并move了这个response实例?原创 2024-06-25 10:15:05 · 378 阅读 · 0 评论 -
tauri开发软件时报错The `Http` module is not enabled. You must enable one of its APIs in the allowlist.
【代码】tauri开发软件时报错The `Http` module is not enabled. You must enable one of its APIs in the allowlist.原创 2024-06-22 17:48:16 · 326 阅读 · 0 评论 -
tauri中从前端ts调用rust函数,并异步收到响应结果
命令是在文件中定义的。要创建一个命令,只需添加一个函数,并使用println!");())原创 2024-06-22 17:16:26 · 631 阅读 · 2 评论 -
创建一个和tauri图标一致的icon和苹果icns图标
我们先看一下tauri的图标的样子,然后看一下tauri程序安装之后的样子,其实这里最困难的就是苹果设备的icon图标怎么搞,因为如果你设置的不合适,就会导致生成的苹果图标在安装后比较显大,有的不太好看。所以这里我们就模仿tauri原本的图标尺寸搞一个大小差不多的图标出来。大小和其他的图标差别不大了。原创 2024-06-22 14:25:13 · 215 阅读 · 0 评论 -
xcode报错合集,你都遇到过哪些跳不过的坑
1.报错Consecutive declarations on a line must be separated by ';其实我这里是用因为创建了一个结构体,然后在没有使用@State的情况下,修改它的属性了。原创 2024-06-19 18:47:11 · 255 阅读 · 0 评论 -
tauri嵌入外部二进制文件,以及sidecar是什么意思?
有时,为了使应用程序正常运行或防止用户安装额外的依赖项(例如Node.js或Python或者ffmpeg等),你可能需要嵌入依赖的二进制文件,我们将这种二进制文件称为"sidecar",中文意思就是侧边车,我们的主程序就像主驾驶的车,依赖的二进制文件就像侧边挂载的小车一样。要捆绑你选择的二进制文件,你可以在tauri.conf.json文件中的tauri > bundle对象下添加externalBin属性。原创 2024-06-16 11:19:11 · 527 阅读 · 1 评论 -
swiftui中使用icon图标时,让中间部分不透明显示
在使用了Image(systemName: "plus.circle.fill")这个视图组件后,发现中间的加号竟然是透明的,但是我们想要的是不让它透明,该怎么做呢?可以看到确实不透明了,但是这个按钮的周围怎么出现了白色的一个边框?这也不是我们想要的结果啊,好吧,确实不能这么简单的设置。最简单的方式就是给这个图片设置一个白色的背景是不是就好了?原创 2024-06-15 16:45:09 · 278 阅读 · 0 评论 -
Rust初步了解async异步并发编程,以及定时任务等
和其他语言不大一样的是,异步 Rust(async Rust)相当于 Rust 世界里的一块儿新的领域,这个领域有一定的独立性,有它突出的特点。当然,独立并不代表封闭,我们前面所有的知识和经验仍然能顺利地在这个领域里发挥作用。原创 2024-06-13 10:49:51 · 763 阅读 · 0 评论 -
Windows的AppData文件夹,查看flutter开发的shared_preferences里面的数据
AppData 文件夹包含 Windows PC 上的应用程序自定义设置、文件和数据。包括程序里可以个性化设置而不能影响替他用户文件,临时数据文件夹,快速启动文件夹等。所以里面有很多以软件名称或软件公司命名的文件夹。每个 Windows 用户帐户都有其自己的 AppData 文件夹。其中有三个文件夹:Local,LocalLow 和 Roaming。Local 文件夹用于存储特定于单个 Windows 系统的数据,这意味着数据不会在多台 PC 之间同步。原创 2024-06-07 16:12:46 · 737 阅读 · 0 评论 -
xcode管理ios模拟器和清理无用的垃圾
从 App Store 下载安装 DevCleaner ,可以清理掉很多无用的缓存或者垃圾。Xcode安装之后,simctl可以通过xcrun命令来执行。你可以通过直接输入来查看它支持的作用。通过这个命令可以方便地控制模拟器。原创 2024-06-05 18:30:51 · 546 阅读 · 0 评论 -
PWA缓存策略区别NetworkOnly/CacheFirst/CacheOnly/NetworkFirst/StaleWhileRevalidate
回到在缓存策略里提到的,讲讲和缓存策略的参数。大致可以认定的是 cacheExpiration 会用来处理缓存失效,cacheName 决定了 cache 的索引名,cacheableResponse 则决定了什么请求返回可以被缓存。那么插件到底是怎么被处理,现在可以看函数了,函数处理了什么,它其实就是把里的参数找到对应方法,传入参数实例化,然后挂在在封装后的wrapperOptions的plugins参数里,但是只是实例化了有什么用呢?原创 2024-06-05 15:48:17 · 651 阅读 · 0 评论 -
SwiftUI状态管理@State/@Binding/@ObservedObject/@EnvironmentObject/@StateObject
StateObject的声明周期与当前所在View生命周期保持一致,即当View被销毁后,StateObject的数据销毁,当View被刷新时,StateObject的数据会保持;而ObservedObject不被View持有,生命周期不一定与View一致,即数据可能被保持或者销毁;原创 2024-06-04 17:26:56 · 1329 阅读 · 0 评论 -
SwiftUI之Transitions过渡动画
本篇文章的核心内容来了,上边介绍的各种效果基本上能够满足我们大部分的开发需求,但是,总有例外,当我们需要复杂的过渡效果的时候,这一小节的内容能够给你提供更多的思路比如, 在App中的各种样式的弹屏,翻页等等,你能想到的过渡都属于Transitions的范畴。当然我们这里只是演示了自定义这些过渡效果的核心思想。我们先做一个简单的例子,我们自定义一个过渡效果,类似与上边用到的opacity效果。写一个的扩展实现一个的静态类型返回值为,它接受两个参数,active和identity,分别表示开始和结束。原创 2024-06-03 14:39:18 · 863 阅读 · 0 评论 -
SwiftUI中id()如何标识View,有什么作用
使用id()的一个核心思想是,当我们修改了绑定值后,会立马新建一个相同的view,以至于表面看上去,该view像回到了初始状态,在我们平时开发中,当遇到此场景时,可以考虑使用该技术。原创 2024-06-03 14:32:50 · 924 阅读 · 1 评论 -
swiftUI使用VideoPlayer和AVPlayer播放视频
把视频添加到项目中,点击File > Add Files to 项目 > 选中要添加的视频,就可以了。如果提示没有这个包:No such module 'VideoPlayer'在视频上显示播放控制按钮等配置,可以通过给播放器绑定变量来实现控制。注意视频链接协议要为https的,http的视频链接需要单独设置。需要将本地视频资源加载到项目中,然后通过Bundle引入。ipad的效果:果然是看剧神器,视觉效果还是不错的。播放也没有问题,视频控制也没有问题,很不错了。在右上角输入包地址:添加到项目中即可。原创 2024-05-31 18:06:37 · 697 阅读 · 0 评论 -
xcode开发swift允许发送http请求设置
需要到项目的设置里面,点击info,如果没有App Transport Security Setting这一项,就点击最后一项,然后会有一个 + 号,点击加号,选择App Transport Security Setting,再点击左侧的 > 号折叠图标,添加。Xcode 现在新建项目默认只支持HTTPS请求,认为HTTP请求不安全,所以不支持。但是开发环境一般都是http模式,所以需要单独配置才可以访问。然后再次发送http请求或者http的视频资源链接,就可以访问了。原创 2024-05-31 17:09:00 · 392 阅读 · 0 评论 -
开发nfc读卡器应用出现报错Unhandled Exception: SCARD_E_NO_SERVICE
我用的parallels desktop虚拟机打开的windows系统,我用一个简单的工具测试了一下无法读到读卡器设备的结果,后来通过设置虚拟机设备 > 允许访问这个读卡器设备,才读到了nfc卡片内容。如果有识别到有nfc卡的话,点击一下底部的try again即可出现卡号。原创 2024-05-31 14:57:42 · 278 阅读 · 0 评论 -
flutter开发mac或者ios软件,提示Error: SocketException: Connection failed (OS Error: Operation not permitted,
发送请求:根据错误信息,发现是没有网络权限,申请网络权限就行。在macos/Runner/目录下,找到DebugProfile.entitlements和ReleaseProfile.entitlements,加入以下配置:DebugProfile.entitlements: Release.entitlements: 再次发送请求就好了原创 2024-05-31 11:18:20 · 293 阅读 · 0 评论 -
Alamofire常见GET/POST等请求方式的使用,响应直接为json
Alamofire是一个基于Swift语言开发的优秀网络请求库。它封装了底层的网络请求工作,提供了更简单、更易用的接口,大大简化了网络请求代码的编写。Alamofire提供了一套优雅且易于理解的API,使得开发者可以轻松发起各种类型的HTTP请求。它支持GET、POST、PUT、DELETE等常用的请求方法,并且提供了丰富的参数设置选项。Alamofire提供了强大的响应处理功能,支持数据解析、文件上传和下载等常见需求。它基于Swift的特性和语法,代码简洁、可读性强,易于维护和扩展。原创 2024-05-27 16:59:06 · 1379 阅读 · 0 评论 -
flutter项目运行报错Exception: Gradle task assembleDebug failed with exit code 1各种报错合集
添加相关的android sdk版本,要先点击show package details。修改依赖项:修改版本号,原来的2.2.3 换个版本 2.2.0 就好了。我是更新了一下flutter版本,然后又挂了一个代理就好了。原创 2024-05-26 15:25:55 · 1085 阅读 · 0 评论 -
Linux/Ubuntu 中安装 ZeroTier,实现内网穿透,2分钟搞定
相信很多人都有远程连接家中设备的需求,如远程连接家中的NAS、Windows等服务,所以会涉及到一个内网穿透工具的使用,如果没有公网IP的情况下,推荐大家使用ZeroTier,这是一款强大的内网穿透工具,原创 2024-05-26 11:43:28 · 2130 阅读 · 0 评论 -
swift网络库Alamofire的安装及简单使用,苹果开发必备
Alamofire是一个基于Swift语言开发的优秀网络请求库。它封装了底层的网络请求工作,提供了更简单、更易用的接口,大大简化了网络请求代码的编写。Alamofire提供了一套优雅且易于理解的API,使得开发者可以轻松发起各种类型的HTTP请求。它支持GET、POST、PUT、DELETE等常用的请求方法,并且提供了丰富的参数设置选项。Alamofire提供了强大的响应处理功能,支持数据解析、文件上传和下载等常见需求。它基于Swift的特性和语法,代码简洁、可读性强,易于维护和扩展。原创 2024-05-23 11:50:13 · 616 阅读 · 0 评论 -
swift中json和字典Dict或者数组相互转换,JSONSerialization的强大使用
在Swift中,你可以使用类将JSON字符串转换为字典。要将 Swift 字典转换为 JSON 字符串,我们可以使用JSONSerialization类的data(withJSONObject:options:)方法。这个方法将字典转换为二进制数据,然后我们可以使用String(data:encoding:)方法将其转换为字符串形式。原创 2024-05-22 20:29:36 · 492 阅读 · 1 评论 -
Swift使用JSONDecoder处理json数据,实现json序列化和反序列化
Json数据处理是开发中不可获取的一项技能,如果你不会处理json数据,那你离失业就不远了,所以学完了swift基础教程,还是先老老实实学习一下json处理吧,有了这项技能,你才可以继续下一个网络请求阶段的开发,因为网络请求大部分都是依赖json数据传输的。原创 2024-05-22 11:34:03 · 1499 阅读 · 0 评论 -
Mac电脑和Xcode实用小技巧和常用功能和设置
对于 iOS 开发者,Xcode 是我们最常用的开发工具。能够熟悉 Xcode 工具的常用界面元素以及常用快捷键和常用调试方式,对于高效开发非常重要,往往可以让我们事半功倍。然而由于这些知识点非常琐碎,所以在使用时往往会忘,常常需要查来查去,本文特意做了归纳总结,希望帮助每个 iOS 开发者码 code 如飞!原创 2024-05-18 19:03:36 · 1229 阅读 · 1 评论 -
为什么我的xcode按下enter回车不会自动补全,需要按下tab键才可以
为什么我的xcode按下回车不会自动补全,需要按下tab键才可以?而且我看视频有的up主也可以实现按下enter键实现自动补全的啊,就像使用vscode或者pycharm或者idea那样有提示了直接按下enter回车键就可以了,其实导致这个问题主要原因还是快捷键设置上。所以其实我们只需要给option + enter这个快捷键添加一个快捷:enter就可以了。原创 2024-05-18 16:31:00 · 271 阅读 · 0 评论 -
Xcode给项目安装依赖包或者第三方库,操作教程
Swift Package Manager是一个用于自动分发Swift代码的工具,并集成到Swift编译器中。一旦您设置了Swift包,添加Alamofire作为依赖项就像将其添加到package.Swift的依赖项值或Xcode中的package列表中一样简单。有关使用和安装说明,请访问他们的网站。要使用CocoaPods将Alamofire集成到您的Xcode项目中,请在您的Podfile中指定它。1.使用xcode中包管理工具来安装,好处是不用学习额外的包管理命令,只要点点点即可。原创 2024-05-17 16:26:24 · 1250 阅读 · 0 评论 -
作为 App 开发者会推荐安装的 Mac App
作为 App 开发者,必须安装的工具。当然,有经验的开发者不会从 Mac App Store 下载,而是从网站下载,除了安装过程更可控,也方便多版本共存。,控制 iOS 模拟器,方便调试,例如触发 Deep Link,构造推送等。自行 Build & Run 一次,之后就可以通过。,提供一个 Xcode 的源代码编辑器扩展。在 Xcode 中设置好快捷键后,能在编写 Swift 代码时更好地格式化(参考。,帮助开发者从 JSON 推断出多种语言的模型以节省时间,还提供许多实用的选项(参考。原创 2024-05-17 13:42:23 · 346 阅读 · 0 评论 -
配置Xcode的SwiftFormat格式化快捷键,更方便更快速格式化
xcode 没有格式化代码的功能,只有缩进整理和多行拆分,习惯前端代码的开发方式,不格式化代码显得有些凌乱,幸好有开源的工具可以实现这样的功能,他就是SwiftFormat。但是安装完之后,每次格式化都要点击Editor 下面的格式化,很是不友好,所以这里教大家如何配置快捷键:1.从 Xcode 的菜单打开,选中2.在右上的 Filter 里输入,然后选中第二个3.双击高亮行对应 Key 的位置,然后同时按下键盘上的(如果你喜欢其它快捷键可自行选择)然后回到编辑区,就会发现已经生效了。原创 2024-05-17 13:26:13 · 813 阅读 · 0 评论 -
Xcode代码格式化SwiftFormat安装使用,以及不生效问题
安装后在Xcode的Editor菜单找不到SwfitFormat选项,可以尝试打开SwfitFormat for Xcode软件,然后再在设置里安全与隐私选中Xcode的这个插件,然后重启Xcode尝试,我就是因为安装SwfitFormat for Xcode后没有打开过,直接在安全与隐私里面找不到Xcode的选项,所以就没有生效,记得这一步一定要做!打开设置 > 隐私与安全性 > 选择Xcode Sourde Editor >原创 2024-05-17 11:01:24 · 745 阅读 · 0 评论 -
参考 SwiftUI 官方示例做的常用组件示例,新手看过来,五分钟看完
本文参考 SwiftUI并将探索结果记录于此,希望能够对你有所帮助。对于本文所述内容,默认你已有一定的基于 Swift 语言的开发经验,故不会详细的叙述每个细节;如果对 Swift 语法有疑问,可先学习语法。原创 2024-05-16 07:00:00 · 1082 阅读 · 0 评论 -
swift语法新手快速入门,10分钟足以
编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”。如果你写过 C 或者 Objective-C 代码,那你应该很熟悉这种形式——在 Swift 中,这行代码就是一个完整的程序。你不需要为了输入输出或者字符串处理导入一个单独的库。全局作用域中的代码会被自动当做程序的入口点,所以你也不需要main()函数。你同样不需要在每个语句结尾写上分号。这个教程会通过一系列编程例子来让你对 Swift 有初步了解,如果你有什么不理解的地方也不用担心——任何本章介绍的内容都会在后面的章节中详细讲解到。原创 2024-05-15 10:57:44 · 1301 阅读 · 0 评论 -
swift异常错误处理,抛出异常和处理异常
错误处理(Error handling)是响应错误以及从错误中恢复的过程。Swift 在运行时提供了抛出、捕获、传递和操作可恢复错误(recoverable errors)的一等支持(first-class support)。某些操作无法保证总是执行完所有代码或生成有用的结果。可选类型用来表示值缺失,但是当某个操作失败时,理解造成失败的原因有助于你的代码作出相应的应对。原创 2024-05-14 15:44:57 · 765 阅读 · 0 评论 -
tauri2.0bate版本支持移动端开发了,ios和android开发有福了
Tauri 是一个开源框架,用于构建轻量级、高性能的桌面应用程序。它是使用 Web 技术(如 HTML、CSS 和 JavaScript)来创建用户界面,同时利用 Rust 语言提供的api功能。Tauri 的目标是提供一种更高效、更安全的方式来开发跨平台的桌面应用程序。Tauri1.0版本已经非常完善的支持所有桌面端了,现在的2.0已经开始测试移动端开发了,我们可以提前尝鲜一下。原创 2024-05-13 15:59:07 · 1532 阅读 · 1 评论 -
rust开发web服务器框架,github排名对比
Rocket 是一个针对 Rust 的异步 Web 框架,重点关注可用性、安全性、可扩展性和速度。原创 2024-05-12 17:08:13 · 462 阅读 · 0 评论 -
WebRTC通讯协议原理讲解和使用,新手10分钟秒懂
信令可以简单理解为消息,在协调通讯的过程中,为了建立一个 webRTC 的通讯过程,在通信双方彼此连接、传输媒体数据之前,它们要通过信令服务器交换一些信息,如加入房间、离开房间及媒体协商等,而这个过程在 webRTC 里面是没有实现的,需要自己搭建信令服务。媒体协商的作用是找到双方共同支持的媒体能力,如双方各自支持的编解码器,音频的参数采样率,采样大小,声道数、视频的参数分辨率,帧率等等。转载 2024-05-09 14:14:18 · 54 阅读 · 0 评论 -
rust使用serde_json转换Value为rust中的数据类型
得到的类型就是i64的。原创 2024-05-08 16:07:48 · 507 阅读 · 0 评论