小编nha*_*nha的帖子

Clojure - 在磁盘上记忆

我想提高返回调整大小图像的函数的性能。请求的图像大小不应有太大变化(取决于设备),因此以某种方式缓存结果是有意义的。

我当然可以将它存储在磁盘上,并检查调整后的图像是否存在,并确保如果原始图像被删除,调整后的版本太......

或者,我可以使用记忆功能。但是由于结果可能很大(我认为图像大约为 5 - 10 MB),将它们存储在内存中是没有意义的(几十 GB 的图像及其修改版本会很快填满内存)。

那么,有没有办法让记忆功能类似于常规 Clojure defmemo,但由本地磁盘中的文件夹而不是内存支持?然后我可以使用一种ttl策略来确保图像不会长时间不同步。

类似于crache,但由文件系统支持的东西?

caching clojure memoization

5
推荐指数
1
解决办法
1149
查看次数

Clojure 在 `let` 绑定中打印值

在绑定内打印值的惯用方法是什么let

当我开始使用 Clojure 进行开发时,我在 REPL 中编写代码,然后将其转换为简单的let表达式。作为一个初学者,我在这个(简单的)转换阶段经常犯错误。

(let [a (aFn ...)
       b (bFn ... a)]
   ;; error above
)
Run Code Online (Sandbox Code Playgroud)

所以我会把它改回类似的东西,基本上是内联的东西:

(println "a is"    (aFn ...))
(println "b is" (bFn ... (aFn ...)))
(let [a (aFn ...)
       b (bFn ... a)]
   ;; ...
)
Run Code Online (Sandbox Code Playgroud)

由于 Clojure 的出色性能(不变性、引用透明性......),它在大多数情况下都可以工作。

现在我做了一些事情:

(let [a (aFn ...)
       _ (println "a is" a)
       b (bFn ... a)
      _ (println "b is" b)]
   ;; ...
)
Run Code Online (Sandbox Code Playgroud)

这是一个进步,但仍然感觉很笨拙。执行此操作的正确方法是什么?

clojure

5
推荐指数
1
解决办法
1792
查看次数

在 Clojure 中构建 Web 仪表板是否可行?

我计划构建一个网络仪表板,我可以通过图形、表格等分析公司的财务记录......

我已经有了该软件,因此仪表板只会读取数据,而不会对其进行操作。

它会是这样的,但更简单。包含报告、图形、选择日期、间隔等的选项。 根特拉

但我在想,使用 Clojure 是否可行?还有 jQuery、CSS、HTML。

目前,我使用 Clojure 的 Luminus Web 框架,但我想知道在 Clojure 中是否值得这样做,或者是否有其他语言可以更好地做到这一点。

当然,我已经熟悉这门语言了,所以它是专业人士。但我也愿意接受建议。

dashboard clojure web

5
推荐指数
2
解决办法
2499
查看次数

Clojure spec强制嵌套地图值

我像这样强制一个地图值:

(require '[clojure.spec :as s])

(defn x-integer? [x]
  (cond
    (integer? x) x
    (string? x) (try
                  (Integer/parseInt x)
                  (catch Exception e
                    :clojure.spec/invalid))
    :else :clojure.spec/invalid))

(s/def ::port (s/conformer x-integer?))

(s/def ::config (s/keys :req [::port]))

(s/conform ::config {::port "12345"}) ;;=> #:my.ns{:port "12345"}
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何用以下地图做同样的事情:

(s/conform ::config {::nested-data {:port "12345"}}) ;;=> something like that maybe ? #:my.ns/nested-data{:port 12345}
Run Code Online (Sandbox Code Playgroud)

应该如何::config定义?而且,反而更好{::nested-data {::port "12345"}}吗?

clojure clojure.spec

5
推荐指数
1
解决办法
1125
查看次数

弹丸搜索只是项目的一部分

在使用 emacs Projectilehelm-projectile 时,我习惯于在整个项目中搜索文本。但是有没有办法只搜索项目的一部分?

就像是:

  • 仅在子文件夹内搜索
  • 在排除子文件夹的同时搜索

emacs projectile emacs-helm

5
推荐指数
2
解决办法
1657
查看次数

什么是jvm预分配例外?

我在那里看到对预先分配的JVM异常的引用: - http://www.oracle.com/technetwork/java/javase/relnotes-139183.html - http://dev.clojure.org/display/community/Project+创意+ 2016

但寻找我只看到有关丢失堆栈跟踪的信息.什么是JVM分配的异常?这似乎是一种优化.

它是如何工作的,它有什么权衡取舍?

java performance jvm jvm-hotspot

5
推荐指数
1
解决办法
1263
查看次数

kubectl 请输入用户名: 错误: EOF

Please enter Username: error: EOF运行命令时,我的 CI 进程开始出现错误kubectl。kubectl 版本与集群版本匹配,并且我可以使用 所示的相同配置从我的机器上正常运行相同的命令kubectl config view

这是日志:

+ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: REDACTED_FOR_QUESTION
  name: REDACTED_FOR_QUESTION
contexts:
- context:
    cluster: REDACTED_FOR_QUESTION
    user: REDACTED_FOR_QUESTION
  name: REDACTED_FOR_QUESTION
current-context: REDACTED_FOR_QUESTION
kind: Config
preferences: {}
users:
- name: REDACTED_FOR_QUESTION
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
++ echo 'Starting Kube proxy - port is 8001'
++ set +e
++ echo 'using kubectl'
++ sleep 1
++ kubectl proxy --port=8001
error: …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubectl

5
推荐指数
1
解决办法
9607
查看次数

Clojure RethinkDB 订阅 changefeed

我正在为 RethinkDB使用Clojure 驱动程序。我想从查询中获取更改提要。这是我到目前为止所拥有的:

(defn change-feed [conn]
  (loop [changes (future
                   (-> (r/db "mydb")
                       (r/table "mytable")
                       r/changes
                       (r/run conn)))]
    (println "date : " ((comp :name :newval) first @changes)) ;;prints nil
    (recur (rest changes))))
Run Code Online (Sandbox Code Playgroud)

它在调用时阻塞在我的 REPL 中(这是正常的)。然后我使用 RethinkDB 接口添加数据。它打印nil,我收到以下错误:

IllegalArgumentException Don't know how to create ISeq from: clojure.core$future_call$reify__6736  clojure.lang.RT.seqFrom (RT.java:528)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么 ?我希望能够:

  • 从这个未来拿走物品
  • 还知道我一次可以拿多少物品(如果有几个在等)

注意:我打算最终使用manifold来操纵结果,因此任何使用它的解决方案都完全没问题。

asynchronous clojure rethinkdb

4
推荐指数
1
解决办法
330
查看次数

graphQL多重突变交易

显然,graphQL突变是一个接一个地顺序执行的。

资源 :

在GraphQL中,突变按序列执行。否则,很难检测到错误,例如一次又一次地添加同一作者。

实施这样的突变完全取决于GraphQL服务器的实现。参考NodeJS的实现以及其他针对Python和Scala的社区实现。

如果我理解正确,这样做可以防止:

  • 并行执行请求
  • 在多个请求上使用交易

这个设计决定背后的原理是什么?还有其他与之不同的项目吗?

python database scala node.js graphql

4
推荐指数
1
解决办法
1933
查看次数

Emacs - 组织模式插入复选框

我开始使用org-mode,组织......一切都好.我正在关注手册.

是否在组织模式下绑定项目和复选框?IE浏览器.这样的事情:

 * TODO Organize party [2/4]
   - [-] call people [1/3]
     - [ ] Peter
     - [X] Sarah
     - [ ] Sam
   - [X] order food
   - [ ] think about what music to play
   - [X] talk to the neighbors [CURSOR HERE]
Run Code Online (Sandbox Code Playgroud)

现在,如果我这样做M-x insert-checkbox-item(或类似的,我还没有找到命令):

 * TODO Organize party [2/4]
   - [-] call people [1/3]
     - [ ] Peter
     - [X] Sarah
     - [ ] Sam
   - [X] order food
   - [ ] …
Run Code Online (Sandbox Code Playgroud)

emacs elisp org-mode

4
推荐指数
3
解决办法
1953
查看次数