Здравствуйте, Sharov, Вы писали:
S>Пляски с чем-то типа CRDT. А так чем не подходят гугловый excel? И в чем смысл 5 млн. ячеек? Я use case понять не могу..
Ну, возможно, кто-то пытается с ним конкурировать...
Здравствуйте, DiPaolo, Вы писали:
DP>Видел эту вакансию несколько месяцев назад. Тогда было требование C++ и/или Rust. При этом условия были лучше: $7-10k и НЕ-тимлидская позиция. Странно это
С тех пор понаписали на яве и го, и деньги начали заканчиваться...
Здравствуйте, Denis Ivlev, Вы писали:
DI>5. Каждый раз, когда на сервере изменяется ячейка происходит проверка затрагивает ли это какую-либо пользовательскую вьюху, тут есть тоже простор для оптимизаций, но вангую простым перебором по вьюхам проверить x1 <= x и x <= x2 будет гуд энаф DI>6. Если получили попадание, то оповещаем пользователя. Чтобы не гонять трафик, делаем отправку ленивую
О! Теперь я, наконец, понял, как появляются всё эти ужасно тормозящие интерфейсы в, казалось бы, простых приложениях.
Здравствуйте, cppguard, Вы писали:
C>О! Теперь я, наконец, понял, как появляются всё эти ужасно тормозящие интерфейсы в, казалось бы, простых приложениях.
Здравствуйте, cppguard, Вы писали:
C>О! Теперь я, наконец, понял, как появляются всё эти ужасно тормозящие интерфейсы в, казалось бы, простых приложениях.
Что, если получать изменения по ячейке, мержить по Levenshtein distance, "пушить" раздельно. Каждый пользователь со своей копией "репы". В случае, если автоматически смержить не получается- предоставить UI для ручного мержа ячейки. Несмерженную копию документа для каждого юзера тоже можно хранить на сервере как "cloud backup".
Кстати, у VSCode есть фича одновременно редактировать один и тот же исходник нескольким коллегам по сети, и изменения сразу появляются для всей группы.
Здравствуйте, Denis Ivlev, Вы писали:
C>>О! Теперь я, наконец, понял, как появляются всё эти ужасно тормозящие интерфейсы в, казалось бы, простых приложениях. DI>И почему же?
Потому что ты не знаешь, как работают электронные таблицы, но приложение уже спроектировал.
Например, у нас на кафедре защищался чувак, у которого в Excel рассчёты длились двое суток и он смог сократить время до 13 часов. Сейчас тот же LibreOffice умеет переносить вычисления на видеокарту (OpenCL). Вот интересно, где ты будешь проводить расчёты (локально или на сервере), а если они длительные, а если 10 пользователей одновременно поменяли значения (может даже разные), которые приведут к длительному пересчёту и необходимости перерисовки вьюх и изменению значений у остальных пользователей. Твоё решение школьного уровня, пятёрку по информатике получишь.
Здравствуйте, Denis Ivlev, Вы писали: DI>Все. Вот теперь разрабатывать закончил. Заняло это аж минуты 3
Продолжаю отрабатывать 600К
Теперь не только плгоритм, но и пруф оф концепт:
Код
import random
import time
repeats = 10
users = 1000
width = 2500
height = 2500
view_width = 200
view_height = 100
data = [[0 for x in range(width)] for y in range(height)]
views = None
def rand_point():
return random.randrange(width) - 1, random.randrange(height) - 1
def rand_view():
x, y = rand_point()
return x, y, min(x + view_width, width), min(y + view_height, height)
def match(x, y, x1, y1, x2, y2):
return x1 <= x and x <= x2 and y1 <= y and y <= y2
def modify(x, y):
data[x][y] = data[x][y] + 1
notifications = 0
views = [rand_view() for x in range(users)]
def notify(x, y):
global notifications
for v in views:
if match(x, y, *v):
notifications = notifications + 1
start = time.time()
for i in range(repeats):
for j in range(users):
x, y = rand_point()
modify(x, y)
notify(x, y)
end = time.time()
print('modifications: ', users * repeats)
print('notifications: ', notifications)
print('spend time:', end - start)
print('modifications per sec: ', users * repeats / (end - start))
Вообще неоптимизированный тормозной питон на табличке 2500х2500 при 1000 пользователях выдает ~3950 сериализованных изменений в таблице. Интрига — что-же будет если написать это на плюсах, да еще и несвязанные регионы обрабатывать параллельно?
Здравствуйте, Nuzhny, Вы писали:
N>Потому что ты не знаешь, как работают электронные таблицы, но приложение уже спроектировал.
И как дерзнули разработчики первой электронной таблицы ее спроектировать? Не боги горшки обжигают, если что.
N>Вот интересно, где ты будешь проводить расчёты (локально или на сервере)
В моем алгоритме написано — на сервере (к умению читать).
N>а если они длительные, а если 10 пользователей одновременно поменяли значения (может даже разные), которые приведут к длительному пересчёту и необходимости перерисовки вьюх и изменению значений у остальных пользователей.
И? Аплайся на 600К, я тебе помогу за половину этой суммы консультациями, как распаралелить все это на несколько нод и так далее. Терабайтными витринами данных в телекомах и всяких там банках я давно занимаюсь, есть что тебе рассказать.
N>Твоё решение школьного уровня, пятёрку по информатике получишь.
Здравствуйте, Denis Ivlev, Вы писали:
DI>И как дерзнули разработчики первой электронной таблицы ее спроектировать? Не боги горшки обжигают, если что.
У них не было таких требований?
DI>В моем алгоритме написано — на сервере (к умению читать).
То есть оно у всех может застыть на несколько часов, пока перелопачивает данные другого? Или они будут работать с устаревшими данными? Если бы вычисления были локальными и у каждого со своей копией, то таких проблем не было бы, но появилась бы необходимость делать merge при синхронизации. Ты никак не объяснил свой архитектурный выбор, это минус.
DI>И? Аплайся на 600К, я тебе помогу за половину этой суммы консультациями, как распаралелить все это на несколько нод и так далее. Терабайтными витринами данных в телекомах и всяких там банках я давно занимаюсь, есть что тебе рассказать.
В твоём "алгоритме написано — на сервере (к умению читать)", а не на серверах или нодах. Это к умению писать.
DI>Спасибо.
Здравствуйте, Nuzhny, Вы писали:
N>У них не было таких требований?
А что в этих требованиях особенного?
N>То есть оно у всех может застыть на несколько часов, пока перелопачивает данные другого?
Если бы ты писал алгоритм, то возможно бы так и было. Вообще эта студенческая задача — интернет магазин, несколько клиентов хотят купить один товар, количество на складе ограничено, что делать? Принципиально тут никаких отличий нет.
N>Или они будут работать с устаревшими данными?
Один из вариантов. Есть еще блокировки части таблицы, если консистентность важна. Других вариантов человечество не придумало — либо блокировки, либо грязные чтения.
N>Если бы вычисления были локальными и у каждого со своей копией, то таких проблем не было бы, но появилась бы необходимость делать merge при синхронизации.
И чем принципиально отличается невозможность редактировать пересчитываемые колонки в твоем экселе локально от того же самого на сервере?
N>Ты никак не объяснил свой архитектурный выбор, это минус.
Ты сначала мне половину от новой зп переведи, потом начнутся подробные консультации.
DI>>И? Аплайся на 600К, я тебе помогу за половину этой суммы консультациями, как распаралелить все это на несколько нод и так далее. Терабайтными витринами данных в телекомах и всяких там банках я давно занимаюсь, есть что тебе рассказать.
N>В твоём "алгоритме написано — на сервере (к умению читать)", а не на серверах или нодах. Это к умению писать.
Так ты в деле или нет? Решай уже.
N>Обращайся, научу.
Мне заниматься компьютерным зрением не интересно, нас и тут неплохо кормят.
Здравствуйте, so5team, Вы писали:
S>Непонятно только внезапно возвращение на форум, опять материал для курсовой по психологии потребовался?
Привет! Я тоже по тебе скучал. Как твой мега-бизнес? Еще ноги не протянул? Надо зайти в твой бложик посмотреть нет ли рефлексии от бессмысленности прожитой жизни
Здравствуйте, Denis Ivlev, Вы писали:
S>>Непонятно только внезапно возвращение на форум, опять материал для курсовой по психологии потребовался?
DI>Я тоже по тебе скучал.
"Тоже" -- это вы, лже-Денис, себе льстите.
DI>Как твой мега-бизнес? Еще ноги не протянул?
Не дождетесь (с)
DI>Надо зайти в твой бложик посмотреть нет ли рефлексии от бессмысленности прожитой жизни
Лучше было бы на вопрос ответить. Но от вас ничего толкового ждать не приходится.
Здравствуйте, so5team, Вы писали:
S>"Тоже" -- это вы, лже-Денис, себе льстите.
Не лукавь, сейчас опять начнешь бегать за мной и активно комментировать, уж я то знаю
S>Не дождетесь (с)
Ну и славно, если что пиши, помогу.
DI>>Надо зайти в твой бложик посмотреть нет ли рефлексии от бессмысленности прожитой жизни
S>Лучше было бы на вопрос ответить. Но от вас ничего толкового ждать не приходится.
Кому ответить и на какой вопрос? Написал ты как-то несвязно, я не понял.
Здравствуйте, Denis Ivlev, Вы писали:
DI>Не лукавь, сейчас опять начнешь бегать за мной и активно комментировать, уж я то знаю
Да, вы явно знаете все на свете. Даже знаете, что знаете все на свете.
DI>Ну и славно, если что пиши, помогу.
Писать кому и куда? Какому-то анонимному чмошнику, который заявляет о своем "личном бренде" и ссытся себя назвать? Бу-га-га.
DI>Кому ответить и на какой вопрос? Написал ты как-то несвязно, я не понял.
Так ведь мозги и умение читать не нужны тому, кто знает все на свете, т.е. вам. Так что не удивительно, что не поняли.
А вопрос простой: вы вновь пришли сюда собирать материал для очередной курсовой по психологии?
Здравствуйте, so5team, Вы писали:
DI>>Не лукавь, сейчас опять начнешь бегать за мной и активно комментировать, уж я то знаю
S>Да, вы явно знаете все на свете. Даже знаете, что знаете все на свете.
Все как я и говорил
S>Писать кому и куда? Какому-то анонимному чмошнику, который заявляет о своем "личном бренде" и ссытся себя назвать? Бу-га-га.
О, хамло на этот раз раскрылось моментально. Видимо и в самом деле не все в жизни гладко.
S>А вопрос простой: вы вновь пришли сюда собирать материал для очередной курсовой по психологии?
Нет, уже написал. Просто скучно стало. Но спасибо тебе, уже все ок
Здравствуйте, Denis Ivlev, Вы писали:
DI>А что в этих требованиях особенного?
Сейчас ничего, а для первых таблиц сложно.
DI>Если бы ты писал алгоритм, то возможно бы так и было. Вообще эта студенческая задача — интернет магазин, несколько клиентов хотят купить один товар, количество на складе ограничено, что делать? Принципиально тут никаких отличий нет.
Какой интернет-магазин? Какой склад? Я говорю о том, что вычисления могут длиться час. И так у многих пользователей одновременно. И результаты вычислений одних пользователей будут влиять на результаты вычислений других. И это вполне реальные сценарии — тот же Excel умеет и Монте-Карло, и всякие небыстрые алгоритмы типа ARIMA. У тебя же что-то простое типа отображения таблички. Я так понимаю, что ты на GUI специализируешься?
DI>Один из вариантов. Есть еще блокировки части таблицы, если консистентность важна. Других вариантов человечество не придумало — либо блокировки, либо грязные чтения.
Вообще-то придумано: можно брать либо часть готовых результатов, либо вообще промежуточные результаты. Когда-нибудь слышал про ленивые вычисления? Если модель пользователя 1 зависит от данных пользователя 2, то можно проводить вычисления, беря данные по мере их готовности.
DI>И чем принципиально отличается невозможность редактировать пересчитываемые колонки в твоем экселе локально от того же самого на сервере?
О, принципиально различается и зависит от многих параметров: мощности локальной машины, мощности сервера и пропускной способностью сети / объём данных.
DI>Ты сначала мне половину от новой зп переведи, потом начнутся подробные консультации.
За такие консультации? Ты ещё собеседование у меня не прошёл, чтобы я тебя нанял.
Здравствуйте, Denis Ivlev, Вы писали:
S>>Писать кому и куда? Какому-то анонимному чмошнику, который заявляет о своем "личном бренде" и ссытся себя назвать? Бу-га-га.
DI>О, хамло на этот раз раскрылось моментально.
Что ж поделать, временами назвать вещи своими именами можно лишь в грубых выражениях. Вели бы себя как человек и отношение к вам было бы другим.
Здравствуйте, so5team, Вы писали:
S>>>Писать кому и куда? Какому-то анонимному чмошнику, который заявляет о своем "личном бренде" и ссытся себя назвать? Бу-га-га.
DI>>О, хамло на этот раз раскрылось моментально.
S>Что ж поделать, временами назвать вещи своими именами можно лишь в грубых выражениях. Вели бы себя как человек и отношение к вам было бы другим.
Хорошо, допустим ты сказал правду. Аргументировать это можешь? Потому, что мне кажется, что это просто иррациональная личностная неприязнь.
Здравствуйте, Nuzhny, Вы писали:
N>У них не было таких требований?
DI>>А что в этих требованиях особенного?
N>Сейчас ничего, а для первых таблиц сложно.
Про какие конкретно требования ты говоришь?
N>Какой интернет-магазин? Какой склад? Я говорю о том, что вычисления могут длиться час.
Ты не агрись, а немного думай о том, что тебе говорят. Ячейка в таблице шарящаяся между пользователями — суть тот же товар в интернет магазине и тут уже есть понятные решения.
N>Я так понимаю, что ты на GUI специализируешься?
Ты извини, но ты снова показал, что ты не читаешь собеседника:
Терабайтными витринами данных в телекомах и всяких там банках я давно занимаюсь, есть что тебе рассказать.
Или ты не просто настолько далек от области, что витрина для тебя гуй? Ну так снова не агрись, а пытайся понять о чем тебе говорят. Я вот в cv не лезу, так как там полный ноль и уверен, что там ты меня просто несравнимо компетентней.
N>Вообще-то придумано: можно брать либо часть готовых результатов, либо вообще промежуточные результаты. Когда-нибудь слышал про ленивые вычисления? Если модель пользователя 1 зависит от данных пользователя 2, то можно проводить вычисления, беря данные по мере их готовности.
Ты снова невпопад отвечаешь, извини.
DI>>И чем принципиально отличается невозможность редактировать пересчитываемые колонки в твоем экселе локально от того же самого на сервере?
N>О, принципиально различается и зависит от многих параметров: мощности локальной машины, мощности сервера и пропускной способностью сети / объём данных.
Это общие слова. Если интересно, давай конкретику я расскажу.