powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос по bind
21 сообщений из 46, страница 2 из 2
Вопрос по bind
    #38550533
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyAlex the coderЭтот тред уронил больно ударил по моей самооценке. И что, все эти ужасы реально используются в ваших проектах и на собеседованиях спрашиваются?
Коли так, то я совсем отстал от жызни оО т.к. вообще не юзаю не то что bind/STL, но даже шаблоны :)
Я пока фичи С++11 не использую в продакшен проектах.
Буст - использую по полной программе.
Кстати, а если не секрет, что у вас за проект, системный/прикладной, внутренний или на продажу и для какой сферы?
Я бы с удовольствием использовал C++11/14, но мы разрабатываем CPU+GPU системы и наши сорцы должны уметь собираться на RHEL5.5 + GCC4.1.2 , а gcc4.1.2 - это аж 2007 год :)
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550550
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася УткинКстати, а если не секрет, что у вас за проект, системный/прикладной, внутренний или на продажу и для какой сферы?
Текущий проект - HTTP кэш-прокси, на продажу для ISP (это не мой личный, я там просто один из разрабов).
Вася Уткинсорцы должны уметь собираться на RHEL5.5 + GCC4.1.2 , а gcc4.1.2 - это аж 2007 год :)
Та же фигня :)
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550597
Alex the coder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky, а из буста что конкретно, если не секрет юзаете?
Там же много всего. Я в своё время использовал только option, variant, конечно bind и всякие хэлперы для STL.
А насчёт "чужой код всегда хуже своего" - заранее-то тебе код никто не покажет ;( Я вот уже достаточно наработался с древним и недокументированном кодом для MFC. Так что конечно приятно творить в рамках нового проекта, когда руки не скованы.
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550695
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex the coderа из буста что конкретно, если не секрет юзаете?
thread, asio, shared_ptr, function, regex и тому подобное.
Все не вспомню.
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550702
Alex the coder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky, да этого достаточно, спасибо.
Кстати, не пробовали использовать библиотеку Poco?
Мне ее тимлид хвалил как-то.
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550737
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex the coderPoco
Я не пробовал, т.к. меня полностью устраивает Буст, а Буст фактически является стандартом дефакто (и многие его либы попадают в стандарт С++).
Ну и размер пользовательской базы Буста намного больше, а значит меньше шансов словить какой-то баг в непротестированном участке кода Буста.
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550769
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyAlex the coderPoco
Я не пробовал, т.к. меня полностью устраивает Буст, а Буст фактически является стандартом дефакто (и многие его либы попадают в стандарт С++).

Анатолий, вообще-то буст -- это набор библиотек, библиотек там много, и библиотеки там все разные совсем. Есть очень хорошие, есть совсем никудышные.
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550781
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

А я что, по другому сказал?
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550807
Фотография Духовные скрепы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex the coderКстати, не пробовали использовать библиотеку Poco?

Довольно ограниченна библиотека, сокеты есть, а именованных/безымянных каналов нету, по крайней мере раньше не было.
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550810
Фотография Духовные скрепы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЕсть очень хорошие, есть совсем никудышные.

Можно список никудышных библиотек?
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550943
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Духовные скрепыAlex the coderКстати, не пробовали использовать библиотеку Poco?

Довольно ограниченна библиотека, сокеты есть, а именованных/безымянных каналов нету, по крайней мере раньше не было.

А знаешь, почему их нет ?
...
Рейтинг: 0 / 0
Вопрос по bind
    #38550946
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Духовные скрепыMasterZivЕсть очень хорошие, есть совсем никудышные.

Можно список никудышных библиотек?

Ну я могу с ходу только boost::graph назвать.
...
Рейтинг: 0 / 0
Вопрос по bind
    #38551001
Фотография Духовные скрепы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivА знаешь, почему их нет ?

Ну и почему?
Мне для моей задачи пришлось либу писать с нуля, под никсами unix socket'ы использовать, под виндой пайпы.
...
Рейтинг: 0 / 0
Вопрос по bind
    #38551061
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Духовные скрепыMasterZivА знаешь, почему их нет ?

Ну и почему?
Мне для моей задачи пришлось либу писать с нуля, под никсами unix socket'ы использовать, под виндой пайпы.

Потому что
они непереносимы. пайпы работают только в винде.

они никому не нужны даже не по причине непереносимости.
...
Рейтинг: 0 / 0
Вопрос по bind
    #38551062
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Духовные скрепыНу и почему?


Ты кстати вооще знаешь, зачем они были придуманы и для чего?
...
Рейтинг: 0 / 0
Вопрос по bind
    #38551064
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivДуховные скрепыНу и почему?


Ты кстати вооще знаешь, зачем они (NamedPipes) были придуманы и для чего?
...
Рейтинг: 0 / 0
Вопрос по bind
    #38551073
Фотография Духовные скрепы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv они непереносимы. пайпы работают только в винде.

они никому не нужны даже не по причине непереносимости.


А чего так категорично, как истина в последней инстанции?
Как сказали делать так и делал, никакие мои аргументы не принимались. Соответственно мне пайпы оказались нужны.

MasterZivТы кстати вооще знаешь, зачем они (NamedPipes) были придуманы и для чего?

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

Named pipes can be used to provide communication between processes on the same computer or between processes on different computers across a network. If the server service is running, all named pipes are accessible remotely. If you intend to use a named pipe locally only, deny access to NT AUTHORITY\NETWORK or switch to local RPC.

отсюда
...
Рейтинг: 0 / 0
Вопрос по bind
    #38551239
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Духовные скрепыА чего так категорично, как истина в последней инстанции?
А мы тут все такие :)
...
Рейтинг: 0 / 0
Вопрос по bind
    #38551264
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyAnatoly MoskovskyВот когда лямбды будут поддерживать move-семантику для замыкания (С++14) вот тогда будет все :)
Упс. И тогда еще не все будет :)

Вот такое не знаю вообще как лямбдами сделать.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
void callback1(const boost::system::error_code& ec, size_t bytes_transferred)
{
}
void callback2(size_t bytes_transferred, const boost::system::error_code& ec)
{
}
void callback3(const boost::system::error_code& ec)
{
}

int main()
{

    // клиент некого АПИ
    auto f1 = bind(callback1, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred);
    auto f2 = bind(callback2, boost::asio::placeholders::bytes_transferred, boost::asio::placeholders::error);
    auto f3 = bind(callback3, boost::asio::placeholders::error);

    // реализация этого АПИ
    boost::system::error_code ec;
    size_t bytes_transferred = 0;
    f1(ec, bytes_transferred);
    f2(ec, bytes_transferred);
    f3(ec, bytes_transferred);

    return 0;
}


Фишка в том, что клиент некой библиотеки передает туда колбэки с произвольным набором и порядком аргументов (из набора поддерживаемых библиотекой).
При этом клиент не обязан знать все поддерживаемые параметры и в каком порядке их указывать. А библиотека в свою очередь не обязана знать порядок аргументов указанный клиентом чтобы вызвать колбэк.
В итоге библиотека может развиваться (добавлять новые параметры) без необходимости переписывать существующих клиентов. А клиент может получать только те параметры, которые ему интересны.
А я чего-то не совсем понял, как он тут угадывает в f1() и f2() куда подставлять ec, а куда bytes_transferred?
В случае с шаблонами ещё как-то можно было бы придумать - много перегрузок функции со всеми комбинациями перестановки агрументов, при условии что все аргументы имеют разный тип. Но тут то в run-time, как?
...
Рейтинг: 0 / 0
Вопрос по bind
    #38551271
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася УткинА я чего-то не совсем понял, как он тут угадывает в f1() и f2() куда подставлять ec, а куда bytes_transferred?
В случае с шаблонами ещё как-то можно было бы придумать - много перегрузок функции со всеми комбинациями перестановки агрументов, при условии что все аргументы имеют разный тип. Но тут то в run-time, как?
Ну скажете тоже - угадывает. Все строго по-научному

boost::asio::placeholders::error - это аналог _1
boost::asio::placeholders::bytes_transferred - _2

Если вы в моем коде везде произведете такую замену, то станет понятно как это работает.
...
Рейтинг: 0 / 0
Вопрос по bind
    #38551296
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyВася УткинА я чего-то не совсем понял, как он тут угадывает в f1() и f2() куда подставлять ec, а куда bytes_transferred?
В случае с шаблонами ещё как-то можно было бы придумать - много перегрузок функции со всеми комбинациями перестановки агрументов, при условии что все аргументы имеют разный тип. Но тут то в run-time, как?
Ну скажете тоже - угадывает. Все строго по-научному

boost::asio::placeholders::error - это аналог _1
boost::asio::placeholders::bytes_transferred - _2

Если вы в моем коде везде произведете такую замену, то станет понятно как это работает.
А, всё, понял, и нюанс то в том, что вызов то всегда один и тот же: f3(ec, bytes_transferred); - и тут уже порядок менять нельзя :)
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос по bind
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]