小编Ase*_*ore的帖子

OS X上的`date`命令没有ISO 8601` -I`选项?

在Bash脚本中,我想以ISO 8601格式(最好是UTC)打印当前日期时间,看起来这应该像下面这样简单date -I:

http://ss64.com/bash/date.html

但这似乎不适用于我的Mac:

$ date -I
date: illegal option -- I
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
Run Code Online (Sandbox Code Playgroud)

事实上,man date并未列出此选项.

任何人都知道这是为什么,或任何其他(简单)方式让我打印ISO 8601格式的日期?谢谢!

macos bash iso8601

178
推荐指数
6
解决办法
8万
查看次数

如何以RESTful方式公开验证API?

我通常是RESTful API设计的粉丝,但我不确定如何将REST原则应用于验证API.

假设我们有一个用于查询和更新用户个人资料信息(名称,电子邮件,用户名,密码)的API.我们认为公开的有用功能将是验证,例如查询给定用户名是否有效且可用.

在这种情况下有哪些资源?应使用哪些HTTP状态代码和/或标头?

首先,我有GET /profile/validate一个查询字符串参数并返回204400有效或无效.但validate显然是动词,而不是名词.

api rest http

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

有没有可以编译成Bash的语言?

我既喜欢又讨厌写Bash.我喜欢它是如此简化操作文件和处理进程(我同意这个流行的问题,它在这方面比Python,Ruby等更好),但我讨厌语法,特别是在条件,循环等方面.

(这是主观的,但我发现它既令人困惑又烦人.例如,$var在阅读时,但var在写作时;如果周围有空格则静默写入; =使用正则表达式时ifs中的双括号;有时双分号和其他单分号;等等)

作为编写JS的CoffeeScript的忠实粉丝,我一直在想:是否有任何语言具有Python/Ruby/CoffeeScript等语言的美学/语法,但是编译和运行为Bash而不是其他运行时之一?

例如,我希望能够用更简单的语法编写Bash - Bash:

$AGGREGATE_FILENAME = 'allfiles.txt'

if not exists $AGGREGATE_FILENAME
    touch $AGGREGATE_FILENAME

for $file in files/*
    cat $file >> $AGGREGATE_FILENAME

switch $1
    case 'test'
        run-tests
        echo 'Tests finished!'
    case 'deploy'
        echo 'Packaging...'
        mv foo bar/
        deploy-bar
Run Code Online (Sandbox Code Playgroud)

这是一个超级人为的例子,语法是一个稻草人(主要来自CoffeeScript,但保留了一流命令的基本Bash概念,与变量分开,松散打字).

无论如何,只是一个问题和思考的食物.我很喜欢到能写我的剧本比猛砸东西更好.=)谢谢!

bash shell scripting coffeescript

54
推荐指数
6
解决办法
6974
查看次数

如何防止任意客户端应用程序使用您的匿名Web API?

如果已经被要求和回答,请道歉; 我环顾了一堆,但还没找到我正在问的问题.

-

  1. 假设我在http://example.com/上的网络应用程序使用http://api.example.com/上的私有和未记录的Web API 来获取数据,例如通过XHR或JSONP.

  2. 另外,假定这个Web应用程序是匿名的-它并没有要求用户登录.

  3. 由于客户端和服务器之间存在通信,任何人都可以打开Fiddler等来查看确切的请求和响应,更不用说检查客户端JS代码了.

在这种情况下,如何阻止某人在非Web客户端应用中使用您的API ?例如iPhone应用程序或服务器端.

根据我的理解,第2点删除了类似OAuth的选项,第3点删除了例如API密钥甚至SSL的选项.

我已经考虑过在第一次加载时注入页面的基于时间的令牌或秘密盐等内容,但iPhone应用程序可能很容易在发出API请求之前秘密加载您的网页.

那么除了简单的混淆之外还有什么方法 - 通过默默无闻的安全性?

-

如果所有这些都过于抽象,这里有一个简单的例子:

Google.com通过一些私有且未记录的API获取其自动完成数据 - 但在网络上打开.什么阻止我在我的iPhone应用程序中使用它?

security api web-applications

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

Git(Hub)如何处理来自短SHA的可能冲突?

Git和GitHub都显示SHAs的短版本 - 只是前7个字符而不是全部40个 - 并且Git和GitHub都支持将这些简短的SHA作为参数.

例如 git show 962a9e8

例如https://github.com/joyent/node/commit/962a9e8

鉴于可能性空间现在降低了几个数量级,"仅" 2.68亿,Git和GitHub如何防止碰撞?他们如何处理它们?

git cryptography github sha

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

有没有简单的方法来清除SVG元素的内容?

在HTML中,我可以<div>使用此命令清除元素:

div.innerHTML = "";
Run Code Online (Sandbox Code Playgroud)

如果我有<svg>元素,是否有等价物?我找不到一个innerHTML也不innerXML是甚至innerSVG方法.

我知道SVG DOM是XML DOM的超集,所以我知道我可以这样做:

while (svg.lastChild) {
    svg.removeChild(svg.lastChild);
}
Run Code Online (Sandbox Code Playgroud)

但这既乏味又缓慢.是否有更快或更简单的方法来清除SVG元素?

javascript xml svg dom

51
推荐指数
4
解决办法
6万
查看次数

Neo4j:标签与索引属性?

假设你是Twitter,并且:

  • 你有(:User)(:Tweet)节点;
  • 推文可以被标记; 和
  • 您想查询当前正在等待审核的已标记推文列表.

您可以为这些推文添加标签,例如:AwaitingModeration,添加和索引属性,例如isAwaitingModeration = true|false.

一种选择本质上比另一种更好吗?

我知道最好的答案可能是尝试加载测试两个:),但Neo4j的实现POV有什么能使一个选项更健壮或适合这种查询吗?

这取决于任何特定时刻这种状态的推文数量吗?如果它在10s与1000s之间,那会有所作为吗?

我的印象是标签更适合大量节点,而索引属性对于较小的卷(理想情况下,唯一节点)更好,但我不确定这是否真的如此.

谢谢!

neo4j cypher

21
推荐指数
1
解决办法
2757
查看次数

如何接受以反斜杠结尾的命令行参数

这是一个简单的Python应用程序,只需打印传入的命令行参数:

import sys
if __name__ == "__main__":
    print "Arguments:"
    for i in range(len(sys.argv)):
        print "[%s] = %s" % (i, sys.argv[i])
Run Code Online (Sandbox Code Playgroud)

以下是一些示例运行:

python args.py hello world
Arguments:
[0] = args.py
[1] = hello
[2] = world

python args.py "hello world"
Arguments:
[0] = args.py
[1] = hello world

python args.py "hello\world"
Arguments:
[0] = args.py
[1] = hello\world
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是现在当我用反斜杠结束任何争论时,Python就会扼杀它:

python args.py "hello\world\"
Arguments:
[0] = args.py
[1] = hello\world"

python args.py "hello\" world "any cpu"
Arguments:
[0] = args.py …
Run Code Online (Sandbox Code Playgroud)

shell command-line

15
推荐指数
3
解决办法
8329
查看次数

哪个HTTP重定向状态代码最适合此REST API方案?

我正在开发一个REST API.关键对象("名词")是"项目",每个项目都有唯一的ID.例如,获取ID为foo的项目的信息:

GET http://api.example.com/v1/item/foo

可以创建新项目,但客户端无法选择ID.相反,客户端发送一些表示该项目的信息.所以要创建一个新项目:

POST http://api.example.com/v1/item/
hello=world&hokey=pokey

使用该命令,服务器检查我们是否已有信息项hello=world&hokey=pokey.所以这里有两种情况.

案例1:该项目不存在; 它被创造了.这种情况很容易.

201 Created
Location: http://api.example.com/v1/item/bar

案例2:该项目已存在.这是我正在努力的地方......不确定什么是最好的重定向代码.

301 Moved Permanently302 Found303 See Other307 Temporary Redirect Location: http://api.example.com/v1/item/foo

我研究过维基百科的描述RFC 2616,但这些都不是完美的.以下是我在这种情况下寻找的具体特征:

重定向是永久性的,因为ID永远不会改变.因此,为了提高效率,客户端可以而且应该直接向ID端点发出所有未来请求.这表明301,因为其他三个是临时的.

重定向应该使用GET,即使此请求是POST.这表明303,因为所有其他技术上都应该重新使用POST方法.实际上,浏览器将使用GET for 301和302,但这是一个REST API,而不是浏览器中常规用户使用的网站.

它应该广泛使用并且易于使用.具体地,303是HTTP/1.1而301和302是HTTP/1.0.我不确定这是多少问题.

在这一点上,我倾向于303只是为了在语义上正确(使用GET,不要重新POST),只是在"临时"部分吸收它.但我不确定302是否会更好,因为在实践中它与303相同,但不需要HTTP/1.1.但如果我走下那条线,我想知道301是否因为同样的原因加上"永久"部分更好.

赞赏的想法!


编辑:让我试着用一个更具体的例子来更好地解释这个"获取或创建"操作的语义:URL缩短.无论如何,这实际上更接近我的应用程序.

对于URL缩短器,到目前为止最常见的操作是按ID检索.例如,对于http://bit.ly/4Agih5,bit.ly接收ID为4Agih5,并且必须将用户重定向到其对应的URL.

bit.ly已经有了一个API,但它不是真正的RESTful.为了举例,让我构建一个更RESTful的API.例如,查询ID可能会返回有关它的各种信息(例如分析):

GET http://api.bit.ly/item/4Agih5

现在,如果我想提交一个新的URL到bit.ly来缩短,我不知道我的URL的ID,所以我不能使用PUT.我会改用POST.

POST http://api.bit.ly/item/
url=http://stackoverflow.com/ (但编码)

如果bit.ly之前没有看过这个URL,它会为它创建一个新ID,并通过201 Created重定向到新ID.但是,如果它已经看到了该URL,它仍然会重定向我而不进行更改.这样,我可以点击该重定向位置以获取缩短的URL上的信息/元数据.

就像这个URL缩短的例子一样,在我的应用程序中,碰撞并不重要.一个URL映射到一个ID,就是这样.因此,URL之前是否缩短并不重要; 无论哪种方式,将客户端指向它的ID都是有意义的,无论是否需要首先创建ID.

所以我可能不会改变这种方法; 我只是问它最好的重定向方法.谢谢!

api rest redirect http bit.ly

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

Safari的用户代理:要信任哪个WebKit版本?

我试图不仅提取浏览器及其版本号,还提取渲染引擎及其常用用户代理字符串的版本号.大多数浏览器报告这很好,例如:

  • "Mozilla/4.0(兼容; MSIE 8.0; Windows NT 6.0; Trident/4.0)"

  • "Mozilla/5.0(Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12)Gecko/2009070611 Firefox/3.5.12"

Safari还会报告WebKit版本号,但它似乎会报告两次.这是我自己的UA:

  • "Mozilla/5.0(Windows; U; Windows NT 6.1; en-US)AppleWebKit/531.9(KHTML,与Gecko一样)Version/4.0.3 Safari/531.9.1 "

在这种情况下,似乎一个比另一个更详细.

但是当我查看Safari UA字符串的数据库时,例如useragentstring.com,这两个版本通常完全不同.

  • "Mozilla的/ 5.0(窗口; U; Windows NT的6.1; EN-US)为AppleWebKit/532+(KHTML,例如Gecko)版本/ 4.0.2 Safari浏览器/ 530.19.1 "

  • "Mozilla/5.0(Windows; U; Windows NT 5.1; cs-CZ)AppleWebKit/525.28.3(KHTML,与Gecko一样)Version/3.2.3 Safari/525.29 "

  • "Mozilla/5.0(Windows; U; Windows NT 5.1; en-US)AppleWebKit/530.19.2(KHTML,类似Gecko)Version/4.0.2 Safari/530.19.1 "

  • "Mozilla/5.0(Macintosh; U; Intel Mac …

safari user-agent webkit

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