This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-11-14
Channels
- # beginners (33)
- # boot (38)
- # clara (21)
- # cljs-dev (1)
- # cljsjs (2)
- # cljsrn (12)
- # clojure (230)
- # clojure-argentina (1)
- # clojure-brasil (3)
- # clojure-dusseldorf (4)
- # clojure-france (9)
- # clojure-italy (1)
- # clojure-russia (123)
- # clojure-spec (46)
- # clojure-turkiye (1)
- # clojure-uk (60)
- # clojurescript (83)
- # core-async (6)
- # cursive (10)
- # datascript (19)
- # datomic (28)
- # defnpodcast (1)
- # emacs (7)
- # figwheel (7)
- # fulcro (29)
- # leiningen (29)
- # lumo (9)
- # off-topic (14)
- # om (1)
- # onyx (25)
- # pedestal (1)
- # protorepl (3)
- # re-frame (10)
- # reagent (41)
- # ring-swagger (11)
- # shadow-cljs (10)
- # testing (5)
- # unrepl (3)
- # vim (3)
Всем привет! Некоторое время назад наткнулся на канал Timothy Baldridge на ютубе с туториалами
https://www.youtube.com/channel/UC6yONKYeoE2P3bsahDtsimg/videos
Заинтересовался, но стоит денег 💸
Решил потратиться, купил, посмотрел, про core.logic
понравилось, и про transduce
Но ситуация с тем, что и эти видео платные, плюс, например, lambdaisland
тоже работает по подписке — меня очень печалит. И так в кложу неофиты не приходят, так тут еще и туториалы платные, ужс какой-то.
В тредике ссылка на Я.Диск, со всеми видео с канала, кому интересно, пользуйтесь!
на youtube есть 2 недели триала, или вроде того ну и как бы человек старался - можно поддержать
Ну кто хочет, пусть поддерживает. А кто не хочет -- пожалуйста, смотрите.
В тему видео курсов, есть еще такой ресурс: https://purelyfunctional.tv/courses/understanding-re-frame/
Вот я не пойму, зачем распространять. Ты же нарушаешь соглашение. Тебя же никто не просил об этом. И деньги ты все равно не вернешь.
Странно, когда за курсы берут деньги в месяц. Дополнительные поборы тугодумов и занятых? 🙂
а есть какой-нибудь приличный способ делать что-то вроде такого?
(with-conn
(fn [conn]
(foo conn))
может быть как-то так?
(with with-conn conn
(foo conn))
Названия тут страшненькие, но не суть.
Понятно, что решается простым макросом, может быть есть что-то общепринятое?изначально я хочу делать после тестов rollback и в clojure.jdbc не получается сделать декоратор над datasource по этому пробрасывается функция with-conn
ну и бывает желание сделать что-то вроде руби блоков но тут уже руби головного мозга)
(defmacro with-trx-test [& body]
"Like with-trx, but rolls back the top-level transaction."
`(conman/with-transaction [*db*]
(jdbc/db-set-rollback-only! *db*)
~@body))
а тут есть https://clojure.github.io/java.jdbc/#clojure.java.jdbc/db-set-rollback-only!
конечно, ты можешь написать макрос, который делает (let)
для какого-то символа, и тогда все тело внутри может на него ссылаться
я не до конца пойму, что тебе нужно, но макросы вида (with-something <variable>)
очень распространены
например, извлечь какие-то данные, забиндить их к переменной и выполнить код перед выходом из макроса
foo( x => {
bar(x)
});
пример из js6, как такое-же сделать на clojure, с нормальными отступами?var assert = require('assert');
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal(-1, [1,2,3].indexOf(4));
});
});
});
@U1LR4AN75 так лучше отформатировано ?
(transaction conn #(do (foo1 %)
(foo2 %)
(foo3 %)
(foo4 %)
(foo5 %)
(foo6 %)))
а чем так не устраивает? и как бы такой код выглядил в JS например?т.е. не принято делать вот так
(transaction conn #(do
(foo1 %)
(foo2 %)
(foo3 %)
...
(foo6 %)))
можно сделать макрос что бы было вот так
(with transaction conn
(foo conn)
....
(foo10 conn))
было
(transaction conn #(do (foo1 %)
(foo2 %)
(foo3 %)
(foo4 %)
(foo5 %)
(foo6 %)))
стало
(with transaction conn
(foo conn)
....
(foo10 conn))
принято ли так делать?может уже есть такой макрос в какой-нибудь извесной либе, только называвается по другому и работает более clojure-way
(transaction conn (fn [tx]
(let [a (foo1 tx)
b (foo2 tx 123 "foo")
c (+ a b)
...]
(foo10 tx c))))
@U4BHMMBB2 яснее?
(def wrapper [callback]
(do1)
(callback value)
(do2))
(wrapper (fn [value]
(do-something value)))
Самое короткое, наверное, будет так
(transaction (db/req1) (db/req2))
и макросом проходить по телу и вставлять после вызова db/reqN conn, если, конечно, есть возможность отличать по названию функции что ей нужен conn.(def wrapper [callback]
(do1)
(callback value)
(do2))
(wrapper (fn [value]
(do-something value)))
может быть так будет понятнеестрима нет, на кложе проще писать, чем настроить стрим 🙂
угу, еще идет, до сих пор
должна быть запись