Fork me on GitHub
#clojure-russia
<
2017-05-15
>
fmnoise07:05:13

@roman01la а в когниансе есть проекты на кложе?

misha08:05:13

В когниансе есть конференс-рум kappa

fmnoise08:05:35

ну я думал это типа внутренний митап был

roman01la08:05:54

Вроде бы один проект там есть, но я не в курсе :)

y.khmelevskii09:05:21

подскажите, как такое [:name :surname :age] преобразовать в такое [:name :-name :surname :-surname :age :-age]

artemyarulin09:05:10

ну если по быстрому то типа так

> (def names [:name :surname :age])
> (mapcat #(vector % (->> % name (str "-") keyword)) names)
(:name :-name :surname :-surname :age :-age)

misha10:05:50

потерял вектор troll

y.khmelevskii10:05:57

@artemyarulin спасибо!

(vec (mapcat #(vector % (->> % name (str "-") keyword)) names))
не знал о mapcat

misha10:05:58

(let [names [:foo :bar :baz]]
  (time
    (dotimes [n 1000000]
      (->> names
        (mapcat #(vector % (->> % name (str "-") keyword)))
        (vec))))
  (time
    (dotimes [n 1000000]
      (reduce
        (fn [v k]
          (-> v 
            (conj k)
            (conj (->> k name (str "-") keyword))))
        [] names)))
  (time
    (dotimes [n 1000000]
      (->> names
        (map #(->> % name (str "-") keyword))
        (interleave names)
        (vec)))))

"Elapsed time: 1751.224905 msecs"
"Elapsed time: 636.448672 msecs"
"Elapsed time: 1167.738584 msecs"

artemyarulin10:05:25

у кого-то слишком много свободного времени troll

misha10:05:42

хотя саааамый первый проход мне показывало, что интерлив в 2 раза быстрее редюса

misha14:05:11

господа, а как атомарно из атома прочитать и ресетнуть? никак? взять ref+dosync?

(defn flush [*queue]
  (let [all-q-items @*queue]
    ;; рейс кондишн тут?
    (reset! *queue [])
    all-q-items))

misha14:05:17

вообще, задача такая: собирать в карманчик ивенты (последовательные диффы/патчи бд), и, когда приходит запрос "чо там накопилось?" – отдавать всё, что накопилось, и опустошать карманчик. (контекст: 2 треда, например мейн и воркер, в одном процессе)

misha14:05:36

хотя, если есть кто-то, кто рейскондишн организует, – значит воркера 2, и опустошать карманчик для одного уже не годится harold

misha14:05:13

ну ref, угу

dottedmag18:05:37

@misha Есть вариант (def myatom (atom {:cur nil :old nil}) ... (:old (swap! myatom (fn [a] {:cur nil :old (:cur a)})))

nicola20:05:38

Офтопик: кто rdf увлекается?

nicola20:05:05

И давайте на следующей неделе про re-frame hangout?!