小编Mig*_*ell的帖子

将哈希字符(#)与正则表达式匹配

我有一个包含正则表达式的XML文档(因此您不需要使用\来转义).基本上我正在尝试匹配音乐和弦符号,这个正则表达式工作正常,但拒绝匹配哈希:

\b[A-G](m|b|\#|sus|\d)*?\b
Run Code Online (Sandbox Code Playgroud)

regex xml pattern-matching

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

是否可以在C中模拟对象/实例方法?

我知道,因为C不是面向对象的,所以最接近方法的是在结构中使用函数指针.这只是一个思考练习,但有可能:

list.add(void* data)
Run Code Online (Sandbox Code Playgroud)

没有将列表本身作为参数传递

我知道:

list.add(list_t* list, void* data)
Run Code Online (Sandbox Code Playgroud)

很容易实现,但有什么办法,使用C的任何部分,以这种方式模拟方法?

我知道答案可能是肯定的,但如果可以,请向我解释!谢谢.

c oop

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

在React JS中,何时应该使用商店vs直接操纵视图的状态?

现在我理解商店的概念作为React应用程序的真实来源,但似乎有时使用商店是过度的,特别是在仅限UI的情况下.

例如,假设我正在制作一个包含电影列表的应用.该应用程序包含一个搜索栏,可让您根据标题过滤这些电影.该搜索栏的值(让我们称之为searchTerm)是否应该包含在商店中?它唯一的影响是显示的电影列表,这纯粹是一个UI功能.它不会被发送到服务器或保存到本地存储.所以在我的handleTextChange函数中,我应该提醒商店,还是只设置组件的状态:

应该这样(使用商店):

var Actions = Reflux.createActions([
    "searchChanged"
]);

var Store = Reflux.createStore({
    listenables: [Actions],
    getInitialState: function () {
        return data;
    },
    onSearchChanged: function (searchTerm) {
        this.trigger(data.filter(function (el) {
            return el.name.toLowerCase().indexOf(searchTerm.toLowerCase()) != -1;
        }));
    }
});

var View = React.createClass({
    mixins: [Reflux.connect(Store, "movies")],
    handleTextChange: function (e) {
        Actions.searchChanged(e.target.value);
    },
    render: function(){
        //Render here. Somewhere there is this input element:
        <input onChange={this.handleTextChange} type="text"/>
    }
)};
Run Code Online (Sandbox Code Playgroud)

或者这个(不使用商店):

var Store = Reflux.createStore({
    getInitialState: function () {
        return data;
    }, …
Run Code Online (Sandbox Code Playgroud)

javascript flux reactjs refluxjs

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

等待 Docker 容器使用 Python SDK 运行

使用dockerPython 模块,您可以像这样启动一个分离的容器:

import docker
client = docker.from_env()
container = client.containers.run(some_image, detach=True)
Run Code Online (Sandbox Code Playgroud)

我需要等待这个容器running(即container.status == 'running')。如果您在创建容器后立即检查状态,它将报告此情况,这意味着它尚未准备好:

>>> container.status
"created"
Run Code Online (Sandbox Code Playgroud)

API 确实提供了一种wait()方法,但这仅等待终止状态,例如exitremoved: https: //docker-py.readthedocs.io/en/stable/containers.html#docker.models.containers.Container.wait

如何等到我的容器running用于dockerPython?

python docker dockerpy

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

如何在Relay中获取`initialQueryRef`?

在 Relay 文档中,要获取查询,您必须首先使用 预加载它useQueryLoader,然后将其结果传递到usePreloadedQuery. 但是,第一步useQueryLoader需要两个参数:查询本身(很容易获取)和preloadedQueryReference,文档没有解释如何获取。他们所说的只是“例如由路由器提供”,但实际上没有路由器支持带钩子的中继,因此这不是有用的信息。

作为一个简单的示例,我有一个组件要预加载,然后使用查询:

import {
    usePaginationFragment,
    usePreloadedQuery,
    useQueryLoader
} from "react-relay";
import graphql from 'babel-plugin-relay/macro';

const MY_QUERY = graphql` some stuff here `;

export default function SomeComponent(props) {
    const initialRef = ???????;
    const [
        queryReference,
        loadQuery,
        disposeQuery,
    ] = useQueryLoader(AllHits, initialRef);

    const qry = usePreloadedQuery(AllHits, queryReference);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果没有initialRef,我将无法继续进行。我如何获得这个?

javascript relay reactjs graphql

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

在 Rust 中将 `self` 放入 `Arc` 中

我有一个 Rust 结构,其方法旨在并行多个线程。每个线程都需要访问该结构。所以很自然地我想把它放入一个Arc. 但是我无法找到一种方法来做到这一点。

这是一个简化的示例:

use std::sync::{Arc};
use std::thread;
struct Foo {
    field: usize
}
impl Foo {
    fn parallel(&self){
        let arc = Arc::new(&self);
        for i in 1..5 {
            let arc = Arc::clone(&arc);
            thread::spawn(move || {
                i + arc.field
            });
        }
    } 
}
Run Code Online (Sandbox Code Playgroud)

编译器说:

    fn parallel(&self){
                ^^^^^ this data with an anonymous lifetime `'_`...
        let arc = Arc::new(&self);
                           ^^^^^ ...is captured here...
            thread::spawn(move || {
            ^^^^^^^^^^^^^ ...and is required to live as long as `'static` here
`self` has …
Run Code Online (Sandbox Code Playgroud)

rust

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

我们如何在 Rust 中存储异构函数链?

我正在编写一些代码,我对延迟评估的函数链感兴趣。换句话说,它存储您想要的所有操作,并且只对它们进行一起评估。

当链中的所有函数都采用相同的类型并返回相同的类型时,这非常容易。然而,当函数链每次返回不同的类型时,我一直困惑于如何使其工作。这个简单的例子可以在下面的代码中看到:

struct FuncChain<T> {
    funcs: Vec<fn(T) -> T>
}

impl<T> FuncChain<T> {
    fn call(&self, input: T) -> T {
        self.funcs.iter().fold(input, |prev, func| func(prev))
    }
}

fn main(){
    let fc = FuncChain {
        funcs: vec![
            |x| x + 1,  
            |x| x + 2,
            |x| x * 2,
            |x| x - 2,
        ]
    };
    println!("{}", fc.call(1));
}
Run Code Online (Sandbox Code Playgroud)

游乐场

所以在这种情况下我们就去i32 -> i32 -> i32 -> i32 -> i32


我想做的是一个更一般的情况,我们去A -> B -> C -> D -> E …

rust

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

等待自定义功能

我试图了解C#中新的异步功能,到目前为止,我注意到的最奇怪的事情是异步功能的每个示例都有一个等待框架中定义的另一个异步函数的函数,但没有一个有自定义代码.

例如,我想要的是从文本文件中的每一行创建一个对象,但是异步,以便UI线程不会冻结:

async Task Read()
{
    string[] subjectStrings = File.ReadAllLines(filePath);
    for (int i = 0; i < subjectStrings.Length; i++)
    {
        Task<Subject> function = new Task<Subject>(code => new Subject((string)code), subjectStrings[i]);
        try
        {
            Subject subject = await function;
            subjects.Add(subject);
        }
        catch (Exception ex)
        {
            debugWriter.Write("Error in subject " + subjectStrings[i]);
            continue;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我定义了一个Subject基于文本文件中的行创建新对象的任务,然后等待此任务.如果我这样做,调试器就会到达该await行,然后停止.据我所知,没有更多的代码运行.

如果我使用的是旧的异步功能,我只需使用Task.ContinueWith()并添加一个回调lambda,将主题添加到列表中,然后继续使用.

所以我的问题是:

  1. 为什么这段代码不起作用?您如何制作不使用任何异步方法本身的自定义异步方法?
  2. 你应该如何使用异步方法?await除非你处于异步函数中,否则不能使用,并且你不应该在没有等待的情况下调用异步方法,那么如何从同步方法中调用该方法呢?

.net c# multithreading asynchronous

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

在VueJS中观察计算属性

在我的项目中,我有一个只能在填写某些字段时才能提交的表单,所以我在ViewModel中创建了canSubmit函数:

var vm = new Vue({
    data: {
        experiments: [],
        genes: ""
    },
    el: "html",
    computed: {
        canSubmit: function () {
            switch (this.searchType) {
                case "":
                    return false;
                case "gene":
                    return this.genes.length > 0 && this.experiments.length > 0;
                default:
                    return false;
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

如果canSubmit返回true,还有一些我想要显示的按钮,还有一些按钮<inputs>可以改变数据模型:

<textarea v-model="genes" name="genes" id="gene_list"></textarea>
<select v-model="experiments" name="experiments" multiple id="select_result_exps">
   <!--Various <options>-->
</select>
<button name="query" v-if="canSubmit" value="search" type="submit"">Submit</button>
Run Code Online (Sandbox Code Playgroud)

因此,当我更改textarea或select时,我的模型会更新,这意味着canSubmit返回true.然而,按钮不知道canSubmit已经改变了,所以保持不可见.

有没有办法观察派生的属性或方法,以使其工作?或者,我可以强制按钮重新检查其绑定吗?

javascript mvvm vue.js

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

在绘图破折号中更新回调之外的应用程序状态

我正在编写一个情节 Dash 应用程序,我最初没有数据库访问权限,因此我需要等待数据库连接,然后才能设置初始应用程序状态。

因此,我想运行一个稍后设置应用程序状态的函数,但设置状态的唯一方法似乎是使用@app.callback()装饰器,但问题是它们需要在触发之前监视属性或状态变量,但就我而言我没有观看 Dash 应用程序的一部分,而是观看外部内容。

我怎样才能在达世币中做到这一点?

例如:

app = Dash(routes_pathname_prefix='/dash/trend/')

app.layout = html.Div(children=[
    dcc.Dropdown(
        options=get_field_options(),
        id='field_select',
        multi=True,
    )
])

@app.callback(
    dash.dependencies.Output('field_select', 'options'),
    [
         # What do I put here as an input??
    ]
)
def update_fields(href):
    return get_field_options()
Run Code Online (Sandbox Code Playgroud)

python plotly plotly-dash

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