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))
хотя странно что seq рекомендуют, not-empty куда понятней
(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”)
может старый комент тогда про рекомендацию использовать (seq x)
спрошу тут - никто тесты не гоняет 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, но она завтра может поменяться.
я просто дебил, я забыл таймаут лямбде выкрутить побольше
вот оно и не работало
чере (when(seq все ок впрочем
Кто-нибудь встречал инфографику по типам данных кложи с привязкой к java классам? Вот например, смотрю чем Seqable отличается от Sequential нифига не очевидно.
вернулся к black-box задачке -- как отличить пустую мапу от, скажем, пустого листа? при любом преобразовании мапа просто конвертится в другой тип,а если лист этот метод не поддерживает выбрасывается экспешн......
@artemyarulin да в эмуляторе.
ну как? )
ааа, окай
дак чо там придумывать - тесты есть, в фантоме запускаются, на ноде запускаются, даже вон планк работает. Надо написать еще одни test executer чтоб запускать тесты на RN 🙂
в jest же сделали чтобы тесты запускать на RN, мож там подсмотреть)
да ну там все работает уже, не интересно
@artemyarulin: а как на planck перешел?
@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 /“)
, но надо свой код тогда оборачивать под это дело. Мне лень - у меня как раз разделение уже было чистые юнит тесты и интеграционные где ужы обычный фантом гоняется
у меня много cljc и охота оба бранча посмотреть
ну и кста вот вроде ты грил про разные названия макросов для core.async? с планком будет работать как есть, а если под кложуру то придется reader conditionals добавлять хошь не хошь
хотя передумал если core.async то значит IO, а если IO то лучше не planck да
Ребят, а кто-нибудь сталкивался с таким?
Есть библиотека, в которой есть зависимость из внешнего 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/ а вот еще
ага я это читал и оттуда по линке на пост Майка вышел
@artemyarulin: а refer-macro нужен будет, если у тебя cljs.core.async.macros
ну может уберут - смысл то какой
ну вишь - они с другой стороны туда заходят
да ладно, уже лучше будет