我想提高返回调整大小图像的函数的性能。请求的图像大小不应有太大变化(取决于设备),因此以某种方式缓存结果是有意义的。
我当然可以将它存储在磁盘上,并检查调整后的图像是否存在,并确保如果原始图像被删除,调整后的版本太......
或者,我可以使用记忆功能。但是由于结果可能很大(我认为图像大约为 5 - 10 MB),将它们存储在内存中是没有意义的(几十 GB 的图像及其修改版本会很快填满内存)。
那么,有没有办法让记忆功能类似于常规 Clojure defmemo
,但由本地磁盘中的文件夹而不是内存支持?然后我可以使用一种ttl
策略来确保图像不会长时间不同步。
类似于crache,但由文件系统支持的东西?
在绑定内打印值的惯用方法是什么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)
这是一个进步,但仍然感觉很笨拙。执行此操作的正确方法是什么?
我像这样强制一个地图值:
(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"}}
吗?
我在那里看到对预先分配的JVM异常的引用: - http://www.oracle.com/technetwork/java/javase/relnotes-139183.html - http://dev.clojure.org/display/community/Project+创意+ 2016
但寻找我只看到有关丢失堆栈跟踪的信息.什么是JVM分配的异常?这似乎是一种优化.
它是如何工作的,它有什么权衡取舍?
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) 我正在为 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
来操纵结果,因此任何使用它的解决方案都完全没问题。
显然,graphQL突变是一个接一个地顺序执行的。
资源 :
在GraphQL中,突变按序列执行。否则,很难检测到错误,例如一次又一次地添加同一作者。
实施这样的突变完全取决于GraphQL服务器的实现。参考NodeJS的实现以及其他针对Python和Scala的社区实现。
如果我理解正确,这样做可以防止:
这个设计决定背后的原理是什么?还有其他与之不同的项目吗?
我开始使用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) clojure ×5
emacs ×2
asynchronous ×1
caching ×1
clojure.spec ×1
dashboard ×1
database ×1
elisp ×1
emacs-helm ×1
graphql ×1
java ×1
jvm ×1
jvm-hotspot ×1
kubectl ×1
kubernetes ×1
memoization ×1
node.js ×1
org-mode ×1
performance ×1
projectile ×1
python ×1
rethinkdb ×1
scala ×1
web ×1