我只是想知道为什么没有i++增加一个数字.据我所知,Ruby或Python等语言不支持它,因为它们是动态类型的.所以显然我们不能写代码,i++因为可能i是字符串或其他东西.但Scala是静态类型的 - 编译器绝对可以推断出,如果合法或不合法地放置++变量.
那么,为什么i++Scala 中不存在?
假设我们需要一个数字列表,有两个定义:
(def vector1 [1 2 3])
(def list2 '(1 2 3))
那么主要的区别是什么?
我想得到一个数组的长度int array[] = {1, 2, 3, 4}.我曾经sizeof这样做过.
int length(int array[])
{
     return sizeof(array) / sizeof(int);
}
int main()
{
    int array[] = {1, 2, 3, 4};
    printf("%d\n", length(array)); // print 1
    printf("%d\n", sizeof(array) / sizeof(int)); // print 4
}
那么,为什么sizeof(array)in函数length返回指针大小array?但在功能方面main,它确实有效.
而且,我应该如何修改length函数以获得数组的长度?
编写测试友好的Python代码是否有任何指导原则?
我相信什么:
还有其他建议吗?
我正在开发一个应用程序,允许用户将他们的驱动器文件分享给朋友.但是,谷歌应用帐户存在问题,例如someone@somadomain.com,哪些文件无法与不在该域下的人共享.虽然管理员可以更改共享政策somedomain.com,但我不希望人们将我的应用与Google Apps帐户一起使用.
我还查看了这篇文章:如何确定该帐户是否为Google应用帐户?.但我不同意检查域以检测帐户类型的想法.因为人们可以使用任何电子邮件地址注册Google帐户.我刚用Hotmail注册了一个,someone@hotmail.com在共享文件时没有域名限制.
有人能帮忙吗?谢谢!
我有一个拥有Facebook权限的数组,以及用户应该给出的权限数组:
window.FB.api('/me/permissions', function(perm){                     
    if(perm){
       var given_permissions =  _.keys(perm['data'][0];
       var needed_permissions = ["publish_stream", "email"];
       //now check if given permissions contains needed permissions
    }
}
现在我想比较,如果所有的needed_permissions都在given_permissions,在下划线精明的方式(不包括循环两个数组我和比较值).我看到了一个_.include方法,但这会将数组与值进行比较.如果所有权限都可用,我想返回true,否则返回false.如果可能的话,我正在寻找一个不错的单线电话.
原因是,FB.login即使用户选择取消扩展权限,也会返回true.所以我需要仔细检查一下.
(conj (drop-last "abcde") (last "abcde"))
回报 (\e \a \b \c \d)
我很困惑.在文档中conj,我注意到了
"添加"可能发生在不同的"地方",具体取决于具体类型.
这是否意味着,LazySeq添加新项目的地方是头?我怎样才能得到(\a \b \c \d \e)结果?
我有一个Django应用程序,最近我需要推出测试版.我希望保持当前正在运行的应用程序保持不变,并在Nginx的帮助下将所有请求以"/ beta"重定向到beta应用程序.这是我的conf
    location / {
    proxy_pass_header Server;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
    proxy_connect_timeout 10;
    proxy_read_timeout 360;
    proxy_pass http://localhost:8000/;
}
location /beta/ {
    rewrite ^/beta/(.*)$ /$1 break;
    proxy_pass_header Server;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
    proxy_connect_timeout 10;
    proxy_read_timeout 360;
    proxy_pass http://localhost:8001/;
}
这有效,但是有一个问题,当应用程序返回301响应时,主要是当用户需要登录以访问某些资源时,URL就变成了旧的.
例如,如果/events需要登录.
http://example.com/beta/events - > http://example.com/login?next=/events/
如何在不更改应用程序代码的情况下解决此问题?(Nginx解决方案?)
我已经附加了一个EBS块并将其安装在我的EC2实例的"/ data"上,该实例运行Ubuntu 12.04.有一个运行正常的备份脚本,但在我将脚本移动到"/ data/backup"文件夹后,它无法执行,错误:
-bash: ./db_backup.sh: Permission denied
许可是:
-rwxr-xr-x 1 ubuntu ubuntu 2.3K Nov 22 03:25 db_backup.sh
如果我用"sudo"运行它,没有错误也没有输出,但应该有一些东西回显到控制台.
我也尝试使用"strace"来执行,但得到了:
execve("./db_backup.sh", ["./db_backup.sh"], [/* 19 vars */]) = -1 EACCES (Permission   denied)
dup(2)                                  = 3
fcntl(3, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =     0x7f354f010000
lseek(3, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: Permission denied\n", 32strace: exec: Permission denied
) = 32
close(3)                                = 0
munmap(0x7f354f010000, 4096) …我写了一段代码来计算一行的主要哈希(#)字符,这很像一个标题行 Markdown
### Line one -> return 3 ######## Line two -> return 6 (Only care about the first 6 characters.
版本1
(defn
  count-leading-hash
  [line]
  (let [cnt (count (take-while #(= % \#) line))]
    (if (> cnt 6) 6 cnt)))
版本2
(defn
  count-leading-hash
  [line]
  (loop [cnt 0]
    (if (and (= (.charAt line cnt) \#) (< cnt 6))
      (recur (inc cnt))
      cnt)))
我曾经time测量过这两种实现方式,发现基于的第一个版本take-while比版本2快2倍."###### Line one"作为输入,版本1需要0.09毫秒,版本2需要大约0.19毫秒.
问题1.是否会recur减慢第二次实施的速度?
问题2.版本1更接近函数式编程范式,是吗?
问题3.您更喜欢哪一个?为什么?(欢迎您编写自己的实现.)
可能重复:
为什么clojure的向量函数定义如此冗长?
为了澄清我的问题,让我们以定义list*为例.
(defn list*
  "Creates a new list containing the items prepended to the rest, the
  last of which will be treated as a sequence."
  {:added "1.0"
   :static true}
  ([args] (seq args))
  ([a args] (cons a args))
  ([a b args] (cons a (cons b args)))
  ([a b c args] (cons a (cons b (cons c args))))
  ([a b c d & more]
    (cons a (cons b (cons c (cons d (spread more)))))))
我的问题是,为什么不这样定义list*:
(defn list* …clojure ×4
amazon-ec2 ×1
bash ×1
c ×1
django ×1
google-docs ×1
javascript ×1
linux ×1
nginx ×1
python ×1
scala ×1
ubuntu ×1
unit-testing ×1