小编sim*_*nes的帖子

如何返回带有一般错误的结果

我想编写一个函数来读取文件的内容,并在失败时引发错误。我想从 python 脚本调用这个函数,所以我在下面提到了一些 Python 以防它可能相关。

正如我在评论中尝试显示的那样,可能会发生更多的工作,从而引发其他类型的错误,因此,如果可能的话,我想使用通用错误(如果 Rust 中可以实现)(?)。如何返回错误,以便可以对其进行处理并将其包装在 python 错误中,如图所示do_work?不确定我导致以下错误的方法是否方向正确。

fn work_with_text() -> Result<(), dyn std::error::Error> {
    let content = match std::fs::read_to_string("text.txt") {
        Ok(t) => t,
        Err(e) => return Err(e),
    };
    // do something with content that may cause another type of error (rusqlite error)
    Ok(())
}
    

#[pyfunction]
fn do_work(_py: Python) -> PyResult<u32> {
    match work_with_text() {
        Ok(_) => (0),
        Err(e) => {
            let gil = Python::acquire_gil();
            let py = gil.python();
            let error_message = format!("Error happened {}", e.to_string()); …
Run Code Online (Sandbox Code Playgroud)

polymorphism error-handling traits rust trait-objects

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

Horizo​​ntalPager 不同高度的内容页面

在可滚动列内,我有一个水平寻呼机,上面有两页。其中一个包含很长的内容列表,而另一个则短得多。在较小的一个上,我在底部有一个很大的区域,我可以向下滚动,但没有任何内容,我怀疑是因为长列表的高度。另外,如果我滚动到较长页面的底部,然后滑动到另一页,那么我只会得到一个空白屏幕,并且必须向上滚动到实际内容。

如何限制用户向下滚动到较短页面上的实际内容下方?

Column(
    modifier = Modifier
        .align(Alignment.TopStart)
        .fillMaxWidth()
        .verticalScroll(rememberScrollState())
) {

    someOtherContent() // for example around 400.dp height
    
    HorizontalPager(
        state = pagerState,
        verticalAlignment = Alignment.Top
    ) { i ->
        when (i) {
            0 -> {
                Column(
                    modifier = Modifier.fillMaxWidth().height(450.dp)
                ) {
                    ... not too much content
                }
            }
            1 -> {
                Column(
                    modifier = Modifier.fillMaxWidth().height(2000.dp)
                ) {
                    ... many rows of content
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose

11
推荐指数
0
解决办法
1750
查看次数

杰克逊忽略了外部库中超类的所有属性

我正在使用ORM进行开发,我扩展了一个基础orm类来创建表.

例如:

public class Person extends DbItem {
    @JsonIgnore
    private String index;

    private String firstName;

    private String lastName;
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我使用ObjectMapper进行序列化时,它会尝试序列化DbItem类的成员.有没有简单的方法来防止这种情况?例如,带注释.

我看了一下类似的问题杰克逊序列化:如何忽略超类属性,但我希望它可以做得更简单,我不确定我是否可以这样做因为我不能改变超类,因为它是在一个外部图书馆.

java inheritance json jackson

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

Python 中的 PLS-DA 加载图

如何使用 PLS-DA 图的 Matplotlib 制作加载图,例如 PCA 的加载图?

这个答案解释了如何使用 PCA 完成: Plot PCA loadings and loading in biplot in sklearn (like R's autoplot)

然而,这两种方法之间存在一些显着差异,这使得实现也不同。(此处解释了一些相关差异https://learnche.org/pid/latent-variable-modelling/projection-to-latent-structures/interpreting-pls-scores-and-loadings

为了制作 PLS-DA 图,我使用以下代码:

from sklearn.preprocessing import StandardScaler
from sklearn.cross_decomposition import PLSRegression
import numpy as np
import pandas as pd

targets = [0, 1]

x_vals = StandardScaler().fit_transform(df.values)

y = [g == targets[0] for g in sample_description]
y = np.array(y, dtype=int)

plsr = PLSRegression(n_components=2, scale=False)
plsr.fit(x_vals, y)

colormap = {
    targets[0]: '#ff0000',  # Red
    targets[1]: '#0000ff',  # …
Run Code Online (Sandbox Code Playgroud)

python matplotlib scikit-learn

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

Rusqlite 插入多行

如何使用 rusqlite 在单个查询中插入多行?看看下面的语法,我认为它失败了,因为查询期望 Vec 中只有一个值。

可以使用任何类型的辅助函数来完成吗?还是我必须完整创建查询?

    let mut names = Vec::new();
    names.push("Mittens");
    names.push("Jingle Paws");
    names.push("Sir Fluffy");
    match conn.execute(
        "INSERT INTO cats (name) VALUES (?1)",
        names,
    ) {
        Ok(_t) => (),
        Err(e) => {
            let gil = Python::acquire_gil();
            let py = gil.python();
            let error_message = format!("Error inserting cats into database! {}", e.to_string());
            PyIOError::new_err(error_message).restore(py);
            return Err(PyErr::fetch(py));
        }
    };
Run Code Online (Sandbox Code Playgroud)

OSError: Error inserting cats into database! Wrong number of parameters passed to query. Got 2, needed 1
Run Code Online (Sandbox Code Playgroud)

rust rusqlite

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

java.lang.IllegalArgumentException:无法舍入 NaN 值

我正在开发 Jetpack Compose 应用程序,我认为 Slider 导致错误java.lang.IllegalArgumentException: Cannot round NaN value,导致我的应用程序崩溃。

但是,它没有给我任何关于导致其发生的位置或原因的提示,除此之外它似乎可能与 Box 可组合项有关。此外,如果我从我的视图中删除Slider,它看起来好像没有发生,所以看起来这是因为这个可组合项。

滑块会定期更新,并从外部确定的因素中获取值。

是否存在明显错误,或者我可以采取哪些措施来调试或识别问题?

我的库版本是:

androidx-activity = "1.4.0"
androidx-appcompat="1.4.0"
androidxAnnotation="1.2.0"
androidx-core="1.7.0"
compose="1.1.1"
Run Code Online (Sandbox Code Playgroud)

这是我的代码

@Composable
fun MyComposable(
    modifier: Modifier = Modifier,
    viewModel: MyViewModel? = hiltViewModel<MyViewModel>()
) {
    LaunchedEffect(true) {
        viewModel.init()
    }
    Box(modifier = modifier.fillMaxSize()) {
            Column(
                modifier = Modifier
                    .fillMaxWidth()
                    .align(Alignment.BottomCenter)
                    .padding(bottom = 20.dp)
                    .padding(horizontal = 20.dp)
            ) {
                Slider(
                    modifier = Modifier.fillMaxWidth(),
                    value = viewModel.sliderPosition,
                    onValueChange = viewModel::onSliderValueChange
                )
            }
        }
    }
}


@HiltViewModel
class …
Run Code Online (Sandbox Code Playgroud)

android-jetpack-compose

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

Plotly React 在重新渲染之间保持缩放和旋转

我使用 React 版本的plot.ly 来渲染 3D 散点图,但每次重新渲染组件时,该图都会重置为其默认配置。

如何防止这种情况发生并保持缩放/旋转配置?

下面是一个最小的代码示例。重申一下,如何保存缩放和旋转,以及如何在绘图上设置它?

setPlotData() {
    const points = {
        1: {x: 1, y: 1, z: 1},
        2: {x: 2, y: 1, z: 1},
        3: {x: 3, y: 2, z: 1}
    }
    const x=[], y=[], z=[]
    Object.keys(points).forEach((key, index) => {
        x.push(points[key].x); y.push(points[key].y); z.push(points[key].z)
    })
    const data1 = {
            x: x, y: y, z: z,
            mode: "markers",
            marker: {
            color: "rgb(16, 52, 166)",
            size: 4,
            symbol: "circle",
            opacity: 1
            },
            type: "scatter3d"
    }
    this.setState({
        scatterPlotData: [data1]
    }) …
Run Code Online (Sandbox Code Playgroud)

reactjs plotly plotly.js

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

鼠兔“从空队列中弹出”

我在 kubernetes 集群中使用 pika 并使用队列中的消息,这会触发在新线程中启动函数。然而 RabbitMQ 似乎崩溃了,这些是我迄今为止找到的最好的日志:

2020-12-23 10:39:10,906] WARNING - WRITE indicated on fd=9, but writer callback is None; events=0b100 {/usr/local/lib/python3.9/site-packages/pika/adapters/utils/selector_ioloop_adapter.py:393}
(repeats to a total of n=38 times)
2020-12-23 10:39:10,908] ERROR - _AsyncBaseTransport._produce() failed, aborting connection: error=IndexError('pop from an empty deque'); sock=<socket.socket fd=9, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.100.200',  44892), raddr=('192.168.101.201', 5672)>; Caller's stack:                                                                                 
Traceback (most recent call last):                                                                                                 
File "/usr/local/lib/python3.9/site-packages/pika/adapters/utils/io_services_utils.py", line 1097, in _on_socket_writable        
    self._produce()                                                                                                                
File "/usr/local/lib/python3.9/site-packages/pika/adapters/utils/io_services_utils.py", line 822, in _produce                    
    chunk = self._tx_buffers.popleft()                                                                                             
IndexError: pop from an empty deque …
Run Code Online (Sandbox Code Playgroud)

rabbitmq pika python-pika

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

未调用 python 模拟函数

我正在测试 python 代码(一个 django 3.0.5 项目,虽然我认为它不相关),但我无法调用我的模拟对象的函数。这是我的代码:

**myproject.mypackage.myhelpers**


def get_dict():
    return dict()

**myproject.mypackage.mythings**

from .myhelpers import get_dict


def use_dict():
    the_dict = get_dict()
    pass
    return


**myproject.tests.test_mythings**

from ..mypackage import mythings
import unittest
import unittest.mock as mock


class MyThingsTests(unittest.TestCase):

    @mock.patch('myproject.mypackage.myhelpers')
    def test_using_dict(self, mock_myhelpers):
        test_dict = {
            "hi": "foo",
            "there": "bar",
            "sir": "foobar"
        }

        mock_myhelpers.get_dict.return_value = test_dict

        mythings.use_dict()

        mock_myhelpers.get_dict.assert_called_once()
Run Code Online (Sandbox Code Playgroud)

但是最终测试失败并出现错误:

AssertionError: Expected 'get_dict' to have been called once. Called 0 times

python mocking python-unittest python-unittest.mock

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

Jackson 根据值忽略序列化字段

我知道如果字段为空或为空,则可以忽略字段,但是是否可以忽略字段,例如,如果它是一个字符串,并且包含某个子字符串?

java json jackson

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