小编Ale*_*ean的帖子

我应该在公共API中使用UUID作为资源吗?

我正在构建一个SaaS应用程序,并希望公开与我当前数据存储实现无关的资源ID(Postgres自动增量ID).这些Stack Overflow帖子( 两个)表明创建本地唯一ID非常困难,我也可以使用UUID,这些UUID当然可以用几乎任何语言轻松安全地生成.

我对这种方法感到满意,但我想知道为什么我找不到大型SaaS /托管播放器的相同API?例如:

所以基本上没有人似乎使用UUID.有没有理由 - 这里没有发明,更聪明的内部ID算法或其他什么?在我的情况下,在没有任何内部算法的情况下,使用UUID最合适吗?

api rest

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

Scala类型关键字:如何在多个类中使用它

在编写Haskell的拼写之后回到Scala,我开始使用type关键字使我的类定义更具可读性,例如:

type RestfulParams = Map[String, String]
def canonicalize(params: RestfulParams): String = { ... }
Run Code Online (Sandbox Code Playgroud)

我遇到的麻烦是这些类型定义需要存在于类或对象中 - 它们不像Haskell中的"一等公民".如果我尝试在类或对象之外定义类型,我会得到一个编译器expected class or object definition.

那么我的问题是如何在包中的多个类和对象中使用这些类型?我现在所做的事情看起来很难看:

object RestfulTypes { type RestfulParams = Map[String, String] etc }
Run Code Online (Sandbox Code Playgroud)

然后在另一个类文件中:

import utils.{RestfulTypes => RT}
def get(resource: String, params: RT.RestfulParams): String = { ... }
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点 - 顺便说一句,Scala大师认为类型只能在类/对象中定义是好事还是坏事?

types scala

70
推荐指数
3
解决办法
3万
查看次数

我可以从代码中访问我的Scala应用程序的名称和版本(在SBT中设置)吗?

我正在使用Scala构建定义构建一个使用SBT(0.11.0)的应用程序,如下所示:

object MyAppBuild extends Build {

  import Dependencies._

  lazy val basicSettings = Seq[Setting[_]](
    organization  := "com.my",
    version       := "0.1",
    description   := "Blah",
    scalaVersion  := "2.9.1",
    scalacOptions := Seq("-deprecation", "-encoding", "utf8"),
    resolvers     ++= Dependencies.resolutionRepos
  )

  lazy val myAppProject = Project("my-app-name", file("."))
    .settings(basicSettings: _*)
    [...]
Run Code Online (Sandbox Code Playgroud)

我在流程结束时打包了一个.jar.

我的问题很简单:有没有办法从我的Scala代码中以编程方式访问应用程序的名称("my-app-name")和版本("0.1")?如果我能帮忙,我不想在两个地方重复它们.

任何指导非常感谢!

scala sbt sbt-buildinfo

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

如何从Rust发出HTTP请求?

如何从Rust发出HTTP请求?我似乎无法在核心库中找到任何东西.

我不需要解析输出,只需发出请求并检查HTTP响应代码.

奖励标记,如果有人可以告诉我如何URL编码我的URL上的查询参数!

http rust

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

Ruby中的参数化get请求?

如何GET在Ruby中使用参数发出HTTP 请求?

当你正在做的时候很容易做到POST:

  require 'net/http'
  require 'uri'

  HTTP.post_form URI.parse('http://www.example.com/search.cgi'),
                 { "q" => "ruby", "max" => "50" }
Run Code Online (Sandbox Code Playgroud)

但我认为没有办法将GET参数作为哈希使用传递'net/http'.

ruby get ruby-on-rails http

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

将元素添加到ruby数组返回新数组

我想在数组中添加一个元素,但实际上没有更改该数组,而是返回一个新数组.换句话说,我想避免:

arr = [1,2]
arr << 3
Run Code Online (Sandbox Code Playgroud)

哪个会回归:

[1,2,3]
Run Code Online (Sandbox Code Playgroud)

改变arr本身.如何避免这种情况并创建一个新阵列?

ruby arrays copy new-operator

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

如何在SBT中刷新更新的Git依赖项工件?

我已经配置了SBT(0.11.0)作为依赖项来引入GitHub项目,根据我在这里提出的这个问题的答案.

它工作正常,但我似乎无法让SBT在更新时重新编译我的Git依赖项.换句话说:如果我对依赖项进行更新,请推送到Git并重新加载项目的SBT并运行package,然后SBT在编译项目时不会重新编译外部Git依赖项.

我已经尝试在我的Git依赖项中创建一个新分支(比如说forcenew),并在我的SBT项目配置中更新分支以使用它:

lazy val depProject = RootProject(uri("git://github.com/me/dep-project.git#forcenew"))
Run Code Online (Sandbox Code Playgroud)

但即使这样也不会强制刷新.我有点难过 - 我甚至无法找到SBT将Git项目编译到哪里(它似乎不在~/.sbt/或者~/.ivy2/)......

任何帮助非常感谢!

scala sbt

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

在Redis中查找副本集命令(或替代)

我是Redis的新手,我正在寻找一些特定的帮助.为了给出一些背景知识:我正在构建一个网络应用程序,其中包含大量的卡片组,每个卡片组都有一组带有唯一ID的单独卡片.我希望用户从特定的套牌中随机抽取一组5张牌.

我的计划是将给定套牌的所有卡ID存储在Redis中作为一组; 然后我想使用SPOP功能绘制单个卡并将其从集合中移除,以便它们不会在该手中再次绘制.通过将卡牌的"主集"卡片复制到一个新的临时集中,在副本上执行弹出然后在我完成时删除复制的集合,这似乎是有意义的.

但是:我找不到任何Redis函数来命令设置副本 - 我能看到的最接近的事情是创建一个空集然后'加入'空集和集合的'主副本'成新的(如果是临时的)用SUNIONSTORE设置,但这看起来很糟糕.我想另一种方法是将设置项复制到我的"宿主语言"(node.js)中,然后手动将项目插回到新的Redis集中,但这看起来也很笨重.可能有一个更好的第三种选择,我甚至都没有想过.

我做错了什么 - 我不是'得到'Redis,还是命令集仍然有点不成熟?

redis

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

什么是最好的屏幕拼写语言?

嗨,我想创建一个桌面应用程序(c#prob),用于在第三方网页上搜索或操作表单.基本上我在桌面应用程序的表单中输入我的数据,它转到第三方网站,并使用脚本或后台的任何内容,在那里输入我的数据(包括我的登录)并点击我的提交按钮.我只是想避免加载浏览器!

在这个领域没有做太多(任何!)工作我想知道像perl,python,ruby等脚本语言是否允许我这样做?或者只是使用c#和.net完成所有的抓取工作?哪一个是最好的IYO?

我想脚本可能需要从不同平台上的应用程序挂钩到相同的脚本(例如,我无法在c#中开发它的symbian mobile,就像桌面版本一样).

它不是一个网络应用程序,否则我也可以使用原始网站.我意识到这一切听起来毫无意义,但这种特定形式的自动化对我来说将是一个真正的节省时间.

programming-languages screen-scraping web-scraping

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

为什么我不能使用Clojure:^ const与Java字节数组?

使用lein replClojure 1.4.0,我可以定义一个^:constJava字节数组,但我不能对它做任何事情:

user=> (def x (byte-array (map byte [0 1 2 3])))
#'user/x
user=> (alength x)
4
user=> (type x)
[B
user=> (def ^:const cx (byte-array (map byte [0 1 2 3])))
#'user/cx
user=> (alength cx)
CompilerException java.lang.RuntimeException: Can't embed object in code, maybe print-dup not defined: [B@10e6cbd, compiling:(NO_SOURCE_PATH:1)
user=> (type cx)
CompilerException java.lang.RuntimeException: Can't embed object in code, maybe print-dup not defined: [B@10e6cbd, compiling:(NO_SOURCE_PATH:1) 
Run Code Online (Sandbox Code Playgroud)

我已经在我的应用程序中确认了这种情况,因此它不仅仅是一个REPL问题.

我错过了什么?

clojure

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