Как часто юзают кресты для системного программирования на Линуксе? Драйвера, офк, пишут скорее на чистых сях (если ОЧЕНЬ изъебнуться, то можно и на ломанных крестах, но зачем?), а как насчет юзерспейс лоулвл софта?
>>1668626 немудрено, но почему богомерзкая? Как по мне, удобнее инита в разы. Сисадмины явно не согласятся с твоим высказыванием (я не сисадмин, если что)
Где можно найти хороший учебник? Я учил основы в школе и не хочу тратить полчаса на прочтение описания концепции переменной. Где можно удобно, без лишних тонн текста изучить синтаксис языка?
>>1668621 Хуй знает как на этом говнолинуксе, на винде спокойно дрова пишу на плюсах. Офк с некоторыми ограничениями(нет исключений). Даже гипервизоры можно писать на плюсах.
>>1668714 Страуструпп вроде сразу на первых страницах весь синтаксис вываливает. Я правда название не помню. У него есть одна книга для новичков - тебе другую.
Объясните мне, тупоголовому, как лучше именовать приватные переменные в классе. Для себя подчеркнул два основных способа: префикс its и постфикс _. Приятнее офк выглядит itsVar, нежели чем var_. Но мб всё таки есть какой то излюбленный способ у большинства программистов, чтобы изначально выработать "правильную" привычку?
Ку крестач Почему сейчас нет ни одной более или менее известной ОС, ядро которой написано полностью (или хотя бы частично) на плюсах? Вообще, если мне хочется в образовательных целях написать ядро ОСи на крестах - это норм или хуйня затея?
Как сделать небольшое приложение на qt? Скомпилированный экзешник требует dll которые больше сотни мб весят. А мне бы ограничится хотя бы 1 мб. Уж о кб, как у приложений на шарпе я молчу.
>>1668918 Твой бинарь зависит от кутэшных либ, линковка с которыми может быть динамической (твои длл) или статической(не будет длл, но сам экзешник будет весить столько же). Без них никак.
>>1668918 >>1668930 Во, у меня тоже не запускается экзешник из папки проекта. Выходит, запуская в qt creator программу он динамически подключает либу? И надо в qmake менять это, чтобы отдельно работал экзешник без иде?
Метод find, связанный с контейнером std::set, имеет под капотом бинарный поиск? Просто сет - это перманентно отсортированный массив без повторяющихся элементов, использовать в такой структуре данных обычный линейный поиск - дикий проеб ресурсов.
>>1668918 > больше сотни мб весят Скорее всего ты взял дебаг версии библиотек, собранные для mingw. У меня релизные core+gui+widgets для msvc весят совсем хуйню
>>1669236 Может и не плохо, но де-факто стандартный компилятор под Винду - это msvc. В QT просто по какой-то причине не могут вырезать символы в отдельный файл, как это происходит с pdb под msvc. Наверное, чтобы не ебать ньюфагам мозг со склеиванием библиотеки и символов, хотя я не уверен
>>1668897 > m_pszName Никто ж тебя не заставляет всю венгерскую нотацию тащить с собой. Ну и по поводу ИДэЕ - если набрать "m_", то автодополнение выведет только члены класса, а если набирать имя, у которого в конце "_", то оно тебе весь скоуп выплюнет, так что тут плюс в сторону "m_". Ну и субъективно ревьювить легче такой код, периферическое зрение видит приставку и ты уже заранее знаешь, что тут идёт обращение к члену класса.
>>1669160 Есть стример на твиче, который пишет полноценный гипервизор за 3 12-ти часовых стрима что за хуйню ты высрал про всю жизнь, пчел? Цель не написать конкурента винде или Линуксу.
>>1669380 Так гипервизор просто хостит ОС, ему не нужно дохуя разных фишек для работы там с файлами или пользователем. По факту для простейшего гипервизора нужно просто реализовать несколько затычек под vmexit'ы и все. Если это гипервизор 2 типо то можно сразу под виндой запусктать и юзать уже готовые функции винды. Если же первого типа то да, тут сильнее потеть придется.
>>1668885 Потому что это никому не нужно. Кто сейчас вообще ОС пишет? Ну ты можешь потратить время какое нибудь микроядро написать, если скучно. в миниксе вроде около 10к строк кода, как раз тебе на пару лет работы
>>1669504 для гипервизора первого типа нужно писать отдельное ядро, ибо гипервизор первого типа не запускается в контексте ОС, он имеет прямой, неабстрагированный доступ к железу. Да, можно пропустить овердохуя фич обычной ОС, конечно же, но основы разработки ядра ОС лежат в основе разработки гипервизора первого типа. Что можешь посоветовать почитать про них?
>>1669582 По первому типу не скажу, я их не трогал никогда, но из функционала ОС во втором типе дергается обычно только выделение памяти и переключение между процессорами. В теории нужно просто реализовать свой аллокатор + переключение процессоров и все.
сап. Встала задача написать на qt скрипт который задавал нужный запрос в яндекс, переходил по нужному сайту и увеличивал переходы на данный сайт. Но проблема в том, что у яндекса наверняка стоит защита от ботов, возможно путём отправления дополнительного запроса, пока что выяснить какой именно запрос нужно отослать, чтобы яндекс подумал что это человек не удалось, чекал несколько сайтов через live http headers, но так и не нашёл нужный, сейчас пытаюсь разобраться как юзать headless браузер, чтобы не грузило дополнительные картинки и тд., а только нужные запросы, но хз удастся ли найти нужный запрос. Так вот суть вопроса: может у кого есть идеи как обойти защиту яндекса и получить посещение на страницу, как я понимаю по сути мне нужно будет сделать аналог headless браузера, чтобы он адаптировался к изменению кода выдачи яндекса, потому как при первом же изменении кода от яндекса, мои регулярки к хуям полетят и даже если я пойму как обойти защиту, программа перестанет работать, поэтому нужен хелп от опытны анонов, что лучше в данной ситуации сделать.
>>1668918 1. Нужные твои зависимости - те иодули, что прописаны в .pro в CONFIG += qt widgets network. 2. Компиль релизную версию, нажав слева с молоточком. 3. Берешь дллки - свой экзешник кладешь рядом с длл qt, которые копируешь из папки, типа qt/msvc2017/, путь точно не помню. Там лежат все-все-все дллки, которые могут использоваться. Тебе нужны qtcore, qtwidgets без "d" (это дебажные длл), и типа того. Можешь запускать экзешник до победного, ошибка скажет, чего не хватает. Простейший проект будет весить мегабайта два. А, ещё c++ либы для винды нужны, это которые ставятся вместе с играми, если кому-то свою программу отдашь.
2.1. В qt есть специальная утилита для сборки проекта - windeployqt, лежит где-то в папке с qt 3.1. Есть вариант статической сборки, чтобы вышел только один exe файл без зависимостей. Для этого нужно скачать исходники qt и начать собирать, указав ключ типа -статик, как-то так
>>1669709 Я прочитал. Но там просто половина не объяснена. Я понял зачем шейдеры, но как их писать пока нет. Там следующая глава сразу про шейдеры. Поэтому думаю не страшно, если сейчас просто прочитаю, не пытачсь понять всё
Означает ли эта самая "инкапсуляция" методов в класс Operations, что методы должны вызываться откуда-то из другого класса от объекта класса Operations, а реализация "инкапсулируемых" методов должна быть protected или private?
>>1669725 > Означает ли Нихуя не означает, просто ввернули хипстерское словцо. Возможно на английском это звучало чуть более казульно - они просто хотели сказать что функции реализуются как методамы класса, а не просто оставляешь их неприкаянными в глобальном неймспейсе.
>>1669725 Контруктор класса Operations должен принимать в себя объект реализующий интерфейс IComparer.
Реализуешь этот интерфейс у класса ShapeComparer с необходимыми методами, которые будут принимать объекты класса Shape и возвращать булевое значение.
Класс Operations будет иметь три перечисленных метода, которые возвращают булево значение, принимают объекты IOperable (нужно реализовать его у класса Shape), и вызывают методы переданного через конструктор объекта реализующего интерфейс IComparer.
В итоге создаешь класс Operations, передаешь ему класс ShapeComparer, и вызываешь метод передавая ему два объекта реализующих интерфейс IOperable, в данном случае два класса Shape.
Кто-нибудь писал на крестах/сях в VS Code? На учебе не удобно держать сотню IDE под все ЯП, а так удобно, что VS Code могу и для жса, и для питона, и для подстветки АСМа, и для сей/крестов.
>>1670287 Я вот только что кидал код,какого то хера удалили, я вроде все прошерстил, и до сих пор не понимаю, что не так. Проблемы с выводом, и программа не доходит до сортировки.
Это нужно фиксить? LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library glew32s.lib(glew.obj) : warning LNK4099: PDB 'vc120.pdb' was not found with 'glew32s.lib(glew.obj)' or at 'C:\Users...\vc120.pdb'; linking object as if no debug info
Сегодня в очередной раз унизил великовозрастный скам. Выпиздованный с галеры с++ синьер претендовал на 130к. Сеньера размотали с трех вопросах 1. Обход дерева (там кода 10 строчек) - всрался. 2. Вопрос по битовые выравнивания структур - всрался. Тут уже начали угорать и спросили его виртуальный конструктор и это мудило попалось, лол. ВИРТУАЛЬНЫЙ КОНСТРУКТОР Эта порвань просто дропнула разговор.
>>1669725 Инкапсуляция означает сокрытие деталей реализации за интерфейсом. Т.е. пользователи класса дергают методы и не парятся по поводу того что у него там внутре.
>>1670728 1. Рекурсивно вызвать функцию обхода для левого и правого сына? 2. Хуй знает что за битовые выравнивания, знаю только про байтовые через alignas. Если это про битовые поля, то очевидно что если количество бит не хватает до целого байта то оно выравнивается к ближайшему байту.
>>1670775 ну у нас шарага с разработками на гос-во, мы не яндекс конечно, но синьерам платят от 130. Многие думаю если гос-шляпа можно вообще нихуя ни делать и не знать. Один был сильный кандидат, был в резюме дойче, так он так и сказал, что планирует отдохнуть годик
>>1670858 в госконтору джунами берут только когда толстожопая дирекция какого-нибудь пиздюка пристроит. К нам джуны если и приходят то если не дауничи через год съебывают куда получше.
>>1670868 потому что в одном случае ты устраиваешься в норм. контору, а во втором в госпарашу. Через 5 лет в госконторе ты деградируешь в край и пузырьком не сможешь отсортировать. У нас синьеры иногда ходят, их никуда не берут, в одном месте спрашивали НА СИНЬЕРА НА 110 т.р.. Держитесь за стулья ВЫВЕСТИ ВСЕ ЧИСЛА КОТОРЫЕ ДЕЛЯТСЯ НА 5 и 3 ИЗ МАССИВА ЧИСЕЛ ОТ 1 ДО 100
>>1670876 Если зависает в цикле - проверь условие Хотя я сам не так давно хотел считать файл в байтовый вектор, на маленьких файлах нормально работало все На файлах под 2 гб - вылетало с ошибкой Пофиксил разбиением файла на части размером const BUFFER_SIZE По-другому не знаю как
>>1670886 я не умею исключениями пользоваться, раньше писал код для критических систем, там были только коды возврата. Как-нибудь без исключений можно и какое исключение генерит push_back и генерит ли вообще его?
Ох этот сладкий вой отчаяния крестобляди https://habr.com/ru/post/497114/ Крестоблядь думала, что весь ее опыт как на костылях и в муках писать какую-нибудь хуйню и затем месяцами ее отлаживать это нечто сродни священным знаниям, а оказалось рыночку это на хуй не нужно и проще на какой-нибудь джаве заебашить и тупо кол-во нод нарастить чем дрочить си++ с бустами и всякими сетевыми заморочками. Си++ блядь осознало, что 17 лет чистила говно вилкой в то время когда парни посмекалистей пилилили все на джавах и весело проводили время с тянами. Уже и страуструп начал подвывать и майерс перекатился в столяры, а порвань разная все на си++ в России пытается самоутвердиться. Помню на рсдн был эпичный тред как интел вышвырнуло РэндД пинком под зад и разработчики компиляторов пошли осваивать ДжиЭС
>>1670893 ДС) епта братюнь, тут вообще параллельная реальность, в одну контору берут после джава раша на 100 т.р. джунов с годом работы и тут же набирают с++ на 120 с 5 годами.
>>1670887 Еб твою мать, ты что, не можешь восемь строчек написать? Четыре из них - кривые скобки. > какое исключение генерит push_back Ну пиздец, дожили. Про cppreference не слышал? В шапке ссылка есть.
>>1669585 Читаю принципы и практика страуструпа. Ебать пишет он вроде годные вещи, но примеры просто дебилизм. Жаль, Стефан Кочан не родил учебника по С++
По твоей теме поищи пикрил или Макса Шлее или Жасмин Бланшет.(но она боян) Плюс есть видеоуроки.
>>1670926 ну как сказать, не всегда. есть совсем для маленьких, а есть разной степени упоротости учебники. вот есть Айвор хортон С++ 17 вполне себе нормальный учебник. или Липпман базовый курс или на худой конец Прата. >>1670931 Может, ты и прав. Но мне надо поддерживать код на кьюте, потому пока его учу. а так, да, буду изучать их.
>>1670937 да там нечего особо учить, сигналы-слоты. Вот и вся концепция. Еще модели разные навороченная тема (MVC). Хотя я Qt уже лет 10 использую, очень удобно, жаль мало кому нужно.
>>1670956 я только вкатываюсь Имею опыт на питоне всякие консольные хуевины писать для автоматизации рутинной работы. А сейчас надо поддерживать приложухи. Вспоминаю короч С++, учил его в универе и забыл. Вот решил короче ту зеленую книгу читать, гусей-лебедей страуструпа и по мелочи разное. Я хз. может, есть смысл свитчнуться на более умные книги. в универе препод советовал следующий набор для С++ 1. Дейтел и Дейтел 2. Гради Буч - объектно-ориентированный анализ 3. Алгоритмы + структуры данных = программы. Вирта НУ и высший пилотаж - трехтомник Кнута. Еще Лафоре ООП на С++ и Павловскую.
>>1670961 Все книги говно. Кнут - говно, совершенно непонятно, что и как использовать. Гради Буч - говно оторванное от жизни, гладко было на бумаге. Дейтел - х.з. чето для нубасов, не читал. Вирт - читал что-то, вирт предвосхитил всех петушей, очень грамотные с системной точки зрения книга.
Я бы рекомендовал 1. Эккель - 1 том. Сложная хуйня, однозначно книга ДЛЯ ПРОГРАММИСТОВ, а не вкатышей. После нее поймешь зачем нужны шаблоны и будешь их любить(что важно). 2. Аммерааль - познакомишься с STL, поймешь почему это действительно удобно и стоит этим пользоваться. Что бы на работу устроиться эти книги совершенно не помогут, если нужно вкатиться то это Майерс, Саттер.
>>1670980 Благодарю за Аммерааля и Эккеля. Я Эккеля скачал оба тома, однако не читал. Знач, буду её читать. >>1670986 не, не правильно. Там же в статье вроде написано:
Can we make a class constructor virtual in C++ to create polymorphic objects? No. C++ being static typed (the purpose of RTTI is different) language, it is meaningless to the C++ compiler to create an object polymorphically. The compiler must be aware of the class type to create the object. Ну а дальше вроде фабрика описывается.
>>1670751 Нет, инкапсуляция значит сокрытие чего-либо в чём то. Атрибуты вида private, например, тоже часть инкапсуляции. Если у тебя конструктор класса принимает другой класс и работает с его методами, то это тоже называется инкапсуляцией. А интерфейс это просто инструмент для реализации протокола.
>>1670996 Да похуй. Она учит как нужно использовать итеараторы, алгоритмы, функторы. Я проходил супер современные курсы по си++ и то хуево все понял из СТЛ, а тут все по местам ставит. Смотри, вирт написал про модульность, переменные состояния и т.д., хуй знает сколько лет назад и занешь сколько программистов из моего окружения осознали это? Никто. Зато гонятся за всеми новомодными фишками стандарта. Я тебе скажу больше, теории автоматов вообще сто лет в обед, а кто умеет ее использовать, что бы справиться с какой-нибудь злоебучей асинхронщиной? Только в топовых компаниях единицы и так блять везде.
>>1671032 Хотя я тут наверное пропизделся, вроде есть микросервисная архитектура, может это и есть то что вирт имел в виду под модулями. В программисты вообще часто идут туповатые самонадеянные люди у кого не сложилось с наукой или специальность невостребованна в России. Тут со вкатышами даже проще, вкатыши не считают себя умней других и с легкостью усваивают сложные концепции, в то время как какой-нибудь пидор из эмбедеда который и паять может и в радиоволнах рубит и прошивку может для трех семейств микроконтроллеров написать не может полгода гит освоить и даже не врубается зачем он нужен, или как препод из уровня вуза типа МФЮА по программированию не может в срок ПО написать.
>>1671032 >Да похуй. Она учит как нужно использовать итеараторы, алгоритмы, функторы. Да это во многих языках есть, вся теория одинаковая. Все структуры данных, все эти итераторы, всё есть. Зачем ещё раз учить? А вот специфика реализации везде разная.
>>1671056 Я вот и слова такого, "функтуры", практически не знаю, хотя callable-объектами активно пользуюсь. По-моему этот термин просто не прижился и не используется.
Мне кажется, что для современных динамических языков все эти конструкции уже давно норма, всё уже давно в массах. Конечно, это не про тех, кто изучает первый язык программирования.
А вот именно STL довольно уникальна и специфична именно для C++, хочется какой-нибудь материал, чтобы въехать в STL из других языков. Не чтобы на C++ уходить, а чтобы просто уметь.
ананас, а вот посоветуй что-нибудь почитать углубленно по С++. А то хелловорды уже пишу, а на собеседованиях заваливаюсь на том что не знаю каких-то нюансов языка
например на вот таких i = 1; printf("%d,%d", i++, i++); Что выведет?(такую задачу у меня не спрашивали - это с хабра одной компании их вопрос на собесе)
или уже из реального: - почему нельзя использовать memset? - че блядь? всегда писал - Да? мы вам перезвоним
Пробовал в черновик стандарта С++... но это такой шлак (и любителям потешить чсв - даже сам коммитет заявляет что стандарт не для чтения и тем более не для обучения. это юридический документ для спецов делающих компиляторы)
>- почему нельзя использовать memset? Связано с временем жизни объектов, всякими заморочками в стандарте. Компилятор может решить что то, что ты заполнил мемсетом, на самом деле не существует (потому что нормальным образом эти переменные не присваивались), и соптимизировать их нахуй.
>>1671123 Обычная ситуация - есть массив векторов (геометрических, тех которые xyz), тебе нужно его обнулить.
С fill у тебя будет вызываться конструктор для каждого вектора. Оно конечно заинлайнится и соптимизируется, но будет в несколько раз медленнее мемсета, я проверял.
>>1671062 Ну братюнь, вольному воля, попробуй курс Кэйт Грегори с Pluralsight .com называется Beautifull stl alghoritms Как-то так. Аккаунт там стоит 30$ в месяц, но оно того стоит, действительно клево.
>>1671113 это мартышкин труд через такое говно к собесам прорываться, на мой взгляд это вообще унижает настоящего инженера, изучать непонятную шизу. В твоем примере это классический с++ прием для унижения нубла. Так делать нельзя, а именно в одном выражении дважды выполнять переменной присваивание. А почему ты использовал memset? Кстати. Я вот с утра проснулся не очень соображаю, расскажи, что была за задача и почему memset&
>>1670926 Ага. Я тоже все время с этой хуйни ору. Начинают что-то объяснять тут хуяк и к устройству стека или какую-нибудь ассемблерную вставку влепят, а книга типа для новичков.
>>1670937 > Липпман базовый курс Вот это к слову охуенный учебник. Очень все хорошо рассказано, и рассмотрено почти все, что может понадобиться джуну. Но нет многопоточности, что удивило. Только задачи там легкие, надо искать в других местах.
Ку крестач. Собсна назрел вопрос. Вчера в рекомендах на ютубе вылез стрим(лекция) Тимофея Хирьянова про алгоритмы и структуры данных на плюсах. Кто нибудь пытался смотреть и если да, то насколько это юзфул? Экшели сам смотреть пытался, вроде чел как лектор довольно харизматичный, по крайней мере не скучно слушать.
>>1671692 я еще думаю крестовик (если он на крестах ебашит) настолько должен загружать свой мозг всякой хуйней, что у него тупо ресурса не хватает другие технологии осваивать. Сейчас на собеседования спрашивают три темы 1. Знание синтаксиса с++ и всяких его новомодных фишек. 2. Знание библиотек (STL, BOOST) 3. Различные алгоритмические задачки это просто везде где я был, вот эти три пункта только первый этап на час, потом идет второй. Крестовик тратит все время на изучения с++ т.к. там бездна просто. Не думаю что какому-нибудь джависту надо знать как там че в ассемблер превращается на уровне машинных кодов, а с++ что бы понимать, что это за хуйня происходит желательно должен понимать всякие стеки, хуеки, как таблицы методов в памяти расположены, когда через регистры передются параметры, а когда через стек и потом хуяк - тебя бросает к бусту, хуяк к стл.
Как научиться писать тесты? Просто у меня обычно идет бодрый процесс написания кода и потом нудно нудно пишутся тесты и покрытие выходит херовое. Смотрел кот у профи, так у них все будто робот за них дописывает сразу на каждый чих.
>>1671835 >джависту надо Там тоже дохера всего специфичного для языка, что надо поддерживать в актуальном состоянии, и что меняется с новой версией языка раз в три года. Больше правда по библиотекам основным.
Беда с этими энтерпрайз-языками, люди тонут в том, чтобы учить стандарты языка, вместо самого программирования логики.
>>1671877 Профи пишут сначала тест, а потом код который его проходит. Потом ты пишешь новый тест и новый код, который его проходит. Конечно, не нужно писать тест для того чтобы проверить, что твоя программа выполняет правильно тривиальную операцию сложения двух целых чисел, но и мудрить тоже сильно не нужно. У тебя должен быть небольшой план из базового функционала, который нужно реализовать. Сначала ты реализуешь его, а уже потом приступаешь к деталям. В итоге у тебя получается много тестов и качественный код, который эти тесты проходит. Если же хуячить сначала код, а потом пытаться написать тесты, то ты придёшь к тому, что какой-то починив какой-то функционал, ты ломаешь другой, починив другой, ты ломаешь тот что починил раньше, не очень приятная ситуация в общем. Поэтому сначала пиши тесты, потом пиши код, никак иначе.
>>1671891 >>1671877 И да, забыл добавить, что ты на ранних этапах должен принять решение о том, какие паттерны проектирования ты будешь применять и вести свой код в сторону этих паттернов.
>>1669000 Не знаю. Вот я недавно вкатился в трудоустройство, уже норм ориентируюсь в проекте, и вроде мечта, самостоятельность, деньги даже откладываю кое-какие, планы строю, но все не то. Никакое потребление контента на досуге не дает стабильного ощущения уюта. Единственное, что воскрешает во мне чувство ламповости бытия, это пытаться что-то учить. SICP, как же охуенно, хосспаде..
>>1671210 > Так делать нельзя, а именно в одном выражении дважды выполнять переменной присваивание. этот вопрос на знание стандарта
>>1671210 >Я вот с утра проснулся не очень соображаю, расскажи, что была за задача и почему memset ну например в вулкане все структуры обнуляют мемсетом
>>1672065 Охуеть, ну раз ты ни разу не видел, значит точно не нужно! А как делать ты конечно не скажешь, потому что в твоём ооо рога и копыта всё делают руководствуясь "я так видел, я так чувствую".
>>1672063 В вулканах и опенглях на мой взгляд си-лайк подход, с мемсетами и маппиннгом структур на память. А для цпп лайк подхода это считается небезопасным говном, так как ты нигде никак не описываешь ни байтордер, ни модель памяти. Может у тебя там, я хуй знает, один байт 10 битами описывается.
Та же хрень того токсичного анона с собеседованием, пункт про "битовое" выравнивание структур. Во-первых байтовое, во-вторых это не стандарт, а директивы компилятора через #pragma pack. В третьих, такой подход ожидаемо использовать для супербыстрого парсинга данных: ты описываешь структурой протокол (это поле 2 битика, это 6, тут поле 32 байта), прагмой-пак указываешь, что твою структуру надо выровнять в памяти по байту, затем тебе приходит пакет, лежит в памяти, и ты кастуешь этот кусочек памяти как указатель на твою структуру-протокол. Просто? Да. Быстро? Очень. Но не с++, не абстрактно нихуя, это сишная залупа, когда ты знаешь, как у тебя рабоает память на твоём железном говне. В c++ будь добр парсить как дед по старинке, вычитывая сериализованные данные. В с++ тем более надо по мудацки кастовать либо через reintrept_cast (лучше говна поесть), либо static_cast<mystuct★>(static_cast<void★>(&buf)), а эта залупа тоже выглядит просто чудовищно.
Есть какой-то общепринятый и не уебанский способ обрабатывать ошибки без использования исключений? Они дают такой удар по перформансу, что ну их нахуй. Или просто обмазаться ифами, как в чистой сишке?
>>1671835 Ну, именно поэтому на крестах не пишут бизнес логику (привет сисярпу и джаве) и не пишут веб, так как там нужен подход аля "хуяк хуяк и в продакшн", что с крестами строго не прокатывает. С++ это язык для интересной низкоуровневой разработки, для воистину чудовищного хайлоуда, для научно-исследовательских целей, для системных утилит, браузеров, антивирусов, разработки ААА игр и т.п.
>>1672229 Ассерт. Есть ошибки, которые возникают внутри проги изаз криворукости, их в дебаге отыскиваешь ассертами, а в релизе объявляется макрос NDEBUG (вроде), который ассерты все отключает. Конечно же, если есть какой-то внешний ввод инфы, то ее уже приходится проверять динамически, ифами или ексепшенами. Я эксепшены ставлю только на запуске программы и например на парсинга файла, в других местах частенько возвращаю еррор_коды, в простейшем случае bool, и ифами анализирую
>>1672229 Если совсем без исключений, то тут только либо монадическая обработка ошибок (optional, variant), либо коды возврата. Но если тебе исключения мешают там, где их вообще не кидается ты ведь не на каждый чих делаешь throw?, то попробуй LTO и обильно подлить noexcept в проблемные места.
>>1672230 Даже пример с стд::вектор - есть метод.at(), а есть оператор[], который нихрна не проверит диапазон, и прога люто крашанется со свистом за выход массива. И это правильно. Если ты строчкой выше инициализовал этот вектор, и цикл делаешь до вектор.сайз(), то зачем что-то усложнять, проверять? Я пришел к тому, что не стоит весь функционал, особенно скрытый, выдрачивать на проверки, совершенно лишнее. Сделать разовый контроль входных данных, а внутреннюю логику проверить на граничные условия юнит-тестами, и норм
>>1668430 (OP) Настал наконец час когда я высру своё первое десктопное приложение на windows с gui. У меня только 1 вопрос. Что сперва сделать? Написать программу на с++ в консольном виде и потом перенсти её в winforms? winapi смотрел там вообще ничего непонятно, годных туториалов не наскрёб, не понятно откуда что там берётся, так что в ну его, начну с простейшего
Сап, почему очередь с приоритетами херит указатели? У меня есть бинарное дерево, я пытаюсь из него сделать дерево Хоффмана, но когда вызываю метод top, то указатель right начинает ссылаться сам на себя Если писать вручную, то все нормально. https://pastebin.com/JDAmjFNg
>>1672117 >В с++ тем более надо по мудацки кастовать либо через reintrept_cast (лучше говна поесть), либо static_cast<mystuct★>(static_cast<void★>(&buf)), а эта залупа тоже выглядит просто чудовищно. Я тибе больше скажу. reintrept_cast<mystuct★>(&bif) это по определению static_cast<mystuct★>(static_cast<void★>(&buf))
>>1673079 >Это странный некродиалект, который нигде почти не используется docwiki.embarcadero.com/RADStudio/Rio/en/Modern_C%2B%2B_Language_Features_Compliance_Status
Ананасики, подскажите насколько оптимизирован буст? У него есть сасная сублиба Interprocess, которая может шарить STL-контейнеры между процессами, равно как и мьютексы с condition variables, как раз то, что мне нужно для моего пет-проекта. Беда в том, что проект довольно чувствителен к рантайму (даже отказался от использования динамического полиморфизма и дрочу вприсядку, реализуя его через шаблоны). Офк жизни людей от этого не зависят и прямо максимально реальный пердолинг перформанса мб и не нужен, но и проседать в рантайме тоже не варик. Что скажете?
Аноны, как посплитить строку по фене std. У меня слова разделены двоеточие. На джаве я просто split делаю, а тут открыл, какой-то блять split1, или еще параша с итераторами. Пиздец.
Ку крестач. Вкатываюсь в плюсы. Прочёл книгу "с++ за 21 день" чисто для старта. Что можно прочесть потом? Есть ли смысл читать "язык программирования с++" страуструпа там вроде как те же азы, но чуть более подробно и больше информации даётся. Или же не стоит пережевывать одно и то же и сразу валиться вперёд?
Аноны, молю о помощи У меня мутипроцессная прога, между родительским и дочерним процессами есть расшаренный deque (спасибо бусту за возможность шарить контейнеры). Как мне получить файловый дескриптор от верхнего элемента deque? Дочерний процесс вызывает другую программу через execve и я хочу заставить эту программу читать данные из вершины очереди. Я думал использовать для этого сисколл dup2, чтобы связать файловый дескриптор верхнего элемента очереди с stdin и при запуске целевой программы заставить ее читать из stdin (читая из stdin - она будет читать данные из контейнера в виду дубликации файлового дескриптора).
>>1673796 шапка треда. там вские скоты мейрсы, саттеры, александрески.
Я тот анон, которому посоветовали брюса эккеля. кстати, весмьа нплохо чем гуси-лебеди страуструпа. Страуструп может и мощный программист но как пистель учебных книг он не оч.
Аноны, у меня проблемы. В чём суть: цикл while должен продолжать делать свои дела, пока какая-то из переменных (x или y) не станет равна. И при мне одна из переменных становится равна нуля после итерации цикла и цикл идёт ещё на один заход, игнорируя условие выхода. В чём может быть проблема?
Пишу на си, с++ планируютолько выучить. Сейчас внезапно пишу одну программу и мне нужна одна либа край для неё, а она только с++ поддерживает. Можно ли писать с++ так будто я пишу на с? Я смотрел вроде синтаксис у языков крайне идентичен
Как можно отсортировать set, содержащий указатели на мой класс? Если в качестве компаратора указать greater<CLASS>, компилируется, но сравнивается неправильно (видимо, вижла сравнивает указатели сама) Как я могу указать способ сортировки?
>>1674064 std::greater без параметров - это transparent компаратор, будет сравнивать любую сравнимую хуйню, главное, чтобы нужный компаратор был на месте. Удобно, когда есть std::map<FatKey, int> и нужно что-то найти по ключу, который сложно/долго/етц создавать, поэтому пишут SlimKey и по нему ищут. Если в шаблоне компаратора указать FatKey, то он больше не будет прозрачным и такая хуйня не прокатит. По твоему вопросу - у тебя указатели, так что пиши свой компаратор, в котором их будешь разыменовывать.
>>1674183 Экзепшены уже используются везде, ты не можешь их избежать, ведь пишешь не собственную программу в сферическом вакууме, а лишь встроенную в уже существующий фреймворк ОС и прочего.
>>1674371 В гугле запрещают юзать эксепшены при написании крестового кода тащемта, ибо у гугла весь крестовый софт сверхчувствителен к перформансу (кресты сейчас в других индустриях и не существуют, только в пердолинг-хуйлоудах и жестком рилтайме) не то, чтобы это что-то плохое, скорее даже наоборот, но как факт
>>1674396 > кресты сейчас в других индустриях и не существуют, только в пердолинг-хуйлоудах и жестком рилтайме Ты хуйлоадщик из гугла? нет? Что тогда тут забыл? Сам себе противоречишь, друг.
Сколько раз уже вижу эти высеры про экспешены и того как они на производительность влияют. А по факту кто-нибудь может объяснить в чем реальный оверхед экспешенов? Типо раскрутка стека когда выкидываешь его это дорого? А если делать без эксепшенов то тогда надо просто инт какой-то возвращать с кодом ошибки и проверять его после вызова функции, это как минимум +1 кондишнл джамп. А как раскрутка стека заимплеменчена? Или в другом чем то проблема?
>>1674718 > Раз уж ты ответил, то скажи еще нужно видимо ждать окончания ковид событий, чтобы пробовать? Как обстанова то вообще? Хайринг зафризен из-за ковида полностью. Обстанова ок сидим из дома работаем все.
>>1674983 Насчет серверов ты погорячился, анон. Сервера на плюсах не пишут уже, он уступил это другим языкам (даже той блевотной джаве, да и на ноде начинают макаки пилить серваки, и индустрия хавает). Вопрос в другом - обоссыт ли в итоге раст плюсы или нет. Язык еще молодой, а уже хайпанул пиздец как, плюс безопасность памяти. Хз-хз..
>>1675022 Чому это не пишут? Хоть GWS и IIS, фейсбук и яндекс, хоть сервера League Of Legends или World Of Tanks.
Вообще удивительная ситуация сложилась. С одной стороны буквально полмира держится на С++, все с продуктами языка сталкиваются каждый день: от Windows до Word, 1C, очередной игры или компа в автомобиле. С другой стороны я регулярно вижу удивленные взгляды друзей или родственников "Ебать ты динозавр, никогда не встречал С++ погромистов, сейчас же все жаве пишут лолбля".
Какая-то странная картина мира сложилась в медиа где в основном разговаривают о каком-то го, жс, питоне и прочих мемах.
>>1675064 Ну, ОСи на чистом Си все же пишут, а не на плюсах (что мне не совсем понятно, буду рад, если объяснят, а то сложилось так, что все ядра нынче популярных ОСей написаны на Си). Джава реально популярнее плюсов, но от этого она менее блевотной не становится. Это просто потому, что пластиковый мир победил и кровавый тырпрайз требует своих, наркоманских инструментов, где джава выстрелила пздц как (хотя тот же сидиез мне импонирует больше джавы, который, увы, сосет хуй, ибо анально огорожен мелкософтом, но все равно лично я предпочитаю кресты, ибо я байтоёб).
Крестовички, всем привет. Я грызу Boost.Process и пока не могу понять как я могу асинхронно хэндлить N дочерних процессов. Цель - у меня есть родительский процесс, который кидает данные в расшаренный буфер, а N детей хавают оттуда (я в курсе про состояния гонки, вопрос не про это). Как этого достичь, юзая буст? Заранее спасибо.
Делаю свою реализацию строки интереса ради. Поместил класс в неймпейс, и в классе обявил дружественную функцию. Но из функции почему то не могу обращаться к приватным переменным. Почему?
>>1675064 Ничего нового не пишут, имеется в виду. То есть когда решают на чем писать какой-то новый продукт, не выбирают кресты. Бэк Яндекс Такси, кстати, на крестах написан просто в целях экономии на программистах — Gett написан на го и никаких проблем.
у меня знакомый в одной компании крупной работает, там прогеры на ++ и на джаве, ++ апи, java десктоп. Так вот у них джава-пидорам надо окошки писать, а крестоблядям серверную логику, причем джава пидорам платят на 20% больше.
>>1675239 давно известно, что у джавистов и макакаскриптеров самые высокие зп из девов, крестовикам и сишникам платят в разы меньше, так рыночек устроен, увы. Но кресты - это прежде всего душа. Я как представлю что мне надо будет писать что-то на джава - сразу рвотные позывы начинаются, никакая надбавка в 20% к зп не поможет.
>>1675252 анон, тоже тебя не понимаю, алгоритм есть алгоритм, на чем его не напииши, вот последний жопоразрыватель у меня был, это то что в питухоне нет свич-кэйс
>>1675347 Язык без эксепшенов? Я ебал. Коды ошибок не просто так в своё время были признаны порочной практикой. Но если зумерам хочется топтать грабли и потом снова переизобретать эксепшены, то ради бога.
>>1675349 Зачем нужен раст, когда современный С++ безопасен по памяти? Офк С++ позволяет наговнокодить и позволяет писать код с переполнениями буферов и дикими указателями, но как бы есть умные указатели + в контейнерах есть проверка границ буферов (если юзает метод at для доступа к элементу массива, а не аутичные сишные [], где нет проверок), что исключает переполнения. Нахуй тогда тот раст всрался, если современные кресты с использованием смарт поинтеров и STL безопасны? Плюс кресты как язык мощнее по фичам, чем раст, как ни крути. И метапрограммирование - вещь ОЧЕНЬ мощная.
>>1675424 Засирают код проверками и перекидываниями этих ошибок на уровень выше. Читать неудобно, писать заебывает, поддерживать муторно. Расширяемость плохая — добавил новую ошибку, надо править весь вызывающий код по цепочке. На один и тот же код вещают кучу разных ошибок, а юзеры библиотеки потом не могут понять, почему функция возвращает ERROR_GENERIC_FAILURE.
>>1675468 А с экспешенами тебе надо все заворачивать в RAII и писать код с мыслью что в любой момент может произойти бздых и выполнение пойдет по другому пути.
С кодами ошибок у тебя хотя бы код исполнятеся предсказуемо.
>>1675473 эксепшен для полупокеров, в любой момент все может ебу дать и не факт! что очистится. Если через коды ошибок работать, контроль в разы лучше, но код становится на вид как говно.
>>1675473 В RAII один раз завернул, и оно лежит себе в углу и не мешает. А думать об эксепшенах надо в основном только в том плане, что надо научиться пользоваться современными возможностями, которые позволяют писать безопасно.
> С кодами ошибок у тебя хотя бы код исполнятеся предсказуемо. Он всегда исполняется предсказуемо. А когда нет, то это называется UB.
Ребята, как вкатиться в буст? И есть ли нечто бустоподобное хотя бы? Это говно даже не компилится нормально, вылетает простыня ошибок, где миллион вложенных шаблонов, гугл молчит, даже скомпилировать нихуя не получается. Документация у него не ахти. Памагити!!
>>1675223 >на собеседовании >"а как реализована фича X в языке?" >"ну так-то так-то" >"Да, верно" >поговорили минут 10 про неё >прихожу домой, чекаю cppreference >мы оба несли полнейшую хуйню Так случалось наверное раза 3 уже. Главное - говорить так, как будто так оно и есть
>>1675573 Я на Линуксе. По идее должно компилиться через флаги -lpthread -lrt, оно-то компилится, но при попытке исполнить бинарь:
terminate called after throwing an instance of 'boost::interprocess::interprocess_exception' what(): boost::interprocess_exception::library_error [1] 48688 abort (core dumped) ./testboost
Чем определение нового аллокатора в бусте отличается от дефолтного определения аллкатора? Допустим, я хочу расшаренный std::deque<std::string> между родительским и дочерним процессами. Буст позволяет шарить STL-контейнеры через shared memory обертки, но как завернут имено декью строк я пока хз, выходит хуета. Может кто-то подсказать/направить на матчасть, нужную для понимания сей ебанины?
>>1675848 >char Простой 7-битный аски >wchar_t Платформозависимая хрень, с которой приходится жить. >std::string Строка из стандарта >System::String Дотнетовская строка из C++/CLI, это вообще отдельная тема
Насчёт интов - в стандарте не указаны конкретные их размеры, поэтому в компиляторах сделали собственные типы вроде __int32. Начиная с C++11 и C99 ввели стандартные типы для целых фиксированного раздела: https://en.cppreference.com/w/cpp/types/integer. Кури стандарт, в общем.
>>1675848 char/std::string - восьмибитовые строки, можно хранить текст в ASCII, в 8-битных кодировках (cp1251 и прочие), в utf-8 wchar_t/std::wstring - пытались увеличить размер символа, но не определились, насколько именно. Годятся чтобы хранить строки в utf-16 на винде (где на них всё апи), а на линуксах оно практически юзелесс (там все живут в utf-8). Всё, что начинается на подчеркивания - какая-то внутренняя кухня компилятора, без веских причин не используй. int - обычное повседневное целое число. uint32_t и прочие _t - числа фиксированных размеров в байтах. Если ты в каком-то месте закладываешься, что int будет именно 4 байта, и не байтом больше, то там надо писать uint32_t
>>1675904 А ну ка, посчитай сколько символов в таблице, и сколько бит на это надо. Другое дело, что аски по-разному дополняют всякой региональной залупой не к ночи будь помянут КОИ-8. Однако по стандарту сам ASCII таки 7-битный.
> The committee considered an eight-bit code, since eight bits (octets) would allow two four-bit patterns to efficiently encode two digits with binary-coded decimal. However, it would require all data transmission to send eight bits when seven could suffice. The committee voted to use a seven-bit code to minimize costs associated with data transmission. Since perforated tape at the time could record eight bits in one position, it also allowed for a parity bit for error checking if desired. Eight-bit machines (with octets as the native data type) that did not use parity checking typically set the eighth bit to 0.
>>1675979 Пчел, таблица ASCII имеет 256 символов (от 0 до 255, спец символы после 127 - это тоже часть таблицы ASCII, прикинь!). 256 = 2^8. Вот тебе и 8 бит. Не спорь плиз, ты реально глупо выглядишь, говоря по сути, что char имеет размер 7 бит вместо 8, лол. У тебя тогда sizeof(char) никак не мог бы выдавать размер в 1 байт.
>>1676034 Хуево. Именно поэтому новые проекты пилят на расте, а старого легаси на сишечке и плюсах настолько много, что ни у кого нет ни денег, ни сил, ни времени, ни желания все это переписывать, а поддерживать все это как-то надо.
>>1676041 >спец символы после 127 - это тоже часть таблицы ASCII, прикинь Не неси чушь, а почитай историю. Кодовые страницы - не часть аски. > У тебя тогда sizeof(char) никак не мог бы выдавать размер в 1 байт. Ты исходишь из того, что байт=октет, что в зоопарке 70-х было не так. Многие компьютеры тогда вообще имели размер слова кратный шести, потому что использовали BCDIC.
>>1676070 >Ты исходишь из того, что байт=октет, что в зоопарке 70-х было не так. Многие компьютеры тогда вообще имели размер слова кратный шести, потому что использовали BCDIC. Какая разница что было в 70-ых? В 2к20 байт=октет. >Кодовые страницы - не часть аски. И именно поэтому у спец символов есть специально отведенная кодировка (читай, числовое значение) в самой таблице? Пруфани, что в данный момент это не часть таблицы ASCII.
>>1676041 Вот и выросло поколение, не видевшее ничего, кроме юникода. ASCII это 7 бит, в восьмибитных кодировках это нижняя половина таблицы, а верхняя уже зависела от региона, системы и левой пятки программиста. В рашке восьмибитные кодировки были cp866 (dos), windows-1251 и koi8r. При чем кои8 символы располагались не по алфавиту, а так, чтобы при откусывании 8 бита текст становился читаемым транслитом. Сортирвать наверное было в кайф такое
>>1676105 Ну так я и говорю - легаси как было С/С++, так и останется, ты ж читай что я написал. Понятное дело, что 30 млн. строк кода в ядре Линя точно не будут переписывать. Новые проекты пишутся уже на расте, ибо нужно быть полоумным шизиком, чтобы пилить новые проекты на дырявых япах с UB в 2к20.
>>1676114 upd: Мелкософты год назад начали переписывать много софта с С на раст, между прочим. Так что мб к 2030 году будет безопасная винда без возможности совершить эскалацию привилегий или удаленное исполнение кода из-за дыры в ОС (в 99% случаев такие жесткие хаки возможны только из-за проблем с памятью, логические же баги, которые бессмертные, как правило, очень ограничивают простор для хацкеров). Но линь как был дырявым, так и останется, ибо Торвальдс не позволит никому переписывать ядро Линя. Он даже плюсы хейтит, какой там раст...
>>1674690 Хуй знает чем вам современный С++ не угодил. Меня лично все в нем устраивает кроме отсутствия адекватной работы с метаданными. Почему я не могу блять на ЭТАПЕ КОМПИЛЯЦИИ пройтись по всем полям класса, получая их имена? Так же блять нельзя и по всем именам + значениям енумов пройтись. Почему создали стандарта такие пидорасы, что за 20 лет не прикрутили настолько нужные вещи? Интересно как с этим в расте обстоят дела?
Кто-нибудь имел дело с OpenCV? Мне нужно заменить у исходного PNG файла с индексированными цветами один из цветов палитры (их 256) на прозрачный, а после, сохранить в том же формате, не удаляя палитру цветов. Никакой инфы о работе с палитрой найти я не смог. Читал спецификацию к PNG, там сказано, что это возможно, а также потребуется чанк tRNS. Да и в фотошопе у меня получилось сделать задуманное, но как это сделать с помощью OpenCV - хз. На данный момент у меня есть следующий код, который добавляет прозрачность, но он это делает без использования палитры, что увеличивает размер конечного PNG в 3-4 раза, а мне это не нужно.
п.с. В будущем мне эта библиотека понадобится для объединения нескольких изображений в одно, для этого у нее весьма удобный интерфейс, поэтому и выбрал. Но если не получится сделать задуманное, буду пробовать с libpng. Хотя, OpenCV ИСПОЛЬЗУЕТ модуль libpng для работы своих процедур. Странно, что завезли кучу конвертаций цветов изображения, несколько видов компрессии, а банальную работу с палитрой нет. Или просто я не вижу...
>>1675115 >требует своих, наркоманских инструментов, где джава выстрелила пздц как
Ну справедливости ради скажу, что экосистема джавы, а именно инструменты для отладки, системы сборки, профилировщики, менеджеры пакетов - все куда лучше, чем в С++ на данный момент. И пользоваться этими инструментами куда приятнее.
Аналогично могу сказать про язык, джава - довольно простой язык, с понятным синтаксисом. Здесь библиотечные функции названы понятными именами, а не каким-нибудь нечитаемым говном в духе си и posix. Модель памяти в джаве описана куда более понятным языком, чем в плюсах.
Не вижу ничего плохого в том, чтобы использовать джаву.
>>1675064 >С одной стороны буквально полмира держится на С++ Браузеры, графика, какой-нибудь околосистемный софт, высоконагруженные сервера гугла и яндекса - написаны на плюсах. >Ебать ты динозавр, никогда не встречал С++ погромистов, сейчас же все жаве пишут лолбля Потому что все вышеперечисленное пишется сейчас в довольно малых объемах, как правило за рубежом, и очень небольшими командами разработчиков. Действительно, жс и джавы в современном мире нужно куда больше.
>>1676187 Если верить википедии, opencv решает не только задачи компьютерного зрения: >OpenCV — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения
Алсо, я уже решил проблему байтоебством, а хотел без него..
>>1676388 >Ну справедливости ради скажу, что экосистема джавы, а именно инструменты для отладки, системы сборки, профилировщики, менеджеры пакетов - все куда лучше, чем в С++ на данный момент. Какая-то энтерпрайз поебота с XML и гигабайтами оперативки требований >Здесь библиотечные функции названы понятными именами, а не каким-нибудь нечитаемым говном в духе си и posix Нечитаемое говно отлично и быстро читается, если ты не ньюфаг. А вот джава многословность вредна всем, и ньюфагам, и олдфагам
>>1676393 Твоя задача ни к чему из этого не относится. OpenCV это такая замена матлабу неплохая - матрицы там, фурье-хурье, картинку нормализовать и т. п., но не байтоебство.
>>1674983 Тут как бы много всего перечислено, но все это пишется в очень маленьких масштабах. В РФ и СНГ наверное это менее 10% всего рынка разработки будет. И попасть ну очень сложно в такие места, в которых пишутся вот эти браузеры и высоконагруженные сервисы. Наверное потому что такая компания одна на все полушарие. А вторая находится на другом полушарии.
>>1676395 >Какая-то энтерпрайз поебота с XML и гигабайтами оперативки требований Но несмотря на минусы, работать удобнее именно с этой энтерпрайз поеботой. Кстати добавлю, что хоть IDEA и CLion по сути написаны на одном движке, если можно так выразиться, то количество разных фишек у идеи куда больше, чем в плюсах. Но связано это также и с тем, что идея постарше будет, но все же.
>Нечитаемое говно отлично и быстро читается, если ты не ньюфаг Ну если со стандартной библиотекой проблем действительно нет, то вот со сторонними уже проблемы. Начиная от каких-то магических макросов и заканчивая очень непонятными именами функций. Помню, как пришлось впервые использовать в джаве библиотеку для парсинга хтмл, так я охуел от того, насколько же могут быть нормальными именами у функций, которые сразу дают тебе некоторое представление о том, что именно будет происходить. А еще поддержка javadoc в ide, где ты можешь сразу посмотреть документацию. В плюсах такого к сожалению практически нет.
Аноны, я тут подумал, что в 21 веке название языка давно следовало бы объюникодить. Как думаете, какой вариант имеет больше шансов быть протолкнутым в RFC? C☦☦ C†† C✝✝ C࿕࿕ C࿖࿖
>>1676492 Можно просто паникануть с кастомным текстом. Можно пробросить с преобразованием let hui = a.get("hui")?; - для случая, когда есть трейт From для проеобразования типов ошибок Можно преобразовать на месте, если нет let hui = a.get("hui").map_err(|e| F::new(e.to_string())); А можно вообще все возможные ошибки в енум завернуть и пробрасывать наверх без преобразования
Убогие, как же вам тяжко. У нас-то в расте просто ебошишь mod { pub(crate) fn sum(a: i32, b: i32)->i32 {a+b} } прямо в майне своём. А потом по хинту в иде уносишь в отдельный файл. Инклюды эти, блять. Подключить внешнюю либу? Сударь, извольте поебаться от души.
двач выручай есть мышь с доп кнопками, как за отследить нажатие этих кнопок ? стандартный софт дико накаляет, хочу альтернативу для него. нагуглить что-либо вменяемое не получилось
>>1676696 Ну выглядит тем что надо, даже понял про боеров муров которых я не хотел сначала гуглить. Правда проверить пока не получается т.к. я сейчас на windows, а тут на mingw 7.3 и msvc 2017 такие новшества видимо ещё не поддерживаются.
Ананасычи, насколько зашкварно рьяно мешать чистый С код с плюсовым? У меня пет-проект, который требует много системного программирования с дрочением системного API, которое все написано на Сишечке. Но хочется подрубить плюсы из-за STL и классов. Зашквар или это приемлимо?
>>1676748 Это не зашквар - а жизненная необходимость. Мы всё используемое винапи обернули в нормальные крестофункции, и с этим работать в разы удобнее.
>>1676752 >>1676754 Да хз, просто спросил. Яхз что там в плане конвенций, вот и спросил. План был написать самый лоу-лвл системный код на Си, инкапсулировать это в классы и дергать через публичные методы что надо в мейне уже.
>>1676484 >Зачем коды ошибок >Зачем дискрминант для эльфийских енумов >>1676949 Математики тебе всё это придумали, даун, ты просто себе подобному ответил.
>>1676980 Тогда нужно создать на pastebin док и пилить потихоньку шапку. Ну, наверное немного актуальной инфы добавить и сделать шапку как у тех же питонистов или жс. Вынести книги в нее, чтобы меньше в треде спрашивали про что читать первым. Вынести про то, как постить код и так, по мелочи, типа того же буста о том как его учить (напримере того, что тут пчел задавал вопрос о том, как учить буст, но не дал конкретики какой именно).
Аноны, хочу стать прогером-универсалом. Тобишь работать и с лоулевелом и на уровне программ мутить мутки. Вкатывать в С++ норм тема? Нужно ли перед этим хотя бы ознакомиться с С? Какие подводные? Сколько времени у меня займёт достижения уровня скиллового прогера. До этого 2 года писал на питоне. Сейчас времени валом, денег тоже, в сутки могу по 10-14 часов спокойно уделять (вряд ли ибо чувствую мозг закипит).
Ты будешь копаться в легасиговне, 80% времени тратя на еблю с языком и его инфраструктурой если эту смердящую кучу говна размером с Эверест можно назвать инфраструктурой До серьезных/интересных вещей о которых ты мечтаешь тебя не допустят.
Ты не будешь делать какие-нибудь охуенные проекты. Потому что кто делает какие-нибудь охуенные проекты заинтересован в них. И он их просто берет и делает. А ты будешь вечным посетителем "посоны, что бы написать"-тредов.
>>1677584 Анон, не стОит. С++ - мертвый язык для нормисов. Он не мертвый в целом, но на нем пишется в основном слишком крутой софт (известные браузеры, ААА игры, например), к которому допускаются инженеры высшей категории с десятилетиями опыта работы (или гении). Тебе нужно серьезно ебануться головушкой и помешаться на крестах + потратить на это +- 10 лет, чтобы ты на уровне продакшена писал годноту. Во всех остальных 99.9% случаев, если повезет, будешь мейнтенить бесполезное говно мамонта, написанное на крестах стандарта 98 года. Подумай трижды прежде, чем врываться. В 99% случаев оно того не стоит, особенно если ты не гик-шизик как я Удачи и береги себя, бро.
>>1677610 Хорошо, тогда какую альтернативу выбрать? Чтобы можно было на языке реализовать вообще всё. Ну за исключением фронтенда и ещё пары возможностей мб.
>>1677616 Это неправильный критерий выбора. Теоретически, ты можешь на нулях и единицах реализовать все, что угодно. Но стоит ли оно того? У каждого языка программирования есть какая-то своя цель. В индустрии С++ не юзают для хай-лвл программирования, на этом языке пишут сложную кор-логику. Вместе с тем, есть языки, которые вне веба практически не используются - пыха, руби, js. И таких примеров куча. Если у тебя нет четкой цели или нет понятия какой технологический стэк ты хочешь изучать, то советую сначала разобраться в этом. Потом ты сможешь выбрать для себя подходящие языки программирования.
>>1677616 > Чтобы можно было на языке реализовать вообще всё.
Вот он, максимализм. Тебе для ЧЕГО? Следует разделить два вида деятельности: зарабатывание денег и хобби. Для зарабатывания денег на плюсах тебе уже сказали. А какой-нибудь сайд-проект пилить ты можешь на чем угодно, хоть на плюсах, хоть на расте, хоть на го, хоть на хаскелле -- для этого необязательно десятки лет задрачивания стандарта плюсов.
>>1677638 все равно, выбирать плюсы для чего-либо, связанного с вебом, это маразм. Край - бэкэнд, и то если ты прогаешь сервак, который должен выдерживать траффик где-то на уровне фейсбука. Во всех других случаях это лишний оверкилл и кровавый анальный ангст.
>>1677632 Критерий - умение создавать сложные лоу левел структуры с нуля+писать под всё это и не только под это дело софт. >>1677638 А на лоулевеле что делать? >>1677641 Не вижу ничего плохого. Цель выше.
>>1677642 >Край - бэкэнд, и то если ты прогаешь сервак, который должен выдерживать траффик где-то на уровне фейсбука. На правах кулстори - пишу на крестах больше пяти лет, надо было ВЕБ БЭКЕНД небольшой написать. Так вот - нашлепать на АспнетКоре было проще (с нуля, я чуть чуть шарп знаю, Асп вообще никак), чем написать это на крестах.
>>1677659 Ну, логично. С++ бы создан для байтоебства, равно как и С (не говорю, что это плохо, я сам тащемта байтоеб), на этих языках не зашквар только лоу-лвл софт разрабатывать, все что выше уровня сугубо системного программирования - в 98% случаев маразм и лучше выбрать другой язык.
На вход приезжает некоторый generic-объект, перекладывается в unique_ptr<GenericObject> и уезжает в очередь, дальше я его жизнь не контролирую Соответственно, где-то там дальше его из очереди вынут и скастуют в нужный дочерний тип.
Проблема: начал использовать unique_ptr с custom deleter и пулом объектов, теперь, разобрав тело объекта, я не могу привести его к unique_ptr<GenericObject, Deleter<GenericObject>>, потому что у него другой, свой deleter - unique_ptr<ChildObject, Deleter<ChildObject>>
Хочу написать программу, которая будет визуализировать столкновение одного объекта с другим. Сколько по времени это может занять, если раньше подобным не занимался? Планирую использовать openglдля отображения. Остальное писать.
>>1671738 >You get the message because painting to the widget's paint device is only allowed inside the paint event. If you use it outside the paint event, there's no guarantee it will work.
>>1678857 Объект уедет в другое место за время выполнения своего метода. Насколько это легально? А если в пуле вызовется деструктор объекта, а я всё ещё в его методе (а именно так и получится)?
>>1678859 Куда уедет? А с деструктором да, нужно осторожно. После вызова метода пула нельзя обращаться к членам объекта. Следить за автоматическими переменными.
>>1678749 А как он узнает, метод какого объекта вызывать, если deleter будет универсальным? Во что кастовать? А если deleter тимплейтный, то узнает, но будет та же проблема, что и сейчас -- несовместимые указатели
Ребят, тыкните меня носом в документацию libevent где речь иде о куках ихо созданиии времени жизни, потомучто я в браузере вижу что они создаются и обратно их через header могуполучить. Убей не могу найти вдокеничего об этом. Спасибо.
>>1679151 Да по первой ссылке этот интервал только как пара чисел используется без логики. Сделай сам. В принципе, если самому сделать бинарное дерево свободных индексов вместо std::set, можно за счёт более тонких оптимизаций также получить выигрыш при удалении и мерже интервалов индексов. Но я сомневаюсь, что у тебя настолько нагруженная система.
>>1678409 А в каких странах есть много чего помимо веба? В РФ и СНГ довольно большой айти рынок, как мне всегда казалось, обусловлено это большим количеством технических вузов, в которых можно бесплатно учиться.
>>1679181 Не нужны тут никакие деревья. Складывай это всё в обычный вектор, плюс рядом храни массив доступных индексов (как стек). Insert = достать из стека индекс, потом по нему сконструировать объект, Remove = вызвать деструктор по индексу, положить индекс в стек. Если захочется итераторы докинуть, где-нибудь надо хранить ещё какое-нибудь битовое поле жив/мёртв. Я сам такое писал, пользуюсь, вещь очень полезная, непонятно, почему не является стандартной структурой данных.
Сап Аноны, программирую на С++ относительно недавно и вот наконец-то дошли руки до многопоточности, уроков и etc. про это всё нашёл достаточно, но меня интересует именно многопоточность в линунксе, а там это всё реализуется насколько я знаю по другому. Посоветуйте молодому и шутливому сайты или что-то такое, где я могу вкурить в мп под линукс. С меня чай.
Анон, debug-билд моей библиотеки очень медленный. Я выкидывал куски, проверял, как работают отдельные детали, и сильное снижение производительности дает проход по std::vector. Гугл подкинул, что в MSVC действительно крайне медленная реализация вектора и лучше брать кастомные решения. Я взял, и ничего не изменилось. Отлаживать библиотеку просто невозможно. Она активно дергается другим приложением, и дебажный билд тормозит это приложение раз в 100. Даже всего лишь один проход. Что делать? Есть ли смысл переписывать вектор в сишный массив? Вектор же вроде итак всего лишь обертка вокруг массива.
аноны, помогите, я нуб. у меня есть ф-ция myFunc1 из класса MyClass1 и ф-ция myFunc из класса MyClass2, как мне передать myFunc1 в функцию myFunc2 в качестве параметра?
Ебать, я тупой походу... Все делаю по гайду https://www.cs.bu.edu/teaching/cpp/writing-makefiles/ Даже дебилограмму нарисовал для себя. При попытке выполнить мейкфайл, начинает срать непонятной хуйней про какое-то множественное определение массива строк MessageException. Я понимаю суть ошибки, но я не понимаю от куда она В МОЕМ КОНТЕКСТЕ приложения. Все наглядно есть в пике.
Кстати, там еще у меня вопрос насчет codes_exception.h Не совсем понятно, нужно ли его в данном случае упоминать вообще в мейкфайле, но подозреваю, что нет, ибо от него ни один .cpp/.c файл не зависит, а значит и не нужно собирать еще один .o файл.
>>1679684 Ты объявил глобальную переменную (MessageException) в заголовке. Её надо перенести в cpp, а в заголовке оставить только extern-ссылку на неё (если нужно).
>>1679737 Почему тогда на enum не жалуется? И как вообще правильней будет поступать в таком случае? Как ты сказал? Или есть вариант лучше?
Пока писал, решил на обум добавить const перед string и ошибка пропала. Т.е. константы define и const <type> можно без externов и выноса в src файлы использовать? И, видимо, enum тоже является "константой" в этом смысле. Или я не правильно все предположил?
На enum не жалуется, потому что это объявление типа -- оно никак не "вытекает" из cpp-файла. Для языка нормально, что одни и те же объявления типов копипастятся в каждый cpp. Макросы define тоже действуют только на тот модуль, где они объявлены. А вот глобальные переменные и функции экспортятся из cpp, поэтому на них линкер ругается, если находит дубликаты.
Алсо, знаком с ООП в разных языках и в плюсах в принципе писал что то на классах без наследования но вот здесь уже ебала какая то, и на плюсы это даже не похоже, чисто сишная запутаная поебень.
>>1679490 оно тебя сожрёт нахуй Анон, если хочешь так сделать, придется все библиотеки в проекте пересобирать с этим флагом. И всем пользователям твоей библиотеки тоже.
Прорамач, объясни дураку пожалуйста как создавать qm файлы и как их подрубать к проекту. Прочитал в справочники Qt о QTranslator и ничего не понял. Вопрос именно с созданием qm файлов. Спасибо.