C Programming Language #65 /clang/

 Аноним OP 10/11/20 Втр 17:01:08 #1 №1852710 
C Propaganda.jpg
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/ https://wandbox.org/ или https://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержит [​i​] или ∗.

Что читать:

- Brian Kernighan, Dennis Ritchie "The C Programming Language": http://www.cypress.com/file/56651/download
- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
- Zed A. Shaw "Learn C the Hard Way" (2015): годное пособие для гуманитариев для гуманитариев!
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
- Стандарт ISO/IEC 9899:2011 (C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- Черновик стандарта ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2479.pdf (февраль, с диффами)
- Последний черновик ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2583.pdf (октябрь)

Чем компилировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)

Stephen G. [email protected] "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard и http://web.archive.org/web/20190213011655/homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

https://github.com/kozross/awesome-c

Онлайн-утилиты:

- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

Прошлые треды:

- №62: https://arhivach.net/thread/616070/
- №63: https://arhivach.net/thread/623165/
- №64: https://arhivach.net/thread/623166/ >>1830513 (OP)
Loading...
Аноним 10/11/20 Втр 17:14:23 #2 №1852726 
>>1852710 (OP)
Почему С, а не С++?
Аноним 10/11/20 Втр 17:17:11 #3 №1852730 
>>1852726
По С++ тред рядом в /pr/, воспользуйся поиском. Языки разные.
Аноним 10/11/20 Втр 17:20:06 #4 №1852735 
>>1852726
Проще, компактнее, меньше рантайм, меньше оверхеда (да-да, даже vtable это индирект колл) больше охват девайсов.
А вот почему C, а не Zig
Аноним 10/11/20 Втр 17:21:19 #5 №1852737 
>>1852735
Тогда зачем С++, а не С?
Аноним 10/11/20 Втр 17:35:14 #6 №1852749 
>>1852735
Потому что правильно - Sieg. Чел слова писать не умеет, а ты хочешь его языком пользоваться
Аноним 10/11/20 Втр 17:57:36 #7 №1852776 
>>1852737
Сложнее, громоздко, больше рантайм и оверхед.
Аноним 10/11/20 Втр 18:11:19 #8 №1852790 
>>1852726
Си - кайфовый минималистичный читабельный язык для души.
Аноним 10/11/20 Втр 18:15:02 #9 №1852793 
>>1852790
Но как без классов и объектов? Массивы передавать? А без оверрайдов и интерфейсов? Без дженериков?
Аноним 10/11/20 Втр 18:23:40 #10 №1852798 
>>1852793
>Но как
Без задней мысли.
Аноним 10/11/20 Втр 18:55:49 #11 №1852824 
>>1852793
Но объекты суть структуры с указателями на функции. И так далее.
Аноним 10/11/20 Втр 18:59:23 #12 №1852828 
>>1852824
И где тут минимализм?
Аноним 10/11/20 Втр 19:07:05 #13 №1852835 
>>1852735
>меньше оверхеда (да-да, даже vtable это индирект колл)
Платишь за то, что используешь.
Переизобретённое ООП в рамках С со структурой c указателями на функции — это тоже индирект колл.

Факты, которые ты привёл, верны. Но твой аргумент — invalid.
Аноним 10/11/20 Втр 19:28:40 #14 №1852869 
>>1852726
По тому что С хватает для своих задач и не надо разбирать весь сахар чтоб написать программу.
>>1852737
За тем что С не хватает когда твой проект разросся и стал большим на столько, что ты сам выдумываешь плюсовый сахар вместо того чтоб взять готовый.
Аноним 10/11/20 Втр 19:55:42 #15 №1852903 
>>1852828
А почему его тут нет?
Аноним 10/11/20 Втр 20:03:30 #16 №1852919 
>>1852793
Ты шо ебу дал? Мы тут на мк пердолимся

СВОБОДУ ЖЕЛЕЗУ! ХУЙ ЖЭЭСУ! ЗИП ФАЙЛ!
Аноним 10/11/20 Втр 20:04:09 #17 №1852920 
>>1852869
> ты сам выдумываешь плюсовый сахар вместо того чтоб взять готовый
С плюсовым сахаром принято тащить кучу говна. Например, шаблоны. Например, исключения.
Аноним 10/11/20 Втр 20:13:25 #18 №1852925 
>>1852835
Насколько я понимаю, в с++ ты все же платишь больше, чем используешь, а иногда используешь лишнего.
Аноним 10/11/20 Втр 20:54:56 #19 №1852974 
>>1852925
Я бы попросил привести пример, но тред не про это, так что не надо.
Аноним 10/11/20 Втр 23:34:52 #20 №1853131 
>>1852920
>Например, шаблоны

Которые позволяют в компайл тайме в миллиард раз больше того что может сраный препроцессор ссей и всё это с проверкой типов вместо ссяшной стрельбы из пулемета по ногам копипастой и мисюзом.
Аноним 10/11/20 Втр 23:43:14 #21 №1853140 
То есть С для всего, что имеет тактовую частоты не выше пары сотен мегагерц?
Аноним 10/11/20 Втр 23:59:07 #22 №1853161 
>>1853140
Не знал

пук
Аноним 11/11/20 Срд 00:14:02 #23 №1853169 
>>1853140
Если объяснять на пальцах, то ты в браузере читаешь текст выводимый через C-либу freetype и смотришь картинки через C-либы libpng, jpeg и так далее.
Аноним 11/11/20 Срд 00:23:04 #24 №1853173 
>>1853131
Кстати, да, не понял его предьявы к темплейтам.
С эксепшенами ещё могу понять, сам отключал в некоторых проектах.
Аноним 11/11/20 Срд 00:33:14 #25 №1853179 
>>1853140
Шизанутый, сколько всего разного может "пользоваться" сишными библиотеками? Сколько всего может использовать сишные библиотеки? А сипипишные, а? То то же.

А ты, наверное, обычный js-тролль, который тааааак любит БААААЛШЫЫЫЕ СЫСТЕЕЕМЫ на js, да ведь, толерантный хипстерочек?
Аноним 11/11/20 Срд 00:49:33 #26 №1853185 
>>1853179
Ну тут ты немного не прав, многие С++ либы иногда могут иметь Сишный апи через extern "C" и описание функций, которые дёргают методы из классов.
Впрочем, у всех языков ffi обычно ассоциируется с вызовом именно сишных функций.
Аноним 11/11/20 Срд 00:53:40 #27 №1853187 
>>1853169
Так, наверно, исторически сложилось, или из-за совместимости, или из-за линух-пердоль. Почему, кстати, они пишут на С?

>>1853179
Нет, но я вправду не имел дел с С/C++, поэтому пытаюсь понять. Суть не в том, чтобы система была большой, а чтобы программисту было удобнее и эффективнее работать. А железо уже давно слишком быстрое, чтобы разница в производительности была заметной.
Аноним 11/11/20 Срд 01:00:53 #28 №1853191 
>>1853187
Чтобы избежать лишних прослоек.
Системщики - вообще страшные люди, крайне любят низкоуровневое программирование, байтоёбство и прочие вещи, которые всякие фронтэндеры считают ненужными и излишними.
А Си тебе как раз дает относительно низкий уровень абстракции и, вместе с тем, крайне широкие возможности по твику и решению тех или иных прикладных задач.
Я сам крайне охуел, когда у меня получилось на сях реализовать прогу для восстановления фотографий из RawData и парочку простейших фильтров для джипега. При этом, не было мест, в которых бы у меня был глобальный затык из-за непонимания парадигмы языка. Да-да, я тоже прошёл CS50.

Пойми один простой вещь.
Когда ты пишешь на Питоне - помни, что под каждой твоей строчкой крутится полсотни строчек сишного кода.
Да и не только на Питоне, лол.

А ведь чем ниже уровень - тем меньше вероятность глобально накосячить.
Аноним 11/11/20 Срд 01:10:06 #29 №1853195 
>>1853191
>А ведь чем ниже уровень - тем меньше вероятность глобально накосячить
Наоборот: чем выше уровень, тем эффективнее и лучше отлажен код уровнем ниже. А сколько там строк для меня значения не имеет.
Аноним 11/11/20 Срд 01:12:41 #30 №1853196 
>>1853131
Скажи, а оно мне надо?
Вот если у меня задача получать данные по спиайю каждые 100 микросекунд, брать бпф и выдавать спектр в уарт НАХУЯ МНЕ НУЖЕН ЭТОТ САХАР? чтоб больше запутаться?
>>1853140
С для того где его хватает, частоты не важны.
>>1853173
>не понял его предьявы к темплейтам.
Они не нужны, если у тебя маленький деревянный код, они только будут мешать чтению.
Аноним 11/11/20 Срд 02:07:45 #31 №1853213 
>>1853196
Там, где они не нужны — они не нужны. Кто ж поспорит. Но в других местах нужны.
Аноним 11/11/20 Срд 02:15:39 #32 №1853217 
>>1853185
Да, кстати. Спасибо, что поправил. Могут иметь и сишный интерфейс.

Ну, я как раз и про "привязку" ffi к C и имел ввиду.
Аноним 11/11/20 Срд 02:52:50 #33 №1853224 
>>1853196
https://www.youtube.com/watch?v=c9Xt6Me3mJ4
Аноним 11/11/20 Срд 09:29:33 #34 №1853296 
Что несете.

Классы это структуры. Си с классами это Си, а не кресты.

А вот кресты это STL, эти аллокаторы, енумераторы и прочие говнокаторы, и джаваскрипт-однострочная дрисня с вложенными функциями. Короче любое говноскриптовое говно - черный ящик, которое хуй пойми как работает и в глазах программиста никак не соотносится к реальному коду - ассемблеру.
sageАноним 11/11/20 Срд 09:36:24 #35 №1853298 
>>1853131
> Которые позволяют в компайл тайме в миллиард раз больше
Да. Только что-то сложное практически невозможно прочитать. Да, как и сложные макросы в Си. Но лучше от этого шаблоны не становятся.
Аноним 11/11/20 Срд 11:20:35 #36 №1853335 
>>1853195
Что-то я орнул. Далеко не всегда.
Если так идти выше по абстракции - зачем вообще кодить?
Устраивайся менеджером и колошмать мозги подчиненным разработчиком: у них-то будет все лучше отлажено, чем у тебя.
Аноним 11/11/20 Срд 16:31:04 #37 №1853638 
>>1852793
>Массивы передавать?
Указатель на первый элемент.
Аноним 11/11/20 Срд 16:32:45 #38 №1853640 
>>1852920
>. Например, исключения.
Отключаются опциями компилятора.
При этом классы останутся доступны, а STL отвалится.
Аноним 11/11/20 Срд 16:46:04 #39 №1853655 
>>1853640
> а STL отвалится.
Необязательно
Аноним 11/11/20 Срд 16:52:45 #40 №1853662 
>>1853298
Да все оно читается замечательно. А если программа большая и сложная так вообще намного лучше чем 500 функций под каждый принимаемый тип с именем этого типа в имени.
МайКласс1sumМайКласс2()

А вот в маленьких программах где все прибито гвоздями и точно известно что и куда ты передаешь это действительно усложняет чтение.

>>1853638
Хранить глобально ничего никуда не передавать.
Привет эмбеддед.
>>1853640
И толку с таких крестов? Выше писали С с классами это не кресты.
Аноним 11/11/20 Срд 16:54:08 #41 №1853664 
image.png
image.png
>>1853662
>И толку с таких крестов?
Много.

>>1853662
>А если программа большая и сложная
Аноним 11/11/20 Срд 17:00:10 #42 №1853672 
>>1853335
Затем, что чем выше по абстракции, тем сложнее, то есть обладающий большим набором признаков и свойств результат. А чем этот набор больше, тем выше шанс, что он уникален и меньше тебя удовлетворяет.
Ты же на машинном коде все не пишешь?
Аноним 11/11/20 Срд 17:01:48 #43 №1853675 
>>1853672
>Затем, что чем выше по абстракции, тем сложнее, то есть обладающий большим набором признаков и свойств результат. А чем этот набор больше, тем выше шанс, что он уникален и меньше тебя удовлетворяет.
Охуеть, кто-то ещё кроме меня с интеллектом итт
Аноним 11/11/20 Срд 17:45:38 #44 №1853730 
>>1853664
Чё сказать хотел?кроме того что ты не умеешь создавать новые файлы.
Аноним 11/11/20 Срд 19:26:19 #45 №1853811 
>>1853662
> И толку с таких крестов? Выше писали С с классами это не кресты.
У меня друг работал в геймдеве, писали игры для телефонов на крестах. И во всех проектах по дефолту прям были выключены исключения и rtti. Использовалась своя stl. Так что - такие кресты нужны. То что ты юзекейса не нашел - не означает что другие не найдут.
Аноним 11/11/20 Срд 22:26:08 #46 №1853954 
>>1853730
Это не мой код, это мерзкий openssl, с которым приходится работать. Хотел сказать — посмотреть, какая помойка.
Аноним 11/11/20 Срд 22:27:46 #47 №1853957 
>>1853954
>посмотрите
Фикс
Аноним 12/11/20 Чтв 02:26:08 #48 №1854027 
>>1853954
>Хотел сказать — посмотреть, какая помойка.
Просто ты никогда не видел такого и возбудился.
Но при этом то же самое на С++ выглядело бы красивше.
Аноним 12/11/20 Чтв 03:57:43 #49 №1854050 
>>1854027
>Просто ты никогда не видел такого и возбудился.
Видел конечно, но обычно мимо проходил, а тут вникать пришлось.

>Но при этом то же самое на С++ выглядело бы красивше.
Об этом и говорю.
Но так-то и на С было бы красивше чем то, что есть, если бы писали не так монолитно КАК ДАУНЫ БЛЯДЬ.
Аноним 12/11/20 Чтв 04:15:49 #50 №1854055 
>>1853954
Так его вроде математики, а не программисты писали.
По крайней мере слышал такое объяснение, когда Heartbleed в нем нашли
Аноним 12/11/20 Чтв 09:44:49 #51 №1854118 
>>1854050
Код пишет человек, а не язык.
Чем больше свободы в языке, тем более уебищный код можно написать. но это если программист рукожоп, а если программист грамотен, то и код будет тем лучше, чем больше у него возможностей.

Говоря просто, крутой язык (си) отражает способности программитста. Какой ты - такой твой код. Свобода означает безграничные возможности, но в то же время накладывает абсолютную ответственность. За свои действия отвечаешь только ты, полностью, никаких нянек вроде языка с анальными ограничениями и принуждениями тут нет, так что свои косяки свалить не на кого и за тебя красивый код никто не напишет и не направит "как надо". На си пишут только настоящие программисты, которые сами за себя отвечают и сами знают как им надо, а не ищут нянек, которые помогут и направят тупое дитятко на "правильный путь".
sageАноним 12/11/20 Чтв 12:17:30 #52 №1854192 
>>1853191
бро, мож тоже пройти CS50?
Аноним 12/11/20 Чтв 13:28:29 #53 №1854228 
народ, вы тут по операционкам шарите
скажите, я вот себе поставил линукс и проебался: не работают дрова вай фая и нет возможности подрубить кабель
начал вручную скачивать на одном компе дрова и их зависимости всякие, но в итоге ебусь уже день с тем, что одно трубует другое, а оно еще другое и еще и еще - короче пиздец
вопрос по теме: одна из вот этих нужны хуевин - gcc, но у него вереница блять зависимостей
где можно найти архив с уже всеми укомплектованными .deb файлами?
Аноним 12/11/20 Чтв 14:15:19 #54 №1854242 
>>1854228
>с уже всеми укомплектованными .deb файлами
На фул образе дистра
Аноним 12/11/20 Чтв 15:52:35 #55 №1854310 
image.png
image.png
image.png
пикрилы, программа просто останавливает свое выполнение после ввода переменной, в чем здесь проблема?
Аноним 12/11/20 Чтв 15:56:39 #56 №1854321 
>>1854055
Да, и это видно прямо по коду.
Аноним 12/11/20 Чтв 16:47:35 #57 №1854386 
>>1854242
а ето где?
Аноним 12/11/20 Чтв 17:00:10 #58 №1854402 
>>1854386
На офсайте
Аноним 12/11/20 Чтв 17:23:50 #59 №1854435 
image.png
Товарищи сишники, объясните пожалуйста несколько моментов в этом коде. Он сортирует массив указателей на строки. Почему в строке 7 мы приводим полученные войдовые указатели к типу "указатель на указатель на char", а потом разыменовываем? Почему не просто приводим к указателю на char? Также непонятна строка 14 ну и следовательно 15. Почему в качестве размера массива мы передаем именно такую константу?
Аноним 12/11/20 Чтв 18:11:39 #60 №1854469 
>>1854310
АААА МОИ ГЛАЗААА
Ну очевидно же - что-то делаешь не так.
Может где-то не используешь нужную константу с указанием типа, или где-то в коде не то написано.
Аноним 12/11/20 Чтв 18:20:56 #61 №1854482 
>>1854435
> Почему в строке 7 мы приводим полученные войдовые указатели к типу "указатель на указатель на char", а потом разыменовываем?
Потому что qsort передает в компаратор указатели на элементы массива. Выходит в функции будут char ×× переданы, но реальный тип void ×, его надо привести к char ×× чтобы после разыменования указателя был тип char × который требуется функции strcmp.
> Почему не просто приводим к указателю на char?
А ещё разыменовать void × нельзя, так как неизвестен размер типа void.
> Также непонятна строка 14 ну и следовательно 15. Почему в качестве размера массива мы передаем именно такую константу?
sizeof возвращает размер типа.
`sizeof a` вернёт размер в байтах всего массива(20 байт или 40 байт), sizeof (char ×) вернёт 4-8 байт(зависит от размера указателя).
Аноним 12/11/20 Чтв 18:23:23 #62 №1854483 
>>1854469
очевидно, но я не понимаю в чем проблема. Не могу найти. И почему глаза болят?
Аноним 12/11/20 Чтв 18:51:08 #63 №1854499 
>>1854482
Спасибо, разобрался.
Аноним 12/11/20 Чтв 20:08:36 #64 №1854571 
>>1854310
В Си нету брейкпоинтов?
Аноним 12/11/20 Чтв 20:10:53 #65 №1854575 
>>1854483
> очевидно, но я не понимаю в чем проблема.
Вот я тоже не понимаю, не вижу потому что код запутанный, полон неявных приведений int к float, перемножения и деления float на int. Плюс ко всему код плохо структурирован и его читать проблематично. В цикле у тебя вообще делится целое число 1 на целочисленную переменную i, если i не ноль(а оно не ноль судя по коду), то результат такой операции всегда 0 будет. И так далее. Просто запутанный и проблемный код.
> И почему глаза болят?
Код структурирован без какой-либо на то логики и формальных правил.
Аноним 12/11/20 Чтв 20:15:50 #66 №1854581 
>>1854571
Нет. И в плюсах нет.
Аноним 12/11/20 Чтв 20:16:05 #67 №1854583 
>>1854575
как бы ты тогда тешил эту задачу?
Аноним 12/11/20 Чтв 20:16:31 #68 №1854584 
>>1854575
>результат такой операции всегда 0 будет
Ещё 1 может быть.
Аноним 12/11/20 Чтв 20:21:45 #69 №1854589 
>>1854583
Красиво и четко.
Аноним 12/11/20 Чтв 20:27:12 #70 №1854590 
>>1854584
Таки да. Есть вариант, с `i == 1`.
>>1854583
Красиво и четко.
Эпсилон считать можно и не через pow.
Расписать формулу для члена ряда нормально.
Записать ее с использованием float литералов, и функций явно принимающих float(а может и double тебе нужен).
Структурировать код надо так, чтобы читать было проще, а не выглядел он как ебучая картина Пикассо.
По мере того как начало правильно считать и работать - вносить все ифы и прочее с ограничениями.
>>1854589
Кажется ты читаешь мои мысли, ахаха.
Аноним 13/11/20 Птн 03:55:59 #71 №1854806 
>>1854310
Сканф_С???!!
Фабс(флоат)??
ты вообще дурачёк? сложно писать как все? надо выебнуться?
Аноним 13/11/20 Птн 04:14:38 #72 №1854812 
>>1854310
вангую у тебя z всегда больше e и всё время растёт, поэтому цикл никогда не завершается
тебе надо не z с e сравнивать, а разницу между новым z и и предыдущим
Аноним 13/11/20 Птн 04:37:01 #73 №1854818 
>>1854806
> Сканф_С???!!
scanf_s это безопасная функция scanf, предоставляемая шиндошсом. Под шиндошс с ней норм.
Аноним 13/11/20 Птн 10:37:31 #74 №1854901 
>>1854310
>пик 2
Какой мерзкий пиздец с проверкой ввода. А ведь можно было просто поставить goto.
Аноним 13/11/20 Птн 11:00:42 #75 №1854909 
>>1854901
Щас студенты, которых учат, что goto плохо, тебе пояснят твою неправоту.
Аноним 13/11/20 Птн 11:05:45 #76 №1854910 
>>1854310
> пикрилы, программа просто останавливает свое выполнение после ввода переменной, в чем здесь проблема?

Отладочные принтфы запретили?
Аноним 13/11/20 Птн 11:11:00 #77 №1854913 
>>1854901
Нет там пиздеца. Даже красиво как-то.

>>1854909
goto незаменим при написании конечных автоматов.
Вот там действительно макароны без goto получаются.
Аноним 13/11/20 Птн 11:32:18 #78 №1854927 
>>1854310

Ну и да, вся матх.хэ расчитана на даблы, все функции работают только с даблами

float - онли для гейдева, что бы графон в 144 фпс и физон в нем же считать.

Используй даблы.
Аноним 13/11/20 Птн 11:40:08 #79 №1854933 
>>1854913

typedef enum{
MOCHA,
PIDOR,
BLYADINA,
HUI
} State;

State s = HUI;
bool isFinished = false;
while(!isFinished){
switch(s){
case HUI:
...
case MOCHA:
...
break;
case PIDOR:
...
break;
case BLYADINA:
...
s = PIDOR;
break;
default:

}
}
Аноним 13/11/20 Птн 11:43:07 #80 №1854936 
>>1854933
Даже не смешно. Ты попробуй реальный сложный автомат запилить.
Аноним 13/11/20 Птн 11:47:35 #81 №1854939 
>>1854936
>Даже не смешно. Ты попробуй реальный сложный автомат запилить.

То же самое, только

State s = HUI;
bool isFinished = false;
while(!isFinished){
switch(s){
case HUI:
s = processHui();
break;
case MOCHA:
s = processMocha();
break;
case PIDOR:
s = processPidor();
break;
case BLYADINA:
s = processBlyadina();
break;
default:
printf("DA TY OHUEL SUKA");
isFinished = true;
}
}
Аноним 13/11/20 Птн 11:50:16 #82 №1854941 
>>1854939
Да я уже видел что ты знаешь как работает оператор switch.
Ты хотя бы препроцессор для Си напиши беp goto.

Аноним 13/11/20 Птн 11:55:53 #83 №1854947 
>>1854192
Пройди, это несложно.
Я не скажу, что курс много даёт, но будешь понимать в ЯПах чуть больше.
Аноним 13/11/20 Птн 11:57:37 #84 №1854949 
>>1854228
>где можно найти архив с уже всеми укомплектованными .deb файлами?
Какой линукс ты себе поставил?
В убунте apt тебе автоматически все зависимости вытянет, как и любой пакетный менеджер.
Аноним 13/11/20 Птн 14:57:12 #85 №1855074 
>>1854818
>scanf_s это безопасная функция scanf, предоставляемая шиндошсом.
Верно, но пользоваться ей не нужно.
Эти виндофункции _s оказались ошибкой.
Аноним 13/11/20 Птн 17:15:28 #86 №1855252 
>>1854913
>Нет там пиздеца.
Вообще то есть адовое дублирование кода.
A
B
if(cond)
{
 do {
 C
 A
 B
 }while(cond)
}
Аноним 13/11/20 Птн 17:34:35 #87 №1855262 
>>1855252
А, точно, есть.

while(1)
{
/.. код ввода тут .. /
if(cond_is_good)
break;
}
Аноним 13/11/20 Птн 22:40:34 #88 №1855517 
>>1854118
повтори еще раз, непонятно же, заебешь
Аноним 14/11/20 Суб 13:28:16 #89 №1855910 
>>1854818
Которая принимает сколько аргументов? а сколько ты передаёшь?
>Под шиндошс с ней норм.
Но зачем?
>>1854910
>Отладочные принтфы запретили?
Пиздец деграданты.
>>1855450
>Нахуй нужно, линукс даже на кофеварках.
Ну удачи, лол, особенно посмотрю на тебя в ЦОС с линуксом.
ты просто не понимаешь в чём разница между микроконтроллером и микропроцессором и области применения
>>1855538
>все подобные штуки будут писаться на си под rtos.
Ртос это и есть линукс(в 80% случаев) , пилится всё на бареметал.
>>1855832
Чтоб в фейсбук зайти.
А если серьёзно - проще поставить МК чем ебаться с логикой на транзисторах
>>1855841
классика маркетологов, а иван ерохин производит готовый продукт где ничего не надо качать и управлть с телефона, а где есть 4 кнопки, никаких головняков.
Аноним 14/11/20 Суб 14:50:02 #90 №1855952 
>>1855910
> последняя строка
Два кофе этому господину.

Есть, короче, кофе машины. На них 2-3 кнопки - эспрессо, средний и большой американо. ВИСЬО. Хочешь капучино? Сбоку есть капучинатор: трубка мокается в стакан с молоком, нажимается еще одна кнопка, выплевывается теплая молочная пена.

И никаких скриптов.
Аноним 14/11/20 Суб 14:56:44 #91 №1855958 
>>1855910
> Которая принимает сколько аргументов? а сколько ты передаёшь?
> Но зачем?
Давай посмотрим сюда:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l
>These versions of scanf, _scanf_l, wscanf, _wscanf_l have security enhancements, as described in Security Features in the CRT
Ага, идём дальше:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/security-features-in-the-crt
Ну тут и все становится на свои места, просто детект ошибок и адекватный вывод их, чтобы кто-то юзающий функции не выстрелил себе в ногу. Вполне полезно, особенно для бедного студента который лабу пишет
Аноним 14/11/20 Суб 16:23:48 #92 №1856012 
>>1855958
Ок, используй.
>чтобы кто-то юзающий функции не выстрелил себе в ногу
Чтоб не выстрелить себе в ногу, надо не стрелять себе в ногу.
Заебали уже прохрамисты которые пишут так что оно может "выстрелить себе в ногу", пиши так чтоб оно не стреляло себе в ногу.
а выстрелить себе всё равно проблем не составит

>особенно для бедного студента который лабу пишет
Вот как раз студентики то пускай себе ногу и отстреливают, у них и время на это есть и на проде не упадет, того гляди поотстреливают себе ноги пока молоды так потом как вырастут этого делать не будут.
Аноним 14/11/20 Суб 16:41:13 #93 №1856038 
>>1856012
> Ок, используй.
У меня нет винды. Я лишь поясняю что это за функции у МС имеются в наличии.
> >чтобы кто-то юзающий функции не выстрелил себе в ногу
> Чтоб не выстрелить себе в ногу, надо не стрелять себе в ногу.
"Если ты бездомный, просто купи дом"
> Заебали уже прохрамисты которые пишут так что оно может "выстрелить себе в ногу", пиши так чтоб оно не стреляло себе в ногу.
"Да вот возьми и купи дом. Нет денег? Заработай!"
> а выстрелить себе всё равно проблем не составит
"А быть бездомным может каждый, на это много ума не надо"
Примерно так твоя аргументация выглядит

> >особенно для бедного студента который лабу пишет
> Вот как раз студентики то пускай себе ногу и отстреливают, у них и время на это есть и на проде не упадет, того гляди поотстреливают себе ноги пока молоды так потом как вырастут этого делать не будут.
Дык они и отстреливают. Попадают потом на работу/стажировку, и там уже в твоих проектах стреляют в ногу. Пусть на примере этих функций узнают об возможностях пострелять в ноги, и может поинтересуются как эти проблемы обошли.
Аноним 14/11/20 Суб 18:38:13 #94 №1856154 
Я вот прочитал это Brian Kernighan, Dennis Ritchie "The C Programming Language"
Но не нашёл там про оператор ",". Впервые увидел его применение в декомпилированном коде от IDA
Аноним 14/11/20 Суб 19:01:52 #95 №1856164 
1605369710822.png
1605369710839.png
>>1856154
Бывает.
Аноним 14/11/20 Суб 20:26:12 #96 №1856229 
>>1856164
У меня русская версия. Хз, наверно, пропустил.
Аноним 14/11/20 Суб 20:32:58 #97 №1856237 
>>1856038
Один из лучших подходов сишечки это парадигма "оно то есть но если оно плохое то мы его не используем"
Вот это из разряда функций которые использовать просто не надо.
Так же как и цикл "Ду вайл"(кроме определенных случаев где он действительно уместен)

А при чем тут бездомные. Ты не можешь писать код предварительно подумав что и где он делает? Или тебе надо чтоб тебя ограничивали и говорили что так нельзя?
Так и появляются говносишники которые перешли из какой-то джавы с тотальным анальным контролем которые пишут говно из-за того что коданалищатор их не стукает по ручкам.

Как-то хреново отстреливают если не помогает.
Я как-то во время обучения настрелял достаточно чтоб трижды подумать над каждой строчкой
Аноним 14/11/20 Суб 22:07:52 #98 №1856313 
>>1856237
> Один из лучших подходов сишечки это парадигма "оно то есть но если оно плохое то мы его не используем"
Тогда почему не удаляют?
> Вот это из разряда функций которые использовать просто не надо.
И почему же? _s ничем тебя особо не обязывает, а при наличии ошибок в коде - тебе может подсказать что ты сделал не так сам компилятор или crt выведет что-то.
> Так же как и цикл "Ду вайл"(кроме определенных случаев где он действительно уместен)
Ясно, у тебя все нинужно, если ты этому не можешь найти применение.

> А при чем тут бездомные. Ты не можешь писать код предварительно подумав что и где он делает? Или тебе надо чтоб тебя ограничивали и говорили что так нельзя?
Аргументация у тебя уровня дебила.
Я так понимаю, ты с большими проектами на Си не работал и большой командой? Все писал своими потными ручками, чисто свой код и из-за этого у тебя выработалась мания величия? Когда половина кода написана не тобой, и он весьма большой по объему - анализаторы вполне могут сократить время разработки приложения, банально предупредив о какой-то возможности наколоться. Нет, конечно, можно пойти в код, глянуть что за таинственная функция написанная каким-то давно уволившимся сотрудником, изучить как она работает, как тянет ворох других ваших функций, потратить денёк на дебаг, а можно просто увидеть выхлоп анализатора или warning компилятора и исправить сходу свой код на правильный вариант.
> Так и появляются говносишники которые перешли из какой-то джавы с тотальным анальным контролем которые пишут говно из-за того что коданалищатор их не стукает по ручкам.
Смешно, но знаю тонну джавистов которые сбежали от С/С++(причем работали в этой области от 10 лет) просто потому что их достало ебаться с памятью
> Я как-то во время обучения настрелял достаточно чтоб трижды подумать над каждой строчкой
И наверное пишешь 10 строчек в месяц, мня о том какой ты ниибацца охуенный погромист.
Аноним 15/11/20 Вск 09:31:01 #99 №1856535 
>>1856313
Большой, старый проект
@
На Си
@
Я первый с анализатором
Аноним 15/11/20 Вск 10:56:18 #100 №1856573 
>>1856313
>Тогда почему не удаляют?
По тому что кто-то это уже использовал.
>И почему же?
А делать "как все" нельзя? Надо изебнуться? чего тебе не хватает в обычном сканф?
>_s ничем тебя особо не обязывает
Кроме того что это это виндовая функция
> а при наличии ошибок в коде - тебе может подсказать что ты сделал не так
???? что там она подскажет??
>если ты этому не можешь найти применение.

Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)

> ты с большими проектами на Си не работал и большой командой?
Работал, не могу сказать что уж совсем большими и что уж совсем большой командой(не совсем понимаю как в С можно работать большой командой и главное почему тогда не перейти на язык который для этого больше подходит)

А ты работал?

>Когда половина кода написана не тобой, и он весьма большой по объему
Да у меня фреймворк с открытым говнокодом я замечательно знаю что это такое.

>анализаторы вполне могут сократить время разработки приложения
Да именно так, статанализаторы это наше всё, но не для студента, студент должен работать САМ и СТРАДАТЬ, а статанализаторы пускай будут когда он поймёт что он делает.
просто читаю ОПа(это ты??) с тем как он в 3-х строках обосрался и вместо того чтоб разобраться и отдебажить пришел ныть на двач со своей "безопасной функцией"

>Смешно, но знаю тонну джавистов которые сбежали от С/С++
Ок, я рад за них, при чём ту это?

>И наверное пишешь 10 строчек в месяц
Я пишу коммерческий код за который платят деньги.
А ты лабораторки в вузе?
Аноним 15/11/20 Вск 13:45:34 #101 №1856695 
>>1856573
>Кроме того что это это виндовая функция
Кек. Хорошо горит. Предлагаю всем в треде впредь постить только подобные майкрософтовские функции.
Аноним 15/11/20 Вск 15:57:13 #102 №1856798 
>>1856573
> >Тогда почему не удаляют?
> По тому что кто-то это уже использовал.
Я б удалил с новых версий языка, если их никто не использует из-за того, что это дурной тон.
>По тому
АХАХАХАХАХХАХАХА
Кажется препроцессор писал за тебя.

> >И почему же?
> А делать "как все" нельзя? Надо изебнуться? чего тебе не хватает в обычном сканф?
Защиты от разьеба стека, которую предоставляет _s версия. Замечу, scanf обычный в gcc/glibc это все тоже делает, но без суффикса, ms решили не ломать обратную совместимость.
> >_s ничем тебя особо не обязывает
> Кроме того что это это виндовая функция
Говоришь как будто это что-то плохое.
О ГОСПОДИ, А ЕСТЬ ЖЕ ТОННА СИСТЕМ ГДЕ НЕТУ LIBC И СТАНДАРТИЗИРОВАННЫХ ФУНКЦИЙ, НА НИХ ПИСАТЬ НЕЛЬЗЯ, НЕ КАНОН, ВЕДЬ ТАМ НЕТУ ТОГО К ЧЕМУ ИМЕННО ДОЛБОЕБ ИЗ СИ ТРЕДА НЕ ПРИВЫК, КАКОЙ УЖАС
> > а при наличии ошибок в коде - тебе может подсказать что ты сделал не так
> ???? что там она подскажет??
Поюзай ASan/TSan, дядь, ты устарел.
> >если ты этому не можешь найти применение.
> Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)
Беру и пишу небольшие циклы do while где удобно. Чет не выгнали ещё за столько лет. Проблемы?
> > ты с большими проектами на Си не работал и большой командой?
> Работал, не могу сказать что уж совсем большими и что уж совсем большой командой(не совсем понимаю как в С можно работать большой командой и главное почему тогда не перейти на язык который для этого больше подходит)
Ты хочешь сказать Си не подходит для большой разработки? Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.
> А ты работал?
Да. Вполне норм работаю в США.
> >Когда половина кода написана не тобой, и он весьма большой по объему
> Да у меня фреймворк с открытым говнокодом я замечательно знаю что это такое.
Видать ты и поехал крышей после такого дебага.
> >анализаторы вполне могут сократить время разработки приложения
> Да именно так, статанализаторы это наше всё, но не для студента, студент должен работать САМ и СТРАДАТЬ, а статанализаторы пускай будут когда он поймёт что он делает.
"Иисус сказал что надо страдать и мы страдаем все, не только программисты, но особенно программисты, возомнившие себя выше других."
Не мог не вставить.
Зачем страдать, когда можно объяснить и рассказать где про это прочитать? Или ты один из тех программистов, возомнивший себя выше других, который находит в страдании обучение? Я вон учился в универе и не страдал, вполне неплохо обучился, прод не обваливаю, код крутится@лавеха мутится.
> просто читаю ОПа(это ты??) с тем как он в 3-х строках обосрался и вместо того чтоб разобраться и отдебажить пришел ныть на двач со своей "безопасной функцией"
Ни у кого насчёт нее претензий не было, кроме тебя.
> >Смешно, но знаю тонну джавистов которые сбежали от С/С++
> Ок, я рад за них, при чём ту это?
К тому что от таких говнохранителей как ты народ и перестает пользоваться байтоебскими языками.
> >И наверное пишешь 10 строчек в месяц
> Я пишу коммерческий код за который платят деньги.
Тоже.
> А ты лабораторки в вузе?
Смешно.
Аноним 15/11/20 Вск 16:24:00 #103 №1856817 
>>1856798
>Я б удалил с новых версий языка,
Охуенно, чтоб обновился и твой легаси проект упал, заебись блять и хранить 10 компехляторов.
>Говоришь как будто это что-то плохое.
Использовать что-то особое когда есть обычное с таким же функционалом.
>Ты хочешь сказать Си не подходит для большой разработки?
>Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.
Да, я вижу когда при разростании проекта наступает момент когда "на плюсах было бы проще"
>Зачем страдать, когда можно объяснить и рассказать где про это прочитать?
За тем что когда ты учишься - это замечательное время обучиться навыку решения говнопроблем и поиска ошибок САМОСТОЯТЕЛЬНО, если ты его обрёл без страданий - честь тебе и хвала, как видешь, вопрашающий не обрёл и вместо того чтоб разобраться и немножно пострадать выбрал "простой путь" а не пройдя хоть пару раз по сложному он в дальнейшем не сможет по нему сам пройтиу него просто банально не будет на это времени
>Ни у кого насчёт нее претензий не было, кроме тебя.
эээ и что? ну у меня есть.
>К тому что от таких говнохранителей
Говнохранителей чего? того что не надо в "свой особый путь"
Если я тебе скажу что я не использую функцию Ссканa ты мне тоже скажешь что я не прав?
Аноним 15/11/20 Вск 16:36:47 #104 №1856829 
>>1856817
>отвечать шизу/ларперу/троллю
Аноним 15/11/20 Вск 17:04:39 #105 №1856851 
Wat-Pigeon-Funny-Bird.jpg
>>1856573
>Ок, давай покажи применения ду-вайл за которое тебя не выпрут с работы за мозгоёбный кодстайл (вариант инициализации не предлагать, там он действительно лаконичен)

Что за ёбань я читаю вообще. Может вам и goio удалить хочется?

Мимокрок
Аноним 15/11/20 Вск 17:05:05 #106 №1856852 
>>1856851
goto*

быстрофикс
Аноним 15/11/20 Вск 17:22:47 #107 №1856863 
>>1856237
>Так же как и цикл "Ду вайл"(кроме определенных случаев где он действительно уместен)

Мой любимое использование do { / code here / } while(0); для избежания использования большой вложенности операторов if

Ибо: if(condition) break; между которыми помещается код.
В результате, после небольшой привычки, код читается даже легче и выглядит пристойнее, чем куча вложенных if()
Аноним 15/11/20 Вск 18:05:07 #108 №1856892 
>>1856573
Что не так с do?
Аноним 15/11/20 Вск 20:37:57 #109 №1857022 
>>1856573
> Do while
Любой случай, где заранее известно, что условие истина, но стоимость вычисления условия нетривиальна.
Или же случай, где условие не определено до завершения итерации. Примеров море, но мне лень копировать.
Аноним 15/11/20 Вск 20:40:49 #110 №1857025 
>>1856573
А как ты определил, "как все"? Покажи статистические исследования с методикой. А то выянсится, что ты один так пишешь.
Аноним 15/11/20 Вск 21:05:05 #111 №1857051 
>>1857025
Капитан Кросс-Платформенность утверждает, что тупо весь пингвинячий код написан без этой функции. Какие еще вам нужны доказательства?
Аноним 16/11/20 Пнд 00:39:45 #112 №1857202 
func.jpg
>>1856863
> do { / code here / } while(0);
Это именно тот случай, я когда встретил это решение то просто охуел от лаконичности.
>>1857022
>Примеров море, но мне лень копировать.
Они все замещаются форами или обычным вайлом.
А читать код где кто-то решил показать всё на что он способен и как познал всё до чего можно только дотянуться это пиздец.
>>1857025
пик
Аноним 16/11/20 Пнд 00:44:15 #113 №1857209 
>>1857202
>Они все замещаются форами или обычным вайлом.
Всё замещается на mov.
Аноним 16/11/20 Пнд 01:08:30 #114 №1857232 
>>1857209
здраствуте MISRA C rules - 3е правило прямо запрещает срать асемблером куда попало.
Аноним 16/11/20 Пнд 02:59:27 #115 №1857312 
>>1856817
> >Я б удалил с новых версий языка,
> Охуенно, чтоб обновился и твой легаси проект упал, заебись блять и хранить 10 компехляторов.
Порой бывает старые проекты не собираются на новых компиляторах. Бывает. Может ты не сталкивался, а я сталкивался.
> >Говоришь как будто это что-то плохое.
> Использовать что-то особое когда есть обычное с таким же функционалом.
Тебя ничего не обязывает юзать что одно, что другое. Если платформа что-то предлагает получше, почему не заиспользовать? Я не вижу в этом ничего плохого.
> >Ты хочешь сказать Си не подходит для большой разработки?
> >Ты точной опытный дядька? Я имею большие сомнения насчёт твоей компетенции.
> Да, я вижу когда при разростании проекта наступает момент когда "на плюсах было бы проще"
Я с таким сталкивался только из-за либ которые есть на С++, а на Си - только хуярить самому wrapper.
> >Зачем страдать, когда можно объяснить и рассказать где про это прочитать?
> За тем что когда ты учишься - это замечательное время обучиться навыку решения говнопроблем и поиска ошибок САМОСТОЯТЕЛЬНО, если ты его обрёл без страданий - честь тебе и хвала, как видешь, вопрашающий не обрёл и вместо того чтоб разобраться и немножно пострадать выбрал "простой путь" а не пройдя хоть пару раз по сложному он в дальнейшем не сможет по нему сам пройтиу него просто банально не будет на это времени
Ну мы ему ответили. Он не станет программистом, вероятнее всего. Или хорошим программистом не станет. Меня это устраивает, меньше конкуренции в будущем.
> >Ни у кого насчёт нее претензий не было, кроме тебя.
> эээ и что? ну у меня есть.
А я у меня нет.
> >К тому что от таких говнохранителей
> Говнохранителей чего? того что не надо в "свой особый путь"
Каждый имеет право на свой путь в программировании, выбрать самому как учиться, выбрать какие функции юзать.
> Если я тебе скажу что я не использую функцию Ссканa ты мне тоже скажешь что я не прав?
Да и я их не использую. Но если будут юзать(даже для чтения ебаного stdin) - ну и норм, это ж не я написал, главное чтоб работало правильно.
Аноним 16/11/20 Пнд 03:24:58 #116 №1857320 
>>1857202
> пик
А теперь по всем проприетарным виндоус прогам и самой винде.
Аноним 16/11/20 Пнд 09:01:19 #117 №1857454 
>>1857202
> они все замещаются фор
Ты ебобо или зелёный?
Аноним 16/11/20 Пнд 10:18:22 #118 №1857476 
what is your opinion.png
>>1857202
>Они все замещаются форами или обычным вайлом.
Да-да, конкструкция с бесконечным циклом и if-break-ами существенно лучше, конечно читается. Аллоэ, за это тред кто-то конкретику про do-while принесёт, или лишь бы кококо?

>>1857320
Чтобы что?

>>1857312
>Тебя ничего не обязывает юзать что одно, что другое.
<Но давайте выпилим цикл с постусловием, он меня напрягает, похуй на совместимость.

Чот биполярочка
Аноним 16/11/20 Пнд 13:57:36 #119 №1857609 
>>1857232
До свидания.
Аноним 16/11/20 Пнд 14:14:46 #120 №1857619 
>>1857232
Думаю это была отсылка к тюринг полному языку использующему только mov.
Аноним 16/11/20 Пнд 14:25:40 #121 №1857622 
>>1857619
ADD, NEG, MOV (aka LOAD & STORE). RCL, AND, OR, XOR, JZ, JС, JMP.

Пока не проверял, но почти что 100% на этом базисе можно написать любую программу.

Нужно вычитание? Используй вместо него NEG и ADD.
Нужно сдвинуть регистр на один бит влево - используй 31 сдвиг через перенос вправо. Нужен нециклический сдвиг? Сделай перед сдвигом AND по маске. И т.д. по аналогии.

При этом программу будет жутко неэффективная, но мы же речь ведём о минимальном базисе, а не об эффективности.



Аноним 16/11/20 Пнд 14:30:19 #122 №1857625 
>>1857622
С 10 любой сможет.
Аноним 16/11/20 Пнд 14:42:43 #123 №1857637 
>>1857476
> >Тебя ничего не обязывает юзать что одно, что другое.
> <Но давайте выпилим цикл с постусловием, он меня напрягает, похуй на совместимость.
> Чот биполярочка
Явно вижу ты не следишь за обсуждением или толком его не читал, потому что отвечаешь на пост человека, который за наличие do-while в си, который срется с противником оного и чет заливаешь за биполярочку. Сессию как сдавать будешь, если ты читать не в состоянии?

мимокрокодил
Аноним 16/11/20 Пнд 14:46:10 #124 №1857639 
>>1857625
Я знаю что ты шутишь, но я не привык сдаваться.
Тебе нужен процессор с одной инструкцией MOV?
Это возможно.
Ты можешь зарезервировать несколько физических адресов и сделать процессор с одной инструкцией.
Например, по адресу 0x10000 находится ячейка, при записи в которую процессор переходит на адрес, записанный в неё.
Вот тебе уже и JMP родился.
по адресу 0x10008 запписываешь первый операнд.
По адресу 0x10010 запписываешь второй операнд.
По адресу 0x10018 ты читаешь сумму записанных чисел
По адресу 0x10020 ты читаешь разность записанных чисел.
И так далее.

Вот видишь, оказывается процессор с одной инструкцией возможен. Реализацию условных переходоы мне придумывать лениво, но полагаю что и эта задача решаема.
Аноним 16/11/20 Пнд 14:56:07 #125 №1857647 
>>1857639
Не знаю, зачем ты это пишешь - конечно язык с одним mov уже давно сделан.
Аноним 16/11/20 Пнд 15:01:21 #126 №1857655 
>>1857639
Вроде как тема эта уже изучена как URISC процессоры. Было бы прикольно чтобы кто-то написал под сие дело компилятор Си, а то дальше ассемблеров дело не доходило.
Аноним 16/11/20 Пнд 15:37:27 #127 №1857686 
>>1857622
> о минимальном
Зачем же ты принес половину 8080?
Читай труды Алана Тьюринга.
Аноним 16/11/20 Пнд 15:56:34 #128 №1857699 
>>1857637
Извини, в сортах анона не разбираюсь. Постер отвечает на фразу о невозможности компилить старый код новым комилятором после гипоететической правки синтаксиса чем? «Ну и что, и так сейчас бывает».
Аноним 16/11/20 Пнд 16:31:33 #129 №1857730 
movfuscator
Аноним 16/11/20 Пнд 16:33:44 #130 №1857733 
>>1857655
>компилятор Си
https://github.com/xoreaxeaxeax/movfuscator
Аноним 16/11/20 Пнд 17:13:05 #131 №1857772 
>>1857733
Это да, но под х86.
А мне б Си компилятор под какой-то bitbitjmp или subleq URISC процессор, такого вроде как нет.
Аноним 16/11/20 Пнд 18:05:48 #132 №1857800 
>>1857476
Давайте выпилим будем придерживаться кодстайла и не использовать все виды цыклов только по тому что можем.
Аноним 16/11/20 Пнд 18:06:41 #133 №1857802 
>>1857800
Пиздец в си-треде дауны сидеть, дувайл слишком сложный, не надо использовать, вдруг не поймет кто-нибудь.
Закрываю нахуй.
Аноним 16/11/20 Пнд 18:23:12 #134 №1857809 
>>1857802
Мы не дауны!
Дауны не мы... Это тебе в кое-какой другой тред...
Аноним 16/11/20 Пнд 20:08:42 #135 №1857898 
>>1857800
> не использовать все виды цыклов
Пчел, в этом недоязыке даже until нет
Аноним 16/11/20 Пнд 23:23:38 #136 №1858024 
Можно ли с помощью signal() выловить точку, где происходит SIGSEGV?
Нужно узнать текущий вход и желательно функцию.
Аноним 16/11/20 Пнд 23:38:06 #137 №1858033 
>>1858024
А чем gdb не угодил? Им и вылавливай.
Аноним 17/11/20 Втр 03:05:33 #138 №1858085 
>>1858024
Отловить SIGSEGV можно.
Вывод стэктрейса можно сделать через backtrace() на линуксах, или чем-то другим если система другая.
Потом можно названия функций и смещения конвертнуть через утилиту addr2line в названия файлов и номера строк, если нужно.
Аноним 17/11/20 Втр 10:04:27 #139 №1858251 
>>1852710 (OP)
sharp?
Аноним 17/11/20 Втр 12:59:16 #140 №1858333 
Снимок экрана 2020-11-17 в 10.56.35.png
Господа СИшники. Реквестирую помощи. Почему так? Почему выводится какая-то хуйня? По долгу учебы надо писать на Си, на питоне все замечательно работает, на Си же выводится неведомая хуйня. Сложность задания не играет роли. Выводится непонятное число, хз откуда, как исправить - тоже. В гугле инфы по этому вопросу нет, одногруппники сами охуевают. Без вас не обойтись.
Аноним 17/11/20 Втр 13:05:53 #141 №1858338 
Снимок экрана 2020-11-15 в 18.05.46.png
>>1858333
Именно такая фигня с массивами. Неадекватное поведение даже не только в этом примере, а в других. Вывод на экран тоже, может вывести первые 2-3 элемента ОК, потом какую-то хуйню. Или 1 элемент потом опять невнятное число. К сожалению, писать на других языках запрещено, с радостью бы писал, приходится работать с этим языком.

Например здесь, просто скриншот, в онлайн компиляторе вообще другой вывод, отличный от моего. Почему так он себя ведет и как этого избежать? А да, & пробовал ставить и убирать, вывод не меняется. Не в нем дело.
Аноним 17/11/20 Втр 13:14:52 #142 №1858343 
>>1858333
Ты n в инициализации массива-то использовать не хочешь?
Аноним 17/11/20 Втр 13:15:50 #143 №1858345 
>>1858333
>list[]
>printf &max &index
Аноним 17/11/20 Втр 13:23:48 #144 №1858351 
>>1858343
Не дает. Ошибка компиляции. Пробовал
>>1858345
и что? Вывожу 2 значения. После джавы и питона не вижу ничего плохого. Тип один и тот же. & убирал , не помогает, так же пробовал %d%d , тоже не помогает
Аноним 17/11/20 Втр 13:31:38 #145 №1858358 
>>1858333
А что тут объяснять? Ты создал массив из 0 элементов. Навсегда. А потом обращаешься по индексу за его пределами.
list = tmp никакой памяти не выделяет, новых элементов не создает.
Аноним 17/11/20 Втр 13:32:18 #146 №1858359 
>>1858351
>не вижу ничего плохого.
Просто значок & рандомно добавлять-убирать, действительно, что тут такого.
Аноним 17/11/20 Втр 13:34:32 #147 №1858361 
>>1858358
int list[] = {0};

Помогло это. Пиздец. Я думал Си может в динамику.
>>1858359
На войне все средства хороши, я должен попробовать.

Спасибо за помощь
Аноним 17/11/20 Втр 13:36:54 #148 №1858365 
>>1858351
Долбаеб ебаный тебе уже указали на твои ошибки ты продолжаешь высирать полотны малолетнего бреда
int[] пустой чанк памяти которым ты отстреливаешь себе ноги
printf %d на pointer возвращает адрес ссылки
Аноним 17/11/20 Втр 13:40:50 #149 №1858370 
>>1858361
Размер таких массивом должен быть известен на этапе компиляции. В gcc есть расширение, позволяющее писать arr[n], но это не стандарт.
Тебе в твоём случае надо заалоцировать через маллок массив и освободить эту память в конце
Аноним 17/11/20 Втр 13:46:38 #150 №1858374 
>>1858365
Ну ты прав. Я долбоеб , правда не малолетний. И ошибки указали, я их исправил и все заработало, я на Си никогда не писал до этого.
>>1858370
спасибо
Аноним 17/11/20 Втр 13:50:11 #151 №1858375 
>>1858361
>int list[] = {0};
Нет, это только полдела. Так ты создаешь массив с одним элементом. Если ты будешь обращаться [1], [2] то так же вылетишь.
Аноним 17/11/20 Втр 14:17:20 #152 №1858389 
>>1858361
>int list[] = {0};
Компилятор сопоставит общее количество элементов в "{}" и засунит это в []
Тут у тебя хуйня эквивалентная list[1] = {0}
Для динамики маллокейти
Аноним 17/11/20 Втр 21:49:54 #153 №1858878 
>>1858389
>маллокейти
так это же потом руками удалять придеться
Аноним 17/11/20 Втр 23:03:58 #154 №1859017 
>>1852726
это разные языки
Аноним 17/11/20 Втр 23:04:28 #155 №1859019 
>>1858370
>> В gcc есть расширение, позволяющее писать arr[n], но это не стандарт.

Это опциональная часть стандарта, называется VLA, в кланге тоже есть
Аноним 17/11/20 Втр 23:11:59 #156 №1859026 
>>1858878
Надо юзать alloca(), мне так дядька с 40 годами опыта программирования на Си советовал, пока не сдох, было ему 65 лет, эх
Аноним 17/11/20 Втр 23:34:10 #157 №1859057 
>>1858361
Это не помогло, это тебе кажется.
Динамика в С не нужна делается ручками.
>>1858374
Незаработало.
Аноним 18/11/20 Срд 00:15:47 #158 №1859105 
>>1859026
Да на стеке можно с запасом выделить и всё.
типа

int list[10000]; // Хули нам, кабанам, 40 килобмайт не память.

Но за название list надо по рукам бить - массив это не списоок.
sageАноним 18/11/20 Срд 00:19:24 #159 №1859108 
изображение.png
Такой вопрос, пишу учебный консолечный квест. Нужно чтоб происходила ротация определенных событий в мире, с долей рандома. Есть ли вариант вариант запихнуть реалтайм генератор эвентов в зацикленную функцию, пока игрок делает ходы. Хз, возможно ли это, но только си не передаст управление обратно игроку пока цикл бесконечный,а нужно чтобы он работал независимо от него. Может и хуйню горожу, но мсье хочет ебли. Или покатит только вызов функции с рандоматором?
Аноним 18/11/20 Срд 00:38:16 #160 №1859115 
>>1859108
https://lazyfoo.net/articles/article04/index.php
Аноним 18/11/20 Срд 00:57:21 #161 №1859120 
>>1859108
Можно сделать новый поток и там генерить.
Можно вообще ничего не делать, а смотреть когда игрок сделал ход, сколько времени прошло, и в зависимости от этого насувать N событий.
Аноним 18/11/20 Срд 20:31:58 #162 №1859577 
>>1859108
У тебя чтоль общий цикл как блокирующие функции написан?
Если нет - в него в начало и пихай, там проверяй время (не на каждый же оборот цикла что-то должно происходить)

Если у тебя там уже есть потоки - создай ещё один и в нём делай что тебе надо с вейкап периодом когда тебе надо.

Аноним 19/11/20 Чтв 16:07:04 #163 №1860190 
>Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.
Кто читал? Сколько полезного узнали? Охочусь сейчас за всей инфой по хипу, немножечко не понимаю, надеюсь эта книжка мне поможет.
К слову, не могу понять - Если инкрементировать сам указатель до того как он станет нулевым т.е до конца, он останется на начальном или конечном адресе если делать дереференс?
Я проверил на принте, что он доходит до нуля, только не могу понять остается ли он там.
Аноним 19/11/20 Чтв 16:16:09 #164 №1860198 
Еще можете подсказать как можно создать массив чаров только после того как пользователь введёт текст? Например сейчас мучаюсь с прогой в которой есть функция которая принимает текст и сплитит все найденные слова в массив из массивов чара. Если с этим нет проблем, то со строкой неизвестно сколько пользователь может ввести. Как с этим справляются опытные программеры?
Аноним 19/11/20 Чтв 18:27:18 #165 №1860292 
бляьь да какого хуя всё на английском
как вкатиться тт блятб
Аноним 19/11/20 Чтв 18:44:20 #166 №1860301 
>>1860190
Что ты несешь...
Аноним 19/11/20 Чтв 18:48:09 #167 №1860305 
>>1860292
It easi, jast start speek englesh. It simple :)
Аноним 19/11/20 Чтв 18:50:48 #168 №1860307 
1581305050756.png
>>1860292
Аноним 19/11/20 Чтв 19:05:22 #169 №1860320 
>>1860198
Выделяешь изначально сколько-то памяти и считываешь пока не встретится символ перевода строки. Если память кончилась раньше чем встретил символ выделяешь ещё в два раза больше и продолжаешь.
Аноним 19/11/20 Чтв 19:25:02 #170 №1860347 
>>1860307
>>1860305
охуенно, спасибо
dead per dead 19/11/20 Чтв 20:16:25 #171 №1860370 
>>1860198
У каждой строки есть разумный предел.
dead per dead 19/11/20 Чтв 20:20:29 #172 №1860373 
>>1860190
> станет нулевым
Ты не имеешь права.
Аноним 19/11/20 Чтв 23:01:45 #173 №1860522 
>>1860307
Какой это язык? Не гуглться.
Аноним 19/11/20 Чтв 23:17:08 #174 №1860532 
>>1860522
Рапира
Аноним 20/11/20 Птн 00:11:07 #175 №1860567 
Пиздец, почему линукс такой уебищный, и почему на нем все ещё кто-то сидит? Вот щас не пользовался ноутом где стоит чисто убунта несколько дней, захожу - отвалился вайфай. Просто так, сам собой) и вэлкам многочасовой пердолинг в консольке и чтение форумов красноглазиков. Почему с виндой я уверен что я сегодня запущу компьютер, и у меня все будет также как и вчера, а с линуксом я даже не уверен что у меня он вообще запустится нахуй?
Аноним 20/11/20 Птн 00:28:29 #176 №1860583 
>>1860567
Скинь скриншотик, у тебякакое убунту?
Аноним 20/11/20 Птн 00:49:16 #177 №1860603 
>>1860198
typedef struct
{
char str = NULL;
size_t size = 0;
size_t cap = 0;
}string_build;
void push(string_build
s, char symb)
{
if (s->size >= s->cap){s->cap*=2; realloc(s->data,s->cap);}
s->size++;
}
Аноним 20/11/20 Птн 00:54:17 #178 №1860610 
>>1860567
Само собой в линуксе может только хуй твой отвалиться, быдло невежественное. Линукс нихуя без твоего ведома не сделает, даже убунта. Ты сам нахуевертил где-то с ним, вот и сидишь без вайфая.
Аноним 20/11/20 Птн 00:55:27 #179 №1860612 
>>1860610
В убунте вроде как автоапдейты от каноникал можно включить по умолчанию
Аноним 20/11/20 Птн 00:58:29 #180 №1860614 
>>1860603
void push(string_build s, char symb)
{
if (s->size >= s->cap){s->cap*=2; realloc(s->data,s->cap);}
s->size++;
s->data[s->size-1]=symb;
}
слоуфикс
Аноним 20/11/20 Птн 01:41:22 #181 №1860643 
>>1860567
Ты смог отключить обновления шинде? Просто погугли новости, сколько компов на ней окирпичилось
Аноним 20/11/20 Птн 01:43:55 #182 №1860644 
>>1860614
Неплохо бы указатель после реаллока на нуль проверять.
Аноним 20/11/20 Птн 03:25:29 #183 №1860686 
>>1860644
А не то что?
Аноним 20/11/20 Птн 03:31:02 #184 №1860688 
>>1860567
Раз на раз не приходится. Стабильность дров та ещё шняга, особенно если сетевуха realtek, китайцы не стараются делать норм драйвера, или отвал, или отсутствие дров обеспечено. Более или менее норм на интеловсих wifi, там драйвер являет собой лаунчер огромного блоба, который и под виндой юзается.
Поддвачну этого >>1860643, имею ноут на Windows 10. Он уже давно не включается. Он находится при запуске в состоянии попытки поставить апдейт, апдейт отваливается непонятно почему, работается и винда опять ставит апдейт. Мне в принципе похуй, я пекабоярин. Но винда походу там умерла окончательно.
Мне кажется нетестируемые CI/CD апдейты в ОС скоро сыграют в ещё более злую шутку(злоумышленники троянца отправят по всем компам в качестве апдейта). Таким может отличиться или винда, или та же убунта.
Аноним 20/11/20 Птн 03:32:40 #185 №1860689 
>>1860686
Хакир введет строку на 32 гигабайта и взломает твой асус.
Аноним 20/11/20 Птн 06:38:01 #186 №1860733 
>>1860603
Во как.
>>1860320
Понятно.
>>1860301
Уже проверил. Указатель после инкремента до нулевого значения остается на том же адресе. Нулевое значение идет после последнего элемента в указателе.
Аноним 20/11/20 Птн 09:49:40 #187 №1860786 
>>1860733
>Уже проверил.
Погоду на Марсе если только.
После дереференса нулевого указателя у тебя UB. Сегодня твой компилятор и твоя ОС привели к такому результату, на другом железе у другого человека будет другое.
Аноним 20/11/20 Птн 09:56:16 #188 №1860792 
>>1860786
В строке же всегда есть указатель на нул.
Аноним 20/11/20 Птн 09:59:47 #189 №1860797 
>>1860792
Блять...
Аноним 20/11/20 Птн 11:15:18 #190 №1860854 
>>1860610
ты че слепой бля? Я же написал: не включал ноутбук несколько дней в последний запуск вайфай работает, щас нет. Да и это офк не первый раз проблемы с еблинуксом. После установки (офиц. версию с флешки, на чистый комп, без винды) у меня просто не регулировалась яркость экрана и не работала добрая половина клавиш Fn не работала. Ахуенная ОС. Только установил - сразу начинается пердолинг.
Аноним 20/11/20 Птн 12:41:02 #191 №1860942 
>>1860854
Кто ебёт, что ты несколько дней с этим выключенным ноутом делал, дебил? Может ты им в футбол играл, может уронил по пьяни. Ты нихуя не понимаешь в устройстве линукс, но уже имеешь наглость свой вонючий рот открывать. Программирование не для тебя, скройся.
Аноним 20/11/20 Птн 12:52:10 #192 №1860944 
>>1860942
>Ты нихуя не понимаешь в устройстве линукс,
Говно говна. С вкраплениями бриллиантов. Но бриллантов мало, а говна овердохуя.
Аноним 20/11/20 Птн 14:57:29 #193 №1861061 
>>1860567
> Почему с виндой я уверен что я сегодня запущу компьютер, и у меня все будет также как и вчера, а с линуксом я даже не уверен что у меня он вообще запустится нахуй?
Не будет. Даже с макосью. Хочешь стабильность - выключай автоапдейты и управляй пакетами сам, как делают все нормальные конторы. Или ставь hardenned gentoo centos
> захожу - отвалился вайфай. Просто так, сам собой)
Если ты починил, то ты знаешь почему он отвалился и как сделать чтобы он не отваливался. Если не знаешь, то ты ещё не починил.
Аноним 20/11/20 Птн 18:54:08 #194 №1861302 
pic1.png
pic2.png
pic3.png
Знаю, что вопрос не совсем тематический. Но все-таки тут происходит низкоуровневое дрочево, поэтому, надеюсь, кто-то может мне пояснить за следующую фигню. Судя по пик 2, uname -m система должна выдать мне cpu microarchitecture, в случае с i7 4800mq должно выводиться Haswell. Я же вижу i686. Какого хуя? Я же не капчую на проце из девяностых. uname -p должно выдать ISA. Опять же, какого хуя я вижу тут i686? Даже если учитывать, что проц запускается в Legacy mode (32 бит x86 архитектура), то разве самый последний ISA в случае x86 это i686? Есть же i786 (первые pentium 4 были 32-бит x86). С последней строкой вопросов нет -- это просто минимальное требуемое ISA для работы дистрибутива. Причем странно, что я вижу идентичный вывод в первой строке (пик 1) даже на amd ryzen. У него-то cpu microarchitecture тоже не может быть i686.
Аноним 20/11/20 Птн 18:58:09 #195 №1861306 
>>1861302
>случае x86 это i686
x86_64
Аноним 20/11/20 Птн 19:09:38 #196 №1861319 
>>1861306
Ты же видишь контекст. В данном случае имелось в виду, какой ISA является самым последним в случае с x86 32-бит.
Аноним 20/11/20 Птн 19:11:14 #197 №1861320 
>>1861302
cat /proc/cpuinfo

И не выёбуйся, если у тебя Linux.
Аноним 20/11/20 Птн 19:17:35 #198 №1861329 
>>1861320
>/proc/cpuinfo
Про это я знаю, но вопрос не стал менее актуален
Аноним 20/11/20 Птн 19:17:49 #199 №1861330 
>>1861319
>какой ISA является самым последним в случае с x86 32-бит
Погугли
Аноним 20/11/20 Птн 19:36:17 #200 №1861343 
>>1861330
Да не могу я найти ничего конкретно по этим моментам. Помимо этого, все еще интересуют все остальные вопросы, которые я задал в посте
dead per dead 20/11/20 Птн 19:48:48 #201 №1861352 
>>1861302
uname -m выдает тебе то, что авторы понимают под типом машины, не более того.
Аноним 20/11/20 Птн 19:52:14 #202 №1861356 
>>1861352
Хорошо, а что авторы могут понимать под типом машины в данной реализации в таком случае? Есть предположения?
sageАноним 20/11/20 Птн 19:56:08 #203 №1861359 
изображение.png
На связи снова дебик-кун. Жопная боль относительно рекурсии: https://pastebin.com/XfFzSv56
Код компилится, но после запуска неизбежно появляется сообщение об ошибке. Что делаю не так, хотя вроде следую той же логики в своем коде, и гугление дает похожие примеры.
Аноним 20/11/20 Птн 20:04:20 #204 №1861363 
>>1861356
> а что авторы могут понимать
Учи матчасть и не еби мозги анонам
Аноним 20/11/20 Птн 20:14:54 #205 №1861366 
>>1861359
Это нихуя не рекурсия, это - бесконечный цикл без условия выхода
sageАноним 20/11/20 Птн 20:20:25 #206 №1861372 
>>1861366
Чет не вдупляю, а как тогда эту шляпу написать правильно
Аноним 20/11/20 Птн 20:30:15 #207 №1861385 
>>1861372
В первом варианте есть условие, по которому функция не вызывается заново, в твоем - условия нет.
Аноним 20/11/20 Птн 20:58:35 #208 №1861422 
>>1861329
Нет никакого вопроса. Ты путаешь идентификацию системы и идентификацию модели процессора.
Аноним 20/11/20 Птн 21:05:30 #209 №1861429 
>>1861302
Я думаю что они просто тиснули что-то типа наименьшего общего элемента. Может быть у тебя система и не использует инструкции 786, кстати.
sageАноним 20/11/20 Птн 21:26:19 #210 №1861443 
изображение.png
>>1861385
Почему она должна заново вызваться? Для справки, рекурсии в учебнике посвящено пол темы, и за зацикливание ни слова, только весьма странное описание ее работы на пике. Мне вот допустим нужно чтоб в вызове себя она просто перемножала любое число и все
Аноним 20/11/20 Птн 21:31:21 #211 №1861446 
>>1861429
>Я думаю что они просто тиснули что-то типа наименьшего общего элемента.
Таковым является i386, и дистр действительно собран под эту ISA -- на i386, i486, i586, i686 и i786 заведется.
>Может быть у тебя система и не использует инструкции 786, кстати.
Вот я и не могу понять, а почему? Ведь 786 был 32-бит x86 несколько первых поколений пня четвертого. То есть почему бы в Legacy Mode процу не исполнять именно ISA i786? Почем проц работает в i686?
Аноним 20/11/20 Птн 21:33:01 #212 №1861447 
>>1861422
Но в lscpu белым по черному написано Architecture: i686. То есть проц работает в режиме ISA i686. Почему? Ведь последним ISA для 32-бит x86 архитектуры является i786
Аноним 20/11/20 Птн 21:38:28 #213 №1861449 
>>1861447
i686 - это под какую версию архитектуры x86 собрали бинари, команды процессора новее чем описанные в мануале pentium pro не должны использоваться. На этом все.
Аноним 20/11/20 Птн 21:42:50 #214 №1861451 
>>1861443
Поставь себя на место компьютера и выполняй по шагам.
foo()
{
x=1;
foo();
x=2; //сюда ты не дойдешь никогда
}
Аноним 20/11/20 Птн 21:56:59 #215 №1861459 
>>1861449
Хорошо, то есть ISA процессора в linux узнать невозможно? Ведь мы видим только i686 -- какая архитектура ISA минимально поддерживается ядром системы.
И тогда к чему относится вывод команды uname -i? Там вообще i386, это что?
Аноним 20/11/20 Птн 22:23:38 #216 №1861468 
>>1861459
Точную ISA? Это зависит от архитектуры, конечно же.
В принципе если в выхлопе увидел намек на x86, дальше можно чекать только поле Flags из файла /proc/cpuinfo, там в принципе описаны все фичи/инструкции которые поддерживает процессор. Ну или юзать cpuid.
Допустим архитектура i686, но в flags светится команда popcnt, на оригинальном i686 ее не было, а на твоём процессоре есть, ты можешь написать код который её дёргает, система не кинет тебе SIGILL, хоть и система рассчитана на работу на пентиум про.

Можешь ещё глянуть как написана утилита uname. https://github.com/wertarbyte/coreutils/blob/master/src/uname.c
По сути любое получение инфы, это какая-то уже predefined информация из ядра или glibc.
Аноним 20/11/20 Птн 22:26:47 #217 №1861469 
>>1861459
Обратись к поставщику своей ОС
Аноним 20/11/20 Птн 23:30:25 #218 №1861509 
>>1861468
Я имею в виду, что то, что мы получаем с помощью uname -m -- это информация о том, для какой архитектуры было скомпилировано ядро. В данном случае, для i686. uname -p (по идее) должно выдавать ISA проца. Так как система у нас 32 битка и скомпилена для i686, то проц должен работать, как минимум, в режиме i686 (что он и делает), однако, почему сам проц не работает в режиме i786 (который совместим с i686) который является самым последним и свежим набором команд 32-бит x86 архитектуры?
Я, вообще, правильно понимаю логику или где-то проебался? Я просто уже десяток топиков прочел, везде разные ответы. Также я все еще не понимаю, что выводит uname -i (в данном случае i386)
Аноним 21/11/20 Суб 01:56:40 #219 №1861573 
>>1861509
Если кому интересно, нашел ответ (см. часть про Fedora -- у меня стоит CentOS).
https://unix.stackexchange.com/questions/307955/uname-p-i-are-unknown
Аноним 21/11/20 Суб 05:08:11 #220 №1861621 
>>1861509
Ты логику не понял. Ядро хоть и собранно под i686, можешь на нем гонять инструкции от более новых версий isa если они доступны на данном процессоре. Собранное ядро под i686 не заставляет твой процессор гонять только инструкции для i686, не ограничивает в рамках одной isa, а на новые инструкции проц не будет кидать исключения с неправильной инструкцией.
Исключения наверное lm, который уже x86_64.
Такая тема на каком-то arm или powerpc вероятнее всего не сработает, считай это фичей х86
Аноним 21/11/20 Суб 05:29:38 #221 №1861626 
>>1852710 (OP)
Открыт закрытый форум сообщества Эльбрус
http://forum.elbrus.ru/
Аноним 21/11/20 Суб 10:07:39 #222 №1861717 
>>1852710 (OP)
Короч аноны. Говнокод лонгрид. Мучает меня вопрос...

Пишу под встраиваемки. Часто нужно свапать параметры при изменении в разные места. Например в ПЗУ и на дисплей. Или только на дисплей, а другое на ПЗУ, треть только на ПЗУ.
Четвертое имеет размер не в байт а в 4. И тд и тп.

Причем ок, когда подобной хуйни 5-6, 10, 20.. Можно обойтись пару тройкой энумов и нормально это распихивать и по адресам дисплея и по адресам ПЗУ.

А вот че делать когда их 100 и выше?
В один момент, у меня было 14 C файлов с const массивами, создававшими таблицу:
энум переменной - адрес ПЗУ, адрес дисплея, размер, флаги че с этим делать.
Причем ясен хуй файлы эти хранились отдельно от своих модулей, вместе, т.к. адреса расписывать руками заебнее, чем искать где переменные этого модуля.

Меня в один прекрасный момент это заебало, я решил - еепромы нынче дешевые пиздец и я могу просто ставить размером с ОЗУ, затеняя адреса на еепром.

И наговнокодил вот такую хуйню: https://ideone.com/vDFqUt
Что бы внутри непосредственно модуля, делать вот так: https://ideone.com/t3d5Hn
Сохранение переменной выглядит теперь вот так: VAR_Save(var_props[VAR_ENUM], new_value, NULL);
VAR_Save или Load собственно читает инфу о переменной по адресу в ПЗУ и выполняет действия требуемые в описании.
Например добавляет адрес и размер в очередь на отправку значений на дисплей или в ПЗУ.


Главная особенность этой хуйни, она почти не жрет ОЗУ, жрет столько сколько занимает непосредственно переменная.
При этом обеспечивает моментальную реакцию на изменение.
Это все заебись, только все равно не особо удобно. Если требуется внести изменения в таблицу - милости прошу перепахивать всю хуйню.
Далее, милости прошу соснуть хуйца, если забыл где-то сделать VAR_Save, а просто напрямую записал.

Какие варианты есть еще?
Прям отдельная аля база данных? Но это прям совсем хуйня, т.к.:
- жрет охуеть ОЗУ, на 1 байт будет оверхед из 5-6 байт. Учитывая что большинство переменных такие считай 5х требуемый размер.
- еще более медленное говно, пусть и не сильно.
- требуется либо динамическая регистрация, что еще сильнее разжирнит размер в ОЗУ, один хуй потребует таблиц адресов (ну или при каждых изменениях - сохраненные настройки ВСЕ, т.к. адреса поехали).
- снова городить таблицы внутри, что возвращает меня к первоначальной проблеме.
- один хуй останутся функции чтения\записи










Аноним 21/11/20 Суб 10:08:11 #223 №1861719 
>>1861717
>свапать
>свопать
быстрофикс.
Аноним 21/11/20 Суб 10:21:09 #224 №1861726 
>>1861717
У тебя обострение?
Аноним 21/11/20 Суб 10:42:40 #225 №1861743 
>>1861726
Не спал ночь думал. Решил анона спросить.
Аноним 21/11/20 Суб 13:50:26 #226 №1861858 
>>1861743
Не думаю что кто то вообще понял о чем идет речь.
dead per dead 21/11/20 Суб 15:59:02 #227 №1861956 
>>1861719
Все равно не понятно.
Аноним 21/11/20 Суб 19:57:26 #228 №1862190 
Сап, поясните за битовые сдвиги. Как их воплощать. И с чем использовать. Пару примеров было бы круто увидеть. И где можно прочитать про это?
Аноним 21/11/20 Суб 21:56:07 #229 №1862276 
>>1862190
Операторы такие, биты в регистрах сдвигают.
>> и <<
Операторы
Было в регистре число 5 = 101b
Сдвинул влево на 2 позиции, стало число 10100b = 20, сдвиг влево по сути умножение на 2(522).
Сдвинул на 2 позиции опять же число 101b, вышло 1b = 1, сдвиг вправо по сути деление на 2 целочисленно((5/2)/2).
Ещё есть сдвиги разные в процессорах, и сдвиги циклические. Всё это в инете почитаешь.
Аноним 22/11/20 Вск 00:47:55 #230 №1862385 
>>1861626
> Всего сообщений: 87
Аноним 22/11/20 Вск 00:52:05 #231 №1862390 
>>1862190
>Сап, поясните за битовые сдвиги.
сдвиг на один бит влево равносилен умножению на 2
сдвиг на один бит вправо равносилен делению на 2
сдвиг на два бита - на 4
сдвиг на три бита - на 8
etc.
Аноним 22/11/20 Вск 01:21:06 #232 №1862410 
Стикер
>>1862390
сдвиг на тридцать три бита - UB
Аноним 22/11/20 Вск 01:28:34 #233 №1862418 
>>1862390
Да
Аноним 22/11/20 Вск 10:05:05 #234 №1862535 
>>1862410
Нет с uint34_t и выше.
Аноним 22/11/20 Вск 11:24:54 #235 №1862571 
>>1862276
окей, то есть, каждый сдвиг на >> 1 будет умножать на число в два раза больше: 1>> 2 | 2 >> 4 |3 >> 8| 4>> 16 и т.п.
И на сколько можно двигать позиций максимум 32 я так понимаю?? И еще вопрос один глупый вопрос, как переводить с двоичной допустим в 10-ричную. Можно ли при помощи сдвигов это реализовать? Препод нам ляпнул про сдвиги, но объяснять не стал, сказал что еще рано (ебать рано - почти все темы ебнули, а про сдвиги так и не объяснил)
Аноним 22/11/20 Вск 13:33:04 #236 №1862697 
>>1862571
Зависит от размера переменной.

Второй вопрос смешной. Внезапно, представление целочисленных регистров и переменных только в битах(и байтах). Считай что запись десятичного числа в переменную уже переводит его в биты.
С битовыми сдвигами можно легко биты эти вывести.
Аноним 22/11/20 Вск 15:05:48 #237 №1862754 
>>1862571
> как переводить с двоичной допустим в 10-ричную.

А вот тут тебе уже без настоящего деленя не обойтись.
Вообще такого понятия как перевод из одной системы исчисления в другую для компьютера не актуален. Если закрыть глаза на существующую в 8086 десятичную арифметику, которая давно никем не импользуется. Поодумай эту мысль.

А теперь о том, как вывести на уэкран число в десятичном виде.

Берёшь массив char элементом на... ну 10 хватит.

Делишь переводимое число на 10. К остатку прибавляешь ASCII код нуля и пишешь в последний элемент массива. Проверяешь частное - если не ноль, то повторяешь операции, и записываешь в предпоследний элемент массива, иначе в массиве ASCII коды цифр преобразуемогоо числа.

Смотри пример. Число 0xC. При делении на 10 остаток равен трём и частное равно единице. Три записываешь, единицу делишь снова на 10, получаешь один в остатке и ноль частное. Вот у получилист у тебя цифры 3 и 1. Но поскольку ты записываешь их в массив с конца, то будет 1 и 3, т.е. 13.



Аноним 22/11/20 Вск 15:17:53 #238 №1862762 
>>1862571
> как переводить с двоичной допустим в 10-ричную
int number = 100500;
char str[16];
sprintf(str, "%d", number);
d тут значит decimal.
Попробуй ещё %o, %x. octal, hexadecimal
Аноним 22/11/20 Вск 15:24:07 #239 №1862763 
>>1862762
Такая-то тонкота. Как будто в тред скриптовых языков вкатился.
Аноним 22/11/20 Вск 15:37:41 #240 №1862770 
>>1862762
очень интересно, но ничего не понял
Аноним 22/11/20 Вск 15:43:08 #241 №1862772 
>>1862762
а соре, я слеп
Аноним 22/11/20 Вск 15:57:04 #242 №1862779 
>>1862762
Смешно, но это реально один из самых простых способов перевести число. Ещё можно itoa юзать, но она не стандарт.
Аноним 22/11/20 Вск 18:30:28 #243 №1862914 
>>1862754
Я так понимаю для 16 ричной системы будет 0xF?
Аноним 22/11/20 Вск 18:35:51 #244 №1862924 
>>1862914
Нет, это же 15. 0x10 = 16.
Аноним 22/11/20 Вск 18:41:02 #245 №1862937 
>>1862924
сложно
Аноним 22/11/20 Вск 18:43:13 #246 №1862941 
>>1862924
0xC - если 13, то по логике 16 - 0xf?
я в паутине не понимания
Аноним 22/11/20 Вск 18:45:00 #247 №1862945 
>>1862941
У него очевидная ошибка.
9 = 9
A = 10
B = 11
C = 12
Аноним 22/11/20 Вск 18:50:27 #248 №1862952 
>>1862945
окей, так. Мне в руки попала программа. Перевода с 10 в 16-ричную.
Так там мужик объясняет, что в конце нужно добавлять 0xf для перевода в 16-ричную. объясните мне что да как, за сегодня только еще больше путаницы произошло в моем мозгу. Возможно я что-то не так понимаю
Аноним 22/11/20 Вск 18:53:51 #249 №1862956 
1603912068018.jpg
1470833763484.png
>>1862952
Совершенно нет желания этим заниматься. Это разжевывается в любом учебнике информатики примерно в начале.
Аноним 22/11/20 Вск 18:53:55 #250 №1862957 
>>1862952
кому в общем верить? Каждый говорит по разному.
Аноним 22/11/20 Вск 18:56:45 #251 №1862959 
>>1862956
0123456789 A -10; B - 11; C - 12; D - 13; E - 14; F - 15; теперь понимаю. Спасибо
Аноним 22/11/20 Вск 18:58:07 #252 №1862961 
>>1862959
Да, F это самая большая однозначная цифра, после нее идет 10. Как в десятичной после 9.
Аноним 22/11/20 Вск 22:42:19 #253 №1863202 
>>1862945
Да, походу я сморозил глупость.
Аноним 22/11/20 Вск 22:51:59 #254 №1863209 
>>1862957

int val = 0x3e7211da;

int pos = 10;
char num[10];
num[--pos] = '\0';
do
{
num[--pos] = '0' + val % 10;
val /= 10;
}
while(val);

puts(num + pos)

Не проверял. Надеюсь что ты проверишь. Но я настолько крут, что в 99% этот код рабочий.

Аноним 23/11/20 Пнд 00:19:04 #255 №1863301 
Какая разница между statements и operator? Всё переводится как оператор, но я гуглил и нашел какую-то тухлую тему с форума по с++ где напиасли несколько постов непонятных, где ничего конкретно не сказали, только что у statements нет перевода "операция" вообще
Аноним 23/11/20 Пнд 00:52:12 #256 №1863322 
>>1863301
Statement переводится примерно как "выражение". Проблема в том, что Expression тоже переводится как выражение.
Гадать не нужно, все описано тут
https://en.cppreference.com/w/cpp/language/statements
Есть statement, скажем условно что это утверждение.
statement может быть разных видов, например expression то есть выражением.
Выражение (expression) состоит из operators с операндами как сказано тут
https://en.cppreference.com/w/cpp/language/expressions
Аноним 23/11/20 Пнд 01:29:36 #257 №1863343 
>>1863209
Как же красиво это наебнётся - любо-дорого посмотреть.
Аноним 23/11/20 Пнд 03:02:41 #258 №1863391 
>>1863322
>Statement переводится примерно как "выражение"
Проиграл с этого академика
Аноним 23/11/20 Пнд 04:45:56 #259 №1863409 
объясните вкратце, хуки легко детектятся какими-нибудь античит системами? можно ли со 100% гарантией только получать информацию от приложения (игры) и не получить бан, без попыток подмены адресов в его памяти? если что, я не читер и никакого преимущества над другими я не получаю в данном случае (игра вообще сингл, просто требует наличие аккаунта и подключение к сети). хочу сделать для себя небольшого хелпера, который структурировал бы инфу по моему алгоритму в отдельном процессе. хуки не писал ни разу
Аноним 23/11/20 Пнд 05:34:11 #260 №1863427 
>>1863209
Ты используешь do while, а значит по мнению местного шизика тебя б уволили к хуям собачьим.
Аноним 23/11/20 Пнд 06:17:19 #261 №1863432 
16061014405020.png
лежало значит у меня это кольцо неделю, потом поставил 30с и спустя еще одну неделю его купила дедайка
???
??
?
кто кого наебал?
Аноним 23/11/20 Пнд 07:31:38 #262 №1863440 
>>1863432
Ты его. Это лютый оверрейт который форсят авторы гайдов чтобы лутать орбы с лохов.
Аноним 23/11/20 Пнд 07:33:42 #263 №1863441 
>>1863440
>>1863432
Уходите со своим непонятным языком
Аноним 23/11/20 Пнд 08:37:54 #264 №1863454 
>>1863441
да я мисанул по треду. расскажи про хуки тогда >>1863409
Аноним 23/11/20 Пнд 08:40:45 #265 №1863456 
>>1863440
хз, я просто увидел топ моды и поставил цену на обум. я уже и забыл про это кольцо, еще немного и сдал бы вендору. не знаю ни один билд, кому бы такая солянка зашла даже за 30с. с другой стороны, уже конец лиги, мб месяца полтора назад на него еще и был бы спрос...
Аноним 23/11/20 Пнд 12:07:03 #266 №1863563 
Решаю задачки на сайтах типа кодварса. Не могу разобраться со строками. Перестановка порядка слов к примеру, или перевернуть слово и потом переставить порядок. Или тот же малок для алокаций памяти для массива из указателей на строки. Короче голова болит, что делать? Может есть какие нибудь ресурсы или книжки где все разжуют, без решений.
Аноним 23/11/20 Пнд 12:39:23 #267 №1863583 
>>1863563
Тетрадка в клетку. Пишешь в клетки слова по буквам. Все диды так делали.
Аноним 23/11/20 Пнд 12:54:20 #268 №1863587 
>>1863583
А разве наши диды не ваевали, когда где-то в США диды строки в тетрадки писали?
Аноним 23/11/20 Пнд 13:05:40 #269 №1863597 
>>1863583
Оки попробую.
Аноним 23/11/20 Пнд 13:09:29 #270 №1863602 
>>1863583
А по малокам книжки есть какие?
Аноним 23/11/20 Пнд 13:15:15 #271 №1863607 
>>1863409
с 100% гарантией ты вообще нихуя не сделаешь.

что за игра?
Аноним 23/11/20 Пнд 13:50:52 #272 №1863626 
>>1863607
path of exile
сначала мне интересно было понять, как работает эта тулза https://github.com/SnosMe/awakened-poe-trade
она каким-то образом определяет предмет, на который ты ткнул в gui самой игры вплоть до получения свойств предмета, и показывает его цену на игровом рынке. покопался я в исходниках и нашел какие-то намеки на использование хуков, но целиком сам процесс именно этого приложения понять не смог. при этом, за это приложение не банят и на офф форуме игры его обсуждают/советуют + стримеры им пользуются.

сейчас я хочу сделать что-то подобное, только чтобы получать информацию о текущих квестах в игре. это нужно для того, чтобы бегать сюжетку максимально быстро и не сворачивать игру на гайд - не тратить время на это. игра построена так, что можно делать параллельно задачи в игре, даже если игра еще сама не говорит о них, а чтобы делать такое без гайда, надо прокачать героев 100 наверное и тупо вызубрить этот монотонный процесс. т.е. суть моего помощника в том, чтобы в реальном времени транслировать, если не в сам процесс игры, то в процесс этого приложения информацию о следующем действии. для этого надо как-то обрабатывать состояния квестов в процессе игры и получать от них информацию.
Аноним 23/11/20 Пнд 14:50:03 #273 №1863677 
>>1852710 (OP)
Что и чему позволяет осуществять наличие файловых дескрипторов, если есть PID'ы + fork(), open(), exit() и т.д ? Никакие гуглы и книжки по-програмиздски человеческим языком пояснить не могут.
Аноним 23/11/20 Пнд 15:10:35 #274 №1863706 
>>1863677
Из всего что ты перечислил, только open() имеет отношение к файловым дескрипторам. Собственно open() при открытии файла и возвращает этот дескриптор, с помощью которого ты осуществляешь операции с открытым файлом.

Аноним 23/11/20 Пнд 15:19:32 #275 №1863716 
>>1863706
Куда возвращает? Родительскому процессу? А дальше что происходит, род. процесс этот дискриптор параметром в его (родительских) вызовах использует? Для чего?
Аноним 23/11/20 Пнд 15:29:51 #276 №1863726 
>>1863716
Неправильные вопросы задаёшь. Это плохо.
>Куда возвращает?
Функция open() возвращает файлоый дескриптор или -1, если по какой-то причине не удалось открыть файл.

>Родительскому процессу?
Тому процессу, который вызывает функцию open()

> А дальше что происходит, род. процесс этот дискриптор параметром в его (родительских) вызовах использует?

Дальше ты используешь этот дескрпитор в функциях write и read, f так же close()/

>Для чего?
Чтобы писать в файл и читать из файла.

fork() это другое - это порождение нового процесса путём его клонирования. После него у тебя будет два одинаковых процесса и каждый из них будет иметь одинаковые открытые файлы.

exit() вообще не использует файлоые дескрипторы, а просто завершает программу. При этом ОС сама закроет все открытые файлы. Но лучше это делать явно.

Аноним 23/11/20 Пнд 15:36:44 #277 №1863730 
>>1863726
Т.е процесс 1 вызывает open() для открытия файла 1, и если у вызова(?) этого не получается, то он возвращает процессу 1 дескриптор -1? А дальше при попытке вызвать read() или write() процессом 1 в них (read/write) передаётся уже полученный дескриптор -1 в качестве аргумента?
Аноним 23/11/20 Пнд 15:38:46 #278 №1863732 
>>1863730
Если тебе функция open вернула -1, зачем дальше пытаться read/write? Выводишь сообщение об ошибке пользователю retry/abort либо завершаешь прогу.
Аноним 23/11/20 Пнд 15:53:29 #279 №1863742 
>>1863732
В таком случае в какой раздел вирт. адресного диапозона процесса записывается дескриптор? Получается когда процессор до него (дескриптора) доходит, он что-то вроде джампа к инструкциям завершению/приостановке процесса делает?
Аноним 23/11/20 Пнд 15:55:09 #280 №1863743 
>>1863742
А, блять, опять троллинг.
Аноним 23/11/20 Пнд 15:57:16 #281 №1863745 
>>1863743
Блять нет. Я реально не понимаю.
Аноним 23/11/20 Пнд 16:00:45 #282 №1863750 
>>1863745
Зачем тогда тебе программирование, да ещё на Си?
Аноним 23/11/20 Пнд 16:05:28 #283 №1863752 
>>1863750
Затем что я наверное способен это понять если буду досканально представлять что где и как происходит. Просто реально, куда именно внутри процесса дискриптор записывается? Как именно он на исполнение/своппинг/завершение повлиять может?
Аноним 23/11/20 Пнд 16:23:32 #284 №1863777 
>>1863752
Расскажи нам, что такое файловый дескриптор. Ты же читал какие-то книжки, а в книжках это объясняют. А если не читал или не понял, то почему дегенератские двачи должны тебе объяснить.
Аноним 23/11/20 Пнд 16:29:50 #285 №1863782 
>>1863777
"Проще говоря, когда вы открываете файл, операционная система создает запись, представляющую этот файл и хранящую информацию об этом открытом файле. Таким образом, если в вашем OS открыто 100 файлов, то в OS будет 100 записей (где-то в kernel). Эти записи представлены целыми числами, такими как (...100, 101, 102....). Этот номер записи является дескриптором файла. Таким образом, это просто целое число, которое однозначно представляет открытый файл в операционной системе. Если ваш процесс открывает 10 файлов, то в таблице процессов будет 10 записей для файловых дескрипторов."

То что это число выдаваемое процессам я понял, но как именно они на процесс влияют? Каким образом говорят процессу выполнять/невыполнять какие-то вызовы? Хуй мне на ротешник в разъяснений вопроса прилетает везде.
Аноним 23/11/20 Пнд 16:46:33 #286 №1863802 
>>1863782
> читает какие-то машпереводы
Вот оно че.
> Каким образом говорят процессу выполнять/невыполнять какие-то вызовы?
Это просто число, данные. Дальше процесс может передавать его как аргумент в другие системные вызовы. Что такое вызов функции, ты представляешь?
Аноним 23/11/20 Пнд 16:58:32 #287 №1863810 
>>1863391
Так он неправ или что? Я вообще ничего не понимаю
Аноним 23/11/20 Пнд 17:02:07 #288 №1863816 
>>1863802
>Что такое вызов функции, ты представляешь?
Не очень. Знаю что функция main все остальные вызывает, а её в свою очередь ещё какой то процесс (то-ли cli, толи инит). Да и честно сказать про стек подзабыл, помню что туда всё заносится по принципу FIFO до 1-8Мб, по-этому лучше указатели в случае динамических структур/массивов использовать.
Всё из-за того что практики по темам нихуя. Даже найти себе задачи проблема. А без этого всего и читать/понимать код/api не выйдет.
Аноним 23/11/20 Пнд 17:06:02 #289 №1863819 
>>1863810
В теле функции находятся statemets, один из них - expression statement:
[expression] ;
Expression составляется из переменных, констант и операторов, которые к ним применяются.

Аноним 23/11/20 Пнд 17:41:44 #290 №1863854 
>>1863816
Ебать у тебя каша в голове.
crt0 вызывает функцию main. (JFYI)

Короче, у тебя уникальный случай. Вот бывыают пустые головы, которые ничего не знают. Но у тебя в голове куча обрывочных сведений, смешавшихся в кашу. Такого феерического пиздеца надо ещё поискать. Тебе проше забыть всё что знаешь и начать изучать Си с "чистого листа".


Я бы, честно говоря, охуел бы и застрелился в голову, если бы внезапно узнал что ты мой студент.

Аноним 23/11/20 Пнд 18:05:08 #291 №1863893 
>>1863854
А ты Вы преподаете?
Аноним 23/11/20 Пнд 18:07:58 #292 №1863898 
>>1863854
>начать изучать Си с "чистого листа"
Может и так. Только вероятно опять из головы велетит от отсутствия практики.
Аноним 23/11/20 Пнд 20:15:35 #293 №1863975 
>>1863898
Прату попробой только делай задания после каждой главы.
Аноним 23/11/20 Пнд 20:38:10 #294 №1863991 
>>1863563
> Короче голова болит, что делать
Кодить на нормальном языке, от себя могу посоветовать python.
Аноним 23/11/20 Пнд 20:45:46 #295 №1863998 
>>1863991
tolsto
Аноним 24/11/20 Втр 10:24:44 #296 №1864336 
>>1863991
От себя советую джаваскрипт.
Недавно, впервые в жизни, подумал прикоснуться к сетевой параше - написать серверок с передачей данных в удаленный браузер. На чем такое делать - в душе не ебу, но вспомнил, что уже пользуюсь удобным серверком из одного экзешника, в свойствах которого было написано "node.js". Так что решил тоже на ноде писать за неимением других мыслей. Проиграл с этого джаваскрипта. Пишешь хуйню от балды, на чистой интуиции, и оно работает! Просто ор выше гор. Язык почти соответствует парадигме, где беспардонно пишешь "сделай заебись" и норм.
Аноним 24/11/20 Втр 10:36:47 #297 №1864340 
>>1864336
Зачем ты удолил браузер? Восстанови.
Аноним 24/11/20 Втр 19:48:39 #298 №1864743 
2020-11-24 184140-Window.png
2020-11-24 184157-Window.png
2020-11-24 184220-Window.png
Помогите ньюфагу-хеллоуворлдщику.
Кароч хочу я чтобы была возможность в строки писать на любом языке. Однако при компиляции я постоянно ловлю пикрелейтед 1. Но при этом OnlineGDB прекрасно с этим справляется. Почему так, и самое главное, можно ли это пофиксить?
Гугл подсказал следующее решение (пик.3), но оно какое-то геморное, не говоря уже о том, что я пока понятия не имею что это вообще такое.
Аноним 24/11/20 Втр 19:56:53 #299 №1864744 
1484112959430.png
>>1864743
Сменяй кодировку в терминале
Гугол говорит просто добавить в settings.json
"terminal.integrated.shellArgs.windows": ["-NoExit", "/c", "chcp.com 65001"],
Аноним 24/11/20 Втр 20:10:43 #300 №1864747 
>>1864744
Спасибо.
Аноним 24/11/20 Втр 20:37:07 #301 №1864772 
>>1864744
Уточню что кодовая страница 65001 это utf-8 (не знаю насколько полноценно), мало ли тебе это важно.
Аноним 25/11/20 Срд 03:21:53 #302 №1865063 
>>1864743
>хочу я чтобы была возможность в строки писать на любом языке
Хотеть не вредно.
В си строк нет, есть только байты. Так что, если тебе нужны строки, ты сам должен их сделать из байтов. Иными словами, не понимая что такое строки и как работают разные кодировки, ты ничего не напишешь. Можешь разве что высрать говно, которое будет работать только у тебя на компьютере, а у остальных кракозяблы и краши.
>оно какое-то геморное, не говоря уже о том, что я пока понятия не имею что это вообще такое
Вот съеби и не возвращайся пока не поймешь. Или съеби программировать на питоне. В любом случае - съеби, пока что ты не туда зашел, петушок. Си не тот язык, где можно писать на авось сам не зная что.
Аноним 25/11/20 Срд 04:39:25 #303 №1865093 
>>1865063
>в си нет строк
В юнитфактори, быдло, подменяющее понятия.
покормил
Аноним 25/11/20 Срд 10:27:59 #304 №1865185 
vim.jpg
bash.jpg
Аноны привет. Подскажите, что я жопой прочитал.
1)fork() возвращает родителю PID ребёнка, ребёнку возвращается 0;
2)У ребёнка меняется PPID (Parent Process Id) на PID родителя.
Почему меня PPID ребенка не равен пиду родителя ?
Аноним 25/11/20 Срд 11:07:39 #305 №1865208 
>>1865185
Наверно родитель уже успел схлопнуться.
Аноним 25/11/20 Срд 11:17:24 #306 №1865217 
>>1865185
>люних
Аноним 25/11/20 Срд 11:18:32 #307 №1865218 
>>1865217
я залетел не в тот тренд?
Аноним 25/11/20 Срд 11:48:43 #308 №1865230 
>>1865185
Удали свой абортуалбох.

main()
{
int pid = fork();
if (pid == 0)
printf("%d %d %d\n", pid, getpid(),getppid());
else
printf("%d %d %d\n", pid, getpid(),getppid());
}


$ ./a.out
4868 4867 4834
0 4868 4867
Аноним 25/11/20 Срд 12:00:08 #309 №1865241 
>>1865208
Этот прав, ppid сына в юниксе тогда становится 1.
Аноним 25/11/20 Срд 12:19:48 #310 №1865263 
obeme.jpg
>>1865230
лол, спасибо анон. А что это получается мой виртуалбокс мне паскудит?
Этож сколько явного/неявного гемороя я хапану из за него.


/a.out
8769 8768 7373
0 8769 1490
Аноним 25/11/20 Срд 12:22:57 #311 №1865267 
image.png
>>1865263
Аноним 25/11/20 Срд 12:39:33 #312 №1865276 
>>1865263
> 8769 8768 7373
> 0 8769 1490
7373 должен быть пид твоей оболочки, а кто такой 1490?
Там должен быть пид родителя (8768) или 1.
Аноним 25/11/20 Срд 12:53:36 #313 №1865288 
>>1865263
> А что это получается мой виртуалбокс мне паскудит?
Нет, тебе врут, запусти pstree
Аноним 25/11/20 Срд 13:21:56 #314 №1865320 
>>1865276
pydof systemd = 1490.
с помощью pgrep методом тыка нашел что 7373 - pid баша.
получается что 7373 пид-баша, когда процесс родитель схлопнулся раньше времени(хер знает почему), как сказал анон >>1865208,
потомок вместо того чтобы получить себе в ппид пид-баша-7373, получает в свой ппид пид-системд-1490.
Аноним 25/11/20 Срд 14:07:23 #315 №1865366 
изображение.png
Хай! Начинающий программист, задание вывести строку если в она оканчивается на 3 кириллических символа. Встал вопрос, почему программа не работает. Вообще не понимаю почему, мог бы кто объяснить?
#include <stdio.h>
#include <string.h>
#include <wchar.h>
#include <stdlib.h>

wchar_t get_wcs() {
wchar_t buf[81] = {0};
wchar_t
res = NULL;
int len = 0;
int n = 0;
do {
n = wscanf(L"%80[^\n]", buf);
if (n < 0) {
if (!res) {
return NULL;
}
} else if (n > 0) {
int chunk_len = wcslen(buf);
int str_len = len + chunk_len;
res = realloc(res, sizeof(wchar_t) (str_len + 1));
wmemcpy(res + len, buf, chunk_len);
len = str_len;
} else {
wscanf(L"%
c");
}
} while (n > 0);

if (len > 0) {
res[len] = '\0';
} else {
res = calloc(1, sizeof(wchar_t));
}
return res;
}

int main() {
wchar_t s = NULL;
s = get_wcs();
int n = wcslen(s);
if (/
1/(L'А' <= s[n-3]) && (s[n-3] <= L'я') && /2/(L'А' <= s[n-2]) && (s[n-2] <= L'я') && /3*/(L'А' <= s[n-1]) && (s[n-1] <= L'я'))
fputws(s, stdout);
}
Аноним 25/11/20 Срд 14:09:25 #316 №1865368 
>>1865366
если что, работать обязательно нужно с unicode символами
Аноним 25/11/20 Срд 14:11:14 #317 №1865370 
twoouts.jpg
>>1865320
кароче поставил задержку sleep(1) все начало работать корректно.

Если кому интересно.
1) Создается процесс батя ppid=7373, pid=8768, child_pid = 8769
2) Создается процесс ребенок ppid = 8768, pid = 8769, value = 0
3) запускаем наше файло. Мой терминал думает что программа завершена - выводит результат процесса бати, после чего думает что все закончено - уничтожает процесс бати, после чего ребенок получает в свой ppid pid systemd, сверху по иерархии процессов.

Единственное я не понял, почему два a.out? мы же делаем форк от текущего процесса где мы находимся т.е от баша. Должен же быть баш родитель, а a.out чайлд. Я же верно прочитал по схеме, что из баша создается один родитель и один ребенок(красным обвел), т.е за одну функцию fork() мы создаем +2 новых процесса?
От родителя создаем еще одного родителя, а от второго ребенка? wtf?)
Аноним 25/11/20 Срд 14:41:48 #318 №1865389 
>>1865370
Оболочка делает fork+exec и создает процесс a.out.
Процесс делает fork и создает копию.
Аноним 25/11/20 Срд 14:42:18 #319 №1865391 
>>1865370
Ты это по какому-то учебнику выполняешь?
Аноним 25/11/20 Срд 14:45:14 #320 №1865393 
>>1865063
Вот это бабах неосилятора.
Аноним 25/11/20 Срд 14:59:03 #321 №1865397 
>>1865366
Зачем усложнил?
Нужно в три раза проще.
Аноним 25/11/20 Срд 15:08:06 #322 №1865403 
>>1865397
Подскажешь?
Аноним 25/11/20 Срд 15:09:43 #323 №1865405 
>>1865368
Что такое unicode символы?
dead per dead 25/11/20 Срд 15:31:17 #324 №1865420 
>>1865397
https://pastebin.com/PW2bTW3f
Аноним 25/11/20 Срд 15:33:45 #325 №1865422 
>>1865405
UTF-8 кодировка, ну или UTF16, UTF-32
Аноним 25/11/20 Срд 15:34:59 #326 №1865424 
>>1865420
Сорян, забыл уточнить, но мне нужно через библиотек wchar.h
Аноним 25/11/20 Срд 16:02:38 #327 №1865443 
>>1865391
Основы операционных систем карпов, коньков.
https://intuit.ru/studies/courses/2249/52/info
Аноним 25/11/20 Срд 16:05:05 #328 №1865444 
>>1865391
теоретическая часть у конькова/карпова откровенно дерьмовая. Теорию по Таненбауму.
Аноним 25/11/20 Срд 16:50:47 #329 №1865494 
Подскажите позязя
почему условие на '\n" не срабатывает?
while (arrayString != '\n'){
scanf("%c", &arrayString);
printf("Âû ââåëè ñèìâîë %d: %c\n", i, arrayString);
i++;

//arrayString = '\n';
};
Аноним 25/11/20 Срд 17:19:38 #330 №1865511 
>>1865494
Ну потому что arrayString у тебя указывает всегда на одно и то же место? Ведь ты только i увеличиваешь.
Аноним 25/11/20 Срд 20:01:03 #331 №1865638 
>>1865511
Макаба съила квадратные скобки ииндексы и кавычки у \n,, но символы считываются потом выводятся но условие в while не срабатывает. Если напрямую присвоить (под комментом) цикл прерывается. С-free win XP.
Аноним 26/11/20 Чтв 02:55:17 #332 №1865815 
image.png
Анон я написал свой первый мейкфал. ну нахуй это говно пиздец просто параша невыносимая
Аноним 26/11/20 Чтв 03:54:07 #333 №1865824 
>>1865815
А там разве нет никаких фреймворков ил типа того?
Аноним 26/11/20 Чтв 04:10:39 #334 №1865829 
>>1865815
А чем cmake вообще плох?
Аноним 26/11/20 Чтв 04:28:04 #335 №1865833 
>>1865829
Незнаю, но у меня жирный проект и специфичный дурной компилятор и я его всю жизнь ИДЕ билдил и там всегда пиздос был в мейкфайле. Но тут чет пришлось подразобрать его и вытащить сборку из IDE.

>>1865824
Есть но я стремался ибо вообще не ебал что они должны делать и как.
Конечно буду теперь их изучать. Вообще мейк такой блевотный, что надо что то безмейковое искать.
Аноним 26/11/20 Чтв 04:30:00 #336 №1865834 
>>1865833
>Вообще мейк такой блевотный, что надо что то безмейковое искать.
Есть Scons правда я не уверен что пидором не назовут
Аноним 26/11/20 Чтв 06:52:19 #337 №1865854 
>>1865829
Ничем, он просто не нужен, как и make.
Пользуются этим только шизоидные пердуксоиды, зачем-то пишущие виндовые программы линуксными инструментами. У некоторых голова из жопы выросла, что поделать, бывает.
Аноним 26/11/20 Чтв 07:42:03 #338 №1865860 
>>1865833
Мне cmake попроще кажется чем написание скрипта под make. Не агитирую за него, просто стало интересно что аноны думают о нём.
>>1865854
А как тогда приделывать CI/CD? Или надо на хосте поднимать IDE для сборки и тестирования проекта? Или обязательно системы сборки должны быть headless-IDE по сути которые должны хавать файлы проектов?
Аноним 26/11/20 Чтв 09:47:55 #339 №1865901 
2020-11-26103613.jpg
2020-11-26104031.jpg
2020-11-26104411.jpg
>>1865494
Бамп вопросу. С do while так же не срабатывает.
Аноним 26/11/20 Чтв 09:58:31 #340 №1865905 
>>1865901
Дауны, куда вы лезете без ВО
Аноним 26/11/20 Чтв 09:59:14 #341 №1865908 
>>1865901
Ты тред читал? Do while юзать нельзя, в уважаемых конторах за такое увольняют. Так Анон говорил!

В примере с do while ты чекаешь в условии цикла следующий элемент, ведь перед проверкой бахнул i++, естественно не будет работать
Аноним 26/11/20 Чтв 10:15:18 #342 №1865916 
>>1865901
что такое \n?
Аноним 26/11/20 Чтв 10:26:40 #343 №1865925 
>>1865905
Никуда не лезу.
ВО есть, читаю Прату.
>>1865908
Спасибо помогло.
Аноним 26/11/20 Чтв 10:34:34 #344 №1865928 
>>1865916
новая строка
Аноним 26/11/20 Чтв 10:35:54 #345 №1865932 
>>1865928
это какой-то символ?
Аноним 26/11/20 Чтв 11:12:42 #346 №1865958 
>>1865905
Шиз всравший 5 лет, спок.
Аноним 26/11/20 Чтв 13:29:03 #347 №1866046 
>>1865932
Да.
Аноним 26/11/20 Чтв 13:34:18 #348 №1866052 
>>1866046
а не два?
Аноним 26/11/20 Чтв 13:35:24 #349 №1866055 
>>1866052
А так вообще четыре
"\n"
Аноним 26/11/20 Чтв 13:39:12 #350 №1866057 
>>1866055
просто в некоторых файлах энтер cr lf добавляет
Аноним 26/11/20 Чтв 14:00:23 #351 №1866068 
>>1866057
А зачем они это делают? Вот дураки.
Аноним 26/11/20 Чтв 14:06:46 #352 №1866074 
>>1866057
> cr
> lf
Ну вот видишь и тут по два символа.
Аноним 26/11/20 Чтв 18:30:42 #353 №1866285 
>>1865925
>ВО есть
У тебя справка от психиатра должна быть если ты такое осилить не можешь
Аноним 26/11/20 Чтв 19:16:41 #354 №1866315 
IMG20201126231549543.jpg
Ну шо, ребзя, вам задачка на вечер.
Аноним 26/11/20 Чтв 19:47:43 #355 №1866347 
>>1866315
Ну тут однозначно счетом древних русов.
Аноним 26/11/20 Чтв 23:30:35 #356 №1866566 
>>1866285
Какое такое?
Аноним 26/11/20 Чтв 23:39:14 #357 №1866571 
1606423151177.mp4
Анон, впервые в жизни начал ковыряться с драйвером устройства на линухе (Xilinx xdma), драйвер представляет до юзерапи символьное устройство (функции read(), write, seek). Мой юзерский код делает что-то типа int rc=read(fd, buf, 32*4096). Буфер выделяю через posix_memalloc.
Анон, я вообще не понимаю как это отследить, но когда я делаю прием в отдельном потоке, нон-стоп зацикливая чтение, (даже без синхронизации с основным), программа весело кидает segmentation fault в какие-то произвольные моменты времени.
Я вообще не имеею опыта в программировании ядра, как всю эту херь отследить? Есть ли какие-то ограничения на все эти виртуальные памяти ОС и потоки? Что такое AIO, как его можно использовать (драйвер поддерживает)?
Аноним 27/11/20 Птн 00:51:35 #358 №1866618 
>>1866571
>нон-стоп зацикливая чтение, (даже без синхронизации с основным), программа весело кидает segmentation fault в какие-то произвольные моменты времени.

А если буфер уменьшить?
А если читать в основном потоке, а писать из другого?
А если драйвер кривой и не позволяет одновременные чтение и запись?
Аноним 27/11/20 Птн 10:26:35 #359 №1866700 
>>1866571
Не поня тно. Эсли в read пытаться читать не туда, программа получит ошибку, а не сигнал.
Аноним 27/11/20 Птн 11:08:42 #360 №1866728 
>>1866571
А в стектрейсе что при падении?
Аноним 28/11/20 Суб 11:47:11 #361 №1867634 
>>1863209
Я не уверен, но ведь это просто показ ascii номера? Не?
Аноним 28/11/20 Суб 11:51:23 #362 №1867637 
>>1863209
но все равно спаибо!
Аноним 28/11/20 Суб 15:10:05 #363 №1867722 
>>1867634
Показ десятичного числа.
А в памяти числа всё равно в виде нулей и единиц хранятся, Представление отображения имеет смысл как раз при вываоде.
Но значительно лучше массив и начальное значение pos сделать размерность хотя бы 16 элементов, а не 10. Иначе там очень хитро стек рушится. Так рушится, что устанешь отлавливать ошибку.

Аноним 28/11/20 Суб 16:04:09 #364 №1867742 
>>1867634
Нет. Там складывают символ '0' и число.
Аноним 28/11/20 Суб 22:35:02 #365 №1868003 
Помоги исправить какой-то древний код, чтобы не выдавало ошибки.
http://www.cpp.sh/4e545
Аноним 29/11/20 Вск 00:16:36 #366 №1868116 
>>1868003
Почему первые инклбды закавычены?
Аноним 29/11/20 Вск 01:01:17 #367 №1868164 
>>1868116
Так длл инклюдятся
Аноним 29/11/20 Вск 10:31:55 #368 №1868280 
>>1852710 (OP)
Не так давно натыкался на новые книги по Си, года 2018-2020-го. Теперь вспомнил, но найти уже не получается. Гуглить книги по Си очень сложно, из за однобуквенного названия. Знает кто какие новые книги есть? Все статье в топку. И книги Праты тоже. У него даже про компилятор ничего не написано. Не было интернета и я толком не мог разобраться как из объектного файла сделать бинарник.
Аноним 29/11/20 Вск 11:26:04 #369 №1868300 
>>1868280
>книги
На хуй они тебе нужны? Если ты школочмоня то пойдет любая
Аноним 29/11/20 Вск 11:28:41 #370 №1868301 
>>1868280
> как из объектного файла сделать бинарник
Подобное описано в документации к твоему компилятору. Язык никак не регулирует такое.
Аноним 29/11/20 Вск 12:04:43 #371 №1868329 
>>1852710 (OP)
Как померить сколько сокет соединений будет держать на одной машине?
Аноним 29/11/20 Вск 12:07:33 #372 №1868332 
>>1868329
65,535
Аноним 29/11/20 Вск 12:09:09 #373 №1868334 
>>1868329
TCP - 1 сокет на accept входящих(слушающий), 1 сокет - на каждое 1 соединение.
UDP - 1 сокет на тонну соединений работает.

А если тебе нужно узнать сколько будет тачка соединений держать - утилиту пиши или ищи готовую.
Аноним 29/11/20 Вск 12:10:02 #374 №1868335 
>>1868301
Охуенно, писать книгу по Си на 1000 страниц и не написать 10 строк о том как компилировать. И тут же адвокат прибежал защищать. Говно книга.
Аноним 29/11/20 Вск 12:10:46 #375 №1868336 
>>1868332
>65,535
Откуда цифры? Я хочу ноду померять. Один чувак на конференции сказал, что она только 2к держит. Не верится. Да и давно это было, в 2015.
Аноним 29/11/20 Вск 12:11:34 #376 №1868337 
>>1868334
>А если тебе нужно узнать сколько будет тачка соединений держать - утилиту пиши или ищи готовую.
Так я и спрашиваю как померять, какие утилиты есть и т.п.
Аноним 29/11/20 Вск 12:13:07 #377 №1868339 
>>1868300
Пошел нахуй хуесос. Встреться ты мне, посмотрел бы как бы ты в лицо это сказал, хуета, шкальник ебучий.
Аноним 29/11/20 Вск 12:17:41 #378 №1868340 
>>1868337
Мы тут на си погромируем, а не утилитами занимаемся.
Тем более вообще неясно что ты там тестировать собрался.
Аноним 29/11/20 Вск 12:21:09 #379 №1868344 
>>1868340
Особо одаренный? Вы все тут говоришь такие? Измерить сколько сервер на ноде сможет держать сокет соединений.
Аноним 29/11/20 Вск 13:00:03 #380 №1868364 
>>1868344
Иди нахуй отсюда, еблан.
По тебе видно что ты недалёкий клоун.
Аноним 29/11/20 Вск 13:18:49 #381 №1868370 
>>1868364
На хуй твоя жопа хороша. Не знаешь ответа на вопрос - молчи. Не хуй выебываться. Школота ебаная.
Аноним 29/11/20 Вск 13:36:51 #382 №1868384 
>>1868370
Не, ну ты реально дебил. Согласен с тем аноном.
Ты действительно думаешь, что оскорбляя тут кого-то, тебе кто-то поможет?
Аноним 29/11/20 Вск 13:42:15 #383 №1868388 
>>1868384
Он и другие первые начали. Я нормально задал вопрос.
Аноним 29/11/20 Вск 13:42:37 #384 №1868389 
>>1868344
>на ноде
Тебе в JS-тред, петушок.
Аноним 29/11/20 Вск 14:06:51 #385 №1868400 
>>1868389
Хуй соси, шкальник.
Аноним 29/11/20 Вск 14:09:03 #386 №1868404 
>>1868400
>пук
Не рвись так, мартышка.
Аноним 29/11/20 Вск 14:17:33 #387 №1868409 
>>1868404
Клал я на тебя, идиот блядь. Только если ты думал, что вы тут молокососы можете всех хуесосить, то ты сильно ошибся. Я вас сам так заебу, что в лес убежите.
Аноним 29/11/20 Вск 15:40:29 #388 №1868482 
Посоветуйте книги по сетевому программированию на си под линукс
Аноним 29/11/20 Вск 16:31:18 #389 №1868536 
>>1868003
Бамп. Помогите. У меня самого не получается. Исправление одной ошибки ведёт к несовместимости типов данных в других местах, с невозможностью преобразовать типы.
Аноним 29/11/20 Вск 16:33:18 #390 №1868539 
>>1868536
Читать умеешь? Что в выводе написано? Написано 4:20: fatal error: stdafx.h: No such file or directory, как переводится?
Аноним 29/11/20 Вск 16:36:09 #391 №1868542 
>>1868539
Этот код мне уже кто-то чуть переделывал без stdafx.h и с добавлением stdio, но я потерял тот код, а сделать сам так же без stdafx.h не могу.
Аноним 29/11/20 Вск 16:36:41 #392 №1868544 
>>1868536
Это windows специфичный код. В крестах не спец, как и в винде, но думаю ты не скомпилишь в этом онлайн шеле.
Аноним 29/11/20 Вск 16:39:21 #393 №1868550 
>>1868544
У меня VS2019 есть, онлайн компилятор просто чтобы дать ссылку на код. Могу ссылку прям на совсем всё скинуть, если надо. https://drive.google.com/drive/folders/0B0tDS9ufZC7EVmFCb05OZ0pRZVk
Аноним 29/11/20 Вск 16:40:46 #394 №1868553 
>>1868544
И да, я вижу, что по моей ссылке есть stdafx.h, но я не вижу смысла его подключать, если можно сделать точно так же и без него.
Аноним 29/11/20 Вск 16:44:26 #395 №1868558 
>>1868550
А, не, не та ссылка.
https://drive.google.com/drive/folders/0B0tDS9ufZC7EQXB0ZVRTYWFHV2s
Аноним 29/11/20 Вск 17:00:37 #396 №1868563 
#include<stdio.h>
#define bit8 0x80
#define bit7 0x40
#define bit6 0x20
#define bit5 0x10
#define bit4 0x08
#define bit3 0x04
#define bit2 0x02
#define bit1 0x01

int n;
int a[1000];
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
scanf_s("%d", &a[i%10]);
}
for (int i = 0; i < n; i++) {
printf("%x : ", (unsigned char)a);
printf("%x", (a & bit8) ? 1 : 0);
printf("%x", (a & bit7) ? 1 : 0);
printf("%x", (a & bit6) ? 1 : 0);
printf("%x", (a & bit5) ? 1 : 0);
printf("%x", (a & bit4) ? 1 : 0);
printf("%x", (a & bit3) ? 1 : 0);
printf("%x", (a & bit2) ? 1 : 0);
printf("%x |", (a & bit1) ? 1 : 0);
}
соре за тупые вопросы, но я опять тут. Почему он не выводит больше 2 символов в 16 ричной?
Аноним 29/11/20 Вск 17:16:37 #397 №1868567 
>>1868563
все понял, глупая ошибка была
Аноним 29/11/20 Вск 21:12:11 #398 №1868881 
1598774790167.jpg
>>1868563
> bit8
> 0x80
> bit8
Аноним 29/11/20 Вск 22:06:49 #399 №1868916 
>>1868881
https://prog-cpp.ru/c-operation/ может я что-то не так понял?
Аноним 30/11/20 Пнд 06:30:42 #400 №1869078 
snap002663.png
>>1868916
Охуительные истории у этой бабы.
Аноним 30/11/20 Пнд 07:18:19 #401 №1869081 
>>1869078
Это конечно пиздец.

Но если компилятор выдаёт ошибку, то можно ему помочь.
= (int*)500;
Аноним 30/11/20 Пнд 13:00:48 #402 №1869179 
Есть утилита на C под *nix. При сборке разными способами всякий раз ошибка fatal error: sys/sysctl.h: No such file or directory. Файл sys/sysctl.h в системе есть. Возможно не по тому адресу, в котором ищется при сборке. Как фиксить? Ссылки на утилиту ниже

https://github.com/satori-com/tcpkali
https://aur.archlinux.org/packages/tcpkali/
Аноним 30/11/20 Пнд 13:23:26 #403 №1869186 
>>1866315
Никто здесь эту задачу сам не решит. Это перечислительная комбинаторика, ее почти никто не изучает даже в вузах, по ней мало книг и вообще инфы на русском.
Аноним 30/11/20 Пнд 13:38:46 #404 №1869191 
>>1868332
Молодец, я в курсе, что sizeof((struct sockaddr ∗)NULL->sin_port) == sizeof(uint16_t). Что сказать-то хотел?
Аноним 30/11/20 Пнд 13:43:15 #405 №1869193 
>>1868563
Децибел, блядть, позиция бита в слове - величина сдвига единицы, как и индекс в массиве - оффсет от начала. Откуда вы беретесь в Си-треде?
Аноним 30/11/20 Пнд 13:44:01 #406 №1869194 
>>1868482
берьош сокет, ебошиш коннекшн, погроммируеш... фантазия кончилась?
Аноним 30/11/20 Пнд 13:46:36 #407 №1869195 
image.png
>>1868384
>оскорбляя тут кого-то, тебе кто-то поможет
>называет кого-то дебилом
Аноним 30/11/20 Пнд 17:05:43 #408 №1869310 
>>1869193
раз такой умный, кинь мне книги по которым учился. Буду благодарен. Нам препод нихуя не объясняется. Учимся сами по себе.
Аноним 30/11/20 Пнд 17:28:00 #409 №1869327 
>>1868335
>Охуенно, писать книгу по Си на 1000 страниц и не написать 10 строк о том как компилировать.
Я тебя понимаю, но на самом деле очень-очень зависит от твоей ОС, компилятора, среды разработки и т.п.

Хотя если пишешь книгу для нулевых, было бы полезно небольшой экскурс в этой части дать, на примере пары компиляторов, например.
Аноним 30/11/20 Пнд 17:31:07 #410 №1869329 
>>1868332
Всё зависит он настроек ОС и как конкретно коммутация устроена. Можно и миллион держать, в принципе.

И, естественно, ещё сильно зависит от того, как обработчик соединений реализован. Он может тупо много не тянуть.
Аноним 30/11/20 Пнд 17:36:21 #411 №1869332 
>>1869310
>раз такой умный, кинь мне книги по которым учился. Буду благодарен. Нам препод нихуя не объясняется. Учимся сами по себе.
Вот увидишь он сдуется. Или посоветует дерьмо какое нибудь. Сам небось кроме хеловорлдов ничего не писал.
Аноним 30/11/20 Пнд 17:39:39 #412 №1869335 
>>1869332
Надеюсь на обратное. Хочу верить в людей.
Аноним 30/11/20 Пнд 17:47:13 #413 №1869339 
>>1869329
>И, естественно, ещё сильно зависит от того, как обработчик соединений реализован. Он может тупо много не тянуть.
Это самое главное. Для этого и хочу тесты провести. Нашел одну из лучших утилит для тестирования сокетов и вебсокетов. Но блин, не смог собрать на ядре 5.8, ее не обновляли уже 3 года. Вот я писал уже >>1869179

Хз что делать. Сам я пока вряд ли смогу хотя бы приблизиться к пониманию как пофиксить. Автор и другие мейнтейнеры забили на все, почти все живут зарубежом и работают в крутых компаниях, видать им не до этого.

Можешь что то посоветовать, литературу, ссылки, краткий алгоритм как изучать системное программирование на линуксе? Думаю форкнуть проект и ковыряться чтобы понять как устроен. Опыт программирования есть, но на высокоуровневых языках. Трудостей не боюсь, самообучаться умею, но так как область для меня новая и если можно так выразиться олдскульная (средний возраст тех кто пишет на си под линукс думаю больше 40 лет), то пока не понял как составить план обучения.
Аноним 30/11/20 Пнд 18:01:52 #414 №1869353 
>>1869186
Ну собственно решить ее можно вообще с 0 знаний, тупо a x 100 + b x 10 + c и гонять цифирки между ними, и считать количество перестановок, только нахуя? Дрочево уровня делить на бумаге в столбик.
Аноним 30/11/20 Пнд 18:06:39 #415 №1869354 
>>1869339
На си такие утилиты писать то ещё удовольствие.

Смотря что ты хочешь оттестировать вообще. Я игрался для себя, тестировал, сколько соединений можно держать. Я точные цифры не помню, довольно быстро начинаются проблемы с ограничениями ОС, но они же легко снимаются.

Реально проще тестировать с nodejs или python-asyncio, или go, вместе с докером, чтобы много виртуальных хостов создать с разными адресами.

На Си вообще не стоит в это лезть, если только вот совсем-совсем не нужно именно на Си. Потому что там начинаются нюансы, что либо треды, которые тормозные, либо всякие sselect/kqueue, либо какие-нибудь специфичные внешние либы вроде libevent. Скорее всего будет последнее, иначе ты рухнешь очень рано, но сюрприз, другие платформы тоже построены на этих библиотеках и благодаря этому работают очень быстро.

Поэтому, если ты не пишешь свой nginx, работаешь с сетью, то реально, не лезь в Си, не нужно. Он не для этого. Он для байтоёбства, а не для обслуживания системных вызовов ОС. Посмотри на Go, если хочется низкого уровня, на nodejs/asyncio, если хочется высокого уровня.
Аноним 30/11/20 Пнд 18:41:21 #416 №1869377 
>>1869354
Ты наверное не совсем понял. Утилитой tcpkali я хочу протестировать как раз ноду, go, и другие языки. Так как собрать ее не получается, решил углубиться в си. Все равно рано или поздно придется начинать. Более верхнеуровневые языки и платформы я использую, они мне понятны, пришло время опуститься ниже. И как раз появилась интересная задача. Писать свой load tester с нуля я не буду. Да и не за чем. Это будет сложнее чем разобраться с tcpkali. Ее писали опытные телекомщики. Сам я так не напишу. А вот посмотреть их решения могу. Думаю это принесет пользу.
Аноним 30/11/20 Пнд 18:42:45 #417 №1869381 
>>1869353
Эталонное решение должно выглядеть как рекурентное соотношение, а реализация соответственно как рекурсивная фукнция. Тупо в лоб можно конечно решить, но это не инженерный подход.
Аноним 30/11/20 Пнд 18:49:07 #418 №1869389 
>>1869381
В нормальном программировании никто рекурсиями не пользуется.
Аноним 30/11/20 Пнд 18:50:38 #419 №1869391 
Поясните, пожалуйста, за перспективы С/С++ в научно-технических приложениях. Сам я - НИИшник-металлофизик, на работе пользуюсь Пайтоном, вольфрамовской Математикой и различными МКЭ-системами, но вот решил вкатиться в что-то более низкоуровневое. Больше тяготею к С, так как он проще, а у меня и так есть чем ебать мозги помимо программирования, но не хотелось бы заскочить в поезд, который уже никуда не идет (поэтому Фортран и не рассматриваю). В общем, какие я пока что вижу варианты варианты:
1) С
2) С++
3) не ебать мозги совсем, ознакомиться с Cython и дальше изучать Матлаб.

Продублирую в соседний тред.
Аноним 30/11/20 Пнд 18:55:54 #420 №1869397 
>>1869389
Уроки учи школьник. В некоторых языках нет циклов, только рекурсия. Комбинаторные алгоритмы эталонно решаются исключительно рекурсией. Такова их природа. Они рекурсивны. И только если возникает необходимость, рекурсивное решение оптимизуют каким либо образом.
Аноним 30/11/20 Пнд 18:59:27 #421 №1869403 
>>1869397
>В некоторых языках
Вот и пиздуй в треды таких """"языков"""", че ты тут забыл?
Аноним 30/11/20 Пнд 18:59:50 #422 №1869404 
>>1869391
Под эти задачи С просто не подходит
В С++ будешь катиться минимум года два, но оно того может стоит. Будучи икспертом в крестах, можно выйти на некст лвл хай лвл программирования даже относительно питона и вмазаться лиспохаскельными биндами. Но ты по-хорошему должен решить, нужно ли оно тебе вообще и достаточно ли ты биг достаточно ли брейн
Cython и матлаб вариант, если ты уже присмотрел какие-то вакансии, вник в них и собираешься сесть в офис на следующие N лет

https://www.youtube.com/watch?v=8X69_42Mj-g
Аноним 30/11/20 Пнд 19:08:11 #423 №1869414 
>>1869403
Тебя забыл спросить, уёбок. Ты тут не у себя дома чтобы командовать. Брысь нахой.
Аноним 30/11/20 Пнд 19:10:17 #424 №1869418 
>>1869381
>Эталонное решение должно
Кому должно? Откуда ты это высрал? Нахуй путешествуй.
Аноним 30/11/20 Пнд 19:10:53 #425 №1869420 
>>1869404
>Под эти задачи С просто не подходит
Под какие именно? По численным методам книги есть, на рисерчгейтах мужики пишут, что С/С++/Фортран - стандартная троица более низкоуровневых языков для физики, один написал, что у них в универе твердотельщики переходят с Фортрана на С.
>Cython и матлаб вариант, если ты уже присмотрел какие-то вакансии, вник в них и собираешься сесть в офис на следующие N лет
Тащемта, я нацеливаюсь на академ-карьеру, даже в случае эмиграции. Просто погромирование мне особо и не интересно, тот же Пайтон я использую в основном для анализа экспериментов и постройки графиков (может еще вкачусь в машинное обучение, тоже сейчас используется в науке и технике).
Аноним 30/11/20 Пнд 19:12:51 #426 №1869424 
>>1869397
Тогда почему я при рекурсивном решении ловлю stack overflow, если это так нативно должно быть?
Аноним 30/11/20 Пнд 19:18:23 #427 №1869432 
>>1869418
Дебил, такие задачи решает раздел математики перечислительная комбинаторика. Решений подобных задач существует уже масса. Почти все они сводятся к рекурсии. Хотя, кому я это объясняю...
Аноним 30/11/20 Пнд 19:19:04 #428 №1869435 
>>1869424
Потому что ты долбаеб быдло-кодерок
Аноним 30/11/20 Пнд 19:23:02 #429 №1869437 
>>1869435
Но я ж закодил академическое рекурсивное решение. Как так?
Аноним 30/11/20 Пнд 19:25:41 #430 №1869441 
>>1869381
Эту задачу в принципе можно решить на бумажке, на бумажке подобрать какое-нибудь решение. Скорее всего и предполагалось, что на бумаге решать будут.

А в целом не понятно, что они называют перестановкой мешков.

Всего существует две пары симметричных решений
(2, 7, 8, 1, 5, 6, 3, 9, 4)
(3, 5, 8, 1, 7, 4, 2, 9, 6)
(4, 3, 9, 1, 5, 6, 7, 8, 2)
(6, 2, 9, 1, 7, 4, 5, 8, 3)
, полный перебор это 362880 вариантов (9!), даже желания в такой ситуации нет заморачиваться на более умные варианты.
Аноним 30/11/20 Пнд 19:33:22 #431 №1869447 
>>1869441
"умный" вариант в таких задачках обычно сводиться к тому что можно доказать положение пары чисел, ну например у тебя всегда 1 на одном месте, потому что произведения дают не больше двух сотен, это уже 8! - 40 тысяч вариантов, так что да, умничать вообще не тянет.
Аноним 30/11/20 Пнд 19:35:51 #432 №1869448 
Как убрать дублирующиеся опции в приложений с командной строкой? Вот в Линуксе вводишь повторяющийся патерн из опций он выбирает только оригинальный вариант и один. Неужели мне нужно писать сортировочную функцию, искать дубликаты и удалять из строки?
Аноним 30/11/20 Пнд 19:37:05 #433 №1869449 
>>1866315
Непонятно как измеряется тяжесть перестановок.
Например самый левый мешок тащить на место самого дальнего явно тяжелее, чем поменять любые две соседние пары мешков, однако же по кривому тексту задачи выходит не так.
Аноним 30/11/20 Пнд 19:39:41 #434 №1869451 
>>1869448
Нехуя не понял покажи пример на практике
Аноним 30/11/20 Пнд 19:45:58 #435 №1869454 
>>1869447
Ну вот о том и речь, что дольше заморачиваться и уродовать код, чем перебрать.

Вот если на бумажке решать, то очевидно, что 5 не может быть последней цифрой в числе, может быть только второй в двухразрядном или трёхразрядном.

Очевидно, что 1 может быть только старшим или средним разрядом трёхзначного числа.

Очевидно, что трёхразрядное число чётное.

Ну и ещё ряд ограничений можно быстро вывести. Примерно так на бумаге все эти варианты разными переборами и решаются. Помню много подобных развлекательных задачек из детства.

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

Рекурсивное решение в принципе может работать быстро, потому что можно автоматом отсекать огромные ненужные ветви, в принципе было бы оправдано, если бы задача была не 9!, а 16! например.

Но морально тяжело придумывать что-то умное, когда в лоб работает за доли секунды. Ну будет работать не 0.1 секунды, а 0.001, какая разница?
Аноним 30/11/20 Пнд 19:47:50 #436 №1869458 
>>1869451
Короче в Линуксе когда вводишь прогу ls и кучу опции типа -lslslllslsllaallRSss лишние опции отбрасываются остаются только -lsaRS вот я думаю как мне убрать дублирующиеся опции?
Аноним 30/11/20 Пнд 19:57:54 #437 №1869470 
>>1869458
Ну можешь писать структу или ассоциативный массив какой-нибудь

Options options = {recursive: false, colored: false}

for (int i = 0;argv...) {
switch argv[i
case "r"
options.recursive = true
case "c"
options.colored = true
}
Аноним 30/11/20 Пнд 20:00:39 #438 №1869473 
>>1869454
Тут программистский интерес только если написать решатель таких задач, который сам будет выводить и доказывать такие ограничения.
Аноним 30/11/20 Пнд 20:07:52 #439 №1869479 
>>1869391
> не ебать мозги совсем
this
Аноним 30/11/20 Пнд 21:06:05 #440 №1869558 
>>1869441
>что они называют перестановкой мешков.
Я думаю что одновременно можно только два числа менять местами,
тут не нужен полный перебор, от начальной комбинации надо идти, и найти такую к которой ведет меньшее число шагов.
Аноним 30/11/20 Пнд 22:27:07 #441 №1869614 
>>1869448
getopt/getopt_long в помощь наверное, если тебе это нужно
Аноним 01/12/20 Втр 00:32:21 #442 №1869671 
>>1852726
Потому что в си есть хоть какая-то модульность (можно использовать библиотеку скомпилированную другим компилятором) и её можно приклеить к любому другому языку в отличие от C++, для C++ ты все библиотеки должен собирать сам
Аноним 01/12/20 Втр 00:43:28 #443 №1869686 
>>1869671
Какую то чушь порешь.
Аноним 01/12/20 Втр 01:39:11 #444 №1869713 
>>1869671
Какой отборный бред, аж проняло.
extern "C"
Аноним 01/12/20 Втр 01:47:04 #445 №1869718 
>>1869671
С написан на С++
Аноним 01/12/20 Втр 02:10:30 #446 №1869721 
>>1869713
>>1869686
В С есть стандартизованый ABI, а в С++ нет. Ты не то что в другом языке, ты в самом С++ библиотеку скомпилированную другим компилятором не прилинкуешь.
Аноним 01/12/20 Втр 02:11:52 #447 №1869723 
>>1869397
> В некоторых языках нет циклов, только рекурсия.
Такими языками никто не пользуется
Аноним 01/12/20 Втр 02:59:39 #448 №1869739 
>>1869721
Я понимаю о чём ты говоришь, но ты несёшь какую-то дичь.
Именно что сишный объектный код легко линкуется со всем чем можно. Соответственно, функцию, написанную на Си, легко вызвать отовсюду.

Вызвать С++ функцию из Си ты скорее всего не сможешь. Во всяком случае без правки руками промежуточного asm и ручного name mangling. Еслм очень захотеть, то можно, но дорого и неуниверсально. Я бы смог, но не вижу в этом смысла - гораздо проще объявить функцию как extern "C" и тогда ты без проблем сможешь вызвать её из Си.
Аноним 01/12/20 Втр 03:08:28 #449 №1869741 
>>1869739
>гораздо проще объявить функцию как extern "C" и тогда ты без проблем сможешь вызвать её из Си.

Угу. Но там один такой жЫрный нюанс. Я эксперементировал с линковой С и С++ и обнаружил что если к Си проекту линковать библиотеку, где используются статические классы с конструкторами, то эти конструкторы не вызываются. Если С++ библиотека использует статические объекты с конструкторами, то эти объекты не будут проинициализированы. И с большой вероятностью программа упадёт при вызове функций из этой библиотеки.
Аноним 01/12/20 Втр 03:39:12 #450 №1869746 
>>1868409
Пошел ты нахуй, ЖСор, я ANSI C продюссер.
Аноним 01/12/20 Втр 03:40:56 #451 №1869747 
>>1869193
Из JS/Smoothie-треда.
Аноним 01/12/20 Втр 03:42:42 #452 №1869748 
>>1869081
Не, подожди, лучше так:
int suction = (int) 1488;
Аноним 01/12/20 Втр 03:44:37 #453 №1869749 
>>1869748
Та сука, ебанная макака, сожрала все звезды блядь!
Аноним 01/12/20 Втр 04:45:43 #454 №1869756 
>>1869741
Тут ты прав. Но с одним но - этот подводный камень довольно известный. И фиксится тем, что нужно файл где имеется main() функция собрать С++ компилятором.
Аноним 01/12/20 Втр 08:33:26 #455 №1869782 
>>1869721
В стандарте C нет ABI, что ты несешь? Ну ка слинкуй виндовую DLL с линуксовым .so
Аноним 01/12/20 Втр 09:04:30 #456 №1869787 
>>1869437
Оцени расход стека в своей задаче, академик. Сравни с размером стека в своей системе.
Аноним 01/12/20 Втр 09:08:54 #457 №1869789 
>>1869458
Чем мешают?
Аноним 01/12/20 Втр 09:14:42 #458 №1869790 
>>1869458
Звучит как bad practice, лучше падать с ошибкой, ведь скорее всего это опечатка типа rm rf
Аноним 01/12/20 Втр 09:40:09 #459 №1869800 
>>1869441
Естественно на бумаге, это из журнала 1938 года.
Прикол в том, что меняя местами первые же два мешка (7 и 2) ты получаешь как бы подсказку к дальнейшим действиям, т.к. произведение - 156 похоже на число в центре.

>>1869449
Никак, это ты себе надумал уже.

>>1869186
Это задача на перебор всех вариантов (мутаций), классика программирования. Ну, если решать брутфорсов, а по-другому и не надо, если у тебя есть компьютер.
Я решил не сам, к сожалению, спиздив на форуме часть кода для перебора всех вариантов. На моём руйзене за 0.26 секунды перебирает.
Аноним 01/12/20 Втр 09:54:10 #460 №1869809 
>>1869800
>Никак
Кек, математикошизики как всегда обломались о реальность с тяжелыми мешками.
Аноним 01/12/20 Втр 11:16:13 #461 №1869851 
>>1869809

Шизик это товарищ из этого поста: >>1869449, которому понадобилось измерять некую "тяжесть перестановок", хотя об этом никто не просил. Сказано просто наименьшее число перестановок, и всё.
Аноним 01/12/20 Втр 11:18:00 #462 №1869854 
>>1869851
Какой же ты аутист, любо дорого смотреть.
Аноним 01/12/20 Втр 16:37:22 #463 №1870084 
>>1869809
Сукапиздец. Да ты же чернорабочий от программирования.
Аноним 01/12/20 Втр 17:48:52 #464 №1870147 
>>1866315
На крестах решается где то строк в десять, т.к. есть std::next_permutation искаропки.
Аноним 01/12/20 Втр 18:14:38 #465 №1870184 
>>1869723
>Кукарек, кококо, кудах-кудах
Аноним 01/12/20 Втр 18:19:09 #466 №1870197 
>>1870184
Весь тред борщём зальешь.
Аноним 01/12/20 Втр 19:23:25 #467 №1870304 
>>1870147
Вот сука, опять си у крестов соснули!
Аноним 01/12/20 Втр 22:33:10 #468 №1870450 
https://youtu.be/bqz65_YfcJg
Аноним 02/12/20 Срд 05:21:14 #469 №1870608 
>>1870450
Ссаное зумерье, не видело магнитофонов и не слышало диалап-модемов.
Аноним 02/12/20 Срд 06:49:05 #470 №1870625 
>>1870608

Как что то хорошее. Ждать по минуте загрузку страницы, по 5-10 минут 1 трек в мп3 хуевого качества. Месяц качать 1 исоху и то если у какого провайдера халявные тарифы с халявными часами есть.

Спектрумофаги тоже при малейшей возможности допаивали 128к + бетадиск и забывали про мафон как про страшный сон, а то и вовсе выкидывали к хуям свой спек ради самой сраной 286 списанной с пожелтевшим пластиком и в чужих засохших соплях.
Аноним 02/12/20 Срд 06:51:17 #471 №1870627 
>>1870625
>по минуте загрузку страницы
Это кокие ты там при диалапе страницы по минуте загружал?
Аноним 02/12/20 Срд 08:06:27 #472 №1870649 
>>1870625
>Месяц качать 1 исоху
Что еще спизданешь. Я качал за месяц несколько исох для дримкаста. Со скоростью вообще не проблма, проблема была в цене за время соединения.

Но возвращаясь к видео. Что особенного в загрузке через звук? Тогда все компьютеры писали и читали со звуковых носителей, да и интернет тоже через диалап звуком. Восхищаться таким будет только тупорылое зумерье без мозгов.
Единственное особенное, что у этого хуя есть доступ к писалке винила. Вот лучше бы покахзал этот станок, чем банальную хуету.
Аноним 02/12/20 Срд 09:00:54 #473 №1870665 
>>1870649
>Тогда все компьютеры писали и читали со звуковых носителей, да и интернет тоже через диалап звуком. Восхищаться таким будет только тупорылое зумерье без мозгов.
Я помню по радио передавали звуком игори и программы, я вот этим до сих пор восхищаюсь.
Аноним 02/12/20 Срд 11:19:53 #474 №1870702 
>>1870665
У тебя очень слабы видимо познания в низком уровне. Даже со своими я не вижу ничего охуенного, а только кучу гемороя, наихуевшейшую скорость и ощущение облома, если кто то пернул в эфир во время передачи.

В этой хуйне нет ничего сложного вообще, даже матана никакого ненужно.
Аноним 02/12/20 Срд 11:23:25 #475 №1870708 
>>1870702
>>1870665
>>1870649
А вот чего меня действительно завораживает это представление, как во времена люди пердолились с соснолькой.
Как писали утилиты для собственных нужд на ходу и ебали ОС в режиме реального времени.

А с другой стороны ... ну нахуй такое.
Аноним 02/12/20 Срд 11:23:59 #476 №1870710 
>>1870702
Вообще то нужен, частотная модуляция же.
Аноним 02/12/20 Срд 11:28:27 #477 №1870718 
>>1870710
Что бы что? Передатчик перерисовать с книжки и сделать?
Тебе не разработать новый принцип с нуля нужен, а воспроизвести под себя, 99% конструкторских формул в электронике ни содержат ничего за рамками школьной программы.

Аноним 02/12/20 Срд 11:29:36 #478 №1870721 
>>1870718
>>1870710
Хотя ок. Я радейки не строил сам, может херь несу. Считал импульсные источники питания и всякую силовую ебань.

Да, формулы бывают жирные охуительно, но там ничего сложнее деления\умножения.
Аноним 02/12/20 Срд 16:50:19 #479 №1870963 
>>1870710
Какая модуляция, там же не эфирная радиопередача, несущие не нужны.
Аноним 02/12/20 Срд 20:31:19 #480 №1871222 
>>1852710 (OP)
Есть у кого опыт самостоятельного написания сетевого стека языка? В языке который я хочу использовать, из сетевого стека только socket api. Хочу навернуть поверх что нибудь чтобы можно было удобно писать для веба. Как пример посмотрел сорцы пакета /net в Golang. Код на Go вроде легко читается и сорцы с комментариями. Литературу бы по реализации сетевых протоколов. Кто нибудь знает такую? Хз как гуглить
Аноним 02/12/20 Срд 20:45:59 #481 №1871229 
>>1870963
В смысле? Вроде речь как раз шла про передачу в радиоэфире.
Аноним 02/12/20 Срд 20:48:06 #482 №1871233 
>>1871222
> сетевые протоколы
> над сокетами для веба
Выбери что-то одно.
Аноним 02/12/20 Срд 21:02:15 #483 №1871244 
>>1870963
>там же не эфирная радиопередача
А кокая?
Аноним 02/12/20 Срд 22:23:29 #484 №1871321 
>>1871233
Wat? По твоему веб работает не на сетевых протоколах? Сетевые протоколы для веба не на сокетах строятся? Опять кукареки лезут туда в чем ничего не понимают.
Аноним 03/12/20 Чтв 00:56:48 #485 №1871466 
>>1871222
>Литературу бы по реализации сетевых протоколов. Кто нибудь знает такую?

https://tools.ietf.org/rfc/index
Аноним 03/12/20 Чтв 00:59:01 #486 №1871469 
>>1871466
Неистово двачую, реально лучший сайт когда хочешь без смузи и ебли в жoпу почитать как работает какой-то smtp/socks/etc протокол.
Аноним 03/12/20 Чтв 01:14:24 #487 №1871471 
>>1871321
>Опять кукареки лезут туда в чем ничего не понимают.
Кукарек тебя делал.
Вы, пидоры, своими поделками поверх HTTP уже весь Интернет засрали.
Аноним 03/12/20 Чтв 01:35:06 #488 №1871480 
>>1871222
>В языке который я хочу использовать, из сетевого стека только socket api.
>>1871471
>поверх HTTP
>HTTP
Какой нахой http, только сокеты есть, пшел вон идиот.
Аноним 03/12/20 Чтв 02:09:47 #489 №1871491 
>>1871321
По-моему ты не хочешь что-то писать, а хочешь поговорить о том, чтобы что-то написать. Тонны материалов по этому поводу и реализаций протоколов на разных языках. Бери конкретный протокол и разбирайся с ним.

Спецификации есть, разборы того, как писать есть.

В принципе для самообразования можно.
Аноним 03/12/20 Чтв 02:15:14 #490 №1871494 
>>1871480
Хочет писать для WEBа, но не поверх HTTP.
Ты даже не понимаешь чего ты хочешь.
Тебе наверняка первый ответил дядя, который копался в заголовках IP и TCP. Ты этого не осознал и начал на него наезжать. Ты точно не быдло?

Короче, пиздуй читать что такое HTTP - https://tools.ietf.org/html/rfc2616
и что такое HTTPS - https://tools.ietf.org/html/rfc2660
что такое TLS - https://tools.ietf.org/html/rfc8446

И пару дней не пиши сюда, пока все не забудут какой ты идиот.


Аноним 03/12/20 Чтв 02:32:21 #491 №1871496 
>>1871494
Он хотел ссылок на что-то разжёванное по разным протоколам каким-нибудь. Ну есть там ещё для доменных имён, всякие socks5 и что-нибудь ещё, что с веб связано, но не http при этом.

Но я думаю так, если чел хочет потрепаться, то он пишет на двач или ещё куда. Если хочет именно делать, он пишет на гугл или аналоги. Всё просто.

Когда что-то конкретно не понятно, тогда другая история.

Материалов реально как грязи, там сначала надо понять, как интернет вообще работает, какого рода протоколы для чего используются.
Аноним 03/12/20 Чтв 07:05:13 #492 №1871527 
Сап, аноны, вопрос про юникс-программирование. Есть character device устройство в системе (в /dev лежит), устройство представляет собой кусок памяти с информационными полями - статусы, полезная инфа и проч.
Анон, как постоянно считывать эти быстро обновляемые данные? Тупо вызывать read() для этого файлового дескриптора? Или есть в ОС какие-то следящие механизмы что-ли kpoll? Что требуется от драйвера? В нем реализованы функции чтения, записи, aio_read/write, seek.
Аноним 03/12/20 Чтв 08:25:24 #493 №1871542 
>>1871494
Нахуй мне твой текстовый уебищный http? Только долбоебы поверх http делают протоколы. MQTT, websocket - намного более продвинутые, более легковесные и производительные, и легче в реализации.
Аноним 03/12/20 Чтв 09:52:20 #494 №1871554 
>>1871527
Устройство должно сигналить для poll/select, когда в нем меняется содержимое. Скорее всего, это не сделано, остаётся перечитывать.
Аноним 03/12/20 Чтв 10:55:41 #495 №1871591 
>>1871527
Либо делать polling через select/poll/epoll, если в char dev в структуре file_operations имеется обработчик для poll. Либо через сигналы делать и SIGIO, опять же если в char dev в той же структуре есть обработчик для fasync. Но с сигналами заебешься.
Аноним 03/12/20 Чтв 12:58:22 #496 №1871649 
>>1871554
>>1871527
Большое спасибо, это ценная информация для меня
Аноним 03/12/20 Чтв 15:08:11 #497 №1871767 
>>1871542
>Только долбоебы поверх http делают протоколы. MQTT, websocket - намного более продвинутые,
websocket работает поверх HTTP
Аноним 03/12/20 Чтв 15:38:06 #498 №1871803 
>>1871767
>websocket работает поверх HTTP
Чиво блядь? Может у долбоебов и так конечно.

WebSocket — протокол связи поверх TCP-соединения
https://ru.wikipedia.org/wiki/WebSocket
Аноним 03/12/20 Чтв 16:08:04 #499 №1871831 
>>1871803
Ты читал свою статью дальше содержания?
Аноним 03/12/20 Чтв 16:24:18 #500 №1871843 
>>1871831
В принципе он прав, WebSocket это не http, он мимикрирует под http, принимается вебсервером как http, то потом включается в действие опция upgrade и протокол подменяется.

Классический http работает по схеме запрос-ответ, другого не предусматривает, а вебсокеты двунаправленные, и с дополнительными субпротоколами ещё. При этом какие-то специфичные фишки классического http в вебсокетах не доступны.

Можно это назвать расширением HTTP (по аналогии с HTTP2), можно назвать другим протоколом. Правильнее всё-таки другим протоколом называть.

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

Но спор ни о чём на самом деле.
Аноним 03/12/20 Чтв 16:29:52 #501 №1871847 
>>1871843
Вопрос не в том как называется, а как работает. TCP бинарный протокол, HTTP текстовый. В примерах видно что данные передаются каким то текстом типа base64, то есть +оверхед по размеру +оверхед по упаковке распаковке. Есть ли там чисто бинарная передача?
Аноним 03/12/20 Чтв 16:33:03 #502 №1871852 
>>1871847
Хватит хуйню городить. По вебсокетам можно передавать бинарные данные. Нормальные люди так и делают. Вебсокеты не про текст, а про транспорт.
Аноним 03/12/20 Чтв 16:34:15 #503 №1871854 
>>1871852
Я и емейлом могу бинарные данные через base64 передавать, что сказать то хотел?
Аноним 03/12/20 Чтв 17:04:58 #504 №1871883 
>>1871847
Как ты передашь данные в двоичном формате без кодирования и декодирования?
Аноним 03/12/20 Чтв 17:08:11 #505 №1871887 
1590825260805.png
>>1871883
А я тебе о чем говорю?
Аноним 03/12/20 Чтв 17:48:58 #506 №1871935 
>>1871887
По хттп происходит хендшейк, который включает соответствующую фичу браузера, дальше он не используется.
Это как ты ембеддишь swf в хтмл и дальше работает отдельный плагин, другая технология, встроенная в браузер.
Аноним 03/12/20 Чтв 18:11:55 #507 №1871958 
>>1871887
Ну так хули ты говоришь про оверхед на декодирование? Его же в любом случае не избежать.
Аноним 04/12/20 Птн 14:14:56 #508 №1872693 
forpr1.jpg
forpr2.jpg
Снова здравствуй уважаемый анон.
Подскажи почему мне FIFO не создать?
https://it.wikireading.ru/14107
Аноним 04/12/20 Птн 14:38:40 #509 №1872713 
>>1872693
Все большую и большую популярность в России и во всем мире завоевывает Linux — UNIX-подобная операционная система для IBM-совместимых персональных компьютеров.
Какого года книга?
Аноним 04/12/20 Птн 15:09:53 #510 №1872731 
>>1872713
2006 года.
Аноним 04/12/20 Птн 15:19:34 #511 №1872732 
>>1872713
mknode отменили ?
Аноним 04/12/20 Птн 17:29:06 #512 №1872901 
>>1872693
Может стоит глянуть в errno?
Аноним 04/12/20 Птн 17:42:50 #513 №1872928 
>>1872901
разбираюсь как им пользоваться :)
Аноним 04/12/20 Птн 17:59:00 #514 №1872963 
>>1872901
в книге инфа идет последовательно и errn'a на данный момент нет
Аноним 04/12/20 Птн 18:40:50 #515 №1873047 
>>1872963
Выведи его значение в тот же самый printf и смотри в интернет что означает код ошибки.

Загляни вот сюда - https://man7.org/linux/man-pages/man3/errno.3.html
Аноним 04/12/20 Птн 18:53:56 #516 №1873055 
>>1873047
спасибо, с помощью ерна определил not permitted. Перенес свой файл в другой каталог - все заработало, как оказалось у меня в расшареной папке фифо не создается.
Аноним 04/12/20 Птн 20:13:50 #517 №1873107 
>>1873055
Молодец. Без иронии говорю. Именно так и должен решить проблему настоящий инженер. И объяснить другим. И без срачей.
Другим наука.
ПЕРЕКАТ Аноним OP 04/12/20 Птн 20:21:38 #518 №1873117 
>>1873113 (OP)
>>1873113 (OP)
>>1873113 (OP)
>>1873113 (OP)
>>1873113 (OP)
comments powered by Disqus

Отзывы и предложения