This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-12-06
Channels
- # adventofcode (24)
- # aleph (1)
- # bangalore-clj (2)
- # beginners (196)
- # boot (148)
- # cider (18)
- # clara (83)
- # cljsrn (24)
- # clojure (210)
- # clojure-brasil (3)
- # clojure-china (1)
- # clojure-italy (11)
- # clojure-korea (8)
- # clojure-russia (82)
- # clojure-spec (115)
- # clojure-uk (130)
- # clojurescript (109)
- # core-async (7)
- # cryogen (1)
- # cursive (22)
- # datascript (11)
- # datomic (6)
- # devcards (2)
- # emacs (1)
- # garden (1)
- # hoplon (2)
- # incanter (1)
- # klipse (4)
- # luminus (4)
- # off-topic (89)
- # om (53)
- # onyx (78)
- # parinfer (9)
- # proton (3)
- # protorepl (20)
- # re-frame (107)
- # reagent (52)
- # rum (30)
- # spacemacs (1)
- # testing (3)
- # untangled (31)
- # vim (43)
- # yada (9)
а научите/посоветуйте пож-та howto как с exceptions быть. Строить ли свою иерархию классов? или вот такими вещами попуоярно пользоваться - https://github.com/scgilardi/slingshot
> Luckily, idiomatic Clojure code doesn't throw exceptions very much. I tend to view the throw and 'catch forms as interop forms, but
try and 'finally are idiomatically useful for cleaning up after errors even if you never explicitly throw or catch in your entire program.
со второй линки не очень понимаю чо не нравится
(try X
catch #?(:cljs js/Object :clj Exception) e
(do-something-with-ex e)
аа, этому треду 3 года, тогда еще этого не было 🙂
хз, я как-то без эксепшенов обхожусь - тока если интероп
можно посмотреть всякие монады https://github.com/funcool/cats
промисы опять же, хотя таже монада
ну и если уже совсем развернуть то лист это тоже монада - есть айтемы, все ок, пустой список - error case
если речь идет про всякие UI - то опять же когда single application state то ошибки просто доп данные в нужном месте а ля {:err “Something went wrong, show in alert”}
а в питоне разве принято эксепшены тоже кидать?
а ну ок, давно его не трогал
ага, лучше вернуть nil (или какой еще маркер ошибки хоть кейворд) а уж вызывающий код решит чо с ним делать
Как только берешь кложу после перерыва, lazyness снова бьет поддых. Вот есть такой недо-аристофановский алгоритм
(let [[x & xs] (range 2 10)]
(when-some [rest (seq (remove #(= 0 (mod % x)) xs))]
rest)) => (3 5 7 9)
ок. заворачиваю в функцию только и всего (defn primes2 [seq]
(let [[x & xs] seq]
(when-some [rest (seq (remove #(= 0 (mod % x)) xs))]
rest)))
получаю (primes2 (range 2 10))
ClassCastException clojure.lang.LongRange cannot be cast to clojure.lang.IFn how-to-design-and-program/primes2 (form-init6724239834526720383.clj:3)
ну. и что меняется от заворачивания в функцию в этой самой lazyness, если я эту функцию так и так дергаю.. охИМХО, баг кложуры. Хотя, если посмотреть иначе, может, и не должен такие вещи затенять.
а может кто-нибудь здесь подсказать? при подключении датомика-фри репл не стартует а плюётся вот этим:
Caused by: java.lang.IllegalArgumentException: No matching ctor found for class clj_logging_config.log4j.proxy$org.apache.log4j.WriterAppender$ff19274a, compiling:(clj_logging_config/log4j.clj:37:18)
мне не хватает опыта джавы понять, какой логгер в джаве кого покусал, или где ему конфигов подложить или чего вообще происходит. знаю только. что логгеров в джаве несколько штук и каждый слоёв в семь
@leov похоже у вас нет log4j в classpath, но ныне самый модный логгер - это logback (который через slf4j работает). Попробуйте в dependencies добавить:
[ch.qos.logback/logback-classic "1.1.7"]
а datomic подрубать с такими exclusions:
[com.datomic/datomic-pro "0.9.5530" :exclusions [org.slf4j/slf4j-nop
org.slf4j/slf4j-log4j12]]
закомментил ring.middleware.logger - заработало. буду пытаться узнать, что там с чем подралось..
майндфак номер два: я отключил библиотеку парсинга жсонов и хттп клиент МОЛЧА потерял возможность парсить жсоны. без единого писка.
то есть все джавные библиотеки уже ищут ближайший некий класс который они видят как логгер, грузят его динамически, и дёргают дёргают дёргают, а уже моё как программиста желание решать, чего я с этой хренью буду делать, так? конфиг в виде кложи они не жуют?
и ещё каком-то. в руби есть только 1 логгер, и тот в хероку печатает в stdout. и как-то живут, не умерли
вот есть такая штучка для тех кто не знаком с явовым логгингом https://github.com/stuartsierra/log.dev