
Daniel
02.08.2018
12:58:14
собрать в слайс, и отсортировать его

Subbotin
02.08.2018
12:58:15
наверняка есть какие-то готовые решения под это.

Daniel
02.08.2018
12:58:23
будет сильно быстрее списка

Subbotin
02.08.2018
13:00:11
собрать в слайс, и отсортировать его
ага. я думал об этом. проблема в том что это по сути добавляет дополнительную задержку размером с буфер. тоесть если мы буферизуем последние три секунды, то часть данных у нас попадёт на вход функции через 6 секунд

Google

Subbotin
02.08.2018
13:00:21
а хотелось бы таки 3

Daniel
02.08.2018
13:00:46
этого я не понял
почему лишние 3 секунды?

Subbotin
02.08.2018
13:01:19
хм. счас подумаю. может я неправ

Daniel
02.08.2018
13:01:41
я так понимаю, что потребитель данных проглатывает их мгновенно

Subbotin
02.08.2018
13:02:21
да. проглатывает мгновенно или типа того

Daniel
02.08.2018
13:02:27
ну вот
все, что есть, добавили в слайс (попутно отбросив старое)
отсортировали, скормили на вход потребителю, запомнив максимальное
ждем нового

Subbotin
02.08.2018
13:04:50
а. всё правильно. вот смотри. у нас данные же поступают не равномерно. отклонение может достигать 3 секунд. тоесть если мы кормим порциями по три секунды, то у нас в конце этих трех секунд может быть что-то что не пришло и мы ждём его еще три секунды складывая условно в другой буфер то новее и идёт уже в следующие три секунды

Daniel
02.08.2018
13:05:44
так это, надо не ждать, а по приходу последнего делать все, что надо

Subbotin
02.08.2018
13:07:59
чё-то я туплю

Google

Subbotin
02.08.2018
13:15:19
допустим счас 00:00
мы создаём буфер.
нам летят значения за промежуток 59:57-00:00. мы их выкидываем потому что только стартанули.
секунды тикают и у нас начинают появляться значения с промежутками 00:00-00:03.
счас 00:03. мы не можем счас отсортировать буфер и скормить его весь в функцию. потому что возможно через 2.55 секунды нам прилетит значение для времени 00:02.99
значит нам надо подождать 00:06, отсортировать буфер условно первую половину (по ширине делить нельзя - придётся ручками найти границу, пробежав) скормить функции, а вторую половину использовать для добавления новых значений
по ходу можно например сортировать раз в секунду и кормить секундными порциями

Ivan
02.08.2018
13:15:50
@onokonem @mr_tron почему бы просто не сделать это с каналом или двумя каналами?

Subbotin
02.08.2018
13:16:28
потому что данные поступают неравномерно и их надо как-то упорядочить по времени
канал тут как-то не очень полезен

Ivan
02.08.2018
13:16:53
между одним и вторым каналом упорядочивать, сортировать и отбрасывать данные
такая схема

Subbotin
02.08.2018
13:17:32
эээээ.

Daniel
02.08.2018
13:17:33
так упорядочить можно только порцию
а порцию надо где-то накопить
и это не канал

Ivan
02.08.2018
13:17:58

Subbotin
02.08.2018
13:19:00
ну можно резать на секундные чанки в принципе и сортировать потом секунды внутри и кормить так

Daniel
02.08.2018
13:19:43
можно
но тут уже нужно подробное описание задачи

Subbotin
02.08.2018
13:22:31
ну у меня есть несколько девайсов которые шлют данные. эти данные используются для апдейта некой метрики, которую надо показывать пользователю желательно не с безумной задержкой
поскольку задержки добавляются на многих стадиях, то их приходится экономить где можно
есть проблемы с тем, что данные буферизуются на девайсах на 2 секунды. ну и туда-сюда ещё доставка, запас на многозадачность - 99% пакетов данных укладываются в 3 секунды.

Daniel
02.08.2018
13:28:22
число девайсов известно?

Subbotin
02.08.2018
13:28:59
6

Google

Daniel
02.08.2018
13:29:38
ну так это

Subbotin
02.08.2018
13:29:50
ну они ещё и разнородны. тоесть 2 шлют один тип данных. 4 - другой. при этом из этих 4 два не кэшируют и срут как есть

Daniel
02.08.2018
13:30:01
в чем проблема-то определить, что они все все заслали, или 3 секунды вышли?

Subbotin
02.08.2018
13:40:02
ну короче я понял. режем чанками и пихаем в буферы размером в секунду или пол секунды. потом сортируем буфер и скармливаем его

Nazar
02.08.2018
14:09:35
у кого есть желание рев'ювнуть код, пишите в личку
https://github.com/nazaron1995/psychic-chainsaw

Roman
02.08.2018
14:17:25
Ребят, где найти колабораторов для open source проекта?
Пришёл момент когда мне нужна помощь комьюнити с github.com/qbeon/webwire-go
поскольку milestone v1.0.0 почти достигнут - подходит момент оптимизации и отладки
и тут я к сожалению не очень силён да и во времени немного ограничен, поэтому нуждаюсь в помощи
не подскажете?

Alexander
02.08.2018
14:39:02
подскажите плз, чем лучше делать хттп запросы?

Daniel
02.08.2018
14:39:53
а?!
стандартным клиентом

Egor
02.08.2018
14:40:10

undiabler
02.08.2018
14:52:37
чем можно быстро паковать структуры кроме json?

Vadim
02.08.2018
14:53:33
Быстрее некуда

undiabler
02.08.2018
15:02:00
кейс такой, я закидываю чувствительные данные в сторонную систему типа аналитики
закидываю как пережатый кусок байт с aes и base64 сверху
надо теперь пропихнуть целую структуру
ее предварительно надо чем-то запаковать. Очень простым. Json не нравится то что там много лишнего и все строками
очень желательно без лишних зависимостей и генераторов структур =)

Виктор
02.08.2018
15:04:20
yaml?

undiabler
02.08.2018
15:04:38
так тоже строки же

Dmitri
02.08.2018
15:04:50
msgpack
protocol buffers

Google

Dmitri
02.08.2018
15:05:31
если не строки - то формат данных идет отдельно от данных
так что protobuf и иже с ним

undiabler
02.08.2018
15:06:54
протобуф смотрел, раздражает необходимость кодогенерации
за msgpack спасибо

Artem
02.08.2018
15:07:38
тяжело будет на го писать, если кодогенерация раздражает

Dmitri
02.08.2018
15:07:55
если go - go, то можно gob
там компактно и быстро

Alexander
02.08.2018
16:25:27
а можно ли как то присвоить эелменыты через запятую, если функция возвращает массив? например
a, b, c := strings.Split(str, ",")

Daniel
02.08.2018
16:30:53
нет
массив - это массив

Vadim
02.08.2018
16:31:50
Питонист в треде)

Savely
02.08.2018
16:41:27

Sergey
02.08.2018
16:49:05
Concurrency это когда на одном ядре выполняется несколько процессов как бы чередуясь?

Alexander
02.08.2018
16:51:58

Savely
02.08.2018
16:52:26
Красивого решения нет, кодеген разве что
Но все равно некравиво будет

Daniel
02.08.2018
16:53:00

Alexander
02.08.2018
16:53:58

Savely
02.08.2018
16:54:18

Google

Daniel
02.08.2018
16:54:39

Savely
02.08.2018
16:54:44
Сахара такого нет
Да и чет, если честно, никогда такой необходимости не было, это на какую-то функциональщину похоже

Daniel
02.08.2018
16:56:01
это обычное дело для perl/python

Alexander
02.08.2018
16:58:39
да, я как будто обратно на 10 лет назад вернулся.

Roman
02.08.2018
17:05:04

Vladimir
02.08.2018
17:05:46

Daniel
02.08.2018
17:09:07
большинство программеров никогда не думало, что на самом деле прячется за привычными конструкциями

Alexander
02.08.2018
17:28:28
а какой есть аналог fmt.Printf, только чтобы он не в косоль выводил, а переменную возвращал?

Dmitry
02.08.2018
17:28:53
Sprinf

Alexander
02.08.2018
17:29:04
спасибо

Roman
02.08.2018
17:31:33

undiabler
02.08.2018
18:07:36

Dmitri
02.08.2018
18:08:08

Alexander
02.08.2018
18:21:28
а что в го вместо наследования/полиморфизма? допустим у меня есть абстрактный класс животное с методом move() и параметром mass. от него унаследованы 2 класса human, dog. и у этих двух классов должен быть такой же метод и параметр. это как то интерфейсами решается? или структуры как то объеденять надо?

Bohdan
02.08.2018
18:25:46

Sergey
02.08.2018
18:28:29
Кто писал кодогенераторы? поделитесь ссылочками на примеры, буду благодарен

Foxcool
02.08.2018
18:29:11
Go swagger?

Sergey
02.08.2018
18:39:08
Хммм

Artem
02.08.2018
18:39:16
stringer где-то внутри стандартной библы