Это копия, сохраненная 29 ноября 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
⚹ https://github.com/sosachbot/cppthreadhat
⚹ Для кусков кода: https://0bin.net/
Ответы на вопросы:
⚹ https://en.cppreference.com/w/
⚹ https://www.cplusplus.com/reference/
Для указателей: ⚹
Прошлый тред: https://2ch.hk/pr/arch/2023-09-18/res/2748862.html (М)
В смысле, пригождалось? Нет таких задач, которые нельзя было бы решить без метапрограммирования, не считая требований сделать это во время компиляции.
Ты думаешь, стоит ли тратить время на его изучение? Если тебе не интересно, то смысла ебать мозги нет.
Нужно ли оно в коммерческих проектах? В лучшем случае похуй. Если есть какие-то требования к читаемости кода, то на ревью могут завернуть.
Метапрограммирование на шаблонах отличный способ сократить количество бойлерплейта без потери производительности и заодно решить некоторые проблем заранее, на этапе компиляции. Но кому оно нахуй надо.
1. Почему мув-конструктор не должен бросать исключение, чтобы объект мог муватся при реаллокации вектора? Что мешает в случает исключения мувнуть все обратно? Копирование более сложная операция, но на случай исключения в копирующем конструкторе, в векторе все возвращается в первоначальное состояние, давая строгую гарантию. Вот и говорят например, что auto_ptr не мог работать с контейнерами, потому что умел только перемещаться, а почему он, а не я?
2. Говорят еще, что auto_ptr не различается обычное удаление и удаление с []. И тут я завис, а что мешало просто сделать частичную специализацию auto_ptr<T[]>?
Выложи на гитхаб, а то ЛОХманоская библиотека мне названием не нравится.
Если у тебя при муве объекта вылетело исключение - ну это уже совсем пиздец. Мув задуман как абсолютно лёгкий и прозрачный механизм передачи владения, если ты хочешь/можешь бросить оттуда исключение - ты делаешь что то не так.
Пошёл нахуй значит.
Собирать с фноексцепт, разумеется.
>Говорят еще, что auto_ptr не различается обычное удаление и удаление с []. И тут я завис, а что мешало просто сделать частичную специализацию auto_ptr<T[]>?
Ничего, уже сделали, unique_ptr называется.
Как я понял, мне нужно знать паттерны или хотя бы как это работает, пытался почитать про это вскользь, но не разобрался даже с синглтоном и не понял зачем он нужен.
Посоветуйте пожалуйста, какую литературу стоит изучать после Праты?
>что стоит изучить дальше?
Бля ну какая у тебя конечная цель? Что ты хочешь сделать? Электроникой заниматься - тогда изучай электронику. Ты понимаешь что добрые 95% вакансий на С++ это тупо программирование микроконтроллеров, написание драйверов к железякам. Оставшиеся 5% - это QT и высокочастотная торговля. Окей возможно ещё чуть-чуть игры. Если ты не знаешь шину MCU, GPIO, SPI, I2C, то можешь свои паттерны себе в жопу засунуть. Ты программист С++ и не шаришь в электронике, тогда ты нахуй не нужен.
Собсна, пока уже год как вкатился в микроконтроллеры, но на чистый Си. Хз, откуда у тебя 95% это контроллеры, но база по контроллерам уже есть. Но хотелось бы уйти для начала в Qt, либо что-то для железок писать на более высоком уровне, вот примерно такая конечная цель. В какую сторону лучше двигаться?
Не слушай этого далбаеба зеленого. Мк на всяких верилогах с си прогают. Человек занимающийся этим имеет звание инженер, скорее всего схемотехник, скорее всего он вертел на хую все паттерны и делает как деды в универе учили. Скорее всего он выдаст тебе таску, что то типа принять данные по такому то интерфейсу, как-нибудь с ними поманипулировать и вернуть, может регулятор какой-то прикрутить. Только какой-нибудь зелёный конч из этого треда может попросить тебя реализовать устройство от начала до конца, от схемы - до десктопного приложения. Тут как минимум три человека нужны, схемотехник, тополог, программист.
Вот допустим есть какой-то объект времени жизни программы, его шарят несколько других таких же объектов и как-то его используют (ну допустим это сокет), и для того чтобы расшарить этот объект обязательно нужно использовать агрегацию по ссылке, по шаред поинтеру, в конструктор передавать, в хереды классов нужно инклюдить его апишку, прописывать зависимости. И такая иерархия классов может быть огромной, все от друг друга зависят, ссылаются, получается какая-то нереальная лапша.
Из популярных решений наверное в голову приходят сигналы, которые позволяют реализовывать общения между объектами без агрегации. Но это тоже такое, там заводится общая шина, все классы приходится наследовать от какого то кала, макросы, ну просто говно. Еще где-то будет лежать файл который собственно и реализует эту связь между объектами, а это такая же лапша от которой хочется блевануть.
Неужели люди так годноту и не придумали и жрут говно под названием ООП? Потому что у меня дико в заднице чешется объявить все эти объекты просто статиками\синглтонами и пользоваться ими в .cpp, есть сеймы? Какие решения есть, я не верю что мне одному это не нравится
Делай так, что бы работало так, как тебе нужно. Все.
ну и предствать как на сях все это воид птрами делалось
>Пик 2
Почему в плюсах в названии экспешенов не принято добавлять что это экспепшен или что-то подобное? Непонятно же с первого взгляда.
мимо из другого языка
Нахуя? Ты же его только в катч блоке встретишь
Это надо как Перельман до 50 с мамкой жить.
Потому что кидать можно любое значение, хоть int.
Лол, сделал методом тыка. Слабо понимаю, что тут происходит. Может есть варианты, как упростить? Ехал typename через typename.
класс содержит буфер длины N, хочу чтобы он автоматически конвертировался в число, если длина буфера равна единице
Никак.
Скажи, что 10 лет программировал плк на заводе для нужд родины.
значитса, чтобы научиться премудростям погромистским ,я хочу собрать просмотрщик картинок.
Как референс того что должно получиться это pureref но со встроенным файловым менеджером.
как в общих чертах это делаются на с++?
пока что я пришел к тому, что мне нужны библиотеки.
компилятором выбрал g++
sdl для отрисовки самих картинок.(просто первое че попалось то и поставил)
sdl_image для загрузки разных форматов картинок.
нужна какая то библиотека для сканирования диска и построения дерева файлов(кукую взять?) но она должна как отдавать данные для последующей отрисовки.
ну и еще я подумал что мне нужна какаято библиотека с ui wxwidgets, подойдет?
вобщем я сначала хотел рисовать картинки прям средствами sdl
но сейчас думаю что для этого лучше использовать библеотеку типа wxwidgets или нуклеара, тоесть создавать окна с картинками, растягивать их перемещать. и сдл походу просто как прослойка для отрисовки будет.
как правильно делать такое?
к в сдл скрыть срандартный хедбар с кнопками закрытия и прочим. что бы было чистое окно.
и еще как само окно делать прозрачным.
че для этого надо курить? винапи? или в sdl это есть где то
так я и начал.
ну так а че для гуи сишники то используют? я вообще начинаю понимать что тут вообще не все как в остальном мире.
вот например почитал что wxwidgets нафиг не нужен. поидее используют qt
другие пишут нахуй кьют пиши сам. третьи пишут писать самому маразм. потос я смотрю видос там чел нахваливает dear imgui. но потом через год пишет свою библиотеку.
ебать нахуй. есть хоть какаято стандартизация тут?
Бери Qt.
Qt и qtquick на плюсах
На сях gtk. Всё.
Еще как альтернатива элеатрон+нативные библиотеки.
VSCode так делает, OnlyOffice и nwjs
В чем проблема? Стандартный Qt гуй хуевый. Ну то есть он нормальный для стандартных окон со стандартными крутилками вертелками уровня виндовс хрю и гноме2, но для кастомных интерфейсов типа телеги ор не подходит.
Qt квик довольно сложный, а еще кривой нахуй какой то. Тем кто умеет в веб (html+js+css) на мой взгляд не стоит мучится если не стоит задача сделать маленькое приложение.
Лучше взять электрон нахуевертить там гуй, а все функциональное припиздячить библиотеками и вывести функциями.
Так же собственно как в кутеквике, заисключением того что там экмаскрипт (как джаваскрипт только совсем голый без всего) и лютое метопрограммирование. На н пиздец как сложно реализовать то что на хтмл с цсс проблем не вызывает.
а че там за метакомпилятором таким в qt стращают? че это такое добавочный препроцессор?
Ну там как я сказал экмаскрипт но исполняется он не как js в электроне то есть считай как в браузере через джиткомпилятор+компилятор с весом овер 100мб, а прекомпилируется в какую то хуйню вместе с qml в бинарные moc файлы вроде.
Но это не машинный код, я так понимаю а коды для интерпритирования, это связано с тем что метаговно и джаваскрипт это впринципе языки где типы данных подставляются во время исполнения и подставить их заранее нельзя.
Но я не вижу проблема так как весит это все 1,5мб, а гуй это не то что должно максимальное колличество нажатий быстро обрабатывать, оно должно просто с приемлемой скоростью отзываться и оно на квике одзывается шустро. Что еще надо
попробую все на SDLе сделать. насчет интерфейса пока затык, но мне там немного надо. списки да кнопки я сам поди рилли напишу. интересно да и похуй.
по файловой системе для менеджера походу будет достаточно стандартной библиотеки, я прав?
щас кароче такая ситуевина. мне надо чтобы было много картинок на экране открыто одновременно но как бы в рамке одного прижения но фон самого окна должен быть прозрачный. плюс надо чтобы прозрачная часть приложения не перехватывала фокус.
кароче я решил пока это обойти и тупо спамить новыми окнами.
да нормальная эта хуйня, специально придумана рептилоидами чтобы умных детишек уничтожать
типа дрочишь физику-математику в школке, ездишь на олимпиадки до которых дотянешся, потом ебашишь задачки для поступления в бауманку, потом тебя дрочат в вузике типа делают ученого на хуях не верченого, а в 30 лет вешаешься режешь себе вены выходишь в окно
то же касается и химии и математики, и соответствующих факультетов мгу
ну а сегодня и дрочь на cs добавился
не, челик, ты вкорне не прав и поэтому мучаешься
раз это как ты выразился "объект времени жизни программы" то ты делаешь синглетон и тупо его юзаешь везде где надо
забавно что я будучи безработно й хуйней over 10 лет сразу же понял что к чему, хехе зайдя в этот итт тред после годового перерыва
Синглтоны можно, но так себе. Лучше просто на глобалах завести экстернами что нужно.
Синглтоны могут в херовой последовательности уничитожаться, а глобалы сам пропишешь.
Три месяца назад проходил какие-то дно задачи для fast-track. Не ебут. Я даже задачи на их собеседовании с подсказками все смог сделать. Решил, постфактум, что мозг свой прямо сейчас на 100% заюзал и лучше уже не будет.
Но этого им всё равно не хватило. Жирные уебаны.
Полужидким.
Ты просто юзаешь ООП там где оно не нужно.
У меня например в одной программе vector<class ImageType>
Это базовый картиночный класс абстрактный с методами указывающими на ноль, но от него уже наследуются PngType JpgType и даже помоему архивный тип пришлось добавить в эту систему, у каждого своя реализация методов и все они заталкиваются спокойно в один вектор перечисляются с вызыванием методов.
На си конечно можно реализовать структурой с указателем на функцию:
typedef struct _IMG_T_ image_t;
typedef void (× method) (image_t ×self, int arg0 ...) fn_method_1;
struct _IMG_T_ {
. . uint32_t w, h;
. . uint8_t × data;
. . fn_method_1 foo1;
};
Но это выглядит во первых как говно, во вторых не гарантируется что в метод попадет self указатель этой же структуры и вообще раз уж пишем на си то уж проще свитчом выбирать нужный метод по значению а не таскать в структуре адрес на хуй знает что. Когда на си приходилось писать такой код всегда хотелось просто объявить класс с виртуальными методами, а деструктор записать free(data).
Несмотря на то что это все компилируется в лютое говно с вызовами перевызовами, не всегда программе это по сравнению с джавами пистонами минимальный оверхэд.
Значит я правда тупой.
Ты не понял о чем я говорю. Я не про оверхед, а про неудобство использования объектной системы в программе, когда классы вынуждены знать друг о друге. Было бы лучше если б ООП в плюсах было полным с реализацией сообщений между объектами, то есть на уровне языка чтобы скрывать под капот всю парашную реализацию. А сейчас абсолютно любой проект на плюсах это лапша так или иначе
>Вот допустим есть...
У меня же есть подозрения, что ты просто сложность хуёво контролируешь.
Без конкретных примеров не сказать.
Объект времени жизни программы обычно почти всегда синглтон. Если нет, то либо у тебя что-то странное и/или интересное, или ты накосячил с проектированием и это должен быть именно одиночка.
В чем тут сложность? Есть класс сокета, который засылает данные куда-то. Как ты организуешь в плюсах как эти данные он передает дальше? Либо агрегация либо коллбек. Если программа большая то это неизбежно превращается в адские зависимости.
Синглтон это антипаттерн в современном программировании
>Есть класс сокета, который засылает данные куда-то. Как ты организуешь в плюсах как эти данные он передает дальше?
>В чем тут сложность?
Почему у тебя так много подписчиков этого класса, что это становится проблемой? Почему ты не сделал иерархию, которая разделяет сложность? Single responsibility principle? Или тоже "антипаттерн"?
Быстрый гугл солидарен, но я и без него это знаю.
Да, антипаттерн, с тех самых пор как в плюсах есть многопоточка
>Да, антипаттерн, с тех самых пор как в плюсах есть многопоточка
Хуясе клэйм. Ты хипстеров своих больше слушай.
Сам синглтон не хорош и не плох, это инструмент. Написанный через static переменную, он по умолчанию должен быть thread-safe.
Другое дело как ты сделаешь синхронизацию его внутренних процедур.
Ну вот и выявили неосилятора. Сдрысни в хаскель-тред.
Я никого не слушаю, это мое мнение.
Бля чел, о том и речь, "сделаешь синхронизацию", ты че, того чтоли? Лучше уж лапшу писать
>Бля чел, о том и речь, "сделаешь синхронизацию", ты че, того чтоли?
Если у тебя миллиарды запросов в наносекунду и тебе нужна полная lockless хуйня, то лапша - последнее, о чём ты должен волноваться.
Совсем не обязательно он синглтон.
Синглтон он только если к нему нужен глобальный доступ. А иначе нахуя оверхед.
Тащемта да, но у него проблема такого уровня, что до синглтона недалеко.
Представь, что глобальный доступ не нужен. Значит это какой-нить шаред_птр, какой-нить замкнутой иерархии классов.
Почему эта иерархия настолько большая? Почему нет классов прослоек? Если прослойки не нужны, то почему нет полноценного observer, чтобы не следить за передачей ресурса через подписки, вместо ссылок в конструкторе? Почему бы не сделать билдер, который будет собирать новый класс по кусочкам?
Что за хуйня?
Опять неосилятор порвался. Тогда беги в ассемблер программировать, оверхэдный ты наш.
В плюсах ты не платишь за то, что не используешь.
Не хочешь контролировать сложность, чтобы твои собственные углеродные мозги нахуй в кашу не расплавились? Твоё право.
Шляпа объектно ориентированная че за тряска? Я съебусь куда мне надо а ты позади останешься, запомни это
Да мне насрать. Ты пришёл с плюсовый тред просить советов, но просишь без уважения.
Да я понял о чем ты, но я и говорю что это класс задачь где реально не нужно ооп, но его используют просто потому что функциональное, которое бы лучше подошло в ряде задачь не завезли.
> Было бы лучше если б ООП в плюсах было полным с реализацией сообщений между объектами, то есть на уровне языка чтобы скрывать под капот всю парашную реализацию.
В плюсах нет рантайма, он компилируется в машинный код, как си.
ООП плюсов позволяет компилятору точно знать какой метод, к какому типу прикрепленный в каком месте программы вызывать, тогда как поинтер в структуре это сюрприз для предсказателя переходов, а свитчи это лишнее награмождение в коде.
А лапшеговнокод можно встретить на любом языке, даже на си.
Тем что все знают что такое си плюх плюх, а кладмена жору не знает никто.
Во время ближайшего Фаст трека попробуй.
Алсо я вообще понял что у меня супер херово с динамическим программированием.
Как сделать открытие файла?
типо вот я щелкаю на файл пикчи, винда запускает мою программу и она как то передает пикчу(или ее путь) в мою программу.
как это делается? куда копать? как это называется вообще в программерском мире?
пока что я допер только как открывать и закрывать файлы через fistream и инфа чет не гуглится.
Для того чтобы ОС открыла именно твою прогу - в разных системах по разному. Гугли file extension to program.
Далее она запустит твою прогу, передав первым аргументом путь к файлу.
>куда копать?
От ОС зависит. В твоём случае нужно WinAPI курить.
Попробуй данный вопрос гопоте задать, думаю, что оно ответит с примером.
>передав первым аргументом путь к файлу.
Так не всегда путь же. Может какой нибудь хендлер вернуть.
Вот это уже я не ебу, честно. Я думал всегда путь отдает.
теперь как то надо консоль скрыть. это наверное гдето в компиляторе до ставить
Ты опиши саму ситуацию, епта. Ничего же не понятно. Выглядит так, будто ты хочешь, чтобы ОС использовала твою программу по-умолчанию для открытия некоторых типов файлов. Чтобы когда ты кликал по файлу, то вызывалась твоя прога и в неё передавался путь/хендлер файла. Правильно понимаю?
да да именно это и хотел.
может ты знаешь как заставить винду ассоциировать файлы прямо из с++?
возможно ли вообще такое
>может ты знаешь как заставить винду ассоциировать файлы прямо из с++?
Можно более подробно? ЯННП.
Ты можешь скомпилить бинарник и указать его в качестве проги по умолчанию самым обычным способом - через системные настройки, либо ПКМ - открыть с помощью.
Далее тебе нужно узнать каким образом ОС передаёт информацию о файле проге по умолчанию. В виде пути, либо в виде более сложной структуры. И отталкиваясь от этого уже писать обработчик.
ммм хуй знат мне же не надо свой формат внедрять в систему? но спасибо на будущее , вдруг я ебать свой 3дмакс напишу охохо
ладно кароче. нашел два способа скрыть нахуй консоль.
первый подключил windows.h
и там вызвал процедуру ShowWindow(GetConsoleWindow(),SW_HIDE)
это я так понимаю винапи чистый пошел.
а так как у меня sdl, то поди это нарушит портируемость.
заебенил кароче вместо этого компилятору благ -mwindows да и похуй вроде по красоте все стало работать
посоны да я вообще погромист ебать!
Тем что на с++ пишут ос, в том числе микроядерные, а на джаве гоночный робот томми решил собрать мусор от накопившихся объектов проебал поворот и убился об стену.
Тебе надо было брать qt и не ебать мозги, там все есть и встроенный просмотр файлов и выбор при тыке по кнопке.
SDL это низкоуровневая библиотека-прослойка между программой и рендером, оно не предназначено для взаимодействи с виндовсапи и линуксовыми де. Оно само по себе, что бы 2d/3d графику в окошке рисовать грубо говоря.
Сап Анонсы! Как считается хэш сумма файлов? Есть два старых зип архива, которые надо открыть. Знаю что есть хэшкэт, но хочу разобраться в том как это всё работает, на практике. Поэтому подскажите, пожалуйста, как получить хэшсумму ZIP/RAR файла и как сделать генерацию хэш-таблиц для сравнения. Думаю просто сделать открывалку с генератором слов будет всё-же более затратно, в плане времени исполнения.
Пробовал на питоне, но там люди жаловались на быстродействие а у меня нихуя не 4090+i9, да и сам питон немного не прижился.
>Алсо я вообще понял что у меня супер херово с динамическим программированием.
А по-другому быть и не должно.
Вспомни мне, навскидку и без гугла, прям щас, как только прочитал пост, какие задачи из ежедневной рутины прогера требуют динамического программирования?
Обычно если и есть, то это ебейшая таска на весь спринт, которую нужно вылизать и тестами обмазать, чтобы работала как часы.
Да я не ебу.
В целом почти нихуя из того что я задрочу на литкоде мне в прогерской практике не было нужно.
Ну исключения - бинарный поиск, префиксные суммы. Мне блять производные чаще нужны. Но в яшку хочется.
>но хочу разобраться в том как это всё работает, на практике
>хэшсумму ZIP/RAR файла
>как сделать генерацию хэш-таблиц
Так тебе шашечки, ехать или суп есть? инб4 суп ешь ложкой
Чтобы в хэш-алгоритмах разобраться, тебе нужно хэш-алгоритмы подучить. Ещё желательно свойства криптографически сильного/стойкого хэша.
Чтобы посчитать на практике хэш-сумму надо юзать либу. Вот так просто. Очень проста эвристика: "Что угодно связанной с криптой, шифрами и теорией чисел -> юзай либу"
Для хэш-таблицы твой хэш может быть очень тупым. Он обычно очень тупой и есть. Там суть не в отсутствии коллизий, возможности нахождения обратного и прочая. Поэтому про хэш-таблицы и говорится, что там доступ за O(1) амортизированное. Потому что тебе может очень крупно не повезти, и ты получишь доступ за O(n).
>нужно хэш-алгоритмы подучить
>свойства криптографически сильного/стойкого хэша
Не подскажешь уроки или книги? Примерно 1/2 из книг по csec, которые постят в телеге, имеет очень поверхностную информацию. Вот ребята есть WEP и WPA2. WPA2 лучше чем WEP, WEP хуже чем WPA2. Однако даже примеров восстановления ключа из handshake я вам не покажу, потому что потому.
Пока что полезная инфа попадается лишь на хабре, вики и стеке. Форумы чуть сложнее найти, но думаю тоже есть.
>надо юзать либу
Полагаю, так-же как и в питоне? импорт инклюд, а потом вызываешь класс или функцию и даёшь ей свои данные в работу.
Но с точки зрения работы. По идее архиватор пытается открыть один файл, с заданным паролем, или один блок наименьшего размера. А потом уже возвращает True для дешифровки и False для ввода нового пароля, на основа несовпадения хэш суммы.
Выходит, нужно лишь попытаться открыть один файл или блок из архива и сохранить целевое значение хэш суммы. А дальше уже можно пытаться в перебор AES 256. Для начала попробую какой-нибудь тестовый txt вытащить. А потом уже за архив можно браться. Верно ли это?
>Потому что тебе может очень крупно не повезти
Мне пока известно лишь 2 метода и табличный должен быть чуть-чуть выгодней обычного перебора. Так что ничего удивительного, что что-то может не сработать как планировалось.
>за O(n).
Где n это...?
>Не подскажешь уроки или книги?
Ниет. Меня учили дядечки в универе. Это было давно и неправда.
Остальное жир вообще.
Ты смотрел как это работает? Я в душе не ебу, что ты пытаешься сделать и как это работает, но подозреваю, что пытаешься взломать шифрование файла. Скорее всего хешируется весь файл в плейнтексте.
Какой один блок? Какой AES перебором, прастихоспади?
ЖИРНО СУКА
>Ниет. Меня учили дядечки в универе. Это было давно и неправда.
>Остальное жир вообще.
>ЖИРНО СУКА
Ладно.
Спасибо и на том что рассказал.
>Ладно.
А на что ты рассчитывал?
Делаешь какие-то танцы с бубном, какие-то хэш-таблицы.
Ты либо очень тупишь и андерквалифаед для той задачи, что решил сделать, либо уникум ебучий и я просто невдупляю твою гениальность.
Хешировать ты сможешь только весь файл целиком. Если сможешь из готового хэша восстановить хэш для одного блока - мильоны далларов тока так можешь собирать.
Если у тебя AES-256, то перебором ты его будешь ломать 2256 итераций. Если кто-нить не выдумал крутых техник взлома, конечно.
2256 итераций, даже если ты будешь подбирать по квадрилиону ключей в секунду - это 3.67... x 1057 лет.
Я подозреваю, что вселенная кончится раньше.
Во, может ты хотел пароли подбирать? А под таблицами - радужные таблицы имеешь в виду? Тогда да, я не вдуплил твоего гения.
Всё так. Но пока чёт все пишут что AES256 эт прям неприступная крепость и вообще даже Тяньхэ-2 его не потянет. Тем не менее, в 2016 на дваче кто-то разыгрывал BTC кошельки, пароли к которым были как раз в RAR архивах. Тогда знакомый сильно бомбил, что пароль оказался больше 12 символов и перебор стал уже не выгоден, как по времени, так и по энергии.
Думаю, будь AES так крепок, никто не стал бы упарываться GPG и делать ключи по 4кб.
>либо андерквалифаед
>либо уникум
Хочу восстановить 2 фото бывшей, которой уже скорее всего и в живых нет. Буду ли я при этом кем-то или нет - безразлично. Есть задача - пытаюсь найти её решение.
>Если сможешь из готового хэша восстановить хэш для одного блока - мильоны далларов тока так можешь собирать.
Я понимаю твой сарказм, но хотя-бы попробую.
>никто не стал бы упарываться GPG и делать ключи по 4кб
Погоди, так это же для ассиметричной крипты такие ключи делают. И то, для RSA я вроде так даже сам делал, но для эллиптических кривых там уже меньше ключи.
А, как сказал вот этот мудрец >>856255, там всё очень не просто с этими новыми симметричными шифрами.
Надежда, рили, только на то, что пароль подберётся.
>Я понимаю твой сарказм, но хотя-бы попробую.
И да, для проверки каждого пароля тебе придётся скорее всего фулл расшифровку делать. Или, если это какая-то предсказуемая структура, столько блоков, чтобы понять, попал ты или нет.
Но, в любом случае: преобразование парольной фразы в ключ + расшифровка либо фулл, либо нескольких блоков.
Причём с "несколькими блоками" выйдет только если необходимые данные в начале лежат. Или хуй.
Я так и не понял, где и как мне на Винде получить libcurl4-openssl-dev. Мнение?
Мнение - винде надо было выкинуть наследие дос давно и идти по пути макоси.
А так страдай, хуй его знает как это на говнокнах чинить. Надо патч до либ прописывать.
Как ты их прописал? Ниче нельзя сказать по твоему описанию. Не ебу что за говно, но наверное твой шоколадный поставил либу + файнд к ней наверняка. Поюзай симейковский дефолт по инклюду зависимостей типо файндпэкэдж
потому что cout это наверное класс, а endl функция внутри этого класса верно ?
>Надежда, рили, только на то, что пароль подберётся.
В архиве всего два файла, так что если как-то оптимизировать процесс его открытия, то можно и перебором решить проблему. Ведь можно за один раз пытаться достать один файл. По идее, проверка не займёт много времени, а С++ будет одним из самых оптимальных вариантов. Всё остальное уже будет зависить от того, на сколько потоков получится разбить перебор и не будет ли проц душить видеокарту.
>Или, если это какая-то предсказуемая структура, столько блоков, чтобы понять, попал ты или нет.
Вот это самое интересное. Поскольку известен формат и размер файла внутри, можно примерно прикинуть размер и содержание его заголовка, который уже будет лежать в некоторых границах. Если бы можно было проводить расшифровку только заголовка, то сравнивая с заголовком другого jpeg'а можно было бы очень быстро подобрать ключ, а уже из него пароль. Другое дело, что мне не известно как происходит расшифровка zip, идёт ли она одним длинным потоком или имеет некую цикличность которую могли бы разделять те самые блоки.
В меру моего слабого понимания, выглядит это пиздец как интересно и вполне решаемо. Тем более что пароль где-то между 6 и 15 символами. Так что можно убрать все короткие и сэкономить хоть немного времени и энергии.
В догонку к прошлому посту. Дешифровка AES имеет уязвимость в виде связи значений настоящего ключа со скоростью выполнения операции. У меня нет ни осциллографа, ни прочего нужного железа, но может быть можно симулировать выполнение распаковки в VM, которой можно задать маленький параметр clock, по которому уже можно будет прикинуть диапазон значений, получая график быстродействия из самой VM.
Но у меня в прошлый раз не вышло разобраться с VM, когда пробовал освоить дебиан. Хз, есть ли у них функция дебага медленной работы. На них же можно симулировать быстродействие какого-нибудь пентиума 2, возможно получится опуститься и ниже, до какого-нибудь 386го.
Но это мысли в слух. Хз насколько это позволит сузить круг поиска.
Не, ты всё-таки почитай по криптографию, твоя интуиция тебя подводит. По сути, ты предполагаешь, что: а) есть какой-то «неправильный» более быстрый способ расшифровать зашифрованное; б) никто о нём не подумал, а ты найдёшь. По сути, это означает, что шифрование будет взломано. Теперь оцени вероятность случайно взломать AES.
Во-первых, готовые программы для решения твоей задачи давно существуют. Во-вторых, работают они все одинаково: берётся минимальный блок для расшифровки, расшифровывается с первым сгенерированным по какому-то шаблону паролем, проверяется корректность, пароль не подходит. Расшифровывается со вторым сгенерированным паролем — и так до конца. Принципиальной разницы между ними быть не может (если шифрование надёжное), разница только в немного более оптимизированном коде, позволяющем быстрее перебрать простые (короткие, словарные, частично известные) пароли. Если вариантов слишком много, перебор становится бессмысленным, поскольку нет разницы, ждать тысячу лет или две тысячи лет.
Что-то мне подсказывает, что тебя развели мошенники, предлагающие «проверить своего партнёра на измену». Тогда это просто случайные файлы со случайным паролем в архиве, и никто не собирался после получения денег что-то тебе раскрывать.
Ну а почему нет. В пиндосы специально закладку заложили в алгоритм что бы зашифрованные данные читать. Она может быть хитрая изощренная. Intel Me же вскрыли и выяснилось что оно не просто так сидит пердит железо инициализирует а еще сука в сеть ходит даже когда комп выключен. Может дамп памяти снимать и запросто отсылать.
А в интелах еще есть аппаратное шифрование aes
Вроде как это просто векторные инструкции, но они генерируют конечные ключи, а еще в интеле есть аппаратный генератор случайных чисел. В общем тут вопрос то интересный на самом деле.
> Intel Me же вскрыли и выяснилось что оно не просто так сидит пердит железо инициализирует а еще сука в сеть ходит даже когда комп выключен.
Действительно, почему же оно делает то, что в инструкции сказано? Агент, который должен быть активен даже при выключении основной системы, чтобы её можно было удалённо включить обратно, активен при выключенной системе, м-м-м.
https://en.wikipedia.org/wiki/Out-of-band_management
ЗаКлАдКа ПиНдОсОв, к сожалению, никак не поможет тебе перебирать пароли, пока ты не знаешь, в чём она состоит.
Когда ты такую функцию не заказывал, а она все равно есть и производитель об этом никак не предупреждает и не дает отключить это зонд в жопе, товарищь либерахен.
> никак не поможет тебе перебирать пароли
Шифрование это не только запароленый архив с лолями.
Ну конечно, этот дурак решил, что я поддерживаю услуги, оказываемые Intel тем, кто попросил сделать именно так. Очень близоруко полагать, что проблема только в том, то тебя, Господина Покупателя, наебали с описанием товара. Надо пошире смотреть на то, в какой позиции пользователи находятся в пищевой цепочке и в чём корни проблемы.
И, всё-таки, надо понимать, о чём говоришь, а не о каких-то случайных числах в процессорах, которые тебе волшебным образом раскроют пароль для архива. Ламерство излечимо.
Забавно смотреть как на протяжении полтора часа страуструп пытается доказать что плюсы это безопасный язык
> JUST BE CAREFUL
Все надеюсь в треде core guidelines прочитали?
Так в расте тоже есть usafe
А в плюсах можно использовать только безопасные ссылки и итераторы.
>Так в расте тоже есть usafe
Это к чему?
> безопасные
> ссылки и итераторы
Страуструп, залогинься. Слишком жирно
К тому что все познается в сравнении.
По сравнению с си плюсы очень безопасны.
Объекты между процедурами можно передать без явного указания поинтера, а елементы вектора или массива перечислить без риска выхода за пределы бай дизайн.
Любой метод в плюсах это вызов конкретной функции по имении, а не вызов поинтера из массива, (как часто делают на си). В этом мне кажется и есть главный смысл ооп.
То что нет явного разделения на сейф/ансейф а есть только словестное напутствие страуструпа "быть осторожней", это да, уже не достаточный барьер безопасности по современным меркам.
Но если совсем откровенно то в дедовских книжках читал правило в духе unsafe программа/код может породить safe процесс, а наоборот safe->unsafe() нет, потому что тогда оба прастранства ансейф. Так что до безопасности раста тоже можно доебаться если захотеть.
спасибо конечно за пасту, не знаю кому ты пишешь, но к моему посту эта вся информация никак не относится
> хаха полтора часа страуструп пытается доказать что плюсы это безопасный язык
> К тому что все познается в сравнении. По сравнению с си плюсы очень безопасны.
Ты тупой.
Могу сказать за него: возьми свой дохуя безопасный язык и напиши на нём небезопасную хуету, чтобы падала по сегфолту на каждый чих.
Смог? Смог.
Плюсы отличаются лишь умением, которое нужно иметь, чтобы не отстрелить себе ногу. И за это плюсы дают байтоёбский контроль и скорость.
Я считаю, что всё честно.
> безопасность
> познается в сравнении
...
> возьми свой дохуя безопасный язык
Шизойд, какой мой язык? Ты кому пишешь? Ты кому отвечаешь?
Ты когда про безопасность говорят что себе в голове представляешь?
про сравнение я говорил, ты пукнул что то невразумительно про то что не о том вообще говорил.
Сейчас ты к дискуссии с другим аноном мою реплику приплитаешь, с какой целью, шизойд?
> Сейчас ты к дискуссии с другим аноном мою реплику приплитаешь
Вы два шизойда, научитесь на посты отвечать нормально
Зачем вы кому то другому отвечаете в ответ на мой пост, я отгадывать должен что у вас там в голове происходит и кому вы пишите?
Ты ветку нихуя читать не умеешь и в глаза ебёшься, дебил.
Вот тебе ветка
>>857075 ты
>>857110 он
>>857113 ты
>>857240 он
>>857251 ты
>>857331 я
>>857380 ты
Теперь не отвертишься, хуйло. Это АИБ и даже если половина "ты" в этой ветке - это не ты, всё равно конкретная сторона дискуссии понятна.
А теперь перечитай ветку очень сука внимательно. И вынь, наконец, мужские половые хуи у себя из глазниц.
Двачую. Похуй что за срач, но долбоебы которые влезают в ветку и даже мимо не ставят дико бесят
Постоянно так делаю
Тут "мимо" и не нужно.
Этот хуй либо является веткастартером, либо влез в дискач на стороне веткастартера.
Вот этот пост: >>857075
Противоположная сторона вот этот пост: >>857110
Далее всё довольно прозаично. За исключением, наверное, стороны, что решила посрать на С++ в С++ треде не попытавшись не то что привести аргументы, а даже не попытавшись уточнить контекст беседы.
Из-за чего выступают такие охуенные финты, когда постер спрашивает
>>857380
>Ты когда про безопасность говорят что себе в голове представляешь?
Так хули ты влезаешь в дискуссию, даже не представляя что такое "безопасность языка"? Это комбинация ограничений языка и здравомыслия программиста. Именно поэтому можно писать на "безопасных" языках разъёбывая всё к хуям. Именно поэтому можно писать на С++ "безопасно".
Первоначальный клэйм был
>>857075
>Забавно смотреть как на протяжении полтора часа страуструп пытается доказать что плюсы это безопасный язык
Ответ: "Да, и он доказал. Чё дальше?"
Чел всем поебать, ты когда в чужую ветку влезаешь где идет какое то обсуждение с претензиями на аргументы и позицию, обязан отписывать мимо, если нет то ты тупой мудак
>обязан отписывать мимо
Тыскозал? Книжка с правилами где? У тебя около поста написано "Аноним". У меня около поста написано "Аноним".
Хочешь уникального экспириенса, когда никто не может влезть в дискуссию? Используй трип-код. Или съеби куда-нибудь ещё, где есть DM'ы, имена, профили, конфочки... нутыпонел.
Про мемори сейфти хоть что то слышал?
Да лол, мне реально надо обьяснять что безопасность это не метофизическое ограничения, а конкретные пункты
Тебе тут же в видосике он поясняет, что не станет убирать эту фичу, иначе все ваши охуенные мемори-сейф языки окажутся без языка на котором их рантайм написан.
Зато добавили фичи, юзая которые можно добиться функциональной memory safety.
Хуй будешь?
> что не станет убирать эту фичу
Какую фичу?
> иначе все ваши охуенные мемори-сейф языки окажутся без языка на котором их рантайм написан.
Нет, не окажутся
> функциональной memory safety
Какой?...
Да, это я сказал и так кстати люди здесь делают, так что не только я. А если ты мудень тупорылый который отвечает за другого человека то ты просто идешь нахуй и на этом все заканчивается и никакого содержательного диалога не будет ни с тем ни с другим
Можешь перед "сливом" сразу список пунктов для признания языка "memory-safe" выкатить. А не просто список проблем с памятью, часть который можно решить так, а часть можно эдак. И уж тем более не просто твой уткоязык, который ты облизываешь, будь то раст, жава или ещё какая хуйня.
Да пользуйся чем хочешь, просто нахуя ты тут сидишь пишешь свои кринжовые простыни типо ты тут знаешь что-то и хочешь пояснить если тебе в итоге ебальник обоссывают и ты с мочей сидишь и бессодержательно срешься как в б помойке
> ФУНКЦИОНАЛЬНЫЙ memory safety
Это уже старая хуйня, сейчас модно OOP memory safety
в голос с этих выдуманных определений
>>857974
Тем не менее тот хуй сверху так и не объяснил свои
> конкретные пункты
И не определил свою memory safety. Которая не определяется от конкретных пунктов в имплементации языка. Скорее от функциональных возможностей этого языка. Будь то GC или смарт-поинтеры. Поэтому он нихуя сказать и не может, а только огрызается.
Так что, выдуманное или нет, слился пока что он.
Зачем ты зеленому гастроллеру берешься что то разжевывать?
Школьник пришел тротлить на авось -
Пук. Хрюк. Мнум. вы дебилы повзрослеет книжек почитает придет набросит по нормальному.
> JUST BE CAREFUL
Даже жаль дедулю, чтобы он не делал, а все равно продолжают си с классами юзать
> Все надеюсь в треде core guidelines прочитали?
Да даже если прочитают, половина на него хуй клала
>тебя развели мошенники
Если только я сам, когда решил закинуть пикчи в закрытый архив. Но тогда и время было другое, был резон. или ты про ту стори с битком?
>готовые программы давно существуют
Да, hashcat например. Но у него закрытый код, поэтому даже посмотреть как он устроен не получится. А разобраться всё так-же интересно. По сути, мне нужно лишь повторить кусочек hashcat и может быть - сделать это лучше. Либо найти более оптимальное решение, что тоже может быть.
>>856924
В алгоритм очень вряд-ли. Проще и выгоднее это делать в железо. Собственно, чем почти все и пользуются. А сделать математическую модель, со скрытыми свойствами - это очень круто. Сомневаюсь что до этого уже дошли.
>>856940
Кстати. Не знаю, может уже исправили, но вроде года до 2016го в процессорах распределение случайных чисел было вовсе не случайно, из-за чего генераторы делали и продавали в виде отдельных PCI платок. Хз как сейчас, но доля истины в посте того парня была.
аниме-бамп го!
В плюсы я вкатился, дают простые таски. Но это симейк блять, я часто вообще не могу понять, что не так с зависимостями и почему проект не собирается.
Хочу стать CMake богом.
> я часто вообще не могу понять, что не так с зависимостями и почему проект не собирается.
Это нормальное состояние
Мне в свое время это выступление помогло разобраться с основами
https://youtu.be/y7ndUhdQuU8?si=2roV1Lf8r1Djx33A
Так симейк Тьюринг полный, я видел даже рендерер на чистом симейке
О это боль та ещё.
Смотри в чужие проекты и смотри как у них сделано.
Самая главная проблема СраногоМейка - это find_пукидж и последовательность для crate_lib/exec
В остольном все просто.
Симейк не собирает проект же он генерирует мейкскрипт(ы) как ./configure. Только если ./configure это обычный башскрипт к которому надо либо приложить талант в программировании на баше либо еще один генератор autoconf/automake (к которым прилагается еще файл конфигурации, три уровня блять)
То cmake он как бы сразу конфигуратор и генератор make скрипта.
А в make если ты когда нибудь пробовал на нем писать, код программы можно подробить на секции:
libxyz.so(): .. build lib
test(): libxyz.so(), ...build test
xyz(): libxyz.so(), ... build program
Чтоб смейк сгенерировал логически правильный мейкскрипт в котором ты можешь собрать все или каждую библиотеку отдельно, надо не наебаться с последовательностью в скрипте и особенно это касается субмодулей.
У мейка и смейка есть альтернатива - ninja и meson, если нет нужды добавлять в проект сторонние библиотеки использующие для сборки cmake, то лучше юзать мезон для проверки / сборки нужных компонентов в mpv используется можешь глянуть как оно там реализовано.
Так мезон тоже на петухоне и опять таки с хорошим примером в виде mpv.
Не слушай его, используй везде смейк в проектах на плюсах, дефакто это стандарт, а все остальное недоразумение должно сдохнуть
>а все остальное недоразумение должно сдохнуть
Слыш ты, за мэйк и двор стреляю в упор! Петы на мейке, даже лисповые.
А может ты? И не дурачок даже, а недальновидный зумер, который не понимает изящества простых инструментов?
>не понимает изящества простых инструментов
Такое только с опытом приходит ну или не приходит никогда
Или QtCreator в нем хорошо плюсы визуализированы. Например мне нравится что если функция принимает ссылку то переменная в аргументе курсивом выделяется.
Это закрытая платная говнина под винду онли, иди спрашивай у микрософта как ее настраивать.
Уходи.
> говнина
Говнина не говнина, ну если вкатываться в плюсы, да еще в купе с какими-то фреймворками типа как JUCE в моем случае, то эту гавнину приходится кушать хочешь не хочешь, даже тупо тянуть чужой код с гитхабов, чтобы у себя его откомпилировать, по изучать, в большинстве случаев он будет в VS проектах
> в большинстве случаев он будет в VS проектах
Так это виндософт завязанный на вижуалс++ нахуй он нужен?
Ну тут ты не прав хотя студия коенчно то еще говно
многие норм разрабы и под винду и мсвц симейком собирают.
>>858519
>>858514
Эти правы, и вскодиум и креатор лучше студии галимой и все профилировщини лучше самому настраивать
>>858610
съеби
>>858621
бро
Я например все пишу под линуксом, потому что это банально удобнее, а потом уже билды под виндой проверяю. и нет я не тот ваш шиз
А что vs-code на винде не популярен?
Интересно всегда было как там решен вопрос с отсутствием хидеров libstd из коробки, как там предлагается все вот это доустанавливать.
С чего ты так решил и тем более почему из моего поста?
Я на винде собираю с буилд тулз сл.экзе и все необходимое, за вычетом выше упомянутой не нужной студии это в догонку к >>858596 , на платформе лучше использовать нативный копилятор, как ни крути.
Так вот, винда не предполагает что она используется для разработки, хочешь собирать - ставь булд тулз, ну или студию, или мингв/всл всякие, тут уж сам смотри.
А ну то-есть есть билд-ессентиалз от микрософта? Ок тогда.
Мне просто было интересно как они выкрутились с VSCode -ом на винде, не уж то на родной операционной системе предлагают mingw скачать (может оно там в расширениях есть)
Вскод этро редактор, не требуй лишнего это плюс.
https://visualstudio.microsoft.com/ru/visual-cpp-build-tools
https://github.com/VSCodium/vscodium
https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools
>>859012
Ну или так, если все же студию охота юзать.
Или силион попробуй.
У Jetbrains есть годная IDE для С++? Подскажите какая, потому что VS выёбывается лицензией, а телефона чтоб сделать акк у меня сейчас тупо нет. Вообще нет. И взять его неоткуда.
У меня нет ни телефона, ни почты. Но их отсутствие мне никак не мешает юзать вижуалстудию.
Значит я что-то установил не то, потому что "ваш 30 дневный срок истёк, зайдите через свой микро-акк".
Есть, но платная
CLion
можешь попробовать по советам выше qtcreator или VScode, но если с тулингом в плюсах не знаком - то готовься к аду
Я из питона перекатываюсь, конкретно с PyCharm. VS выглядел очень приятно и знакомо, но решил послать меня нахуй после 30 дней.
IDE мне нужна для обучения и освоения библиотек. Я бы сказал что PyCharm был идеален, но кажется С++ в него никак не запихнуть и такой-же удобной работы с библиотеками и сборкой там не будет. Или это ошибочное мнение?
QT заебись, спасибо что подсказал.
> такой-же удобной работы с библиотеками и сборкой там не будет
У меня для тебя плохие новости, в плюсах работой с библиотекой иде почти не занимается, придется почти все делать ручками
Пакетных менеджеров всего два, conan и vcpkg, оба имеют свои плюсы и минусы пользуются ими все ещё не большинство
>>860340
> Ладно... А если NetBeans
Уж лучше спирать
>спирать
А это что?
И что насчёт Eclipse? Судя по описанию, надо лишь на 1-2 вечера заебаться настройкой, а потом будет слегка прожорливая, но полнофункциональная IDE.
>conan
>vcpkg
Региональный блок. Ахуенное начало.
Блять... Я 4 часа ебался с установкой ебаных компиляторов и получил IDE без менеджера пакетов. Хотя в С++ немного другие способы ввода библиотек в проект, я хуею с того как вы этим пользуетесь. Сука... Посли питоши аж ныть хочется. Как же там всё было удобно. Теперь понятно, почему багфиксы по репортам делают так долго. Пока с какой-нибудь мелкой хуйнёй разберешься, уже и вечер пройти успеет. А как механику или неткод в играх исправлять, так вообще наверно вешалка.
Зато теперь с кудой не будет проблем. АУФ!
Но я всё ещё в ахуе... Даже с ассемблером не было так сложно.
Почему GCC создаёт такой массив информации в helloworld экзешнике? 3881 строка. При этом сам код на пике справа.
IDE Eclipse, C++ , toolchain - GCC, вспомогательно стоит Mingw.
В продолжении ветки ахуевшего питоноёба >>860305 ... >>860440
Это рантайм плюсов. В плюсах ты платишь и за то, что используешь, и за то, что не используешь.
-О3 врубаешь и не используешь.
> #include <iostream>
Это если что не линковка с библиотекой через хидер (как в си), а включение части stdlib в файл.
Плюсы это ооп язык и что бы реализовать наследование как в языках с рантаймом нельзя базовые классы выделить куда то там в отдельный модуль как в glibc, они все добавляются в исходник и компилируются с программой.
Для прикладного языка это не проблема, хэловорлд на электроне вообще в себя браузерный движок будет включать и ничего.
Дополню что еще есть fleet, но это какое-то обрезанное говно которое они допиливают онлайн. Зачем её такой выпускать хз, очень странный мув
https://onlinegdb.com/Soh_GxKB5b
почему первая проверка дает false?
может я концепт same_as неправильно использу в requires?
>>860482
Спасибо что объяснили. Но это вроде статический метод включения библиотек, а есть ещё динамический. И вот вроде в нём можно положить либу рядом с exe и она будет вызывать по мере необходимости. Если не проебался гайд смотрел глубоко ночью, то плюсы и минусы есть в обоих методах.
>>860735
Если смогу вкатиться в опен сорс, мб смогу оформить себе Clion. С другой стороны, если разберусь с Эклипс - в этом не будет необходимости. Тем более если с библиотеками всё равно работать в ручную, по большей части, то и смысла в clion нет.
До линукса ещё не дополз, но уже надо Centos изучать. Но это можно и на OracleVM замутить. Но раз зашла речь, то вопрос такой.
Насколько сложно собрать предельно легковесный линукс, но с поддержкой CUDA, для выполнения кода? Просто чтоб заюзать больше ресурса, который раньше мог бы уходить на всякие кнопочки и виджеты бубунты/винды.
>>860984
А теперь расскажи почему.
просто ставишь спин федоры минималистичный, который понравится и все. например с i3wm https://fedoraproject.org/spins/i3/
Хех. Это так в учебнике Лоспинозо проверяется наличие оператора += у типа в шаблоне. Проблема в том что концепты в С++20 успели видимо синтаксис изменить с тех пор как учебник написан. Теперь
requires (T x, U y) {
{expression} -> concept
}
А в книжке
requires (T x, U y) {
{ x += y } -> T
}
Да я хочу VPN поднять, а для него вроде проще всего юзать именно centos. Тем более сервак и так будет виртуальный, так что легкость и прожорливость оси имеют значение.
Линукс это не винда.
Устанавливаешь минт (или росу если не хочешь gtk оболочку а хочешь lxQt или kde) с оболочкой которая больше всего подходит под комплюктер.
Попсовый, хорошо известный и поддерживаемый дистр с перделками свистелками и красивыми обоями из коробки, чтоб не пердолится и не настраивать.
В минте или росе включаешь в специальной утилитке проприетарные дрова nvidia (чтоб опять не пердолится) находишь где надо этот твой cuda sdk под линупс компиляель с ним программу переключаеешь в tty1 (то есть выключаешь товарища графони и переходишь в сосноль ) запускаешь там свою программу профит.
Как перейти в tty и все остальное сам уже разберешься, главное почему роса или минт потому что они хорошо настроены из коробки при этом в первом случае это 100% пакетная база убунты а во втором нпято близкое к федореному горю, соответственно проблем с установкой куды под убунту или федору проблем не будет.
Ты немного не так понял.
Виртуалка для сервака - Centos.
Реальная ось на реальном ПК - для работы с CUDA. Конкретно для высвобождения ресурсов. Написать можно на винде, а запустить уже под линуксом. Глядишь чуть-чуть быстродействия смогу получить за счёт легковесной ОС.
Логинишься не в иксы а в tty без оболочки и все, потом обратно.
Минималистичная ос тебе не нужна, ты на ней заебелься проприетарные дрова устанавливать и куду свою.
Бери стандартные.
Тупоскриптеры постоянно используют констрайнты в дженериках. Но там все проще и ограничивается extends и иногда тенарным оператором на типах https://www.typescriptlang.org/docs/handbook/2/conditional-types.html
>>861334
Ты не лучше.
Ну так я ваще тупой зумер
userver
Как правильно искать overlay программы или примеры для c++? Пару лет назад видел у R6S киберкотлеты реалтайм оверлей с температурой и загрузкой CPU/GPU который выглядел как консольная строка вверху экрана, только без самого окна консоли. По сути это должно было быть консольное приложение, но в безрамочном режиме. Как такое написать или нагуглить?
Говорит же развлекался с питоном раньше в одиночестве, решил вот взяться за плюсы. Не набрасывайся а объясни чем плюсовики увлекаются.
жирными бабищами с большими отвисшими ООПаями
Нужно ли при определении класса всегда создавать конструктор копирования, деструктор, конструктор перемещения, оператор переобразования и тп. ?
Лучше взять нормальную книгу и прочитать ее
Конструктор и деструктор обезательно, оператор и константы-"геттеры" нет.
Экстерн нужен что бы сказать компилятору что у тебя функция/конструктор будет объявлен позже, но пусть все знают что она есть.
На работе есть температурный котёл, в нём два датчика. Один измеряет температуру корпуса, второй температуру содержимого. Показатели передаются в arduino, с него через монитор порта в компик. Там в простой программе данные выводятся на экран каждую минуту с этих датчиков. Просто в одну строчку через пробел. Интернета на ноуте цеху и не будет, юсб работает только один, и в него уже воткнута ардуина. И есть старый телефон на андроиде. Нужно сделать так, чтобы данные отправлялись смской по мобиле. Я предложил такую структуру: не отключать на экране телефон никогда, оставить открытой прогу с смсками, а этот ноут подключить к мобилке как блютуз клавиатуру.
Вопрос: как сделать так, чтобы печатать на клавиатуре ноутбука, а цифры набирались на телефоне? Я пробовал свою блютуз клавиатуру дома подкл, она нормально работает. А вот как ноут превратить в эту зуб-клавиатуру ну могу догнать
>Экстерн нужен что бы
extern нужен чтобы сказать что переменная (ее начальное значение) определяется в другом модуле, а там где extern там только декларация переменной. Функции все по уморчанию extern. Чтобы их сделать локальными нужно сделать их static
Т.е от этого зависит какую информацию компилятор оставит для линковщика. Есдли переменная extern, то линковщик будет искать ее в другом объектном модуле, чтобы связать.
В чем принципиальная разница между отправкой с телефона инфы и напрямую с ардуины через гсм модуль?
> всегда создавать конструктор копирования, деструктор, конструктор перемещения, оператор переобразования
в 99% случаев да
> Нужно ли применять ключевое слово extern для всего содержимого файла ?
в 99% случаев нет
Но а если у меня в коде не будет задействован конструктор копирования, перемещения, операторы и деструктор ?
Ну как бы не совсем. "Модуль" возникает уже при компиляции объектных файлов, а сам по себе язык не содержит семантики архитектуры приложения, даже препроцессор это по сути не си и не плюсы уже, а extern именно что паттерн языка и говорит он что эта функция - есть:
extern "C" { void foo(); }
Но она будет объявлена после.
Это придумано не для модулей, а для того что бы функции например взаимовызывали друг друга без экстерна как ты объявишь иначе?
Я попробую задать завтра такой вопрос. Ине поставили очень жёстко задачу использовать вариант, который я описал выше. Рискну уточнить
Не понял тебя. В С++ и так если напишешь сто раз
void foo();
void foo();
void foo();
То все нормально соберется. Деклараций функций может быть сколько угодно. Проблема в переменных. Там декларация = определение пока ты extern впереди не написал.
extern "C" в плюсах это вроде только для совместимости с сишным кодом
Ну и задача не совсем понятна. Тебе для чего нужно отправлять эти данные? Ноут, который с ардуиной связан подключен к сети?
Сап крестоносцы, дело такое, сам пишу на java и работаю соответственно spring макакой. На этой неделе уволили с работы, пару дней сижу и вала ебу с выгоранием. Давно хотел что-то новое попробовать, решил взяться за кресты, у меня есть две-три недели исключительного кайфа без ебаной работы. Так вот, пришел к вам с вопросами, в основном они вам наверное тупыми покажутся, ну да похуй
1. В основном на джабе пишут веб говно, особенно ентерпрайзное, у вас так же? Или с++ используется везде и по чуть чуть?
2. Каким веб фреймворком вы пользуетесь на крестах? Нашел вот эти
crowcpp.org
oatpp.io
3. Что нужно знать джаба макаке перед тем как браться за кресты?
Щитаю уж лучше с вами пообщаться чем читать мусор копирайтеров которые друг у друга пиздят калтент как обезьяны пиздят бананы друг у друга на тайланде
Джава дэбилы со сборщиками мусора умудряются писать код который по памяти течет, какие вам нахуй плюсы брат.
Ты вообще куда-то не туда забрел, веб на плюсах действительно странно, иди лучше го какой-нибудь поковыряй или питон.
А тебе вообще для чего? Целей своих ты так и не написал
Это платформозависимая вещь, на линуксе это можно сделать через kms\drm драйвер ядра
То есть нужно искать либы для Win11 на С++? А есть какие-либо стабильные и популярные либы для работы получения системных параметров? Типа...
"Процесс жрущий максимум оперативы/CPU/аптайма диска в данный момент". У меня на 8.1 стояли гаджеты для этого, но на 11й они уже не работают. И там не было контроля над ресурсами относительно процесса. То есть нельзя было глянуть, какая именно программа резко-дерзко решила закрутить твой HDD, пока ты куришь у окна. Хочу решить эту проблему, ещё и с оверлеем.
Ну да, ты прав, это именно что объявление функции вовне, для линковки.
И семантика для разруливания указателей на уровне архитектуры есть, например restrict.
Нужно всего лишь помнить что
1) Дефолтный конструктор копирования и оператор присваивания делает буквальное копирование всех свойств, следовательно если у тебя есть указатели внутри твоих данных то они будут также скопированы. У тебя может получится что копия будет содержать указатель на на одни и те же данные что и оригинал. Если общие данные разрушаются в деструкторе оригинала или копии, то копия или оригинал соответственно получают UB.
2) Буквальное копирование может быть затратным. Иногда хватает перемещения вложенных данных из оригинала в копию. Следовательно нужен не дефолтный оператор присваивания перемещения.
3) Если есть наследование. struct B: A {} то при
A b = new B;
и если деструктор ~A не виртуальный то у b будет вызван деструктор ~A, который может не учитывать свойства из B. Следовательно нужен не дефолтный деструктор.
4) При динамическом выделении ресурсов (в том числе памяти) следует использовать паттерн RAII чтобы не было утечек. Но RAII не избавляет от возможной двойной деаллокации. Соответственно могут быть нужны конструкторы и операторы копирования и перемещения
5) Следует обратить внимание на правило пяти, есть табличка в каких случаях какие дефолтные конструкторы и операторы генерирются.
6) Лучше руководствоваться принципом что явно не разрешено то запрещено. Следовательно в коде лучше явно удалить дефолтные конструкторы и деструкторы если ты их не собираешься использовать.
7) Если ты не собираешься на дядю работать, то глядя на эту порнографию лучше писать пет своей мечты на расте наверное.
> graal vm
О, это то самое о чем говорили софтовики из мцст, универсальный вм с фирменным джитом для всего.
Они тоже делают https://m.youtube.com/watch?v=vw6pZd8wamw но бля почему на это деньги не вяделяют команду не собирают, почему вечно какие то студенты джавы портируют да дяди на энтузиазме за низкую зп.
Где обещаная поддержка айти. Нихуя не понимаю.
Бля пиздец чел, я то думал у тебя интересная задача с рисованием поверх оконной системы, а ты неиронично строчку в гугл написать не можешь
>А тебе вообще для чего? Целей своих ты так и не написал
Да никаких целей нет, говорю же, выгорел, заебала джаба, как вижу эти блятские аннотации с названиями классов на пол экрана аж блевать тянет. Просто хочу посидеть для себя покодить и открыть что-то новое
>>862697
>>862778
>На плюсах пишут всё, кроме веба.
>веб на плюсах действительно странно
Ну раз не пишут то окей, а что вы пишете тогда?
>Ну раз не пишут то окей, а что вы пишете тогда?
"Мы с Тамарою в нии программируем хуи"
Что душе угодно.
К сети не подключен.
Нашёл, что можно использовать hidclient. За ночь научился устанавливать линукс. Сейчас нашёл архив с этой программой, ищу, как компилировать
По какой-то причине переодически сбоит, отрубается USB (высокая частота опроса? слип 3 мс), также после сбоя или иногда использования не выключается винда (толи неверно эмуляция vigem запускается)
Может кто знает в чем может быть причина? Может есть какие идеи? (Сам уже хз куда копать, где найти баг)
Проект интересный, с кучей фишек, код не самый красивый, постепенно улучшается, на 1000 строк.
*толи неверно эмуляция vigem завершается, то ли хз
Ну раз появился откати до версии где его не было? Какое решение ты от нас ждешь? Вряд ли тут кто то страдает как и ты такой же хуйней. Можешь еще разработчику написать
> Ну раз появился откати до версии где его не было?
В старых нет нужных фишек
> Какое решение ты от нас ждешь?
Может кому интересно будет поискать
> Вряд ли тут кто то страдает как и ты такой же хуйней
геймеров среди разработчиков немало, может кому-то будет интересно
> Ну раз появился откати до версии где его не было?
В старых нет нужных фишек
> Какое решение ты от нас ждешь?
Может кому интересно будет поискать
> Вряд ли тут кто то страдает как и ты такой же хуйней
геймеров среди разработчиков немало, может кому-то будет интересно
Несколько часов работает, в простое, потом перестает работать и vigem виртуальный контроллер остается, но ни как не реагирует
Спросил. Сказали, задача была конкретная, никаких других вариантов.
Откатывай по чуть-чуть версии смотри в которой бага нет, дифай изменения и ищи что там и как перепиливалось и найдешь.
У меня в конторе студенты бинарный транслятор писали с x86 на эльбрус недавно за зп кассира в пятёрочке)
Каким нужно быть упоротым ебланом чтобы всю эту хуйню дрочить
Потому что когда мы принимаем && нам как бы нахуй не нужно конструировать что то.
1. Прошивки для вибраторов
2. Никаким, владельцам типичного бизнеса дешевле во всех смыслах нанять java/python/golang крудошлепов.
3. У ресурса/памяти 1 владелец, владелец живёт, пока он нужен, когда он не -- самой за собой говно: деаллоцируй память/отпусти ресурс. Все остальное -- это причмокивания, а это база
(Ядро, сбер, т-платформы, роснано) эта компания ест слишком много бюджетных средств (МЦСТ).
Пиздец. Как будто чиновник сидел придумывал. Так и не въехал что к чему и почему.
Как я понимаю:
Когда функция принимает &&, ей в целом похуй что ты ей дал. Рвал? Отлично. Лвал? Заебись, работаем.
Когда функция принимает & или значение, ей приходится создать объект из твоей рвал ссылки и она воспользуется мув конструктором.
Какая-то жопа выходит.
Функция принимает аргумент&& и ей на входе приходит &&, и отчего-то move может не произойти. Бред.
РефРеф - это универсальная ссылка. Значит прийти может что угодно, а не только РефРеф.
Двачую, что там вообще могли написать студенты, причем даже не "вчерашние" студенты как написал чел, а буквально студенты и скорее всего 3 курса
Унипро что-ли? Разве они jit x86->e2k писали?
Категории выражений.
Продается юрлицам под подписку.
Плюсы являются memory safe, так как иначе это UB, а делать UB в плюсах запрещено. На щеглов похуй.
> extern "C" в плюсах это вроде только для совместимости с сишным кодом
Это чтобы использовать сишный ABI. Тогда имена функций будут не заманглены, и их можно будет по имени звать из DLL.
А через сишный ABI уже можно будет вызывать твои функции из других языков.
Код на С++ это набор объявлений. Некоторые из объявлений могут быть одновременно определениями. Внутри определений могут быть другие объявления, а также выражения. Выражения могут быть только внутри определений. Примеры выражений:
x = a + b;
++x;
x;
Не следует путать int x; и просто x;. Первое - объявление и определение, второе - выражение. У выражения есть тип и есть категория. glvalue (не gvalue как ты написал неправильно) это одна из разновидностей категорий выражения, указывающая на то, что выражение обладает идентичностью и постоянным местом в памяти. rvalue это наоборот что-то временное, сущность у которой можно забрать право владением ресурсом. lvalue - подвид glvalue, у которого можно взять адрес в памяти и еще некоторые другие вещи можно с ними делать. prvalue - это подвид r-value, которые не могут быть полиморфными и обладают еще некоторыми ограничениями. xvalue - это подвид одновременно и gvalue и rvalue, своеобразный гибрид, который имеет идентичность, но в то же время, у которого можно украсть ресурс.
Примеры:
10; prvalue
x; lvalue
x + 10; prvalue
x = y; y неявно преобразуется в prvalue, все выражение целиком имеет категорию lvalue
"mudak"; lvalue
std::move(x); xvalue
f(x); prvalue если возврат по значению
g(x); lvalue если возврат по ссылке
r(x); xvalue если возврат по правой ссылке &&
Правыми называют национал-социалистические ссылки
Случай со строковыми литералами может подорвать неподкованных, тут лучше пояснить.
Это абстрактная демогогия.
Зачем они и для чего их ввели вот в чем вопрос.
Что они дают компилятору (если это очередной слой абстракции для реализации статического ооп ) или программисту (помимо запутывания).
Ввели все это, чтобы поддержать семантику перемещения, чтобы увеличить производительность программ и удобство написания кода. С++11, где все это появилось, далек от от классического С++ гораздо больше, чем классический С++ далек от С, можно сказать, что это новый диалект языка, возвышающий его над всякими жабами и шарпами.
> чтобы поддержать семантику перемещения, чтобы увеличить производительность программ и удобство написания кода
Так нет никакой семантики же, std:move() можно юзать как угодно пихать куда угодно, при этом реально никуда никто не перемещается потому что на самом деле просто свайпается указатель/аллокатор данных внутри классов (типа как в си всем известный макрос). Либо ничего не свайпается потому что программист не понял сути и тыкает функцию после копирования или перед копированием.
r, g, x, pr value вообще ничего не дают ни языку ни программиста ни компилятору, они есть только в голове тех пто их придумал.
Если просто написать std::move(x); действительно ничего не переместится никуда, x скастуется к правой ссылке на x.
Если написать y = std::move(x);, то вызовется перемещающий конструктор, и владение ресурсом (если он есть) переместится от x к y.
Глвал пюррвал и Хвал не выдумали, они появились при попытке осознать что можно,а что нельзя мувать.
В повседневном использовании тебе вообще поебать на них, это верно. Это инструмент дизайнеров языка.
http://www.fefe.de/c++/
Ссылка на ссылку, блять.
Слишком много написано, в основном боль неосиляторов, которой никого не удивить.
Сменить командную строку на MSYS2.
> GCC но в нём не работает setlocale(LC_ALL, "Rus"). Как-то можно поправить?
В GNU libc такой локали нет, вынь пробку майкрософт из попы и поищи стандарт (скорее всего что-то вроде en-US ru-RU.UTF-8 ja-JP.JIS)
Во-первых, используй std::boolalpha вместо пиздеца, который ты написал.
Во-вторых, false выдает из-за несоответствия типов. Оператор += возвращает ссылку на double.
Плюсы нужны, чтобы докопаться до истины Вселенной, для всего остального есть питон и жабаскрипт.
Чтобы выжать максимум производительности из железа.
Никто "так" не пишет. Это был разбор как работают концепты в плюсах. Полный код с концептом Averageble
надеюсь помог )))))
p.s. - магистерские лекции по с++ не зашли, много воды.
Ты что несешь понимаешь? То у него стиль СИ, то теперь СИ с классами, вращаешь своей жопой прямо в полете.
Где это начинается и заканчивается? Писать надо понятный и хороший код, хороший в категории плюсов производительный и безопасный. А если ты хочешь дрочить, заниматься хуйней, а не программировать то иди хаскель какой-нибудь тыкай, а не энтерпрайз язык
А че там непонятного. У тебя есть шаблоны. Шаблоны в плюсах слишком общие. В них сначала типы подставляются, а потом они компилятся, те работают как препроцессор фактически. Из-за этого:
1. ошибки в шаблонах наркомансие непонятные
2. типизация хромает по сравнению дженериками в том же шарпе, где ты на тип накладываешь ограничения. Ведь если ты внутри дженерика итерируешь, ты должен как-то в шаблоне заявить что тип ирерируемый.Концепты решают ту же проблему что where T: Inteface в шарпе
>Ты что несешь понимаешь? То у него стиль СИ, то теперь СИ с классами, вращаешь своей жопой прямо в полете.
Не нужно прикидываться дурачком, ты понимаешь о чем я.
>При том, что нужно писать на новых плюсах, а не на си с классами.
Стиль Qt мне кажется гораздо более читаемым и удобным, чем то, что комитетчики толкают в новых плюсах.
Писать надо код, а не инструкции для генератора кода. Если ты не программист, а макака обслуживающая генератор, пиши сразу на питоне, ведь это и есть твоя мечта.
> магистерские лекции по с++ не зашли, много воды.
Я даже не могу представить где воды меньше
Почему не rsync? Там вроде можно настроить поведение.
Он постоянно показывает примеры с кодом, говорит про функции, а мне хочется кишечек, не воды.
Если тебе не нужны примеры и объяснения, то просто иди на цпп референс/стандарт и зачитывайся
На завод да.
Туда можно в целом и без знаний.
Знаю что в ЦАГИ есть внутренний курс по плюсам, походу настолько все плохо.
Предлагаешь ебашить на ассемблере? Ведь любой высокоуровневый ЯП это просто набор инструкций для генератора кода.
Какого вката, конкретнее мысль. Озвучить в общем вводные и свои цели
всем привет я новенький как тут дела у вас
стагнируем
А при чем тут платежная система
Подскажите, пожалуйста, что можно почитать, чтобы вникнуть в программирование микроконтроллеров stm32.
Нет, я ещё не всё ноги отстрелил.
Но учитывая то, что когнитивная нагрузка во время использования плюсов растет экспоненциально, я скоро не смогу писать на современных стандартах.
В общем. Есть ли какой-то пакетный менеджер для C++?
Чтобы типа прописал в файлике зависимости. Сделал cpppm install - и все само на нужной машине докачалось в какую-то папочку packets?
Ну не может не быть. Не поверю, что в 2023 году - надо все еще возиться с MAKE'ом и руками качать все библиотеки нужные, разбираться че там с чем взаимодействует и прочие вещи делать.
Conan и vcpkg
> Чтобы типа прописал в файлике зависимости. Сделал cpppm install
К сожалению, ебаться ещё придется
Если пользуешься симейком то самый простой способ - качаешь себе локально пакет - в симейке прописываешь add_subdirectory(...) - добавляешь нужные таргеты куда тебе нужно
Делов на минуту
> Ну не может не быть. Не поверю, что в 2023 году - надо все еще возиться с MAKE'ом и руками качать все библиотеки нужные, разбираться че там с чем взаимодействует и прочие вещи делать.
Ну так по заветам дедов, пэкедж менеджеры это утерянные технологии
хотя мейком сейчас наверное совсем дедушки пользуются, есть симейк, сезон, премейк и так далее
Теперь продавай.
Тогда тебе волноваться не о чем. Новые сьандарьы говно и нахуй не нужны в большинстве своем.
Начиная с 11.
Старый код продолжает работать. Можно начать помоленьку писать на новых рэнджах. Совместимость 100%.
Да все
Так ренжи достаточно простая концепция, как и отображения. Если не особо задумываться как оно там работает. Концепты мой мозг сильнее насилуют. Но я так понял, что везде есть пара сильных челов, что пишут шаблонный код, а остальные смотрят на них как на аутистов и используют эти поделки.
> Концепты мой мозг сильнее насилуют
Чел... Концепты самая простая вещь в плюсах Типы для типов
Ага, а темплейты это просто подстановка типов, что сложного
Для понимания простая, а использовать их ебля неимоверная. Именно свои создавать, а не уже существующие. Ну или я не осилил, хотя мне и не особо надо было.
Просто бредовый же какой-то ситль. Вот я в старом C++ коде видел более приятный с f_fieldName. Ну или _fieldName. Или вообще идеальный: fieldName. А тут какое-то непонятное _ в конце.
Везде по разному.
Алиса код с яндекса слизала, а яндекс, как известно, говно.
>Вот я в старом C++ коде видел более приятный с f_fieldName. Ну или _fieldName
> А тут какое-то непонятное _ в конце.
Сорта говна, в последнее время чаще стали писать m_var
В последнее время? Так писали динозавры когда из иде был только вим.
>>870338
Лично мне не нравится что такой стиль системщину напоминает. Вот там реально пиздец с их акронимами в три буквы, бесконечными подчеркиваниями и тп.
А вообще спалить дауна по код стайлу изи, он не переносит скобку на новую строку
>это реально у вас так принято код писать, или это алиса с ума сошла?
Определять методы в теле класса - порочная практика. Годится только для кратких иллюстраций.
Вот в частности уже на твоем пикриле приходится домыслы строить из-за того, что суть засрали определениями.
>вообще идеальный: fieldName
Ога, идеальный.
Тебе придется:
а) ебать мозг на выдумывание синонимичных имен для параметров конструктора;
б) потом ебать себе мозг, сопоставляя имена параметров с синонимами;
в) нельзя иметь метод с именем fieldName.
>какое-то непонятное _ в конце
Чисто служебная информация, самое ей и место в конце. Начало слова для человека всегда бол инф нес, ем нец ова. Поэтому чтение кода с префиксами требует больше внимания.
Один малюсенький символ в самом неприметном месте. Что можно лучше вообще придумать?
> ебать мозг на выдумывание синонимичных имен для параметров конструктора
this->fieldName = fieldName
Чи в плюсах так нельзя? Вроде помню что можно было. В вузе-то так и писал.
> потом ебать себе мозг, сопоставляя имена параметров с синонимами
Допустим this-> действительно нельзя. Так а в чем проблема, я проинициализировал в конструкторе, дальше - просто использую, че там сопоставщять-то?
> нельзя иметь метод с именем fieldName
Это уже вообще странный доеб.
Во-первых, потому что раз это метод, он должен состоять из двух слов в любом случае. Глагол+Сущестительное. Это обычная практика. Что делаем и с чем. getAge, setAge. Исключение - ассесторы для булевых значений, там обычно is как префикс. isRunning, isConnected
Во-вторых, если это реально валидный доеб. Ну, тогда к языку вопросы, ведь и метод f_field, field_, _field - тоже нельзя будет. Беда-то какая. Надо срочно новый язык, чтобы было как-то так: this->methods->field или как-то так, чтобы можно было мешать имена полей и методов.
> Чисто служебная информация, самое ей и место в конце
А мне вот удобнее было бы, чтобы я написал f_ и все поля класса в выпадающем списке увидеть, потом найти то что надо мне.
>раз это метод, он должен состоять из двух слов в любом случае.
T age_; // поле
T age() const; // гет (подчеркивания в конце нету)
void age(T newSize); // сет (подчеркивания в конце нету)
>Это обычная практика. Что делаем и с чем
Из контекста итак очевидно, где гет, где сет. Как по мне, писать их явно - лишнее, как и добавлять сюда название класса
vector.size(); // пизже, чем
vector.getVectorSize(); // зачем тут эта бредовая обстоятельность?
>Во-вторых, если это реально валидный доеб.
В части явного написания префиксов гет/сет - вкусовщина.
> ебать мозг на выдумывание синонимичных имен для параметров конструктора
>this->fieldName = fieldName
Многословно.
>А мне вот удобнее было бы, чтобы я написал f_ и все поля класса в выпадающем списке увидеть, потом найти то что надо мне.
А мне вот удобно не потом, а сразу найти, чо надо, а не устраивать всякий раз инвентаризацию всех полей.
>в чем проблема
В том, что одно и то же имеет разные имена.
class Item {
Item (int price) : cost = price;
void setValue(int price) {cost = price;};
int getValue() const {return cost;};
int cost;
};
>чтобы я написал f_ и все поля класса в выпадающем списке увидеть
По-хорошему, все поля запривачены.
Не так уж и часто тебе вообще доведется добираться до полей через список.
>в плюсах так нельзя?
можно но есть шанс что отвалится жепа - стандартный ответ на любой вопрос в крестах
конкретно с this-> может сдохнуть мать если написать/не написать это в конструкторе при особом стечении трехэтажного виртуального наследования и еще какой-то залупы щас не помню
Бля наверное я тупой и мне не нужно было даже суваться в эти плюсы ебаные? У меня тряска пиздец каждый день что я лоу айкью дебил
Никак. Копипащу куски из ближайших частей проекта, колупаю методом тыка пока не заработает. За два года еще не спалился, но и прогресса тоже нет.
>Вот вас по сути наняли решить какую-то проблему и оставили один на один
Все проблемы уже кто-то когда-то решал тем или иным способом. Сиди читай, выискивай, гугли, спрашивай совета в инете.
Подчеркивание спереди нельзя по стандарту (не везде и с первой заглавной буквой ЕМНИП), поэтому обычно используют подчеркивание в конце.
Почему не std::queue?
Если это не в разных потоках, то зачем вообще стрим, а если в разных, то очереди.
Стандартом, кажись, только двойное подчеркивание зарезервировано.
multimap
Хуярь структуру не думая
Всё так и надо. Хороший код. А всё, что ты видел раньше - говно.
Вот блин, я у Алисы тоже самое спросил, и получил уже другой ответ. Теперь _ в начале переменных.
Нах ваши коды настоящему AGI нужны? Он будет сразу в машинный код хуярить прошивку для T-800.
>и жрут говно под названием ООП
А ты думал натянутая на глобус сова, где данные объединены с методами их обработки, и с паттернами с названиями вроде "мост", "фасад", "фабрика" - будет работающей?
История развивается стихийно, сделали какую-то всратую хуйню чтобы хоть как-то разделять большой код на модули - продали менеджменту, оно и прижилось.
В идеале ты должен владеть всем - и ООП, и ФП, и процедурным стилем, и применять каждый там, гле это требуется. Это я сейчас не про С++ конкретно, это я вообще.
Так и скажи, что не осилил.
> "мост", "фасад", "фабрика"
Не пользуйся, пиши if-else лесенки, ебись с поддежкой кода.
>Так и скажи, что не осилил.
АРгумент уровня фаната ООП.
Что там можно не осилить, несколько базовых абстракций?
Ты так и не понял зачем все это, раз говоришь, что ООП - натянутая на глобус сова.
Ну это твоё утверждение, ни на чём не основанное.
А по сути ФП хотя бы основано на теории категорий, что есть маетиматика. А ООП на чём? На бытовой реальности, судя по терминологии?
Но ведь даже с ней оно не перескается. Ведь стул не содержит в себе конструктор для новых стульев, ни даже сеттера для цвета и веса. А сидеть можно не только на стуле, но и на перилах, анпимер, хотя в них не описали интерфейс Sittable при проектировке. А, например, метод "гулять и веселиться всей компанией" не привязан явно ни к какому конкретному объекту, по крайней мере в мышлении психически здоровых людей, чей разум не осквернен ООП.
Ну и так далее. В общем, пиши интуитивно понятный AbstractSIngletonFactoryProxyAdapterBean ИТТ, иначе обосрёшься.
Чел а ты кажется вообще не здесь и не понимаешь ни примерно где находишься, ни что тебе люди пишут. Дурачок одним словом
Есть его методы, которым надо только паблик данные (и методы) для своей работы.
Что бы мне написать, такого,... чтобы не было возможности у таких методов лезть в прайват поля и методы этого класса?
То есть я хочу чтобы моя функция, которая принимает первым аргументом объект этого класса и что-то там считает не меняя объект, стала частью этого класса. Но при рефакторинге класса, мне бы не пришлось в неё смотреть, потому что я ТОЧНО ЗНАЮ что она только с паблик работает.
Хочу сделать её методом, для удобной подсветки в IDE, но чтобы не пришлось внезапно случайно её написать заново в третий раз, когда забыл что такая функция существует. Чтобы проще было вкатиться читающему код... и т.п.
чё у вас за vector_name.d блять? лень сука полностью написать? direction??? distance???
мимо c#-господин
Да, лень. А что? Сколько раз нажимаешь таб при написании одной строчки кода? Он у тебя не стёрся ещё?
Один таб на каждый цикл. Лучше чем стрелочки со звёздочками писать.
Напердолил примитивный недо-брокер сообщений, дайте кодревью что ли.
Добавь возможность останавливать воркеров.
Нет, нам и здесь хорошо.
> нюфаг начинает программирование с симулятора манагера погонщика рабов
Сразу видно прирожденное быдло, все в говноманагеры метят с самого начала.
Что такое брокер сообщений и нахуй он нужен?
>А зачем потоки детачить?
Там же потом главный поток срёт в пул данными для тестирования.
>И мьютексы в плюсах так никто не локает
lock_guard? Забыл про них, давно не писал на крестах.
Если заджойнить то главный тред заблочится и будет ждать пока треды отработают, а там в них вечный цикл.
Суть в том что открепленный поток может продолжить исполнение после завершения твоего мейна.
А как правильно тогда? Вроде у Мейерса читал что всегда надо так: заспавнил тред - заджойнил/задетачил.
Анон, я тебе скажу как, и вообще это общее решени для большинтся вопросов итт.
Берешь качаешь сурсы чего-то крупного из прода, и смотришь как твоя фича-нейм реализована там.
Берешь нгинкс и смотришь как у них там пул потоков реализован, ну или тбб какой нибудь.
> ооо, щас посмотрю как там в бусте это реализовано
> в исходниках происходит полный мрак, ассемблер более читаемее
С подключением.
Третий дебил (я)
Мне тоже тяжело ориентироваться в исходниках крупных проектов, и зачастую я либо подключаю cheat engine для трассировки, или вообще запихиваю бинарь в иду, в обоих случаях получая в разы менее громоздкий код. Абстракции и динамические типы -- для пидоров.
Чел ты ..., блять вы даже пост в три строчки прочитать не в состоятии - куда вам на плюсах писать?
Привел пример простых целевых либ - нгинкс и интел тбб посмотреть тредпулы - что там сложного?
Нет дебичи про стандартные темплейт либы, которые внезапно не иллюстрирую реального решения вышеупомянутой задачи.
Единственный умный (я) в море дебилов
Пишу на шарпе, расте и питон-мл и не имею никаких вышеописаных проблем.
Уже написал что-то кроме helloworld ?
Так не отвели что у троих бичей жопа треснула и на выш визг шарпист прибежал?)
СиЕшка также отображает треды и позволяет между ними переключаться. Как правило, меня интересует результат выполнения конкретной ветки кода, и я смотрю её в иде. Если там насрали динамическими вызовами, то приходится трейсить. Зачем мне ещё одна программа для этого?
Где-то 4 года назад я заходил к вам в тред и добрый анончик помог мне, хочу попросить вас о помощи снова.
Нужно сбилдить Aseprite из сорсов https://github.com/aseprite/aseprite/releases
Если кому не впадлу, помогите, пожалуйста, с меня как всегда.
Есть, но мне нужно устаналивать много чего, а у плюсовиков по-любому у кого-то уже установлено это всё. В этом и суть просьбы, как бы.
Дан CRTP-интерфейс, стандарт с++20. Как сделать так, чтобы при попытке передачи в функцию f структур наподобие Fake, где нет своего нужного метода (например sound()), выдавалась ошибка компиляции.
Пробовал создать концепт requires (T x){x.sound();} и даже requires (T x){x.T::sound();} - метод sound() считается принадлежащим типу T, даже если он просто унаследован.
так-то в цртп имена интерфейсных методов и их реализации обычно делают разными в том числе чтобы не ебаться с этим
Щас домой приеду и скину ему малварь
он реально собирался бинарь от рандом анонс запускать?..
Сбилдить под что?
Так там даже вроде есть билд, или первый .zip это не оно?
Может, умение запустить apt-get в баше. А может, написание драйверов и модулей ядра. Зависит от вакансии.
Что за книга была в шапке самая первая? По ссылке в вк файл удален
Я с тобой согласен, что без _. Но лучше - field_name. Всё равно, если код не знаешь/не понимаешь и не хочешь этого (особенно если тема кода говно, и проект говно), то никакие подчёркивания не помогут. А если код топчик или просто интересен, и у тебя к нему нет негативного настроя типа ФУУУ ГАВНО, то хоть код на сях вроде ffmpeg'а разберёшь и nginx'а с переопредлёнными handler'ами на каждом шагу
Какие подчёркивания? Вы ебанутые? С тредом пидорасов джавистов перепутали?
Удваиваю вот этого господина >>875554
Просто, сука, нормально научитесь именовать. Даже для простых как пробка set/get это будет set_field_name и get_field_name. Уже не говоря про тот случай, если вы функции верблюжьими горбами городите.
>ебать мозг на выдумывание синонимичных имен для параметров конструктора;
Если использовать инициализацию, а не в теле конструктора срать, то не будет коллизии имён.
А вот сраньё в тело конструктора уже достойно ебли с именами. Потому что ты нихуя не тривиальную вещь делаешь.
>Если
Это и есть ебля мозгов.
Тебе в Стандарте чтоле "еслей" не хватает, еще надо выдумать на ровном месте?
Нахуя тебе тело конструктора? Чтобы исключения и говно кидать?
Если там что-то есть - это какая-то логика. Преобразование данных. И это, как минимум, значит что входные параметры конструктора не равнозначны полям, которые инициализируют. Это значит - разные имена.
А я напомню, что ветка начинается с проблемы именования.
Здесь проблемы нет, есть хуёвые "бест практисес" от "гуру индустрии". Стандарт ещё зачем-то приплёл.
Я-то откуда знаю? Слюнки тебе подтирать поди. Твоя мать - тебе знать.
Побитовые сдвиги? Ты ими можешь заменить только умножение/деление на 2
И то в том случае компилятор скорее всего час соптимизирует
Тогда почему в любом коде который я открываю этих сдвигов половина сама кода? В чём смысл сего действия кроме понтов?
Также почему прописывают адреса памяти константами? Разве она не должна от одного устройства к другому меняться?
Потому что ты открываешь какой-то эмбедерский код. Сдвиги юзают не только для арифметическмх операций. Например, ими удобно установить нужное значение одного или нескольких битов.
>Если там что-то есть
Не еби мне мозги своими еслями.
Я 1 раз подумал и выработал методу, которая никогда не подведет без всяких если.
Больше к этой хуйне я возвращаться не намерен.
>которая никогда не подведет без всяких если
И потом вот эти хуи ещё права на работе качают.
> я синьор-помидор
> нет, моя ценнность исходит не из знаний говна видеокодеков, в которые никто кроме меня лезть не хочет, а из уникального НаДёЖнОгО подхода к С++
Держи в курсе, как смачно ты гниёшь.
Потому что деление обязано усекать к 0.
-1/2 должно вернуть 0, но знаковый сдвиг (sar) -1 вправо дает -1.
Поэтому делить на степень двойки быстрее сдвигом, или объявлять аргумент unsigned.
Если аргумент правда отрицательный, то таки да.
Есть немного. Пишу на других языках и всё равно пытаюсь не проебать 0.000001% перформанса при написании циклов, а имена переменных, методов и классов придумываю максимально краткие, будто завтра у меня отберут IDE и заставят писать в виме.
Да, смотришь на другие языки и пикрелейтед
>Деформировали ли вам плюсы мозги?
Да, определенно.
>Я в том плане как на другие языки смотрите
Я в первую очередь говорю про мировоззрение вообще, а не об отношении к другим языкам.
Я хоббист с прицелом на геймдев, как таковой необходимости тратить личное время на модные технологии у меня нету.
>как на другие языки смотрите
Вообще, смотрю с позиций минимализма, как по отношению к количеству языков в своем арсенале, так и к объему фич языка, которые мне нужны.
До крестов я немношк знал Паскаль. В силу синдрома утенка (наверное) вспоминаю о нем с теплотой. Это мое личное мерило "ламповости" языка.
Блюпринты из анрил инжайна воспринял с энтузиазмом.
Примерно так чувствую, что рано или поздно придется взяться за Питон, т. к. в своих изысканиях часто натыкаюсь на его фичи.
Если бы у меня было больше свободного времени, то я бы посмотрел че за https://ru.wikipedia.org/wiki/ДРАКОН
>переходили на другие технологии,
Поставил C++ Builder (современный).
>как ощущение?
Как в детство окунулся.
Хз, на винде всегда игнорил виртуалэнвы.
блядь, как же вы бесите, как же вы в айти вообще выживаете...
Чел там буквально msi есть. Я сам ставить через питон, хотя все равно в итоге говном этим не пользуюсь
choco install conan
Vcpkg.
>Окей, собираюсь использовать эту срань, но тут они опять настоятельно рекомендуют использовать pip в виртуальной среде
спокойной забиваешь хуй на это
всё что симейк рекомендует делать, тоже будешь выполнять?
Мде кхе-кхе да уж угу вот так-то ага
Для того, чтобы в теме разобраться, не? Или люди сразу с пониманием как компилятор работает рождаются?
>Или люди сразу с пониманием как компилятор работает рождаются?
Эм, ну да. Если ты при нажатии на зеленую кнопку в VS не знал изначально, что там в КИШОЧКАХ происходит, то вон из профессии. Тут востребованы только те, кто может байты информации из воздуха генерировать.
Уже есть.
> по системам сборки
"Смотрите в методичке к первой лабе, как создать и собрать проект в Visual Studio 2005".
> системам контроля версий
"На семинары носите лабы на флешках, потом скиньте мне их на почту в RAR-архивах".
Ваще да, но нет. Слишком простой курс будет, да и вообще это не академично, потому что это изучение слишком проходящей технологии. Даже языки толком не изучают, обычно стараются преподавать какое-нибудь ооп или алгоритмы на базе каких то языков
Мне потребовалось подключить imgui, чтобы более наглядно видеть, как что меняется от разных параметров, но теперь я потратил целый день И НЕ СМОГ ПОДКЛЮЧИТЬ ИМГУИ. Блять! На девятке это занимает меньше 20 минут!
Не понимаю, что и для чего тут создаётся, что единожды, а что ежекадрово, что для каждого ресурса отдельно, а что общее. И в туториалах об этом комментарии типа >
// create the command list with the first allocator
hr = device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, commandAllocator[frameIndex], NULL, IID_PPV_ARGS(&commandList));.
Спасибо, папаша, но это не объяснило мне, нужно ли создавать эту штуку второй раз для другого содержимого отрисовки и какое значение тут играет индекс кадра, если мы только девайс подготавливаем, и зачем вообще он тут
Есть тут, там, где-нибудь вообще, хоть на китайском, подробный справочник по d3d12 для пятиклассников, чтоб я перестал час за часом проёбывать полурандомно редактируя туториал и наблюдая за изменениями?
да, можно просто дальше идти по урокам, но дальше будет лишь больше кода и я буду лишь больше путаться, нужно изучить механику и хоть немного уметь её менять
Считаю, что в университетах вообще нинужно это ваше айти.
Университет - это про фундаментальное, а тренды в айти устаревают прежде, чем успевают появляться.
Еще забыл сказать про пакетные менеджеры. Еще можно добавить лекции по зависимостям и методам их разрешения и оптимизации.
>>880216
В учебном заведении, где готовят специалистов, хорошо бы чтобы учащиеся умели пользоваться современными инструментами, которые программисты реально используют на рабочих местах.
>>880134
Там множество нюансов, ты весь cmake знаешь? Знаешь отличия от qmake? Отличия autotools от GNU make? В чем преимущество cmake перед любым IDE?
> Это две лекции и две лабы
Ты мудак чтоль? Эти две лекции только про историю появления, назначения и виды систем сборки.
В вузе не готовят специалистов, пиздуй в шарагу ради этого. То что у нас вузы = шарага это вопрос другой
Бро ну не о чем тут говорить, это ты че ко мне приебался
>В учебном заведении, где готовят специалистов
Это про всякие ремесленные училища.
Университет готовит специалистов широкого профиля aka не пришей к пизде рукав и исследователей в фундаментальных областях знания.
>у нас вузы = шарага это вопрос другой
В этой стране статус университета присваивается тупо по формальному признаку - количество дисциплин и опять-таки формальному наличию в программе некоторых дисциплин.
Этот статус считается наивысшим, университет получает больше финансирования, чем институт или академия.
Отсюда всякие бывшие ж/д институты превратились в университеты и всякие оксюмороны навроде университета спецназа.
В этой факансии тебя попросят пройти полиграф и написать анкету. А после этого две недели на приятия решения об оффере. Зато у них всего один крестовик, им нужен еще один. Может для вкатунца это шанс на непыльную работку, не забудьте только приписать в резюме год-полтора опыта. Удаленочка.
https://hh.ru/vacancy/87323548
Здесь надо выполнить тестовое, но для меня оно занимает слишком много времени, потому что с GStreamer я не знаком (но есть хороший туториал на аглийском). И составлено как-то небрежно, написано, что три задания для разных грейдов, но заданий всего два. Плюс надо решение выложить на гитхаб, написать cmake файл и readme как собирать проект, и еще записать танец в тик-токе. Зато hh показывает, что откликов <10, может их вообще нет, может это шанс для отчаявшихся.
>пройти полиграф
Лженаучная хуятина.
Кроме того, если я их попрошу пройти полиграф, то конец немного предсказуем. Такие отношения - это не про правду, а про монополию на ложь.
Передай им от меня просьбу пройти на хуй.
Чел, тут и речь быть не может. Очевидно, что компания неадекватная, иначе просто дали бы подписать соглашение о неразглашении вместо унизительного полиграфа.
Мне тоже это говно сегодня в рекомендации вылетело.
всё вот это
Это которые от Константина Владимирова (МФТИ)? Там их два, базовый и магистерский, есть ли к ним задачи или лабы какие-то в открытом доступе? Да и вообще, норм ли материал для изучения это? Может проще того же Страуструпа почитать? Или C++ Primer?
> норм ли материал для изучения это?
Говно материал. Нихуя не объясняет, сидит лыбится. И вообще его курс как будто для разработчиков компиляторов, узкоспециализированный.
Друго дело лекции Мещерина Ильи - пишет код с нуля, старается все объяснить, прямо на занятие отлаживает ошибки.
https://www.youtube.com/@mesyarik
https://www.youtube.com/watch?v=RwziYcZD2-E&list=PL4_hYwCyhAvaWsj3-0gLH_yEZfKdTife0
https://www.youtube.com/watch?v=njfH8PHghWo&list=PL4_hYwCyhAvazfCDGyS0wx_hvBmnAAf4h
Еще вот хороший курс
https://www.youtube.com/watch?v=apUo4I4k6d4&list=PL4_hYwCyhAvY1CNC2azvnDjkQfx5_S13l
>>882031
Не знаю, у меня отвращение какое-то от всех этих лекций непонятное. Всегда читал книжки, мануалы, потом комп сидел пердолил, делал вещи интересные для себя. А вот лекции скучно смотреть, но всегда есть какой-то страх внутри, что вдруг упускаю что-то важное. Непонятно в общем. Но если кому-то лекции заходят, то добра вам.
Вообще самый топ, имхо, это вариации системы листочков, то есть получаешь список задач по теме, какую-то краткую теорию. И сидишь решаешь. Потом обсуждаешь один на один это с другим человеком знающим.
У вас в шапке на гите почти все ссылки на книги потёрты.
И похуй.
>Да и вообще, норм ли материал для изучения это?
Магистерский 10\10, но стоит учитывать что он не для новичков
То есть изучать плюсы с него плохая идея, для такого лучше посмотри лекции что выше кидал анон
но вот когда захочется узнать побольше о пмр аллокаторах, многопоток, корутины, вывод типов и тд, то магистерские лекции 10\10
Есть какое-то бойлерплейтное говно, которым нормально пользоваться пока что нельзя.
Да их никто нормально объяснить не может. Единственный вариант понять хоть что то это взять и написать свою либу по корутинам
Просто залетыши вроде тебя не достаточно разумны.
А соевые в комитете тащат в стандарт все говно подряд.
Концепцией корутин пользовались десятилетиями, переключение контекста на асме занимает одну станицу и кому надо имли свою реализацию задолго до. Как и с подавляющим большинством всего дерьма из стл.
Дед, успокойся, ты крутой, крутой, очень умный разумный
Это и бесит. Тебе надо? Ну напиши сам че ты.
А я хочу спокойно решать бизнес задачи, а не дрочить бойлерплейт по пол года.
>спокойно решать бизнес задачи
Бизнес не даст тебе жить спокойно. Если он увидит, что ты спокойствуешь, это будет интерпретировано так, что ты зря ешь свой хлеб.
Добавлю. Хоть я и хочу в первую очередь читать код, хотелось бы знать про ту самую стрельбу себе в ноги, про которую так часто говорят и как делать правильно. Может есть где-то сборник таких надо и не надо?
А сфера то какая? На плюсах все подряд пишут.
И знания для разработчиков нейронок/графики/микроконтроллеров нужны совсем разные.
Если тебе просто чтоб писать, то сиди и пиши. Ноги обязательно будут отстрелены.
Мне такого было достаточно (читал первое издание) для интеграции пачки плюсовых либ разной степени несвежести в шарпопитоны, на которых обычно и пишу. Что-то удавалось почти напрямую впихнуть, для чего-то писал сишные ьиндинги, кое-что портировал.
Не совсем правда понимаю, для чего просто читать чужой плюсовый код, если сам на плюсах ничего не пишешь, но вдруг поможет.
Геймдев, пишу скрипты для 3д игры, но так же могу заглядывать в исходники движка игры, которые на с++, чтобы искать баги или просить новые скриптовые функции.
Черрипикай что не понимаешь и SO + cppref. Что то целенаправленно читать не уверен что нужно. Точнее что оно точно покроет твои потребности.
Потому что функция не обязана перемещать и вообще что-то делать с этим объектом. Но тем не менее аргумент std::string&& - это контракт между вызывающей и принимающей стороной. Для вызывающей он означает, что переданный объект std::string в общем случае после вызова будет в состоянии moved-from, т.е. ты можешь, например, что-то ей присвоить, но читать ее нельзя. Для принимающей он означает, что ты можешь ее переместить. Ключевое слово - "можешь", делать ты этого не обязан, можешь затроллить всех и себя, скопировав ее, или вообще не трогать. Но вызывающая сторона про реализацию не должна знать и обязана предполагать, что строка была перемещена.
>>864650
Але, универсальные ссылки только в шаблонах или auto.
Смотрите: ошибка в ParentProcessWatcher.cpp лечится прописыванием #include <algorithm> в... системный wchar_t.hpp , нахуй !
Ссука, какой пиздец. Мне всего-то лишь надо было собрать одну софтину. Уверен, что у автора всё собирается нормально. И это ещё свежий софт на свежем конпеляторе, как там оно через пару лет собираться будет - никакой пхд не разберётся.
Бросайте это говно и айда к нам в раст, где любое поделие даже 10-летней давности собирается нормально.
А знаешь, помогло. Или не помогло, просто погода на Марсе поменялась и оно и так бы собралось (из wchar_t.hpp удалил). Или вот я собирал wanproxy - сорцам на тот момент было что-то года 3, а уж говна поел при сборке, боже мой.
Я к плюсам подхожу только как юзер написанного на плюсах софта, сам на расте. Можно долго спорить за безопасность, шаблоны и макросы, но вот что тулинг у плюсов ущербный, это однозначно.
Пригорело, прибежал, ага
C++ programmers in 2004: "you should move on from C to C++, C++ is so much safer, reduces mistakes and is just as performant"
C++ programmers in 2023: "what even is safety? let me split hairs for half an hour about safety definitons, moving to a safer and just as performant language is not the solution"
Sysinternals process explorer
Это системные либы, какая ещё программа?
А у меня нетути.
А зачем, если я просто беру чужой исходник и пытаюсь собрать по инструкции? Это хорошо ещё, что у меня буст оказался совместимой версии. На расте тебе кроме cargo build вообще ничего знать не нужно, а на плюсах "ты слишком тупой, чтобы использовать эту софтину, азазаз".
Заведи ишу у чела на Гите, чтоб такие же юзеры не улетали на орбиту. Ну или может чел снизойдёт и поменяет две строки местами)
Но ток проверь, что решение действительно работает)
OS Okowki
Чего у них так safety все чешется? Сейчас у плюсов вроде ниша, где текущего уровня хватает, если браузеров не считать. Драйвера и ядра пишут на безопасных диалектах сишки с валидациями и анализаторами на каждый чих, с кучей бюрократии в коде (чувак, который в MS DirectX кодил в нулевые, рассказывал, что у них операторы запрещены были, вся арифметика в обертках из функций). А на десктопе как-то пофиг, что прога изредка падает. В HPC все либы задрочены уже до каждой строчки, месяцами крутятся без ошибок нонстоп. Плюс никто уже старый код на новые безопасные фенечки не будет переписывать.
> Чего у них так safety все чешется?
Ну трястись все начали когда АНБ прямо сказало что с\с++ юзать не стоит
NSA advises organizations to consider making a strategic shift from programming languages that provide little or no inherent memory protection, such as C/C++, to a memory safe language when possible. Some examples of memory safe languages are C#, Go, Java, Ruby, and Swift.
Ну и ответить на это заявление собственно и нечем, кроме как
> just dont write bad code
> just use use CoreGuidelines
> actually your safe languages are also unsafe so everyone is unsafe
> Сейчас у плюсов вроде ниша, где текущего уровня хватает
Ну кроме браузеров есть еще и ОС, есть и различный софт который заводами целыми управляет
ну и соответственно уязвимость может тебе от телефона, до целого завода наебнуть
На твой завод и космический кал может прилететь.
Это проблема никак не решается, уязвимости будут всегда, просто потому что мир не работает по бумажкам бюрократов и идеальным формулам физиков.
Сука не туда насрал
Хмм, целый класс программ построен на UB и при этом они стабильно работают на x86..
И что ты этим решаешь?
Тебе знать не обязательно
Изи Marshal.GetDelegateForFunctionPointer
>в раст, где любое поделие даже 10-летней давности собирается нормально.
Как-то неприлично жирно, анон. Я не могу даже код годовалой давности новым компилятором собрать и приходится несколько версий в системе держать. Когда же совсем недавно на Сишке собрал код прямиком из 20-го века. Не без пердолинга, конечно, но собрал.
>Я не могу даже код годовалой давности новым компилятором собрать
Самый очевидный вариант, если ты версии зависимостей указал как "*", и после обновления ожидаемо попал. Если у тебя прям вот с твоим кодом проблемы, покажи, интересно. Хотя, тоже, скорее всего, лечится понижением edition.
>собрал код прямиком из 20-го века.
Просто сишка, да, старый код худо-бедно норм собирается, а вот с плюсами беда.
>Не без пердолинга
Ну а как же.
не подскажите, как с помощью QQueue сделать это Задание и как проверить работает программа или нет... (пикрил то что пытался сделать со свич кейс)
Что тебе конкретно подсказать? Ты в своем коде даже не попробовал использовать очередь.
подсказать, как составить очередь, как она вообще тут может работать, знаю только метод enqueue, с помощью которого можно элемент в очередь добавить
ну начни с начала... До цикла чоздай QQueue<QString> и топай читать документацию по этому контейнеру
Реши сначала, как ты будешь считывать команды с терминала.
А контейнер уже потом прикрутишь, это вообще самое просто, лол.
Я тебе о другом.
Напиши сначала код, который будет принимать команду и просто отдавать в терминал ее обратно, без обработки.
Проверка на 7-9 строках никогда не сработаеттесты изолированы друг от друга.
И хешмапа несколько раз ремаппится(лог(н))
И зачем хешмапа? Мне кажется что вектор справится, тебе все равно для каждого 0-N нужно значения хранить. Храни их в векторе длиной N.
Это рофл?
Что это за кал и нахуя он? Не, я понял, типо можно выводить типы. А СФИНАЕ все, уже не устраивает?
Не уверен что рефлексия в таком виде вообще нужна. Будет ещё одна используемая парой десятков/сотен человек опция языка.
Алсо чёт не увидел, возможна ли кодогенерация с помощью такой штуки.
Ну там есть пример с туплой, который выглядит ничем не понятней шаблонов но почему то преподносится как революция.
>Не уверен что рефлексия в таком виде вообще нужна.
Нужна в любом виде. Хоть какая. Все что угодно лучше, чем самописные уродцы на макросах и темплейтной магии.
Пока не знаю, где смогу это применить
В результате будут самописные уродцы на макросах, темплейтной магии и вот этой рефлексо магии.
Всю математику с 7 класса. Сейчас вот решил заново начать изучать. А не понимаю конкретно "умных" книжек, где все написано на языке математики(конкретно всякие формулы, дельта, эпсилон, интегралы и тд., так или иначе все научные книги на этой базе строятся)
Я вообще самоучка. К тому же уже и на кладбище начинаю поглядывать. Единственное что в программировании не всегда математика нужна. Если говорить про с++, то в 3д движках, дронах и автопилотах, нужна. А например гонять пакеты по сети, делать базу данных, гуй - не нужна сложнее чем у пятиклассника.
Мда, ещё скажи, что торрентами не пользуешься.
Вообщето креатор лицензируется отдельно и ты можешь с гита билд виндовый скачать, если собирать лень.
Поступил на мехмат далеко за 20, готовился сам.
> Во первых Впн.
Не вариант, я нищий для платного впн
> Во вторых можно собрать из исходников.
Это нужно целый день разбираться, мне лень. Какие-то Windows debagging tools достать откуда-то, пиздос.
> В третьих КДЕ
Что КДЕ? У меня на виртуалке убунта и гном, мне лень еще одну ставить.
>>891755
> с гита билд виндовый скачать
Чувак! Ты просто гений. Подскажи где именно билд лежит.
> > Во первых Впн.
> Не вариант, я нищий для платного впн
Планет ВПН работает как часы
> > Во вторых можно собрать из исходников.
> Это нужно целый день разбираться, мне лень. Какие-то Windows debagging tools достать откуда-то, пиздос.
Ну окей, осилить пару шагов из мануала не твой путь
> > В третьих КДЕ
> Что КДЕ? У меня на виртуалке убунта и гном, мне лень еще одну ставить.
У КДЕ есть собственный форк Qt, лежит на гите. Но его мб тоже собирать надо, не уверен.
git submodule update --init выглядит так (чёрные скрины, вошло 3 из 4х)
Пиздец, пиздец. А почему я это собираю, вообще? Да потому, что версия из флатпака не может в форкание доп окошек, типа конфигурации.
Бегите от этой ссанины на раст или, хотя бы, zig, что-то с норм тулингом, ребята, нечего тут ловить.
> Пиздец, пиздец.
Так а что случилось то? Зависимостей много?
> переходите на раст
А на расте зависимостей меньше станет?
Собираются там проекты ещё медленнее
сходи траву потрогай пока компилится
>Бегите от этой ссанины на раст
На расте все еще хуже будет, потому что растохлебушки либ не пишут, а те что пишут, забрасывают через полгода, а язык на месте не стоит и все очень быстро протухает. Плюс там детерминированная сборка с текущими тулзами в принципе невозможна.
Собираю проект с библиотектой Torch-ROCm.
Конфигурацию Cmake побороть смог.
Билд с clang поборол.
При выполнении ошибка:
RayCaster: /usr/src/debug/hip-runtime-amd/clr-rocm-5.6.1/rocclr/cmake/../thread/monitor.hpp:180: bool amd::Monitor::tryLock(): Assertion `thread != NULL && "cannot lock() from (null)"' failed.
Есть гайд, как фиксить, или собираться torch-rocm на плюсах?
Заметил что в Debian 12 у меня отвалился clang. Не видит стандартных инклюдов типа <algorithm> В прошлый раз я такое фиксил обновив gcc, т.к. он использует их либы. Теперь чет непонятно что делать, так как
clang-16 is already the newest version (1:16.0.6~++20230919124242+7cbf1a259152-1~exp1~20230919124333.105).
libstdc++-12-dev is already the newest version (12.2.0-14).
gcc-13 is already the newest version (13.2.0-4).
>clang -v
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/13
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/13
Ну да, а зачем тут твоя аватарка?
Меня с опытом реальным на 350к нигде не взяли
"Это из серии невкусно - приготовь сам". Не, не, я просто поплеваться пришёл.
>>892964
>Зависимостей много?
Не то, что много, а то, как они хуёво организованы. В расте у тебя всё лежит в Cargo.toml, который част проекта. А тут привязка к гиту.
>>892985
>язык на месте не стоит
да
>и все очень быстро протухает
нет. Для этого есть edition, которых уже 3: 2015, 2018, 2021. И последний конпелятор собирает их все. Вот, я собрал игру из 2018 без особых проблем. https://github.com/DarinM223/mold2d
Ещё могут протухать эксперементальные фичи, которые решили не включать в конпелятор, то да, но их случайно не используешь
>Для этого есть edition, которых уже 3: 2015, 2018, 2021. И последний конпелятор собирает их все.
И либы из 2015 можно без геммороя использовать в 2021?
Прикинь, можно.
>>893815
1. На расте у тебя есть Cargo.toml , в котором указаны зависимости с человечески приписанными версиями (хотя, гит тоже можно). Сам твой проект - хоть на svn, хоть на базаре. А тут привязка к гиту и его модулям.
2. В Cargo же можно прописать опции для зависимостей. В гите такое хуй сделаешь, надо костылить какую-то жуть в CMake.
3. На расте у тебя единый тулчейн, который собирает всё и обновляется простым rustup. А тут привязка к системным компиляторам и auto*-говну. Надо, чтобы твоя система была не слишком новая, но и не слишком старая. Ну, это на никсах, на винде вообще всё через "сбегай - скачай", по папочкам распихай и пути пропиши.
>Прикинь, можно.
Сдается мне, ты пиздишь. Эдишены как раз и сделали, потому что у раста нет обратной совместимости между версиями. Фактически это как писать одну прогу на трех разных языках. Теоретически возможно, но на практике вряд ли будет приятно.
> А тут привязка к гиту и его модулям.
Ну и?
Мне как конечному юзеру все равно откуда он репы качает
Мне как разрабу делов на 5 секунд прописать какую версию из гита дергать
> В Cargo же можно прописать опции для зависимостей.
Ну так если у них нет опций зависимости, то в чем притенения?
> В гите такое хуй сделаешь, надо костылить какую-то жуть в CMake.
Несколько опций прописать? Звучит не сложно
Это дибилы одной секты или один и тот же дибил переодически срет своим бредлм в с/спп тредах.
https://pastebin.com/kWkCRFMs
создай либу с таким кодом. Если в карго стоит эдишн 2015, то соберётся, иначе - нет. Далее попробуй позвать функцию bar из крейта 2021-эдишн. Всё отработает.
С другой стороны, да, признаю, есть ломающие изменения, которые понижением эдишн не лечатся. О них предупреждают за полгода, но если либа заброшена, то никто, ессно, не пофиксит.
Об этом есть целая простыня: https://rust-lang.github.io/rfcs/2834-cargo-report-future-incompat.html
вкратце: что попало не выкидывают, только то, что просочилось в релизную ветку по ошибке. Вообще, для такого есть ночные сборки, где фичи тестируются, но иногда вылазит.
>>894100
>Мне как разрабу делов
Ну, смари: я только прописав крейт в импорте уже могу брать оттуда функции. Ide сама подсказывает, что куда прописать, чтобы импортировать. В некоторых случаях, если обращение идёт по имени крейта, она даже сама предлагает добавить зависимость. У вас также?
>Это дибилы одной секты
Интересно, что этих шизов так к расту притягивает? Такая же фигня как с хаскелем, лиспом или к примеру арч линуксом и веганами. Почему-то вокруг языка формируется группа ебанашек, которые сами на языке в общем ничего значимого не пишут, но непременно лезут во все дыры и доебывают всех рассказами о том, как у них круто, а все вокруг лохи и не узрели света истины. Почему так происходит, что их притягивает?
В аниме тусовке тоже много ебанашек - что ж теперь, и аниму не смотреть? Rust is the end and is the beginning. Worship his safety!
>>894484
Этож /pr, пагни, не когмите тголя
Плюсотреды тролят растом, пушо тулинг и мемори сейфти
Растотреды тролят сями/плюсами и почему-то шарпогосподо борроучекер сложна
Шарпотреды тролят джавой, пушо зп и вакух больше
Джаватреды тролят котлином/скалкой и шарпогосподо языковых фич больше
Js/ts/php не посещаю, но думаю там тоже хватает тухлого тролинга
https://onlinegdb.com/Rzv6gsLy48
class A {};
class B: A {};
class C {
vector<shared_ptr<A>> vec;
void add(shared_ptr<A> a) { vec.push_back(a); }
}
C c{};
auto b = make_shared<B>();
c.add(b);
Причем здесь плюсы только, интересно.
Ну это я пробовал, вроде работает. Вот думаю может как то можно лучше
https://pastebin.com/FZcyAy11
вот просто интересно, как ты пришел к этому решению? как ты рассуждал, когда писал его? какой тактики придерживался?
Я прост загуглил "find maximum without branching" и скопипастил код из первого индусосайта в выдаче
>Где у смарт поинтеров ковариантность?
Ручками надо кастить:
https://en.cppreference.com/w/cpp/memory/shared_ptr/pointer_cast
А шарпогоспода может в ковариантность https://dotnetfiddle.net/KuBAkj для интерфейсов
а в тайпскрипте и для классов работает
А плюсы почему-то не хотят даункастинг сами сделать, а как будто прицип подстановки Лисков нарушается...
>А плюсы почему-то не хотят даункастинг сами сделать
Потому что так как минимум множественное наследование, и правила для даункаста могут быть самые причудливые. Ну и вообще, такой автокаст если и возможен, наверняка будет иметь такие подводные камни, что правильно кодить с ним, учитывая все тонкости, и Страуструп не сможет.
Разобрался наполовину https://www.onlinegdb.com/JllHZNVU6u
с публичным наследованием работает, хотя у A и B никаких мемберов нет.
>правильно кодить с ним, учитывая все тонкости, и Страуструп не сможет
А Страуструп вообще что-нибудь нашкодил за свою жизнь, кроме самого языка?
Даже библиотеку писал не он.
Он стратег.
Если честно то даже сложно сказать, что он язык "накодил". Изначально это вроде просто был транслятор плюсового синтаксиса в си, а потом уже совершенно другие люди над ним работали.
Например?
https://en.cppreference.com/w/cpp/compiler_support/20
Вижу тут только единичные промахи.
С модулями вот правда полный обосрамс, вместо удобства получилось что то невероятно пердольное, но в этом наверное и смысл был, чтобы с++ бояре не остались без работы и было еще больше кишочек разгребать.
> a = std::move(b)
> b все равно вызывает деструктор
Интересное решение, то есть теперь у меня две опции
- Запретить мув к хуям
- Создать новое состояние у обьекта (дохлый, но почему то еще не умер) и в деструкторе каждый раз проверять не умерли ли мы преждевременно
Дизайн 10\10
Я могу быть уверен что после вызова мув конструктора\оператора деструктор ОБЯЗАТЕЛЬНО вызовется у нового значения? Или тоже есть нюанс?
А что оно такое совпадает с тем что оно должно делать?
После мува объект должен быть валиден?
У него должны оставаться ресурсы которые ему еще надо будет удалить в деструкторе?
Если у тебя что либо внутри не мувается, это придется удалить.
А в чем проблема вызова деструктора у мувнутого объекта?
>в чем проблема вызова деструктора уже удаленного обьекта
Даже не знаю
>Если у тебя что либо внутри не мувается
Всё мувается прекрасно, в этом проблемы нет
Просто потом удаляется несколько раз
Значит ты неправильно муваешь, если у тебя что-то два раза удаляется. Поинтеры обнуляй.
Аааа, а вызывать деструктор у невалидного обьекта это значит правильно
не ну реально чтоли нельзя было не костыльно сделать?
Да откуда ты взял, что после мува объект невалидный? Он может быть с нарушенным инвариантом, но точно валидным.
>>897546
Хотя ладно, это необязательное требование, я думал там есть ограничения на мув конструктора.
Вот из стандарта:
Unless otherwise specified, all standard library objects that have been moved from are placed in a "valid but unspecified state", meaning the object's class invariants hold (so functions without preconditions, such as the assignment operator, can be safely used on the object after it was moved from).
И это правильный подход.
В целом и почти единственный, ведь иначе будет почти всегда УБ, а программа с УБ не является программой на С++.
>>897546
> обьект не невалидный
> но если ты его используешь то УБ и вся твоя программа невалидная
> но компилятор все равно его потрогает в деструкторе, хотя прекрасно видит что не надо
Тем более я вобще никогда не хочу чтобы в деструкторе после мува хоть какой то код выполнялся, кроме проверки на то не смували ли нас случайно
>>897546
А нахуя мне валидный обьект после мува?
Нахуя мне валидный обьект с нарушенным инвариантом?
Может после деструктора обьект тоже валидным будет оставлять?
ну вобщем спасибо за ответы и что даже в стандарт заглянул, не понимаю как такое умные дядьки могли в стандарт добавить
Хозяин барин, доделай флаг moved.
Хотя мне все равно кажется, что ты что-то накосячил с мув конструктором, раз у тебя delete стреляет.
Можешь показать кусок?
Да я уже починил давно, просто поинтеры зануляю и проверяю в деструкторе не занулены ли они уже
Ну так в этом и суть, в деструкторе всегда надо проверять, указывают ли у тебя на что-то поинтеры, перед тем как очистить.
тут ковариантность в том смысле что простые указатели ковариантны: указателю на базовый класс можно присвоить указатель на производный класс, а смартпойнтеры сохраняют это поведение
то есть это не есть ковариантность в полном смысле этого слова какая подразумевается в теории типов, но все же что-то хоть и обрезанное, но похожее
от того что слишком умный, окружение давит снаружи, мозги давят изнутри
А растотред уже перекатили.
Ты о чём? Тред даже не на последней странице. Или ты из JS-треда, где перекаты делают после 500 постов?
Гугли moved-from objects placed in a valid but unspecified state.
Суть в том, что часть методов можно вызывать, потому что они не зависят от стейта. Например, is_empty(). Если бы объект был невалидный, то было бы нельзя и такой метод вызвать. Но само состояние не специфицировано. Другие методы могут полагаться уже на состояние, и быть определены только когда is_empty() вернул false.
Это аналог неинициализированных переменных. В других языках всегда проверялось бы чтобы каждая была инициализирована, а каждый мув двинул все. Здесь же язык для скорости, и следить за стейтами на программисте.
> Здесь же язык для скорости, и следить за стейтами на программисте.
А что если для скорости после мува не вызывать деструктор объекта?
Ещё и проверки стейта пропадут лишние
В С++ такое гавно под видом корутин майкрософтовские уроды вроде Гора Нишанова протащили, что блевать хочется. Сравни, например, с корутинами в Луа (конфетка) или даже в Питоне - тривиальная вещь, ничего даже объяснять не надо. В С++-же никто не понимает, и никто не может объяснить.
1280x720, 4:28
> никто нормально объяснить не может
Курс Pluralsight - What's New in C++20 (Kate Gregory, 2022)
Глава 4. Concurrency Changes
Блин ты такой умный и потоки не вызывали у тебя даже с первых секунд никаких проблем! жаль только что потоки это причина 95% багов в системе, но а так да, всё легко и просто. А если что не понятно - вон из профессии, быдло!
https://github.com/GaijinEntertainment/DagorEngine
И у меня возник вопрос - это серьёзно в рашке крестовики такое пишут или там просто аномалия? Я такой поеботы не видел даже и васянов на линуксе. Такой пиздец, что от одного статического анализатора каждые пять строк варнинги идут по коду, для Wall надо половину кода переписывать нахуй. Про стиль кода я вообще молчу, там даже в одном методе могут использовать NULL и nullptr, от имён глаза вытекают нахуй. Как вообще такое калище можно было в паблик выкладывать? И они ещё позиционируют это как удобный движок. Они серьёзно думают этот высер кто-то будет трогать?
Требую пояснений за это у работающих крестовиков. А то уже макаки-питонисты перестают казаться смешными после увиденного. Или это следствие того что крестовикам платят меньше всех?
Я должен все это говно перерывать? Неси сюда, что конкретно не нравится, обоссым тебя.
Но когда память выделяется то через new, то через malloc, а потом в деструкторе memfree, то я даже начинаю теряться на каком ЯП они пишут. Это вообще ни под какие стандарты не подходит.
Куча закомменченного кода и todo в комментах к строчкам - а эта хуета точно будет работать нормально?
Там вообще с каждого файла можно отдельно орать.
Да допустим и говнокод, на нем вартандер написана, вон даже играет кто-то, а значит деньги зарабатывают - цель выполнена. Ты думаешь в геймдеве клинкод? Во всех играх/движках говнокод, абсолютно везде.
Там вон даже алгоритм чисто из книжки спиздили, но оно же ведь работает, почему бы и нет?
>И у меня возник вопрос - это серьёзно в рашке крестовики такое пишут или там просто аномалия?
Это плохой менеджмент, и он не зависит от страны и языка. Когда проект развивается в режиме постоянного аврала, технический долг в миллионы человекочасов, а текучка такая, что средний срок работы специалиста полгода-год, такой результат неизбежен. Они хотя бы сами все пишут, бывает, что проект делает цепочка отсорсеров (например, поляки берут проект и нанимают индусов в два раза дешевле, а те нанимают вообще дешевых филлипинцев) - вот там пиздец гораздо больший.
>Что не так с маллоком и фри лол?
Надо созданное маллоком удалять через фри, а нью - через делит, и не смешивать.
Если проект задействует библиотеки си (а таких много), то без маллока не обойтись.
>точно будет работать нормально?
Ну не будет и не будет, чего бухтеть то? Патчами поправят, график релизов важнее.
std::default_random-engine - это псевдоним, за которым чаще всего скрывается mersenne twister engine. А он требует относительно большого буфера.
Алсо, хз как на твоей картинке подсчитан размер, но в debug конфигурации всегда к коду добавляется туева хуча отладочной информации.
но 5к байт все равно слишком дохуя
> в debug конфигурации
это именно размер переменной
без разницы дебаг или релиз
>но 5к байт все равно слишком дохуя
Википедия пишет, что 2,5к нужно в сферической реализации в вакууме.
Порядок величин вобщем-то совпадает.
>без разницы дебаг или релиз
А вот хз, у тебя же из библиотеки подтягивается. Дебажный конфиг это фактически отдельная библиотека, другие файлы и они всегда больше весят. Может там оно на гвоздях прибито.
дак вот, общий вывод печален: полезной информации не было прочитано ни разу, все это было тупо проебыванием моего времени, прямо сказочка о потеряном времени, все это чтение нахуй не нужно
как я догадываюсь, сейчас вся эта болтология перекатилась по большей частью в телегу, где продолжается все та же болтовня и информационный мусор
640x480, 1:00
Как в этом коде элегантно сделать так, чтобы не пересоздавать log? Или лучше писать отдельные парсеры для кажой программы и не ебать мозга общим классом?
int main() {
std::string workdir = "../test/";
std::vector<std::string> log_files = GetLogFilesInFolder(workdir);
std::cout << "Found logfiles:" << std::endl;
for (const auto& file : log_files) {
BaseParser log = new BaseParser(workdir, file);
log->PrintValues();
if (log->GetProgram() == "ProgramA") {
ProgramA log = dynamic_cast<ProgramA>(log);
}
else if (log->GetProgram() == "ProgramB") {
ProgramA log = dynamic_cast<ProgramB*>(log); //не фурычит
}
delete log;
}
Вот это работать не будет:
BaseParser log = new BaseParser(workdir, file);
ProgramA log = dynamic_cast<ProgramA>(log);
Ты не понимаешь как ООП в принципе устроено. Даункаст не преобразует объект в наследника из родителя, а просто приводит тип из Parent в Child, если по ссылке на самом деле Child, которого апкастнули в Parent.
>без разницы дебаг или релиз
Вобщето да.
Было бы стремно, если бы в дебаге sizeof() выдавал что-то другое, чем в релизе.
Гугли паттерн фабрика
Главное НАЧАТЬ.
Комитет и Страус слов на ветер не бросают. Если сказано, что сделоют - значит сделоют.
Ну и когда это будет реализовано хоть в каком то компиляторе? Лет через 6-9?
Мне бы хоть до компайлтайм рефлексии дожить
Toward the end of the talk, Stroustrup went into more detail. “I’m suggesting that you have module-based controls.” The slide shows how it would work in code.
Найс троллит
Не доживёшь. Кругом дроны, люди тонут в коллекторах, новый штамм короны надвигается, а по весне на головы полетят сосули. Но ты можешь попробовать нормальный ЯП уже сейчас: выбери Rust, выбери жизнь в новом ржавом цвете.
ваши тоже у нас срут
Если не будет утечек в памяти, то как ломать неолиберальный кибергулаг, ммм?
Советую присмотрется к cpp2 / cppfront Герба Саттера. Кое-что там уже реализовано. Боров чекера там не будет, не канонично, но есть пропозал Lifetime safety https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1179r1.pdf
Твою мамулю трахал, обоссышь комнатный, ещё ножкой топни хуесосина
мимо проходил, не удержался
>>902091
Проект кончено классный, но опять таки релилизнится через хзы сколько лет, а пригодным для использования ещё позже станет, а уж работу с ним найти...
К тому времени может и карбон уже появится
Или вообще все на Свифт перейдут
- Раст
- переписать все на Свифт
- карбон от гугла
- цпп2/цппфронт
Кого ещё забыл?
Точно, D же ещё был
Val
Circle
Zig (точнее это замена Си)
>>902252
Безопасность раста сильно переоценена. Да там есть микрописька дополнительная, но там так же куча UB, там unsafe в стандартной либе и так далее. Когда обмазываешь кресты анализаторами и ubsan-ами то разница не так уж велика. Раст это полшажочка вперед, а его выставляют как будто прыжок на 10 метров.
С начал 2019 года пишу на расте, отладчик понадобился единственный раз - когда память потекла из-за бесконечно падающего форка. Собсно, это было в логе, но я не увидел, так как засрал его отладкой.
>Val
Его переименовали в хуйло. Всюду политика, как видишь. Посмотри ещё в сторону vale, у него схожий подход к безопасности.
>Circle
не вчитывался
>Zig (точнее это замена Си)
та самая безопасность на полшишечки. Типа, у них такая семантика, что безопасный код писать приятнее, но никаких гарантий, что конкретно вот этот код безопасен, нет.
Вообще, много их, но без ледокола в виде крупного проекта от корпорации, ни у одного шансов нет. Скажем, если гугл скажет "Всё, переписываем хром на хуитанейм", то все ринутся её учить. Тот же карбон, например, хоть он и тоже на полшишечки.
> 2019 года пишу
> отладчик понадобился единственный раз
Дебажишь в голове свой код?
Или принтами в консольку?
Страус поехавший евангелист, который нашел своё призвание в продаже приставки ++. Что он там пердит на реальность не влияет
Принтами, а как жешь. Ещё на расте есть макрос dbg!, он тебе сразу рисует и значение переменной, и строку в исходнике - больше его юзаю.
Тебе так кажется. Его зовут на все конференции, слушают его мнение и часто делают как он сказал.
Прямой связи между "тебе не понадобился отладчик" и "язык безопасный" нет. Мне тащемта и в с++ редко требуется именно отладчик.
>Circle
>не вчитывался
Почитай, там много полезной инфы на пару вечеров.
https://github.com/seanbaxter/circle/blob/master/new-circle/README.md
На практике мне не понравился правда, пользоваться я им не буду. Но сама идея конструктора языка где ты вкл-выкл фичи забавна.
Закрываешь в подвале, даёшь задачу на даймонд инхеритенц, через месяц даёшь учебник по хаскелю. Выпускать не стоит, да и они не захотят выходить.
Закрыть в подвале не получится. Нужно, чтобы человек сам понял, что структуры с методами решают абсолютно все задачи и перестал городить шаблонное говно с итераторами, виртуальными функциями и прочей шизой.
Сейчас бы писать 100500 вариантов одной функции для (int, int), (int, float), (int, long), (float, float), (float, short)...
Ахахахпххпхпха
Попустись шиз
> да ООП этот ваш легкотня ебал в рот его учить
> приходит на собес
> что такое protected
> ох блин, ну это, как там его, ну блин...
Меня такое не спрашивали. Да и в любом случае это все за вечер учится. Это же даже не программирование по-сути.
>Это же даже не программирование
А что это?
> а и в любом случае это все за вечер учится
Вот именно, и не знать такое на собесе приговор
Аххахахахаха
>А что это?
ООП != программирование. Просто описание какой-либо модели для удобства, можно и без всего этого писать программы работающие.
>А что это?
Онтология. Философскиая наука о разделении сущного на частности и давание им названий.
Ну так напиши эту разницу
От этого буквально умерло много людей. Си убивает.
>>904091
> Свидетелей полиморфизма полон тред.
Полиморфизм преспокойно живет и без ООП
> Вы в курсе, что самая популярная прошивка для роутеров Linoops написана на C и никто от этого не умер нахуй.
А раньше эти прошивки преспокойно писали на ассемблере, получается С\С++ это не программирование?
>>904101
и?
То есть ты послал нахуй типо безопасность и взял в руки дубину тайп эрейжур?
Даже несмотря на то, что чел сверху хуйню написал, шаблоны могут существовать и без объектов.
>А раньше эти прошивки преспокойно писали на ассемблере, получается С\С++ это не программирование?
Не получается. Асм - это тоже пердолинг, как и цпп.Только другого рода.
В программировании не совсем новичок, знаю Python и Go потому что надо, плюсы тоже в какой-то степени но только базис ООП, не глубже. Делал лабы на win32 в вузике и курсач на Qt. Хотя по большому счету на этом всё, на Питухоне я только скрипты пишу, Go в реальности так и не понадобился, так что я не сказать что прям программист. Но плюсы я слабо понимаю, стоит зайти и посмотреть на комплексный код как тут же приходит охуевание, да и в этом треде уже вижу много того чего не понимаю совсем. Хочу разобраться с языком поподробнее, чтобы понимать его как можно лучше, а не тупо знать как сделать какие-то базовые вещи. После того как освоюсь с ним, наверное, буду ковырять SDL. Писать игрульки было моей мечтой и пусть профессиональный гейдевом я не стану слава богу то хоть для себя буду что-то тыкать палкой, мб какое-то говноинди когда-то да выйдет.
>C++ Primer, Primer Plus или книга от Страуструпа?
если
>хочу разобраться с языком поподробнее, чтобы понимать его как можно лучше
то Липпман онли.
Исчерпывающей книжки по плюсам вообще не существует, забудь про это. С++ - язык непознаваемый, чем раньше ты смиришься с этим фактом, тем лучше будешь в нем ориентироваться.
Тем не менее, из переводов на русский, книга Липпмана наиболее полна как по охвату материала, так и по глубине. Из минусов - высосанные из пальца, недоопределенные задачки и примеры, а так же муторный стиль оформления кода.
Время на нее ты потратишь больше, но это не будет зря потраченным временем. В дальнейшем ты будешь гораздо меньше тупить, читая другие книжки, статьи, гайды, справочники.
Прату ты прочитаешь быстрее, Прата объясняет хорошо, но рассказывает не про все. Эту простоту ты берешь в долг, тебе все равно придется как-то откуда-то доучивать то, о чем умолчал Прата.
Можешь попробовать решать из нее задачки читая Липпмана, они там поприятней.
В книжке "с гусями" Страуструп хочет тебе показать побольше, не особо вдаваясь в объяснения почему так, а не иначе.
Книжка с горами на обложке ее вроде как перевели совсем не для вкатунов.
>буду ковырять SDL. Писать игрульки
SDL, SFML есть и для питона, и для сисярпа. Тебе нужен для этого C++.
>плюсы я слабо понимаю, стоит зайти и посмотреть на комплексный код как тут же приходит охуевание
Вот только ради б-га не надо на это смотреть как на какой-то челлендж для твоего интеллекта. Нету в cpp чего-то действительно интеллектуального, чего нет в других языках.
Сложность С++ обусловлена историческим нагромождением инженерных решений, плохо согласованных между собой. Сложность С++ выражается том, что к почти любому правилу прилагается список оговорок, исключений и особых случаев, в разы превосходящий по объему само правило.
Нужно ли в плюсах чистить объекты типа vector или map после их использования?
Это зависит. Хочешь чисти хочешь нет.
>Твою мамулю трахал, обоссышь комнатный, ещё ножкой топни хуесосина
еще раз такое напишешь - репорт и ты в бане
говно, ты?
Разве ты уже не делал последнее китайское предупреждение? Получается твои угрозы ничего не стоят..
слыш. забанен
>Вы в курсе, что самая популярная прошивка для роутеров Linoops написана на C и никто от этого не умер нахуй.
Да, а еще я в курсе, что ты никогда не открывал код этого самого Линупса, иначе бы знал, что там код написан в ООП стиле.
При компиляции выдает ошибку "myglwidget.h file not found". Этот хедер инклудится в (автоматически сгенерированном) ui_mainwindow.h, который находится хуй пойми где, и видимо поэтому не может найти этот хедер. Как пофиксить?
Строго говоря Линукс написан не на Си, а на Си с GCC Extension, это другой язык с отличающимся от стандарта набором фич.
https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html
Была где-то паста, но я ее потерял.
Бросаются в глаза - массивы нулевой длины, пустые структуры, неконстантные инициализаторы, case ranges (case 1 ... 5), арифметика с *void указателями, вложенные функции, вложенные объявления внутри выражений, typeof, сокращенный тернарный оператор x?:z и тд
Хз что за дичь, лет 5 как с работы ушел не ртсал на кути, но:
никогда не используй автогенерацию форм - пиши все руками, так и научишься лучше и лейаут ыорм будет в точности таким как хочешь.
Хуй пойми что ты высрал и что тебе вообще надо, какой еще OpenGLWidget? Зачем тебе это? Вряд ли даже кто на кутах веслает пользуются этим говном.
А по описанной тобой проблеме дело скорее в файле сборки, смотри что у тебя там qmake, cmake и пропиши системе сборки где какой хедер лежит
когда то давно мне дали такой совет: хочешь посмотреть как пишут на хорошем си, смотри исходники фряхи, а на ядро линукса забей
Теневая сборка включена? Если да, то попробую офнуть или наоборот, не помню. Название файла точно совпадает? Он точно существует там где его ищет кумакя?
ui_zalupa файлы генерятся в папке билда.
Если руки не из жопы и то и в дизайнере можно красоту делать, а главное в 50 раз быстрее, кабанчик визжит от радости
> С++ - язык непознаваемый, чем раньше ты смиришься с этим фактом, тем лучше будешь в нем ориентироваться.
Я это и так знаю. Поэтому не написал "понять полностью" а "как можно лучше".
> Тем не менее, из переводов на русский
Инглиш онли. CS и всё что рядом должно быть на инглише, чтобы не охуеть потом от документации. Ладно там как совсем первую книгу совсем нюфагам, но я псина стрелянная.
> книга Липпмана наиболее полна как по охвату материала
Я приложил пару скринов из книги Страуструпа. Это в разделе про указатели, тут он затрагивается довольно таки поздно что модет даже хорошо для нешарящих ну совсем. Полистав я понял что он свой хэдер написал и там много чего упростил чтобы не приходилось разжёвывать то чего неокрепший ум пока не поймёт. У Липпмана никаких рисунков нет, только пара примеров. Оценка на глаз, однако структурно Страуструп явно более мягкий подход использует, Липпман просто проходится по фичам без подробных объяснений с примерами. Что как бы звоночек.
Ирония в том что ни один не показывает что, так как в конечном счёте память это 0 и 1 в большом количестве, то один и тот же кусок можно прочитать как совершенно разные вещи (int/float или long/double) и не почувствовать подвоха. Ну или я плохо искал.
> Время на нее ты потратишь больше, но это не будет зря потраченным временем.
Чисто по страницам +/- одинаково же.
> SDL, SFML есть и для питона, и для сисярпа.
> питон
Сам думал что писал?
> сисярп
В новой его версии можно добавлять поля в интерфейсы. ПОЛЯ. В. ИНТЕРФЕЙСЫ.
Лучше бы на Го уже советовал, хотя без ООП там будет сложновато делать что-то прям комплексное я правда не собирался.
> Сложность С++ обусловлена историческим нагромождением инженерных решений
Как по мне, скорее техническими нюансами работы компьютера. Динамических массивов нету не потому что хуёвое инженерное решение а потому что просить и возвращать память у аллокатора надо руками. Если оставить это дело на автоматику то оптимизаций под конкретно твой юзкейс не жди.
Короче, спасибо за совет, наверное буду пытаться обе чтобы сложить своё мнение по обоим. ХЗ, как у меня это выйдет, но попытка не пытка. Пока "книга с гусями" своими графическими презентациями привлекает больше просто потому что я ХЗ как без этого объяснять что такое память компьютера и почему именно от дауна за монитором зависит как она будет использоваться.
> С++ - язык непознаваемый, чем раньше ты смиришься с этим фактом, тем лучше будешь в нем ориентироваться.
Я это и так знаю. Поэтому не написал "понять полностью" а "как можно лучше".
> Тем не менее, из переводов на русский
Инглиш онли. CS и всё что рядом должно быть на инглише, чтобы не охуеть потом от документации. Ладно там как совсем первую книгу совсем нюфагам, но я псина стрелянная.
> книга Липпмана наиболее полна как по охвату материала
Я приложил пару скринов из книги Страуструпа. Это в разделе про указатели, тут он затрагивается довольно таки поздно что модет даже хорошо для нешарящих ну совсем. Полистав я понял что он свой хэдер написал и там много чего упростил чтобы не приходилось разжёвывать то чего неокрепший ум пока не поймёт. У Липпмана никаких рисунков нет, только пара примеров. Оценка на глаз, однако структурно Страуструп явно более мягкий подход использует, Липпман просто проходится по фичам без подробных объяснений с примерами. Что как бы звоночек.
Ирония в том что ни один не показывает что, так как в конечном счёте память это 0 и 1 в большом количестве, то один и тот же кусок можно прочитать как совершенно разные вещи (int/float или long/double) и не почувствовать подвоха. Ну или я плохо искал.
> Время на нее ты потратишь больше, но это не будет зря потраченным временем.
Чисто по страницам +/- одинаково же.
> SDL, SFML есть и для питона, и для сисярпа.
> питон
Сам думал что писал?
> сисярп
В новой его версии можно добавлять поля в интерфейсы. ПОЛЯ. В. ИНТЕРФЕЙСЫ.
Лучше бы на Го уже советовал, хотя без ООП там будет сложновато делать что-то прям комплексное я правда не собирался.
> Сложность С++ обусловлена историческим нагромождением инженерных решений
Как по мне, скорее техническими нюансами работы компьютера. Динамических массивов нету не потому что хуёвое инженерное решение а потому что просить и возвращать память у аллокатора надо руками. Если оставить это дело на автоматику то оптимизаций под конкретно твой юзкейс не жди.
Короче, спасибо за совет, наверное буду пытаться обе чтобы сложить своё мнение по обоим. ХЗ, как у меня это выйдет, но попытка не пытка. Пока "книга с гусями" своими графическими презентациями привлекает больше просто потому что я ХЗ как без этого объяснять что такое память компьютера и почему именно от дауна за монитором зависит как она будет использоваться.
https://pixeldrain.com/u/JSFR6TqN
https://pixeldrain.com/u/gtbAzohh
Вот обе книги в той версии, в которой смотрел их я, если кто-то захочет проверить мои слова или ещё что.
https://www.youtube.com/watch?v=l3AxYei17ls
1
Интересно на сколько весомы призывы NSA и на что они могут повлиять. В каждом видосе вспоминают про них, такой там у них переполох в курятнике.
2
>плюсобляди все еще разбираются как правильно итерировать коллекции
>шел 2023 год
>>905826
>ПОЛЯ. В. ИНТЕРФЕЙСЫ.
промытая манька
>Интересно на сколько весомы призывы NSA и на что они могут повлиять.
Ахуеть как много на что, на то они и АНБ
Но понятное дело это америкосов в 99% случаев касается
хотя все еще это происходит в рамках "эдвайся", а не запрета
> плюсобляди все еще разбираются как правильно итерировать коллекции
Там они еще и рейнджами умудрились дохуя всего поломать, что еще стандарта 3 чинить придется
>Интересно на сколько весомы призывы NSA
Довольно таки сильно. Не забывай что ты живёшь в мире даунов. Для многих плюсы это сложно. Поэтому софт от этих многих на нём будет дырявым калом с утечками и UB на каждом ходу.
>промытая манька
А что хорошего в том чтобы иметь переменные в интерфейсах? Может тогда ещё глобальные переменные сделать чем-то обычным? Да и вообще, задача передавать что-то куда-то такая частая что нахуя локальные переменные, теперь все переменные объявляются в глобальном скоупе независимо от места.
Вот я рофлю а они реально могут такое выкинуть.
>А что хорошего в том чтобы иметь переменные в интерфейсах?
А что плохого?
> Может тогда ещё глобальные переменные сделать чем-то обычным
А для тебя глобальные переменные это что необычное?
Да и при чем тут они вобще, какое отношение к интерфейсам и переменным в них имеют?
>А что плохого?
Лол, в том что они порождают говнокод. Интерфейсы нужны ради композиции в основном в Шарпе. Знаю потому что у меня препод в шараге по нему был сеньйором. А так это считай то же самое что и абстрактный класс. Нахуя тогда он нужен вообще? Один можно убрать. Не говоря уже о том что при наследовании переменные по-своему работают в Шарпе.
>А для тебя глобальные переменные это что необычное?
Ну я их избегаю. Представь какой кал будет если все переменные станут глобальными.
>Да и при чем тут они вобще
Порождают такой же говнокод как и интерфейсы с переменными. Глобальные правда хоть чуть-чуть полезны, использовать можно где реально выгодно.
> Знаю потому что у меня препод в шараге по нему был сеньйором.
Понятно, делать так нельзя, потому что злой преподаватель накричит и наругает
Да нет, знаю потому что никто в здравом уме этого использовать не будет. Он говорил что если кто-то начал бы переменные в интерфейсы совать то в его проектах там половина кода поедет по пизде и это заебуться чинить. Ты нормальные контраргументы приводи, не буквоедство уровня двоща.
Ты не думаешь что размышлять такими шаблонами в языке, который предоставляет тебе наибольшее количество контроля как программисту - порочная практика? На этом поле дозволено всё.
Да, в шарпах можно прикручивать какую-то идеологию и следования принципам конкретных людей, потому что сам по себе язык коммерчески направленный и заточен под определенные задачи.
А вообще, если ты хочешь привести какие то аргументы, то лучше это делать на примерах конкретных, иначе разговор совсем беспредметен. Я вот не вижу ничего такого в интерфейсной переменной, она может быть сильно связана с классом и наследниками, в чем проблема?
В каком-нибудь си ооп вообще только и основано на переменных, это всё просто средства языка, и да, в плюсах нет понятия интерфейса как категории как в шарпах например
> никто в здравом уме этого использовать не будет
Ну раз ты так сказал...
> половина кода поедет по пизде
Не пойдет
>Лол, в том что они порождают говнокод.
Интерфейс с полями и дефолтной реализацией методов - это один из вариантов миксина. Они широко используются в других языках и сами по себе говнокодом не являются, говна с помощью чего угодно навертеть можно.
Чего мне почитать, клоунесса, я в отличии от тебя знаю разницу между nullpointerexception и сегфолтом.
Ну расскажи же в чем разница, когда на Java или C# программа падает с окошечком. Пиздец первокурсники в треде растекаются.
>Ну расскажи же в чем разница
Могу только хуем тебе по губам провести.
>Пиздец первокурсники в треде растекаются.
Ты сам откуда вылез такой умственно неполноценный? Свободное времечко выдалось посреди школьных каникул?
Во многих языках итераторы могут иметь ссылку на сам контейнер, как раз для того чтобы такой хрени не было
В Java и C# ты получишь IllegalStateException / InvalidOperationException
Правда там есть какие то коллекции, которые делают "снепшот" (наверное ленивую копию) и ты продолжаешь итерировать по старой коллекции
В питоне будет RuntimeError или порча коллекции
JS судя по всему не упадет, но может скипать элементы или зациклиться
В Го, не очень понял, судя по всему надо копировать коллекцию, что будет если менять не знаю.
В общем доеб до итераторов в с++ звучит мега странно.
Ну получить эксепшен это уже отлично
Референсы я научился обходить, с помощью std::reference_wrapper<T>
Какой же охуенный язык, с которым тебе надо бороться, вместо того, чтобы писать код.
Да я это первым делом видел, но подумал может все таки есть надежда
>>906946
>>906991
Удачи вам работать с этим интерфейсом.
Если что то это вольная перепись вполне реального кода написанного каким-то дауном на стартапе, я просто попросил шарписта с работы передать суть с минимумом кода. Что тут делает sealed и нахуя вообще что-то подобное писать я не знаю, мне тоже интересно. Факт того что кто-то подобное высрал остаётся фактом.
Как же хорошо когда стартапчик новый и можно легко переходить даже на RC версии фреймворков. И слава богу я девопс и не мне потом разгребать такое.
>Удачи вам работать с этим интерфейсом.
Ты в плюсотреде вообще, у нас тут множественное наследование, интерфейсов вообще нет. В итоге, кстати, шарп и джава к похожей модели пришли, потому что это практично.
В более старых шарпах это не было так легко. Ну хотя бы потому что переменные или sealed в интерфейсе кидали ошибку. Новые версии позволяют каком-то дауну просто положить нахуй всё на ровном месте. Да, так можно было сделать и раньше, просто сейчас способов стало больше. И это не понятно опытным шарпистам, так как в отличии от плюсов, шарп не системный язык и выдать возможность написания говнокода за оптимизирующую уловку не выйдет.
>>909221
>Ты в плюсотреде вообще
Знаю, просто какой-то додик начал доказывать что шарп идёт в правильном направлении. Сеньор в геймдеве говорил что хуйня, мидлы на бэке говорят что хуйня, зато рандому с двача норм, забавно.
>у нас тут множественное наследование, интерфейсов вообще нет
Я в курсе. Интересно, в плюсах композицию вообще никак не сделать? Только наследование?
>Сеньор в геймдеве говорил что хуйня, мидлы на бэке говорят что хуйня
Потому что у них кругозор - только шарп, они ничего другого не видели, и не понимают, как новую возможность можно использовать, поэтому она их и пугает. А так в скале есть множественное наследование, в окамле есть множественное наследование, в плюсах кроме самого множественного наследования, миксины с CRTP - довольно частая идиома, в скриптовых языках можно вообще любую хрень сделать, и все едят и нахваливают.
>Интересно, в плюсах композицию вообще никак не сделать? Только наследование?
В смысле? В плюсах как везде: добавил поле в класс - вот тебе и композиция.
Какая разница что там в шарпах? Речь шла про плюсы. Язык не представляет собой коммерческую поделку для шлепанья, он задизайнен в ответственность программисту, и если ты высрал хуевый код, то это твоя вина.
Да, классно рассуждаешь, бро. Смотри я тоже так могу: авторы и разработчики языка развивают его в нужном им направлении, но вот аутсосным гребцам и гейдевелоперам из жопы мира где не высрали никакой внятной игры это не нравится, давайте ка пиздуйте всё по новой переделывать, не нравится, правда а че им не нравится то я высрать из себя не могу, да и сеньеры ебаные помидоры тоже не могут. Но вот чето не нравится, а стойте - код который они сами же и срут в редактор их не устраивает
Звучит как описание раста
стандартная библиотека шаблонов вообще то и является примером идеи композиционного программирования, в воспаленной голове создателя библиотеки вы все должны были бы объединять между собой стандартные и собственные операции (алгоритмы и объекты-функции) при помощи предикатов, связывателей, адаптеров, отрицателей, а далее уже применять их по отношению к контейнерам, широко использовались для этого к примеру возможность перегрузки операторов в языке, особенно возможность перегрузки оператора вызова ()
естественно подобный обскур си-макаки никак не могли уложить в свою головушку и продолжили дружно обходить контейнера в циклах высирая лесенки из ифов
>высирая лесенки из ифов
Ну так лесенка из ифов эргономичнее, чем залупа с итераторами из STL, где перед глазами нечитаемая стена из begin(), end().
> лесенка из ифоф
> фуууууу
> лесенка из лямбд
> омномном
твоя функция, прости господи, должна как минимум принимать диапазон выраженный в итераторной паре, а в идеале это должен быть обобщенный алгоритм работающий над любым контейнером, к которому подходит тип примененного итератора
пишите на си++ утырки ебаные
вначале К&R
потом Страуструп "Язык программирования С++ Специальное издание" (это третье издание, 98 стандарт)
хуяришь упражнения в обеих, не хуяришь упражнения - идешь нахуй
тех кто будет советовать то что не нужно знать си перед изучением с++ (те как минимум не прочитать с проработкой упражнении К&R) можешь обоссать
тех кто будет утверждать что можно сразу начинать пердолить на космическом стандарте с++24 27 или какой там текущий, не читая старых книжек можешь так же обоссать
НЕ читай последних книг страуструпа, старик обленился, сидит в своем морган стенли получая лям в год и нихуя не делает, только бухает и попердывает иногда на конференциях
ПОТОМ уже читаешь охуительную книгу Майерса 2014 года "Эффективный и современный С++" по сути единственная книга которая может доходчиво сделать хотя бы введение в новые стандарты языка с11 и с14 и не охуевать при этом
Заполировать можешь все Вандервудом "Шаблоны с++" второе издание 18 года, ибо без шаблончиков никуда эта поебота теперь везде
Но это так, базовый минимум вообще то чтобы просто хотя бы на водичке держаться а не сразу камнем на дно
все я кончил
Ахуенный гайд как НЕ вкатиться в плюсы
Вся эта хуйня нужна когда ты УЖЕ устроился и работаешь
Мимо имхо
Мне тут про acmp сказали. Типо тренить. Норм идея?
Мейерс это не учебники по плюсам. Это сборники советов для тех, кто уже знает язык и пишет программы.
У тебя должен быть под руками проект, над которым ты работаешь. Прямо по мере чтения Мейерса нужно примерять его советы к своему проекту, иначе у тебя в голове ничего конкретного не отложится кроме имени его собаки.
И вообще, дроч на Мейерса - это тема из нулевых годов, когда ни литературы толком не было, ни гайдов в интернетах. Пишет он доступно, читать приятно. Но когда ты до него созреешь, ты так или иначе уже примерно половину будешь знать из источников вроде хабры, stackooverlow и т. п.
Кроме книжек, пользуйся статическими анализаторами.
Бля иди нахуй со своим сленгом, чтоб тебя лесенкой из ифов на легаси удивили
захотел добавить в проект библиотеку gli через cmake
( https://github.com/g-truc/gli/blob/master/manual.md )
я раньше просто устанавливал библиотеки через консоль и добовлял в команду target_link_libraries() cmake файла названия библиотек и все работало. Как я понял для них есть Find{libName}.cmake, которые это делают.
я скачал gli, вызвал cmake, далее build\make install и получил пик1.
Зачем мне нужны последние 3 файла и как мне добавить библиотеку в проект не прописывая полный путь к каждому хэдеру библиотеки?
Ну я и хотел в cmake своего проекта добовлять,
но я не понимал что прописать туда надо.
но немного разобрался что надо было прописать :
list(APPEND CMAKE_MODULE_PATH "/usr/local/lib/x86_64-linux-gnu/cmake/gli")
find_package(gli REQUIRED)
то-есть путь к target файлу или find файлу. А предыдущем ответе я как раз спрашивал зачем там на пик1 targets.cmake. Ну я к нему путь и прописал и cmake нашел все файлы
Си вредно читать до Си++, у тебя случится Си головного мозга и ты будешь прибавлять голвые указатели и ехать UB через UB. Си конечно потом можно изучить чтобы знать подводные, но вкатываться с него - испортить себе всю жизнь.
> Си вредно читать до Си++
Самое тупое что я слышал в этом треде
Ты про си++ знать не будешь без си
А все что сможешь написать это всякие велосипеды на стл, причем даже не будешь знать что там творится внутри, потому что неожиданно окажется что внутри там:
> прибавляние голвых указателей и UB через UB
Понимаю, трудная мысль, но ее сам Страуструп преподает и это правильный подход.
Стл это не велосипеды, лол, это штатный способ писать на с++, велосипеды это как раз сишники начинают писать нихера не зная.
То что творится внутри для начала знать не обязательно, достаточно выполнять контракты стл, детали уже можно выяснить в процессе.
> То что творится внутри для начала знать не обязательно
Это имхо очень важная мысль.
Изначально ты можешь пользоваться технологией/возможностью как черным ящиком, и погружаться в нее только тогда, когда сам поймёшь что пришло время. Как студент ты должен попробовать максимальное количество кала за минимальное время, чтобы понять от какого тебя меньше всего воротит. Разбираясь в кишках СТЛ или в процессе написания собственного компилятора С ты прекрасно изучишь язык, но надо ли оно тебе пока твоя цель получить после диплома работу? Время - конечный ресурс.
Нет никакого стыда в том, чтобы не знать как РЕАЛЬНО устроена хеш мапа, достаточно знать сложности по времени и памяти.
> Понимаю, трудная мысль, но ее сам Страуструп преподает и это правильный подход.
А сам Страуструп как учил?
Большинство тех кто такое пиздит как язык учили?
> Стл это не велосипеды, лол, это штатный способ писать на с++,
То то на их дохуя кто не использует
> То что творится внутри для начала знать не обязательно
Ахуенно звучит, зачем с основ учиться
В университете обычно так и делают, например матан просто скипают, похуй, потом изучат
> Нет никакого стыда в том, чтобы не знать как РЕАЛЬНО устроена хеш мапа, достаточно знать сложности по времени и памяти.
Это не стыд, это необходимость
Ты обязан знать как там все устроено чтобы нормально работать с "абстракциями" из стл
Вообще в идеале придумать алгоритм, что бы и сразу же заполнял вектор в котором я буду искать максимум, не индексами значений vectorY, а сразу значениями vectorY, среди которых я патом бы нашёл максимум.
Так вот я сюда пришёл за тем что бы вы подсказали как такой алгоритм реализовать, и желательно что бы там не было в циклах if'ов
Раз пиксельное пространстао то это рендер? Отправь координаты из вертексного шейдера в фрагмеетный и сравни с фрагкоордом. Заберешьна цпу через врайтонли буфер. Получишь максисум/минимум в одном такте.
Смотря для чего. На большом проекте можно хоть несколько лет активно пилить какие-то определённые части проекта и так до конца не разобраться в других частях.
Сам же говоришь, что от тебя всё зависит, может, за пару вечеров под пивасик всё сделаешь.
>сам Страуструп как учил?
У самого молодого Страуструпа тупо не было выбора. У нонешнего умудренного Страуструпа есть опыт преподавания.
>с основ учиться
>В университете обычно так и делают, например матан просто скипают, похуй, потом изучат
Именно так и делают. На инженерных специальностях никаких основ матана не дают, а знакомят с методами решения типовых задач.
>На инженерных специальностях никаких основ матана не дают
Я вас услышал, если кто то еще в треде считает что в универах матан не нужен на ИНЖЕНЕРНЫХ СПЕЦИАЛЬНОСТЯХ, то можете начинать с плюсов сразу, удачи
>Ты обязан знать как там все устроено чтобы нормально работать
А если не СТЛ, если в проекте используется десяток сторонних библиотек?
Просто покажи мне такого синьера, который вместо того чтобы включить свеженанятого миддла/юниора в полезную работу, посадит его изучать кишки библиотек.
>матан не нужен на ИНЖЕНЕРНЫХ СПЕЦИАЛЬНОСТЯХ
Он не не нужен, а попросту невозможен. Технарям за год впихивают то, что на математических специальностях обстоятельно изучают 5-6 лет.
>ладно, не пиши мне только больше
Ладно, буду писать не тебе.
>на собеседованиях
Разве что на собеседованиях тебя с твоим же внутренним юношей-максималистом.
>5-6 лет я как понимаю чистый матан изучают, а не какие отдельные его области?
5-6 лет изучают основы того, что технарям дают за один год. Основы технарям просто не влезут в рамках их учебного плана.
Меня на собесе спросили только за:
Мьютексы, дедлоки
Авто и почему в строке Х будет предупреждение компилятора
Сколько раз будет вызвана функция хеширования в строке Х для анордеред мапы.
Это уже после прохождения нескольких секций решения задачек с литкода.
Я надеюсь что ты студент нюфаг, а не распиздяй с завода. Отвечаю в надежде на первое.
Раз это рендере забей на цп, лучше сразу берись за графику, опенжл осваивается на изи. Тем более что проверки массивов там работают быстро.
Но в любов случае даже на цпу сразу заводи буфер размерностью как минимум >= макс Х макс У
Раз значения есть вот и проверяй их по Х и пиши в соответсвующий У.
странная задача, проблему до конца не понял
1280x720, 0:47
Задача самая простая вместить в виджет точки. В зависимости от масштаба по оси X, в виджет может попасть или несколько точек из вектора точек или все. Хотелось бы что бы точки за пределами спектра не участвовали в растеризации. Хотелось бы что бы если в один столбец изображения попадает несколько точек, то выбиралась та точка, у которой по оси Y максимальное значение. Патом эти максимумы соединяются линиями.
То что я хочу сделать, я уже реализовал на видео, но это довольно таки кривой и очень не быстрый способ.
Дело в том что я пишу под Raspberry Pi 4, а она не очень шустрая, и хочется каждый процент процессорного времени экономить.
В современной разработке это уже не необходимость. Добавлю от себя что это стыд скорее потому что это преподают в любой шараге.
Что касается абстракций из стл ты должен представлять что они из себя представляют, конечно, опять же потому что это база любой шараги. А вот насчет незнания реализаций стл - как бы похуй в большинстве случаев что они там понаписали, в тех что не похуй - ты просто идешь и смотришь и делаешь что тебе нужно.
А если ты дурачок который знает каждую реализацию стл, то вопрос что ты помимо этого еще знаешь? Потому что мне кажется что есть вещи в которых ты не добрал и потратил ресурсы своей головы впустую. Ты такой ходячий человек справочник вроде вассермана, ходишь чето говоришь, но цена твоим знаниям - на форуме что то высрать
попробуй заняться кодогенерацией используя метапрограммирование на шаблонах, причем двумя подходами - используя методы рекурсивного программирования на старом 98 стандарте, и методы структурного программирования, ставшие доступные в новых стандартах языка
если по простому напиши какой нибудь парсер, сначала с использованием библиотек буста, а потом попробуй вручную
это как минимум забавно
если ты про цикл с get message то это и есть нормальный способ
Почему-то проорал с этого. WinApi это удивительная вещь, с помощью которой только так и пишутся вирусы/читы и другие непотребства, чего только с ним сделать нельзя.
Фреймворки крутят за тебя всё тот же цикл и вызывают указанный тобой коллбек.
Хорошая ли идея, чтобы CMake скачивал сам с помощью FetchContent или ExternalProject и билдить статик либу, чтобы потом юзать в моем проекте?
Мне нужно чтобы либа скачалась с репо и скомпилилась, а потом подключилась к проекту, как мне это сделать?
То что выдал гугл, хуйню какую то, и работает через раз хуй пойми как. Нужна либа libpqxx и openssl
Плохая, так как ты и сам сказал что работает через раз.
Пропиши реквайрментс, и пусть пользователь сам будет ответственнен за разрешение зависимостей.
или напиши деплой проекта на нормальном скриптовом языке
Блин, ну скачай все что нужно питоном и собери.
Какая разница, пользователю что так придется скачивать СМАКЕ и прочий кал что так придется ставить питон.
Необучаемые блин.
Клонируй все нужные репы сторонние себе в репу. И просто адд сабтиректори в своем симейке. Все. Никакие фетчконтенты и прочее питоно не ну ж но
ща памацаю, но как мне потом либу подключить? я не хочу чтобы весь сторонний проект был присоеденен в мою exe, понимаю что гуглится, но там каждый делает по разному.
Большая контора?
Хоче статик либу
Не хочу весь проект
Пизьец у тебя в голове каша, анончик, ой пиздец.
>>920465
Адд сабдиректори!!!
Или не используй чужие стмейки а напиши свой, если это что простое уровня гли.
Хотя в брльшинстве случаев оно нахер не надо. Достаточно готключить ненужное типа примеров/ тестов/инстал таргетов.
вообще по хорошему я хотел юзать cpack.
просто полный пиздец когда на моей локалке дебиан 12, а на серваке дебиан 10, то хуй нормально прогу скинешь тупо без компилинга.
Еще для компилинга надо качать dev версию postgresql, где билдишь, а из него ток одна либа нужна, когда весь пакет весит под 500мб. Не хотелось бы качать 500мб на сервак ради того, чтобы скомпилить прогу.
От цифры в твоем дебиане ничего не зависит если не древнее протухшее ядро . Зависит от компилятора и сорс кода.
Качай только то что по факту нужно, возможно мейк придется самому писать, если разраб модульность не предусмотрел.
Ну и раз ты ты под серв пишешь что то с бд связанное то почему бы раз не скачать фул и забыть?
Если так, какие следует соблюдать правила, типа стараться использовать move?
https://github.com/fizyr/modbus/blob/main/include/modbus/client.hpp
Структура transaction_t. Проект не мой.
Ну у тебя вопросы какие то странные, и не понятно что тебя смутило. Задал ты вопрос чисто по конкретной ситуации, но при этом в самой ситуации и зачем так сделано не разобрался, вот какое у меня сложилось впечатление.
Что касается того что ты спрашиваешь, то с этим проблем нет, функции такие же данные, ты можешь ими оперировать, нет с этим никаких проблем, тем более что в 11 версию языка как раз и завезли тебе лямды
Складывай на здоровье.
Только если лямбды складываешь следи как ты туда ссылки захватываешь, чтоб ничего не подохло при вызове.
Функцию в контейнер не уложишь. Либо указатель на функцию, либо т. н. вызываемый объект.
Алсо, любой класс - это своего рода контейнер с указателями на функции.
Спасибо. Почему и зачем так сделано я понимаю, просто сколько я не видел чужого кода, хранение функций в контейнере в реальной либе вижу впервые.
>>923628
Да, точно, спасибо, забыл про ссылки
>>923650
std:: function ведь и есть вызываемый объект, разве нет? Или щас придирка к терминологии? Тем не менее, std::function прекрасно кладется в контейнер без ошибок и врапперов
>>892332
Чел, здесь исходики, а не билд...
> Если брошу исключение и его никто не поймает, то деструкторы не вызываются.
Каво, должны вызываться
> Чел, здесь исходики, а не билд...
Чел, ну ты конечно...
https://github.com/qt-creator/qt-creator/releases
никак
как минимум нужен хедер-файл, содержащий сигнатуры экспортируемых функций, но по-хорошему нужна документация где описано как пользоваться это библиотекой
есть еще путь реверс-инжиниринга, когда смотриться как используется данная библиотека в других приложениях, и на основе этого восстанавливается сигнатура экспортируемых функций, но раз ты задаешь такие вопросы, думаю что для тебя это более чем неактуально
да всё есть, документация тоже, в ида функции экспортируемые все вижу. Нужно именно подключение не через подгрузку вручную, а может есть что иное, чтобы оно само подгружало, а мне пару строчек написать? Не хочу писать кучу кода
можно еще собрать вручную, и подключать без геморроя, хоть статически, но это долго собирать, я просто в инете либу нашёл, кто собрал уже.
> Можно собрать вручную, не хочу
> Нашел собранную
Давай давай, потом окажется что у тебя УБ в половине кода из за разных версий неба, Аллаха, ГЦЦ
из-за разных версий чего?
я просто на .NET брал либу и юзал ее без проблем, а тут пол дня надо убить на сборку как пишут, ппц
вот тебе и натив
Конпеляторы разных версий?
И ты пишешь что нет хедеров, в чем проблема взять хедер из сурсов если они доступны?
Ну собиралось в VS. А какое это имеет значение? Там же двоичный код, который подгружает прога в процессе работы.
Есть хедер, но он не полный, и тянет еще один хедер, который не доступен, будет доступен после сборки.
Его надо править. Но как мне один хедер поможет решить проблему?
В .NET же работает, через маршаллинг. Там любую dll можешь подгрузить нативную.
У нас тут немного не дотнет.
У меня тут проект не компилился, который должен из примера копипастил. Я сменил настройки версии стандарта туда сюда и скомпилировался. Причем Кланг ошибку так и продолжил показывать но компилятор гцц. И вот что это было?
В .net для работы с нативными dll тебе тоже нужны сигнатуры функций, обмазанные аттрибутами pinvoke.
Если кто-то уже сделал за тебя нативную дотнетную обвязку - можешь через рефлексию достать все эти сигнатуры и сгенерить header-файл ручками.
Потом можешь сделать .def через dumpbin.exe и .lib через lib.exe
Версию компилятора можно узнать тем же dumpbin /headers
Работает - не трогай))
Я так понял - здесь это актуальнее всего.
В .NET там как-то попроще всё. Ну ВМ хули.
тут в замешательстве. ИДА показывает - что у функции нет передаваемых параметров, а в документации есть, тип double. Грешу - что документация для новейшей версии, чем есть у меня. Будем посмотреть.
хорошо, что на гитхабе можно откатить "время назад". Посмотрел хедер файл к своей версии - есть передаваемый параметр double. Но ИДА показывает - что нет. Как так может быть? Ошибка декомпиляции?
Прям по правильному чтоб, с деструкторами и прочим.
В гугле шляпа одна.А на гитхабе больше решение задачек с литкода
Реализации стл глянь
Там хоть и не для людей код пишут, но если поднатужится, то все получится
> Тут человек базы не знает, а ты ему рекомендуешь в стл залезть?
А какая там база нужна?
Если чел хочет поглядеть эталонные реализации, то это первое место где поглядеть можно
С точки зрения алгоритмов и архитектуры действительно эталонные, но чтобы их понять нужна нехилая экспертиза в языке. Именно понять, почему сделано так а не иначе.
А просто посмотреть как оно работает в теории проще в классических книгах.
ахахаххах стл, туда если человек зайдёт, он даже не поверит что это такие же люди писали.
хз, единственное что наверное может там удивить не очень опытного челика дак это активное использование placement new, но чутка потыкавшись понимаешь что это збс идея
ну а остальное все привычное будет, если ты до этого чутка разбирался как пишут классы в крестах ну и само собой в шаблончках разбирался
мимо безработный великовозрасный чмошка
а имена типа __zalupa_2::___ptr_impl_ и табы пополам с пробелами неопытных челиков не удивят?
qtcreator, cmake. Всё тоже самое что и на линупсе
MinGW. Да, его используют в проде.
https://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма
не совпадает с алгоритмом растеризации в той же статье, как на картинке 2.
Также из других источников я взял алгоритмы растеризации и там тоже не совпадает с математической формулой, как на картинке 3.
Есть ли способы точно найти Y для X, но при этом что бы он совпадал с алгоритмами
Мне спектр отрисовать.
В видео прикреплённом в этом посте >>918404, верхние точки линий брезенхема запоминаются при растеризации линии брезенхема. То есть когда я линию провожу, я и запоминаю максимальный Y. Да, это рабочий вариант, но я хотел бы за одно действие найти maxY в столбце изображения, а не пробегаться в цикле.
Хз насколько возможно это, особенно для всякого абстрактного кала.
см питоньи обвязки для libclang
в зависимости от сложности плюсового проекта, собрать и протрекать сущности питоном займёт пара часов - неделя
А ну кстати да, если только в сам тулчейн вклиниться и оттуда парсить.
Это высокоуровневый язык. А начать тебе с него стоит, потому что большинство современных языков -сиподобные и повторяют элементы ситаксиса си.
Когда поле разных экземпляров класса ссылается на один и тот же ресурс. Я все без вас понял, мудаки.
Обращайся, вкатун
У тебя есть К воркеров, и каждый хранит ссылку/шейредптр на очередь задач.
Тут у шейредптр преимущество, что его можно будет изменить, в отличие от ссылки.
Абсолютно абстрактный пример.
Си очень простой язык в освоении, гораздо проще плюсов со всеми из подводными камнями.
А база у языков единая.
Ничего. Но итт маньки не могут в указатели и малок/фри.
#include <iostream>
#include <thread>
#include <fstream>
using namespace std;
int main()
{
thread thr([](){
fstream fs;
fs.open("out.txt", fstream::out | fstream::app);
for(int i=0; i<10;i++){
cout << i << endl;
fs << i << endl;
}
fs.close();
});
thr.join();
return 0;
}
это под виндой
#include <iostream>
#include <thread>
#include <fstream>
using namespace std;
int main()
{
thread thr([](){
fstream fs;
fs.open("out.txt", fstream::out | fstream::app);
for(int i=0; i<10;i++){
cout << i << endl;
fs << i << endl;
}
fs.close();
});
thr.join();
return 0;
}
это под виндой
Чем дальше в лес, тем больше дров.
Я в ахуе если честно.
Везде какие-то костыли.
Скажите еще - что я должен синхронизировать доступ к консоли, как в gui приложухе? Умора плять
в переменной fs?
эта хуйня тож не пашет:
#include <iostream>
#include <thread>
using namespace std;
int main()
{
thread thr([](){
for(int i=0; i<10;i++)
cout << i << endl;
});
thr.join();
system("pause");
return 0;
}
запись в файл там для теста, что поток отрабатывает, а то думал - что у меня вообще поток не запускался, потому что в консоли пусто.
дак вот там был челик который искал кодеров на РАБоту, и тестовым у него было написать telnet-сервер, по его утверждению там работы на 4 часа
так чтож учтите что от вас требуется в 2к23
Используя либы можно и быстрее.
Если не ты, то кот.
У меня идея. Надо все переменные объявлять volatile. И тогда точно никакого UB не будет!
за последние лет пять появились какие нибудь прямо писк шрифты заточенные под код, само собой, причем которые учитывают особенности крестов само собой (типа звездочек, ну вы поняли), но и причем чтобы были русские буквы в шрифте
>писк шрифты заточенные под код,
Я использую Hack, раньше сидел на Iosevka(советую, на сайте есть конфигуратор своего варианта шрифта)
>То есть когда я линию провожу, я и запоминаю максимальный Y.
У тебя спектр только при рисовании линий существует что ли? Зачем там в принципе что-то сохранять при рисовании? Зачем Брезенхэм, если линии только вертикальные? Зачем в принципе Брезенхэм в 2023? Это алгоритм для всяких спектрумов, у которых аппаратного умножения не было.
не работает если у тебя объекты non-copyable
даже если ты муваешь
долбоёбы конст понапихали хуй знает зачем, и теперь неожиданно ломается мув семантика
Делай обычным массивом.
Я так делал когда либу с плюсов на си переписывал зачем лучше ге спрашивай - все работало.
Есть идеи, что ещё можно написать?
auto long double ld{2.7218};
вроде как не легально.
А чего оно тогда на визуал студии работает? Расширения отключены.
Тогда все еще нельзя будет что то подобное написать, так как вектор сам инициализируется с помощью std::initializer_list
Object obj { {non_copy{}, non_copy{}} };
Школьная математика хуйня. Качай конкретную математику Кнута и читай. Еще https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about есть, там сильно с Кнутом пересекается. Если нужен анализ и общее что-то по вузовской инженерной программе, то основы можно быстро на mathprofi.ru выучить. Дрочи на здоровье пока стоит короче.
с ним все заебись, люди работают, люди при деле: уже приходиться писать целые трактаты на сотни страниц чтобы описать (почти) все тонкости инициализации в языке
так чтож нужные люди не остануться без работы
пиши теперь чтобы было обратное преобразование!
Деды, оправдывайтесь зачем вы это придумали?
только m_ еще хоть куда то пойдет
И не такое придумаешь, когда дохуя умных IDE ещё не придумали, есть только разновидности блокнота, а об ошибках типизации узнаёшь только при компиляции.
ну, к примеру, указатель на char в си мог означать множество вещей - указатель на символ, указатель на строковую константу, указатель на байт, указатель на массив памяти, указатель на си-строку (с нулем в конце)
ну и для некоторых других типов та же история по аналогии
поэтому приходилось использовать дефайны и использовать префиксы при именовании переменных
или еще один пример, когда в сях эмулировались классы посредством запехивания указателей на функции в структурки, то приватные члены и члены-функции этих структурок клали в конец структурки, иногда после какого-нибудь паддинга чтобы подстраховаться, и чтобы самим не запутаться помечали их каким либо префиксом, само собой наружу либы торчали уже другие усеченые структуры которые получались накладыванием на внутренние структуры.. ну и все это опять сверху макросами обмазывалось
так чтож все это были практичные решения без которых не обойтись
НО потом культура программирования деградировала лол и появились всякие "рекомендательные" системы именования типа венгерской нотации, где уже было прописано че и как делать, без объяснения начинающим кодерам зачем вообще к этому пришли
зачем что то читать, можешь попробовать сам подумать
к примеру, можно ли при помощи крестов написать либу с закрытой кодовой базой оформленную в виде динамически загружаемой библиотеки (нельзя), ну либо можно ли в крестах написать приложение с динамически расширяемой функциональностью при помощи плагинов (нельзя)
и как эти ограничения все же можно обойти, да, пойдя на определенные компромисы но все же
и тогда, возможно на тебя найдет озарение и понимание того в какой луже сидят все крестовики уже оче давно когда закрыли глазки на то у них до сих пор нету стандартизированного abi а все усилия комьюнити направлены на то чтобы ковыряться в шаблончиках и вводить новые закорючки в язык
Поидее, библиотека, которую я юзал, ещё и видео разных форматов воспринимает. Если подумать, то можно законвертить каждый кадр, а после объединить их в один видосик, думаю, вскоре займусь этим
Я молодой, бабах не случится, сам так делал, но не вижу смысла если нет задачи написать максимально производительно и нет лучших абстракций
ну вообще SAL annotations были офигенной задумкой у мелкомягких и оче активно у них использовались
смысл в том что эти макросы сворачивались в ничего, и компилятор их не видел, но они нужны были для статических анализаторов, а вот которые могли сделать гораздо больше полезных проверок
Кстати старый код стандарной либы майков мне прям нравится. Не то что гнутый говняк.
жаль что гцц все равно топ, а майки индусы
IUnknown
В CAS мы чекаем, равен ли текущий хед тому, что мы сохранили, и если равен( то есть никто не влез между нашим чтением и CAS), то мы заменяем на новый хед.
Отлично, все хорошо.
А ЕСЛИ КТО ТО ВЛЕЗ???
Какого хуя не берется новый поинтер на голову? Почему мы продолжаем долбиться со старым?
Я уже понял.
Почему то сначала нигде не увидел, что compare_exchange меняет desired на текущее значение автоматом.
Даже в cppref об этом не написано, или я в глаза ебусь.
Действительно в глаза ебусь, спать пора.
ПЕРЕКАТ >>2938659 (OP)
ПЕРЕКАТ >>2938659 (OP)
ПЕРЕКАТ >>2938659 (OP)
ПЕРЕКАТ >>2938659 (OP)
Mac OS, neovim, сраный coc.nvim и coc-clangd
За мат извени ,третьи сутки потею уже над этим, подскажите как сделать, это пиздец.
ты если собираешься cmake, то он тебе должен compiler_commands.json сам генерить
тогда всё само и должно подхватиться
если на винде билдишь, выберай в генераторы ninja
Это копия, сохраненная 29 ноября 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.