Size: a a a

2020 March 23

IZ

Ilia Zviagin in pro.cxx
Ilia Zviagin
Если ты не можешь в адресную арифметику, так что ж...
Иди книги читай, и в @supapro
источник

CD

Constantine Drozdov in pro.cxx
Антон
Немного не понял Ваш пример, не могли бы объяснить подробнее?
Если вы проектируете, что класс запрашивает список пользователей у виртуального хранилища, после чего кодирует его в JSON, вы заложили ошибку в проектировании. Правильный ответ - запросить у виртуального хранилища список пользователей сразу кодированным в JSON
источник

in pro.cxx
Проблема  с nanomsg следующая:
Я в качестве пробы создаю сокет типа BUS, и делаю
for(int i=0;i<10;i++)
nn_send(...,"test").
Принимающая сторона получает одно сообщение из десяти.
Если добавить после отправки sleep(1ms), то все ок.
Учитывая, что zeromq/nanomsg заявляют высокую скорость отправки (200к+ сообщений в секунду), вопрос - как корректно отправлять большие партии сообщений?
источник

AT

Alexey Tkachenko in pro.cxx
Антон
Подскажите пожалуйста, как лучше сделать архитектурно?
Имеется базовый класс с функцией execute(). И нужно в производных классах переопределить эту функцию, но у каждого производного класса может быть разный возвращаемый тип, вплоть до нескольких разных типов.
template<class T...>
struct Returns{
 virtual void Execute(std::function<void(T...)>) = 0;
}

class Something : Returns<int>
{
}


но вызывающая сторона должна знать что у тебя там ожидается
источник

AT

Alexey Tkachenko in pro.cxx
ну или visitor в помощь
источник

IZ

Ilia Zviagin in pro.cxx
Проблема  с nanomsg следующая:
Я в качестве пробы создаю сокет типа BUS, и делаю
for(int i=0;i<10;i++)
nn_send(...,"test").
Принимающая сторона получает одно сообщение из десяти.
Если добавить после отправки sleep(1ms), то все ок.
Учитывая, что zeromq/nanomsg заявляют высокую скорость отправки (200к+ сообщений в секунду), вопрос - как корректно отправлять большие партии сообщений?
Там наверняка нет никаких секретов, ты просто отправляешь сообщение, оно отправляется.
Всё.

Понятий "большие партии сообщений" в месседжингах нет вообще. Ты можешь делать транзакции, и в рамках их отправлять сообщения , тогда они отправятся все, либо ни одного. Но не знаю, поддерживает ли ZeroMQ их.

А "больших партий" нет в природе, каждое сообщение посылается отдельно и индивидуально и там нет никаких особых сектеров, ты просто должен корректно работать по его API, и всё.  Так что ищи ошибки в твоей программе.
источник

in pro.cxx
Ок, тоже так думаю. спасибо
источник

CD

Constantine Drozdov in pro.cxx
Alexey Tkachenko
template<class T...>
struct Returns{
 virtual void Execute(std::function<void(T...)>) = 0;
}

class Something : Returns<int>
{
}


но вызывающая сторона должна знать что у тебя там ожидается
Это никак не поможет
источник

ПК

Побитый Кирпич in pro.cxx
Антон
ВОзможно я плохо объяснил. Они заранее известны при компайле, в рантайме ничего не переопределяется
Если всё известно на этапе компиляции, то можно использовать статический полиморфизм на шаблонах
источник

IZ

Ilia Zviagin in pro.cxx
@blackleitus я тебе отвечал между прочим, что никак.
Всё руками проверять надо.
источник

А

Антон in pro.cxx
Подскажите пожалуйста, async функции в boost::asio работают в несколько потоков?
источник

ПК

Побитый Кирпич in pro.cxx
Constantine Drozdov
Если вы проектируете, что класс запрашивает список пользователей у виртуального хранилища, после чего кодирует его в JSON, вы заложили ошибку в проектировании. Правильный ответ - запросить у виртуального хранилища список пользователей сразу кодированным в JSON
Почему  это ошибка?
источник

V

Vyacheslav in pro.cxx
ᅠ ᅠ
Мне нужно целочисленное переполнение под Windows OS
(size_t)-1 + 1
источник

АО

Алексей Остапенко in pro.cxx
Constantine Drozdov
Если вы проектируете, что класс запрашивает список пользователей у виртуального хранилища, после чего кодирует его в JSON, вы заложили ошибку в проектировании. Правильный ответ - запросить у виртуального хранилища список пользователей сразу кодированным в JSON
Крайне сомнительное утверждение (и явно нарушающее SRP). Завтра ему захочется в XML или в протобуф. И что тогда делать?
источник

CD

Constantine Drozdov in pro.cxx
Алексей Остапенко
Крайне сомнительное утверждение (и явно нарушающее SRP). Завтра ему захочется в XML или в протобуф. И что тогда делать?
Завтра у него за интерфейсом будут данные уже в JSON и он будет их пересериализовывать
источник

CD

Constantine Drozdov in pro.cxx
Расширить формат выходного кодирования в 10 раз проще, чем упрощать избыточные требования
источник

АО

Алексей Остапенко in pro.cxx
Constantine Drozdov
Завтра у него за интерфейсом будут данные уже в JSON и он будет их пересериализовывать
Зачем? Получение данных и их сериализация - это разные логические действия. И совершенно логично их разделить
источник

CD

Constantine Drozdov in pro.cxx
Алексей Остапенко
Зачем? Получение данных и их сериализация - это разные логические действия. И совершенно логично их разделить
Если вы написали encode_json(interface->users()) вы поставили избыточное требование за interface вида "отдать что-то итерируемое про users"
источник

CD

Constantine Drozdov in pro.cxx
Единственное, как вы используете итерируемость, это кодирование в json
источник

АО

Алексей Остапенко in pro.cxx
Constantine Drozdov
Если вы написали encode_json(interface->users()) вы поставили избыточное требование за interface вида "отдать что-то итерируемое про users"
Я могу написать interface->users().serializeToJson(), например. И не накладывать никаких требований на итерируемость результата users()
источник