LINUX.ORG.RU

чистый Си

 


2

3

Всем добра. Учусь программированию под линукс, знаю что нет ничего лучше чем практика. Пересел из микроконтроллеров, поэтому практически все нужно осваивать заново. Много гуглил но так и не смог найти примеры работы как загрузить веб контент, json или код html, и cookie на чистом си под линукс. а также как отправлять cookie. Киньте пример или ссылку на него, только рабочий пример пожалуйста, так как для меня это новые ворота.

Ответ на: комментарий от RazrFalcon

А почему именно curl?

Ну мы тут curl обсуждаем, потому что это чуть ли не единственная живая сишная либа для HTTP. И у Iron_Bug бомбит от того, что баги в сишной либе, а считать бажным языком нужно Go.

Это про любую сишную либу можно сказать. Взять тот же libxml2. Там changelog просто сказка. double free на double free.

Парни из OpenBSD творят чудеса в своих походах по минному полю. В релизных версиях не то чтобы много такого рода проблем. Есть, конечно, но не так много.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

а считать бажным языком нужно Go.

Сишник - это диагноз.

Парни из OpenBSD творят чудеса в своих походах по минному полю.

Боюсь даже представить, насколько сильно это бьёт по скорости разработки.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Сишник - это диагноз.

Ну, я до сих пор пишу всякие сложные штуки, требующие какой-никакой скорости, на C. Я все хочу слезть на Rust, но их долгая война с асинхронкой меня немного пугает. Хотя вот tokio наконец-то избавился от шареного между тредами event loop'а. Я все надеюсь, что сейчас придет async/await, и жизнь станет мягкой и шелковистой.

Боюсь даже представить, насколько сильно это бьёт по скорости разработки.

Да не то чтобы сильно, на самом деле. Сильнее бьет то, что их мало.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 3)
Ответ на: комментарий от kirk_johnson

потому что в C если я найду ошибку в библиотеке - я её исправлю. а если я использую библиотеку и в ней ошибка, то я её обязательно найду, так как тестирую свой софт. а в го хомячки просто страдают и ничего сделать не могут с багами. я это сама видела. и тормоза го тоже видела. так что не надо тут заливать. го - бажное тормозное УГ. оно недавно появилось и исчезнет. таких язычков навалом было. и все они канули в Лету. а на C пишут уже более 30 лет и всё работает.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

потому что в C если я найду ошибку в библиотеке - я её исправлю. а если я использую библиотеку и в ней ошибка, то я её обязательно найду, так как тестирую свой софт.

А тестировать софт на Go тебе мешает?..

а в го хомячки просто страдают и ничего сделать не могут с багами.

Они их репортят, а разработчики фиксят. Или юзеры сами фиксят, и постят PR на Github. Все как всегда.

я это сама видела.

Я видел, как страдали и ничего не могли сделать с багами программисты на C. Все, закапываем? Я ожидаю пассажа в духе «ПРОГРАММИСТЫ ПЛОХИЕ БЫЛИ». Да, были. Так и программисты на Go у тебя тоже, скорее всего, были такие же. Дело в программистах, а не в языке. Править баги можно в софте на любом языке, инфа сотка.

и тормоза го тоже видела. так что не надо тут заливать. го - бажное тормозное УГ.

Важна область применения. Если делать сетевую хреновину, которая должна выжрать 400G через InfiniBand, обработать данные и послать их через NTB на другие серваки не поперхнувшись — да, использовать Go несколько наивно. Если тебе нужно REST API сделать — почему нет?

оно недавно появилось и исчезнет.

Языку десять лет. На нем написано дохрена полезного софта.

таких язычков навалом было. и все они канули в Лету. а на C пишут уже более 30 лет и всё работает.

Много на чем пишут. На Java пишут 23 года. Дальше-то что? Вот честно — лучше Go, чем Java.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Ну так в Си асинхронности нет в принципе. Так что хз.

В нем есть чудесный libev, в котором есть все, что мне когда-либо нужно было: таймеры, сигналы, поллинг fd и ивент луп без блокировок. С минимальными усилиями (ладно, у меня просто был чудеснейший QA, который самоотверженно все тестировал) я писал штуковины, которые мало ели, быстро работали, нравились админам в обслуживании и не требовали много сил для отладки. Да, автор наркоман и держит исходники с CVS. Да, callback hell. Но багов я с ним не ловил.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

на Си есть всё, а чего нету, есть в ассемблере

Harald ★★★★★
()
Ответ на: комментарий от Harald

а чего не libevent или libuv

Потому что libev простой, тупой и деревянный. libevent имеет в запасе HTTP, DNS и прочие штуки, которые мне были не нужны. libuv кроссплатформенный, что тоже было не нужно.

kirk_johnson ★☆
()
Ответ на: комментарий от RazrFalcon

Страшный же. И дженериков нет. actix-web + diesel всяко лучше и надёжнее.

Надежнее — хз. Я пока не убежден, потому что сам не видел. Код на Go видел. Да, без generic'ов плохо, но ребятки на работе почти все углы обошли через интерфейсы.

kirk_johnson ★☆
()
Ответ на: комментарий от RazrFalcon

Ну и да — ничего страшнее реализации TAILQ (sys/queue.h) я в жизни не видел. Ну, не из быдлокода, а из нормально работающих реализаций. Так что если сравнивать вот этот вот и Go — выбор довольно очевидный.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от Harald

ну, более и есть более. даже я на нём больше 30 лет пишу, если считать от момента, когда я начала его изучать, ещё в школе :) тогда он уже более-менее устаканился и был практически такой же, как сейчас. тогда был стандарт C89. то есть, он уже стандартизировался.

Iron_Bug ★★★★★
()
Ответ на: комментарий от kirk_johnson

Хотя нет, видел — uthash.

В котором есть вот такие вот прекрасные комменты в коммитах:

This code is from before my time and I don't exactly understand it, but the intended usage is apparently...

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 2)
Ответ на: комментарий от RazrFalcon

Это который hash table на макросах?

Ага. Он хороший, быстрый, но код, как и в любой header-only либе, выглядит, как полусгнивший дрочащий бомж.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Хммм...

Это вы из-под оффтопика пишете? Да и то там, насколько я помню, процентов 80-90 системообразующих вещей, это С. В онтопике, наверное, и того больше. Ядро, да и базовый утиль.

Вы даже на сервере... Впрочем, молчу-молчу-молчу... =)))

Вы бы аккуратнее как-то с диагнозами-то? =)))

Moisha_Liberman ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.