Fork me on GitHub
#clojure-russia
<
2016-01-16
>
abtv07:01:00

Митап в понедельник, 18 января

ul11:01:58

Дорогой чатик, кто-нибудь сталкивался с тем, что инкрементальная перекомпиляция cljs иногда становится мучительно долгой — примерно как холодная. При этом воспроизводимо после lein clean и удаления всего и вся вручную и перезапуска билда, но на одном и том же проекте то бывает, то нет. Подозреваю, что по таким симптомам это что-то с машиной, а не cljs/lein/конфигурацией билда.

ul11:01:19

Но вдруг кто-нибудь сталкивался.

a.espolov11:01:31

figwheel на винде вообще бывает не тянет перекомпиленный код

a.espolov11:01:40

очиста кэша браузера не помогает

a.espolov11:01:47

прихудится его растартовать

potapenko12:01:04

в react-native бывает доставка через figwheel долгая. но тут больше дело в эмуляторе. memory leak. Отжирает память. Рефреш приложения не помогает. Рестарт эмулятора спасает. при разработке обычного reagent-приложения обычно все быстро. Мак. Хотя по началу тоже рестартовал figwheel - но чаще всего не в нем была проблема. Как обычно - сам дурак simple_smile

potapenko12:01:47

а как figwheel подужить с source-maps? чтобы при ошибке смотреть реальный clojure код? сейчас на rуact-native иногда мучительно искать источник проблемы. `:source-maps true поставил… но без изменений.

andfadeev13:01:40

подскажите плз, kormasql, у меня есть 2 неймспеса account-model.clj и channel-model.clj, я хочу сделать many-to-many, соотв. получаю циклическую зависимость этих неймспейсов, поделитесь ктонить опытом плз, как лучше стурктурировать код который работает с базой, модельную область, есть ли смысл может в одном неймспейсе объявить все сущности и потом разных неймспейсах делать уже функции доступа (по аналогии с уровнем dao в жаве)

delaguardo14:01:35

@potapenko: возможно поможет опция компилятора source-maps-path, если она не проставлена, то сорс мапы читаются по невалидным путям

artemyarulin14:01:41

@potapenko: c RN source map не будет работать, ибо используются хаки для поддержки Figwheel (если совсем коротко - скачивается с помощью XmlHTTMLRequest пачка JS файлов и делается им eval. Браузер не в курсе про source map при таком подходе) Единственное решение это дропнуть Figwheel и начать использовать React Native packager (hot reload скоро там будет). Можешь посмотреть boot-react-native. Мое мнение что в долгосрочной перспективе все туда уйдут, фигвил дублирует то что RN умеет

potapenko15:01:57

@artemyarulin Посмотрим что там будет за hot-reload. figwheel все же где-то стейт сохраняет. И перегрузка там clojure-специфичная - неймспейсы. для меня ценность figwheel еще выводе ошибок компиляции clojure в js на лету. сохранил - посмотрел чего там плохо. еще бы выводили эти ошибки как в html - в виде панельки. Кстати может имеет смысл эти ошибки как-то перехватывать и показывать в native компоненте…. Чтобы не смотреть каждый раз в chrome, когда не догружилось.

potapenko15:01:31

нужно порыть figwheel, должен же он слать эвент какой….

artemyarulin15:01:36

посмотри мастер re-natal - там ворнинги теперь в симуляторе показываются

artemyarulin15:01:16

там очень просто на самом деле - любой console.warning выводиться как желтая хрень в эмуляторе

potapenko15:01:23

о! re-natal использую, нужно обновиться.

potapenko15:01:27

спасибо!

artemyarulin15:01:54

ага, там тока ради вот этого стоит проапдейтится: https://github.com/drapanjanas/re-natal#using-external-react-native-components

artemyarulin15:01:30

и в итоге в ближайшее время будет поддержка картинок https://github.com/drapanjanas/re-natal/issues/11

artemyarulin15:01:25

если не секрет - ты играешся для себя пока или уже что серьезное пишешь с планом в аппстор зарелизить?

potapenko15:01:22

с картинками отлично simple_smile а то приходится каждый раз руками добавлять require в index.ios.js

potapenko15:01:40

пишу проект в продакшен

potapenko15:01:58

выбор технологии за мной, клиенту без разницы

potapenko15:01:06

поэтому стэк весь мой

potapenko15:01:32

думаю свои проекты потом тоже на native делать, очень нравится

potapenko15:01:03

минусы именно в поиске эксепшена какого, посмотрю как в реальном приложении у пользователей он будет работать

artemyarulin15:01:45

о, это круто, молоток simple_smile

potapenko15:01:46

в аппстор - да

artemyarulin15:01:06

дада, реакт нейтив сам по себе как глоток свежего воздуха

artemyarulin15:01:23

а с ClojureScript + РЕПЛ дак прям вообще кайф

potapenko15:01:31

согласен, нейтив - прекрасен

potapenko15:01:19

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

potapenko15:01:37

re-frame еще понравился из последнего

potapenko15:01:16

по началу баловство - rest какой и стейт в компонентах как бы казалось достаточно

potapenko15:01:38

но как стал использовать - нравится - слой query вынесен и можно реиспользовать

artemyarulin15:01:50

RN более-менее стабилен, не должно с этим быть проблем. Единственный косяк там (с JS в том числе) - error/crash reporting. Т.е. стандартные механизмы (посмотреть краш репорты в админке апп стора) не очень хорошо работают

potapenko15:01:34

думаю краш-репорты слать на analitics

artemyarulin15:01:36

ре-фрейм ничо да - хотя я сча везде om-next пропагандирую, очень хорош для мобильного

potapenko15:01:43

google analitics

artemyarulin15:01:45

дада, тоже вариант

artemyarulin15:01:53

я лично http://loggly.com юзаю, там бесплатный тариф есть и гибче чем GA

potapenko15:01:58

выбрал реагент по причине лаконичности, ом не очень мне приглянулся. протоколы засоряют.

potapenko15:01:17

но это имхо конечно.

potapenko15:01:20

так сложилось.

potapenko15:01:29

next пока не разбирал.

potapenko15:01:37

но смотрю в эту сторону тоже.

potapenko15:01:26

http://loggly.com однозначно нужно поглядеть, положу в копилочку simple_smile спасибо.

artemyarulin15:01:38

ага - ну ты заходи на чай в #C0E1SN0NM, там мейнтейнеры всех либ (re-natal,natal, boot-react-native, etc.) сидят

artemyarulin15:01:23

заодно о своих успехах расскажешь

nek16:01:51

всем привет

nicola16:01:47

@andfadeev думай данными, а не моделями. Посмотри в сторону honeysql. И разделение на сервисы и слой доступа поможет в твоём случае.

nicola16:01:07

Ассоциаций не существует ;) есть функции и данные

nicola16:01:46

Каждое взаимодействие (http request, ..)- функция, которая построила запрос, вытащила или сохранила данные и трансформировала в ответ

andfadeev18:01:26

@nicola: да я понимаю что данные на первом месте и все такое, но по факту корма не вносит никаких дополнительных абстракций, нет маппинга между таблицами и сущностями в коде, просто довольно удобный dsl (на мой взгляд), я уже посмотрел и honeysql, lingvosql, korma, suricatta. Как по мне то в корме основной минус это то что в либу зашито создание коннешн пула. Я так понимаю у вас honey+jdbc+postgres используется?

andfadeev18:01:45

вопрос был скорее даже про разделение функционала который общается с базой по неймспейсам, тут не важно какой dsl юзать

nicola18:01:34

Зачем тебе понадобилась взаимная зависимость namespace?

andfadeev18:01:09

ну мне было бы удобно иметь many-to-many отношение, но если разбить это на два неймспейса то получаю взаимную зависимость

andfadeev18:01:18

это есть говорить в рамках кормы

nicola18:01:11

Что такое ассоциация?

andfadeev18:01:58

есть аккаунт и канал, и есть подписчики, что по сути является таблицей связкой этих двух сущностей

andfadeev18:01:47

а, я не так прочитал вопрос, я где-то писал про ассоциации?

nicola18:01:19

Ну вот поразмысли над понятием ассоциации ;)

nicola18:01:36

почему она приводит к взаимной зависимости?

andfadeev18:01:08

ну потому что они по факту взаимнозависимы

nicola18:01:35

Зачем им зависить друг от друга?

nicola18:01:21

Ссылочная семантика?

nicola18:01:34

Значения (данные) не зависят друг от друга

andfadeev18:01:28

ну обычная many-to-many связь через доп. таблицу

andfadeev19:01:05

не совсем понял что значит что данные не зависят друг от друга

nicola19:01:38

Ну достаю я в одном namespace канал с подписчиками, а в другом подписки с каналами - если это значения, то нет никакой связи между ними

nicola19:01:34

Как между 2/3 и 3/2

nicola19:01:39

Это корма тебе её навязывает ;)

turtle19:01:42

Никто не запускал lein из другой папки, нежели папки проекта?

nicola19:01:27

Только lein new