Fork me on GitHub
#clojure-russia
<
2016-09-22
>
andmed06:09:43

плюсы интеграции - ок, куда деваться. но страшилки про головняки с поддержкой imho преувеличены

andre07:09:38

привет, а есть возможность в cljs макросе получить опции?

artemyarulin08:09:31

опции чего?

andre08:09:19

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

andre08:09:28

хотелось бы конечно в cljbuild выставить например

andre08:09:38

как devcards Допустим

andre08:09:57

ну или на крайний случай запустить макрос в самом начале который куда-нибудь запишет опцию для других макросов 🙂

andre08:09:48

чтобы для прода он не генерил никакой лишний код

artemyarulin08:09:54

хм, ну большенство опции они уже про рантайм (теже google.clousure define или как там их). Можно файл прочитать да, другие макросы, можно положить в project.clj найти его из макроса и прочитать настройки))

andre08:09:19

можно положить в project.clj найти его

andre08:09:26

а как положить?

andre08:09:29

найти я уже понял как

artemyarulin08:09:24

дак онож просто EDN, берешь и кладешь как тот же :figwheel {:bla bla}

artemyarulin08:09:40

точнее мапа просто оно

andre08:09:44

вот этот фигвил и ругается

andre08:09:48

говорит недопустимое значение

artemyarulin08:09:58

Эм, т.е. он такое не дает:

(defproject app 
  :my-key “my-value"
  :dependencies [...]
  :plugins [[lein-cljsbuild "1.1.0"]]
  :source-paths ["src"]
  :cljsbuild {:builds {:repl {:source-paths ["src"]}}})

andre08:09:23

такое не пробовал я в :builds хочу чтобы зависело от id

andre08:09:29

------- Figwheel Configuration Error -------

Found unrecognized key

andre08:09:44

':external-config'

andre08:09:51

для этого в фигвил

rmuslimov08:09:58

@andre я использовал что то вроде (defmacro cljs-env [kw] (env kw)) только это оказалось, жутко неудобно если не думать что класть в опции

rmuslimov08:09:11

на каждый чих приходилось перекомпилировать build

andre08:09:33

я сделал через &env

andre08:09:51

через project.clj это то что мне нужно

andre08:09:06

чтобы фигвил провалидировал пришлось сделать так

andre08:09:43

:compiler { :external-config {:re-frisk {:enabled true}}}}

andre08:09:02

там должна быть именно мапа, пришлось сделать {:enabled true}

andre08:09:17

ну и потом читаю в макросе

(get-in @cljs.env/*compiler* [:options :external-config :re-frisk :enabled])

andre09:09:53

странность только какая-то , если в макросе я делаю шаблон с вызовом метода и этот шаблон не в теле макроса а допустим в let или в if , то он не вставляет ns этой функции

andre09:09:07

и потом cljs ругается в рантайме

andmed13:09:46

какой правильный путь распараллелить мапу для IO-bound tasks? в доке к pmap прямо говорится что она для cpu-intensive applications, параллелит по числу ядер, не то..

andmed13:09:55

native clojure way

rustam.gilaztdinov14:09:42

на data-readers вообще документации нет 😞 и примеров толком тоже может подскажет кто с моим конкретным примером есть такой объект — #object[com.thinkaurelius.titan.graphdb.vertices.StandardVertex 0x7c4008fd v[8256]] я его пишу строкой в базу дальше мне нужно передать его как объект в функцию read-string валится с java.lang.RuntimeException: No reader function for tag object я попробовал так

(defrecord TaggedValue [tag value])

(defn read-preserving-unknown-tags [s]
  (clojure.edn/read-string {:default ->TaggedValue} s))

(defmethod print-method TaggedValue [this ^java.io.Writer w]
  (.write w "#")
  (print-method (:tag this) w)
  (.write w "")
  (print-method (:value this) w))

Вызываю функцию с моим объектом в виде строки
(read-preserving-unknown-tags "#object[com.thinkaurelius.titan.graphdb.vertices.StandardVertex 0x7c4008fd v[8256]]")
Он выдает #object[com.thinkaurelius.titan.graphdb.vertices.StandardVertex 2084571389 v [8256]] Что не нравится — 0x7c4008fd изменилось на 2084571389 И пробел лишний появился v[8256]v [8256]

andmed14:09:17

@rustam.gilaztdinov я конечно не спец, но.. read-string десериализует в жава объекты?

rustam.gilaztdinov14:09:13

Не, read-string отлично работает с кложа-объектами, а вот джавовые у нее уже вызывают затруднения

andmed14:09:26

уже, угу

misha15:09:02

да запакуй/распакуй транзитом уже, @rustam.gilaztdinov там у тебя будет 100% явная (де)сериализация, таг зарегестрируется, все дела

rustam.gilaztdinov15:09:53

@misha о, кайф, спасибо!

misha15:09:12

но у них там дисклеймер "не рекомендуем для дюрабилити данных, потому что еще не 1.0"

misha15:09:45

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

rustam.gilaztdinov15:09:58

Не, пока у меня все свежее, а там посмотрим) костыль-велосипед.жипег