小编Jim*_* B.的帖子

Office365 IMAP 访问:用户已通过身份验证但未连接

我正在使用node-imap 构建自己的IMAP 客户端,并针对office365 上的帐户对其进行测试。

由于它正在开发中,我倾向于在 IMAP 服务器上投入更多的精力,而不是在生产中,但不一定是我认为太多的。

有时,我开始收到 IMAP 响应“BAD 用户已通过身份验证但未连接”。这是在成功登录后的第一个命令之后出现的。

正如其他类似文章所示,这与密码更改无关,因为我的密码在此期间没有更改。

发生这种情况时,该帐户似乎会被锁定一段时间。我似乎可以通过 Office365 管理面板在帐户上禁用然后重新启用 IMAP 来自由调整它。

所以看起来 Office365 上的 IMAP 接口中有某种断路器。Microsoft 记录了 20 个并发会话的限制。就我而言,我一次只打开一个会话,但然后我会关闭它并在(调试)后不久重新打开它,所以如果我遇到了限制,它不会在我读过的任何地方记录下来。

微软的支持很有帮助,但无法帮助我找到根本原因。

为了将此应用程序投入生产,我需要知道是什么原因导致这种情况发生。

有没有人有过类似的office365经历?

javascript imap node.js office365

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

Stylus 语法 - 导入从哪里来?

我有一个名为“quasar.styl”的文件:

@import './quasar.variables'
@import '~quasar-styl'
Run Code Online (Sandbox Code Playgroud)

当它被 webpack 使用 styl-loader 处理时,我收到以下错误:

failed to locate @import file ~quasar-styl.styl
Run Code Online (Sandbox Code Playgroud)

我有这种感觉,关于手写笔有些东西我不明白。它会在哪里寻找文件“~quasar-style”?

该文件来自一个正在运行的样板类星体应用程序,并且应用程序目录中的任何位置都没有调用的文件quasar-style,尤其是node_modules,这是我收集波浪号告诉它要查看的地方。

有任何想法吗?

更新:我在这里上传了类星体样板项目: https ://repl.it/@jmbldwn/Quasar-Boilerplate-2

它无法在 repl.it 上运行,因为它需要 quasar-cli,但您可以在那里看到它生成的所有文件。

stylus webpack webpack-dev-middleware quasar-framework

7
推荐指数
2
解决办法
4212
查看次数

React-native,monorepo:无法解析模块@babel/runtime/helpers/interopRequireDefault

我已经在 monorepo 中设置了一个反应本机应用程序作为工作区。我这样做是因为我想分享我在移动应用程序和网络应用程序之间创建的一些反应组件。

我的仓库的基本结构是:

root/
    package.json (with nohoist: ["**/expoapp/**"])
    modules/
        ...shared modules, some simple JS, some react
    apps/
        web/  (cra-based web app)
        mobile/
            package.json
            metro.config.js (addes watchFolders and extraNodeModules)
            App.js
Run Code Online (Sandbox Code Playgroud)

我可以将简单的 JS 模块从模块目录导入到我的移动应用程序中。

但是当我尝试导入我的反应组件之一时,我收到此错误:

Unable to resolve module @babel/runtime/helpers/interopRequireDefault from /Users/jim/development/.../modules/dumb-module/index.js: @babel/runtime/helpers/interopRequireDefault could not be found within the project.
Run Code Online (Sandbox Code Playgroud)

控制台中的错误消息指向我的反应组件的第一行:

iOS Bundling failed 3378ms
Unable to resolve module @babel/runtime/helpers/interopRequireDefault from /Users/jim/development/.../modules/dumb-module/index.js: @babel/runtime/helpers/interopRequireDefault could not be found within the project.

If you are sure the module exists, try these steps:
 1. …
Run Code Online (Sandbox Code Playgroud)

reactjs react-native monorepo yarnpkg

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

Vuex 模块初始化最佳实践

(更新了额外的背景)

我有一个 Vuex 存储模块,它需要在开始时自动加载其数据,因此在请求时可用(在这种情况下,它是一个“设置”存储,在启动时从电子设置加载数据,但有很多为什么我可能需要这样的东西)。

现在,我通过在我的 store 模块上设置一个特殊的“init”操作并从“mounted”生命周期钩子上的 Main.vue 组件分派它来实现这一点,如下所示:

mounted() {
    this.$store.dispatch('initSettings');
}
Run Code Online (Sandbox Code Playgroud)

我希望的是模块可以简单地初始化自己的方式。理想情况下,类似于我的组件上的“挂载”钩子的生命周期钩子之类的东西,但在 vuex 商店模块内触发。这样我的模块的用户就不需要知道他们必须调用 'init' 以及实例化它。

我搜索了文档并没有找到解决方案,但如果我只是在寻找错误的东西,我希望有人找到了一种优雅的方法来做到这一点。

vue.js vuex vuex-modules

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

使用反应路由器在面包屑中提供友好名称

我的反应应用程序使用react-router-dom(v5.1.2)。我在 UI 中添加了一个面包屑,用于解析路由器位置以提供返回更高 UI 级别的链接。

Breadcrumb 组件如下所示(省略了一些 React/material-ui 的样板):

...
import { Route, Link as RouterLink } from 'react-router-dom';

const BreadcrumbBar = () => {
    return (
        <Box m={2}>
            <Route>
                {({ location }) => {
                    const pathnames = location.pathname.split('/').filter(x => x);
                    return (
                        <Breadcrumbs>
                            {pathnames.map((value, index) => {
                                const last = index === pathnames.length - 1;
                                const to = `/${pathnames.slice(0, index + 1).join('/')}`;

                                return last
                                    ? (
                                        <Typography key={to}>
                                            {value}
                                        </Typography>
                                    ) : (
                                        <Link component={RouterLink} to={to} key={to}>
                                            {value}
                                        </Link> …
Run Code Online (Sandbox Code Playgroud)

breadcrumbs reactjs react-router material-ui react-router-dom

6
推荐指数
0
解决办法
1203
查看次数

CMake:将头文件复制到输出目录

我有一个包含 c++ 源文件和头文件的目录。我想创建一个 CMakeLists.txt 来将其构建为库,以便在将其作为子目录包含的其他 CMake 项目中使用。

结构:

example/
    foo.h
    foo.cpp
    CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是 CMake 似乎没有将 foo.h 放在任何地方,因此让父 CMake 知道如何查找头文件让我很困惑。

这是我当前的 CMakeLists.txt:

cmake_minimum_required(VERSION 3.8.2)
project(example)
set (CMAKE_CXX_STANDARD 11)

# add library target foo
add_library(foo STATIC foo.cpp)

# tell cmake where to find headers for it
target_include_directories(foo PUBLIC .)

# sad attempt to get it to output the header
set_target_properties(foo PROPERTIES PUBLIC_HEADER foo.h)
Run Code Online (Sandbox Code Playgroud)

我不想安装。这里的想法是该库将由其他 CMake 项目使用,而不是由整个系统使用。

理想情况下,foo.h 将显示在构建目录中的 libfoo.a 旁边。

我曾尝试将其称为“框架”,但没有成功;只做一个 macOS 框架。

我相信我可以临时操纵这个,但我认为有一个最佳实践。

也接受“这里有更好的方法”的答案......

更新

这可能有助于澄清我想如何将这个项目拖入另一个项目。我见过其他项目使用这样的东西:

add_subdirectory(<path_to_foo>/foo foo_build)
Run Code Online (Sandbox Code Playgroud)

这会导致 foo 构建发生在子目录中。这使我可以使用“foo_build”引用该库,这非常干净。但是,我仍然必须指向原始包含目录才能获取 …

c++ build cmake

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

CMSampleBuffer 中的 CMBlockBuffer 所有权

我正在编写代码来解压本机附件 B H.264 流,我正在完成解析流的过程,从 SPS/PPS NALU 创建 CMVideoFormatDescription,并包装我从流中提取的其他 NALU在 CMSampleBuffers 中。

我在如何处理解码器的 CMBlockBuffer 和 CMSampleBuffer 内存方面遇到了心理障碍。我相信我的问题更多是缺乏对 CF 如何处理内存的透彻理解,所以我的问题更多的是关于这一点,但我希望上下文有帮助。

如果我像这样创建一个 CMBlockBuffer:

CMBlockBufferRef blockBuffer;

OSStatus status = CMBlockBufferCreateWithMemoryBlock(NULL,
                                                     memoryBlock,                       
                                                     blockBufferLength,
                                                     kCFAllocatorNull,
                                                     NULL,
                                                     0, 
                                                     blockBufferLength,          
                                                     kCMBlockBufferAlwaysCopyDataFlag | kCMBlockBufferAssureMemoryNowFlag,
                                                     &blockBuffer);
Run Code Online (Sandbox Code Playgroud)

并将其添加到 CMSampleBuffer 中,如下所示:

CMSampleBufferRef sampleBuffer;

status = CMSampleBufferCreate(kCFAllocatorDefault,
                              blockBuffer,
                              true,
                              NULL,
                              NULL,
                              formatDescription,
                              1,
                              0,
                              NULL,
                              1,
                              &sampleSize,
                              &sampleBuffer);
Run Code Online (Sandbox Code Playgroud)

我应该如何处理块缓冲区?SampleBuffer 是否保留块缓冲区的内存,或者我是否需要做一些事情来确保它没有被释放?

另外,关于异步解码过程,是否有一种明智的方法可以知道解码器何时使用 CMSampleBuffer 完成以便我可以处理它?

我的直觉告诉我 CMSampleBuffer 会保留 CMBlockBuffer,而 VTDecodeSession 会保留 CMSampleBuffer 直到它完成解码,但这是一个未记录的领域,我正在寻找一些方向。我得到的结果暗示我的直觉可能是错误的,所以我需要排除内存管理作为一个问题来保持我的理智......

macos h.264 cmsamplebufferref cmsamplebuffer video-toolbox

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