This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-12-11
Channels
- # adventofcode (7)
- # aws-lambda (1)
- # beginners (161)
- # cider (19)
- # cljsjs (5)
- # cljsrn (30)
- # clojure (80)
- # clojure-korea (2)
- # clojure-new-zealand (8)
- # clojure-russia (73)
- # clojure-sanfrancisco (1)
- # clojure-spec (14)
- # clojure-uk (12)
- # clojurescript (84)
- # cursive (7)
- # defnpodcast (8)
- # dirac (16)
- # events (2)
- # garden (7)
- # hoplon (178)
- # off-topic (2)
- # om (58)
- # om-next (2)
- # onyx (21)
- # pedestal (1)
- # planck (15)
- # protorepl (32)
- # re-frame (31)
- # untangled (1)
- # yada (5)
Можно побомбить по лицензии датомика? Там ведь есть сложные моменты, например, можно ли будет провернуть такое, что смена ключа на другой аккаунт, хотя бы для обновления (ну вот такой за год стартап чтобы сразу в 5 тыщ баксов, не всегда бывает, чтобы). Ну тут же не детский сад, никто пиратить не будет, но они пишут конкретно, что хотите апгрейднуться, то просто смените ключ, то есть данные не подвержены смене ключа. Но всё равно, пожалуй осторонюсь, не такая уж сладкая лицензия, чтобы прямо с неё стартовать. Сначала восторг, а потом вообще неинтересно, это очень печально. Это камень не в datomic, а вообще, в тусовку молодого языка.
просто сначала разобраться надо. Никита это всё описывает, что звучит оно просто и элементарно. Оно нифига не просто и нифига не элементарно, и труда в это вложено немало
@sarman, ну конформити я вкрутил. я больше про это https://github.com/avodonosov/datomic-helpers
кста вот нетфликс открыл либку недавно http://hollow.how, конечно не замена датомик но похожа и довольно годно (данные в памяти у клиента, данные реплицируются с мастера на клиенты, фри опен сорс)
ах, всеж молодец Ричи что сделал кложуру на JVM - бери и юзай все что народ делает
@a.espolov в итоге придется написать свой ре-фрейм, т.к. он решает определенный набор проблем с которыми вы сталкнетесь в большой апп
@artemyarulin т.е. cljsjs больше не нужен?
@andre да неа. Если например много интеропа то проще взять готовый extern файл чем везде метатеги пихать. Ну и просто удобно же в депс добавил и все, если без CLJSJS то надо будет npm/bower юзать буэ)
дада, с ним. и сорс и экстерны, крутож
ну вот, для таких как раз случаев новая фича самое то
а есть какая функция что одна мапа является подмапой другой?
(let [a {:a 1 :b 2}
b {:a 1 :b 2 :c 4}]
(= a (->> a keys (select-keys b))))
@artemyarulin http://stackoverflow.com/questions/20421405/how-to-check-if-a-map-is-a-subset-of-another-in-clojure
спасибо гугл 🙂
(->> a keys (select-keys b) (= a))
(into #{} (keys a)) + https://clojuredocs.org/clojure.set
Имхо, если ты пишешь такой макрос, то ты оперируешь над одним объектом, который “главный"
#(hash-map :x %)
как-то читабельней
@artemyarulin: а вектор? Там vec или vector писать надо? Только не подглядывай
эээ, vector! (50% шанс угадать))
@malch: ну это если как ты за "главный" объект одной рукой держался бы, а все операции делал бы другой. Какой-то тесный подход. Вместо того, чтобы главный взять со стола после пары подготовительных шагов, в которых он не участвует
@artemyarulin: "угодать" читалось органичнее )
Согласен, Но разве ты не смотрел страшилку, о том, как оникс из-за промежуточного результата в лете падал с аут оф мемори???
почему если я комментирую отладочную печать, мой код не работает? не происходит транзакция миграций схемы
(let [uri "datomic:"]
(d/create-database uri)
(doto (d/connect uri)
((fn [db] (->> (fs/glob "resources/datomic-migrations/*.edn")
sort
(map #(-> % str (clojure.string/split #"resources/") last
conformity/read-resource))
(map #(conformity/ensure-conforms db %))
(#(doto % prn)))))))
ну вот если убрать последний - отладочную печать - прекращает работать предпоследняя строка
ПОЦОНЫ. не ошибитесь. коллекции блин ленивые!! и prn сидел и форсил коллекцию. стираешь его - код нифига и не делает
йесс. я сломал датомик.
#error {
:cause "String index out of range: 0"
:via
[{:type com.google.common.util.concurrent.UncheckedExecutionException
:message "java.lang.StringIndexOutOfBoundsException: String index out of range: 0"
:at [com.google.common.cache.LocalCache$Segment get "LocalCache.java" 2203]}
{:type java.lang.StringIndexOutOfBoundsException
:message "String index out of range: 0"
:at [java.lang.String charAt "String.java" 658]}]
:trace
[[java.lang.String charAt "String.java" 658]
[datomic.pull$attr_spec__GT_attr invokeStatic "pull.clj" 145]
[datomic.pull$attr_spec__GT_attr invoke "pull.clj" 131]
[datomic.pull$attr_spec__GT_attr invokeStatic "pull.clj" 136]
[datomic.pull$attr_spec__GT_attr invoke "pull.clj" 131]
[datomic.pull$normalize_attr invokeStatic "pull.clj" 155]
[datomic.pull$normalize_attr invoke "pull.clj" 151]
[datomic.pull$normalize_pattern$fn__5512 invoke "pull.clj" 214]
[clojure.lang.PersistentVector reduce "PersistentVector.java" 341]
[clojure.core$reduce invokeStatic "core.clj" 6703]
[clojure.core$reduce invoke "core.clj" 6686]
[datomic.pull$normalize_pattern invokeStatic "pull.clj" 198]
[datomic.pull$normalize_pattern invoke "pull.clj" 168]
[datomic.pull$normalize_pattern invokeStatic "pull.clj" 194]
[datomic.pull$normalize_pattern invoke "pull.clj" 168]
[datomic.impl.FnCacheLoader load "FnCacheLoader.java" 16]