我有一个小代码库,我正在用YARD记录.当我运行yardoc命令时,它告诉我:
Files: 40
Modules: 14 ( 0 undocumented)
Classes: 39 ( 0 undocumented)
Constants: 21 ( 4 undocumented)
Methods: 239 ( 31 undocumented)
88.82% documented
Run Code Online (Sandbox Code Playgroud)
我希望它只是列出未记录的项目,而不是浏览我的所有代码来查找未记录的常量和方法.有人知道怎么做吗?
我在Rails中有一个"帐户"模型,在数据库中有相应的"帐户"表.如果我擦除数据库并重新开始,'account_id'字段将始终从1开始并从那里开始计数.我想更改起始编号,这样,当在新数据库中创建第一个帐户时,'account_id'就是1000.有没有办法在Rails中执行此操作,或者我是否需要专门的数据库独立的SQL代码?
为了便于说明,这里是我的"帐户"表的简化版本:
create_table "accounts", :force => true do |t|
t.string "email", :null => false
t.string "crypted_password", :null => false
t.string "name", :null => false
t.boolean "email_verified", :default => false
end
Run Code Online (Sandbox Code Playgroud) 我的问题是,如果已经读取了Ring请求,我怎么能惯用它?
这是背景.我正在为Ring应用程序编写错误处理程序.发生错误时,我想记录错误,包括我可能需要重现的所有相关信息并修复错误.一个重要的信息是请求的主体.但是,:body值的有状态(因为它是一种java.io.InputStream对象)会导致问题.
具体来说,会发生一些中间件(ring.middleware.json/wrap-json-body在我的情况下是中间件)slurp在body InputStream对象上执行a ,这会更改对象的内部状态,以便将来调用slurp返回空字符串.因此,从请求图中有效地丢失了[内容].
我能想到的唯一解决方案是InputStream在可以读取正文之前抢先复制正文对象,以防我以后可能需要它.我不喜欢这种方法,因为在以后可能出现错误的情况下,对每个请求做一些工作似乎很笨拙.有更好的方法吗?
我在API文档中读到*file*变量的值应为"正在评估的文件的路径,作为字符串".但是,在某些情况下,此功能似乎已被破坏.
当我使用文件执行时lein exec,事情按预期工作:
$ cat test.clj
(println *file*)
$ lein exec test.clj
/path/to/test.clj
Run Code Online (Sandbox Code Playgroud)
然而,当我运行包含调用的测试时(println *file*),NO_SOURCE_PATH将打印而不是包含该行的文件.
为什么我会看到此行为,如何可靠地访问正在评估的文件的路径和文件名?
在这个SO线程中,我了解到保留seq对大型集合的引用将阻止整个集合被垃圾收集.
首先,该线程来自2009年.在"现代"Clojure(v1.4.0或v1.5.0)中,这仍然是正确的吗?
其次,这个问题是否也适用于懒惰序列?例如,是否(def s (drop 999 (seq (range 1000))))允许垃圾收集器退出999序列的第一个元素?
最后,对于大型集合,是否有一个解决此问题的好方法?换句话说,如果我有一个1000万个元素的向量,我可以消耗这个向量,以便消耗的部分可以被垃圾收集吗?如果我有一个包含1000万个元素的hashmap呢?
我问的原因是我在相当大的数据集上运行,并且我必须更加小心,不要保留对对象的引用,以便我不需要的对象可以被垃圾收集.事实上,我java.lang.OutOfMemoryError: GC overhead limit exceeded在某些情况下遇到了错误.
我试图确保git的子树在我合并到我的项目之前对我有用.将子树更改推送到上游存储库时遇到问题.
设置是我有两个repos,sub并且main,main包括subrepo作为subtree.
然后我做以下事情:
sub直接更新仓库(即外部main).sub从mainrepo中更新repo.sub(使用git subtree split)到一个单独的分支,然后我签出.sub回购.当然,这种推动被拒绝,因为它将失去直接更新sub.sub回购中提取新的更改.sub回购.这一次,它应该工作,但事实并非如此.我写了一个封装这个问题的脚本.我正在使用git版本1.8.2.1并subtree启用了模块.这是脚本:
#!/bin/bash
echo -n "Wiping old repositories..."
rm -rf main sub sub-home
echo "done"
echo -n "Initializing main and sub repositories..."
mkdir sub-home
( cd sub-home ; git init -q --bare )
git clone sub-home sub > /dev/null …Run Code Online (Sandbox Code Playgroud) Clojure的for宏接受两个参数:一系列绑定表单和一个正文表达式.因此,如果我想在循环中做多个事情,我必须在do块中包含多个表达式以使它们成为单个表达式.
相比:
(doseq [a (range 3)]
(prn 'a a)
(inc a))
Run Code Online (Sandbox Code Playgroud)
至:
(for [a (range 3)]
(prn 'a a)
(inc a))
Run Code Online (Sandbox Code Playgroud)
在doseq按预期工作.在for抱怨:
clojure.lang.ArityException: Wrong number of args (3) passed to: core/for
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么这不起作用?为什么没有Clojure的设计师(S)允许在多个"身体"表达式循环,就像他们的确在doseq和when?这不像是有任何语义模糊,对吧?
(问题来源:Fernando Abrao.)
我听说Clojure中传感器的性能优势,但我不知道如何使用它们.
假设我有一个qos/device-qos-range返回映射序列的函数,其中一些包含小数:samplevalue,如下所示:
[
{ :samplevalue 1.3, ... },
{ :othervalue -27.7, ... },
{ :samplevalue 7.5, ... },
{ :samplevalue 1.9, ... },
]
Run Code Online (Sandbox Code Playgroud)
我想看看有多少:samplevalues落入每个整数bin,如下所示:
(frequencies
(reduce #(if (not (nil? (:samplevalue %2)))
(conj %1 (.intValue (:samplevalue %2))))
[]
(qos/device-qos-range origem device qos alvo inicio fim)))
;; => {1 2, 7 1}
Run Code Online (Sandbox Code Playgroud)
如何将其转换为带有传感器的快速版本,以消除中间数据结构(例如返回的数据结构reduce)?可以利用多个内核进行并行处理的代码的加分点.
最近,Chrome 更改了是否将 cookie 附加到跨域请求的策略。现在,cookie 不会附加到跨域请求,除非:
SameSitecookie的属性为Lax或None并且该请求是由用户发起的动作,或SameSitecookie的属性None和Securecookie的属性true,这意味着跨域请求必须使用https方案。(上面没有错,只是稍微简化了。这里有一篇更彻底的文章。)
在我的开发环境中,我使用一个工具来编译我的开发语言并将更改热加载到我的浏览器选项卡中。这个工具在自己的端口上提供前端代码,后端由一个单独的进程在一个单独的端口上提供服务,所以我们正在处理从浏览器到后端的跨域请求。当然,前端和后端都由localhostscheme 提供服务http。前端应用程序发出的许多请求不是由用户操作发起的,但仍需要 cookie 以进行身份验证。
因此,任何需要 cookie 的东西都无法在我的开发环境中运行。(是的,花了很长时间才弄清楚那个……)
我的问题是:如何SameSite以一种简单的方式绕过、解决或禁用我的开发环境的这些cookie 安全限制,而不会在我浏览其他站点时降低我的安全性?
例如,如果有一种方法可以添加localhost到我的浏览器中的来源白名单,SameSite=None即使没有Secure=true属性也允许cookie ,那就太好了。稍微不那么好,但仍然可以接受,这将是一种包装或代理我的http://localhost:<port>服务的简单方法,以便可以通过该https方案访问它们。或者也许还有另一种使用一些晦涩的 cookie 魔法的方法。
clojure ×5
c ×1
cookies ×1
cross-domain ×1
git ×1
git-push ×1
git-subtree ×1
memory ×1
performance ×1
pthreads ×1
push ×1
ring ×1
ruby ×1
security ×1
transducer ×1
valgrind ×1
yard ×1