Fork me on GitHub
#clojure-russia
<
2016-06-28
>
maxim00:06:51

Да, какими-то загадками говорил и по чуть-чуть.

maxp12:06:43

уважаемые, помогите макрос написать

maxp12:06:55

как сделать так, чтобы warn брался из текущего неймспейса?

prepor12:06:28

например

maxp12:06:43

что-то у меня так не сработало

maxp12:06:49

пробую еще раз...

maxp12:06:45

во тупняк!

prepor12:06:50

да лаадно

maxp12:06:24

у меня в предыдущий раз неймспейс не порелоадился, и я убился об стену, что там не так...

prepor12:06:55

но вообще, то что ты делаешь скорее всего очень плохо )

maxp12:06:09

что так плохого?

maxp12:06:31

ты а джаве к базе данных коннектился?

maxp12:06:41

там трай надо на каждый чих 🙂

prepor12:06:44

ты сетапишь какие-то совершенно неочевидные контракты на использование макроса

prepor12:06:55

требования к неймспейсу, где он используется

maxp12:06:21

я просто много именно таких траев написал

prepor12:06:30

зачем там должен быть объявлян warn? может быть тогда эксплицитно требовать передачи warn, если он правда может быть разным?

maxp12:06:54

ну у меня почти везде объявлен, где надо

prepor12:06:12

и? что тебе мешает использовать full qualified warn?

prepor12:06:18

ну ок ок )

maxp12:06:26

а я в макросе откуда знаю какой он у меня будет?

prepor12:06:49

а тебе не один и тот же надо? )

prepor12:06:59

откуда-нибудь из clojure.tools.logging?

maxp12:06:10

а фиг знает, бывает старый, бывает новый

maxp12:06:21

этот у меня из timbre

prepor12:06:56

> может быть тогда эксплицитно требовать передачи warn, если он правда может быть разным?

prepor12:06:02

или напиши два макроса!

prepor12:06:07

в общем, ок, как хочешь )

maxp12:06:20

так-то надо окультурить это все, конечно

maxp12:06:35

но пока есть много повторяющегося кода

maxp12:06:41

и в нем разные варны

prepor12:06:51

а что бы не было проблем с релоадными неймспейсами и неведомой хуйни нужно clojure.tools.namespace.repl юзать, а не руками неймспейсы перезагружать 😉

maxp12:06:54

идти их все собирать пока не хочется

maxp12:06:13

у меня mount перезагружает

maxp12:06:22

просто то файло не попало

maxp12:06:56

надо будет еще посмотреть почему не попало

mike_ananev14:06:21

@maxp: привет. я использую такой макрос

mike_ananev14:06:23

(ща сниппеты научусь вставлять)

mike_ananev14:06:40

в общем, когда какая-то есть операция, которая может там кинуть эксепшн, а мне надо только увидеть в логах ошибку, то я его использую

mike_ananev14:06:01

например так (safe (/ 1 0)) => nil

mike_ananev14:06:38

соответсвенно log/error из clojure.tools.logging

maxp14:06:49

Байндингсами для этого макроса приходилось пользоваться?

mike_ananev14:06:52

не помню. последнее время точно нет.

maxp15:06:06

уважаемые, а что вы используете в качестве cond-let?

maxp15:06:17

condp тернарный?

prepor15:06:43

(defmacro cond-let
  "(let [req {:profile \"foo\"}]
  (cond-let
  [profile (:profile req)] (prn \"Porfile!\" profile)
  [user (:user req) (prn \"User!\" user)]))"
  [& clauses]
  (when clauses
    `(if-let ~(first clauses)
       ~(if (next clauses)
          (second clauses)
          (throw (IllegalArgumentException.
                  "cond-let requires an even number of forms")))
       ~(cons `cond-let (next (next clauses))))))

niquola16:06:15

Кто хочет поучаствовать в распределённом супервизоре для postgresql на cljs под ноду - с продолжением;)?