Fork me on GitHub
#clojure-russia
<
2016-02-16
>
turtle00:02:39

rmuslimov: положа руку на сердце, опирался бы на вариант А. simple_smile

turtle00:02:23

Новые эффективные технологии интересно применить в каком-нибудь стартапчике с непонятным будущим. Где нужно сделать всё быстро и без лишнего напряга. Собственно, cljs в этом поможет. В остальном - если cljs для cljs, а не для продукта, то как-то ниочень.

seryh05:02:32

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

dottedmag06:02:23

@turtle: Не работает так. Стартапы - это поиск бизнес-моделей, ещё и cljs туда впихивать - рецепт неудачи.

artemyarulin06:02:45

Как мне сказал мой друган - “Сеньора дева отличает от обычного дева тем что он может аргументировать каждое решение”. Если новая технология ради новой технологии - то не взлетит. Пример: Хочу rust, ибо нам нужна C++ скорость + контроль мультипоточности + общение с кучей готовых С++ либ, ОК Хочу Кложуру ибо мы хотим заюзать Java Netty как один из самых быстрых серваков + репл позволит нам сделать 100500 интеграций с другими рест апи гораздо быстрее, ОК Хочу Го ибо мне насрать на бизнесс и хочу чтоб все умерили - NOT OK

Kira Sotnikov07:02:10

хочу кложу ибо мне насрать на бизнес

rmuslimov07:02:57

спасибо, за ответы парни - мне все-таки кажется мы все время съезжаем немного не туда. Это указывает на то, что вопрос сформулирован неверно или проблемы вообще нет

artemyarulin07:02:18

ой, перечитал вопрос simple_smile

artemyarulin07:02:12

а какой город? Просто в мухосранске обычных девов то 2 с половиной и вообще не вариант. В столице да, можно и хипстеров на пролог найти

rmuslimov07:02:40

bay area c опцией работать удаленно

artemyarulin07:02:14

дак вообще проблем быть не должно. Наверно.

artemyarulin07:02:32

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

kharus07:02:58

Ну да. В bay area и консалтинг от cognitect в качестве страховки тоже опция.

kharus07:02:36

К вопросу. Мне кажется, многое зависит от структуры и срочности проекта.

abtv07:02:47

@rmuslimov: почему просто не работать с удаленно без опции? Сильно расширите географию и, соответственно, аудиторию.

abtv07:02:46

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

kharus07:02:00

Я как-то работал в проекте, где “Мы делаем скала, потому что многопоточно” Но людям скала так сильно порвала шаблон, что началась сплошная копипаста ибо как программировать никто не понимал.

niquola07:02:35

С людьми мне кажется проблема не в технологии ;)

rmuslimov07:02:01

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

Kira Sotnikov07:02:33

Почему-то многие не любят удаленщиков

niquola07:02:25

Возможен даже обратный эффект, когда молодая интересная технология станет решающим фактором в принятии решения идти к вам или не идти

artemyarulin07:02:55

дада, как там LISP as a secret weapon ? simple_smile

Kira Sotnikov07:02:22

Кстати, плюсую Николая

kharus07:02:24

Забавно, что Грэм который всё это писал на программирование вообще забил.

kharus07:02:45

Есть в общем оружие посильнее лиспа - эссе simple_smile

niquola07:02:01

Ну это правда, взгляни на @prepor - 4 человека делают тоже что и рота javоидов

Kira Sotnikov07:02:24

пацаны, а java.shell кто-нить юзает?

artemyarulin07:02:26

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

Kira Sotnikov07:02:47

(shell/sh "bash" "-c" (str (config/config :octo-path) " " cmd " 2>&1"
                           (when log-path
                             (str " >> " log-path )))
           :env {"DEPLOYMENT" "cogbot"} )

Kira Sotnikov07:02:05

но когда скрипт дергается переменной нет этой

Kira Sotnikov07:02:15

и скрипт отрабатывает дефолтную переменную

Kira Sotnikov07:02:20

как мне его победить?

kharus07:02:33

Да я думаю эти 4 человека и на java неплохо будут писать

Kira Sotnikov07:02:11

или мне запилить аргументом

abtv07:02:48

@rmuslimov: возможность работать удаленно - т.е. сидит человек в одном городе и работает в другом? А другая страна подходит? Если никаких поездок не нужно, а можно просто начать работать, то много народа набежит) имхо)

niquola07:02:18

@kharus я примерно о томже, писали бы 15 лет назад ;)

kharus07:02:32

А кстати. Кто какие преимущества кложи ощущает по сравнению с java. А то я год уже пишу на clojure а просветление, собака, всё не приходит.

turtle07:02:35

dottedmag: имеется в виду когда инструмент помогает для поиска. Если cljs это тоже поиск, то не взлетит, да.

niquola07:02:42

Для меня например clojure мой инструмент, я знаю что буду с ним эффективнее в 5 раз чем с ruby и в 10 чем с java ;) (оценки конечно эмоциональные, но мы все люди ;)

abtv07:02:06

Меньше boilerplate

kharus07:02:07

Вот можно поподробнее.

abtv07:02:49

Нет страха изменять данные и передавать между потоками

abtv07:02:10

Full Stack development

kharus07:02:37

Надо вот full stack попробовать.

abtv07:02:52

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

abtv07:02:45

То есть быстрее разрабатывать

niquola07:02:46

@kharus не пишет на clojure, если такой вопрос задает ;)

turtle07:02:53

Да и для больших не сильно минус. Минус только в проектах, где чуть ли не каждый разработчик не понимает что делает. Там ему хотя бы компилятор по рукам даёт.

turtle07:02:05

В остальном минусов динамической типизации не вижу. Но это тоже своя ниша, конечно.

kharus07:02:39

Просто я на java очень быстро пишу 😛

kharus07:02:51

И очень долго это делал.

turtle07:02:00

На java очень быстро, на clojure это ещё быстрее. simple_smile

turtle07:02:08

Потому что java достаточно упоротый язык.

abtv07:02:11

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

abtv07:02:23

У меня))

kharus07:02:30

И у меня постоянно сомнения в кложуре, что правильно, а что нет.

abtv07:02:01

Ну ты же джаву тоже начинал и имел все эти сомнения, не?

turtle07:02:15

На больших проектах со статикой без тестов тоже всё очень страшно и всё ломается. Профита нет.

turtle07:02:29

Может плюс, что компилируется, но если не работает, то мне без разницы.

turtle07:02:44

Смотрю на свою кучу больших проектов на яве. Преимуществ статики не вижу.

abtv07:02:57

Ага, просто в динамических языках это наступает чуть раньше)

turtle07:02:08

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

turtle07:02:23

Осознание, что нужны тесты чем раньше наступит, тем лучше. 😉

kharus07:02:13

Да, были сомнения. Но в java как-то проще. Там и Refactoring и Patterns и Patterns of Enterprise Application Architecture и Growing Object-Oriented Software, Guided by Tests и Domain-driven design

kharus07:02:29

Обчитался и пришла уверенность.

kharus07:02:59

Clean code опять таки.

abtv07:02:38

У Боба Мартина есть и на Clojure примеры))

abtv07:02:52

Видео на ютубе

kharus07:02:35

А в кложуре пока ничего этого нет. Да, я могу замапить функцию на лист мапов. Удобно. Да, в джава это целый огород с фором. Но я спрятал его в метод и не вижу.

kharus07:02:17

ага. Смотрел дядю Боба.

rm07:02:28

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

kharus07:02:51

Ага. Но мне кажется в кложе должны быть свои паттерны.

kharus07:02:05

Иначе java на clojure получится.

andfadeev07:02:26

я думаю стоит почитать sicp

seryh07:02:17

не хотел бы видеть я в кложе паттерн на каждый чих

niquola07:02:04

@kharus они есть, например data dsl - honeysql, hiccup, garden, route-map ;)

kharus07:02:31

Во. Надо их собрать в одно место.

kharus07:02:43

В смысле на одну страничкую

abtv07:02:05

Такое есть уже, сейчас найду)

kharus07:02:10

У сирры был толк где он упоминал рут-мап.

kharus07:02:16

сиерры.

andfadeev07:02:58

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

andfadeev07:02:17

туториалов и книг море

kharus07:02:14

Туториалы они все про то как круто и быстро замапить fn. Или глядите, атом. Я это знаю.

kharus07:02:46

Ага, этот дядька тоже кстати, довольно интересный. с ф шарпа.

artemyarulin07:02:52

ага, вот преза отличная https://vimeo.com/113707214 как рассказать про монады не использую слова монады, прям произвела сильное впечатление когда первый раз посмотрет

kharus07:02:00

То есть туториалы они рассказывают про примитивные конструкции языка и платформы. Типа как для джавы объяснять полиморфизм и  fork/join допустим. Но с этим знанием системы не построишь.

kharus07:02:16

Система состоит из подсистем, подсистемы из модулей, модули из классов (в java) Кто мне расскажет бизнес задачу у меня в голове сразу модель. Это режем так, это режем сяк. Тут интерфесы, тут основной модуль всё вяжет. В кложуре у меня получается куча немспейсов, всё топорно прибито друг к другу гвоздями сотками. Какой-то франкенштейн, честное слово. Я чувствую что что-то делаю не так, а где узнать как надо не знаю.

turtle07:02:14

@kharus: на яве 8-ой тоже теперь можно маппитб удобно.

artemyarulin07:02:15

>Система состоит из подсистем, подсистемы из модулей, модули из фукнций. Fixed

artemyarulin07:02:46

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

turtle08:02:36

Для меня кложа это репл-дривен в первую очередь.

turtle08:02:44

Во вторую всякая функциональщина и т.д.

andfadeev08:02:01

репл + иммутабильность

turtle08:02:03

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

kharus08:02:13

А есть какое-нибудь видео по repl-driven?

kharus08:02:32

А то у меня тоже получается очень выстрадано.

turtle08:02:24

Ну не совсем видео, объясняющее что это такое. Просто пример репл+реагент http://www.youtube.com/edit?o=U&amp;video_id=VNRVKcSQQFc

turtle08:02:34

И как оно в рантайме все сразу меняется и смотрится тут же.

artemyarulin08:02:49

оо, сча кину, помню меня впечатлило

artemyarulin08:02:26

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

kharus08:02:43

То что надо.

rmuslimov08:02:31

@artemyarulin: да, это видео меня тоже завораживает - только magnars написал кучу хороших либ для emacs, собственно ими он и пользуется. Такое же видео можно было бы сделать для того же питона в самом деле если захотеть

artemyarulin08:02:54

ну дада, он безумно крут с емаксом. Я просто кодил почти год наверно на кложуре, иногда запускал репл даже, но фигфил же - сохранил, посмотел. И вот когда я посмотрел это видео я понял что такое repl driven development

rmuslimov08:02:36

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

rmuslimov08:02:51

я подсмотрел пару решений унес к себе

andfadeev08:02:28

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

artemyarulin08:02:33

ну я унес главное оттуда это подход к разработке, у меня емакс почти стоковый - конфиг на 50 строк всего

andfadeev08:02:34

глобально ничего не поменяется

rmuslimov08:02:41

можешь, скинуть такое же крутое видео для другого ide?

rmuslimov08:02:55

где он так же показывает фокусы

rmuslimov08:02:03

я просто не видел

andfadeev08:02:06

можно пример фокуса?

rmuslimov08:02:31

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

rmuslimov08:02:55

которые ты еще подсказывал cljr-add-project-dependency

rmuslimov08:02:17

yasnippets которые настроены у него

rmuslimov08:02:40

multicursors

rmuslimov08:02:14

да много чего, которые уже работает, уже набита рука у человека

rmuslimov08:02:22

выглядит захватывающе

rmuslimov08:02:19

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

andfadeev08:02:17

ну там в cursive же будет все почти также работать, рефакторинг и тд, добавить зависимость можно с помощью https://github.com/pallet/alembic

andfadeev08:02:40

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

andfadeev08:02:09

а возможность выполнить код в репле есть везде

andre08:02:00

я первый раз познакомился с ФП на Agile! конференции, для меня это была какая-то магия. я ничего не понял, запомнил страшное слово "монады" , но видимо спикер произвел впечатление песней про монады https://www.instagram.com/p/0ac8YTAA9M/ и я вернулся в итоге к ФП и попробовал его, о чем не сожалею , мне нужно было набросать сервер на GAE , я знаю Java , но я не захотел на ней делать из-за громоздкости, выучил питон за пару дней, написал сервер на GAE , питон мне понравился, но когда я через месяц вернулся кое-что попарвить, я все забыл, и смотрел на синтаксис и вспоминал, затем я переписал все на clojure и теперь когда я возвращаюсь через долгие перерывы я легко ориентируюсь и мне не нужно вспоминать синтаксис simple_smile

andfadeev08:02:11

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

rm08:02:58

для меня repl-driven -- это лень перезапускать lein, поэтому eval и тест написанного в репле :)

andre08:02:20

http://lex-kravetski.livejournal.com/540744.html?style=mine Интересное чтиво , Запах монад по утрам

prepor08:02:21

ну чувах схалявил

prepor08:02:32

ни слова про комбинации монадок

larhat08:02:38

мне кажется чувак опоздал несколько. """Во-первых, потому, что людям, незнающим слова «монада», будет непонятно, о чём вы, как было непонятно и вам. А информацию на доступном языке об этом слове они реально хрен найдут. Вот «контейнер» — это слово, понятное большинству программистов.""" гг

larhat08:02:53

ещё понятно слово "пиво"

larhat08:02:57

можно им называть

larhat08:02:54

"""В-третьих, вы блеснули знанием «умных слов», но при этом скрыли от того, к кому обращаетесь, многие важные черты того объекта, о котором говорите.""" — vs "вы назвали концепт каким-то более понятным кому-то словом, но при этом скрыли многие важные черты…"

artemyarulin11:02:31

Классная статья, первая инъекция монад для меня simple_smile

artemyarulin12:02:22

https://habrahabr.ru/post/277323/ ггг simple_smile ClojureScript все таки избавляет вот этого мусора на ура. Не полностью конечно, но многое сильно проще

larhat12:02:34

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

rm12:02:39

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

artemyarulin12:02:16

>Мне нравится Closure переводчик не осилил, в оригинале CloJure

dottedmag12:02:45

@rmuslimov: Фокусы Магнара с Emacs'ом мне напомнили написание кода на Java в том же Eclipse.

dottedmag12:02:58

Но да, для Emacs'а это очень хороший уровень интеграции с языком.

artemyarulin12:02:41

auto completion is mostly helping you write all the unneeded boilerplate a static language demands.
simple_smile

artemyarulin12:02:02

это я про эклипс и жаву simple_smile

cookie13:02:33

Здравствуйте!

rm13:02:53

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

cookie13:02:56

Простите за вопрос может оно вам надоело, ноя запуталась на схемах. И что-бы понять хочу спросить что такое datomic чем оно отличается от того же jdbc?

larhat13:02:32

@rm: "хранила куда-нибудь себе" — кафка окошко хранит, если ты сохранять хочешь, надо самому

rm13:02:36

cookie: datomic -- другая БД, с даталогом как языком запросов вместо sql, append-only и некоторыми другими плюшками. Хорошо подходит, если надо много читать и не очень много писать

larhat13:02:37

скастуем @prepor

rm13:02:52

larhat: вроде необязательно окошко, можно вообще все хранить

prepor13:02:12

@rm: "хранила куда-нибудь себе" — кафка окошко хранит, если ты сохранять хочешь, надо самому можно хранить все. более того, она может сама схлопывать события (https://kafka.apache.org/documentation.html#compaction). но это какое-то сомнительное применение имха

cookie13:02:23

хмм, но оно же может взаимодействовать с postgresql?

prepor13:02:21

cookie: нет не может. вы посмотрели выступление хики, прочитали доки и теперь у вас есть какие-то вопросы / непонимание? simple_smile

cookie13:02:06

prepor я прочитала доки, видео не смотрела(не по принципу видео для слабаков), да вроде начала понимать. но потом запуталась.

prepor13:02:56

как можно прочитать доки и спрашивать чем отличается от jdbc? )

rm13:02:26

@prepor @larhat я сохранять все хочу не просто так. Сейчас у нас есть некая структура БД. И взбрело нашему любимому инвестору, что нужно сделать некую уберфичу, которая ни хрена в нашу БД не вписывается. Более того, чтобы она полетела, было бы отлично иметь "лог ивентов", то есть, когда мы делали некоторые операции (которые как раз только в логах и отображены, или потеряны уже к хренам, я не удивлюсь). Ну и ладно, в этом случае мы что-нибудь придумаем, но я с ним третий год уже работаю, дальше будут еще идеи одна другой офигительнее и можно будет уже так не выкрутиться. Что-нибудь понятно? :) Возможно, я хочу не кафку, просто об этом еще не знаю

larhat13:02:22

нет, не особо. в кафке, как @prepor дал линк, можно сохранять "всё", но нужно понимать, что после compaction будут только последние значения для ключа

rm13:02:43

ну я не хочу схлопывать

rm13:02:53

или хочу, но не везде

larhat13:02:03

ну log.retention и cleanup можно на уровне топиков конфигурить

larhat13:02:12

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

rm13:02:24

нифига это не БД :)

rm13:02:26

в БД будем аггрегировать, причем хочется, чтобы через полгода мы захотели фичу, придумали, как смастерить из лога ивентов, прошлись по ним и собрали в новую табличку

larhat13:02:26

ну то есть, как шина данных, в которую в "риалтайме" пишут и читают, кафка будет не нужна?

rm13:02:09

Если очень грубо, у нас есть, например, двести тысяч видео и тысяча сайтов, которые нужно просканировать, найти там все видео и сматчить с теми видео, которые есть у нас. А потом мы внезапно захотели вести историю видео на каждой странице (было видео А, потом не было никакого, потом стало видео Б, а потом вернулось опять А).

rm13:02:11

А как шина данных -- ну я могу без нее обойтись (собственно, щас обходимся), но почему бы не писать туда. Типа, один сервис "я нашел ссылку на сайте", другой на топик подписан, берет ссылку, сканит, находит видео, складывает в следующий топик

fxposter13:02:26

простите, не мог удержаться

dottedmag14:02:41

@cookie: JDBC -- это тупо интерфейс доступа к SQL-базам данных. connect/select/update/delete/commit.

dottedmag14:02:55

@cookie: Datomic -- это база данных. Другая. Не SQL.

cookie14:02:35

@dottedmag О спасибо, вот это мне и нужно было.

ssesutchenkov15:02:51

Всем хорошего дня, подскажите "на посмотреть" примеры вывода таблиц с пагинацией, сортировкой / фильтрацией по колонкам. Типа такого, но на cljs http://www.javascripttoolbox.com/lib/table/index.php

rm15:02:34

ну... тут не будет рокет-саенса, берешь filter и фильтруешь вектор с объектами (это для пагинации). Или сортируешь с помощью sort-by

ssesutchenkov15:02:54

на рокет-сайнс и не рассчитываю )) но опыта cljs почти нет, хотел подсмотреть какие-то примеры, как такое отображать - в смысле рендерить таблицу и "контолы" фильтров / сортировки для колонок

larhat15:02:29

а у вас голый cljs? или cljs и что-нибудь для реакта? у фб есть компонент для таблицы http://facebook.github.io/fixed-data-table/

larhat15:02:55

ну и вообще, если делать с реактом (или в том же духе), то каждая команда на sort/filter будет менять (либо прям на клиенте, либо фетчить с бэкенда) данные, и тригерить перерисовку

ssesutchenkov15:02:29

сейчас есть REST API (java glassfish mysql), к которому нужен быстрый прототип, я рассматриваю вариант сделать прототи на cljs

ssesutchenkov15:02:44

@larhat: спасибо, примерно похоже на то что нужно

larhat15:02:49

сортировку/ фильтрацию / пагинацию апи умеет делать?

larhat16:02:24

это похоже на то, что нужно, но для "прототипа" может быть слишком — может проще взять quiscent какой-нибудь тонкий и по-деревенски рендерить таблицу втупую

larhat16:02:46

и только фетчить новые данные на пагинацию/сортировку/фильтрацию

ssesutchenkov16:02:05

сейчас только пагинацию, сортировку / фильтры можно прикручивать в принципе, но не хотелось бы для прототипа там ковырять

larhat16:02:42

сортировку и фильтрацию тогда можно на клиент тож, это просто filter / sort-by может быть

ssesutchenkov16:02:05

а почему quiscent а не rum / reagent? (ни один из них не пробовали еще)

larhat16:02:12

или рум

larhat16:02:22

ну идея маленькое что-нибудь

larhat16:02:28

что не будет на пути вставать, для прототипа то

ssesutchenkov16:02:00

ага, понял, гранд мерси, почитаю - покручу их

artemyarulin20:02:41

оффтоп: из обсуждения TypeScript

Использую сейчас декораторы для реализации статического конструктора класса. Может есть какой-то способ реализовать это без декораторов?
чота после года кложуры я уже сходу не могу понять что значит это предложение simple_smile

artemyarulin20:02:12

все таки кложура гениально проста