小编mvl*_*bat的帖子

JSDoc:如何记录返回传递构造函数实例的函数?

例如,我有以下功能:

\n\n
function createInstanceOf(ObjectConstructor) {\n  return new ObjectConstructor;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我传递一个类作为参数时,我想让 WebStorm 自动完成功能正常工作。例如:如果我打电话,createInstanceOf(ClassA)我想看到自动完成,例如ClassA,如果我打电话createInstanceOf(ClassB)\xe2\x80\x93 ClassB。所以 JSDoc 函数必须是通用的。

\n\n

使用 JSDoc 定义泛型函数并使@return值类型与 相同很容易@param,但我发现没有办法将@param类型视为返回对象的构造函数。

\n\n

所以这不起作用:

\n\n
/**\n * @param {T} ObjectConstructor\n * @returns {T}\n * @template T\n */\nfunction createInstanceOf(ObjectConstructor) {\n  return new ObjectConstructor;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我也尝试让它以这种方式工作:

\n\n
/**\n * @param {function(new:T)} ObjectConstructor\n * @returns {T}\n * @template T\n */\nfunction createInstanceOf(ObjectConstructor) {\n  return new ObjectConstructor;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但也许我错误地使用了闭包类型,或者 WebStorm 无法解析此类泛型类型。

\n\n

如果 JSDoc …

javascript jsdoc webstorm

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

为什么 Google OAuth API 需要 client_secret 用于设备流?将秘密存储在可下载的应用程序中是否安全?

RFC 8628 没有声明client_secret设备访问令牌请求需要该参数:https://datatracker.ietf.org/doc/html/rfc8628#section-3.4

当我使用 Google API 发出这样的请求时

$ curl --request POST \
  --url 'https://oauth2.googleapis.com/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data 'grant_type=urn:ietf:params:oauth:grant-type:device_code' \
  --data 'device_code=...' \
  --data 'client_id=...'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

{
  "error": "invalid_request",
  "error_description": "Missing required parameter: client_secret"
}
Run Code Online (Sandbox Code Playgroud)

如果我通过了client_secret,那就有效了。

如果有人能回答我的两个问题,我将不胜感激:

  1. 为什么Google API需要client_secret设备流?适用于电视和有限输入设备应用程序的 OAuth 2.0未提供任何解释。
  2. client_secret假设我的客户端属于“电视和有限输入的客户端 ID”类型,暴露 是否安全?我认为通常不鼓励这样做,所以我想将这个问题仅限于 Google API。我的应用程序可以下载,并且秘密基本上是硬编码的,从而暴露给所有人。如果这个秘密被泄露,我想知道会产生什么影响。

google-openid oauth-2.0 google-oauth openid-connect

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

从Linux构建CMake时,如何使用CMake获取Windows应用程序的依赖关系?

目前,我正在尝试使用Linux上的MinGW和CMake在Windows上部署Qt应用程序。我使用MXE准备构建环境(安装mingw32并编译Qt5共享库)。我已经编写了CMakeList.txt和一个工具链脚本,它们可以很好地构建我的应用程序。

我无法实现的事情是将共享的Qt dll交付给我的内置可执行文件。

这是我的工具链文件:http : //pastebin.com/gh7kSda4

这是我的CMakeLists.txt:http : //pastebin.com/wHA7f7Sj

以下是该脚本的摘录,其中包含安装部分:

# Installation.
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/${TOOLCHAIN}-Bundle)
install(TARGETS mEyeSaver
        RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX})
install(CODE "
        include(BundleUtilities)
        fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/mEyeSaver${TOOLCHAIN_EXECUTABLE_FORMAT}\" \"\" \"${QT5_PATH}/bin\")
" COMPONENT Runtime)
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用fixup_bundle实现我的目标。

键入后,make install我得到以下输出:http : //pastebin.com/DymaH1Mu

之后,x86_64-w64-mingw32-Bundle文件夹中除mEyeSaver.exe外什么都没有。没有dll被复制。我确定~/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin文件夹中需要Qt dll 。但是,我仍然在做错事。

如何解决问题?谢谢

更新资料

我重新考虑了我在做什么,以至于fixup_bundle不能分析Windows可执行文件的依赖关系,因为Linux ldd(它使用的)与Windows应用程序无关。所以我已经编辑了我的问题。

有没有简单的方法可以使用CMake(或其他工具)获取Windows可执行文件的依赖库,而无需直接复制它们?

c++ mingw cmake cross-compiling mxe

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

尽管 readiness_check 返回 200 状态响应,Google App Engine 应用程序部署仍失败

我正在尝试为我的应用程序设置一个readiness_check。这是我的相关部分app.yaml

readiness_check:
  path: '/readiness_check'
  check_interval_sec: 30
  timeout_sec: 4
  failure_threshold: 10
  success_threshold: 1
  app_start_timeout_sec: 300
Run Code Online (Sandbox Code Playgroud)

完整配置

我正在开发的项目是一个在 Express 上运行的 Node.js 应用程序。这是我处理/readiness_check端点的方法:

app
  .get(['/readiness_check'], (req, res) => res.sendStatus(200))
Run Code Online (Sandbox Code Playgroud)

如果没有readiness_check配置,我的部署过程会成功,并且我可以毫无问题地访问我的应用程序。但是,当我包含 时readiness_check,该过程失败并出现以下错误:

操作错误:错误响应:[4] 您的部署未能在指定时间内恢复正常,因此已回滚。如果您认为这是一个错误,请尝试调整“readiness_check”部分中的“app_start_timeout_sec”设置。

我检查了日志,可以看到它首先/readiness_check返回(当应用程序仍在启动时),然后开始返回状态代码。手动访问端点显示相同的结果。但由于某种原因,GCP 仍然认为我的部署不健康。502200curl

运行gcloud app describe确认我已splitHealthChecks启用该功能。

我浏览了文档中的故障排除部分,发现我没有启用servicecontrol.googleapis.comendpoints.googleapis.com服务,因此我启用了它们,但这也没有帮助。

我还在文档中看到了以下注释:

如果您检查应用程序的 nginx.health_check 日志,您可能会发现运行状况检查轮询的发生频率比您配置的要高,因为冗余运行状况检查程序也遵循您的设置。这些冗余运行状况检查程序是自动创建的,您无法配置它们。

这可能是一个不相关的问题,但我在我的应用程序日志中找不到nginx.health_check。我尝试搜索“nginx”文本,但没有看到任何与健康检查相关的内容。尽管在寻找“readiness_check”时,它确实向我展示了我上面提到的响应。

google-app-engine google-cloud-platform

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

无法在Rust中重现虚假缓存行共享问题

我正在尝试重现处理器缓存效果库的示例6 .

本文以此函数(在C#中)为例来说明如何测试错误共享:

private static int[] s_counter = new int[1024];
private void UpdateCounter(int position)
{
    for (int j = 0; j < 100000000; j++)
    {
        s_counter[position] = s_counter[position] + 3;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我们创建传递给这个函数0,1,2,3参数的线程,它将花费很长时间来完成(作者得到4.3秒).如果我们通过,例如,16,32,48,64,我们将获得更好的结果(0.28秒).

我在Rust中提出了以下功能:

pub fn cache_line_sharing(arr: [i32; 128], pos: usize) -> (i32, i32) {
    let arr = Arc::new(arr);
    let handles: Vec<_> = (0..4).map(|thread_number| {
        let arr = arr.clone();
        let pos = thread_number * pos;
        thread::spawn(move || unsafe {
            let p = (arr.as_ptr() as *mut i32).offset(pos as isize); …
Run Code Online (Sandbox Code Playgroud)

benchmarking rust cpu-cache false-sharing

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