This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-05-24
Channels
- # beginners (12)
- # cider (3)
- # clara (3)
- # cljs-dev (3)
- # cljsrn (19)
- # clojure (83)
- # clojure-android (1)
- # clojure-dev (15)
- # clojure-dusseldorf (1)
- # clojure-greece (30)
- # clojure-italy (10)
- # clojure-madison (1)
- # clojure-nl (6)
- # clojure-russia (274)
- # clojure-spec (51)
- # clojure-uk (31)
- # clojurescript (38)
- # core-async (7)
- # cursive (11)
- # datascript (1)
- # datomic (63)
- # emacs (10)
- # figwheel (1)
- # hoplon (27)
- # jobs (11)
- # klipse (4)
- # lein-figwheel (1)
- # lumo (6)
- # nyc (1)
- # off-topic (278)
- # om (12)
- # pedestal (10)
- # protorepl (31)
- # re-frame (13)
- # reagent (23)
- # remote-jobs (1)
- # spacemacs (9)
- # untangled (24)
- # yada (54)
@a.espolov используй backquote для кода в slack :>
ну в общем мы все умрем, кложа ничем не лучше, коммьюнити не тащит, язык сложный, гошечка захавает весь мир ибо хуяк-хуяк-и-в-продакшен. Ах да и типов нет, тока для хелло ворлд годится
примеры-то в бложике про читабельность - все мелкие. монстра написать с уникальными префиксами - не рад будешь
@artemyarulin а чувак, что всю заваруху устроил про "назад в руби" - я удивлен, что он во время презентации не посёрбывал четверной карамельный латэ-макиато
да неа ну чо вы сразу на чувака. По мне дак проблемы есть у кложи, чего уж
Кложа прям вся из себя совсем другая и не мейнстрим
оно конечно как наезд слабоват, но по мне дак много народа даж не лезет пробовать из-за скобочек и вообще
понятно, что есть, но 1) где их нет, 2) и ну вот правда от него теперь ничего не могу всерьез воспринимать
@artemyarulin да, странный доклад. я его тоже послушал местами внимательно. имхо, для того чтобы писать на кложе надо понять идеи языка, а также идеи того, как проектировать системы по принципу simple (вне зависимости от языка). я вот первый свой проект на кложе писал как на java. то есть это был код в синтаксисе кложи, но целиком построен императивно: огромные, по 50 строк функции, которые делают много разных операций, циклы и т.д. хуже того я пытался контрукции java насильно сделать в кложе. короче кложа в тот период была жутко не удобная и я вообще не видел никаких преимуществ. а причина была банальна, я просто был фиговый программер.
я не вижу смысла пиарить кложу исключительно ради притока юзеров, это опасная и не уверен, что хоть сколько-то полезная метрика
вот вот, все так на кложуре по началу пишут - у меня первый год только такое и выходило
@artemyarulin а какие у кложи проблемы? можешь привести пример?
В этом мне кажется и есть главный наезд - ну у кого есть год на это
По мне дак закрытость экосистемы. Безумно рад что CLJS скоро сможет напрямую с node modules общаться, но чего ж они не сразу такое сделали(
Рантайм опять же тяжелый - сделать либу на CLJS котоую можно юзать в JS мире почти без шансов
Java > Clojure тоже самое, вроде как в теории можно дернуть, но в реальности неа
@leov https://twitter.com/ztellman/status/865655165163945990 вот этот тред в сааааааамое начало мотай
оффтоп: В твитере читать треды и длинные обсуждения такой ад
@artemyarulin насчет закрытости, я такого не увидел. наоборот. книжек по кложе я уже имею около 30. самая годная для начинающих на русском языке, 13 года, от Чаза Эмерика. докладов на youtube просто очень много. Как настроить IDE тоже море туториалов. С чем я могу согласится так это нужно много желания, чтобы "оседлать" кложу.
блин, чуваки без опыта лезут сразу системы монстрить, потому что бытовуха на кложе/скрипте за часы решается, и потом расстраиваются, что нельзя скилл заимпортить
она и правда туговато идет, если на жаве/питоне/жс пересидел чутка, но как-бэ язык-то тут при чем?
ну это старое видео. он же сам сказал - они пошли в микросервисы, а это срезает яйца само по себе. пофиг на чем. второе - ну вот я рубись рельсист кложу осваивал очень и очень долго. а они вроде с места в карьер
а что тогда причем?
1) нужно знать runtime на котором пишешь программы. Если это JVM значит надо знать как минимум язык Java, а также Java memory model. Благо лекции Шипилева в достатке на ютубе. Но я реально тратил много времени, пересматривал их. Приходилось много читать, т.к. не всегда хватает багажа знаний.
@artemyarulin язык пишется, чтобы решить проблемы других языков, или нишу занять пустующую. переходить на язык добровольно, и быть недовольным, что он не такой, как остальные (проблемы которых создан решить) - это тупо
2) нужно уметь проектировать системы. Это уже знания вне языка. Приходилось читать книги по интеграции, SOA, смотреть про фреймворки, понять идеи. Без этого багажа, только если рядом есть гуру, кто может помочь выстроить ясную архитектуру.
нету фрейворков на кложе. На рельсах хоп-хоп и готово и все уже расказано как и чо
да не нужен бекграунд, чтобы лячкать. а чтобы не лячкать - он везде нужен, не только в кложе. просто типа если рантайм называется по-другому - это уже недружелюбно внезапно
@leov короче надо как-то уметь бить на модули и выстраивать общую логику системы, выстраивать процессы
им хочется так же хоп хоп, только чтобы синтаксис был чуть другой, такой хоп - и "выучил язык" в резюме. а потом такие на работу приходят к тебе
ну вот вы кложуру продаете там у себя другам/подругам - вы про что рассказываете? Что репл тащит? Это продать тяжело ибо пока не попробуешь не поймешь а большенство думает что запустить node
это репл и фе
я практиковался на интеграционных проектах, с процессной составляющей. короче по началу, я вообще не понимал что происходит вокруг, когда шло внедрение большой системы от ibm или oracle. у ibm мне очень помогли их redbook'и особенно начало каждой книги.
@artemyarulin недавно я продал спеку аналитикам АС. это те кто пишут doc/xls когда переводят бизнес-требования в детальные технические задания. не поверишь, аналитики реально увидели сокращение работы в том, что если они на спеке излагают доменную область и что еще лучше - API системы, то им не приходится заниматься писаниной, которую потом все равно на тестах и ПСИ надо проверять.
я не вижу надобности продавать, кроме как "чтобы на галере можно было скоро и кложу писать"
Спека - зачет, это я целиком согласен что прорыв.
Продавать - чтоб было больше чем полтора человека которые знают о языке
единственные полтора, которые тебе нужны: рич и нолен, чтобы кложа в жаву и жс компилиться не переставала
Чтоб были вакансии, чтобы были девы и проекты. Я не хочу чтоб кложа стала вторым хаскелем - самый пиатый язык в мире, но никто не юзает и никто не слышал
это как просить одновременно и минимальную хп в макдональдсе 15$ и автоматизацию: 1 из 10 дадут 15$ в час, а остальных 9 на тачскрин заменят
это так про руби можно питузятникам рассказать "какой руби чудесный", чтобы половина свалила (и наоборот), и в итоге ниче не поменяется в рабочих местах и балансе вцелом, потому что, что джанга, что рельсы - 1 в 1
куча либ в тех же других языках (js фреймворки лол) - неочень метрика процветания и благополучия, и далеко не все это понимают.
у чуваков вон обычно диссонанс, когда у кложи 3 либы для какого-то задания, и тем по 4 года, и они работают. новых нет - начинается паранойа, что "заброшеные и всё пропало"
@artemyarulin по своему опыту я могу сказать, что все измеряется деньгами. я вижу ежедневно, как "больные" ООП архитекторы рожают таких монстров на бумаге, что диву даешься. далее эти монструозные конструкции выливаются в сотни (!) модулей на Java, которые пишуться годами. Далее у чуваков возникают жуткие проблемы из-за того, что они сложные классы сериализуют, десериализуют и на это тратятся тоже ресурсы. когда начинаешь вникать в суть - какую проблему бизнеса надо было решить, вдруг понимешь, что там нужно небольшой 1 модуль, который фокусно решает это проблему. кложевские мапы отражают просто данные доменной области. а транзит реально решает проблемы коммуникации.
самое главное, @mike1452, сколько гребцов себе ипотеки выплатят, пока реализуют "архитектуру"
у кого-то может и дети в садик уже пойдут, за который написание геттеров фул тайм заплатило
короче когда я бизнесу притаскиваю уже работающий прототип, я вызываю жуткий гнев коллег по цеху, т.к. 1 маленький uberjar решает проблемы бизнеса уже сейчас. бизнес начинает терятся, мол а нахера нам монстр?
@misha да не без этого наверно.
в общем сейчас пишем вместе с аналитиками прототип реестра данных. это такой сервис, который будет содержать всю информацию о структуре данных, различных предметных областей, и информацию об API модулей. все в спеке с удобным веб-интерфейсом и визуализацией
а над этой же проблемой трудится уже 3-4 года целых 2 департамента, в купе с уважаемыми дорогими вендорами и пока с 0 результатом.
вот будет потеха, когда мы демо устроим бизнесу.
это кор фича для бизнеса.
обещания и презентации
когда я показал только генераторы, валидаторы, парсеры ( на голой спеке), те кто реально знает проблему реально офигели.
@mike1452 и ты думаешь что это все из-за языка? Ты бы сам тоже самое не сделал бы на жаве?
неа, не сделал.
@artemyarulin Ну слушай, на джаве просто заколупаешься писать горы кода.
просто потому, что нет тех идей, нет simplicty
и нет культуры работы с данными как сданными
ну на жаве то 100500 либ, там вроде уже вроде всякие хипстерские фреймворки появились чтоб микросервисы и все дела
когда программеры запихивают данные в стринг, они этим хоронят данные, т.к. после этого надо писать парсеры, чтобы достать их оттуда
я в посление месяцы джавы писал всё статик методами, ох было непросто, оно не то что в глаза - оно в экран не помещается
@artemyarulin Мой преподаватель логики (он же один из первых системных программистов в СССР) часто упоминал теорему из, опять-таки логики, что введение правильного понятия сокращает код алгоритма в башню экспонент раз.
@artemyarulin ага, спринг 😃
в жаве обществе тебя бы канделябрами за такое побили - статик методы зло ибо нельзя ничо замокать и мок фреймвор не поддерживает такое
кложа очень сильно патчит мозги. просто учит думать правильно. после нее когда в любой язык возвращаешься по-любому будешь писать лучше
там целая индустрия на ютубе уроков "как мышкой создать пустой спринг проект в эклипсе/идее"
@artemyarulin А в ответ раз такой: и сделал фабрику синглтонов, чтобы тесты мокать 😃
да, точно - целая индустрия плодит говнокодеров.
>кложа очень сильно патчит мозги. вот тут соглашусь - ушел счас на JS/TypeScript, а один фиг пишу все как на кложе 😄
и даже если есть кто-то вменяемый в роли архитектора, то он из архитектора превращается в ассенизатора.
и именно эти говнокодеры, после hello world туториалов, когда видят кложу естественно видят в ней нечто чужеродное, инородное и самое главное не понятное. вот в чем сложность кложи
@mike1452 я думаю, как бы это не прозвучало, что не каждым мозгам приживается, + не каждые способные мозги усилия прилагают
@misha да я тоже это заметил. не каждые мозги ее усваивают.
об этом кстати сам Шипилев (очень крутой программер) говорил. что он пробовал кложу и говорит, что мозг у тех кто на ней пишет переформатирован так, что он не смог такое с собой сделать
я ему этот вопрос на JUG'e задавал
ну а потом появляются мемасики про лисп и башню из слоновой кости, и стереотипы "пришел в кложу, потому что считает себя на 2 головы выше остальных" (как @kishanov, вроде, написал)
как говорил Рич, кложа воспринимается как некая технология от инопланетян. то что у них необычной формы корабли и технологии не значит, что они плохие или не эффективные. просто она своей формой реально выглядит как alien's технолоджи
это который "плотный сиплюплюсник?" там же сильно близко к металу, там императивное всё потому что железо оно такое, он же не сайтики пишет
да, он с++ использует и пишет кишки JVM. и у него мозг реально под императивщину заточен по понятным причинам.
@fmnoise питон/руби/жс - жеж погибче джавы. с 0 сайтики писать на джаве наверное не пойдешь. кого знаю начинавших с джавы - все сразу в интерпрайз мясорубку попадали
после питона java не зайдет
это если только по нужде, когда есть хочется
у меня после питона разжижились мозги на джаве, аж ссыкотно стало, что после окончания яконтракта никто такого не возьмет на работу жидкого
@misha А что, притащить библиотеку для иммутабельных структур данных уже никак? 🙂 Или там, скажем, react native, если это джава для андроида.
@dottedmag то было сколько-то лет назад, я потому за кложу и взялся, потому что надо было мозги взбодрить
очень рад, что мне не приходится "продавать" кложу никому, кроме как заходя к знакомым на галеру подстрекать и подкалывать, когда они там слева направо геттеры перекладывают по несколько часов
@andmed Есть культура работы с данными, как с бомбами: их нужно разложить по чугунным контейнерам, и доступ к ним делать только через тщательно задраиваемые люки. Чтобы случайно не пошла цепная мутация.
@dottedmag да, очень похоже. в этой всей мешанине контейнеров очень сложно вносить изменения. столько ругани вижу, когда из одной и сотен команд требуется внести в core слое изменения. это вызвает каскадные изменения в модулях, которые делают другие команды. и так идут годы
Отсутствие цепных мутаций на уровне runtime влечёт цепные мутации на стадии разработки. Это интересно.
блин, я вот не понимаю как в кложе большие проекты поднимать, все ж мапы абстрактные. У нас счас жс проект 25к строк кода, 6 человек, мы переходим на TypeScript ибо без типов тяжко
это рантайм
@artemyarulin прошла мода на больших монстров. сейчас модно делать микросервисы. как сказали бы когнитектовцы you don't want do that.
java тоже разная бывает. я вот счас на проекте - прикольно. фреймворков нет, пишем все на либах. микросервисы. парни со скалы вообще пришли. написал цикл на 3 строчки, от.. наказали и сказали переделать в стрим)) ну вот то что у них я б не предложил переделывать на кложу, рефакторинг, типы и все такое.
ну опять поехали - большие проекты не сделать без типов, а вы не делайте больших проектов!
Кроме того, если не раздавать этот джаваскрипт в оффлайновые места, то даже и рантайм-проверки очень полезны: мгновенно же можно отрапортовать о любом нарушении инварианта и поправить.
поэтому 3-5 микросервисов будут решать твою бизнес задачу. все взаимодействие между ними - в спеку.
@mike1452 Микросервисы нужно делать тогда, когда от них есть польза. А польза от них начинается сильно позже, чем многие думают.
С другой стороны, если не думать о микросервисах, то тогда, когда они будут нужны, уже будет поздно пилить монолит.
не, типы - полезняк, только жеж нужно вменяемо к вопросу подходить. ну и с учетом того, кто в команде. если гребцы за зарплату гребут, от таких джавой проще страховаться, оно красненьким подчеркнет и все спокойны
@dottedmag ага, они так и говорят, мол на расширяемость. ну, разные подходы. но они писали серьезные проекты, можно верить
скорость внесения изменений - вот что важно. когда у тебя большой проект, то скорость изменений низкая, т.к. тебе нужно кучу всего взаимно протестировать и релизится монолит сложнее. а ты попробуй проектировать систему так, чтобы вносить изменения на проде каждый день.
это очень сильно меняет мышление.
@mike1452 Если сделать микросервисы не единицей физической, а единицей логической -- хочешь, выставляй в сеть, хочешь -- в виде библиотеки, то тогда всё ок.
@mike1452 Ну вот я работаю в команде, где микросервисов нет, а релиз на прод 10 раз в день. Около сотни разных типов серверов, от одного до тысячи экземпляров.
@dottedmag микросервисы это конечно не самоцель. это просто способ решения проблемы скорости внесения изменений на прод. как их готовить, это уже личное дело команды.
вот вот, у меня монорепо, но внутри 4 апа, тоже по 20 раз в прод в день уходим. И блин сыкотно рефакторить иногда без типов
любимая команда grep
@artemyarulin Тесты и волшебная кнопка "revert release" решают.
а что такое микросервис? джава неймспейс запакованый в отдельный джар с собственным вебсервисом?
значит вам они и не нужны. значит код так организован, что новичку, чтобы внести изменения не надо тратить первые 2 месяца работы, чтобы изучить 5000 классов.
@dottedmag да куда без этого ага
@artemyarulin выбрось эмакс, идею установи ;)
@andmed In-process чтобы можно было втащить. В этом случае должно работать так же, но с меньшим количеством видов фейла.
А иначе получается ботва, когда 100500 сервисов, и каждый из них только 2+2 умеет складывать.
вообще, большие системы - это сложно по-определению. было бы просто - было бы несколько маленьких систем вместе
@misha это нечто, что решает какую-то бизнес-логику, которая достаточно автономна. то есть у микросервисов есть фокус на конкретной задаче и они делают их очень хорошо. Если логика не влезает в концепцию текущей логики, надо ее отделать.
микросервисы очень сложны в управлении. но я так понимаю это меньшее из зол.
у всего есть трейдофф
да кста вот поддержу - можно сделать моноговно, а можно сделать по хипстерси и распределить его ровным слоем по сервисам
@misha у микросервиса есть четкая спецификация и контракт
ну, в микросервисах система размазана по сети. ты посыпался и я об этом не узнал, в итоге строим третий, через очередь, для персистентности, и тп. разные подходы то , не?
а чо внутри монолита контракта нету? там он даж компилятором проверяется 🙂
и микросервис закрывает доступ к своей базе. доступ к данным только через API. то есть про классический ETL надо забыть
на джава работе я монорепу разделил на отдельные репы, чтобы от нубасов защититься и не откатывать постоянно изменения
я первым делом на работе 6 репо в монорепо смержил 😄
@andmed да, там надо очень много вложиться в систему управления, деплоя и мониторинга, чтобы пониать что происходит в распределенной среде.
причем кста аргумент тотже - чтоб от нубов защититься ибо мне 1 репо контролировать проще
это довольо сложная задача, в которой я сейчас упражняюсь
о да. деплой. я сделал скрипт потаенный. он грепает по всем репозиториям, когда надо найти где что лежит. я о нем никому не говорю)))
греп, омг, в каком веке мы живем
@artemyarulin в том то и дело, что внутри монолита много соблазнов напрямую дергать классы разных модулей. и все. с этого момента начинается тесная связанность
девочка одна вызывала соседний метод сервиса через http "потому что там уже в хендлере собрано" (кароче сервис сам себя дёргал через интернет)
@dottedmag да пока просто rancher и то в пилоте
ну дак код ревью, пулл реквесты, доки, разговоры и вообще communication is the key
я если очень хочу я могу и на другой микросервис по ссш сходить и там из базы все прочитать ибо удобно
@artemyarulin а теперь представь что ты правильно попилил монолит, выставил между модулями контракты, и каждый модуль занимается своим узким бизнес-функционалом
тебе осталось из физически разнести, и получишь почти микросервисную архитектуру
ну это да, соглашусь
правда добавятся другие заботы
@mike1452 Тут есть ещё один оверхед: появляется сложная оркестрация контрактов. Новая фича, требуется поменять контракт и начинается пляски "сначала обнови то, потом это, а потом третье"
да, это реально проблема
и я учусь ее бороть
пока в начале пути
т.е. создали проблему и героически ее решаем?
это проблема меньшего порядка
ипотека сама себя не выплатит! простите 🙂
А потом ещё все комбинации поддерживать, если в одном из трёх сервисов баг и его нужно ревертить на предыдущую версию.
да нене, я за микросервисы
хуже когда никто не понимает что происходит в монолите. и процесс внесения изменений просто встает
монолиты нужно уметь готовить, я еще не разу не видел хорошо приготовленного
в книге про микросервисы так и начинается рассказ: если вы не умеете готовить монолиты, то микросервисы вам не помогут
более того микросервисы - это не техническая, а организационное решение проблем коммуникации в организации
ладно, пойду спать - спасибо за холиварчик, а то тут скушно было в последнее время
рекомендую посмотреть на ютубе выступление CTO от Zalando на Highload++
он про это подробно рассказал
@mike1452 А Безос про это что-нибудь публично рассказывал? Он же был, наверное, первый, кто микросервисы в большой организации внедрил.
да, там как раз излагался опыт Zalando как они до микросервисов докатились
показана эволюция архитектуры и плавное возникновение проблем. суперский доклад
безос, не безось, но чувак технарь
я наверно про CTO наврал
выступал наш бывший соотечественник
я думал вы про амазонового безоса, думал он просто деньги считает и интервью про vision даёт,
он живет в германии и он не CTO а архитектор тамошний
так авс-то у них получился тогда, когда безос пришёл и сказал "давайте, живо всё на микросервисы".
> Werner Hans Peter Vogels is the chief technology officer and Vice President of http://Amazon.com in charge of driving technology innovation within the company.
мне кажется, в интернетике мало кто понимает, что можно в микросервис выносить; потому что у половины бложики уже на микросервисы перехачены
https://www.youtube.com/watch?v=l5ug_W9iFUs&list=PLiBYz3OQubLryzLMpCrSZ7rS87sxo5ZO_&index=11
вот этот доклад
@misha в начале нашего холиварчика я как раз и говорил, что уметь готовить архитектуру систем нужно учиться и этот навык не связан с языками программирования напрямую
работал я в заландо - анархия там высшего порядка, но распределенная это да 🙂
хотя опять же сложное что-то построить и чтоб было с иголочки хз и возможно ли вообще
а если архитектуру говить плохо, то на кложе можно еще больше упороться чем на статически типизированном языке
@dottedmag про лошадь - зачетно! реально я такое часто вижу
Так эта. Программист на Коболе может написать программу на Коболе на любом языке программирования.
@larhat Отличное интервью. Он сжато рассказывает как раз про всё то, о чём сейчас пишут тонны текста и снимают годы видео.
@dottedmag http://www.allthingsdistributed.com/ бложек его, если чо; вообще толковый чел
Вот прямо в одном ответе на вопрос 1) почему сервисы хорошо для масштабирования; 2) почему сервисы - это про менеждмент команд; 2) девопс-девопс-девопс 😄