Здравствуйте, so5team, Вы писали:
S>- при наличии в Си отличной libcurl надобность делать своего клиента под большим вопросом (кому не хватает libcurl может взять Boost.Beast); S>- уверен, что Pzz, мягко говоря, обкакался бы делавши свой нормальный HTTP-клиент для Си (ну чтобы оказался не хуже libcurl).
А что есть нормальный? libcurl не плох, но у него есть статические состояние и явная инициализация/деинициализация. Как следствие, его нельзя поместить в загружаемый плагин — если в соседнем плагине тоже libcurl окажется, быть беде.
Pzz бы не обкакался, но отдает себе отчет в масштабе этой деятельности.
У меня никогда не стояло задачи написать универсальный HTTP-клиент общего назначения, но специализированные клиенты для конкретных надобностей писать приходилось. Даже и для Go, как не удивительно.
Здравствуйте, CreatorCray, Вы писали:
Pzz>>Там самое сложное — не насвистеть в нюансах, которых там много. CC>В каких именно?
Ну, начнем с простого вопроса. Ты знаешь, как выглядит HTTP URL с IPv6 literal address? А что такое zone suffix и в какое место он в этом URL-е пишется, знаешь? А в каких случаях его надо вписывать, а когда нет — знаешь?
Здравствуйте, Pzz, Вы писали:
Pzz>>>Там самое сложное — не насвистеть в нюансах, которых там много. CC>>В каких именно?
Pzz>Ты знаешь, как выглядит HTTP URL с IPv6 literal address?
Ожидаемо, чо.
Ты лучше скажи знаешь ли ты что эти навороты ну просто нахрен не нужны в зоопарке?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Pzz, Вы писали:
P>>А вот тот же фокус повторить с апи линукса или макоси у вас уже не получится — эти товарищи обратной совместимостью не озабочены.
Pzz>Смотря где. У glibc, которая отвечает за POSIX API, с совместимостью всё хорошо. Прям даже очень хорошо. Ну а более другие библиотеки, с ними по-разному.
Здравствуйте, CreatorCray, Вы писали:
Pzz>>Ты знаешь, как выглядит HTTP URL с IPv6 literal address? CC> Ожидаемо, чо. CC>Ты лучше скажи знаешь ли ты что эти навороты ну просто нахрен не нужны в зоопарке?
Здравствуйте, AlexGin, Вы писали:
AG>Открою один маленький профессиональный секрет — если за дело берётся профессионал, сроки создания продукта не будут зависеть от того, что (какой язык) выбрано.
Несколько лет назад я уже видел в КСВ точно такое же утверждение. Я тогда же привёл опровержение.
Может, если сроки не зависят от инструмента, писать на ассемблере вообще всё?
AG>Что касается десятков лет — я относительно недавно открыл книгу Чарльза Петзольда по программированию на WIN-API (книжка 1990-х). AG>Попробовал откомпилировать и запустить (Windows-10, MSVC-2019) несколько примеров — всё работало как швейцарские часы.
Так это не про время разработки, а про обратную совместимость. Так я больше скажу: наш проект на Фортране работал вообще везде: на ЕС-1036, в реальном режиме МС ДОС, с ДОС-экстендером, в Полуоси, в разных версиях Винды.
Здравствуйте, CreatorCray, Вы писали:
P>>Urlencoded CC>Элементарно
Все фичи по отдельности простые. А вот все вместе, или хотя бы большую часть, да с нормальным апи, перформансом, секурити да без дыр из за указателей и буферов парсинге, да что бы кроссплатформенным — вот это сиплюсное сообщество так и не осилило.
Потому клиент всегда идет как часть платформы — тк здесь конское количество кода.
P>> formdata CC>Это вообще не задача самого клиента, скорее wrapper над контентом.
Это вы на консумера собираетесь переложить? Ну-ну
P>> multipart CC>Аналогично CC>В целом не вижу в чём тут могут быть сложности — написал, работает.
Вам нужен и парсер, и рендерер. А ну как сервер ответит мультипартом?
P>> etag CC>А нафига оно во встраиваемом в аппу клиенте?
Трафик экономить, перформанс, условные запросы делать.
P>> content range CC>А что с ним? Банальная сборка/отправка фрагментов
На этой банальной сборке-отправке срезалось огромное количество передовиков.
P>> authentication (basic, bearer, oidc) CC>Не задача самого клиента вообще, пришлёпка сверху
Это смотря что вы под клиентом подразумеваете. Аутентификация должна идти внятным апи, что бы консумерам не надо было раскорячиваться, если вдруг ресурс поменяет схему аутентификации.
Здравствуйте, Nuzhny, Вы писали:
N> Что мы будем делать? Ты для каждого скажешь, чем он так плох?
Они все хуже libcurl как минимум по фитчам. При этом самому libcurl тоже далеко до идеала. Ну а "самописный http-клиент" ничего, кроме улыбки, конечно не вызывает.
Здравствуйте, Pauel, Вы писали:
P>Потому клиент всегда идет как часть платформы — тк здесь конское количество кода.
Как часть платформы идёт всемогутер, со всеми проблемами что ты тут описал. Которые там появились именно потому, что писали всемогутер.
P>Это вы на консумера собираетесь переложить? Ну-ну
На функцию-препроцессор, который payload для HTTP запроса готовит.
P>>> multipart P>Вам нужен и парсер, и рендерер.
Рендерер чего? Я не браузер делаю а data transport
P> А ну как сервер ответит мультипартом?
Ну он мне и отвечает мультипартом, а как ещё большие блобы из облака доставать?
CC>>А нафига оно во встраиваемом в аппу клиенте? P>Трафик экономить, перформанс, условные запросы делать.
Какой трафик экономить? Если я уж куда лезу, мне надо то, что с той стороны отдают.
CC>>А что с ним? Банальная сборка/отправка фрагментов P>На этой банальной сборке-отправке срезалось огромное количество передовиков.
P>Это смотря что вы под клиентом подразумеваете.
Аппликуху, заточенную на работу с конкретными источниками данных.
P>если вдруг ресурс поменяет схему аутентификации.
Это настолько в обсуждаемом контексте маловероятно что даже не интересно обсуждать.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, SkyDance, Вы писали:
SD>Теперь уже не нужно. Но пока не было виндо-машины, приходилось на маке.
А был нужен на маке зачем?
SD>Но у кого-то там руки почесались приделать розетту туда.
Потому что розетта сильно быстрее.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>>>Для чего именно? Pzz>>Для комммуникации с сетевыми устройствами с использованием протокола на основе HTTP.
CC>Ты часом не математик? (С)
Интересно, задавая этот вопрос, какого ответа ждал ты?
Здравствуйте, Pzz, Вы писали:
CC>>Для чего именно? CC>>Ты часом не математик? (С) Pzz>Интересно, задавая этот вопрос, какого ответа ждал ты?
Который из двух вопросов?
На первый — ситуации где такое в реальной жизни понадобилось.
Второй вопрос уже был риторический.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Что выдали, тем и пользовался. Допускаю, что от меня не ожидали вгрызания в самые потроха, и предполагали, что я обойдусь раздачей указаний, и кто-то другой будет ковырять реальный код. Но, оказывается, большинство "писателей на C#" не только понимают, как работает .NET runtime, но им даже и в голову не приходит, что это ж open source, можно все самому посмотреть, и объяснить, какого рожна паузы на GC подпрыгивают с 20 до 200 мс., таймаутя запросы.
Мне в принципе-то Мак нравится, особенно тот что 14 про в полной комплектации, но беда в том, что серверный софт весь x64. А изучать дампы без WinDBG и вовсе оказалось тем еще мазохизмом.
CC>Потому что розетта сильно быстрее.
Да в миллион раз! Вместо того, чтоб минуту анализировать дамп, через 0.1 сек падает со словами segmentation fault. Кстати, а есть ли какое-нибудь заклинание, чтоб docker не дурил, а запускал QEMU с полной эмуляцией? Мне пофигу, что будет не 5, а 50 секунд анализировать.