Alexander "SonnySlave"
Как?
создаёшь тему на форуме и всё
Berkus
Как?
как как, каком кверху
vladislav
Как?
А он упрямый. Далеко пойдёт, например в @supapro
Berkus
пусть в @fludpac идёт
Санжар
Как научиться в С++?
С.Рао - Программирование с++ за 21 день
Санжар
😆
Санжар
Только там нолик забыли в днях
Vsevolod
где-то же был комикс с машиной времени
Anonymous
Да у меня есть эта книга
Санжар
Да у меня есть эта книга
Чего тебе еше надо?
Berkus
Только там нолик забыли в днях
021 день это в восьмеричной уже будет
Vsevolod
http://abstrusegoose.com/strips/ars_longa_vita_brevis.png
Anonymous
Не могу представить сколько там 0
Alexei
Не могу представить сколько там 0
Так может у Абрамяна спросить?
Anonymous
Спросите за меня пж
vladislav
Наконец-то мне пригодилось знание этого слова
Daniil
Ку, кто-то пишет в Qt ? Есть идея , как реализовать с помощью его библиотеки функцию Пинга. Например есть ip или адрес сайта , нужно пропинговать это и получить инфу о том , успешно или нет ?
Vsevolod
а ничего, что для этого нужен suid в linux/bsd?
Vsevolod
хотя в свежих ядрах появился IPPROTO_ICMP, но он, разумеется, ни фига не портабельный
Daniil
Я только учусь) Пишу программу для винды
Daniil
Хорошо, спасибо
Vsevolod
подозреваю, что в винде raw socket тоже не так просто создать
Berkus
ну это вопрос желания
Vsevolod
проще сделать через udp и IP_RECVERR, но это все совершенно непросто и не уверен, что работает в винде...
Berkus
через UDP это будет уже не пинг
Berkus
ну то есть кастомный протокол конечно можно сделать, но надо тогда чтобы его и клиенты поддерживали
Vsevolod
ну почему, traceroute так и работает через udp по умолчанию
Vsevolod
и никакого suid поэтому не требует (или CAP_NET_RAW)
Berkus
> You can use any sort of packet to implement it - ICMP, TCP SYN, etc. All it takes is the IP packet expiring and you are golden. ну да, можно
Vsevolod
вопрос только в том, как поймать ошибку
Vsevolod
потому что она-то идет через icmp unreachable
Vsevolod
в posix есть способ, хотя и не очень-то красивый
Vsevolod
плюс udp режется кучей миддлбоксов
Vsevolod
вариант с tcp удобнее, но его не реализовать через сокеты без возможности посылки "сырых" пакетов
Berkus
TCP SYN packets will cause either a RST packet or a SYN ACK packet in response when they reach their destination. If you receive a SYN ACK packet, it's polite to follow up with a RST packet so as not to leave a half-open connection on the server. хмм
Berkus
надо крафтить TCP SYN
Vsevolod
ну, или отличать blackhole от rst по таймауту vs ECONNREFUSED
Vsevolod
вот-вот
Vsevolod
то есть, в случае успеха стек все равно фиганет полный хендшейк
Vsevolod
а с handcrafted tcp это опять же требует привиллегий
Vsevolod
ну и потом мы возвращаемся к вопросу "что есть хост", бгг
Vsevolod
с плясками с nameserver, обработкой множества ip для хоста, работой с ipv4/v6 и прочими приятностями
Ioann_
подозреваю, что в винде raw socket тоже не так просто создать
Изич. Тока там были проблемы с асинхронным роу сокетом. Если мне память не изменяет. Еще Касперский про это писал.
Anatoly
к сожалению да. По стандарту constexpr функция должна возвращать literal type. С С++14 void является литеральным типом, но VS2015 это не поддерживает
мне удалось "убалтать" MSVC2015, добавив просто return: inline constexpr void validate(bool condition, const char *message, const char *file, int line) { return (GSL_UNLIKELY(!(condition))) ? fail(message, file, line) : noop(); }
Igor
товарищи, а как на линуксах разруливаются зависимости между статическими либами? есть X1.a и X2.a; их функционалом пользуется Y.a, которая потом будет влинкована в исполняемый файл Z я правильно помню, что влинковывать одни статические либы в другие - моветон? нужно при сборке Z передавать линкеру -lY -lX1 -LX2? речь сугубо про мейкфайлы, просьба цмак, ниндзю и прочие радости 2к!8 не предлагать
Konstantin
лучше так $(pkg-config -libs X1) $(pkg-config -libs X2)
Berkus
Либо через —start-group —end-group
Vsevolod
так нет такой вещи, как зависимости между статическими либами
Vsevolod
статическая либа - это просто архив .o файлов
Vsevolod
соответственно, и работать с ними ровно также - компоновать линкером
Vsevolod
и да, порядок важен
Viacheslav
Причём в некоторых случаях одну и ту же либу ещё и несколько раз указать придётся. Весело, в общем.
Vsevolod
дада
Vsevolod
ну или с -Wl,-whole-archive
Viacheslav
лучше так $(pkg-config -libs X1) $(pkg-config -libs X2)
Вот кстати да. Лучше разобраться, как оно работает, и генерировать package config файлы для своих библиотек. Жизнь проще будет.
Vsevolod
только —libs - это про shared libs
Viacheslav
По крайней мере только top level dependencies надо будет указать потом, а не всю цепочку 😂
Vsevolod
нужно —libs —-static
Konstantin
да точняк
Igor
Вот кстати да. Лучше разобраться, как оно работает, и генерировать package config файлы для своих библиотек. Жизнь проще будет.
мне кажется, чем прикручивать в наш зоопарк велосипедов ещё одну тулзу, проще будет заменить его целиком на цмак или мезон :( но гляну, спс
Viacheslav
Так CMake тоже поддерживает pkgconfig.
Viacheslav
И это гораздо удобнее, чем писать find модули, как мне кажется.
Konstantin
как и мезон
Konstantin
find модули менее удобны, там кто во что горазд, в отличии от pc
Igor
Так CMake тоже поддерживает pkgconfig.
я к тому что легче будет раздербанить питоновские скрипты для генерации мейкфайлов в нормальные CMakeLists + conan/hunter какой-нибудь
Konstantin
да, это еще лучше
Igor
если кто-нибудь из мэтров расскажет кулстори как он в бытность джуном проворачивал такой трюк в проекте 15летней старости, буду рад послушать 😭
Alexander "SonnySlave"
если кто-нибудь из мэтров расскажет кулстори как он в бытность джуном проворачивал такой трюк в проекте 15летней старости, буду рад послушать 😭
я прикручивал как-то конан и втихую переводил проект на Cmake вместо кастомных скриптов. Поциент жив
Matwey
Ну pkgconfig можно использовать и без CMake
Alexander "SonnySlave"
Правда надо принять по внимание, что я там уже не работаю 😊