同一资源的不同RESTful表示

我的应用程序在/foo有一个资源。 通常情况下,它是这样的HTTP响应负载: {"a": "some text", "b": "some text", "c": "some text", "d": "some text"} 客户端并不总是需要这个对象的全部四个成员。 什么是RESTfully语义的方式让客户告诉服务器在表示中需要什么? 如果它想要: {"a": "some text", "b": "some text", "d": "some text"} 它应该如何GET它? 一些可能性(如果我误解了REST,我正在寻找更正): GET /foo?sections=a,b,d 。 查询string(毕竟称为查询string)似乎意味着“查找与此条件匹配的资源并告诉我有关它们”,而不是“根据此自定义向我表示此资源”。 GET /foo/a+b+d我最喜欢的是REST语义不包含这个问题 ,因为它的简单性。 打破URI不透明,违反HATEOAS。 似乎打破资源(URI的唯一含义是识别一个资源)和表示之间的区别。 但这是值得商榷的,因为它与代表/widget/<id>资源的可视列表/widget/<id>一致,这是我从来没有遇到的问题。 松开我的约束,对GET /foo/a等做出响应,并让客户端对每个/foo组件的请求进行请求。 如果/foo有数百个组件,而客户端需要100个组件,那么开销就会增加,这可能会变成一场噩梦。 如果我想支持/foo的HTML表示,我必须使用Ajax,如果我只想要一个可以被抓取,由极简主义浏览器渲染的HTML页面,这是有问题的。 为了维护HATEOAS,它还需要指向其他表示中存在的那些“子资源”的链接,可能在/foo : {"a": {"url": "/foo/a", "content": "some text"}, …} GET /foo , Content-Type: […]

Google Play服务5.0.77

从6月25日起,两个使用广告的不相关的应用程序开始拥有这个NPE java.lang.NullPointerException at zo.a(SourceFile:172) at aeh.a(SourceFile:120) at afw.run(SourceFile:14) at afy.run(SourceFile:30) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856) 我认为这是有关谷歌播放服务更新。 有人能帮我解决这个问题吗? 只是为了确认问题与播放服务有关,我已经设法从一个名为AdWorker的主题中得知这个问题: thread at java.lang.Object.wait(Object.java) at java.lang.Thread.parkFor(Thread.java:1231) at sun.misc.Unsafe.park(Unsafe.java:323) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:813) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:973) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1282) at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:207) at zo.a(SourceFile:147) at zo.a(SourceFile:170) at aeh.a(SourceFile:120) at afw.run(SourceFile:14) at afy.run(SourceFile:30) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856) 这是不正确的地方…但是没有地方在哪里举报 7月1日的例外数量是现在的6倍,几乎是6月27日的3倍。 在Android的谷歌代码项目问题 […]

为C#寻找最新的Eclipse插件

我曾经使用eclipse来处理几乎所有我需要的语言。 我被要求开发一个用C#开发的工具,所以我想留在熟悉的环境中。 我find了改进的插件,但最后的版本是从2004年和.NET 1.1,这是相当古老的。 在eclipse中是否有一个新的插件在C#中编程,或者我不得不看看VS?

磁盘支持的STL容器类?

我喜欢使用STL开发algorithm,但是,在我的数据集对于堆太大的情况下,我有这个反复出现的问题。 我一直在寻找替代STL容器和algorithm的磁盘备份,也就是存储在磁盘而不是堆上的数据结构。 最近朋友指出我对stxxl 。 在我涉及之前…是否有其他的磁盘备份STL替代品,我应该考虑? 注意:我对持久性或embedded式数据库不感兴趣。 请不要提及boost :: serialization,POST ++,关系模板库,Berkeley DB,sqlite等。我知道这些项目,并在适合我的目的时使用它们。 更新:有几个人提到了内存映射文件,并使用自定义分配器,很好的build议顺便说一句,但我会指出他们在这里的讨论David Abrahambuild议磁盘备份容器需要自定义迭代器。 这意味着自定义分配器的方法是不可能的。

有没有办法自定义混帐的输出?

git log有一个很好的–format选项来指定输出的格式。 但git blame似乎并没有相当的,虽然blame默认输出是不太人性化。 我想看得更less。 例如,而不是: 5600cab7 js/sidebar/VehicleGrid.js (Rene Saarsoo 2009-10-08 18:55:24 +0000 127) if (x > y) { b5f1040c js/map/monitoring/VehicleGrid.js (Mihkel Muhkel 2010-05-31 07:20:13 +0000 128) return x; 我想拥有: 5600cab7 Rene Saarsoo (1 year ago) 127: if (x > y) { b5f1040c Mihkel Muhkel (5 months ago) 128: return x; 我觉得我可以写一个脚本来parsinggit blame –porcelain的输出,但是考虑到可怕的默认输出,我觉得有人在那里肯定已经做了些什么。 有任何想法吗? […]

InstallShield LE(使用Visual Studio 2012)完全无法检测依赖关系

我有一个噩梦试图获得一个简单的安装程序在InstallShield LE(与VS 2012一起发行)工作。 我可以解决各种各样的问题(比如我不能再做“重build所有”,而没有把所有东西搞乱 – 我只需要在开发过程中卸载InstallShield项目)。 但最重要的是,当我构build我的安装程序时,它包含各种DLL的错误版本(包括属于我的项目的一部分,以及像Entity Framework DLL这样的第三方DLL)。 做一个“干净的解决scheme”甚至没有解决我的解决scheme中的DLL的问题。 它是在我的机器上的某个地方(在某种编译器的临时目录中)find一个随机的版本,并坚持把它包括进去。 我最终通过在Windows资源pipe理器中进行search并删除它find的每个文件来解决这个问题,但是我担心下次我发布一个版本时,它仍然会select错误的文件。 另外,我需要在我的机器上同时安装.NET 4和.NET 4.5版本的entity framework,并且选错了我的安装程序。 我不能删除我不希望它包含的那个。 什么是绝对低劣的产品。 我可以 “升级”到完整版本,看看是否能够解决这些问题,但是我最近使用LE版本的经验让我再也不用使用他们的任何产品了。 有没有其他人有类似的问题? 你find解决scheme吗?

在初始拒绝后使用getUserMedia()重新获取权限

在被拒绝一次之后,我们如何使用getUserMedia()来请求摄像头/麦克风访问? 我正在使用getUserMedia访问用户的相机并将数据传输到canvas。 这一切工作正常。 在testing中,我曾遭到否认。 在Chrome和Firefox的这一点上,任何随后的getUserMedia()请求都会默认为拒绝状态。 我们显然不希望在被拒绝之后在每个页面加载请求摄像头/麦克风的权限,从而使我们的用户感到懊恼。 这已经足够地理定位api烦人了。 但是,必须有一种方法来再次请求它。 仅仅因为用户遭到拒绝,并不意味着他们想要一直拒绝摄像头访问。 我一直在阅读规范和search一下,但我没有find任何明确的问题。 编辑:进一步的研究,似乎在Chrome浏览器中击中拒绝将当前网站添加到阻止列表。 这可以通过chrome:// settings / content手动访问。 滚动到媒体。 pipe理例外情况,删除阻止的网站。 链接到Chrome://设置/内容不起作用(如果我们想添加一个有用的链接让人们重新启用权限)。 整个用于处理getUserMedia的权限的用户体验很糟糕。 =(

在Firefox中打印PDF

如何在Firefox中打印PDF? 此function适用于Chrome,但不适用于Firefox function print_pdf(url){ var id = 'iframe', html = '<iframe id="'+id+'" src="'+url+'" style="display:none"></iframe>'; $('#main').append(html); $('#'+id).load(function(){ document.getElementById(id).contentWindow.print(); } } 错误 Error: Permission denied to access property "print"

在HTTP URL的path部分中,斜杠(“/”)等同于编码的斜杠(“%2F”)

我有一个网站,不同的URL的path部分(而不是查询string)中的“/”和“%2F”。 根据RFC或现实世界,这是一件坏事吗? 我问,因为我一直使用我正在使用的Web框架(Ruby on Rails)以及下面的层(Passenger,Apache,例如,我必须为Apache启用“ALLOW_ENCODED_SLASHES”)时遇到一些小惊喜。 我现在倾向于彻底摆脱编码的斜杠,但是我不知道是否应该提交错误报告,在那里我看到涉及编码斜杠的奇怪行为。 至于为什么我首先有编码的斜线,基本上我有这样的路线: :controller/:foo/:bar 其中:foo类似于可以包含斜杠的path。 我认为最简单的事情就是只要URL转义foo所以斜杠被路由机制忽略。 现在我有疑问了,很明显,这个框架并不是真的支持这个,但根据RFC,这样做是错误的吗? 以下是我收集的一些信息: RFC 1738(URL): 当一个八位字节由一个字符表示并且被编码时,通常一个URL具有相同的解释。 但是,对于保留字符而言,这不是真的:对为特定scheme保留的字符进行编码可能会改变URL的语义。 RFC 2396(URI): 这些字符被称为“保留”,因为它们在URI组件中的使用仅限于其保留的用途。 如果URI组件的数据与保留目的冲突,那么冲突的数据必须在形成URI之前转义。 (在这里转义意味着除了编码保留字符之外的东西吗?) RFC 2616(HTTP / 1.1): 除“保留”和“不安全”集以外的字符(见RFC 2396 [42])等同于其“”HEX HEX“%”编码。 还有Rails的这个错误报告 ,他们似乎期望编码的斜线行为不同: 对,我期望不同的结果,因为他们指着不同的资源。 它正在寻找根目录中的文字文件“foo / bar”。 非转义版本正在寻找目录foo中的文件栏。 从RFC中可以清楚的看到,原始编码和未编码的字符是相同的,但是保留字符的故事是什么?

如何从增强现实开始?

我目前是计算机科学的本科生,明年我将进入我的最后一年。 增强现实是我发现的一个非常有趣的话题,但我不知道从哪里开始学习。 你从哪里开始学习这个主题,以及有哪些库可用?