小编Rya*_*yan的帖子

我应该将附件存储在 CouchDB 还是 S3 中?

我正在编写一个完全围绕文件上传的简单 Web API。用户可以通过基于HTTP的API将文件上传到服务,该服务将生成文件供用户访问,并且还需要将它们与上传的文件一起存储。所以会有很多文件在起作用。

基本上,我试图在将它们存储在 CouchDB 中和将它们存储在 Amazon S3 等中之间做出决定。

使用 CouchDB,我可能会为用户初始上传的文件提供一个文档,并将附件数据内嵌在 _attachments 集合中。系统创建的其他文件将添加到该文档中。(该服务进行文档转换,因此他们上传 Excel XLS,系统生成 PDF、TXT 等)我认为这很好,因为对上传的文档记录进行一次删除也会删除生成的 PDF、TXT 或任何其他附件。

借助 S3,我感受到了它的安全性,因为我知道我正在使用完全专用于个人文件存储的托管解决方案。它还将该带宽专门用于这些文件,并且不会来自我的 API Web 服务器。缺点是它为我的 API 代码添加了很多额外的逻辑,现在我必须使大量远程文件与我的本地 CouchDB 数据库所了解的内容保持同步。另外,如果我希望最终用户直接从 S3 访问文件,我就必须处理请求签名等问题。文档都是单独存储的,因此从 CouchDB 删除用户上传的附件将需要我对 S3 进行多次删除查询以查找其他文件。

我熟悉 S3,并在当前项目中使用它,但 CouchDB 在允许附件方面看起来非常出色。我很想使用它,但是有什么问题或缺点吗?在我上面描述的存储大量上传文件的场景中,CouchDB 附件是否比 S3 更有意义?

couchdb attachment amazon-s3

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

如何为 C++/CLI DLL 设置程序集绑定探测路径?

我使用 VS2012 编写了一个 C++/CLI DLL。我的 C++/CLI DLL 包装了第三方本机 DLL。反过来,我认为第三方本机 DLL 然后使用同一第三方包提供的一堆其他 DLL。有一个重新分发目录,其中包含一堆 DLL 以及此本机 DLL 包使用的内容。

无论如何,当我在 Windows 中的系统 PATH 上添加重新分发目录时,我可以在单独的 C# GUI 应用程序中加载我的 C++/CLI DLL。

不过,在分发此应用程序时,我不想要求用户修改他们的路径。将该重新分发目录移出 PATH 会导致我的 C++/CLI DLL 无法加载,并出现 FileNotFound 错误。我很确定它找到了我的 DLL,因为它位于同一目录中,但我认为它找不到我的 DLL 所依赖的 DLL。我无法在运行时在 GUI 应用程序中调整 PATH,因为在加载 CLI DLL 时调用 main 之前它会失败。

我尝试添加<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><probing privatePath="lib"/></assemblyBinding>到 app.config 中,并将所有 DLL 放入同级 lib 目录中,但这似乎无法解决问题。我认为它不能解决这个问题,因为它只是告诉 C# GUI 应用程序在哪里可以找到我的 CLI DLL,但不会告诉 CLI DLL 在哪里可以找到它的依赖项,对吧?

我有什么想法可以解决这个问题吗?

.net app-config c++-cli visual-studio-2012

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

Leiningen路径不能草书定位?(IntelliJ Clojure IDE)

我正在尝试使用Cursive,一个基于IntelliJ的Clojure IDE.Leiningen控制台工作,但打印出"找不到路径"错误.

在此输入图像描述

我似乎无法弄清楚它找不到的东西.Leiningen似乎在工作.知道我怎么能弄清楚它找不到的东西,并修复它?

我在Windows 8.1 64位上使用IntelliJ 14.0.2和Cursive 0.1.43.

windows clojure intellij-idea leiningen cursive

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

为什么ring的资源响应会响应application/octet-stream内容类型?

我想弄清楚Ring为什么resource-response选择回复application/octet-stream内容类型.我最近更新了一些我一直在学习的示例代码,以便它使用更新的代码ring-defaults.在使用之前ring-defaults,此代码使用html内容类型进行响应.为什么现在选择八位字节流?

(ns replays.handler
  (:require [compojure.core :refer [GET defroutes]]
            [compojure.route :as route]
            [ring.util.response :refer [response resource-response]]
            [ring.middleware.json :as middleware]
            [ring.middleware.defaults :refer [wrap-defaults api-defaults]]))

(defroutes app-routes
  (GET  "/" [] (resource-response "index.html" {:root "public"}))
  (GET  "/widgets" [] (response [{:name "Widget 1"} {:name "Widget 2"}]))
  (route/resources "/public")
  (route/not-found "not found"))

(def app
  (-> app-routes
      (middleware/wrap-json-body)
      (middleware/wrap-json-response)
      (wrap-defaults api-defaults)))
Run Code Online (Sandbox Code Playgroud)

而且,对于版本号,这是项目文件......

(defproject replays "0.1.0-SNAPSHOT"

  :url "http://example.com/FIXME"
  :description "FIXME: write description"

  :plugins [[lein-pdo "0.1.1"]
            [lein-ring "0.9.3"]
            [lein-cljsbuild …
Run Code Online (Sandbox Code Playgroud)

clojure compojure ring

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

使用flummox(flux)时在哪里获取初始状态?

我正在试图找出加载初始状态的位置,当使用flummox时,一个磁通库.我已经看到它做了几个方面,但我很好奇是否有推荐的方法来做到这一点.让我们说你有一些你已经保存在本地存储或数据库或其他东西的待办事项.你会把它们拿到哪里并让它们进入你商店的状态?

我已经看到它建议在react中执行实际的ajax查询componentDidMount,并触发一个动作,将ajax的结果传递给该动作.该数据将流入商店的状态,并作为初始状态返回到视图中.

我也看到它建议在动作本身内部执行ajax,flummox似乎很好地支持他们的异步等待支持.我想在这种情况下你只是触发了一些初始状态动作?

reactjs reactjs-flux flummox

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

如果连接没有匹配项,如何与 json_build_object 一起返回 null?

我有两个表,一个有一个外键到另一个:

CREATE TABLE employee (
  employee_id INT PRIMARY KEY,
  name TEXT NOT NULL
);

CREATE TABLE project (
  project_id INT PRIMARY KEY,
  employee_id INT NOT NULL REFERENCES employee(employee_id),
  name text NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我正在尝试查询一名员工及其项目(假设只允许一个项目)。如果项目存在,我希望项目显示为 JSON 对象,否则我希望null.

我有以下查询,它可以满足我的要求......

SELECT e.employee_id,
       e.name,
       row_to_json(p.*) AS project
FROM employee e
LEFT JOIN project p USING(employee_id)
Run Code Online (Sandbox Code Playgroud)

问题是,我想有选择地从连接中选择列,所以我将查询调整为如下:

SELECT e.employee_id,
       e.name,
       json_build_object('name', p.name) AS project
FROM employee e
LEFT JOIN project p USING(employee_id)
Run Code Online (Sandbox Code Playgroud)

上述查询的问题在于,如果员工没有匹配的项目,它json_build_object仍然会生成一个具有空值的对象,而不是只是不生成一个对象。该row_to_json查询可以看到,加入没有匹配的行,所以它不会创建JSON对象。

有什么方法可以实现我正在寻找的东西,同时能够使用我选择的列构建我自己的 JSON 对象?

postgresql json

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

如何在使用`buildSchema`时模块化GraphQL模式?

自从我更新了graphql-js依赖项以来已经有一年了.我现在看到有一个实用程序可以简化模式生成:buildSchema.此函数以GraphQL的形式将整个模式(作为字符串)作为arg.这太棒了,但有没有办法模块化这个?我的架构不是非常小,并且很难塞进一个.graphql文件.例如,是否存在某种用于将每个类型定义存储在其自己的文件中的实用程序或模式?

graphql

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

编辑 JavaScript 时“重命名符号”是否可以跨文件工作?

编辑 JavaScript 时,“重命名符号”功能是否可以跨文件工作?目前它仅适用于当前正在编辑的文件。不过,我似乎记得它可以跨文件工作。它将打开所有已更改的文件。但它不再这样做了。

是我记错了还是这个方法有效?

visual-studio-code

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

为什么 PlayerController“拥有”偏航俯仰和滚转,而角色“拥有”它的位置?

我是 UE4 的新手,正在尝试了解有关控制角色 pawn 的一些基本概念。我正在摸索着尝试实现一些角色移动逻辑。我打算使用基本的 WASD 来向前、向后、左右移动角色——就像几乎所有基本的第一人称射击游戏一样。我还希望鼠标输入来旋转角色。

我有自己的自定义PlayerControllerCharacter类。

添加代码来移动角色——正面、背面、侧面——似乎都在角色类本身中。那里有一个名为 AddMovementInput 的方法,它似乎可以为我修改位置。这也让我认为角色类“拥有”自己的位置。这是有道理的,因为一次可能有多个角色类,每个类都在不同的位置,对吧?

添加旋转字符的代码与控制旋转的方法类似 - AddControllerYawInput, AddControllerPitchInput, AddControllerRollInput。简单地查看函数的名称表明偏航俯仰和滚转由玩家控制器“拥有”。查看函数的文档和注释进一步支持这一点:“将输入(影响偏航)添加到控制器的 ControlRotation,如果它是本地 PlayerController。” 所以在我看来,偏航俯仰和滚转是玩家控制器“拥有”的值,对吗?

作为初学者,这让我感到困惑:我对位置存储在角色本身中但旋转似乎不是这样的事实感到困惑。

我有兴趣了解我应该如何“思考”角色或棋子的运动。我只是不清楚,这让我挂断了这个话题。

c++ oop unreal-engine4

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

ConfigurationManager 是否与 ASP.NET core 的 appsettings.json 一起使用?

我有一个 .NET Standard 库,其中包含我所有的 SQL 相关代码。它甚至包含一些创建 SQL 连接的代码。该库需要从应用程序配置文件中读取以获取 SQL 连接字符串。图书馆正在使用典型的ConfigurationManager.ConnectionStrings方法。

现在,我在 .NET Core ASP.NET Web Api 2 应用程序中使用了这个库。我已经在这个应用程序的appsettings.json文件中定义了我的连接字符串。连接字符串位于ConnectionStrings具有给定名称的字段中,该名称与我上面的 DLL 查找的名称相匹配。

这似乎不起作用。我的 DLL 从顶部开始,没有从配置文件中找到连接字符串。

难道ConfigurationManager不是一起工作appsettings.json?如果没有,我应该如何解决这个问题?

c# asp.net .net-core

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