小编Ste*_*ini的帖子

实现REST

我浏览一个简单的,完全REST API的好例子,但无济于事.检查stackoverflow也是如此.我见过的最好的就是这篇文章.尽管如此,我仍然没有明白这一点.让我们举一个我们都知道的应用程序的例子:维基百科.

假设我们要为维基百科创建REST API.我们期待以下动词:

GET /wiki/Article_name: obtains a specified page
DELETE /wiki/Article_name: deletes the page
POST /wiki/Article_name: creates a new page
PUT /wiki/Article_name: updates a page.
Run Code Online (Sandbox Code Playgroud)

事实是:当您在浏览器中使用维基百科时,您不使用REST界面进行导航.我很确定当你更新页面时,你永远不会使用PUT(虽然你在技术上创建了一个新版本的页面,所以POST很有意义).同样,当您删除页面时,浏览器不会发送DELETE.

我的问题是:

  • REST是一个"用于浏览器"的界面还是仅用于脚本?
  • 我们应该通过REST表示的眼睛专门看到HTTP世界吗?像GET/foo /?page = bar&action = delete这样的东西仍然是一个有效的观点,或者过去的可怕错误永远不会再次被完成?
  • Web访问和REST接口应该混合还是分开?例如,假设您有一个AddressBook应用程序.您可以使用GET/people /浏览地址簿,使用GET/people/1523可以在浏览器上获取该单个人信息,也可以使用漂亮的可打印HTML.如果你想修改他的卡,你会(RESTfully)PUT/people/1523,或者更喜欢PUT /api/v1.0/people/1523?
  • 任何人都可以说服Roy Fielding获得人类,并为一个体面的(在他看来)REST API提供一个"5岁孩子"的例子,而不是抱怨什么不是RESTful(在他看来),以便全世界都可以跟进?

rest

16
推荐指数
2
解决办法
1546
查看次数

python setup.py开发以覆盖已安装的版本

我有一个正在开发的包.此软件包已作为驻留在site-packages目录中的egg文件安装,egg path添加到easy-install.pth.

我现在意识到我的包中有一个bug,所以我调用python setup.py develop了挂钩开发目录.source dir的路径已正确添加到easy-install.pth,但它已添加到最新版本,这意味着将首先选择并导入已安装的egg import mypackage.

如何让开发挂钩覆盖已安装的包?

最后,如果我做错了,请解释一下解决这个用例的正确策略是什么.

python distutils

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

merge.renameLimit警告加冲突后撤消git merge

我正在尝试从devel分支到主服务器的合并壁球.

stefanos-imac:trunk borini$ git merge --squash devel
CONFLICT (content): Merge conflict in test1
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your merge.renamelimit variable to at least 2224 and retry the command.
Squash commit -- not updating HEAD
Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)

很公平.

stefanos-imac:trunk borini$ git config merge.renameLimit 999999
Run Code Online (Sandbox Code Playgroud)

然后我尝试撤消合并并用更高的限制重做它

stefanos-imac:trunk borini$ git merge --abort
fatal: There is no merge to abort (MERGE_HEAD missing).
Run Code Online (Sandbox Code Playgroud)

好吧,也许我必须按照它说的做,只需重新调用merge命令 …

git version-control git-merge

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

python中的稀疏赋值列表

我需要一个具有以下行为的列表

>>> l = SparseList()
>>> l
[]
>>> l[2] = "hello"
>>> l
[ None, None, "hello"]
>>> l[5]
None
>>> l[4] = 22
>>> l
[ None, None, "hello", None, 22]
>>> len(l)
5
>>> for i in l: print i
None
None
"hello"
None
22
Run Code Online (Sandbox Code Playgroud)

虽然它可以通过字典"模拟",但它并不完全相同.numpy数组可以这样做,但我不想导入整个numpy这样的东西.在自己编码之前,我会问标准库中是否存在类似的东西.

python

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

jQuery与Yahoo UI API设计

我对jQuery和Yahoo UI API之间的设计差异感到困惑.免责声明:我非常不喜欢jQuery api,但我对网络编程和javascript一般都是一个无知的人,所以我可能会出错,并回到这里乞求兑换.太长...

我的问题如下.这两种设计是不同的.jQuery将DOM置于中心,并通过在其上执行"触发器"增强器方法来装饰DOM.例

$("#flexigrid").flexigrid()
Run Code Online (Sandbox Code Playgroud)

jQuery的一个要求是,在某些情况下,你必须事先遵循一个非常具体的传统结构.例:

<div id="accordion">
    <h3><a href="#">First header</a></h3>
    <div>First content</div>
    <h3><a href="#">Second header</a></h3>
    <div>Second content</div>
</div>
Run Code Online (Sandbox Code Playgroud)

然后

$("#accordion").accordion();
Run Code Online (Sandbox Code Playgroud)

此外,返回的实体通常不提供任何通过方便的编程方法隐藏DOM的机制.要操纵您的jQuery实体,您必须通过选择器访问DOM,在某些情况下访问不能保证很容易知道,就像内部生成的ID一样.假设你想以编程方式交换手风琴,你所做的就是

$('#accordion').accordion('option', 'active', 2);
Run Code Online (Sandbox Code Playgroud)

而不是更直观

myAccordion.setActiveTab(2);
Run Code Online (Sandbox Code Playgroud)

另一方面,雅虎ui专注于javascript对象,你创建它们传递DOM节点选择器(例如myDataTable = new YAHOO.widget.DataTable("container_id")),然后通过对象方法执行所有操作.想要添加新行吗?打电话myDataTable.addRow().DOM是隐藏的.你并不关心幕后发生的事情.

现在,我对Trolltech QT的体验很好地映射到了Yahoo UI.窗口小部件对象的清晰,定义的API,通过继承重新实现其中一部分的最终自由,不透明渲染,除非您想打开盒子并弄脏手.QT是一个成功的API,运行良好,易于使用,Yahoo UI在设计风格上有点类似.另一方面,jQuery以违反直觉(对我来说)的方式工作,非常开放的方式,在其对象上减少了API.

足够的咆哮.关键是我认为我可能在这方面做错了,但我想知道为什么.拥有类似jQuery的界面有哪些设计优势(DOM显然暴露在外,你可能不得不寻找jQuery插件自动创建的东西,所以你最终可以$(选择)它们并附加事件或修改它们的内容)而不是像YUI那样隐藏物品和商品方法背后的一切?

我不是在谈论速度,代码大小或打字数量.我在谈论封装,专注于接口和易于访问等设计概念.什么设计更好,在什么情况下,为什么?

javascript jquery yui

14
推荐指数
2
解决办法
4308
查看次数

根据svn状态着色文件名

在调用时ls,我希望文件名具有不同的颜色,具体取决于它们的subversion状态.例如,添加的文件将为青色,修改后的文件为红色,依此类推.是否有可能用bash的力量?在这方面有什么准备好了吗?

svn bash ls colors

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

Rscript 在带有单引号和双引号的 Windows 上表现不一致

如果我调用

Rscript -e "print('hello')"
Run Code Online (Sandbox Code Playgroud)

它正确打印出答案

[1] "hello"
Run Code Online (Sandbox Code Playgroud)

但是,如果我切换单引号和双引号,则不起作用,并且看起来双引号被删除了:

Rscript -e 'print("hello")'
Run Code Online (Sandbox Code Playgroud)

给出:

Error in print(hello) : object 'hello' not found
Execution halted
Run Code Online (Sandbox Code Playgroud)

请注意,它不是 powershell 错误地进行转义。Echoing 只给出预期的结果:

PS> echo 'print("hello")'
print("hello")
PS> echo "print('hello')"
print('hello')
Run Code Online (Sandbox Code Playgroud)

在 macOs 或 Linux 上没有观察到相同的行为,这两种变体都被正确解析。

有趣的是,command.com 更疯狂:

C:>Rscript -e "print('hello')"
[1] "hello"

C:>Rscript -e 'print("hello")'
[1] "print(hello)"
Run Code Online (Sandbox Code Playgroud)

我的意思是……什么?!?这已经在这里提到了:

从 Windows 命令行运行 R 代码的单行代码

但没有关于它的解释。在我看来,这是 Windows 上 Rscript 的一个错误,但我想听听其他意见。

windows powershell r

14
推荐指数
3
解决办法
391
查看次数

如何将变量绑定到SPARQL中的查询项

在这个简单的sparql查询中,我得到了一个对象列表,其对象是42

SELECT ?v WHERE { ?v ?p 42 }
Run Code Online (Sandbox Code Playgroud)

如果我将?p添加为变量

SELECT ?v ?p WHERE { ?v ?p 42 }
Run Code Online (Sandbox Code Playgroud)

我将获得每行两个实体,主题和谓词.如果我想要三个实体怎么办,包括42个?就像是:

SELECT ?v ?p ?m WHERE { ?v ?p (42 as m) }
Run Code Online (Sandbox Code Playgroud)

sparql

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

提高光线追踪功能的性能

我在python中有一个简单的光线跟踪器.渲染图像200x200需要4分钟,这对我来说绝对太过分了.我想改善这种情况.

一些要点:我为每个像素拍摄多条光线(以提供抗锯齿),每个像素总共有16条光线.200x200x16总计640000条光线.必须测试每条光线对场景中多个Sphere对象的影响.雷也是一个相当微不足道的对象

class Ray(object):
    def __init__(self, origin, direction):
        self.origin = numpy.array(origin)
        self.direction = numpy.array(direction)
Run Code Online (Sandbox Code Playgroud)

Sphere稍微复杂一些,并且带有hit/nohit的逻辑:

class Sphere(object):
    def __init__(self, center, radius, color):
        self.center = numpy.array(center)
        self.radius = numpy.array(radius)
        self.color = color

    @profile 
    def hit(self, ray):
        temp = ray.origin - self.center
        a = numpy.dot(ray.direction, ray.direction)
        b = 2.0 * numpy.dot(temp, ray.direction)
        c = numpy.dot(temp, temp) - self.radius * self.radius
        disc = b * b - 4.0 * a * c

        if (disc < 0.0):
            return None
        else:
            e = math.sqrt(disc)
            denom …
Run Code Online (Sandbox Code Playgroud)

python performance

13
推荐指数
3
解决办法
2331
查看次数

由于 Inter google 字体,Next.js 示例需要很长时间才能编译

我正在尝试使用他们教程中的简单 next.js 示例博客。但是,当我访问该页面时,出现以下情况:

$ npm run dev

> nextjs-blog@0.1.0 dev /Users/<redacted>/tmp/nextjs-blog
> next dev

ready - started server on 0.0.0.0:3000, URL: http://localhost:3000
event - compiled client and server successfully in 386 ms (165 modules)
wait  - compiling /_error (client and server)...
event - compiled client and server successfully in 91 ms (166 modules)
warn  - Fast Refresh had to perform a full reload due to a runtime error.
wait  - compiling / (client and server)...
error - Failed to download …
Run Code Online (Sandbox Code Playgroud)

next.js

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