This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-11-11
Channels
- # beginners (109)
- # boot (61)
- # cider (8)
- # clara (3)
- # cljs-dev (67)
- # cljsrn (5)
- # clojure (96)
- # clojure-argentina (1)
- # clojure-brasil (2)
- # clojure-greece (10)
- # clojure-russia (114)
- # clojure-spec (51)
- # clojure-uk (45)
- # clojurebridge (2)
- # clojurescript (139)
- # cursive (18)
- # data-science (1)
- # datascript (2)
- # datomic (13)
- # dirac (2)
- # emacs (5)
- # events (1)
- # javascript (2)
- # jobs (1)
- # juxt (3)
- # off-topic (62)
- # om (10)
- # onyx (12)
- # perun (7)
- # ring-swagger (7)
- # specter (21)
- # test-check (5)
- # untangled (16)
- # utah-clojurians (1)
- # yada (2)
kronos_vano https://github.com/stuartsierra/component#notes-for-library-authors
Там банальная обертка над методами джавы. МОжно завернуть куда хошь
@potapenko только с тобой обсуждали exponent https://medium.com/@tiensonqin/why-exponent-on-react-native-especially-for-clojurescript-9bb1417c0c65#.7b041ikij
вот тут https://www.youtube.com/watch?v=UEUucIdNO_o я так понимаю можно будет через пару часов послушать этих ребят https://blog.appcanary.com/2016/missing-clojure.html
@andre Ага, видел. Все равно непонятно как нативные компоненты прикручивать. Нужно глядеть их код. Во многом RN крут тем, что есть выбор и возможность реализовать если что в нативе. Тут же в эспоненте они просто предлагают некий набор готовых компонентов, которые они сделали.
https://blog.appcanary.com/tag/clojure.html - Slippery exceptions in Clojure and Ruby - How being lazy about state management in Clojure caused us downtime
@lowl4tency на тему component – мне кажется, ты прав, что в либу его нет смысла добавлять, но у тебя там dynamic binding – вот это не круто, на мой взгляд. api-key можно как аргумент прокидывать. если бы я это использовал с компонентом, например, я бы сделал протокол, заиплементил бы его в этом компоненте, и ключ прокидывал бы из стейта.
konukhov спасибо
konukhov я долго искал как принято прокидывать такие вещи в либы, ничего годного не нашел
если дашь сниппет посмотреть буду благодарен
ты имеешь в виду defprotocol?
спасибо, буду посмотреть, но и сниппет не помешает тоже, окгда тебе будет удобно конечно
и если можно пару слов почему динамик биндинг не круто
вот, про что я говорил https://gist.github.com/konukhov/a12e087bc5cae577fbd6ee75c70c9c17 динамический байндинг не круто, потому что у тебя скрытый стейт появляется, еще и глобальный, + функция перестает быть “чистой”. (тут они, конечно, и так не чистые, так как мы общаемся в внешним миром) вот, Стюарт написал https://stuartsierra.com/2013/03/29/perils-of-dynamic-scope
я просто смотрел примеры в korma 🙂 там были и биндинг и макрос
ага, понятно, я почему-то думал что добавлять еще один параметр в аргументы не оч красивенько
тогда я согласен, так можно и без биндинга )
а еще вопрос, насколько плохо
(defn func [this coll]
(let [lat (:lat coll)
(:lng coll)]
(do something)))
то есть структурку пихать аргументом а структурку уже внутри разбирать
я просто написал чтобы было видно что я имею ввиду)
вместо (defn func [this arg1 arg2]
аа, ты про это. я недавно рефакторил как раз код, где количество аргументов начало зашкаливать за 5. думаю, зависит от твоих структур и контекста.
ага понятно, спасибо большое за помощь
а у меня еще один глупый вопрос
Куда приянто совать валидацию? Внутрь библиотечных функций или тот кто использует либу должен валидировать?
какой хороший тон?
мне кажется, что если ты ждешь данные в определенной форме – валидировать стоит у себя. но тоже зависит от контекта. если тебе в lat lng передадут строки, например, то гугловская либа и так кинет exception, юзер это увидит и поправит. вообще, часто в либах видел, что schema ту же используют и тд.
ага, точно, я не подумал про ексепшоны
я склоняюсь к мысли, что если для человека который использует либу что-то будет непрозрачно то стоит добавить, например если бы не было ексепшонов от гугловой сдк то тогда тсоило валидировать
сначала посмотреть как отреагирует гугл либа на строки, можно ли быстро найти из-за чего ошибка. Хорошее сообщение и трейс понятный
Если сложно то лучше добавить у себя проверку, для пользователей твоей либы. Главное - не переборщить с ограничениями имхо
@edbond согласен
ВНезапненько, решил написать тест, а мне гугл апи выдает разные адреса на одни координаты
как так жить 😞
Там в чем фишка, я апрашиваю координаты по адресу, а потом обратно по координатам адрес
и по координатам того адреса он мне выдает другой адрес а не тот который я запрашивал изначально
с гуглом - это интеграционный тест, для чего его в либу включать? если гугл отвалится, у тебя тесты не пройдут
а у меня больше ничего в либе нет)
только запросики к гуглу
ну я это скорее поместил чтобы было понятно как использовать либку
1. какая schema? спеке уже полгода
2. (f {:a a :b b})
против (f a b)
сильно зависит от юзкейса (от того, где a
и b
берутся),
скажем, если кто-то мне, клиенту либы, возвращает {:a a :b b}
, и дальше я должен вызвать (f a b)
- это напряг,
так же как и наоборот: получаю где-то [a b]
, а дальше передавать в (f {:a a :b b})
нужно.
иногда можно вообще мультиарити забабахать:
(defn f
([{:keys [a b]}] (f a b))
([a b]
...))
думаю, что если и зависеть от либы, то от той, которую потом просто дропнуть можно, без портирования кода
Off: если линкедин отключают за хранение личных данных россиян, то у фейсбука, что, с этим давно нормально: сливают??
только начинаю изучать clojure, поэтому такой вопрос: следует ли мне, привыкшему к императивным языкам, писать конструкции вида: (def c 5) (- 1 (/ 2 (+ 3 c))) с помощью макросов ->> или -> сразу в виде: (def c 5) (->> c (+ 3) (/ 2) (- 1)) ? или первая запись таит в себе какой-то скрытый смысл, кроме того что её надо читать справа-налево ?
Frankly, I’ve just never had to think about lazy data structures in Rubyland
панятна кароче@slava_nedorezov я сразу пишу через ->
->>
, так сильно нагляднее. еще ни разу не обжегся, но может я просто не заметил
лямбды еще оборачивать скобками надо
а так да - чутка привыкнуть в ним и код легче читается
я просто думаю,может я что-то недопонял и пытаюсь писать по старому императивно, когда надо чуть сломать себе мозг и начать писать все "функционально и красиво" вон в том же джаваскрипте сколько пришлось промисов наворотить, чтобы только получить возможность писать асинхронный код в синхронном стиле
да неа, threading macro созданы как раз для таких случаев. Можешь посмотреть какие опен сорсы проекты, увидишь много где юзаются. Этакие конвееры
(->> (range 1000)
(filter even?)
(map (partial / 100))
(take 5)
(reduce +))
и кста заброшу еще про Elm (раз мы уж поливаем все что не кложура ыы ) https://hackernoon.com/a-small-dive-into-and-rejection-of-elm-8217fd5da235#.9pz4a9u2l Хотя если серьезно то довольно интересно
сотрудник с прошлой работы остерегается в кложу время вкладывать, потому что не будет hirable, а ему семью кормить
типа мало кто нанимает, а если нанимает - то по 2 чела на громадный проект, потому что сильно больше людей и не надо
ну аргумент чо
аа. на рубиконф вчера про кложу рассказывали. я только догадался программу посмотреть. причем стрим идет только с большого зала. а эта конфа была в малом зале =(
т.е. он кложуру выучит - все знания жавы оно вытеснит и скобочки будут как клеймо у него, оооок)
ну есть, конечно, сет контор, в которых кложа "поверх джавы", а не основная, но таких немного
ну релокейшн - не для всех подходит, хотя в LA ему найти кложа-работу вообще не проблема, скилы только покажи
I did a fairly deep dive into ClojureScript and found it nice initially but ultimately lacking in some key areas.
да нет в жизни счастья чо уж 🙂
все тлен
And all that, from the point of view of an employer, is attractive. Ten people who communicate, document things properly and work together are preferable to one BBM hacking Lisp who can only be replaced by another BBM (if you can find one) in the not unlikely event that he will, at some time, go down without being rebootable.
@misha Ну вот я был больше месяца в"сетевой" конторе, в которой кложа "поверх" жавы и скажу мне это понравилось. Я не верю в историю про ее кроссплатформенность: если сидишь на жаве платформе, так и используй ее возможности. И я видел код на кложе написанный хорошим жавистом, сказка. Для сравнения был в конторе зарубежной, которые подошли с другого конца. Шеф там влюблен в лисп и воспринимает жава интероп как неизбежное зло. Ну так тоже можно. ИМХО в первом подходе смысла больше.
вообще такое ощущение что водораздел проходит где-то скорее фронт/бэк. вот первым да, не до жавы. а вторые как без нее, не пойму
@seryh да, доклад про кложу был вчера, но не том треке, с которого выложили запись. надо ждать когда появятся записи с других треков
кстати, а кто-нибудь едет на Clojure Conj ?
@dragoncube сорвалась у меня поездка