小编Sar*_*oma的帖子

Redux Forms有时会以注册/取消注册无限循环结束

我在驯服Redux Forms时遇到了麻烦.

我有以下表格和字段.如果我只是添加正确的数据并提交,这似乎有效,但如果我尝试导致验证错误并重新输入数据几次,它有时会以无限循环结束.

无限循环是重复调用action @@redux-form/REGISTER_FIELDaction @@redux-form/UNREGISTER_FIELD最终导致以下错误.

未捕获错误:超出最大更新深度.当组件在componentWillUpdate或componentDidUpdate中重复调用setState时,可能会发生这种情况.React限制嵌套更新的数量以防止无限循环.

任何人都可以帮助我理解可能导致这种情况的原因以及我可以采取哪些步骤来使其正常工作?

ContactPage.js

import React, {Component} from 'react';
import ContactForm from './contact-form';

class ContactPage extends Component {
    submit = values => {
        console.log(values);
    };

render() {
    return (
        <div>
            <ContactForm onSubmit={this.submit}/>
        </div>
    );

    }
}

export default ContactPage;
Run Code Online (Sandbox Code Playgroud)

ContactForm.js

import React from 'react';
import {Field, reduxForm} from 'redux-form';
import {isEmail, isRequired, maxLength} from '../validation';
import {Input, Select, TextArea} from './form-elements';

let ContactForm = ({handleSubmit}) =>
    <form onSubmit={handleSubmit}>
        <div>
            <Field name="fullname" …
Run Code Online (Sandbox Code Playgroud)

reactjs redux redux-form

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

捕获 Flask API 中引发的自定义异常。所有引发的异常最终都会出现 500 错误

我希望能够在 API 中引发验证和其他异常,并在包装​​视图中捕获它们,该视图将以 JSON 形式返回错误消息。

我想我可以使用这样的东西:

例外

class APIException(Exception):

    def __init__(self, message, status_code=406):
        super().__init__(message)
        self.status_code = status_code
Run Code Online (Sandbox Code Playgroud)

捕获异常

# Todo: find a better way of handling this. Flask should have some way of handling exceptions better than this
def catch_errors(view):
    @functools.wraps(view)
    def wrapped_view(**kwargs):
        try:
            return view(**kwargs)
        except APIException as e:
            # It seems to hit here
            return json_response({'message': str(e)}, e.status_code) 
        except Exception as e:
            # But bubbles up to here and returns this
            return json_response({'message': str(e)}, 500)

    return wrapped_view
Run Code Online (Sandbox Code Playgroud)

路线 …

exception flask python-3.x

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

尝试使用bp-kelley / rdkit-csharp中的build.bat构建RDKit的C#包装器

我正在尝试为RDKit构建C#包装程序,但一直在努力取得进展。我尝试了两条路线:

nb这个问题漫长而无益。长话短说,使用NuGet(请参见下面的答案)。


尝试一次

RDKit中的文档/ Code / JavaWrappers / csharp_wrapper

第一个位于https://github.com/rdkit/rdkit中

在./Code/JavaWrappers/csharp_wrapper中有带有构建说明的C#包装器,位于:https : //github.com/rdkit/rdkit/tree/master/Code/JavaWrappers/csharp_wrapper

我第一次尝试编译包装程序包括手动尝试构建这些包装程序。遵循此自述文件:https : //github.com/rdkit/rdkit/blob/master/Code/JavaWrappers/csharp_wrapper/README

在Windows上构建:

由于cmake对C#一无所知,因此其中涉及到一个不幸的手动步骤。

  • 确保将cmake配置变量RDK_BUILD_SWIG_CSHARP_WRAPPER设置为ON。
  • 运行cmake生成解决方案文件,然后在Visual Studio中打开它。
  • 选择添加现有项目并添加$ RDBASE / Code / JavaWrappers / csharp_wrapper / RDKit2DotNet.csproj的选项
  • 右键单击添加的项目(名为RDKit2DotNet),并向RDKFuncs添加依赖项(这是创建C#项目所需的C ++ dll的项目)
  • 生成RDKit2DotNet项目。

您的bin目录($ RDBASE / Code / JavaWrappers / csharp_wrapper / bin / Release,如果您执行发行版本)现在包含两个DLL:-RDKFuncs.dll是包含RDKit功能的C ++ dll-RDKit2DotNet.dll包含C#包装器。若要在自己的项目中使用包装程序,应将两个dll复制到项目目录中,并添加对RDKit2DotNet.dll的引用

RDKitCSharpTest目录包含一个示例测试项目和一些代码,这些代码非常基本地使用了包装器功能。

为了cmake运行,我更新了CMakeLists.txt,告诉它如何查找swig并进行RDK_BUILD_SWIG_CSHARP_WRAPPER ON如下设置:

cmake_minimum_required(VERSION 3.14)
project (GraphMolCSharp)

set(SWIG_FOUND TRUE) # This has been added
set(SWIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}) # This has been added
set(SWIG_EXECUTABLE swig.exe) …
Run Code Online (Sandbox Code Playgroud)

c# cmake visual-studio nuget rdkit

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

如何通过 TypeScript 将 create-react-app 用于 React 版本 16.xx?

我需要运行一个版本 16 和 typescript 的沙箱 React 应用程序。

npx create-react-app --template=typescript blah有谁知道现在使用 React 17该怎么做?

更新

正如评论中所建议的,我尝试使用以下命令进行安装:

npm init react-app migration-calculator-npm-demo --scripts-version 3.4.4

npm init react-app migration-calculator-npm-demo --template typescript --scripts-version 3.4.4

3.4.4看起来像是react-scripts重大更新之前的最后一个版本。

不幸的是,我两者都出错了。

内部/模块/cjs/loader.js:1088
抛出错误;^

错误:找不到模块“cra-template”

内部/模块/cjs/loader.js:1088
抛出错误;^

错误:找不到模块“cra-template-typescript”

reactjs create-react-app

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

配置 LiipImagineBundle Symfony 以与 Flysystem 配合使用

我一直在尝试配置 CDN (S3) 以与 LiipImagineBundle 配合使用,但当它请求不存在的服务时,我总是陷入困境。

这是什么意思?

filesystem_service 属性的值必须是返回 League\Flysystem\Filesystem 实例的服务。

从这里:http ://symfony.com/doc/current/bundles/LiipImagineBundle/cache-resolver/flysystem.html

在这里:http ://symfony.com/doc/current/bundles/LiipImagineBundle/data-loader/flysystem.html

我尝试创建一个返回 League\Flysystem\Filesystem 实例的服务,如下所示:

league.flysystem.s3adaptor:
    class: League\Flysystem\AwsS3v3\AwsS3Adapter
    arguments: ['@acme.s3_client', '%amazon.s3.bucket%', 's3_fs', '@?']

league.flysystem.filesystem:
    class: League\Flysystem\Filesystem
    arguments: ['@league.flysystem.s3adaptor', '@?']
    calls:
        - [addPlugin, ['@oneup_flysystem.plugin.list_with']]
Run Code Online (Sandbox Code Playgroud)

我不确定这是否正确,但我无法让它工作。

任何帮助或建议将不胜感激。

amazon-s3 symfony liipimaginebundle flysystem

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

正确处理麦克风音频的 React Hooks

我正在尝试编写一个 React Hook 来处理流式音频到使用 Meyda 分析的 AudioContext。

https://meyda.js.org/

我已经设法让流工作并且能够提取我想要的数据。但是,我在取消初始化音频时遇到了麻烦。

如果有人可以为我提供正确设置此挂钩的指导,我将不胜感激。

当我使用这些钩子离开页面时,我目前收到以下错误:

警告:无法对卸载的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要修复,请取消 useEffect 清理函数中的所有订阅和异步任务。

我试图在钩子的末尾添加一个清理功能,但我的尝试经常以音频立即切断或任何其他奇怪的错误而告终。

带有 Meyda Analyzer 的麦克风音频挂钩

export const useMeydaAnalyser = () => {

    const [running, setRunning] = useState(false);
    const [features, setFeatures] = useState(null);
    const featuresRef = useRef(features);
    const audioContext = useRef(new AudioContext());

    const getMedia = async() => {
        try {
            return await navigator
                .mediaDevices
                .getUserMedia({audio: true, video: false});
        } catch(err) {
            console.log('Error:', err);
        }
    };

    useEffect(
        () => {
            const audio = audioContext.current;
            let unmounted …
Run Code Online (Sandbox Code Playgroud)

reactjs web-audio-api react-hooks

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

使用 Cognito 用户池的 AWS Amplify Auth 不返回 JWT id_token 中的随机数或 at_hash 声明

我正在尝试使用 Amplify Auth 来实现 OpenID Connect 隐式流程,以便为许多 React 客户端提供 SSO。

我已经能够使用 Cognito 托管 UI 来实现此功能,但这需要其他应用程序用户单击按钮来确认登录才能进行身份验证。我希望它是无缝的即当用户登录一个站点并导航到另一个站点时,如果他们与身份验证提供者有会话,则会自动进行身份验证。

为了尝试实现这一目标,我设置了一个单独的 Amplify 应用程序,该应用程序使用 React Authenticator 组件。

我可以通过此身份验证并重定向回客户端。但是, theid_token不包含 theat_hashnonce声明。据推测,丢失是因为身份验证提供程序应用程序在使用 Cognito 进行身份验证时at_hash未发送。丢失了,因为我还没有找到传递它的方法。responseTypetoken id_tokennonce

  1. 有没有办法让 Amplify Authenticator SignIn 请求id_token声明at_hash

  2. 是否可以将nonce值传递给id_token声明?

请注意, 我试图遵守:https://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowSteps 特别针对此部分:3.2.2.10。身份令牌

import React from 'react';
import { Authenticator, ConfirmSignIn, SignIn } from 'aws-amplify-react';
import Amplify, { Auth } from 'aws-amplify';
import awsconfig …
Run Code Online (Sandbox Code Playgroud)

authentication amazon-web-services openid-connect amazon-cognito aws-amplify

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

JMS Serializer没有使用FOSRest处理自定义存储库方法

我在设置JMS Serializer和FOSRestBundle时遇到问题,无法序列化这个自定义存储库方法.

如果我使用$schedules = $em->getRepository('RadioBundle:Schedule')->findAll();它工作正常,但当我尝试我的自定义方法时,没有任何字段被排除.

有人可以帮我弄清楚什么是错的吗?

控制器:

use RadioBundle\Entity\Schedule;
use Symfony\Component\HttpFoundation\Request;
use FOS\RestBundle\Controller\Annotations\View;


class ScheduleController extends BaseController
{
    /**
     * @param $date
     * @return \Symfony\Component\HttpFoundation\Response
     * @View(serializerGroups={"schedule"})
     */
    public function getSchedulesScheduleAction($date)
    {
        $em = $this->getDoctrine()->getManager();
        list($startDate, $endDate) = $this->get('radio.utils.date_and_time')->findWeekRange($date);
        $schedules = $em->getRepository('RadioBundle:Schedule')->findByRange($startDate, $endDate);

        $view = $this->view(
            [
                'schedules' => $schedules,
            ],
            200
        );

        return $this->handleView($view);
    }
}
Run Code Online (Sandbox Code Playgroud)

存储库方法:

class ScheduleRepository extends EntityRepository
{
    /**
     * @param \DateTime $startDate
     * @param \DateTime $endDate
     * @return array
     */
    public function …
Run Code Online (Sandbox Code Playgroud)

symfony doctrine-orm fosrestbundle jmsserializerbundle

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

尝试使用 targetPath 登录 Symfony 后重定向用户,但它始终为 null

我已经看到$this->getTargetPath($request->getSession(), $providerKey)可以用来获取目标路径,但它始终是null

有人可以解释它的用途以及为什么它总是null适合我吗?

use Symfony\Component\Security\Http\Util\TargetPathTrait;


class LoginFormAuthenticator extends AbstractFormLoginAuthenticator
{

    use TargetPathTrait;

    public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
        {
            $targetPath = $this->getTargetPath($request->getSession(), $providerKey);

            if (!$targetPath) {
                $targetPath = $this->container->get('router')
                    ->generate('poll_index');
            }

            return new RedirectResponse($targetPath);
        }
}
Run Code Online (Sandbox Code Playgroud)

authentication symfony symfony-3.4

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

使用 FFmpeg 录制屏幕

我最近使用下面的 FFmpeg bash 命令来捕获屏幕录制。

我可以做出任何改进来简化此流程吗?

或者也许进行一些设置来减小输出文件的大小?

理想情况下,我想直接捕获到 mp4。这可能吗?

任何有关 FFmpeg 屏幕录制的一般建议将不胜感激。

ffmpeg -f x11grab -y -r 30 -s 1920x1080 -i :0.0 -vcodec huffyuv out.avi
# Then convert it to .mp4
ffmpeg -y -i out.avi -s 1920x1080 -f mp4 -vcodec libx264 -preset slow -crf 18 -b:v 3000k -maxrate 4000k -bufsize 512k -c:a aac -b:a 128k -strict -2 out.mp4
# and remove the .avi
rm out.avi
Run Code Online (Sandbox Code Playgroud)

ffmpeg

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

如何在Angular2中为无线电计划设置默认日期url参数

我有一个路由设置到电台节目时间表,我传递给的参数ScheduleComponent是日期.但是,我在尝试为路径设置默认值时遇到问题.

在经历了很多失败之后,我决定总是在链接上设置日期.但现在我需要突出显示.active路线,因此需要弄清楚如何设置计划的默认值.

有人可以帮助我指出正确的方向.

目前的路线:

const routes = [
    {
        path: 'schedule/:date',
        component: ScheduleComponent,
    }
]
Run Code Online (Sandbox Code Playgroud)

我正在考虑做这样的事情,但无法安排在给定日期前往正确的地方.我不确定这是正确的方法:

const routes = [
    {
        path: 'schedule',
        component: ScheduleComponent,
        redirectTo: 'schedule/yyyy-MM-dd', // Replacing yyyy-MM-dd with todays date.
        children: [
            { path: ':date', component: ScheduleComponent, pathMatch: 'full' }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

主导航构造器,这是我想要使用的地方/schedule:

  constructor(private datePipe: DatePipe, private colorService: ColorService) {
    this.navs = [
      {url: '/schedule/' + this.datePipe.transform(new Date(), "yyyy-MM-dd"), content: "Schedule"},
      // ... other routes
    ];
Run Code Online (Sandbox Code Playgroud)

示例链接:

<a [routerLink]="['/schedule', day …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

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

将 @Groups 注释与 JMS Serializer 和 FOSRestBundle v2.1 一起使用时的空 JSON 数组

我正在尝试使用@Groups注释来序列化我的数据,但我只是收到一个空数组。

我试过@Serializer\Expose在我想显示的字段上使用,但随后它们随处可见而忽略了这些组。

从我读过的内容来看,我很确定我应该只需要使用@Groups注释,但我最终得到了这个(有两个计划实体):

{
  "schedules": [
    {},
    {}
  ]
}
Run Code Online (Sandbox Code Playgroud)

它的工作方式似乎发生了变化,我找到了以前版本 FOSRestBundle 的示例,我只是无法将它们移植到新版本。

据我了解,您可以在序列化程序上下文中设置组并使用它来设置视图上下文,但我对此并不走运。

https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/UPGRADING-2.0.md

View::setSerializationContext 和 View::getSerializationContext 已被删除。将 View::setContext 和 View::getContext 与新的 Context 类一起使用。

前:

use JMS\Serializer\SerializationContext;

$view = new View();
$context = new SerializationContext();
$view->setSerializationContext($context);
$context = $view->getSerializationContext();
Run Code Online (Sandbox Code Playgroud)

后:

use FOS\RestBundle\Context\Context;

$view = new View();
$context = new Context();
$view->setContext($context);
$context = $view->getContext();
Run Code Online (Sandbox Code Playgroud)

我花了很长时间来解决所有这些问题,并且非常感谢任何帮助为我指明正确方向的帮助。

除了下面我试图use FOS\RestBundle\Controller\Annotations as Rest; @Rest\View(serializerGroups({"schedule"})注释与控制器上,它有同样的效果,因为我看到现在(无)。

调度控制器

use FOS\RestBundle\Context\Context;

class ScheduleController extends BaseController
{ …
Run Code Online (Sandbox Code Playgroud)

symfony doctrine-orm fosrestbundle jmsserializerbundle

0
推荐指数
1
解决办法
1535
查看次数

无论如何,有什么强迫PyCharm始终使用绝对导入?

我使用的是PyCharm,通常依靠alt + enter快捷方式来自动导入类和函数。

但是,它不使用绝对导入路径。它在本地运行良好,但是当我推送到GitHub时,我的测试在TravisCI中失败了。

有谁知道强制PyCharm以绝对路径导入的方法?

drone_squadron.api.drone_api如果我使用像这样api.drone_api的东西,则远程测试无法找到导入,则需要像这样导入。这适用于所有本地进口。

我希望所有时间始终都是绝对进口。相对进口使我在打包项目时遇到了问题。我认为始终使用绝对导入会更容易。

Git回购

https://github.com/sarcoma/drone_squadron_api_prototype

树状结构

.
??? coverage.xml
??? LICENSE.md
??? pytest.ini
??? README.md
??? requirements.txt
??? drone_squadron
?   ??? app.py
?   ??? endpoints.http
?   ??? flask.cfg
?   ??? __init__.py
?   ??? load_fixtures.py
?   ??? main.py
?   ??? router.py
?   ??? schema.py
?   ??? test_flask.cfg
?   ??? api
?   ?   ??? base_api.py
?   ?   ??? drone_api.py
?   ?   ??? gimbal_api.py
?   ?   ??? __init__.py
?   ?   ??? price_api.py
?   ?   ??? round_type_api.py …
Run Code Online (Sandbox Code Playgroud)

python pycharm

0
推荐指数
1
解决办法
154
查看次数