Fork me on GitHub
#clojure-russia
<
2016-08-10
>
seryh03:08:54

статьи о нейронных сетях на хабре, мне каждый раз вот этот рисунок напоминают http://goo.gl/Vl1yse

andmed05:08:23

к вчерашнему: есть "джава программисты" (сто лет в индустрии, знают классы j2ee и спринга наизусть) и джава программисты. На собеседовании в гугл скажем, реализацию алгоритма на java примут, но спринг не спрашивают ни разу 🙂 первых больше. поэтому когда основной язык java сто раз думаешь, писать ли java developer

andmed05:08:53

jvm с ее дебагом и профайлером рулит все-таки

Kira Sotnikov06:08:49

господа, что будет если я передам в функцию пустой лист в качестве аргумента? нужно это обрабатывать по типу (if list_exist list ?

artemyarulin07:08:01

обычно проверяют на пустой список через seq

user=> (when (seq []) “Not empty")
nil
user=> (when (seq [1]) “Not empty")
“Not empty”

Kira Sotnikov07:08:30

оу, спасибо

artemyarulin07:08:55

хотя в коментах опять же

Returns true if coll has no items - same as (not (seq coll)).
Please use the idiom (seq x) rather than (not (empty? x))

andfadeev07:08:02

seq то что надо

artemyarulin07:08:42

хотя странно что seq рекомендуют, not-empty куда понятней

andfadeev07:08:08

(defn not-empty
  "If coll is empty, returns nil, else coll"
  {:added "1.0"
   :static true}
  [coll] (when (seq coll) coll))

artemyarulin07:08:54

т.е. получается либо (when (seq coll) “Not empty”) vs (when (when (seq coll) coll)) “Not empty”)

artemyarulin07:08:37

может старый комент тогда про рекомендацию использовать (seq x)

andfadeev07:08:43

в основе все равно seq

artemyarulin07:08:33

спрошу тут - никто тесты не гоняет CLJS + React Native на эмуляторе? @potapenko ты как тестишь?

asolovyov08:08:46

кстати о тестах, кто как тестит cljs вообще? отдельным процессом какой-нить node.js? в браузере? как-то еще?

Kira Sotnikov09:08:10

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

Kira Sotnikov09:08:34

user=> (when (seq (healthy-ids (get-instances-ec2)))
(print "Ok")
(print "not Ok"))
nil

Kira Sotnikov09:08:46

а это же не иф

andre09:08:40

devcards для тестов cljs отлично

artemyarulin09:08:43

@asolovyov: https://github.com/bensu/doo - lein doo phantom|node debug once, в последнее время перетащил все юнит тесты (логика, без IO) на Planck - заместо 17 секунд, 1.7 секунды

comerc09:08:19

я тоже первым делом полез смотреть на empty? пускай реализация через seq, но она завтра может поменяться.

Kira Sotnikov09:08:01

я просто дебил, я забыл таймаут лямбде выкрутить побольше

Kira Sotnikov09:08:06

вот оно и не работало

Kira Sotnikov09:08:25

чере (when(seq все ок впрочем

andmed10:08:32

Кто-нибудь встречал инфографику по типам данных кложи с привязкой к java классам? Вот например, смотрю чем Seqable отличается от Sequential нифига не очевидно.

andmed10:08:46

Копирайт в исходниках стоит, javadoc не отмечен

andmed10:08:41

вернулся к black-box задачке -- как отличить пустую мапу от, скажем, пустого листа? при любом преобразовании мапа просто конвертится в другой тип,а если лист этот метод не поддерживает выбрасывается экспешн......

potapenko10:08:33

@artemyarulin да в эмуляторе.

artemyarulin10:08:13

ну как? )

potapenko11:08:31

тесты не гоняю.

potapenko11:08:05

визуал ведь в основном. фигвил и глаза.

artemyarulin11:08:31

ааа, окай

potapenko11:08:52

расскажешь чего ты придумал?

artemyarulin12:08:59

дак чо там придумывать - тесты есть, в фантоме запускаются, на ноде запускаются, даже вон планк работает. Надо написать еще одни test executer чтоб запускать тесты на RN 🙂

savelichalex12:08:45

в jest же сделали чтобы тесты запускать на RN, мож там подсмотреть)

artemyarulin12:08:50

да ну там все работает уже, не интересно dafuq

asolovyov13:08:31

@artemyarulin: а как на planck перешел?

artemyarulin13:08:44

@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)”

artemyarulin13:08:02

ну и напоминаю что это для чистых юнит тестов. Planck умеет IO, HTTP, умеет всякие (plack.shell/sh “rm -rf /“), но надо свой код тогда оборачивать под это дело. Мне лень - у меня как раз разделение уже было чистые юнит тесты и интеграционные где ужы обычный фантом гоняется

asolovyov13:08:01

я ж могу чистые ваще в кложе запускать

asolovyov13:08:08

шо это я себе думаю 🙂

asolovyov13:08:16

и даже ио, емае

asolovyov13:08:30

омг надо срочно все переделать 🙂

artemyarulin13:08:35

у меня много cljc и охота оба бранча посмотреть

artemyarulin13:08:43

ну и кста вот вроде ты грил про разные названия макросов для core.async? с планком будет работать как есть, а если под кложуру то придется reader conditionals добавлять хошь не хошь

artemyarulin14:08:19

хотя передумал если core.async то значит IO, а если IO то лучше не planck да

konukhov15:08:54

Ребят, а кто-нибудь сталкивался с таким? Есть библиотека, в которой есть зависимость из внешнего 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 ()
Что я упустил?

konukhov15:08:20

так, в .pom-файле не вижу репозитория

konukhov15:08:17

все, разобрался

artemyarulin16:08:09

ну ты хоть скажи чо было)

konukhov16:08:41

обсудили в чатике бута – смысл в том, что transitive dependencies из левых репо вызывают хаос и не очень секьюрны (можно любое говно из любого репо добавить), так что лучше добавлять их в самом проекте руками. + у меня частный случай.

konukhov16:08:44

здесь кажется логичным добавить в пом, конечно – кафку можно добавить как зависимость, а отдельный сериалайзер от них же (но из другого репо) – нет. но это не такая уж и проблема.

artemyarulin19:08:35

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: ^^ счастье ооооочень близко 🙂

artemyarulin19:08:32

я уж было обрадовался, а пока тока в мастере - не зарелизено еще(

asolovyov19:08:14

@artemyarulin: да, тема; я так и не понял, правда, почему он cljs.test, а не clojure.test, какие все же сложности?

artemyarulin20:08:05

изначально то? там в начале описано

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.

artemyarulin20:08:15

ну и круто конечно - никакого :refer-macro не нужно будет, один тупой (:require [clojure.core.async :refer [go <!]]]) везде и всюду aw_yeah

artemyarulin20:08:53

никто не знает как CLJS заюзать прям с мастера? чот не могу найти. Больно охота поиграться с новой фичей на ночь глядя)

artemyarulin20:08:50

ага я это читал и оттуда по линке на пост Майка вышел

asolovyov20:08:59

@artemyarulin: а refer-macro нужен будет, если у тебя cljs.core.async.macros

asolovyov20:08:07

они-то в отдельном ns лежат

asolovyov20:08:34

скажи 🙂

artemyarulin20:08:34

ну может уберут - смысл то какой

asolovyov20:08:41

а сейчас смысл какой? )

asolovyov20:08:51

у них тикеты открыты (я сюда кидал), а активности там 0

artemyarulin20:08:11

ну вишь - они с другой стороны туда заходят

artemyarulin20:08:32

да ладно, уже лучше будет