小编che*_*hen的帖子

foldRight效率?

我听说foldLeft在大多数操作中效率更高,但Scala School(来自Twitter)给出了以下示例.有人可以分析它的效率吗?我们应该使用foldLeft实现相同的操作吗?

val numbers = List(1,2,3,4,5,...10)
def ourMap(numbers: List[Int], fn: Int => Int): List[Int] = {
    numbers.foldRight(List[Int]()) { (x: Int, xs: List[Int]) =>
    fn(x) :: xs
  }
}

scala> ourMap(numbers, timesTwo(_))
res0: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
Run Code Online (Sandbox Code Playgroud)

scala

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

Python GUI App Distribution:用wxPython,TKinter或QT编写

我的问题是关于跨平台(Mac/Linux/Windows)分发GUI应用程序的容易性,我想知道使用户的工作最简单的那个.

我目前的理解是Tkinter应用程序对于用户来说是最容易的(安装),因为只要用户在她的框中安装了Python,我的应用程序就可以在该框上运行了.

对于用wxPython或pyQT编写的GUI应用程序,用户需要首先在她的盒子中安装wxWidget或QT,这是一个额外的步骤,然后安装我的GUI应用程序.(但我的Ubuntu盒子似乎默认安装了wxWidget库和QT库,这是一个规范还是只是Ubuntu发行版对用户更友好?我猜Windows和Mac可能不会通过defualt提供它们,即用户需要下载并安装它们作为额外步骤)

python user-interface wxpython tkinter pyqt

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

Json Web Token (JWT) 究竟是如何减少人在循环攻击的?

我正在尝试了解 JWT,并在网上浏览各种资源。我找到了显示如何检查 JWT 是否经过调整的代码——这是一个很棒的代码,我理解它。

但是,我不明白 JWT 不会被中间人使用,他们可以查看浏览器数据(想想图书馆中的公共计算机)或嗅探线路(我想这可以通过 HTTPS 避免) 获取 GWT 字符串,并从另一台计算机重播。

https://float-middle.com/json-web-tokens-jwt-vs-sessions/

[headerB64, payloadB64, signatureB64] = jwt.split('.');

if (atob(signatureB64) === signatureCreatingFunction(headerB64 + '.' + payloadB64) {  
    // good
} else
    // no good
}
Run Code Online (Sandbox Code Playgroud)

security restful-authentication jwt

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

RDF可以使用边缘属性为带标签的属性图建模吗?

我想像以下那样建立合作伙伴关系模型,我以标签属性图的格式表示。

在此处输入图片说明

我想使用RDF语言来表达上面的图形,特别是我想了解是否可以表达“ loves”边缘的标签(这是文章/字母的URI)。

我是RDF的新手,我知道RDF可以轻松表示LPG中的节点属性,但是可以方便地表示边缘属性吗?

这个问题的背景更多:我想使用RDF(而不是Gremlin)的原因是,从长远来看,我想添加一些推理功能。

进一步增加的问题:如果我们选择一个RDF模型来用简单的英语表示上述LPG,我想用SPARQL查询来回答以下问题:

  1. 鲍勃爱上任何一个人吗?
  2. 如果是这样,他爱谁?为什么?

查询SPARQL语句有多复杂loveletters.com/123

rdf graph-databases gremlin amazon-neptune

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

使用Django和Flask


情况:

我暂时考虑使用Django的情况

  1. 提供HTML(由Django的模板)
  2. 从Django项目中提供CSS,JS等所有静态文件

而我使用Django的意图就在这里停止.将javascript文件下载到客户端后,他们使用RESTful API(Ajax方式)与Flask后端进行通信.


为什么有两个框架?为什么这样?

我工作的这个项目的前端人员非常了解Django,我想我主要想使用他的CSS/HTML模板/ jquery技能.

我想拥有一个独立的API服务器,我觉得Flask是我需要的理想选择(从构建API服务的角度来看).

我想人们会建议"为什么不让Django家伙用Jinga2来模板?" (以这种方式,我们可以取消Django)我想我现在的答案是:我不希望他投入太多时间(学习)

我猜人们会建议"为什么不使用Django来提供Restful API调用?" (以这种方式,我们可以取消Flask)我想我现在的答案是:我(作为实现API逻辑的人)就像Flask一样.


我的问题

简短的一句:这可行吗?或者这听起来像个疯子?

长期:您能否给予一些指导?

谢谢,

django django-templates jinja2 flask flask-sqlalchemy

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

SAML 2.0与OpenID

鉴于SAML 2.0支持"联合"概念,并且考虑到像Google这样的知名玩家使用SAML,有人可以解释为什么其他一些服务(例如,stackoverflow)使用OpenID吗?这只是一个历史原因吗?

openid authentication saml saml-2.0

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

conda可以在全球范围内安装软件包还是将所有软件包都安装到特定的环境?

我在conda管理下有多个环境,如下所示

ss-MacBook-Pro$ conda env list
# conda environments:
#
base                  *  /miniconda2
testenv                  /miniconda2/envs/testenv
testenvpy3               /miniconda2/envs/testenvpy3
Run Code Online (Sandbox Code Playgroud)

我可以安装在多个环境中都有效的软件包吗?通过阅读文档,我觉得这是不可能的,因为如果这样做

conda install package-name
Run Code Online (Sandbox Code Playgroud)

它只会安装到base环境(当前活动环境)中,而不适用于其他环境。我记得我以前可以通过某种方式在virtualenv下实现对多个环境有效的安装软件包。

有人可以分享建议吗?

python anaconda conda

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

关于C++模板语法的问题(STL库源代码)

我正在阅读STL源代码.虽然我理解我在stl_list.h中阅读的内容,但我想完全理解以下代码片段(我认为主要与模板语法有关).

模板

class _List_base {
  ...
  typedef typename _Alloc::template rebind<_List_node<_Tp> >::other _Node_Alloc_type; //(1).

  ...
  typedef _Alloc allocator_type;
  get_allocator() const
  { return allocator_type(*static_cast<
                          const _Node_Alloc_type*>(&this->_M_impl)); }  // (2)
  ...
};
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么我们需要在第(1)行中的_Alloc之后使用"模板"吗?(并给出这一行的完整解释?)

有人可以解释为什么我们可以在行(2)中将_Node_Alloc_type转换为_Alloc吗?

c++ stl

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

使用Eclipse创建Scala项目,sbteclipse - 目录布局

我正在尝试使用Eclipse作为我的IDE,我已经安装了sbt作为构建工具,sbteclipse作为Eclipse的构建工具插件.我按照sbteclipse教程http://www.atsnippets.com/development/starting-with-simple-build-tool-sbt-for-scala.html使我的目录结构如下所示:

HelloWorld
     \- src
          \-main
              \-scala
              \-java
          \-test 
              \scala
              \java
     \target
          \-scala-2.9.1
          \-streams
Run Code Online (Sandbox Code Playgroud)

现在,我想使用Eclipse作为我的编辑器(我喜欢它的检查,自动完成等).但是,我不知道如何让Eclipse理解上面的目录布局(我不能将上面的目录导入为我的项目,否则我没有找到正确的方法).有人可以分享经验吗?

我尝试了另一种方式来启动我的玩具项目:我使用Eclipse创建了一个scala项目.但是,目录结构也不是我想要的.这是我的目录结果"New Scala Project","New Package(com.foo.hello)"操作

HelloWorld
   \-src
       \-com
           \-foo
               \-hello
Run Code Online (Sandbox Code Playgroud)

这不是我想要的,因为我想将main与test分开.有推荐的方法吗?

java eclipse scala sbt sbteclipse

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

难道我们不应该从 API 网关 + Lambda 堆栈迁移到 Lambda@Edge 以提供 API 服务吗?

如果我的理解正确的话,从堆栈中提供 APILambda@Edge比从堆栈中提供 API 提供更多的延迟优势API-Gateway + Lambda

另外,API-Gateway 的成本(3.5 美元/百万次调用)+ Lambda(0.2 美元/百万次调用)== 3.7 美元/百万次调用似乎比Lambda@Edge(0.6 美元/百万次调用)更昂贵。

如果上述两个观察结果都是正确的,那么我们不应该将我们的 API-Gateway + Lambda (对于那些使用此堆栈的人)迁移到 lambda@edge 堆栈吗?

amazon-web-services amazon-cloudfront aws-lambda aws-api-gateway aws-lambda-edge

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