This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-08-10
Channels
- # admin-announcements (1)
- # alda (1)
- # bangalore-clj (1)
- # beginners (94)
- # boot (139)
- # braveandtrue (1)
- # cider (19)
- # cljs-dev (21)
- # cljsjs (8)
- # cljsrn (79)
- # clojure (124)
- # clojure-austin (1)
- # clojure-belgium (1)
- # clojure-berlin (3)
- # clojure-hamburg (3)
- # clojure-quebec (1)
- # clojure-russia (77)
- # clojure-spec (5)
- # clojure-uk (18)
- # clojurescript (39)
- # conf-proposals (21)
- # core-async (5)
- # cursive (8)
- # datomic (40)
- # defnpodcast (1)
- # devcards (14)
- # dirac (5)
- # editors (1)
- # emacs (4)
- # jobs (1)
- # liberator (4)
- # onyx (29)
- # perun (15)
- # proton (15)
- # protorepl (9)
- # re-frame (47)
- # reagent (38)
- # ring (1)
- # rum (7)
- # specter (23)
- # untangled (8)
- # yada (55)
статьи о нейронных сетях на хабре, мне каждый раз вот этот рисунок напоминают http://goo.gl/Vl1yse
к вчерашнему: есть "джава программисты" (сто лет в индустрии, знают классы j2ee и спринга наизусть) и джава программисты. На собеседовании в гугл скажем, реализацию алгоритма на java примут, но спринг не спрашивают ни разу 🙂 первых больше. поэтому когда основной язык java сто раз думаешь, писать ли java developer
https://clojurians.slack.com/archives/clojure-russia/p1470773386001776
(-> "a" (#(hash-map :k %)))
господа, что будет если я передам в функцию пустой лист в качестве аргумента? нужно это обрабатывать по типу (if list_exist list ?
обычно проверяют на пустой список через seq
user=> (when (seq []) “Not empty")
nil
user=> (when (seq [1]) “Not empty")
“Not empty”
хотя в коментах опять же
Returns true if coll has no items - same as (not (seq coll)).
Please use the idiom (seq x) rather than (not (empty? x))
(defn not-empty
"If coll is empty, returns nil, else coll"
{:added "1.0"
:static true}
[coll] (when (seq coll) coll))
т.е. получается либо (when (seq coll) “Not empty”)
vs (when (when (seq coll) coll)) “Not empty”)
спрошу тут - никто тесты не гоняет CLJS + React Native на эмуляторе? @potapenko ты как тестишь?
кстати о тестах, кто как тестит cljs вообще? отдельным процессом какой-нить node.js? в браузере? как-то еще?
user=> (when (seq (healthy-ids (get-instances-ec2)))
(print (healthy-ids (get-instances-ec2)))
)
nil
user=> (when (seq (healthy-ids (get-instances-ec2)))
(healthy-ids (get-instances-ec2))
)
nil
user=> (when (seq (healthy-ids (get-instances-ec2)))
(print "Ok")
(print "not Ok"))
nil
@asolovyov: https://github.com/bensu/doo - lein doo phantom|node debug once
, в последнее время перетащил все юнит тесты (логика, без IO) на Planck - заместо 17 секунд, 1.7 секунды
я тоже первым делом полез смотреть на empty? пускай реализация через seq, но она завтра может поменяться.
Кто-нибудь встречал инфографику по типам данных кложи с привязкой к java классам? Вот например, смотрю чем Seqable отличается от Sequential нифига не очевидно.
вернулся к black-box задачке -- как отличить пустую мапу от, скажем, пустого листа? при любом преобразовании мапа просто конвертится в другой тип,а если лист этот метод не поддерживает выбрасывается экспешн......
дак чо там придумывать - тесты есть, в фантоме запускаются, на ноде запускаются, даже вон планк работает. Надо написать еще одни test executer чтоб запускать тесты на RN 🙂
@asolovyov: А там делать то ничо не надо, подпилить напильником лишь чутка для того чтоб exit code были верные
planck --classpath="test:src" \
--eval="(ns test.test (:require [module.core] [cljs.test] [planck.core]))" \
--eval="(defmethod cljs.test/report [:cljs.test/default :end-run-tests] [m] (when-not (cljs.test/successful? m) (planck.core/exit 1)))" \
--eval="(cljs.test/run-all-tests)”
ну и напоминаю что это для чистых юнит тестов. Planck умеет IO, HTTP, умеет всякие (plack.shell/sh “rm -rf /“)
, но надо свой код тогда оборачивать под это дело. Мне лень - у меня как раз разделение уже было чистые юнит тесты и интеграционные где ужы обычный фантом гоняется
ну и кста вот вроде ты грил про разные названия макросов для core.async? с планком будет работать как есть, а если под кложуру то придется reader conditionals добавлять хошь не хошь
Ребят, а кто-нибудь сталкивался с таким?
Есть библиотека, в которой есть зависимость из внешнего maven-репозитория. В build.boot
этот репозиторий я добавил. Если я ставлю зависимости этой библиотеки локально, то все окей. Когда я пытаюсь поставить эту библиотеку из clojars в другой проект, он ругается, что не может найти пакет из этого внешнего репозитория на clojars, а в сам репо, похоже, даже не обращается.
Пример:
;; это в build.boot библиотеки
(set-env! ...
:repositories #(conj % '["confluent" " "])
:dependencies '[...
[io.confluent/kafka-avro-serializer "3.0.0"] ;; вот эта должна браться из confluent
... ])
Пушим библиотеку в Clojars, добавляем ее в проект, и получаем такое:
org.sonatype.aether.resolution.DependencyResolutionException: Could not find artifact io.confluent:kafka-avro-serializer:jar:3.0.0 in clojars ( )
Что я упустил?обсудили в чатике бута – смысл в том, что transitive dependencies из левых репо вызывают хаос и не очень секьюрны (можно любое говно из любого репо добавить), так что лучше добавлять их в самом проекте руками. + у меня частный случай.
здесь кажется логичным добавить в пом, конечно – кафку можно добавить как зависимость, а отдельный сериалайзер от них же (но из другого репо) – нет. но это не такая уж и проблема.
http://blog.fikesfarm.com/posts/2016-07-03-clojurescript-clojure-namespace-aliasing.html
Now, there is a new simplification that will be coming to a ClojureScript compiler near you: You can use clojure as an alias for cljs in the first segment of namespaces in the case of nonexistent clojure.* namespaces that can be mapped to cljs.* namespaces.
(ns foo.core
(:require [clojure.test]))
can be used instead of
(ns foo.core
(:require [cljs.test]))
@asolovyov: ^^ счастье ооооочень близко 🙂@artemyarulin: да, тема; я так и не понял, правда, почему он cljs.test, а не clojure.test, какие все же сложности?
изначально то? там в начале описано
But, if you look at, say, the port of clojure.pprint for use with ClojureScript, it involves a macro namespace. This is where the problem lies. Since the JVM ClojureScript compiler uses Clojure for execution, there would be a namespace collision if the port were not moved to cljs.pprint. In short, the clojure.pprint namespace was taken.
ну и круто конечно - никакого :refer-macro
не нужно будет, один тупой (:require [clojure.core.async :refer [go <!]]])
везде и всюду
никто не знает как CLJS заюзать прям с мастера? чот не могу найти. Больно охота поиграться с новой фичей на ночь глядя)
@artemyarulin: https://anmonteiro.com/2016/08/clojurescript-require-now-supports-rename/ а вот еще