Fork me on GitHub
#clojure-russia
<
2015-09-25
>
rm06:09:00

ну если у тебя сильно ветвистая структура, чтобы каждый раз не пороться в (:three (:two (:one state))), возможно

gordon08:09:14

@nicola в машинах времени нужно помнить вот про что: тебя зачастую может интересовать транзакционность. Например, ты вставляешь 5 строк в таблицу, у них у всех будут разные таймстемпы, ты сможешь только на глаз определить, что они вставлены в одной транзакции

Kira Sotnikov08:09:32

лепить каждой транзакции ID

gordon08:09:04

по сути дела постгресовый xmin и xmax делает именно то, что нужно. Можно еще добавлять в отдельную таблицу запись с описанием операции, чтобы потом посмотреть что происходило. Проблема с xmin и xmax заключается в том, как пг с ними работает. Сначала ваккум просто удаляет старые записи, а потом txn_id — это вообще циклический счетчик

Kira Sotnikov08:09:41

В современном мире не нужно уметь программировать, нужно уметь писать API реквесты ._.

Kira Sotnikov08:09:47

Уже все написано

prepor08:09:50

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

Kira Sotnikov08:09:52

prepor: хочешь метрики - датадог, хочешь алерты на мобилу викторопс, хочешь тейлить логи в браузере? - папертрейл, хочешь ловить ексепшоны? - yellerapp, хочешь серверсайд? - aws

Kira Sotnikov08:09:03

Остается взять питон и requests

Kira Sotnikov08:09:08

И слепить это вместе

Kira Sotnikov08:09:36

Что я забыл?

Kira Sotnikov08:09:56

а, хочешь базу данных на разных движках с одним апи? - датомик simple_smile

prepor08:09:13

@lowl4tency: то что все это или не работает или стоит невероятных денег или не работает )

Kira Sotnikov08:09:42

в среднем 20 баксов в месяц за сервис

Kira Sotnikov08:09:53

Это намного дешевле чем пилить самому

prepor08:09:00

@lowl4tency: пейпертрейл выйдет в несколько тысяч, точно так же как датадог )

Kira Sotnikov08:09:13

Это зависит от размеров

Kira Sotnikov08:09:32

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

prepor08:09:28

конечно. а теперь про качественную сторону. я хочу видеть метрики не только “все, у нас пиздец”, но и отвечающие на вопрос “где пиздец”. хочу уметь сэмплить запросы и понимать на что там тратится больше всего времени (в какой сервис запрос, в какой бд и с каким запросом). иными словами хочу dapper (zipper от твиттера). но как это внедрить? для меня бесмысленны логи в браузере, когда у меня этих логов гигабайты. мне нужен способ настройки в реалтайме что и для чего логировать, тесно заинтегрированный в сэмплинг запросов (см. предыдущий пункт)

prepor08:09:34

> хочешь ловить ексепшоны? туда же. мне не нужен эксепшен, мне нужно понимание почему он появился. это вопрос логировани и семплирования. у меня есть core.async, но нет механизма понимать почему этот core.async сломался

prepor08:09:20

> хочешь серверсайд? - aws что именно? в aws зачастую делают полное говно, например api gateway просто сырое и неюзабельное, с ужасными и неправильными апи, зачастую ориентированные на работу из браузера

prepor08:09:56

> а, хочешь базу данных на разных движках с одним апи? - датомик у датомика куча проблем. начиная от условно филосовских (закрытые сырцы) и заканчивая более техническими. начиная от того, что оно не особо скейлится на запись и далеко не во всех кейсас скейлится на чтение. функционал: что мы хотим? легко и быстро писать приложения, на мобилки, в браузеры. для этого нам нужно синхронизировать стейт между ними. клиент должен стать таким мини-пиром. сам датомик тебе в этом сейчас особо не поможет. вот, например rething db пытаются сделать это через change feed свои, но делают при этом полное говно (людям, впрочем, нравится)

Kira Sotnikov08:09:17

prepor: если целая контора которая на этом зарабатывает не может сделать нормально годами

Kira Sotnikov08:09:27

То сколько ты потратишь времени чтобы сделать хотя бы прототип

prepor08:09:36

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

tank_bohr08:09:30

> что оно не особо скейлится на запись @prepor: а есть вообще что-то что скейлится на запись?

prepor08:09:33

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

tank_bohr08:09:10

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

prepor08:09:44

@prepor: а есть вообще что-то что скейлится на запись? ну дата модели разные бывают. риак скейлится на запись, например ) кафка. фаундейшен дб вот говорили, что скейлятся с транзакционностью по множеству ключей

tank_bohr08:09:53

и вы пользуетесь риаком?

prepor08:09:21

мы — нет. к счастью, мы пока достаточно маленькие что бы справляется с пачечкой постгрей и редисом )

prepor09:09:02

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

tank_bohr09:09:50

расскажи в чем был провал с аэроспайком, плиз

tank_bohr09:09:11

вообще если блог заведешь технический, это будет успех!

Kira Sotnikov09:09:13

prepor: сейчас язык пилит огромное комунити а базу данных целая компания

Kira Sotnikov09:09:24

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

Kira Sotnikov09:09:36

Но чтобы оно приносило профит и было полезно остальным это уже вопрос

abtv09:09:22

@ognivo: у меня была такая проблема со скоростью сборки: на 7200 rpm диске скорость сборки порядка 4 минут, а вот на SSD - всего секунд 20-30. проект порядка 6000 строк кода. Если у тебя сервер не с ssd, то прирост скорости будет. Напиши, пожалуйста, если это поможет; может я просто что-то не так делаю.

prepor09:09:52

@lowl4tency: кложку никакое коммунити не пилит, это проект пары человек ) то же самое про датомик, там три чувака работают.

Kira Sotnikov09:09:09

Больше трех

Kira Sotnikov09:09:12

Только я знаю 5

dottedmag09:09:20

Это сокпаппеты, на самом деле там один Рич!

prepor09:09:02

@lowl4tency: кстати тонский писал тут как раз на тему http://tonsky.livejournal.com/298673.html

Kira Sotnikov09:09:36

спасибо, пропустил этот пост

Kira Sotnikov09:09:59

А я тут недавно опечалился

Kira Sotnikov09:09:11

В мире не существует нормальной блогоплатформы 😞

ul09:09:26

это вечная печаль

ul09:09:34

новые платформы из неё вырастают

ul09:09:40

и никак не станут нормальными))))

Kira Sotnikov09:09:13

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

Kira Sotnikov09:09:33

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

Kira Sotnikov09:09:46

клаудвотч перестает трейсить логи

Kira Sotnikov09:09:57

викторопс не пушит нотификашки

Kira Sotnikov09:09:15

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

Kira Sotnikov09:09:36

И остается только показать пагу юзерам "сори пацаны, мы не работаем"

Ivan Fedorov09:09:06

@abtv: о, спасибо! Буду иметь ввиду, попробую.

dottedmag10:09:06

@prepor: @lowl4tency: Вы ещё Kyle Kingsbury почитайте, чтобы добавить к своей депрессии =)

Kira Sotnikov10:09:44

Обязатнльно

prepor10:09:50

@dottedmag: почему вы думаете, что у меня депрессия и что не читал афира? И меж тем многие продукты вполне достойно проходят проверку жепсеном, тот же консул, например.

Kira Sotnikov10:09:30

Kyle Kingsbury - это афир?

Kira Sotnikov11:09:28

Спич про риман simple_smile

rm11:09:49

мне тоже про афира расскажите, я ничего не понял

rm11:09:15

самое ужасное, что сам попросил

Kira Sotnikov11:09:44

я был подписан на него в твитторе

Kira Sotnikov11:09:02

но когда понял что он пишет не про программинг а про бдсм и постит селфачи отписался ._.

ponimas11:09:30

ну он про погроминг пишет всё же иногда

ponimas11:09:01

но жопы чаще

Kira Sotnikov12:09:44

ну кто-нить ретвитнет если что годное напишет

prepor12:09:42

ага, примерно так и происходит )

dottedmag12:09:23

Интересно, есть ли какой-нибудь сервис, который фильтрует блоги/фиды/фейсбук заданных человек по определённым тематикам?

dottedmag12:09:57

Скажем, у меня есть фильтр, который отфильтровывает от блога Шнайера его посты про кальмаров, но это ж руками надо делать.

konukhov12:09:07

я кстати сейчас делаю штуку на похожую тему – запомню, что ты сказал simple_smile

Kira Sotnikov12:09:42

dottedmag: причем чтобы оно грабило все социалки и помещало в один рсс фид )

dottedmag12:09:52

Ну, это бы было совсем круто.

Kira Sotnikov12:09:56

ну или в твиттор ленту

Kira Sotnikov12:09:04

и еще чтобы оно само искало похожее

dottedmag12:09:22

@konukhov: Если получится что-нибудь крутое и деньги приносящее -- дай бесплатный аккаунт, плз :-)

Kira Sotnikov12:09:25

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

dottedmag12:09:40

Индусы не дешевеют, а железо для нейросетей дешевеет.

dottedmag12:09:02

Точнее, индусы дешевеют сублинейно, а железо - экспоненциально.

konukhov12:09:40

ну, такое будет не сразу точно, хаха. я делаю для себя, чтобы избавиться от шума в лентах. чтобы вообще их не читать, точнее. когда запущу – покажу и расскажу, так как делаю на clojure.

rm13:09:04

пришло время глупых вопросов. Есть вектор из 300 элементов, как взять с 20го по 50й?

rm13:09:37

спасибки

a.espolov13:09:59

Народ, а в datascript юзал кто pull api?

Kira Sotnikov13:09:27

konukhov: а мне нужен апп, который из тонны писем и нотификашек будет вытаскивать важное 😞

asolovyov14:09:11

блин, что-то в #C03S1L9DN все тупят

asolovyov14:09:30

есть какой-нить способ нормально добавить что-то типа преамбла без оптимизаций

asolovyov14:09:35

@delaguardo: ахахха, сорри )

asolovyov14:09:46

я тут реально уже головой бьюсь

asolovyov14:09:54

очень не хочется post-processing делать какой-то

asolovyov14:09:04

а cljs мой ns реквайрит хер знает когда

asolovyov14:09:11

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

delaguardo14:09:13

так а почему просто для none оптимизации добавлять в html лишний <script >?

asolovyov14:09:23

delaguardo: а мне не для браузера

asolovyov14:09:25

мне для ноды

asolovyov14:09:29

у меня нет хтмла 😞

asolovyov14:09:38

я делаю node target/server/main.js

asolovyov14:09:09

и у меня какой-нить mk.fe.banners втаскивается раньше, чем mk.node-shim...

asolovyov14:09:20

Нолен уже баг по этому поводу завëл )

asolovyov14:09:40

этот крутящийся дум парит мне совсем левое 😕

dottedmag14:09:43

@asolovyov: cat(1) - это тоже postprocessing? :)

asolovyov14:09:12

@dottedmag: всë шо заставляет меня запускать что-то кроме моего лейна - постпроцессинг )

asolovyov14:09:20

с постпроцессингом не будет качественного фигвила!

asolovyov14:09:25

я придумал

asolovyov14:09:34

надо ns обозвать mk.imfirst_ns

delaguardo14:09:40

node -r может помочь

asolovyov14:09:48

а что делает -r?

asolovyov14:09:52

это в новой ноде?

delaguardo14:09:16

да давно вроде есть

delaguardo14:09:29

-r, --require         module to preload (option can be repeated)

dottedmag14:09:34

В 0.12 нету

delaguardo14:09:02

мне казалось я ее в 0.11 использовал, но могу ошибаться

asolovyov14:09:17

в 0.12.7 нет

asolovyov14:09:24

а это был бы норм ход

ul14:09:27

да подожди

asolovyov14:09:32

@ul: есть идеи? simple_smile

ul14:09:41

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

asolovyov14:09:43

переназвать в mk.a-node-shim не помогло ))

ul14:09:07

потребуй нужный тебе неймспейс где-нибудь

ul14:09:12

и он пойдёт раньше того места

asolovyov14:09:51

так я так и делаю

asolovyov14:09:04

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

dottedmag14:09:11

Значит надо требовать этот нейспейс везде.

asolovyov14:09:14

это ж херня

asolovyov14:09:18

я ж с ума сойду :))

dottedmag14:09:29

Ну ведь он же нужен? значит в require :-P

asolovyov14:09:50

@dottedmag: ну я его require'ю в нужном месте

asolovyov14:09:59

вот смотри старт приложения какой:

asolovyov14:09:06

(ns mk.server-render
  (:require [cljs.nodejs :as node]

            [mk.a-node-shim]
            [mk.fe.main :as main]))

dottedmag14:09:20

@asolovyov: Ну вот этот mk.fe.banners хочет шим? значит в него нужен require шима.

asolovyov14:09:34

но херня в том, что какого-то перца goog.require пытается подгружать стафф изнутри mk.fe.main раньше, чем a-node-shim

asolovyov14:09:42

@dottedmag: ну так только в ноде, а в браузере - не хочет

ul14:09:46

создай cljs.core неймспейс и там потребуй

dottedmag14:09:51

а тебе никто не гарантирует порядок внутри (:require)

ul14:09:52

может прокатит))))

asolovyov14:09:53

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

asolovyov14:09:09

@dottedmag: http://dev.clojure.org/jira/browse/CLJS-1453 ну вот сейчас - не гарантирует :))

dottedmag14:09:51

Окей. Можешь попробовать переименовывать, пока у тебя хэш имени mk.node-shim не станет меньше, чем хэш mk.fe.main :)

ul14:09:57

я, кстати, серьёзно насчёт cljs.core

asolovyov14:09:12

@ul: а куда его деть?

asolovyov14:09:16

не совсем понимаю

ul14:09:40

в src создаёшь папочку cljs и в не файл core.cljs

asolovyov14:09:04

цикава тема

ul14:09:05

и там (ns cljs.core (:require shim))

asolovyov14:09:23

или может

(ns cljs.core) (js* "мой щит")
?

ul14:09:32

а может и так даже

ul14:09:50

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

ul14:09:58

и тогда вот оно счастье

asolovyov14:09:31

нет счастья ))

niquola14:09:01

@asolovyov: ты покажи где падает - кусочек кода. Разбей require на (require [....]) (require [...])

niquola14:09:43

и кстати что shim делает - он не манкипатчит случаем cljs.core?

asolovyov14:09:51

падает где-то глубоко внутри mk.fe.main

asolovyov14:09:58

(js* "
window = this;
window.location = {};
window.document = {};
window.localStorage = {};
window.setTimeout = function(fn) { return fn(); };
")

asolovyov14:09:01

вот мой шим )

asolovyov14:09:32

его хватает, но сцуко как его заставить работать!

niquola14:09:31

может clojurescript откладывает выполнение js*

asolovyov14:09:40

просто реквайрит поздно

asolovyov14:09:00

инфа 100% 😃

dottedmag14:09:44

Так может тогда (ns mk.shit) (require mk.node-shim) (require mk.server-render) ?

asolovyov14:09:37

так это то ж самое будет, что require mk.node-shim, require mk.fe.main, просто с другими хешами

asolovyov14:09:46

ËБАНЫЙ ЖС

dottedmag14:09:59

Эмм. Не. Не в (ns), а отдельными выражениями.

asolovyov14:09:09

думаешь поможет?

asolovyov14:09:12

щаааааасссссс

dottedmag14:09:22

@asolovyov: Вон, @nicola тебе выше то же самое подсказывал

niquola14:09:41

он в ярости simple_smile

niquola14:09:51

ну как?

asolovyov14:09:03

WARNING: Use of undeclared Var mk.server-render/require at line 6 src-node/mk/server_render.cljs

asolovyov14:09:18

нет require'а в cljs отдельного simple_smile

niquola14:09:42

есть еще вариант - условную конструкцию (if js/global ......) прямо в main до require

asolovyov14:09:07

а тогда не компилит нормально файл

asolovyov14:09:12

уже попробовал, какой-то ужас выходит

asolovyov14:09:15

ща покажу

niquola15:09:13

наверно проще предконфигуренную ноду запустить - ты как к ней коннектишься

asolovyov15:09:31

коннекчусь в плане как я от неë ответа хочу?

asolovyov15:09:35

ну пока тупо в консоли запускаю

niquola15:09:56

ну тогда можешь там load своего шима сделать

asolovyov15:09:16

Дэвид предлагает сделать чтоб :preable работало без оптимизаций

asolovyov15:09:36

nicola: ну это как раз post-processing выходит )

dottedmag15:09:39

@asolovyov: А как работает фигвил с нодой? Я пытался его заюзать для content script в browser extension, который не может загружать внешние .js-ины, а он тупо мне лепил <script> в DOM.

asolovyov15:09:44

"сделать" в смысле "сабмить патчи"

niquola15:09:51

это пред-подготовка simple_smile

asolovyov15:09:05

bhauman точно его как-то юзал

asolovyov15:09:12

я пока еще не завëл, на более ранней стадии )

asolovyov15:09:15

@asolovyov: actually it appears this was already fixed in master by @pupeno simple_smile

asolovyov15:09:19

оееееееее

asolovyov15:09:11

не, ну не круто?

asolovyov15:09:21

жаль тока шо не сделал релиза неделю назад, я б и не знал мучений simple_smile

niquola15:09:18

@asolovyov: а что ты хочешь от nodы?

asolovyov15:09:09

nicola: server-side rendering моего приложения на реакте

niquola15:09:16

а nashorn пробовал?

niquola15:09:04

Я тут для других целей к нему присматриваюсь

asolovyov15:09:08

пробовал

asolovyov15:09:12

очень плохо всë, я тебе так скажу

asolovyov15:09:21

во-первых, он жрëт нереально много оперативы

asolovyov15:09:28

во-вторых, парсит жс очень долго

asolovyov15:09:44

у меня вот есть экзампл-проект, где nashorn для этого юзается

asolovyov15:09:55

1 инстанс насхорна запускается секунд 15-20

asolovyov15:09:25

можно ускорить, если включить кеш (в 18u40 появился), но кеш занимает гиг места на диске для такого кол-ва кода (50 строк + реакт)

asolovyov15:09:46

потом скорость в принципе терпимая, но на реальном приложении у меня он валится, если не дать ему -Xmx4g

asolovyov15:09:11

тогда он сжирает 3,5 гб памяти в течении минут 3-5, а потом говорит "ошибка"

asolovyov15:09:18

ну я реально схожу с ума такие ошибки исправлять simple_smile

asolovyov15:09:40

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

niquola15:09:53

Ууу, ясно - будем знать

niquola15:09:12

Я тут думал, что reagent можно и clj отрендерить ;)

asolovyov15:09:34

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

niquola15:09:40

Нам нужен virtualdom на чистом cljs, с сервер рендеригом на clj - шоб ноду не таскать

asolovyov15:09:11

ну это было бы суперкруто

asolovyov15:09:32

а пока шо у меня sablono начал ругаться, что react'а не видит, ггг

asolovyov15:09:34

козлище

asolovyov15:09:45

пойду я домой, пожалуй simple_smile