Size: a a a

Clojure — русскоговорящее сообщество

2020 October 09

KO

Konstantin Osipov in Clojure — русскоговорящее сообщество
Kostyantin Randomname
Clojure for brave and true
спасибо, книжка выглядит как что-то что гораздо легче заходит чем документация.
источник

KO

Konstantin Osipov in Clojure — русскоговорящее сообщество
Ещё можно тупой вопрос, если слишком много на сегодня - скажите пожалуйста. Вот у меня есть функция (defn dns-resolve
 "Gets the address of a hostname"
 [hostname]
 (.getHostAddress (InetAddress/getByName (name hostname))))
Как clojure понимает что эту функцию нельзя кэшировать? Ну то есть что каждый раз надо заново вычислять её, а не один раз зарезолвить в константу? Как clojure оптимизирует функции которые просто допустим манипулируют константами в рантайме?
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
memoize
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Konstantin Osipov
Ещё можно тупой вопрос, если слишком много на сегодня - скажите пожалуйста. Вот у меня есть функция (defn dns-resolve
 "Gets the address of a hostname"
 [hostname]
 (.getHostAddress (InetAddress/getByName (name hostname))))
Как clojure понимает что эту функцию нельзя кэшировать? Ну то есть что каждый раз надо заново вычислять её, а не один раз зарезолвить в константу? Как clojure оптимизирует функции которые просто допустим манипулируют константами в рантайме?
Мне кажется, она не кеширует вызовы, если ты сам не напишешь это кеширование. В clojure.core есть функция memoize для кеширования, если не важны детали
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
в коре кстати еще есть либа кеш
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
источник

KO

Konstantin Osipov in Clojure — русскоговорящее сообщество
о. понял. спасибо. Я просто читаю чужой код, который написан в функциональном стиле, и вижу что он дёргает резолвер на каждое обращение к атрибуту. И немного офигеваю. Значит код тупо криво написан.
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Konstantin Osipov
Ещё можно тупой вопрос, если слишком много на сегодня - скажите пожалуйста. Вот у меня есть функция (defn dns-resolve
 "Gets the address of a hostname"
 [hostname]
 (.getHostAddress (InetAddress/getByName (name hostname))))
Как clojure понимает что эту функцию нельзя кэшировать? Ну то есть что каждый раз надо заново вычислять её, а не один раз зарезолвить в константу? Как clojure оптимизирует функции которые просто допустим манипулируют константами в рантайме?
кложа не хаскель, тут никаких хитрых оптимизаций нет
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
необязательно криво. кеш вносит свои трудности, например, как и когда его инвалидировать
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
или может случиться так, что второй тест читает данные из кеша, которые положил первый тест, и это трудно разруливать
источник

AC

Alexey Cheremisin in Clojure — русскоговорящее сообщество
у меня тут что-то pedestal c cider  дружить не хочет.
после вызова  (http/start (create-server)) , cider (emacs) перестает отвечать, хотя в самом repl все хорошо.
или может быть  нужно в thread это дело оборачивать?
источник

a

alex in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Работает! Спасибо
так коннекция != транзакция
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
alex
так коннекция != транзакция
Да, я как раз заметил, но не успел написать..
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
упс, прочитал вопрос жопой, сорян
источник

a

alex in Clojure — русскоговорящее сообщество
если хочется железебетонно узнать - то я смотрю ща в драйвере мускуля внутрях зарыто (статус транзакции) который по битовой маске сверяется
источник

a

alex in Clojure — русскоговорящее сообщество
в джавах всяких - тред локальные переменные юзают спринги с хибернатами - для статуса транзакции
источник

a

alex in Clojure — русскоговорящее сообщество
можно попытаться смотреть по тому какой autocommit флаг стоит
источник

a

alex in Clojure — русскоговорящее сообщество
если никто правда между делом BEGIN не пошлет )
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
https://docs.oracle.com/javase/8/docs/api/java/sql/Connection.html#setReadOnly-boolean-
(let [read-only (.isReadOnly t-con)] (try (.setReadOnly read-only) (catch Exception _ (prn “in transaction”)))
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
:troll:
источник