小编mun*_*ger的帖子

无法返回对临时值的引用

我正在尝试学习 Rust,同时我想尝试将结构对象转换为字节数组,但我在这样做时遇到了问题。

所以我有这个:

struct Node<'a> {
    id: u8,
    name: &'a str,
    data: &'a str,
}
impl<'a> Node<'a> {
    fn new() -> Node<'a> {
        return Node {
            id: 1,
            name: "superName",
            data: "some random desc2",
        };
    }

    fn to_buffer(&mut self) -> &'a [u8] {
        let mut size = mem::size_of::<Node>();
        size = size + self.name.len() * mem::size_of::<char>();
        size = size + self.data.len() * mem::size_of::<char>();
        println!("size {}", size);
        return &[self.id];
    }
}
Run Code Online (Sandbox Code Playgroud)

但我只是收到错误“无法返回对临时值的引用”而且我不是 100% 确定我理解错误消息开始......是不是因为self.id只限于此函数并且将从堆栈中删除什么时候退回?

有没有办法解决这个问题?

rust

12
推荐指数
2
解决办法
3045
查看次数

为 sveltekit 注册套接字 IO 到 vite

我已经使用 svelte 和 sapper 编写了一些应用程序,并且想尝试一下 sveltekit。总而言之,它有效,但我现在遇到了在服务器上注册工作人员的问题。

基本上我试图将 socket.io 添加到我的应用程序中,因为我希望能够从服务器发送和接收数据。对于 sapper,这并不是真正的问题,因为您有server.js可以将 socket.io 连接到 polka/express 服务器的文件。但我在 sveltekit 和 vite 中找不到任何等效项。

我进行了一些实验,我可以在路由中创建一个新的 socket.io 服务器,但这会导致一堆新问题,例如它位于单独的端口上并导致 cors 问题。

所以我想知道 sveltekit 是否可以实现这一点,以及如何访问底层服务器?

javascript socket.io svelte vite sveltekit

10
推荐指数
2
解决办法
3073
查看次数

将多个注释与参数合并

我在使用多个注释时遇到问题,这些注释或多或少都说相同的事情,但针对不同的框架,我想将它们全部归为一个自定义注释。目前它看起来像这样:

@Column(name = "bank_account_holder_name")
@XmlElement(name = "bank_account_holder_name")
@SerializedName("bank_account_holder_name")
@ApiModelProperty(name = "bank_account_holder_name", value = "The name of the recipient bank account holder")
public String bankAccountHolderName;
Run Code Online (Sandbox Code Playgroud)

如您所见,它们都重复相同的字符串,我想将它们组合起来,但我还没有找到这样做的方法。

是否有可能做到这一点,或者我是否必须继续这样做或更改/创建一个新框架?

java frameworks annotations code-structure

9
推荐指数
2
解决办法
9532
查看次数

使用 spring boot 托管单页应用程序

所以我试图在一个普通的 REST API 旁边用 spring 托管一个单页应用程序。

这意味着所有发送到普通/api/端点的请求都应该由各自的控制器处理,所有其他请求都应该被定向到文件夹中的资源/static/built

我已经通过捕获所有内容NoHandlerFoundExceptions并重定向到js文件或html文件来实现这一点。然后使用 aWebMvcConfigurer来映射静态内容。

但这对我来说似乎是一种黑客行为,那么有没有一种不那么黑客的方法呢?

spring spring-mvc single-page-application spring-boot

6
推荐指数
2
解决办法
6417
查看次数

春天奇怪地取决于班级位置

我有一个SpringBootTest测试应该依赖一个单独的类来设置嵌入式 Postgres 和数据源。

因此 Repository 配置如下所示:

package com.stream.repository.configuration
@Configuration
@ComponentScan(basePackages = arrayOf("com.stream.repository"))
@EntityScan(basePackages = arrayOf("com.stream.repository"))
@EnableJpaRepositories(basePackages = arrayOf("com.stream.repository"))
@EnableAutoConfiguration
class RepositoryConfiguration {
Run Code Online (Sandbox Code Playgroud)

测试类如下所示:

package com.stream.webapp.rest
@AutoConfigureMockMvc(addFilters = false)
@SpringBootTest(properties =
[
    "spring.jpa.hibernate.ddl-auto=validate",
    "spring.jpa.show-sql=true",
    "spring.liquibase.enabled=true",
    "spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.yml",
    "spring.jpa.properties.hibernate.jdbc.time_zone=UTC"
],
        classes = [RepositoryConfiguration::class, AuditController::class],
        webEnvironment = SpringBootTest.WebEnvironment.MOCK)
class AuditControllerTest {
Run Code Online (Sandbox Code Playgroud)

这就是它变得奇怪的地方。如果我使用该配置运行,它会抱怨找不到EntityManagerFactory

AuditService 需要一个无法找到的类型为“javax.persistence.EntityManagerFactory”的 bean。

经过一番折腾,我找到了解决这个问题的办法。如果我移动它RepositoryConfiguration以便它在包中com.stream.webapp.rest,即与AuditControllerTest它一样神奇地工作。

我似乎找不到任何理由说明为什么会这样。那么任何人都可以解释它并且有办法解决它吗?因为我不想动它。把它放在哪里很有意义。

作为旁注,它是用 Kotlin 编写的,但我不明白为什么在这种情况下它很重要。而这仅用于测试。在测试范围之外运行应用程序时,它可以工作

我还可以补充一点,AuditControllerTest它在一个模块中,RepositoryConfiguration在另一个模块中。如果将其放置在“正确”的包中(仍然是单独的模块),则不确定它是否相关,因为它可以工作

问题的 TL; DR:为什么 spring 关心 …

java testing kotlin spring-boot spring-boot-test

6
推荐指数
1
解决办法
277
查看次数

java jackson 的不同序列化/反序列化名称

我希望在 java 中使用 jackson 时能够为序列化和反序列化 json 对象使用不同的名称。更具体一点:我从一个 API 获取数据,该 API 在 JSON 属性上使用一个名称标准,但我的端点使用不同的名称标准,并且在这种情况下我只想传递数据,我想能够将属性翻译成我的名字标准。

我在这里读过类似的问题,但我似乎无法让它发挥作用。

private String defaultReference;

@JsonProperty(value = "default_reference", access = JsonProperty.Access.WRITE_ONLY)
public void setDefaultReference(String defaultReference)
{
    this.defaultReference = defaultReference;
}

@JsonProperty(value = "defaultReference", access = JsonProperty.Access.READ_ONLY)
public String getDefaultReference()
{
    return defaultReference;
}
Run Code Online (Sandbox Code Playgroud)

这是我最近的尝试。这样做的问题是它总是返回 null,因此不使用 setter。

我也尝试过:

@JsonProperty(value = "default_reference", access = JsonProperty.Access.WRITE_ONLY)
private String defaultReference;

@JsonProperty(value = "defaultReference", access = JsonProperty.Access.READ_ONLY)
public String getDefaultReference()
{
    return defaultReference;
}
Run Code Online (Sandbox Code Playgroud)

这种作品。它可以反序列化default_reference。问题是在我的 JSON 响应中我同时得到default_referencedefaultReference。最好我只会得到 …

java serialization json jackson deserialization

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

从詹金斯内部的Docker容器获取日志

我试图让Docker设置一个可以在其中运行集成测试的完整测试环境,但是到目前为止,它还没有真正起作用,我什至在从中取回日志时也遇到了问题。

所以我想将其作为管道运行,并且我想使用jenkinsfile。这是我到目前为止所得到的:

pipeline {
    agent any
    stages {
        stage('build war') {
            agent {
                docker { 
                    image 'gradle:latest'
                    reuseNode true 
                }
            }
            steps {
                sh 'gradle war -b oven/build.gradle'
            }
        }
        stage('test') {
            steps {
                script {
                    docker.image('mysql:latest').withRun('-e "MYSQL_ROOT_PASSWORD=password" -e "MYSQL_USER=root" -e "MYSQL_DATABASE=highlygroceries"') { c -> 
                        docker.image('munhunger/highly-oven').withRun('-e "test=test"') { h -> 
                            docker.image('mysql:latest').inside("--link ${c.id}:db") {
                                sh 'while ! mysqladmin ping -hdb --silent; do sleep 1; done'
                            }
                            docker.image('munhunger/highly-oven').inside("--link ${c.id}:db -e 'DB_URL=db:3306' -e 'DB_PASS=password' -e 'DB_USER=root'") {
                                sh 'sleep 5'
                            }
                            docker.image('gradle:latest').inside("--link ${h.id}:backend …
Run Code Online (Sandbox Code Playgroud)

java jenkins docker jenkins-docker jenkins-pipeline

5
推荐指数
2
解决办法
6538
查看次数

Svelte API 代理 cors

我不确定这是否属于这里,但我在开发我的 svelte 应用程序时遇到了问题。在开发过程中,它目前在独立服务器上运行(遵循使用 rollup 和 sirv 的指南)并针对不同端口上的后端 API。

稍后这些将被合并,但现在在开发过程中我看到了很多 cors 问题(这是有道理的),并且由于我目前无法更改后端,我想知道正常的操作过程是什么才能使其正常工作?

我假设我应该以某种方式创建一个以某种方式与汇总相关联的中间件代理,但我不确定如何。

那么关于如何设置它的任何建议?

刚刚测试运行这个:https://www.npmjs.com/package/local-cors-proxy 但这不起作用,因为我需要credentials: "include"一个特定的获取请求,它导致The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.

frontend rollup cors svelte

5
推荐指数
2
解决办法
6188
查看次数

在 svelte 中添加动态类名

我目前正在编写一个带有 svelte、sapper 和 tailwind 的应用程序。因此,为了让顺风工作,我已将其添加到我的汇总配置中

svelte({
        compilerOptions: {
          dev,
          hydratable: true,
        },
        preprocess: sveltePreprocess({
          sourceMap: dev,
          postcss: {
            plugins: [
              require("tailwindcss"),
              require("autoprefixer"),
              require("postcss-nesting"),
            ],
          },
        }),
        emitCss: true,
      })
Run Code Online (Sandbox Code Playgroud)

总而言之,这些都是有效的,但我遇到了一些动态类名的问题。

写这样的东西似乎总是有效

  <div class={true ? 'class-a' : 'class-b'}>
Run Code Online (Sandbox Code Playgroud)

两者class-aclass-b将包含在最终发出的 CSS 中,一切都按预期进行。

但是当我尝试添加变量类名时它不起作用。所以想象一下:

  <div class={`col-span-6`}>
Run Code Online (Sandbox Code Playgroud)

它将完全按照预期工作,并且将从col-span-6tailwind 中的 css 类获得正确的样式。

但如果我把它改成这样:

  <div class={`col-span-${6}`}>
Run Code Online (Sandbox Code Playgroud)

那么该样式将不会被包含在内。另一方面,如果我已经有一个带有该类的 DOM 元素col-span-6,那么样式将添加到这两个元素中。

所以我的猜测是编译器发现 css 没有被使用并且被删除了。我想我的问题是是否有任何方法可以强制顺风的所有造型?这样我就可以使用更动态的类名

不确定它是否相关,但我一直在测试它的组件有这个样式块

<style>
  @tailwind base;
  @tailwind components;
  @tailwind utilities;
</style>
Run Code Online (Sandbox Code Playgroud)

编辑:可以补充一点,我在日志中收到一堆打印,说有未使用的 css 选择器似乎与所有 tailwind 类匹配

css rollup svelte tailwind-css sapper

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

导入温斯顿导致“进程未定义”

我正在使用 sveltekit 创建一个应用程序,目前正在添加日志记录。

温斯顿的后端非常简单,因为它几乎开箱即用。

但我在前端导入它时遇到了一些问题。

我的代码很简单

<script>
    import winston from 'winston';
    import { Card } from '../components/issue/';

    export let project;
</script>
Run Code Online (Sandbox Code Playgroud)

但这个简单的片段似乎引发了这个错误

500
process is not defined

ReferenceError: process is not defined
    at node_modules/colors/lib/system/supports-colors.js (http://localhost:3000/node_modules/.vite/winston.js?v=b8878498:281:15)
    at __require (http://localhost:3000/node_modules/.vite/chunk-JAKTRAE2.js?v=b8878498:6:44)
    at node_modules/colors/lib/colors.js (http://localhost:3000/node_modules/.vite/winston.js?v=b8878498:714:28)
    at __require (http://localhost:3000/node_modules/.vite/chunk-JAKTRAE2.js?v=b8878498:6:44)
    at node_modules/colors/safe.js (http://localhost:3000/node_modules/.vite/winston.js?v=b8878498:850:18)
    at __require (http://localhost:3000/node_modules/.vite/chunk-JAKTRAE2.js?v=b8878498:6:44)
    at node_modules/logform/dist/colorize.js (http://localhost:3000/node_modules/.vite/winston.js?v=b8878498:881:18)
    at __require (http://localhost:3000/node_modules/.vite/chunk-JAKTRAE2.js?v=b8878498:6:44)
    at node_modules/logform/dist/levels.js (http://localhost:3000/node_modules/.vite/winston.js?v=b8878498:953:20)
    at __require (http://localhost:3000/node_modules/.vite/chunk-JAKTRAE2.js?v=b8878498:6:44)
Run Code Online (Sandbox Code Playgroud)

老实说,我真的不知道可能出了什么问题,除了可能是服务器/客户端渲染的问题。

所以我想问题是:你可以在 sveltekit 项目中导入 Winston 吗?如果可以的话如何导入?这个具体问题有什么解决方法吗?

javascript winston svelte sveltekit

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