小编Mak*_*aus的帖子

在 LazyVStack 中使用 VStack 和 AsyncImage 会导致图像在滚动时重新加载

我正在尝试使用 SwiftUI 中的新 AsyncImage 显示一长串带有标题的图像。我注意到,当我将 VStack 放在 AsyncImage 周围并滚动图像时,每次向上或向下滚动时它都会重新加载图像。当没有 VStack 时,我看不到重新加载,并且图像似乎保留在缓存中。

有没有办法让 VStack 在滚动时不重新加载图像,以便我可以在每个图像下添加文本?

这是一个工作示例。尝试使用和不使用 VStack 进行滚动。

import SwiftUI

struct TestView: View {

    let url = URL(string: "https://picsum.photos/200/300")

    let columns: [GridItem] = [.init(.fixed(110)),.init(.fixed(110)),.init(.fixed(110))]

    var body: some View {
        ScrollView {
            LazyVGrid(columns: columns) {
                ForEach(0..<20) { _ in
                    // VStack here causes to images to reload on scrolling
                    VStack {
                        AsyncImage(url: url) { image in
                            image
                                .resizable()
                                .aspectRatio(contentMode: .fit)
                        } placeholder: {
                            Image(systemName: "photo")
                                .imageScale(.large)
                                .frame(width: 110, height: 110)
                        }
                    } …
Run Code Online (Sandbox Code Playgroud)

swift swiftui swiftui-list lazyvgrid

16
推荐指数
1
解决办法
6075
查看次数

如何实现React + axios的长轮询

我正在使用React + axios与客户端的API通信.我是JavaScript的新手.

我如何实现长轮询,以便在网页上接近实时更新?

当后端是JSON REST API时,是否有更好的方法在页面上进行实时更新?我应该考虑使用WebSockets或服务器端事件或长轮询是否正常?

javascript websocket reactjs axios

13
推荐指数
1
解决办法
5688
查看次数

为什么不推荐多区域 Kubernetes 部署?

Kubernetes 文档说支持多区域集群,但不支持多区域集群。同时 Kubernetes 对failure-domain/zonefailure-domain/region.

让我的 Kubernetes 集群同时成为多专区和多区域有什么缺点?它只是延迟吗?如果是,那么它可靠所需的延迟数字是多少?

从好的方面来说,我看到了服务发现,并且能够跨多个区域部署应用程序,而无需在其上使用额外的工具。

我知道联邦 v1 和 v2 正在开发中,但它似乎增加了很多复杂性,v2 远未准备好生产。

kubernetes

11
推荐指数
1
解决办法
2583
查看次数

如何使用AVFoundation同时录制和播放捕获的视频,延迟几秒钟?

我正在考虑让我的Swift iOS应用程序记录一个视频并在30秒延迟的同一屏幕上播放它.

我一直在使用官方示例来录制视频.然后我添加了一个按钮,可以self.movieFileOutput?.outputFileURL在屏幕上的单独视图中使用AVPlayer 触发播放.它接近我想要的但显然它会在写入磁盘的文件结束时停止播放,并且在写入下一个缓冲的块时不会继续播放.

我可以每隔30秒停止视频录制并保存每个文件的URL,这样我就可以播放它,但这意味着视频捕获和播放会中断.

如何让视频录制从不停止,播放始终在屏幕上,我想要任何延迟?

我已经看到了类似的问题,所有的答案都指向AVFoundation docs.我无法找到如何让AVFoundation在录制时将可预测的视频块从内存写入磁盘.

avfoundation ios

10
推荐指数
1
解决办法
925
查看次数

如何从go-swagger中的API处理函数访问JWT声明?

我在使用BearerAuthJWT令牌时使用了sw-swagger .连同实际令牌,我收到的声明包括用户名等数据.

如何在api.ItemsCreateItemHandler下面的功能中访问声明?

package restapi

func configureAPI(api *operations.MyAPI) http.Handler {
    api.BearerAuth = func(token string) (interface{}, error) {
        jwtToken := strings.Replace(token, "Bearer ", "", -1)
        // skipped token verification

        claims, _ := parsedToken.Claims.(jwt.MapClaims)
  }

  api.ItemsCreateItemHandler = items.CreateItemHandlerFunc(func(params items.CreateItemParams, principal interface{}) middleware.Responder {
    // FIXME: Here I need to be able to access JWT claims
    if err := createItem(params.Body, claims); err != nil {
            return nil // handle error
        }
        return items.NewCreateItemCreated()
    })
}
Run Code Online (Sandbox Code Playgroud)

jwt swagger openapi go-swagger

7
推荐指数
1
解决办法
217
查看次数

如何在 Swift 中正确使用 EventLoopF​​uture?

我是 EventLoop 期货和承诺的新手。我的软件栈:

  • Go + gRPC 中的后端
  • Swift + SwiftUI + GRPC + NIO 中的 iOS 客户端

我有东西给工作和寻找关于如何改进它,因为我在文档周围失去了一个小建议.map.flatMap.always,等。

这是我在 iOS 应用程序中的 gRPC 数据单例的相关函数:

import Foundation
import NIO
import GRPC

class DataRepository {
    static let shared = DataRepository()
    // skip ...

    func readItem(id: Int64, eventLoop: EventLoop) -> EventLoopFuture<V1_ReadResponse> {
        // TODO: Is this the right place?
        defer {
            try? eventLoop.syncShutdownGracefully()
        }

        let promise = eventLoop.makePromise(of: V1_ReadResponse.self)

        var request = V1_ReadRequest()
        request.api = "v1"
        request.id = …
Run Code Online (Sandbox Code Playgroud)

future promise swift grpc swift-nio

7
推荐指数
1
解决办法
3246
查看次数

如何使用嵌套结构管理 SwiftUI 状态?

我有以下从 protobufs 生成的结构,所以它们不能直接修改:

// This file can not be modified
// It's auto-generated from protobufs

struct Shelf {
  var id: Int
  var title: String

  var books: [Books]
}

struct Book {
  var id: Int
  var title: String

  var pages: [Pages]
  var shelfId: Int
}

struct Page {
  var id: Int
  var content: String

  var bookId: Int
}
Run Code Online (Sandbox Code Playgroud)

在使用 Books+Pages 创建或修改新书架时,在 3 个嵌套的 SwiftUI 视图之间传递状态的正确方法是什么?我希望允许用户通过嵌套视图一次创建整个书架,并在他位于顶部视图并单击“保存”时将书架 + 书籍 + 页面保存到后端一次。

意见

我试图为对象创建一个扩展以符合“ObservableObject”,但失败了: Non-class type 'Shelf' cannot conform to class protocol 'ObservableObject'

swift swiftui

7
推荐指数
1
解决办法
2860
查看次数

如何用go-swagger服务器公开swagger.json?

我正在使用go-swagger来生成API服务器.我注意到swagger.yml生成的json正在保留restapi/embedded_spec.go.

公开JSON规范的最佳方法是什么,以便我的ReactJS客户端可以访问它?

到目前为止,我不得不使用swagger serve swagger.yml --port=50000并指向javacript客户端 localhost:50000/swagger.json.我正在寻找一种restapi/embedded_spec.go通过我的API 直接提供JSON的方法.

swagger openapi go-swagger

5
推荐指数
1
解决办法
415
查看次数

在 reStructuredText 中使用变量

我正在以 reStructuredText 格式编写一个很长的 HOWTO,想知道是否有办法让用户在顶部指定几个变量(主机名、IP 地址)的值,以便文档的其余部分自动填充这些值?

wiki restructuredtext

4
推荐指数
2
解决办法
2127
查看次数

如何在Go中避免长的switch-case语句

我正在Go中编写一个聊天机器人,并想知道如何避免类似于这个的长切换案例声明:

switch {

// @bot search me HMAC
case strings.Contains(message, "search me"):
    query := strings.Split(message, "search me ")[1]
    return webSearch(query), "html"

// @bot thesaurus me challenge
case strings.Contains(message, "thesaurus me"):
    query := strings.Split(message, "thesaurus me ")[1]
    return synonyms(query), "html"
Run Code Online (Sandbox Code Playgroud)

我应该在一个单独的包中定义这些处理程序,还是应该只使用结构和接口?哪种方法可以让我拥有一个好的结构,避免使用switch-case并让外部开发人员更容易创建处理程序?

我认为软件包将是一个更好的选择,但我不确定如何使用主机器人注册处理程序.会欣赏一个例子.

go

4
推荐指数
1
解决办法
1135
查看次数

如何将 YAML 拆分为多个具有正确名称的文件

我有一个有效的 YAML:

---
name: first
metadata: a
---
name: second
metadata: b
---
name: third
metadata: c
Run Code Online (Sandbox Code Playgroud)

first.yaml如何使用 files和中second.yaml的单行 AWK 脚本拆分它third.yaml?解决方案需要与任何name.

只需分割文件即可,但我不知道如何添加正确的文件名而不是行号(NR):

awk '/\-\-\-/{f=NR".yaml"}; {print >f}'
Run Code Online (Sandbox Code Playgroud)

awk yaml

4
推荐指数
1
解决办法
2万
查看次数

如何使一个视图中的两个列表在 SwiftUI 中滚动为一页?

我正在尝试将两个不同大小的表添加到 SwiftUI 中的一个视图中。我希望两个表都完全展开,并且整个视图作为一个滚动。现在我只让两个表固定大小并分别滚动。

some View {
    VStack {
        Text("Table foo")
        List(foo { item in Text(item.name) })

        Text("Table bar")
        List(bar { item in Text(item.name) })
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试更改VStack为 a ScrollView,这让事情变得更糟 - 桌子正在变成一个衬垫。

也尝试替换为List()ForEach()但后来我失去了List()我真正想要的功能。

swiftui swiftui-list

3
推荐指数
1
解决办法
1483
查看次数

如何强制AWS ECS将容器迁移到另一个ASG?

我正在使用user_data对ECS中使用的主机进行初始配置以运行容器.我希望能够告诉AWS ECS在更新user_data后将容器迁移到新创建的主机.我怎样才能做到这一点?

我正在使用Terraform进行AWS基础架构部署.

amazon-web-services amazon-ecs terraform

2
推荐指数
1
解决办法
1651
查看次数