Fork me on GitHub
#clojure-russia
<
2017-02-21
>
kgofhedgehogs09:02:38

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

kgofhedgehogs09:02:12

Точно. Оно мне и надо. Спасибо

ilevd09:02:51

Может это... Julia?)

kgofhedgehogs10:02:12

Ох, сколько вариантов

mike_ananev10:02:28

я эту штуку включал в project.clj и запускал repl прям на Hadoop кластере

mike_ananev10:02:55

очень удобно отлаживать спарковые job'ики

mike_ananev10:02:10

через браузер

kxepal10:02:12

@mike1452 о, а можешь поподробней рассказать чокак?

mike_ananev10:02:50

а что именно интересует?

kxepal10:02:43

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

mike_ananev10:02:31

на сайте gorilla-repl есть видео. там очень подробно показано. это вариант питон ноутбука.

mike_ananev10:02:48

у нас hadoop кластер в изолированном окружении

mike_ananev10:02:55

там нет средств разработки

mike_ananev10:02:09

в общем свои специфические условия работы и доставки кода

mike_ananev10:02:44

вместо того чтобы без конца таскать апдейты jar файлов с джобами и смотреть как они валятся на очередной ошибке

mike_ananev10:02:02

я сделал один jar, задеплоил его, запустил через браузер

kgofhedgehogs10:02:06

А мне просто отобразить график и гистограмму на основе небольшого кол-ва данных. Мне выбрать incanter?

mike_ananev10:02:29

поковырял данные отладил код job'a интерактивно

mike_ananev10:02:47

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

mike_ananev10:02:56

джависты обзавидовались

misha10:02:32

кстати, чем горилла-репл кардинально отличается от ipython-notebooks? kappa

kxepal10:02:08

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

mike_ananev10:02:10

вернее я не очень знаю питон ноутбук

misha10:02:17

латех, шаринг, лайв код, еще и доступ к жава процессу проекта opieop

mike_ananev10:02:19

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

misha10:02:50

@mike1452 тут просто наброс был на днях, что питон с ноутбуком - царь дип-лернинга

mike_ananev10:02:58

@misha да херня все. для меня главный критерий : это работает, и как быстро я могу сделать. то что я делаю на clojure потом очень долго переписывют на java (сроки раза 2 в 3) больше.

mike_ananev10:02:20

то же самое с питоном

mike_ananev10:02:46

если я быстро могу сделать на clojure, кого парит кто там царь или не царь

mike_ananev10:02:59

главное есть результат или нет

misha10:02:41

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

mike_ananev10:02:05

это точно. короче clojure рулит.

misha10:02:30

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

mike_ananev10:02:49

для питона больше либ для data science

mike_ananev10:02:04

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

mike_ananev10:02:30

моделисты например приходят с подготовкой на питоне, с его либами

mike_ananev10:02:49

поэтому у нас прод на эту тему скорее всего будет в виде связки jvm + python

mike_ananev10:02:19

вот через похожую штутку связь https://github.com/Raynes/conch

mike_ananev10:02:36

то есть python процесс принимает от jvm stdin поток

misha10:02:45

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

mike_ananev10:02:49

отдает результат в stdout поток

mike_ananev10:02:56

а ошибки срет в stderr

mike_ananev10:02:10

да, похоже что меньше. и в разы

mike_ananev10:02:18

и качество для питона выше

misha10:02:51

надо на ближайшем кложа капе мигрировать какую-нибудь тогда

mike_ananev10:02:14

там под питоном на самом деле C код

mike_ananev10:02:18

очень скоростной

misha10:02:27

ну то понятно. на джаве же си тоже писать можно, нет?

mike_ananev10:02:36

и алгоримы на императивщине лучше пишуться.

misha10:02:49

или даже вызвать, а не писать

misha10:02:50

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

kxepal10:02:19

для джавы можно сделать все это. некоторые либы предоставляют готовый jni.

mike_ananev10:02:45

тогда уж для clojure

kxepal10:02:55

xgboost, например. у того же tensorflow тоже есть java интерфейс.

mike_ananev10:02:37

основные потребители это те кто пишут модели

mike_ananev10:02:52

они часто java не знают совсем

kxepal10:02:13

это правда.

mike_ananev10:02:16

а знают питон

mike_ananev10:02:29

поэтому часто команды полностью из питонистов состоят

mike_ananev10:02:41

и любой другой язык для них это оверхед

mike_ananev10:02:46

короче я пока продать не смог

mike_ananev10:02:58

что кложа это тот же питон, тем же реплом, ноутбуком

mike_ananev10:02:10

но без GIL, лучшими коллекциями

leov13:02:40

чувакиии. а какой мне ring middleware воткнуть, чтобы хром перестал кешировать мои жаваскрипт-файлы?

leov13:02:52

ring-etag-чёнить? ring-not-modified?

andfadeev14:02:56

если для разработки надо то вроде в хроме можно отключить кеширование

leov14:02:40

хром если не видит заголовка кеш-контрол - кеширует намертво жс-ки

leov14:02:47

это фича такая.

andfadeev15:02:08

в консоле галка disable cache не работает?

delaguardo15:02:04

(defn wrap-no-cache [handler]
  (fn [{:keys [headers] :as req}]
    (let [no-cache-headers {"Cache-Control" "no-cache, no-store, must-revalidate"
                            "Pragma" "no-cache"
                            "Expires" "0"}]
      (handler (update req :headers #(merge % no-cache-headers))))))
типа такого?

leov16:02:54

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

leov16:02:01

злой ноу-кеш, по учебнику

leov16:02:19

а кто-нить что-то типа ассет пайплайна юзает?

dragoncube18:02:01

вот до чего же люди Java не любят

kgofhedgehogs20:02:27

Вот такие же юзы это не ок? Лучше require as? (use '(incanter core stats datasets charts))

kgofhedgehogs20:02:13

Просто, у меня что-то не око это выглядит

(:require 
            [incanter.core :as i]
            [incanter.stats :as i-stats]
            [incanter.charts :as i-charts]
            [ :as i-io]))

dottedmag20:02:54

@kgofhedgehogs (:require (incanter [core :as i] [stats :as i-stats] [charts :as i-charts] [io :as i-io]) лучше?

kgofhedgehogs20:02:11

Да, наверное. Ну а к вопросы про юзы. Ок не ок? Там мне ворнинг будет, есл иконфликты какие-нить будут?

dottedmag20:02:02

Нет, предупреждений не будет. Только если конфликт с именем в clojure.core, то там какой-то хак есть, чтобы об этом предупреждать.

kgofhedgehogs21:02:55

Понятно. Спасибо