Fork me on GitHub
#clojure-russia
<
2015-12-25
>
rm05:12:49

> gorilla repl видел, да. Местами прикольно, местами глючит (не исключаю, что проблема у меня в руках).

rm05:12:16

и он не как девкардс

rm05:12:49

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

rm05:12:23

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

rm05:12:31

неприкольно, что это надо делать в браузере

rm05:12:42

девкардс для бека -- это eval в редакторе и открытый репл :)

artemyarulin05:12:00

Ну хотя да, репл покрывает наверное все эти кейсы - не проблема ж сделать how-to.clj где будут всякие хелперы и примеры с доками да. Затупил simple_smile

rm06:12:20

мне бы больше понравилось что-нибудь такое: 1. редактор, в нем файлы с кодом и файл, который будет "notebook", с пояснениями и прочим. 2. браузер, в нем результат рендеринга этого самого ноутбука. 3. figwheel для обновления результатов в ноубуке 4. eval для обновления в кложе 5. какой-нибудь легкий способ пушить данные с сервера на клиент, server push в вебсокетах подойдет. Написал и понял, что по идее, это все можно слепить уже прямо сейчас.

artemyarulin06:12:32

ога, все инструменты уже готовы

rm06:12:33

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

artemyarulin06:12:12

ха. Мне стыдно признаться но у меня все руки не дойдут до paredit, так что я как лох руками все. Надо заняться на новогодних каникулах

gumayunov07:12:29

усилий на paredit/smartparens надо не так много, как кажется. выделить часа полтора. вложения окупаются в течении одного вечера simple_smile

artemyarulin07:12:12

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

artemyarulin07:12:57

а кста какой из них лучше? paredit или smartparens?

gumayunov07:12:34

как неофит emacs особой разницы заметить не успел simple_smile но сейчас установлен smartparens

artemyarulin07:12:47

ок - позырю тада оба

turtle07:12:32

artemyarulin: не мыслю жизни без паредита.

turtle07:12:48

Это же не просто подсчёт скобочек.

artemyarulin07:12:12

да я знаю-знаю, обратно никто не возвращается ага simple_smile

artemyarulin07:12:33

быстрый вопрос - зарелизил либу на CLJS, не могу использовать ее в другом проекте - кричит что неймспейс не найдет. Проблема скорее всего что у меня в либе

/Users/fessguid/Projects/ktoa/src
├── core.cljs
└── repl.cljs
а нужно чтоб в src была еще одна папка (= root namespace ktoa в этом случае) в все файлы уже под ней, так?

rm07:12:03

вроде да

niquola09:12:08

@artemyarulin мотиватор: без paredit/smartparen нельзя считать себя clojure/lisp программистом ;)

artemyarulin09:12:44

ну все-все, я уже сказал что мне стыдно! В выходные посмотрю! simple_smile

niquola09:12:42

Следующий виток clj-refactor, кстати он заработал с cljs

niquola09:12:38

Давайте праздничный хэнгаут посвятим редакторам и паредитам

andfadeev09:12:47

давайте!

andfadeev09:12:12

у меня куча вопросов скопилась)

alexey.badenkov09:12:38

а как настроить чтобы с cljs работал? запускаю отдельно - lein figwhee. и получается два разных репла - один из редактора, другой в консоли открыт. куда копать пока не врубаюсь

artemyarulin09:12:31

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

artemyarulin09:12:53

типа lein repl -> (use 'figwheel-sidecar.repl-api)(start-figwheel!)

artemyarulin09:12:07

дальше cider-connect чтоб репл открыть ну и в нем уже (use 'figwheel-sidecar.repl-api)(cljs-repl)

alexey.badenkov09:12:46

а два можно использовать? clojure-овский и cljs-вский

artemyarulin10:12:12

эм, а не знаю - я тока на cljs нынче пишу

niquola10:12:06

@alexey.badenkov там с этим проблема, я два emacsa запускаю

niquola10:12:35

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

alexey.badenkov10:12:11

а в случае с двумя емаксами - хот релоад работает в cljs когда устанавливаешь какой нибудь пакет для cljs?

niquola10:12:33

И для cljs repl лучше в emacs запускать и из него потом figwheel запускать

niquola10:12:51

С пакетами для cljs не проверял

niquola10:12:41

Если получится - расскажи

artemyarulin10:12:34

а кста никто не работает с фигвилом из нескольких клиентов сразу?

artemyarulin10:12:47

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

niquola10:12:01

Те на один eval, коллекция результатов с id браузера/клиента?

artemyarulin10:12:51

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

turtle11:12:25

nicola: ну давайте. Непрочь понакидывать. 😉

malch11:12:20

@alexey.badenkov: @nicola В Emacs с этим уже давно нет проблем - ты можешь одновременно иметь два репла

turtle11:12:09

А в кложурскрипте коллекции ленивые?

turtle11:12:25

И как превратить '((1 2) (3 4)) в [[1 2] [3 4]]?

niquola12:12:25

@malch а он закрепляет репл за файлом?

niquola12:12:53

То что можно несколько я знаю

malch12:12:32

Да, он определяет по расширению

niquola12:12:54

Хз, у меня почему-то нет

asolovyov14:12:08

@nicola: привет, тут? simple_smile

abtv14:12:34

@nicola: А тех, кто на Cursive с Emacs перешел, в хэнгауте же не банят? simple_smile Я уже было прикрутил нормальную навигацию для cljs в Emacs, но все равно как-то с Cursive проще, особенно если есть еще код на java. А если честно, я устал настраивать Emacs 😸

niquola14:12:30

Почти, на короративе

niquola14:12:52

@abtv use spacemacs

turtle15:12:25

abtv: это же здорово, когда есть несколько мнений.

turtle15:12:44

Пусть и неправильных. simple_smile

seryh17:12:19

не верю глазам своим http://habrahabr.ru/post/274057/ сколько минусов к комментам к Go статье

seryh17:12:48

вообще нездоровая агитация Go мне давно напоминает методы финансовых пирамид

seryh17:12:52

нечисто что то тут

artemyarulin17:12:39

Ну вот друган тока сегодня скинул - groupBy в го: https://github.com/jbenet/go-multiaddr-net/blob/master/Godeps/_workspace/src/github.com/anacrolix/missinggo/itertools/groupby.go прекрастно ящетаю

seryh17:12:18

жесть

seryh17:12:12

не удивлюсь если следующий этап плана адептов го, это вернуть времена когда зарплату платили за кол-во строчек кода

seryh17:12:32

это все обьесняет

abtv17:12:40

Кстати, о редакторах, но не для Clojure. Кто-нибудь на Rust пишет, что используете? Rust-mode в Emacs?

artemyarulin17:12:08

про го ага - читал что это пхп нашего времени simple_smile про раст - я пару недель игрался, писал в rust-mode ага

artemyarulin17:12:31

вот эта статься помню понравилась http://bassam.co/emacs/2015/08/24/rust-with-emacs/ но лень было повторять simple_smile

abtv17:12:09

Классно! Статья вышла позже, чем я начал разбираться с Rust, я совсем по-простому работал, спасибо!

abtv18:12:38

У Go есть одна потенциальная фича - нет настроек GC + из коробки работа с большим хипом. В рекламных статьях же никто не приводит такого изврата типа как выше, многие и покупаются.

andfadeev18:12:23

народ, если кому не сложно/не жалко, хотелось бы глянуть примеры ваших конфигов спейсмакса/емакса, интересуют key binding в особенности для smartparens и clj-refactor + а вы настраиваете себе обновление репла (аля cider-refresh на сохранение ckj файла), не могу определиться удобно это или нет...

artemyarulin18:12:45

@abtv: Да мне кажется туда переходит народ с того же пхп да ноды в основном, ясен фиг большой прогресс по скорости и удобству разработки

abtv18:12:07

Да, я даже знаю человека, который с пхп переписал все на go

abtv18:12:20

Те, кто на ноде пишут - не перейдут, мне кажется, им же тогда совсем в другом стиле писать придется

abtv18:12:03

По-моему нода не далеко от go ушла

seryh18:12:10

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

seryh18:12:14

валится на каждый чих

abtv18:12:42

Это нельзя починить?

seryh18:12:11

нет, что то сложнее небольшой консольной утилитки, будет падать

seryh18:12:28

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

seryh18:12:33

так и извращаются

abtv18:12:40

Зашибись они живут

artemyarulin18:12:59

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

abtv18:12:34

ЫЫы в смысле

abtv18:12:13

😄 автокорректор

artemyarulin18:12:26

вот очень надеюсь что раст взлетит. Ну и фреге чтоб коллег пугать simple_smile

artemyarulin18:12:31

ерланг вот вернулся можно сказать с эликсиром, хаскель через фреге. Вот надеюсь что кто-нить логическое программирование вернет - кой-нить JProlog для JVM/LLVM, вот заживем!

abtv18:12:29

Rust for Clojurists

niquola18:12:16

@andfadeev я дефолтами пользуюсь

andfadeev18:12:29

я вот чет обновил тут спейсмакс и у меня вообще исчезли keybinding на работу с лиспом, вроде раньше было SPC - k, подумал пришло настроить както удобно под себя

asolovyov18:12:38

@artemyarulin: на расте очень тяжело писать, очень медленно

asolovyov18:12:58

отжирать долю си он наверное начнëт, а вот остального - хз...

asolovyov18:12:19

очень жаль, что у камла нет момента, а f# под .нет, они всë-таки сильно проще и хаскеля, и раста

abtv18:12:17

F# он тоже со сборщиком мусора

abtv18:12:18

Не очень годится для low latency

artemyarulin18:12:36

@asolovyov: Ну я бы не сказал что прям ТАК тяжело и медленно. Он системный конечно ага, деталей куда больше, но не так все плохо

asolovyov18:12:07

но я не заметил выше ни слова про low latency simple_smile

artemyarulin19:12:43

вот кста наткнулся на классную статью про парралелизм в расте http://smallcultfollowing.com/babysteps/blog/2015/12/18/rayon-data-parallelism-in-rust/

abtv19:12:28

@asolovyov: ну да, это у меня уже наболело simple_smile

prepor22:12:06

@abtv: как латенси связано с гц?

prepor22:12:19

вкладку latency

prepor22:12:28

и посмотри где ява, а где си )

abtv23:12:44

@prepor: ок, переформулирую, может подскажешь, как назвать эту ситуацию. Есть приложение под JVM, которое получает данные от приложения на C++ (устройство), обрабатывает их и отсылает ответ, после чего приложение на C++ посылает новые данные. Средняя задержка - норм, но если посмотреть на разброс значений этой задержки, то получается, что где-то раз в минуту (зависит от объема памяти под JVM) приложение на C++ ожидает значительно больше, чем обычно, а специфика приложения такова, что я не могу забуферизовать это на стороне приложения C++, т.к. требуется ответ за определенное время и если его нет, то данные уже устарели. В таких ситуациях часто помогает Unsafe или DirectBuffer, но это достаточно низкоуровнево даже по сравнению с C++: нужно самому реализовывать все структуры данных. Наверняка есть какие-то библиотеки, которые предоставляют похожий функционал, но только это все равно потребует дополнительной работы. Это в принципе решаемо. Проблема в другом - ни один JVM язык не предоставит таких возможностей по тюнингу производительности, как низкоуровневый язык. Еще одна проблема - представь, что у тебя очень много объектов в памяти, больше, чем поместится в 32 Гб. Сейчас таких приложений относительно мало, но пройдет лет 5-7 и эти 32 Гб будут у среднего по размеру приложения. Что возвращает нас к проблеме №1: в этом случае нужно все приложение писать в стиле Unsafe или с использованием оберток над ним. Либо появится другой тип сборщика мусора, который предоставит какие-то гарантии на максимальную задержку. Типа того, что делает Azul, но для широких масс, т.е. задаром.

abtv23:12:37

Вкратце, в том примере, что ты привел, меня интересует сигма и максимальная ошибка