Fork me on GitHub
#clojure-russia
<
2016-02-01
>
artemyarulin06:02:56

@misha: Ага, спасибо. Ну значит как и думал - у ом-некст есть просто несколько фишек (idents) которые как раз делают структуру данных плоскими, по типу:

{:cur-user [:person/by-id 22]
  :person/by-id {:22 {:name “John” :age 22}}}
Ну ок, после всех разговоров я понял что ом-некст state object пересекается с datascript очень сильно, смысла брать нет, всем спасибо

misha08:02:17

@artemyarulin: на сколько я понял, если использовать датаскрипт с ом-некстом, то "отваливаются" омовы запросы (либо из них самому парсить аргументы в read-методах) и нормализация, о которых ты, видимо, и написал

artemyarulin08:02:27

@misha: Ага, именно так - мне в ом канале сказали что лучше счас пока этим не заниматься, многое отваливается и приходиться переделывать. Ну и да, другой язык запросов совсем. Хотя один чувак написал что он начал с датаскрипт, потом через месяц откатился на ом и в итоге потратил часик на переписание всех запросов, т.е. оно там не омг совсем другое, можно переехать в будущем

misha08:02:16

переезжать с даталога на базовые запросы и обратно – достаточно просто, да.

misha08:02:33

я сам отложил ом-некст до времен, пока там утресется всё, и станет проще датаскрипт прикручивать, либо пока ром не заработает для реакт нейтива ; )

misha08:02:25

дел по всему стеку хватает, и хитрый js - последнее, во что мне хочется лезть

artemyarulin08:02:51

> ром не заработает для реакт нейтива чо за ром? Слышал тут пару раз, и почему он так важен?

artemyarulin08:02:24

аа, еще один враппер над реактом, ясно simple_smile

misha08:02:25

сильно проще ома и тем более ома-некста

misha08:02:29

с учетом того, что реагент "портировали" на реакт нейтив достаточно просто, думаю, что с ромом не должно быть особых проблем, просто нужно, что бы кто-то сделал ; )

artemyarulin08:02:48

ну ом-некст это не просто враппер над реактом, это еще и relay/graphQL штуки

rm08:02:01

кто сказал фреймворк :)

misha08:02:32

ну и там саблоновский хтмл, а не *ские (om.dom/div ...)

artemyarulin08:02:09

да ну, заменить om/dom на что-нить свое делов на час

misha08:02:16

ну рилей - это всё круто and all, но у меня на бэкэнде датомик, так что я как-нибудь без релея справлюсь simple_smile

artemyarulin08:02:23

ааа, тру, тада не надо

artemyarulin08:02:47

у меня просто мобайл - для меня возможность смержить 10 запросов в один прям маст хев

misha08:02:52

ну и да, там заменить, тут заменить

misha08:02:50

ну если на бэкэнде датомик, а на фронтэнде - датаскрипт, так и получается: реквестишь пулл-паттерном всё, что надо, и в дамки

artemyarulin08:02:20

это да, но чота я не готов еще датомик тащить на бек, хз пока

misha08:02:53

ну там да, нужно потратиться на осознание и деплой и может миграцию. я сейчас могу себе позволить, потому сразу за него взялся. если ресурсы/сроки жмут - ом может быть подходящей migration strategy ; )

artemyarulin08:02:24

а с rum тоже можно сделать компоненты которые хранят запрос какие данным им нужны?

artemyarulin08:02:33

query я имею ввиду

misha08:02:43

не знаю, не дошли руки пока. но думаю, что всё можно

misha08:02:53

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

artemyarulin08:02:49

>ну и да, там заменить, тут заменить simple_smile

artemyarulin08:02:23

останусь пока при оме, тем более он уже работает на мобайл

misha08:02:58

если познал ом - переходить пока что смысла мало наверное. но я не познал, и траффик на #C06DT2YSY канале меня настораживает при всём количестве "официальных" туториалов, документации и сторонних примеров

artemyarulin09:02:46

ну онож все еще альфа всеж, да и доки я бы не сказал прям что идеальны. Хотя и Девид конечно пишет, эм, не тривиально я бы сказал simple_smile

linuccio12:02:52

На react native можно использовать всё тоже самое, что и в веб-приложении?

linuccio12:02:07

reagent, datascript...

linuccio12:02:01

Сложно ли найти кложуристов?

linuccio12:02:00

Есть проект - фронтэнд сайта и веб-приложение. Не очень сложные)

artemyarulin12:02:38

@linuccio: Ну эм, если коротко то да, если чуть более детально то it depends simple_smile

linuccio13:02:21

Приложенька банальная вроде как. Несколько кнопок, экранов, общение с сервером по POST. Я просто никогда не делал еще их)

linuccio13:02:10

Сейчас начинаю это дело копать, разбираться, думаю в какую сторону лучше пойти)

kronos_vano13:02:38

Несколько кнопок экрано и общение с сервером я рекомендовал бы пойти в сторону питона или руби)

linuccio13:02:04

Почему?

linuccio13:02:36

А хотдеплой? Ведь это первый эксперимент, хотелось бы иметь возможность быстро править баги.

be913:02:47

хаха, такое и на ПХП можно сделать (простите)

be913:02:00

в руби хорошо с хотдеплоем

kronos_vano13:02:11

zero-time деплой есть на любых языках. накройняк green/blue деплой

kronos_vano13:02:13

или как он там

linuccio13:02:55

Я не ошибаюсь, тут кложуристы водятся?

linuccio13:02:57

Или как?)

be913:02:11

у всех своя история за плечами simple_smile

be913:02:16

вот я кложурист, я тут водюсь

artemyarulin13:02:34

брр, питон и руби не модные уже

vltar13:02:19

@artemyarulin: Почему? Кажется, сейчас clojure как питон лет 10 назад.

rm13:02:43

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

linuccio13:02:11

Так может я хочу разбираться?

be913:02:14

у каждого своя мода. что у одного устарело, то другому как раз впору как новьё

rm13:02:27

linuccio: дык вперед тогда :)

vltar13:02:34

@rm: Т.е. порог входа слишком высокий?

artemyarulin13:02:20

ээ, вы чо тут отгоривариваете чувака) Бери кложуру, все нормально там! simple_smile

rm13:02:47

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

be913:02:20

linuccio: формулируй более конкретные вопросы.

linuccio13:02:53

Ну, первый вопрос был - всё ли как в вебе и что не так

linuccio13:02:20

В react native

artemyarulin13:02:31

ааа, ты про него еще все?

artemyarulin13:02:46

т.е. ты хочешь приложения для веба или мобайл?

vltar13:02:56

для веба вроди

artemyarulin13:02:22

дак реакт нейтив он для создания нативных приложения для мобильных. Если хочешь веб то это обычный реакт

linuccio13:02:34

мобаил, в вебе будет что-то похожее, но там я в общем уже пробовал, понимаю что к чему

linuccio13:02:03

Мобаил под все две платформы)

linuccio13:02:01

Пересматриваю сейчас у Николая на канале видео по теме

artemyarulin13:02:12

Точка отправления тогда для тебя https://github.com/drapanjanas/re-natal

artemyarulin13:02:44

Это если конкретно, если хочешь посмотреть все варианты то http://cljsrn.org

artemyarulin13:02:03

канальчик в слаке #C0E1SN0NM

linuccio13:02:07

Сипасиба

rm13:02:30

https://clojars.org/err тыц-тыц, смотрите, я разработчик библиотек :)

artemyarulin13:02:02

ридми на 5 баллов, сразу понятно что про котов

rm13:02:13

ридми, да

be913:02:14

> Copyright © 2016 FIXME

rm13:02:25

ну все как обычно же

be913:02:27

приложил бы хоть пару фоток котиков

rm13:02:38

сначала всем рассказывай, потом думай

artemyarulin13:02:44

@rm: А ты прям реально все на монадах пишешь? прям хаскель со скобочками?

artemyarulin13:02:01

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

rm13:02:11

ну получается да, у меня все обернуто в эти either. Ну неидиоматично, но эти офигительные throw и catch вообще какие-то бесчеловечные

be913:02:55

в README не хватает мотивационного запила

rm13:02:17

я щас мотивационно запью от твоей критики :) ща все будет, погоди

be913:02:44

я-то хаскеллист никакой, открыл доки к cats и словил зевок

be913:02:28

а с другой стороны, вдруг это и есть «настоящий рулез»

be914:02:39

придумался новый глагол: нахаскелять. «Вася, глянь, я тут монад нахаскелял!»

rm14:02:45

"хаскелист, ты уволен, собирай свои монадки"

rm14:02:48

https://github.com/s-mage/err я написал ридми

artemyarulin14:02:17

@rm:

(defn serialize [data]
  (if (failed? data)
    {:status 400 :result "error" :cause @data}
    data))
чота как-то общая либа для работы с ошибками не должна наверно такое делать

artemyarulin14:02:45

"it should do only one thing and do it good”(c)

rm14:02:05

дада, это я как-то автоматически скопировал

rm14:02:08

уберу

rm14:02:27

спасибо

artemyarulin14:02:26

ок, поставил звездочку тогда 😄

artemyarulin17:02:09

а чо, у кложурочки и кложурСкрипт нету общего функционала для работа с датами?

artemyarulin17:02:25

@delaguardo: Угу спасибо, получается надо тащить clj-time, cljs-time, эх

delaguardo17:02:16

да и помнить что API не во всем идентичен

delaguardo17:02:22

совсем печаль

delaguardo17:02:44

особенно в том что касается форматирования

delaguardo17:02:32

а также, sic, mutable date object (((

artemyarulin17:02:37

нафег, тогда оставлю строкой пока

delaguardo17:02:54

так же какое-то время назад решил

niquola17:02:51

Ну в cljs есть ещё https://closure-library.googlecode.com/git-history/docs/class_goog_date_DateTime.html, её cljs-time и оборачивает

artemyarulin17:02:49

я просто счас cljc пишу, писать враппер с goog.dateTime и c java.text.SimpleDateFormat ну совсем не охота счас

niquola17:02:00

Да ладно, не ленись ;)

niquola17:02:30

Два parse, два serialize

artemyarulin17:02:48

нет поленюсь. Тут вот 256 человек счас сидят, вдруг кому скушно будет и он напишет это за меня simple_smile

niquola17:02:11

Скопируй из clj || cljs-time ;)

artemyarulin17:02:51

ну вариант ага, но пока строка сойдет, что может быть лучше чем четкая и конкретная дата в UI "2016-02-01T16:10:35.0000Z"

vltar18:02:57

Я вот не пойму (не спец в clojure), есть же огромные кучи от Java, там что нет ни чего внятного для дат?

vltar18:02:27

По java тож не спец, python у меня основной

artemyarulin18:02:08

дак есть конечно, вопрос то в том как мне универсальный код написать для Clojure И для ClojureScript

vltar18:02:04

я правильно понимаю, что в отношении дат, есть разночтения между Java и JavaScript? И в этом проблема?

vltar18:02:50

и по идее нужно написать две функции, разные по содержанию, но одинаковые с лица? simple_smile

vltar18:02:30

все, увидел ваши сообщения выше, читаю

artemyarulin18:02:57

ага, именно так, сложности нет, но влом simple_smile

vltar19:02:57

Лом похоже не обойти

vltar19:02:49

Посмотрел слегка, есть ощущение что надо как то прилепиться к goog.i18n.DateTimeFormat со стороны CLJS

vltar19:02:54

Получим возможность использовать маски типа dd MMMM yyyy

vltar19:02:23

И соотв. будет это схоже с java.text.SimpleDateFormat

vltar19:02:03

А скажите, есть ли одуплялка? Ну дескать, кто я кложа или кложаскрипт в данный момент?

rm19:02:04

http://dev.clojure.org/display/design/Reader+Conditionals одуплялка называется reader conditionals

andre19:02:44

а кто-нибудь lighttable пробовал? или он не зашел?

rm19:02:02

он был некоторое время заброшен, а сейчас сообщество его откопало и вроде как-то улучшает даже. Я пробовал 10 минут и вернулся в вим, потому что мне в нем привычно, а во всем другом нет

andre19:02:32

а мне вот к несчастью в идее привычно но она стала дорогая и не поворотливая

andre19:02:42

думаю куда с нее пойти

andre19:02:12

интересно 320к собрали и забросили?

artemyarulin19:02:18

идея это которая курсив?

andre19:02:15

и да кстати еще и курсив кучу денег стоит

andre19:02:20

и глючит simple_smile

artemyarulin19:02:22

ну прям уж не кучу

andre19:02:40

ну для вас европейцев не кучу ) хотя лайтовый плагин

andre19:02:52

там за что платить непонятно

artemyarulin19:02:02

а хотя если честно не знаю сколько, соточку?

artemyarulin19:02:20

а точно, я все еще на 30 умножаю по старой привычке simple_smile

andre19:02:44

20 баксов ему красная цена

artemyarulin19:02:07

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

andre19:02:55

в курсиве? да ниче особого, просто подсветка кода, навигация рефакторинг все дела, взаимодействие с реплом

andre19:02:14

просто для тех кто в идее привык . оч удобно

artemyarulin19:02:57

а там кста дебаггер сделали?

artemyarulin19:02:11

я читал что в cider его прилипили, но все лень было попробовать

andre19:02:37

я дебаггера не обнаружил

andre19:02:48

в курсиве

artemyarulin19:02:38

ах, целый вечер сегодня парсил xml зипперами, прям радость и бабочки:

(defn message [node]
  {:subject (xml1-> node :Subject text)
   :id (xml1-> node :ItemId (attr :Id))
   :change-key (xml1-> node :ItemId (attr :ChangeKey))
   :attachments? (xml1-> node :HasAttachments t-bool)
   :received (xml1-> node :DateTimeSent text)
   :size (xml1-> node :Size t-int)
   :from (-> (xml1-> node :From :Mailbox) mailbox)
   :read? (xml1-> node :IsRead t-bool)
   :body (xml1-> node :Body text)})

(defn find-item-response [node]
  (let [root-folder (xml1-> node :FindItemResponse :ResponseMessages :FindItemResponseMessage :RootFolder)]
    {:messages (map message (xml-> root-folder :Items :Message))
     :more? (= "false" (xml1-> root-folder (attr :IncludesLastItemInRange)))}))

alwx20:02:36

курсив имхо выигрывает за счет стандартных идеевских Find Usages и Go to definition

alwx20:02:32

но, к сожалению, из-за кучи динамики в языке, все это часто не работает

alwx20:02:01

и еще мне не нравится видеть в коде что-то такое

alwx20:02:25

конечно, это решается посредством .ext-файлов, но писать такие файлы для каждого JS-плагина — так себе развлечение

artemyarulin20:02:55

.ext файлы это которые externs? Ну в принципе они нужны в любом случае если хочешь использовать advanced compilation

andre20:02:13

блин столько новых слов узнаешь каждый день в этом чатике simple_smile

andre20:02:30

нужно гугл прям сюда встроить чтобы по 10 раз не вставать simple_smile