Fork me on GitHub
#clojure-russia
<
2015-09-28
>
rm05:09:27

привет

rm05:09:39

я с самого утра с глупыми вопросами

rm05:09:16

Вот в руби я могу сделать вот так: λ → (1..10).to_a.first(20) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] А в кложе нет: cljs.user=> (def x [1 2 3]) #'cljs.user/x cljs.user=> (subvec x 0 20) #object[Error Error: Index out of bounds] обязательно приседать и каждый раз проверять размер вектора или есть более простой путь?

dima05:09:39

@rm (take 20 x)

rm06:09:31

@trybeee: а если надо с 20 по 40?

dima06:09:21

(->> x (drop 20) (take 20))

rm06:09:12

логично

rm06:09:14

спасибо

rm10:09:14

у меня вопрос. Есть приложение (в моей голове), ей приходят некоторые события, оно их складывает в БД и пушит подключенным клиентам. События бывают всякие-разные и хочется их совать в какую-то нереляционную БД. Насколько подойдет для этого датомик и насколько хорошо/эффективно работает его бесплатная версия?

delaguardo10:09:29

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

delaguardo10:09:03

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

delaguardo10:09:26

When is Datomic not a good fit?
Datomic is not a good fit if you need unlimited write scalability, or have data with a high update churn rate (e.g. counters). And, at present, Datomic does not have support for BLOBs.

dottedmag10:09:00

Если только складывать и пушить, то похоже на Apache Kafka.

rm10:09:29

а хранить в ней тоже можно?

rm10:09:25

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

suhinini10:09:09

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

rm10:09:23

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

suhinini11:09:33

от задачи зависит. У нас “от начала времен” важнее

suhinini11:09:56

вот хорошая статейка

suhinini11:09:02

ну, больше на роман похоже, но прочитать стоит simple_smile

rm11:09:42

спасибо, почитаю

suhinini11:09:38

велкам

asolovyov11:09:59

А у меня тож есть прикольный вопрос. У меня есть апи для cljs приложения, написано на clj. И есть приложение на питоне, там всякая бизнес-логика и всë такое. Мы решили, что переписывать всë на кложуре сходу прям ваще нереально, и потому основная мысль - сделать канал actions в кафке, и туда пушить экшены, которые должны пройти бизнес-логику. Но тут есть проблема - как отвечать? В идеале вообще это кложурное апи должно ответить нормально в cljs на этот запрос, а не "когда-нибудь потом прийди и спроси". Но не приходит в голову, как бы это сделать

konukhov11:09:01

@suhinini: а он это и оформил в роман потом. http://shop.oreilly.com/product/0636920034339.do хорошая книга!

suhinini11:09:11

спасибо simple_smile

suhinini11:09:11

почитаю

suhinini11:09:32

а ну 60 страниц всего )

konukhov11:09:13

ага, за раз можно прочитать. но классная. я правда не знаю, может быть все, что есть в этом посте, есть и в ней, и может быть не стоит тратить $25 на нее simple_smile

konukhov11:09:23

я бы поделился, но у меня файла нет

suhinini11:09:25

у “друзей” возьму 😉

suhinini11:09:39

@asolovyov: а мот тогда без кафки? она сразу же асинхронность добавляет

suhinini11:09:55

если надо нормальный ответ на реквест, просто через thrift запрашивайте

suhinini11:09:03

и туда-сюда красиво все будет

asolovyov11:09:05

не, ну я не хочу еще thrift иметь

suhinini11:09:05

и синхронно

asolovyov11:09:18

с кафкой хорошо, что есть разрыв напряга, конечно...

asolovyov11:09:37

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

asolovyov11:09:44

но ваще это валидный поинт

suhinini11:09:36

если очень хочется поизвращаться, можно каждому action в кафке давать uuid и аппом clj раз в секунду по какой-нить апишки от питон бизнес логики запрашивать батчами подготовленные ответы

suhinini11:09:45

но это очень и очень извращенно

suhinini11:09:48

ну просто очень

suhinini11:09:58

на крайняк можно тупо json гонять

suhinini11:09:02

если thrift не хочется

asolovyov11:09:03

да, это оч извращëнно

asolovyov12:09:01

@konukhov: не, в книжке больше, я еë на распродаже купил чуть дешевле и в принципе не пожалел, она норм

konukhov12:09:49

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

konukhov12:09:27

видели, кстати – залили видео со strangeloop ‘15. я вообще думал, что там Майкл Дрогалис будет про onyx рассказывать, что за год появилось и тд, а его что-то там нет. https://www.youtube.com/playlist?list=PLcGKfGEEONaCIl5eU53uPBnRJ9rbIH32R&amp;spfreload=10

asolovyov12:09:10

он делал unsession

asolovyov12:09:54

@bhauman'а доклад офигенный, бтв

konukhov12:09:40

я пока только про стримы и про транзакции посмотрел. сегодня буду Мартца (или как его по-русски написать) и Хаумана смотреть как раз.

asolovyov12:09:18

@dottedmag: не, это типа training session'ы у них так называются

konukhov12:09:51

перед самим sl типа?

konukhov12:09:36

а, ну там только воркшоп по ониксу был. я почему-то думал, что у него ток будет. http://thestrangeloop.com/2015/beginning-onyx---distributed-computation-in-clojure.html

konukhov12:09:09

офигенно он его запаблишил прям на прошлом лупе simple_smile

dottedmag12:09:55

Интересно, афтары Onyx могли написать ещё более непонятную документацию?

dottedmag12:09:09

"a masterless, cloud scale, fault tolerant, high performance distributed computation system"

dottedmag12:09:13

Что оно делает-то?

asolovyov12:09:55

@dottedmag: замена storm/samza/etc, для которого ты 1 раз пишешь код, а оно и для стримов, и для ивентов работает

dottedmag12:09:05

WTF storm/samza?

dottedmag12:09:12

Мне вот для тупых - что оно делает?

suhinini12:09:17

computes distributedly simple_smile

suhinini12:09:43

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

dottedmag12:09:45

Ну вот у меня стоят на столе два компьютера. Это тоже distributed computation system?

dottedmag12:09:01

Они тоже чего-то там вычисляют. Например, они исполняют код линуксового ядра.

rm12:09:30

кстати, сегодня электронные книжки в два раза дешевле, так что за 60 страниц нужно платить 13 долларов, а не 26 :)

asolovyov12:09:06

@dottedmag: короч есть у тебя система вычисления всякого дерьма

asolovyov12:09:23

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

asolovyov12:09:25

и что-то считает

asolovyov12:09:33

статистику там, етц, такое всякое, да?

asolovyov12:09:47

но тут оказалось, что если еë запустить на 1 компе, то тебе не хватает мощности

asolovyov12:09:04

поэтому ты делаешь так, чтоб она могла быть запущена на двух компах, как-то хендлила всë, чтоб не было конфликтов, и всë такое

asolovyov12:09:19

ну вот onyx - это система, которая хендлит за тебя, а ты пишешь только функции, которые делают реальную работу

asolovyov12:09:46

ну и плюс она тебе даëт сразу интроспекцию в происходящее, всякие метрики и инфу

dottedmag12:09:55

Вот, так гораздо понятнее.

dottedmag12:09:09

@asolovyov: Ты не думал стать техписателем? :)

asolovyov12:09:40

@dottedmag: ну разве шо за много денег, а так практика показывает, что за это обычно мало платют simple_smile

dottedmag12:09:59

Ну вон, за 60 страниц $26 просят, и ведь покупают!

asolovyov13:09:06

@dottedmag: я немного страдаю лаконичностью, особенно с большими текстами, так денег не заработаешь simple_smile

rm13:09:39

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

rm13:09:08

так, а кого ее, там как-то все автомагически

rm13:09:47

нет, бд все таки есть

rm13:09:01

так чо, если ее засунуть в атом, все будет хорошо?

asolovyov13:09:47

да, в атом

asolovyov13:09:51

всë будет хорошо, но не совсем

asolovyov13:09:09

(у нас сча так и я расскажу, что мы сделали)

asolovyov13:09:54

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

asolovyov13:09:33

в моëм случае, такое происходило при 10-15 разных (иногда - относительно сложных) запросах и базе размером в 500 datom'ов

asolovyov13:09:41

ну т.е. реально не особенно и много всего

asolovyov13:09:57

я, чтоб решить эту траблу, заюзал javelin и cell'ы его

asolovyov13:09:04

но это не решает до конца проблемы

asolovyov13:09:45

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

asolovyov13:09:33

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

rm13:09:08

мощно

rm13:09:14

надо подумать. У меня на страницу будет примерно три, ну пять запросов при изменении базы

rm13:09:28

и условно 500...5_000 записей

rm13:09:06

надо, наверное, затестить как есть, сначала

rm13:09:26

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

asolovyov13:09:41

@rm: ага, если будет грустно, то спрашивай, а то сча нет времени нормально оформить и выложить

rm13:09:12

@asolovyov: хорошо, спасибо!

a.espolov15:09:55

в rum юзал кто add-watch?