Re[10]: Тестовое задание: написать эффективный TCP-сервер
От: so5team https://stiffstream.com
Дата: 13.02.22 08:39
Оценка: -3
Здравствуйте, dwebster, Вы писали:

D>Again, я потратил за задание два дня, разбираясь с boost asio, который до этого в глаза не видел.


Давайте и я вам еще раз: вы позволили себе высказать свою точку зрения на происходящие события. И тем самым спровоцировали негативные отзывы в адрес компании (кому-то не понравился сам факт наличия тестового, какой-то анонимный экспертный эксперт объявил разработчиков из этой компании в непрофессионализме, а продукты компании в низком качестве). При этом вы убеждены, что высказались объективно.

При этом компания не может себе позволить высказаться объективно по вашему поводу, а именно: пришел человек без нужных знаний, потратил кучу времени на простое тестовое, сделал абы как, важное обязательное требование вообще проигнорировал.
Re[11]: Тестовое задание: написать эффективный TCP-сервер
От: Тёмчик Австралия жж
Дата: 13.02.22 08:59
Оценка:
Здравствуйте, so5team, Вы писали:

Тё>>Помнится, кое-кто хранит обьекты в хеш мапе, ибо в подсчет ссылок нишмогла.


S>Тёмчик, ты опять ничего не понял, но щеки надул и авторитетно пукнул в лужу.

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

Тё>>алгоритмы 3

Тё>>оформление 5
Тё>>многопоточка 4.

S>На C++ с Asio в многопотоке давно программировал, экспертный ты наш?

Немного трогал асинхронный io в прошлом. А также, работал вместе с автором asio в одном отделе и ходил на пятничный beer.

S>PS. А что тема с алго-сложностью
Автор: Тёмчик
Дата: 12.02.22
так тихо стухла-то? Я требую продолжения банкета!

Я уже ответил про хеши. Повторяться не буду.
Re[12]: Тестовое задание: написать эффективный TCP-сервер
От: so5team https://stiffstream.com
Дата: 13.02.22 09:16
Оценка:
Здравствуйте, Тёмчик, Вы писали:

S>>Тёмчик, ты опять ничего не понял, но щеки надул и авторитетно пукнул в лужу.

Тё>Ну конечно же ничего не понял, это ж сумрачный гений состима не мог укуренный дизайн выдать.

А какой не укуренный? Только давай предметно.

S>>На C++ с Asio в многопотоке давно программировал, экспертный ты наш?

Тё>Немного трогал асинхронный io в прошлом.

Т.е. ни строчки.

Тё>А также, работал вместе с автором asio в одном отделе и ходил на пятничный beer.


Т.е. ты оценки расставляешь просто потому, что квасил с Крисом? Прэлестно.

S>>PS. А что тема с алго-сложностью
Автор: Тёмчик
Дата: 12.02.22
так тихо стухла-то? Я требую продолжения банкета!

Тё>Я уже ответил про хеши.

Прости, мне ты ничего не ответил.
Re[9]: Тестовое задание: написать эффективный TCP-сервер
От: Shmj Ниоткуда  
Дата: 13.02.22 12:12
Оценка:
Здравствуйте, scf, Вы писали:

scf>и потоки на каждый запрос не создает.


Такой теоретический вопрос. Если все запросы в одном потоке — то что делать, когда клиент медленный и ответ не передается за 1 пакет. Т.е. вы передали 1 TCP-пакет, потом как бы ждете подтверждения вроде, передаете второй пакет. Не помню уже теорию — вроде можно замедлить однопоточные сервера такими медленными клиентами, причем даже спец. атака была такая.
Re[10]: Тестовое задание: написать эффективный TCP-сервер
От: reversecode google
Дата: 13.02.22 14:25
Оценка:
Здравствуйте, so5team, Вы писали:

S>Здравствуйте, reversecode, Вы писали:


R>>вы уже отправили пуш реквест в репу asio examples по поводу фиксов таких ляпов ?


S>Нет. И придерживаюсь мнения, что в примерах не нужно отвлекаться на такие тонкости.


и это ваше мнение масштабируется на все библиотеки ?
тот же boost в который входит asio, итд
Re[11]: Тестовое задание: написать эффективный TCP-сервер
От: so5team https://stiffstream.com
Дата: 13.02.22 14:57
Оценка:
Здравствуйте, reversecode, Вы писали:

R>>>вы уже отправили пуш реквест в репу asio examples по поводу фиксов таких ляпов ?


S>>Нет. И придерживаюсь мнения, что в примерах не нужно отвлекаться на такие тонкости.


R>и это ваше мнение масштабируется на все библиотеки ?


Мое мнение базируется на том, что код вида:
std::vector<std::thread> workers;
for(std::size_t i = 0; i != workers_count; ++i) {
  workers.push_back(std::thread{ []{ do_something(); } });
}
...
for(auto & w : workers) {
  w.join();
}

содержит грабли, не имеющие отношения ни к Asio, ни к какой-либо другой библиотеке. Соответственно, примеры, которые призваны демонстрировать особенности конкретных библиотек не обязаны содержать код для обхода этих граблей.

Надеюсь, что я ответил на ваш вопрос. И жду, что вы таки ответите на мой, который вы проигнорировали. Хотя понимаю, что шансов на вменяемый ответ в вашем случае небольшой.
Re[10]: Тестовое задание: написать эффективный TCP-сервер
От: scf  
Дата: 13.02.22 15:32
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Такой теоретический вопрос. Если все запросы в одном потоке — то что делать, когда клиент медленный и ответ не передается за 1 пакет. Т.е. вы передали 1 TCP-пакет, потом как бы ждете подтверждения вроде, передаете второй пакет. Не помню уже теорию — вроде можно замедлить однопоточные сервера такими медленными клиентами, причем даже спец. атака была такая.


Упрощая, там event loop. Когда из сети приходит пакет данных на конкретное соединение,в поток-обработчик отправляется событие ip/port/указатель на массив данных. Обработчик должен не блокировать поток, при необходимости делегировать работу в другой поток. Примерно как это сделано в UI.
Re[11]: Тестовое задание: написать эффективный TCP-сервер
От: reversecode google
Дата: 13.02.22 15:44
Оценка:
не беспокойтесь, я думаю сотрудники компании рано или поздно прибегут
если там не постоянная текучка кадров

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

касательно ваших опенсорс
видел один из них пару лет назад в продуктах streamlabs
как по мне притянуто за уши как не нужный элемент
поэтому вопрос, это вы им навязали/сотрудничаете или это их мало проф подход втянул избыточный функционал ?
Re[12]: Тестовое задание: написать эффективный TCP-сервер
От: so5team https://stiffstream.com
Дата: 13.02.22 15:59
Оценка:
Здравствуйте, reversecode, Вы писали:

R>не беспокойтесь


Я не беспокоюсь, я объясняю тов.dwebster свою точку зрения.

R>сейчас говорят очень распространен тренд игнорировать любые вак где есть тестовые задания


ИМХО, на рынке каждый имеет право придерживаться собственной стратегии: работодатели имеют право предлагать тестовые задания, соискатели имеют право таких работодателей игнорировать (или не игнорировать). В конце-концов каждый находит то, что ищет.

Другое дело, когда чью-то стратегию начинают поливать известной субстанцией.

R>видел один из них пару лет назад в продуктах streamlabs


Первый раз о таких слышу.

R>как по мне притянуто за уши как не нужный элемент


Что хоть за опенсорс?

R>поэтому вопрос, это вы им навязали


Очень бы хотелось научиться навязывать кому-нибудь бесплатный опенсорс, но пока что таким навыком не обладаю.
Отредактировано 13.02.2022 16:00 so5team . Предыдущая версия .
Re[8]: Тестовое задание: написать эффективный TCP-сервер
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 13.02.22 16:09
Оценка: +1
Здравствуйте, so5team, Вы писали:

S>Вы специально это требование проигнорировали в обоих реализациях?

Вместо выплёскивания токсичности было бы неплохо показать свою реализацию ведь судя по тому, что вы говорите такой сервер пишется за 2-3 часа. Можно даже юнит-тесты не писать.
Sic luceat lux!
Re[9]: Тестовое задание: написать эффективный TCP-сервер
От: so5team https://stiffstream.com
Дата: 13.02.22 16:22
Оценка:
Здравствуйте, Kernan, Вы писали:

K>Вместо выплёскивания токсичности


Я задал dwebster два простых прямых вопроса. Один про игнорирование одного из трех ключевых условий тестового, второй по поводу версии Ubuntu. Ни на один из простых вопросов ответа не получил. И при этом я выплескиваю токсичность? ok.jpg.

K>было бы неплохо показать свою реализацию


У dwebster был понятный стимул тратить время на такую задачу. Какой стимул должен быть у меня?

K>ведь судя по тому, что вы говорите такой сервер пишется за 2-3 часа.


Давайте вы покажите где я такое говорил?

K>Можно даже юнит-тесты не писать.


Как раз на нормальные юнит-тесты для такой задачи запросто может уйти часа 4. А если в решении озадачиться еще и контролем тайм-аутов, то и раза в два больше.
Re[10]: Тестовое задание: написать эффективный TCP-сервер
От: dwebster Россия  
Дата: 13.02.22 17:07
Оценка: 6 (1)
Здравствуйте, so5team, Вы писали:

S>Я задал dwebster два простых прямых вопроса. Один про игнорирование одного из трех ключевых условий тестового, второй по поводу версии Ubuntu. Ни на один из простых вопросов ответа не получил. И при этом я выплескиваю токсичность? ok.jpg.


1. Как я несколько раз писал ранее — что успел сделать за время, которое готов потратить на одно тестовое задание одной компании, то и сделал.
2. Версия Убунту написана в условии, которое я цитировал, и которое вы судя по всему прочитали. Убунту 16, минорная версия не указана, значит неважна.
Re[11]: Тестовое задание: написать эффективный TCP-сервер
От: so5team https://stiffstream.com
Дата: 13.02.22 18:05
Оценка:
Здравствуйте, dwebster, Вы писали:

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

D>1. Как я несколько раз писал ранее — что успел сделать за время, которое готов потратить на одно тестовое задание одной компании, то и сделал.


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

D>2. Версия Убунту написана в условии, которое я цитировал, и которое вы судя по всему прочитали. Убунту 16, минорная версия не указана, значит неважна.


Тут непонятно, если в условии 16.04/10, то почему тогда в README упоминается 20.10? Все-таки там по дефолту gcc в Ubuntu 16 и 20 сильно разных версий, в старых gcc, вроде как нормальной поддержки C++17 не было (std::optional в C++17 в стандарт только вошел, а у вас он используется).
Re[12]: Тестовое задание: написать эффективный TCP-сервер
От: dwebster Россия  
Дата: 13.02.22 18:23
Оценка: 3 (1)
Здравствуйте, so5team, Вы писали:

S>Т.е. вы стали делать задание не продумав заранее принцип обработки входящих данных? Выглядит это так, что сперва попытались сделать то, что понимаете, в расчете на то, что в оставшееся время доведете до ума.


Всё так. Сначала сделал способом, наиболее понятным для себя и наиболее удобным для покрытия юнит-тестами. Без оптимизаций.
После чего понял что потратил неадекватно много времени и отослал, с некоторой надеждой что ответят что-то вроде — да, вы сделали не все что требовалось, но ладно уж, сойдет.

S>Тут непонятно, если в условии 16.04/10, то почему тогда в README упоминается 20.10? Все-таки там по дефолту gcc в Ubuntu 16 и 20 сильно разных версий, в старых gcc, вроде как нормальной поддержки C++17 не было (std::optional в C++17 в стандарт только вошел, а у вас он используется.


20.10 у меня стояла на компе. Сделал на ней, ожидая что на 16 всё так же взлетит без проблем.
Потом поставил 16 на виртуалку, увидел что не взлетело, но.. см. выше. В ответном письме написал, что сорри, 20.10 не устроит ли? Зачем под старый компилятор переделывать.
Отредактировано 13.02.2022 18:27 dwebster . Предыдущая версия .
Re[13]: Тестовое задание: написать эффективный TCP-сервер
От: so5team https://stiffstream.com
Дата: 13.02.22 19:47
Оценка:
Здравствуйте, dwebster

Спасибо за ответы, стало понятнее.
Re[10]: Тестовое задание: написать эффективный TCP-сервер
От: Тёмчик Австралия жж
Дата: 13.02.22 20:17
Оценка: -1 :))
Здравствуйте, Shmj, Вы писали:

S>Такой теоретический вопрос. Если все запросы в одном потоке — то что делать, когда клиент медленный и ответ не передается за 1 пакет.


Автор тестового задания использовал асинхронное чтение из сокета. Там при получении каких-то данных, они попадают в некий буфер, и сигнал в мутекс. Пользовательский поток ждет мутекса в цикле. По срабатыванию мутекса, пользовательский код выгребает данные и идентификатор конекшена. Таким образом, на чтение/запись по всем соединениям используется 1 поток.
Re[9]: Тестовое задание: написать эффективный TCP-сервер
От: Pitirimov Россия  
Дата: 14.02.22 08:55
Оценка:
Здравствуйте, scf, Вы писали:
scf>Попробуй открыть мою домашнюю страницу — https://scf37.me держит тысячи запросов в секунду, и потоки на каждый запрос не создает.

Раз уж мы начали соревноваться, то мой многопоточный вэб-сервер на чистом Си работает на такой аппаратуре: . Можно возразить, что зачем я выбрал устаревший одноядерный процессор на 180 МГц и всего 32 МБ ОЗУ? Свой вэб-сервер я смогу запустить на табло автомобиля, перерисовывая внешний вид экранов "на лету" по желанию пользователя в полноэкранном режиме Интернет-обозревателя. Никакая ГУЙ-рисовалка вроде "Кьюта" и прочих такое не сможет. Моё преимущество в независимой обработке данных чистым Си и гибкости отрисовки экранов Джаваскриптом во время работы устройства по желанию пользователя.
Re[10]: Тестовое задание: написать эффективный TCP-сервер
От: scf  
Дата: 14.02.22 10:55
Оценка:
Здравствуйте, Pitirimov, Вы писали:

P>Раз уж мы начали соревноваться, то мой многопоточный вэб-сервер на чистом Си работает на такой аппаратуре: . Можно возразить, что зачем я выбрал устаревший одноядерный процессор на 180 МГц и всего 32 МБ ОЗУ? Свой вэб-сервер я смогу запустить на табло автомобиля, перерисовывая внешний вид экранов "на лету" по желанию пользователя в полноэкранном режиме Интернет-обозревателя. Никакая ГУЙ-рисовалка вроде "Кьюта" и прочих такое не сможет. Моё преимущество в независимой обработке данных чистым Си и гибкости отрисовки экранов Джаваскриптом во время работы устройства по желанию пользователя.


Сервера сравнивать бессмысленно, это другая лига по ресурсам и по функционалу. Расскажите лучше, какие браузерные движки работают в embedded?
Re[11]: Тестовое задание: написать эффективный TCP-сервер
От: Pitirimov Россия  
Дата: 14.02.22 11:16
Оценка:
Здравствуйте, scf, Вы писали:
scf>Расскажите лучше, какие браузерные движки работают в embedded?

Я пока ещё выбираю Интернет-обозреватель для сборки из доступных: . Может быть, народ подскажет какой легковесный вэб-движок и обозреватель лучше выбрать с поддержкой HTML5 и Джаваскрипта.
Re[11]: Тестовое задание: написать эффективный TCP-сервер
От: Тёмчик Австралия жж
Дата: 14.02.22 20:49
Оценка: :))
Здравствуйте, Тёмчик, Вы писали:

Минусаторам предлагаю открыть для себя https://en.m.wikipedia.org/wiki/Epoll
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.