>>1576822 Входные данные Из этих строк нужно найти самую большую длину Почему при сравнении -2147483647< a1.length() (4 на первой итерации) результат false, если -2147483647 < 4?
>>1576820 Есть пара знакомых оттуда, говорят что вполне неплохо. Я бы сам даже на митапчик сьездил на офис посмотреть, только дико лень пердолить в эти чертановские перди.
Сап, программач, студент 3 курса, нормально понимаю учебную программу, хотелось бы порешать какие-нибудь задачи и получить новые знания в принципе? Что посоветуете? Искал книги, большинство - дроч алгоритмов или основы
>>1576854 Сделай простую игру, платформер или лабиринт. Потрогаешь сразу много областей, что-то про ui и графику, что-то про многопоточность, про общую архитектуру более-менее громоздкой программы. Если ещё и сетку прикрутишь с компенсацией пинга и чтобы без десинхронов было - это уже вообще круто. Можно простейший интеллект для мобов или компьютерных противников поделать, там все эти алгоритмы на графах на деле могут пригодиться.
>>1576861 Хорошо, а как начать? Может, есть какой-нибудь материал, который расскажет, в какой последовательности все делать и хотя бы примерная реализация?
>>1576866 Платформер или лабиринт в окно кстати - плохие жанры. Лучше top-down шутер, наверное.
Ну, смотря что тебе интереснее. Можно вывести квадрат через opengl и прикрутить чтобы по нажатию клавиш он двигался - тут просто рандомный hello world для opengl нужно загуглить, прикрутить туда таймер отсчитывающий время и на него завязать игровую логику, добавить квадрат который будет двигаться вокруг тебя, потом добавить чтобы по нажатию клавиши ты стрелял, и при попадании снаряда по вражескому квадрату у него уменьшалось хп. По крайне мере я так делал и более чем доволен. При этом каким образом ты организуешь все игровые объекты и игровую логику только от тебя зависит - можно прибить гвоздями кучу костылей, можно сделать громадную полиморфную ооп мусорку где все объекты наследуются друг от друга. А если подразумеваются разные уровни и карты, где можно из одного состояние в другое перескакивать то тут ещё больше вариантов как это переключается, пространство для творчества безграничное.
>>1576903 Сам посмотри только, может быть совет говно полное и тебе не зайдёт, и вообще тебя другие области интересуют, какая-нибудь обработка и анализ тестовой и другой информации.
>>1576918 Уныло, нет никакой сложной иерархии объектов и упирается просто в проверку пересечения линий. Лабиринт это вовсе лишь форма уровня. В top-down шутере можно сделать отряды мобов, состоящие из отдельных юнитов, которые пытаются тебя окружить что уже в бесконечность раз интереснее любого платформера. И top-down шутер можно переделать в стратегию со строительством и сложными иерархиями объектов или в гонки с видом сверху не сильно модифицируя логику пространства. А из платформера ничего особо большего чем платформер не сделаешь.
>>1576945 >А из платформера ничего особо большего чем платформер не сделаешь. Нелинейный платформер с процедурной генерацией уровней и динамической сложностью врагов, например, мне кажется очень хорошим вариантом, особенно для начала.
>>1576947 Ему не нужны паттерны. И паттерны не требуют отдельного изучения - часть из них интуитивно очевидная и он напишет их сам собой, другая часть - костыли, которые нужно чтобы притянуть ооп или ещё что-то туда, где оно не нужно и лишь усложняет код. Вдвойне бесполезная штука, если он пишет код один, а не с кем-то, где нужно понимать друг-друга и говорить на общем языке. Прочитать книжку про паттерны и взять-опробовать нужные можно за несколько часов. Ему и не нужно написать игру - ему нужно её пописать, чтобы попробовать что-то новое и научиться чему-то.
вопрос чиста теоретический. если я в крестах выделяю память под какой нибудь массив примитивного типа через new[], могу ли я, передав указатель и размер массива в шарп например крестовая функция в .dll через pinvoke возвращает структуру с этими данными, в шарпе вызвать через pinvoke VirtualFree на полученный указатель? Или что нибудь наебнется и распидорасится?
>>1577143 Оператор new не обязан на каждый твой чих вызывать VirtualAlloc. Он может делать вообще все, что считает нужным, пока это конфермит стандарту. Соответственно - UB
>>1577132 Удваиваю насчет паттернов. Написать какую-нибудь фабрику можно и без знания, что такое фабрика. Ты её в любом случае напишешь, когда тебе надо будет создавать нужный тип монстра в зависимости от того, какая строка написана в конфиге уровня. Ты просто не будешь знать, что она так называется.
Сап, кто может пояснить почему эта хуйня отказывается компилится? Я понимаю, что нельзя underlying_type использовать не на енумы, но там же блять стоит if constexpr, т.е. не емуны туда вообще не могут попасть и компилятор тупо должен пропустить этот кусок кода. Мне эта хуйня нужна для генерации метаданных, все это будет завернуто в макрос
>>1577819 >Сап, кто может пояснить почему эта хуйня отказывается компилится? [temp.res]/8, 100 раз обсасывали на SO
The program is ill-formed, no diagnostic required, if: no valid specialization can be generated for a template or a substatement of a constexpr if statement within a template and the template is not instantiated
Как сделать так чтобы в переменную char *str ввести несколько слов(последовательность символов вместе с пробелами)? Обычный cin >> считывает только одно слово.
>>1554724 Упоминание эффекта Даннинга-Крюгера выявляет находящихся под ним ещё надёжнее. А всё потому, что впоследствии оказалось, что сами учёные подошли к исследованиям спустя рукава и впоследствии их исследование было пересмотрено и подвергнуто критике. https://scholarcommons.usf.edu/numeracy/vol9/iss1/art4/ И это я пихаю каждому, кто в окружающих видит тупых дилетантов, но сам-то, конечно, никакой не тупой и не дилетант. Настолько не тупой, что даже не удосуживается почитать про баззворд, который использует.
В классе есть protected поле std::vector<double> > content; и перегрузка оператора [] std::vector<double> & operator (const unsigned long &i) const { return &(content); }
В чём ошибка?
Такое мне пишет IDE, но я её непонел Non-const lvalue reference to type 'std::vector<double>' cannot bind to a temporary of type 'const __gnu_cxx::__alloc_traits<std::allocator<std::vector<double, std::allocator<double> > >, std::vector<double, std::allocator<double> > >::value_type ' (aka 'const std::vector<double, std::allocator<double> > ')
>>1578974 Насколько я понял ему нужен второй аргумент - кол-во вводимых символов. Но что если я хочу большой текст вставить? Типа 5000 символов. Много ли памяти это будет занимать?
>>1578954 Не очень. Фактически, с помощью visitor'а ты расширяешь функциональность уже существующей иерархии классов, у которой один из методов принимает аргумент типа visitor. Эта иерархия может быть в какой-нибудь библиотеке, которую ты не можешь изменять, постоянно создавая новые visitor'ы и делая их там френдами
Аноны, хелп. Разбираю игрушку на unity dnSpay-ем. Как профиксить данную ошибку (пик1)? Пик 2 соответственно тоже такая же ошибка. Этот прокрутка по чату на последнее сообщение.
В c++ нельзя использовать объект класса с недефолтным конструктором в качестве глобальной переменной другого класса? Как бы я не пытался ее инициализировать, ничего не выходит.
>>1579699 блядь, не то спастил, но суть та же помогите, пожалуйста, с задачкой по плюсам. буду очень благодарен. Завтра сдавать надо, не понимаю как сделать + не успеваю Задан массив структур «Покупатель» (фамилия покупателя; имя; номер карты; наименование товара; стоимость покупки). Вывести на экран сведения о покупателях и суммарной стоимости покупок в порядке возрастания суммы. буду очень признателен, аноны
Короче, платина. Насколько сильно нужно углубляться в кресты, чтобы смочь в UE4? с детства мечтал делать игори, но сделал только танчики на pygame :( Я не полный нюфаг, сейчас работают бэкэнд макакой на пистоне. В вебе чувствую себя комфортно, но дико боюсь крестов, потому что есть явные пробелы в CS. Нужны ли какие входные данные, или тупым не дано? Может SICP какой прочитать еще раз попробовать? Или уже неактуально? Может какие то конкретные области математики подтянуть? Есть тут увлекающиеся этим дерьмом?
>>1580165 Открою тебе тайну - тебе С++ нахуй не нужен. Почти все можно нашлепать на блюпринтах. Современные игры как бы вообще к программированию мало отношения имеют, если делать на готовом движке.
Сам пилил по работе небольшую демку на UE4, обошелся только блюпринтами, все мои сениорские крестоскиллы не пригодились вообще.
>>1579986 Угу, спрашивай сколько угодно такие вопросы, тред же именно для них и предназначен. Удачи тебе разобраться в этом :3 https://ideone.com/g2t3Nd >Вывести на экран сведения о покупателях и суммарной стоимости покупок в порядке возрастания суммы. Может быть в порядке возрастания стоимостей покупки? Не очень понятное условие. Ну, там два варианта, надеюсь тебе нужен второй.
Анон, хочу в качестве параметра шаблона передать enum. В зависимости от этого enum будут определены разные типы внутри класса, типа
enum class Type {type1, type2}; template<Type TP> struct Foo{ using A = TP == type1 ? int : double; using B = TP == type1 ? Some1 : Some2; }
Мне кажется, что задачка типовая, но мое решение какое-то сложное и не красивое, предполагает (я еще не сделал) std::conditional. Как сделать правильно и красиво?
>>1580442 Записываю в bb соответствие имени-карточки и стоимости покупок - добавляю новое имя или (если такое имя-карточка уже есть) то добавляю к суммарной стоимости покупок стоимость этой.
Сап, программисты. Поясните за физическое представление файла. Если все файлы это последовательность 0 и 1, то я могу создать программу, которая выдает все возможные последовательности, состоящие из 0 и 1 (да, я знаю, что это как с числами Фиббоначи, даже все последовательности из 64 битов будут генерироваться очень долго, но мы идеализируем), то будут ли среди этих файлов существующие? Т.е можно ли перебором сгенерировать песню Фейса, или картину звездная ночь, к примеру?
>>1580948 >>1580950 >>1580951 >>1580953 Спасибо за ответы, не давало покоя эта мысль Наверное, в результате таких генерации немало криповых файлов может быть создано
>>1581063 Почему именно size_t и почему именно по значению? Ссылку я использую, чтобы не выделять память под unsigned long при вызове функции, unsigned long чтобы наверняка не выйти за пределы инта, не вижу проблем в этих решениях.
>>1581135 Ты дурак, только честно? 1 курс прогуливал? Ссылка бесплатная у тебя? Она тоже память кушает, если что. Зато строку по значению передал, молодец. Садись, два.
>>1581135 >чтобы не выделять память под unsigned long при вызове функции А какой размер у указателя, которым будет представляться ссылка? Какова потеря скорости из-за обращения к памяти (пусть даже к L1) вместо регистра? Ты смотрел как микроопы на порты скедьюлятся?
Или вы не про js? В любом случае, мне сложно припомнить оправданное использование const где бы то ни было. Это слово больше сигнал для разраба, мол, тут у нас хранится какое-то значение, неизменное и пользуемое акросс всего приложения.
Matrix sample1 (3, 3); //... std::cout << sample1; Работает, а std::cout << sample1.transpose(); выдаёт ошибку error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘Matrix’)
Если сделать так Matrix transposed = sample1.transpose(); std::cout << transposed; то всё ок
>>1581531 Могу быть не прав год не кодил на плюсах, но у тебя оператор ссылку на матрицу принимает, а ты пытаешься ему саму матрицу скормить, может по этому ругается.
>>1581536 У меня появилось предположение, что это потому что объект, возвразённый transpose(), не пожет быть преобразован в ссылку, потому что никуда не сохранён или что-то типа того. Походу, придётся реал сделать второй аргумент без ссылки
Просто transpose() возвращает по значению, а не по ссылке. Можешь свою функцию/метрд замутить, которая будет принимать матрицу и возвращать ссылку на результат уже с transpose() если не хочешь захламлять кол объявлениями переменных.
Анон, очень важный вопрос. Хочу в программу добавить векторизируемые участки, и два пути: 1. Использовать openmp, но он не из стандарта нихуя 2. Использовать c++17, но это будет единственная фича 17, сейчас все на 11 и потенциальна миграция библиотеки на хуевый компилятор на Эльбрус. Как быть, анон? Совершенно не хочется городить чехарду из #ifndef и условной компиляцией
Не понимаю такой момент. Мне приходится часто делать парсинг байт ориентированных массивов. Самый топовый способ на си - описать структурку и прикастовать через void*. Прекрасно и быстро, все довольны. А в реалиях крестов начинается параша - структуры приходится выравнивать через #pragma pack(push, 1), чтобы в памяти были выровнены по байту, причем что-то стандартное типа alignas(1) работать не будет, так как он только на повышение порядка. Почему так нахуй? Как удобно парсить сериализованное говно? Переписывать оператор << заебисто просто пиздец
void main(){ sizeof(A); //8 бай sizeof(PA); // 5 байт
// Всё ради протокола, первый байт имеет значение 3, второй инт - 5 // блин ендиан, забьем на Литл char buf[5] = {3, 0, 0, 0, 5}; A a = reinterpret_cast<A>(buf); // хуй PA pa = reinterpret_cast<PA>(buf); // нормас }
>>1582023>>1581945 >Прекрасно и быстро, все довольны. Не понял, первая структура в си вроде бы тоже имеет размер в 8 байт. Расскажи поподробнее, как это выглядит в си? Я попробовал различным образом "прикастовать через void*", но не нашёл никакого способа, которым си может прикастовать 5 байт структуре размером в 8 байт.
>>1581945 Зачем ты на крестах пытаешься повторить си? Очередной борец с ООП? Мы в таких случаях делаем стандартные структуры (не struct, а в плане организации данных) объектов-значений, которые сами рассчитывают свое положение в массиве, знают кто они, флоат там или битовое поле, пишут/возвращают значения. Их можно создавать динамически, грузить из конфигурационных файлов, автоматом делать из них модели и интерфейсы. А твои структуры - не пришей к пизде рукав, автоматизировать работу с ними можно только внешними парсерами, я такое делаю только если надо с сишечкой контактировать.
>>1582032 Честно говоря, я не помню, нужно ли писать директиву #pragma pack в Си. В си есть плюс каста только в том, что не нужно писать приведение типов типа reinterp_cast или static_cast<void> https://ideone.com/o7prBL сишный пример И вообще, https://habr.com/ru/post/142662/
>>1581945 >Как удобно парсить сериализованное говно? Вылокой и каждый байт чисти чисти чисти вот так, если не хочешь внезапно соснуть эндиану когда привезут сервачок от IBM.
>>1581945 А, я еще видел код наших железячников-сишников, они тоже распаковывают входные массивы данных тоже каким то подобием объектов из смеси struct ов и указателей, которые создают в динамике. >>1582043 й
>>1582044 >нужно ли писать директиву #pragma pack в Си Ну, она работает - с ней размер 5 байт, без неё размер 8 байт. Никаким других очевидных способов без директив сделать структуру на 5 байт с переменной с 4-байтовым выравниванием я не нашёл. >reinterp_cast Можно и в с++ же не писать оставив сишное преобразование.
Нетривиальный вопрос. Начал писать обертки для managed языков над нативными либами. И столкнулся с одной проблемой. Если в винде все с зависимостями решаются установкой необходимой версии Visual C++. То под линухом идет зависимость от libstdc++ и libcxxabi и libc, версий которых сотни. При этом версии совместимости ABI переваливает за два десятка. Хотелось бы решение без sudo apt get install для разработчиков, которые юзают конечную библиотеку. Есть ли вариант хранить все зависисимости в одной директории и грузить их вручную dlopen с относительным путем и флагом RTLD_GLOBAL? Не рушиться ли в этом случае совместимость этих библиотек с версией ядра Linux?
Присутствует ли каким-то образом в крестах realloc, или он просто не нужен? Все же, mremap быстрее, чем копирование пары гигов руками? Потом, при копировании руками на некоторое время будет занято целых четыре гига. Или это лучше спросить в ньюфаг-треде?
>>1583074 У меня получилось что realloc в искусственных тестах равен или быстрее копирования через стандартные new-delete, но ничего лучше, чем вручную использовать realloc и вручную вызывать placement new и подходящие операторы для перемещения я не придумал. >или он просто не нужен? С другой стороны программы, где производительность слишком сильно упиралось в копирование через new-delete я пока тоже не встречал.
>>1583088 Вопрос, собственно, откуда взялся. Я затестил realloc из glibc против mremap в хаотическом перерезервировании 10000 указателей на 4 процессах и размерах данных от 4K до 64K, то есть такие размеры, когда realloc не пользуется пулами или самим mmap. Почему-то mmap оказался в 10 раз быстрее.
>>1583088 >>1583093 То есть, понятно, что копи-он-райт и все такое, все ссылается на одну единственную страницу, но mremap просто перестраивает таблицы страниц силами ядра без копирования всех данных руками. Надо будет тест с реально выделенной памятью сделать.
>Почему просто в таком случае не использовать std::vector? Вроде, std::vector не использует realloc в каком-либо виде. Если использует, то да, это все решает.
>>1583097 >glibc Не знаю таких подробностей внутреннего устройства realloc и всяких страниц памяти - я просто тесты со своей стороны стены проводил для дефолтных mingw-шных реаллоков, ничего не могу посоветовать.
>Если использует Не использует совершенно точно. Когда ты его вызываешь очередной push_back - он перевыделяет память не для n+1 элемента, а для 1.6n (число 1.6 настраивается, если необходимо), старые n удаляет. Ты это и так понимаешь скорее всего лучше моего, но это считай ещё один дополнительный уровень менеджера памяти, чтобы лишний раз память не теребить; realloc всё ещё лучше, потому что он в отличие от вектора может знать что можно без временного буфера и перемещений расширить 1.6n до 10*n просто поставив метку в менеджере памяти - если менеджер позволяет изменять размеры уже выделенных кусков и за куском есть свободное место.
>>1583101 Как это мать его возможно. Спойлер должен был быть до конца сообщения. А вместо звёздочек я поставил <i>*</i>, то есть по идее звёздочки должны быть курсивом, а остальной текст нормальным, если тег <i> экранирует звёздочку.
>>1583327 Такая большая разница из-за short string optimization. Если ты посмотришь на ассемблер то с короткой строкой в первом варианте нет вызовов new (тогда как во втором есть). Если использовать более длинную строку то new появляется и в первом вариате. Правда он все равно остается более быстрым (хоть и не настолько). Скорее всего там еще есть какие-то оптимизации связаные с тем что const char* читается со статической памяти а string& с динамической.
Что по стажировками для студентов на лето в Москве? На хх только яндекс и хуавей отсвечиваются, но там заранее все забито задротами из вшэ и мфти. Есть какие-нибудь варианты менее известных контор, в которых можно постажироваться?
Поясните, есть структура struct test { int a, b, c, d, e; } есть массив этих структур. Нужно получить допустим, суммы всех a, сумму всех b, сумму всех c. Как не пилить велосипеды для каждой из таких значений, а написать одну функцию для всего (при этом не меняя структуры и ее полей, желательно, на деле она другая).
>>1584280 Тебе нужно считать суммы всех b не считая суммы других a/c, или тебе нужно считать суммы для всего?
Если считать нужно часто - возможно есть смысл сделать внешний счётчик вокруг массива (или внутри синглтона), который будет содержать суммы, а при добавлении/удалении структур изменять суммы?
Анончики, помогите с математикой плиз, уже два часа бьюсь над задачей, не могу решить. В общем есть функция простого градиента, рисующая градиент в круге радиусом R. Цвет N присваивается точке в зависимости от удаленности от центра. Соответственно получается такая формула: N = C - C x d/R, где С - цвет центра, d - расстояние точки до центра. Теперь я хочу ввести в расчет градиента еще одну переменную, назовем ее интенсивностью цвета I, например. Должно быть как: при I = 1 весь круг должен закрашиваться равномерно, без градиента, то есть коэффициент d/R = 0 при I = 1. А при I = 0 круг вообще не должен краситься. И вот здесь я встрял. Не могу никак модифицировать первоначальную формулу, чтобы условия интенсивности выполнялись. Вроде бы просто, а никак додуматься не могу. По идее d/R должно умножаться на (1 - I), тогда при I = 1 d/R будет равно 0. Но при I = 0 круг все равно будет краситься. Как правильно?
>>1584382 Причем если юзать только интенсивность I или только d/R по отдельности, то все работает супер четко. То есть N = C x I будет красить полностью при I = 1, и не будет красить при I = 0. А N = C - C x d/R красит в градиент. А вот как вместе это соединить, я хз.
>>1584280 Внутри только простые одинаковые типы? Если да - то передавай в функцию "индекс аргумента", смещай указатель на структуру и доставай оттуда нужное поле.
То есть для struct test { int x; int y; };
test t; (int)(&t); // поле x (int)(&t + sizeof(int); // поле y
Мог чутка напутать, но смысл таков.
Если поля разных типов, то придется немного ифов нагородить, но смысл будет тот же. Надо сейчас попробовать со сложными типами вроде string.
>>1584477 есть возможность встроить v8 но это будет то еще развлечение, скорей всего тот же луа или питон легче встроить не говоря уж о забытых технологиях наших более продвинутых предков из майкрософт, а именно active scripting на com
>>1584280 std::accumulate с лямбдой суммирующей значения полей, за тебя все давно навелосипедили >>1584354 Там вроде это как-то прозрачно делалось сигналами без сериализаций
>>1584280 Я имел в виду что то типа function<int(s)> getter[] = { [](s str){ return str.a; }, [](s str){ return str.b; }, [](s str){ return str.c; }, [](s str){ return str.d; }, [](s str){ return str.e; } }; auto sum = [&getter](gsl::span<s> sss, int index){ return accumulate( begin(sss), end(sss), 0, [&getter, index](int sum , s str){ return sum + getter[index](str); }); };
>>1576737 (OP) >C++20.png Лол. Чего они добиваются, чтоб в C++ было вообще ВСЁ, что есть в других языках и даже больше? Нахуй это нужно? Может кто-то знает?
Пытаюсь сделать что-то вроде небольшой игры, застрял на месте с передвижением в воздухе(когда прыгаешь, чтобы можно было в лево\право двигаться),перемещаться сейчас можно только если быстро нажимать на кнопку, но мне нужно чтобы работало при зажатии. Не в воздухе такой проблемы не было. Игра 2д на direct2d, перемещение на winapi, реализация на пикче.
>>1585204 >перемещаться сейчас можно только если быстро нажимать на кнопку По WM_KEYDOWN ставишь speed+=5, по WM_KEYUP ставишь speed-=5, при этом каждый кадр у тебя x+=speed*dt? Можешь скидывать, я могу попробовать помочь чем смогу.
>>1585295 >По WM_KEYDOWN ставишь speed+=5, по WM_KEYUP ставишь speed-=5, при этом каждый кадр у тебя x+=speed*dt? У прыжка подобная механика, у перемещения просто + константа. Решил проблему вот таким способом, до этого эти нажатия обрабатывались в WndProc. Почему-то из-за этого и анимации передвижения стали плавнее, я думал WndProc вызывается каждую итерацию.
>>1585297 Я не шибко разбираюсь, но думаю, что все из-за того, что влево-вправо ты ходишь на константу. Если сделаешь вектор ускорения, а при нажатии на клавишу движения изменять его координаты, то тогда в прыжке сможешь двигаться. Только пока не представляю, как закодить. Пока нажата клавиша движения - направляем вектор в эту сторону постепенно, чтобы движение было с ускорением(вспомни, например, того же Соника), как-то так, наверное.
>>1585306 Не надо, пожалуйста, учи сразу английский и учись писать вывод и имена переменных/функций на нем же. бтв проблема не только в проге, а ещё и в кодировке консоли. Попробуй system("chcp 1251"). Или system("chcp 65001"), если все же не прокатит.
Ананасы, вопрос не совсем по языку. Вот допустим нужны программе некие конфиги (не те, которые через argc/argv задаются) которые считываются из файла. Если пользователь программы удалил файл или изменил его (и прочитать файл стало невозможно), то по идее, нужно загрузить дефолтные конфиги. Стоит ли в коде дублировать их или оставить только конфиг файл?
>>1585623 Нахуй пусть идёт такой пользователь, который удаляет или портит конфиг. Ошибку выдавай и закрывай приложение. В шарпах, например, за неправильно написанный app.config тебя либо компилятор пошлёт, либо в рантайме исключение словишь.
>>1585623 Поставляй софт без конфига, сохраняй при изменении. Один хрен у тебя в конструкторе где-то задаются параметры по умолчанию (задаются ведь? или ты любитель уб?)
>>1585703 > Один хрен у тебя в конструкторе где-то задаются параметры по умолчанию (задаются ведь? или ты любитель уб?) Есть параметры которые в конфиге можно опустить и тогда будут подставлены дефолтные значения. Есть параметры без которых конфиг прочитать и распарсить будет невозможно.
> Поставляй софт без конфига, сохраняй при изменении Он нужен только для чтения при старте программы.
Короче, сейчас посмотрел, подумал, что похер. Даже при отсутствии конфига или его порче, всё будет работать. Будут использоваться стандартные зашитые значения (как, например, отсутствие текстур на пикрелейтеде).
Как называется готовый алгоритм для такой проблемы: есть набор стран на карте, в виде разных многоугольников, нужно составить матрицу смежности. В данный момент мой алгоритм тупо перебирает все страны на соседство для каждой страны, трудно придумать что-то неэффективнее.
>>1585829 Я бы попробовал сопоставить к каждрй цифре страну, а потом попарное перебирать соседние вершинв нужной страны и применять and к множествам стран подходящих к этим точкам
>>1585846 Из точек получаешь ребра (ребро - две точки). Если страны соседние - у них есть общее ребро. Создаешь список (массив или лучше словарь) всех ребер (проходишь один раз по всем странам). В списке для каждого ребра помечаешь у какой страны оно нашлось (для каждого ребра будет одно или два значения). Потом еще раз проходишь по всем странам, переберешь ребра и выписываешь номера стран-соседей.
>>1585966 Ага, и K&R тоже протухшее говно, ведь ANSI не нужон, есть C99... Аноний, ты реально шизик, или троллишь? Я хочу сраться только с настоящими шизиками. Книги для вката не должны вдаваться во все актуальные фичи, а должны ускорить дальнейшее освоение обнов в десятки раз. Только такая многоходовОЧКА позволит угнаться за поездом изменчивого мира IT. И книги такого плана в 21-м веке пишут крайне хуево. Это факт. Алсо, годнота по сабжу как правило выходит при жизни и ясном уме создателей, и спустя полвека неизбежно наступает драма поколений, когда ньюфаг никогда не станет рядом с дедами, изучавшими в золотое время. Покормил.
Сап, аноны. Использую Eigen, возник вопрос, есть ли в нем какой-то удобный инструмент типа View, который, по заданному вектору, формирует матрицу? Есть Eigen::Map со всякими Eigen::Stride, но там, как я понял, можно задать фиксированный шаг. Мне нужно, например, из матрицы M{6, 6} получить элементы по индексам, типа M( [0 1 4]; [1 2 3] ). В матлабах и питонах такое есть.
Сап, всем. Есть вопрос про динамическую память и нулевой указатель. Я реализовал стек (тип элементов - char) с помощью дин. мас. , используя ООП. Вопрос - имеет ли смысл в конструкторе/деструкторе писать nullptr при инициализации и удалении массива? Важно ли обнулять указатели.
А также в функции Resize (Она нужна для увеличения размера стека)
Можно ли как-нибудь написать парсер уравнений типа "x1^2 + 3 * x2"? Простой парсер без переменных понимаю как сделать, а с переменными нет И можно ли получить результат в виде функции?
>>1586150 Важно: если у тебя например будет ошибка выделения памяти в конструкторе, то на Пуш программа упадет с сегфолтом, т.к. нет проверки что память выделилась.
>>1586166 Ничего не падает, проверил для 100000 значений. Вызов же: char Array = resize(const char Array, size_t old_size, size_t new_size); То есть в него сразу же записывается новый расширенный массив со всеми старыми значениями. Но тогда не понятно нужно ли в resize обнулять Array.
Насосался хуев короче, создал set "ребро" из двух точек, написав хеш-функцию для точки, пытаюсь insert его в set всех ребер, компилятор выдает всякие простыни, что он не умеет сравнивать такое. Проще уже свой set написать, который не выебывается.
>>1586578 Ващет изменился, хотя кресты однозначно стали одновременно более простыми местами, местами бля пиздец нахуй как это вообще работает. За это мы их и любим=)
Сап, двач, почему этот код, когда я иду по циклу и дохожу x2 до 0, вызывает аварийное завершение? Если я вызываю не в цикле, а просто подставив значение, то все нормально, проблема в этих циклах, но я не понимаю, в чем может быть проблема
>>1586687 >просто подставив значение, то все нормально А то ли значение ты подставляешь? Подставь вот это -2.03e-15 (или что у тебя там получается) и проверь падает ли с ним. Если к -10 прибавлять по 0.2, то ты получаешь не ровно 0 из-за особенностей плавающей запятой. Стандартная же ошибка, у меня даже собаки во дворе про неё знают.
>>1586698 Пофиксить? В этом нет ошибки. 2e-15 - это ноль. Если у тебя такая функция, которая при 0 выдаёт один результат, а при 2e-15 другой, то проблема скорее в функции. Если ты напишешь -10+0.2*i, где i целочисленное, то будет лучше, потому что ты складываешь большое число с большим. Наибольшая ошибка, когда ты складываешь числа разные по порядку, что-то вроде 10000+0.01. Ещё лучше будет, если цикл будет целочисленный (i=-50 .. +50), а x=i/5.0 на каждой итерации, тогда вообще не будет проблем от сложения плавающих запятых.
>>1586708 У меня в функции что-то типо парсера, я не учел, что может число может быть передано в таком виде Может, можно как-нибудь избежать передачу числа с мантиссотой? Переделывать парсер желания нет
>>1586907 >Ничего, что элементы считаются от нуля и последний элемент - MyVector.size()-1 ? Конечно сегфолт. почему тогда для 19 тысяч обьектов не сегфолтится?
>>1586912 Не вылазит за пределы сегмента стека, который выделен твоей программе. Для объектов разного другого размера крашилось бы при другом количестве.
Как можно кратко записать: if (сложное условие A) && (сложное условие B) if (сложное условие B) && (сложное условие C) ... if (сложное условие X) && (сложное условие Z)
>>1586991 Обернуть в функции с понятными именами, что ты собственно проверяешь. Хотя непонятно что у тебя эти ифы делают, возможно можно гораздо элегантнее сделать.
>>1587122 Хардкодить квесты стоит только если их очень мало. Я бы вынес логику во внешние скрипты на каком-нибудь луа, или делал их в виде машин состояний грузящихся из простенького дсл. Если квесты линейные и хочется в коде, то енум со всеми именами квестов, и вектор объектов квестов, в них стадия квеста и вектор пар лямбд условия и действия по нему для каждой стадии. Внешний вектор это список квестов, берется по енуму.
>>1587364 >ебать байты Думаю проблема как раз в том, что в наших вузах постоянно выпускается толпа людей, думающих что программирует на крестах, а в реальности ебущая байты на си с классами. Естественно при таком предложении работодатель давать много не будет. Решение - пропагандировать питон.
>>1587364 Какие области, где можно писать на крестах, сейчас прибыльные и без огромного порога вхождения типа машоба? Типа как бэк на джаве пописывать за 200к, только для крестов.
>>1587390 Ты так описываешь студентов, будто они все: 1. Идут в вуз с уверенностью, что их там всему научат 2. Уверены, что программирование = плюсы 3. Вообще не мониторят рынок 4. Выпускаются, уверенные, что их всему научили.
А на самом деле: 1. Большинство охуевает от сложности плюсов и забивает на программирование вообще 2. Те, кто не забил, открывают-таки хедхантер и учат жабы, жсы и пхпы. 3. Единицы осиливают плюсы и находят работу.
>>1587390 Согласен с тобой частично. Модерновый хороший С++ выучить реально только на собственной шкуре, и то, после пары-тройки лет работы.
>>1587397 Прибыльность зависит от конторы, а не от области. Оверолл - финтех всегда платит. Нвидия платит, чем бы ты не занимался. Яндекс вроде как платит в последнее, а требует вообще только алгоритмы.
Но я бы не рекомендовал вкатываться в С++ на данный момент. Веб обезьянничать сильно проще, да и денег выше, рынок поживее.
>>1587404 Если ты вкатился - тогда смотри на вакансии нвидии, сбербанка (он платит, но специфика), Дойчебанка, ну и хз даже, что еще посоветовать. Жидбрейнс какой-нить хайрить крестовиков на шлион.
>>1587400 >1. Большинство охуевает от сложности плюсов и забивает на программирование вообще на самом деле можно не учить все плюсы, видел код энтерпрайзного матмоделирования, так там будто на чистом си писалось
>>1587417 Я вообще читал несколько историй, где на конкретных проектах заранее договариваются, какие фичи плюсов вообще использовать не будут из-за сложности. Вот только в разных проектах такие соглашения разные, и волей-неволей приходится учить всё.
>>1587448 Знание этой хуйни поможет стать лучше в плане кодинга, лучшие кодеры получают больше. Вроде очевидная хуйня, не? Кроме ещё более очевидной, что зарплата растет при переходе в другую контору (или на более высокую должность) относительно текущей зарплаты. То есть надо просто устраиваться на более высокооплачиваемую работу и делать это каждый год. Потом можно а америку съебнуть и там повторить. Ну и понятно, что с чего то нужно начать, но я так понял ты уже в пути.
Ну а вообще нехуй меня слушать, я два часа назад решил в кресты вкатиться и пришел за этим сюда. Только откомпилил свой первый хелоу ворлд.
>>1587432 Чем буст не угодил? Алсо, че в нвидии происходит, какая работа? Мне пиздец интересна математика, и я хорошо шарю в железе, был бы смысл мне туда идти?
>>1587461 Ну ты же знаешь, что шаблоны это тьюринг-полный язык, а значит позволяют добиться сколь угодно долгой компиляции. А теперь вспомним, из чего состоит весь буст.
>>1587456 На крестах работу хер поменяешь. Язык один, но предметные области и задачи сильно отличаются между конторами. Это не джава, где можно бегать из одного места в другое каждые полгода, потому что везде нужен спринг и делать надо одно и то же.
>>1587484 Область фиг сменишь. Если телеком, например, то придется либо искать следующую работу в телекоме, либо переучиваться и искать младшие позиции. Мобильность ограничена, не получится побегать между работами, набивая себе цену.
>>1587461 > Чем буст не угодил? Есть нюансы в связи с внутренними процессами и сборкой.
> был бы смысл мне туда идти? Идти точно есть смысл - это лучшее место работы в ДС. А скиллы в железе\математике - зависит от команды. Мне, например, знание ИГРУЛЕК сильно помогает в работе, рофл.
> Алсо, че в нвидии происходит, какая работа? Зависит от команды очень сильно.
Можно ли как-нибудь в Qt проверить, используется ли файл другим процессом/программой/etc? Пробовал менять имя файла на тоже самое, всегда false выдаёт и это не позволяет детектить Может, есть ещё какие-нибудь способы?
>>1587390 >а в реальности ебущая байты на си с классами Это, кстати, не такой плохой вариант. Хуже работать с проектом, в котором, например, три разных вида умных указателей (стд, самописный, навелосипженный до С++11, и из сторонней либы) или какая-нибудь ебанистическая шаблонная магия, весь код в хидерах, и на каждый чих требуется полная пересборка минут на пять.
>>1587834 >Си с классами явно отдает хреновым общим опытом разработки Иногда - наоборот. Люди с опытом пишут простой и понятный код без большого количества абстракций.
Ананасы, можете посоветовать книги по Qt QML Шлее не предлагать или в целом годные книги про построение интерфейсов которые GUI. В целом мне интересно, как лучше разделять gui и "ядро", чтобы при каких-то пиздецовых операциях гуи не лагало. И как организовывать гуи, чтобы с минимальными трудозатратами адаптировать его к разным устройствам (телефоны, пк)
>>1588219 >И как организовывать гуи, чтобы с минимальными трудозатратами адаптировать его к разным устройствам (телефоны, пк) Самому написать на OpenGL (ES). Это самый портируемый вариант.
>>1588460 Да никому веб не нравится. Но в отличие от мобильного Qt, реакта нативе, флаттера и прочих киви, веб хорошо изучен, проверен и все его плюсы и минусы давно известны. Он реально требует минимальных трудозатрат, реально кроссплатформенный и реально везде работает одинаково (не совсем, но уж точно одинаковее, чем тот же "кроссплатформенный" GTK). А всё остальное тупо не исследовано и может таить кучу подводных камней.
>>1588460 > Что-то не нравятся мне ваши предложения... Нехуй экономить на разработчиках. Вот раньше пиздато было, на каждую платформу был свой клиент, не зависящий от других. А теперь пернул под Винду, завоняло под ведром
Хочу распараллелить код с помощью OpenMP. Функция полностью состоит из цикла, поэтому я просто пытаюсь воткнуть #pragma omp parallel for schedule(auto) в начало: https://pastebin.com/gmyf1Y4E В результате никакого ускорения не получаю, скорость выполнения с каждой новой нитью только падает. Что делать?
>>1588942 Тупо учил, учил и учил. Каждый день открывал литературу, читал до полного понимания, выполнял упражнения и шёл дальше. Почему-то я тогда не заебался. А вот hh.ru мотивацию убил мгновенно.
>>1588942 Начинал с того, что было понимание, что надо что-то в жизни менять, потому-что я работал около-админом, и это было днище бесперспективное абсолютно.
Взял какую-то книгу (честно - уже не помню какую), стал читать. Нихуя не понимал, взял другую книгу, читал ту же тему другими словами. Писал простенькие примеры, смотрел в дебаггере вижуалстудии, что там вообще происходит. Потихоньку пердолил QT (так и не пригодилось бтв), смотрел выступления на конфах, дохуя всего читал, постоянно писал код - каждый вечер, и даже иногда на работе в свободное время.
Эпично проебывался на собеседованиях на джуна (мне тогда в районе 25 годиков уже было, хотел устроиться даже на 25к, лишь бы на С++ писать, хуй то там), запоминал вопросы, выдрачивал их.
Устроился на первую работу не сиплюсплюсером, но уже программистом - продолжал ежевечерне задрачивать кресты, разбираться, читать всё подряд.
Мотивация была очень простая - либо работать в мухосранске говном из жопы, когда тебя ненавидит начальство, либо все таки ебашить в надежде на светлое будущее и перекат в какую-нить классную компанию.
Сейчас работаю в Нвидии все в треде знают кем и за сколько
>>1588953 > понимание, что надо что-то в жизни менять. >либо работать в мухосранске говном из жопы, когда тебя ненавидит начальство, либо все таки ебашить в надежде на светлое будущее и перекат в какую-нить классную компанию.
>>1589022 То есть правильный ответ - undefined behavior? Да не может быть такого чтобы не было четкого ответа какой конструктор будет вызываться - явно дефолтный или просто дефолтный
>>1589138 Declaring any special member function except a default constructor, even as =default or =delete, will suppress the implicit declaration of a move constructor and move assignment operator. Declaring a move constructor or move assignment operator, even as =default or =delete, will cause an implicitly generated copy constructor or implicitly generated copy assignment operator to be defined as deleted. So as soon as any of the special functions is declared, the others should all be declared to avoid unwanted effects like turning all potential moves into more expensive copies, or making a class move-only.
>>1588953 А ты можешь вот конкретно сказать, что ты делаешь на работе? Мне кажется, ньюфагам было бы полезно узнать это. Я вот даже отчасти ссу идти на собеседование хотя уже год дрочу плюсы, потому что не знаю что меня ждет. Как проверить свои знания вообще?
>>1589423 Галера, кстати, галере рознь. Работал в галере, где было вполне нормальное отношение к сотрудникам, хотя 90% - это были студенты, и платили им 17-20к в серую пиздец конечно, там серая часть тыщь пять была. Но никто никого не чмырил, офис был вполне комфортный, на кухне всегда были халявные печенюхи, фрукты и кофе. Даже короткий "больничный" оплачивали не требуя больничный лист. Но текучка была пиздецовая, каждый год сменялось около половины, а может даже и больше, сотрудников. Но качество кода в такой компании было на уровне 0. Поэтому нахуй в такой работать, если хочется опыта. Там его нет. Даже на 11 стандарт они перелазили в 17 году
>>1589431 Почему присутствует ограничение по стандарту на работах? В чем сложность сразу взять и перейти на новый стандарт? По сути дописывать ничего не нужно, там убрал, тут урезал и все.
>>1589466 хуй знает, но если есть выстреливший продукт с набранной клиентской базы, то я бы кодовую базу вообще ни на новые компиляторы и стандарты не переводил, ни, боже упаси, не занимался бы написанием типа новой охуенной платформы с нуля которая заменит старую сосредоточился бы на исправлении ошибок и добавлении функционала но это такие маняфантазии о том если бы у тебя был собственный продукт
>>1589517 Да хуй его знает, я так до конца и не понял. Есть какие-то запланированные сроки окончания поддержки версий жабы, после которых либо обновляешься до новой, либо платишь за старую. Но это только оракле ждк, в других сборках может быть бесплатно, но нет поддержки от оракла.
Есть некий продукт, в котором есть баги и таски. Тебя обычно садят что-нибудь почитать, и потыркать, чтобы ваще понять, что за продукт, как его собирать, где лежат сорцы и тд.
Потом, обычно, дают простенькие баги, это те, которые с наименьшим приоритетом, чтобы ты стабильно научился проходить некие конторские процессы, типа Мердж реквест - Ревью - Прогон CI\CD - Коммит.
Ну а дальше потихоньку вктаываешься в рутину разработки и все.
Не надо переживать, что тебя с нуля посадят писать что-то сложное, или что на тебя все будут класть хуй там. Тебе в среднем все будут помогать и слушать.
Если сильно хочешь проверить свои знания - пиши на [email protected] с пруфом того, что это твой пост - я тебя фейкоотсобесю на джуна и скажу, где ты проебываешься.
>>1589567 Ты только того анона будешь фейкособесать? Я сам хочу как-то уровень знаний плюсов узнать, но они у меня только самоприобретенные, работаю не плюсовиком.
>>1589458 Там ниасилили бы его, слишком дохера студентов, для которых шаблоны сродни магии, а основной костяк - уже застаревшие типы лет 45-50, которым это нафиг не надо и проще написать 100500 функций, которые будут принимать "бесконечное" количество аргументов, чем заморачиваться с variadic templates. Ну одним словом пиздец, прогресс там остановился в 90х
>>1589466 Что-то где-то может неожиданно отвалиться, после этого надо с нуля тестировать всё приложение. А во вторых, команда должна понимать, что происходит в проекте. У нас там половина не знала, что такое move semantic и с трудом читала код на шаблонах, который ничем особо сложным не выделялся ну студенты далеко не самого тового вуза, работающие за двадцадку, что с них требовать то? Что-то поправить могут, не сломав при этом ничего, и заебись
>>1589485 Продукты обычно развиваются. Как развиваются и программисты, которые их пишут. Вечно на С99 никто писать не будет, молодые прогеры, которым нравятся плюсы, туда не пойдут, а старые рано или поздно уйдут например я ушёл как раз из-за отсутствия развития
>сосредоточился бы на исправлении ошибок и добавлении функционала Так вот с новыми стандартами часть работы можно делать быстрее, чише и безопасней. Стагнация в нашей сфере = смерть ИМХО
>>1589625 > ну студенты далеко не самого тового вуза, работающие за двадцадку, что с них требовать то? Что-то поправить могут, не сломав при этом ничего, и заебись Те, кто писали приложение изначально по идее более опытные программисты, верно? Но у них все равно остаются ошибки?
>>1589653 Да, там основной костяк состоял да и состоит из двух прогеров, которые там сидят с самого начала основания компании. Ребята норм, но без какого либо желания развиваться дальше. Си с классами их более чем устраивает. А ошибки есть у всех. А ещё куча ошибок появляется после того, как приложение попадает в реальный мир. Там всегда возникает чувство, что тестеры нихерна не тестировали ну если это не под какое-то определённое устройство делалось, которое у всех одинаковое
>>1589671 Ясно. Просто интересно про процесс разработки узнать, просто странно когда исправлять ошибки назначают менее опытных сотрудников. Мне кажется в других сферах обычно наоборот происходит.
>>1589671 > Там всегда возникает чувство, что тестеры нихерна не тестировали Ну а хули, повезло что тестировщики вообще есть, ибо если программисты - это студенты за 20к, то тестировщики скорее всего просто бомжи с улицы.
>>1589659 Принял. Логично, я тоже хочу в плюсы, но пока просто изучаю, а не ищу работу. Только не принимай пруф из дашчана, там любой пост можно своим пометить.
while (msg.message != WM_QUIT) { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); else { //Update GameController::Update(); } } Аноны, есть подобный код, хочу добавить сюда отдельный поток для GameController::Update(), как мне это сделать? Метод в лоб std::thread DrawThread{GameController::Update} будет же создавать тред каждую итерацию цикла? Я могу как-то создать поток, а потом указать какие функции будут должны в нём выполняться?
>>1590012 >как-то создать поток, а потом указать какие функции будут должны в нём выполняться? Более-менее да. Ты уверен что тебе нужно сначала создать поток, а потом указывать функции в нём выполняющиеся и на момент создания этого сделать нельзя? >создавать тред каждую итерацию цикла? Просто создай его в WM_NCCREATE или в месте, где окно создаётся и передай потоку указатель на класс твоей игры. Другой поток сам будет смотреть на флаги твоего класса и исходя из этого действовать, вызывать методы или ещё что.
Основная проблема в том, каким образом синхронизировать рендер, ввод с клавиатуры-мышки и физический цикл (цикл игровой механики). Можно хранить копию состояния игры, рисовать эту копию, пока новое физическое состояние обсчитывается в другом потоке. Мьютексы с большим шансом в говно тормозное превратятся, но не обязательно. Ещё виндоус почти не умеет в таймеры, либо ты физический цикл делаешь с очень большой частотой, либо привязываешь к рендеру и тогда смысл второго потока теряется, либо сам через условные asm("nop;nop;nop;nop;") ждёшь интервал времени, чтобы добиться ровно 100 обновлений (или сколько тебе захочется) игрового мира в секунду. Если попытаешь заслипать поток, то он будет засыпать на сколько ему захочется милисекунд и обновления будут очень неравномерные во времени. Вообще не знаю как нормальные люди делают - просто описал какая у меня с этим была проблема.
>>1590012 >потом указать какие функции будут должны в нём выполняться Какую проблемы ты хочешь решить? При создании ты можешь указать только одну функцию. Но в той функции ты можешь вызывать сколько угодно других. Если тебе именно динамически нужно выполнять функции то обычный подход - сделать очередь в которую будут скидывать потоку задания, а он время от времени просыпаться и выполнять их. Если ничего нет - то засыпать. Ты в такую очередь скидываешь std::bind (или что-то подобное) с нужными для выполнения функциями. Если у тебя постоянный (но динамический) набор функций для выполнения то создаешь просто вектор с такими биндами (или ссылками на функции например) и в треде пробегаешся по нему и засыпаешь на время. Потом повторяешь
>>1590020 Как будто в готов движке оно каким-то магическим образом само-собой работает. Один хрен в 98% играх ввод с клаво-мышки привязан к рендеру, и в 90% игровая механика прибита гвоздями к рендеру.
Но слипать поток с циклом обновления игры в любом случае не стоит, даже на 60 фпс скорее всего он уснёт больше чем на 16 мс. По крайне мере я никаким образом не смог добиться стабильного интервала между обновлениями, если поток с ними слипается.
>>1590012 Зачем там else, типа если кто-то спамит очередь сообщениями, пошел нахуй юзер, не до тебя сейчас? >Аноны, есть подобный код, хочу добавить сюда отдельный поток для GameController::Update(), как мне это сделать? Зачем? Пока видюха рендерит, основному потоку все равно нехуй делать. Если же ты хочешь заняться чем-то тяжелым, физикой какой-нибудь, которую на видюху нельзя либо влом, то именно это и нужно пихать в отдельный тред. Не надо наворачивать сложность там, где она не нужна.
>>1591057 > Ни дебаггера, ни компилятора, ни системы сборки, ни статического анализа, ни раннера юниттестов. Ты щас смеешься? Ты щас смеешься? Ты щас смеешься? Ты щас смеешься? Ты щас смеешься?
> Это так, блокнотик с подсветкой. Лол. Лол. Лол. Лол.
>>1591057 > дебаггер gdb > компилятор Такие же как и везде - gcc и clang > система сборки qmake, ninja, make, waf, scons, meson... > статический анализ clang analyzer и semmle > раннер юниттестов gunit > вижуал студия - полноценный профессиональный инструмент Уж лучше бы профессиональные инструменты из неё упомянул. Их там есть немного.
>>1591089 Зачем пользоваться (и, о боги) осиливать заведомо инфериорный продукт? Если ты идейный хейтер всего майкрософтовского, то всегда есть CLion. Если у тебя аргумент "ТАРМАЗИТ" - то ты не зарабатываешь деньги программированием, и твое мнение априори не интересно. ЛАБА3 можно писать и в nano
>>1591068 >code blocks Не умеет выводить подсказки (список полей и методов структуры) при использовании auto, decltype и сколько угодно простых шаблонов. Код компилируется, но в редакторе всё красным зачёркнуто-перечёркнуто, никаких полезных предупреждений от среды нельзя получить. В автоматическую установку отступов соответственно не умеет, если там вообще такое есть. Может быть и пофиксили что-то или это можно настроить, но у меня самые отвратительные впечатления остались (хуже только от визуал студии) - зачем это нужно, если в другой среде это всё без особых проблем работает?
>>1591146 > Ну а зачем тогда высираться тут, если ниасилил? Сидит челик, обмазывается говном, и на все вопросы отвечает "АХАХА ТЫ НЕАСИЛИЛ ПРОСТО, НЕАСИЛЯТОР АХАХАХА", и продолжает обмазываться. Это выглядит примерно так.
> Тогда и VS не IDE. Как раз - фактически это единственная IDE, ставишь только ее, у тебя сразу и редактор, и весь тулчейн, и редактор.
>>1591387 > и на все вопросы Какие вопросы? Там были лишь заведомо ложные утверждения. > Как раз - фактически это единственная IDE, ставишь только ее, у тебя сразу и редактор, и весь тулчейн, и редактор. В студии есть рабочие нагрузки, так что можно вполне себе поставить студию без компилятора. Тащемта CB, насколько я помню, тоже поставляется со всей этой хуетой.
>>1591890 У меня в свежей студии после шаблонной мангии intelliSense глючит, порой вообще отказывается синтаксис светить. Хз что делать, наверное, буст его перегружает
У меня есть класс Socket. Я хочу, чтобы когда он принимал соединение, он возвращал шейрд указатель на объект класса Connection, который бы сразу и конструировал из хэндла, полученного функцией WinSock. В свою очередь объект класса Connection содержит в себе Socket. Я пытался сделать через форвард декл., но не выходит. В Socket.cpp заинклюжен Socket.h, а в него Connection.h, что не дает мне заинклюдить Socket.h в Connection.h. Как такое делается?
Поясните, как лучше написать. Есть такой набор строк: test[1] = function[1,2,3,a,b,c]; ... test[10] = function[4,3,6,e,f,g]; была идея завести отдельную структуру для параметров функции и итерировать по ней.
Сап, программисты. Вопрос по QProccess. По нажатию на кнопку, я запускаю скрипт python. Все работает нормально некоторое время, но потом Qt закрывает скрипт, не дождавшись его окончания. Скрипт для дефолтного вывода графика. В чем может быть проблема? Ошибка QProcess: Destroyed while process ("python3") is still running. Мой QProcess p.start("python3",{"draw3d"}); p.waitForFinished();
>>1593102 >Надо например каждый раз тот же вектор обрезать с краев. Вектор так не умеет, вроде бы. Ты либо делаешь новый вектор (меняешь уже имеющийся) на каждой итерации, либо создаёшь свой тип / передаёшь итераторы.
Поясните когда следует добавлять const у метода класса? Допустим я пишу обертку над сишным FILE* да я знаю про fstream. У меня есть функция записи в файл, в которой я передаю указатель по значению в сишный fprintf. Компилятор позволяет мне объявить этот метод константным, сами поля класса при этом не изменятся, но поведение класса изменится. При следующей записи он уже будет писать в файл с другим смещением. Так вот следует ли в такой ситуации оставлять const?
>>1593607 const в методах нужен (можно поставить), когда ты не изменяешь не-mutable поля класса, не вызываешь других не-const методов и всё в таком роде.
Константный указатель не есть указатель на константу - если у тебя класс содержит указатели - можешь сколько угодно изменять значения на которые они указывают. FILE - простая структура, указатель на неё ничем не отличается от указателя на число. Ты не сможешь использовать fprintf, только потому что у него в объявлении нет const, но фактически сам указатель ты передаёшь по значению и у функции просто нет возможностей его (указатель) изменить (const в объявлении аргумента функции влияет только на возможности записи в этот аргумент внутри функции и существенный смысл имеет только вместе с ссылками). Ещё ты можешь поставить const_cast<FILE✲>(f1) вместо f1 если понимаешь что ты делаешь и зачем тебе это нужно, и тогда ты сможешь использовать fprintf вместе с const FILE✲.
Ещё по большей части const нужен для людей, просто чтобы не ошибиться лишний раз, компилятору более-менее без разницы и если ты не записываешь значения в переменную он и так может провести оптимизацию во многих случаях.
>>1593632 Ну вот тут например я по могу использовать fprintf в константном методе, передавая туда неконстантный указатель. Но в то же время я не могу использовать константный указатель т.к. fprintf принимает неконстантный.
>>1593819 Есть есть заготовочка, где настроена обёртка вокруг winapi для создания окна, инициализации опенгля и вывода текста, то побью его (за 20 часов кодинга)!
>>1593819 Но вообще совсем не впечатляет. У него десять текстур, статичные блоки и простой генератор мира. Интерфейса или ещё чего-то нет, показан только режим полёта (прыгать по кубам нельзя). Сделаю за три-пять часов плюс-минус такое. Могу с записью, если ты хочешь поспорить со мной.
>>1593607 Тоже задумывался над этим вопросом, когда писал свой враппер над FILE. Решил сделать read и write константными, просто потому, что сырой константный FILE тоже можно писать и читать. Получилось прикольно в том плане, что можно передать куда-то const File&, и это будет означать "можешь писать и читать, но не можешь закрыть и переоткрыть". Хотя потом оказалось, что такой подход плохо расширяется — захочешь вместо File передать другую читалку-писалку, а у неё read и write уже могут быть не константными.
>>1593607 Константными можно делать методы вроде .size(), .readPos()
Когда ты читаешь из файла, ты меняешь позицию указаетля чтения. Так что хотя технически метод чтения можно сделать константным, логически он меняет объект.
Аноны, я тут пытаюсь устроится на работу джуном C++ и мне с ходу выслали тз, сделать игру Pong без движков, + обязательно должен быть режим битвы против бота. К тому же назвали всё это очень простым тз. Я конечно кое-как сделаю скорее всего эту игру, но не слишком ли это большие требования для джуна? Если это простая задача, то что ждет меня дальше.
>>1593992 Я хотел сделать на DirectX(это же нельзя отнести к категории движков?), в любом случае собираюсь делать конечно, даже если не возьмут, получу хоть какой-то опыт.
>>1593994 DirectX тоже пойдет, это не движок. Хотя это оверкил, тебе надо нарисовать 2 прямоугольника, линию и кружок. Почитай у Петцольда про GDI, у тебя реально всю отрисовку можно в 10-20 строчек уместить.
>>1593989 Вообще расскажи подробнее, если не сложно. Я просто десять лет кодю, но никогда не работал, потому что хикка социофоб, но нужно как-то устраиваться. Твоё задание кажется очень простым, но когда я попробовал приходить на собеседование, меня спрашивали что я знаю, и я не мог ни про что сказать, что я что-то знаю, потому что в чём угодно есть много вещей и дополнительных функций, которые я не знаю - я честно так и отвечал, что имею какой-то опыт работы с тем-то, с этим, после чего меня благополучно посылали.
>>1593998 Я тоже никогда ещё не работал, сейчас на 2 курсе учусь и просто разместил свое резюме и потом уже со мной связались, собеседования ещё не было, оно после выполнения тз.
>>1593989 Без движков? Без б, ебани в консоли ascii графикой. Я так "жизнь" сделал. Три совета для скорости печати: собирай в релизе, ставь в консоли курсор на левый верхний угол и печатай каждый раз один раз одно и то же количество символов(они будут перекрывать друг друга, быстрее, чем очищать вывод) и печатай сразу все, что есть для отрисовки, а не построчно.
Поясните за эту хуйню, почему я могу использовать функцию из неймспейса не указывая этот самый неймспейс просто потому что я в нее посылаю аргумент, тип которого объявляется в этом же неймспейсе? Это типо так и должно быть?
>>1593776 бампую вопрос, т.к. до сих пор использую вектор в котором храню значения из первого цикла в нечетных местах, а значения из второго цикла в четных, а потом вывожу это в файл.
>>1594217 Делаешь один цикл, где на каждой итерации записываешь два значения, а когда одно из условий нарушается - выходишь из цикла и добиваешь всё оставшимися A или B в зависимости от нарушенного условия? Удобнее через while.
>>1593940 Загуглил, давно читал, да, есть те кто может и кто не может. Не считаю это чем то плохим, я например рисовать не умею, а другие умеют. Хотя думаю с 2006 прошло много времени и умеет больший процент, тупо потому что больше пользуются электронной техникой.
>>1593905 >Но вообще совсем не впечатляет. Он первым сделал демонстративный пример на крестах, все норм >У него десять текстур, статичные блоки и простой генератор мира. Больше всего он ебался с созданием окна и правильным отображением мира, только в конце уже можно было бы что-нибудь добавить >Сделаю за три-пять часов плюс-минус такое. Могу с записью, если ты хочешь поспорить со мной. На что споришь?
Не даёт покоя пикча, где типа совершенство использования c++ - использовать си. и линукс блядский на сишке Сука блять, с++ же силен либами и всяким ьаким говном. Я например использую Eigen и не представляю даже, сколько страшной ебли было бы на си. Или я ошибаюсь, и сишка совершенна?
>>1594496 У С в 2020 году есть 2 юзкейса. 1. Отсуствие компилятора С++ под твою платформу 2. Экспозинг extern C интерфейсов для FFI других языков\компиляторов.
Все, больше нахуй нигде не сдалось, не слушай луддитов.
>>1594506 Иронично, что C++ предназначен быть полезным в куче юзкейсов, когда очевидно, что в еще большей куче он не подходит, то этот ИТТ петуховен так уверен в себе.
>>1594501 Жаль что все либы с++ написаны в разном стиле и с разным интерфейсом, считай на 10-ке разных диалектов. Ну и на сях либ то наверное побольше.
>>1594545 > Жесткое ограничение на размер шеллкода, например. Ты вполне можешь получить такой же размер, как в си. Минус РТТИ, минус эксепшены - пожалуйста.
Но мы тут, все таки про разработку полноценную, а не упражнения
> Вообще нет ни одного кейса, где бы Java не подошла. Напишешь мне кернел драйвер виндовый на джаве? Я на С++ пишу вот щас сижу.
>>1594553 >Ты вполне можешь получить такой же размер, как в си. Минус РТТИ, минус эксепшены - пожалуйста. Скажи мне, ты в своем уме? В Си у меня на выбор кучи заменяющих libc библиотек, из которых можно взять только самое нужное, в C++ мне нужно будет тащить весь libc++ без альтернатив, не говоря уже о том, что там все завязано на работу с памятью, а это означает еще библиотеки, заменяющие работу с памятью ОС.
>Но мы тут, все таки про разработку полноценную, а не упражнения Ясно @ понятно. Настоящая разработка ведется исключительно в винде. Спасибо, что пояснил.
> Напишешь мне кернел драйвер виндовый на джаве? Не вижу никакой причины не захуярить JVM прямо в драйвер.
>>1594439 Да не на что. На репутацию моей критики в том посте. Не получится - тот тип с ютуба молодец, а я хуесос; получится - я молодец, и тот тип тоже молодец, потому что сделал видео и привнёс что-то интересное в этот мир. В конце концов я то уже знаю что нужно сделать, а он может быть тыкался ещё не видя конечного результата.
>>1594566 >у тебя и в С и в С++ можно линковаться только на платформенное АПИ вообще без какого-либо рантайма, если ты не в курсе. И? Нахуя мне C++ без библиотек и исключений?
>Ну, как захуяришь - свисни. Лол, ты себя илиткой считаешь, чтоле? Такой-то гонор, и нихуя по существу вопроса, а все заявления основаны на кодинге под одну платформу.
>>1594566 >у тебя и в С и в С++ можно линковаться только на платформенное АПИ вообще без какого-либо рантайма, если ты не в курсе. Попробуй, кстати, написать что-то нетривиальное на том же C без рантайма под ту же винду. Тебя ждет мир удивительных открытий типа необходимости реализовывать свой memset, например.
>>1594578 >И? Нахуя мне C++ без библиотек и исключений? Шаблоны, классы.
>>1594585 В настройках компилятора просто ставишь статичную линковку(MT) и и у тебя весь рантайм сам встроится в твое приложение используя исключительно winapi.
>>1594578 > И? Нахуя мне C++ без библиотек и исключений? Хотя-бы ради классов. RAII и инкапсуляция - это такая киллерфича, что на этом можно закончить. В чистом СИ ты в лучшем случае будешь как майкрософт GOTO cleanup делать.
Считай - тот же си, только с классами, шаблонами и прочим сахарком типа лямбд, и о боги, даже распаковкой аггрегатов в structured bindings - это все удобно, и не требует рантайма.
> Лол, ты себя илиткой считаешь, чтоле? Хорошо сманеврировал. Но я еще посмотрел бы на потуги писать на джаве драйвера, особенно с использованием многопоточки. Как бы ты там сочно половил бсодов с IRQL violation'ами.
> Такой-то гонор, и нихуя по существу вопроса, а все заявления основаны на кодинге под одну платформу. Кто тебе сказал такое? Я писал под линукс на крестах охуевший high performance. 98% кода красиво и абстрагировано, 2% (исполняющиеся 99% времени) выдрочены до замеров промахов кэша процессора. Но да, винду я знаю сильно лучше, этого отрицать смысла нет.
> Попробуй, кстати, написать что-то нетривиальное на том же C без рантайма под ту же винду. Тебя ждет мир удивительных открытий типа необходимости реализовывать свой memset, например. Да без проблем вообще. В кернеле есть крошечные куски сишного рантайма, анивей, использую кернел апи, а сверху уже нашлепал нормальных абстракций, тот же operator new, например. Обернуть сишное апи - получаем хороший С++.
>>1594601 >Шаблоны, классы. Макросы, структуры. Реальный профит от C++ начинается с возможности использовать RAII и исключений для обработки ошибок.
>>>1594585 >В настройках компилятора просто ставишь статичную линковку(MT) и и у тебя весь рантайм сам встроится в твое приложение используя исключительно winapi. Без рантайма, не статисчная линковка, а без рантайма.
>>1594604 RAII без исключений не дает профита. И да, в C я именно, что делаю goto, а хуле ты хотел-то? Выбора нет. Ну а инкапсуляция это приятный бонус, решения о выборе языка не принимаются на таком основании.
>Да без проблем вообще. В кернеле есть крошечные куски сишного рантайма Вся суть, а совсем без рантайма твой любимый VS начнет смачно обсираться и звать маму.
>>1594614 >Макросы Хуйня, не сравнится с шаблонами >структуры Нет RAII >RAII без исключений не дает профита. Действительно, вот у меня есть функция которая возвращает какой-нибудь важный ресурс, в си мне придется КАЖДЫЙ раз вручную его освобождать, а в с++ я могу обернуть его в RAII и все.
>>1594614 > RAII без исключений не дает профита. RAII дает профит всегда, потому-что тебе не надо думать об освобождении ресурсов - привет GOTO cleanup. ты можешь думать на более высоком уровне абстракции, там где нужно. И опускаться во врапперах на более низкие. Те же хэндлы и прочие opaque поинтеры.
> Вся суть, а совсем без рантайма твой любимый VS начнет смачно обсираться и звать маму. Еще раз, для необучаемых - ВС умеет в компиляцию native приложений, когда еще даже Winapi нету, не говоря уж о рантайме, только Native api. В драйверах есть майкрософтовские бастарды, сишного ни рантайма, ни библиотеки нету. Студия отлично справляется.
В который раз смачно обсираешься, абсолютно не зная винду, но продолжаешь это делать. Зачем?
>>1594622 Очень сильно зависит от конторы. Кому-то 50к в НИИ, мне 400к+. В касперском можно вроде 200-250 выбить.
>>1594630 >В который раз смачно обсираешься, абсолютно не зная винду, но продолжаешь это делать. Зачем? Обсираешься здесь лишь ты, т.к. из-за своего ЧСВ даже не можешь понять, о чем пишешь. При компиляции драйвера VS добавляет свой псевдо-рантайм, без рантайма он не будет находить тривиальные функции во время линковки, которые ему нужны просто так, блеать, из-за того, как компилятор генерирует код. Вообще, я угараю с твоего ЧСВ, маня, ты думаешь, что один тут драйверы писал? Так-то понятно, что в Рашке среди говна легко чувствовать себя таким царьком, но включи мозг-то.
>>1594630 >RAII дает профит всегда, потому-что тебе не надо думать об освобождении ресурсов - привет GOTO cleanup. А, и еще раз. goto нужен только в случае обработки ошибок, другими словами — реальный профит от RAII, а не отсутствие необходимости вызвать лишнюю функцию для освобождения ресурсов, начинается с возможности использовать исключения для обработки ошибок. Про абстракции и врапперы он мне тут рассказывает, лол. Жену поучи щи варить, петуховен.
>>1594634 >без рантайма он не будет находить тривиальные функции Какие блять тривиальные функции? Ты хоть перечисли несколько. Почему я спокойно пишу драйвер и могу юзать хэш карты, вектора и т.д.?
>>1594639 > goto нужен только в случае обработки ошибок, другими словами — реальный профит от RAII, а не отсутствие необходимости вызвать лишнюю функцию для освобождения ресурсов, начинается с возможности использовать исключения для обработки ошибок. Ладно, здесь уже можно закончить. Удачи с дипломом.
>>1594653 Ты понял, что обосрался по всем пунктам, и сейчас у тебя бомбит от осознания собственной профессиональной несостоятельности. Пишешь драйверы и не понимаешь, как генерируется код, лол. В своем узкоспециализированном домене не знать, что VS вставляет вызовы в CRT где попало — это нужно быть типичнейшим кодомакакой, хоть и от C++, лол. Не знать, зачем на самом деле нужен goto в C — аналогично. Ты просто привык понтоваться умными словами перед джунами, но чем-то их подкрепить не в состоянии.
>>1594661 >Ну, как минимум курс операционных систем в вузике ты не проспал, но судя по всему, продакшен код еще не писал. Good, good, let the butthurt flow through you.
>>1594662 Для этого надо хотя бы понимать суть проблемы, а не как этот петуховен, код работает и ладно, лол.
>>1594678 С коллегами я на работе общаюсь, а на двачиках\ментачиках\сосачиках\педаликах я уже лет 12 сижу — раздался пронзительный голос со стороны параши.
Но пацаны, как всегда, не обратили внимания на это визгливое кукареканье. Пусть кукарекает, что с него взять?
Петух — не человек, и сегодня ему предстоит очень трудная ночь. У него уже в течение полутора лет каждая ночь была очень трудной, и теперь его анус был разработан настолько, что он без труда мог спрятать в нём банку сгущёнки.
Не забывайте ребятки, что тюремную культуру принесли русские евреи незадолго перед революцией. Если вы куколды и гои, то окей хуле.
>>1594574 А вообще хочется разработать такую же игру, примерно. Тут огромный простор для творчества, на самом деле. Вот в мажонг не попадешь, да и они сами на жава пишут. Вот интересно, есть идеи у тебя какие либо? я думаю в майнкрафте мало экшена и реального выживания, думаю может что-то похожее запилить.
>>1594734 >Не забывайте ребятки, что тюремную культуру принесли русские евреи незадолго перед революцией. Именно поэтому пидарашки в любом закрытом коллективе устраивают анальную иерархию, а в израильской армии дедовщина отсутствует, как класс, лол.
Через что лучше пердолить Qt, а конкретно QtWidgets, книги или документация с примерами? И ещё вопросик такой, что обычно означает в вакансиях: «знание Qt (QtWidgets/QtCore)»? Умение применять в реальных проектах?
>>1594774 > Через что лучше пердолить Qt, а конкретно QtWidgets, книги или документация с примерами? Через написание кода. А с чем ты будешь консультироваться при написании кода - похуй, но, наверное, с документацией.
> И ещё вопросик такой, что обычно означает в вакансиях: «знание Qt (QtWidgets/QtCore)»? Умение применять в реальных проектах? Ты понимаешь, как работает мемори менеджмент в qt, сигналы\слоты, moc, uic, как рисовать гуй, как наследуются\переопределяются методы в qt и так далее.
>>1594788 А где почитать вот про эту модульность, где классы в хедерах и отдельных cpp файлах реализуются, как они с главным файлом стыкуются и т.д.? А то я только маленькие делал пока только программы.
>>1581140 блять, а мне 80-летний препод на первом курсе говорил все что можно, даже небо, даже аллаха, по ссылкам передавать, чтобы память экономить, ну охуеть блядь, пойду читать. Мимодругойанон
>>1594604 Последнее, если надо, если есть задача обоснованная, например, если у тебя железка какая-нить голая без ведра линуксовского, то делаешь и не выебываешься.
Бля, поставят задачу - написать линкер свой на работе - не думаю, что у нас кто-то скажет "ОХУЕТЬ КАК СЛОЖНА, ЭТО МЫ НЕ СМОЖЕМ".
>>1594919 Модульность это когда ты можешь просто, без задней мысли, импортнуть нужный модуль, очевидно же. Без сайд-эффектов на остальные включаемые модули, с инкапсуляцией объектов в каждом модуле. Как в жабе и Питоне.
>>1593989 Дополнили немного тз: разрешено использовать только сдл2. Я сделал небольшую заготовку и у меня возник вопроса, я сделал управление таким образом(на пикче), но у меня нельзя одновременно двигать обе платформы, только 1, как решить эту проблему?
>>1594742 Майнкрафт требует специфичного движка, у тебя куча кубов, которые даже в массиве нельзя хранить по нормальному и нужно в чуть ли не прямо в сжатом виде обрабатывать. Хранить кубы как объекты с разными виртуальными методами для камня и сундука не получится. Помимо этого графон там простой без эффектов, и ещё там нереальное количество специфичной геометрии без lod-ов. Движок почти ничего не даст, а если он делает какую-то дополнительную обработку, пытается геометрию разбить по дереву для оптимизации, то он утонет - по сути ты будешь писать всю механику без движка, а движок использовать лишь на 5% для создания окна, обработки мышки, и вывода меню и других элементов интерфейса. Оверкилл, в общем. >Unity >не хочу хочу жрать говно На ноль поделил, кстати. Посмотри игры на юнити, даже очень простые игры вроде робокрафта лагают как не в себя, хотя выглядят на уровне 2005 года. Ksp и cities:skylines имеют утечки памяти и имеют проблемы с производительностью в очень странных местах (в cities:skylines например фпс увеличивается в два раза при скрытии интерфейса - то есть вывод двух панелек с текстом и цветными кнопками занимает ресурсов больше, чем рендер крупного района города).
>>1594734 >есть идеи у тебя какие либо Нету. Когда я когда-то очень давно играл в бету 1.5_01, я заблудился в пещерах и 8 часов искал выход переставляя факелы. Потом ещё метки на стенах рисовал (выкладывал из цветной шерсти), чтобы можно было ориентировать в пещерах. Это был самый интересный опыт игры. На что мне ребята сказали, что я глупый и нужно было просто проход наверх прокопать. Вот мне кажется тут самое интересное что можно сделать - убрать возможность так просто копать унылые блоки, и добавить больше глубины в мир и более сложную организацию пещер. Когда ты заблудился - это перестаёт быть игровой условностью, потому заблудился ты сам, а не персонаж - и никакие "нарисованные" уровни или хорошая экипировка тут не помогут. Вот сделать что-то как на картинке по сложности, только объёмное, чтобы можно было месяц реального времени искать выход, если заблудился и всё развитие и геймплей сделать внутри этих пещер с конечной целью найти выход.
>>1594742 Движки идут во-первых с оверхедом ненужного тебе, во-вторых нехватающие технологии тебе все равно самому дописывать, в-третьих, они своими интерфейсами навязывают свой стиль кодинга, который может тебе не подходить.
>>1595332 Раньше драйвера писал, сейчас я одновременно на трех проектах, еще четвертый подсунуть хотят, и сбоку тыкают, чтобы ресерчил какую-то неведомую хуйню. Весело, короче.
>>1595048 У тебя есть два варианта, первый посмотреть как делается вывод SDL_ttf. Второй - просто рендерить картинки цифр. Вообще говоря, даже не обязательно картинки, их можно рисовать толстыми линиями-прямоугольниками, которыми ты рисуешь платформы.
>>1581135 Сейчас компеляторы умные стали, сами оптимизируют многое, поэтому на всяких конференциях советуют почти все передавать и возвращать просто по значению.
>>1595318 Васян здесь только ты, типичный пидорахен-вайтишник, не способный создать ничего принципиально нового. А люди, которые не ставят себе искусственные ограничения — делают. https://dl.acm.org/doi/10.1145/1408654.1408657
>>1595517 >>1595519 Ну, лично я левел-ап получал образованием, тянки добился, гранты всякие, проекты известные, устроился на работу, на которую всегда мечтал. Но чисто бабло? Вообще никаких эмоций не вызывает. Если бы меня интересовало бабло, я бы менял компании каждую пару лет, наверное.
>>1595528 С моей зарплатой чисто теоретически уже не возможно "сменить контору", прыгнув на более высокий рейт. Единственный вариант - сьебывать в США, чего я пока не хочу.
По-этому расту вертикально и медленно. Но, анивей, чем выше твой грейд - тем интереснее задачи. Чем интереснее задачи - тем больше бизнес-импакт компании, обычно. И так далее.
Короче, меня текущее развитие событий устраивает. Если все пойдет как надо - перешагну 550к в месяц.
>>1595505 > В этой статье мы предложили модель безопасного драйвера устройства для ОС Linux > ОС Linux Дальше не читал. Можешь не продолжать, у тебя нулевой уровень экспертности.
>>1595532 Ну так ты ограничен таким вертикальным ростом из-за решений, которые принял до того, очевидно же. Я предпочитаю, когда у меня много опций. Если меня прямо сейчас заебет хайтек, то легко съебу на постдок в любую страну, например. Заебет писать под Линукс — буду писать под винду в своей компании или в другой. Заебет программирование — уйду в академию. Мне психологически важно иметь возможность послать все нахуй в любой момент.
>>1595535 Можешь не продолжать, у тебя нулевой уровень экспертности — раздался пронзительный голос со стороны параши.
Но пацаны, как всегда, не обратили внимания на это визгливое кукареканье. Пусть кукарекает, что с него взять?
Петух — не человек, и сегодня ему предстоит очень трудная ночь. У него уже в течение полутора лет каждая ночь была очень трудной, и теперь его анус был разработан настолько, что он без труда мог спрятать в нём банку сгущёнки.
>>1595535 >>1595540 Мне вот интересно, насколько сильным должен быть эффект Даннинга-Крюгера у человека, чтобы считать, что я не видел, что в статье речь идет о Линуксе, а не о винде? Тупое одноклеточное, блеать.
>>1595550 >Смысл увольнять достаточно хорошего инженера, по меркам конторы? Ты серьезно? Тупо упадет акция, закроют направление / офис в Рашке / еще овер9к вариантов. Компании такого масштаба увольняют людей десятками тысяч, и тогда не до разборок, кто хороший инженер, а кто нет.
Понятно, что не пропадешь, я больше в психологическом плане на такие вещи смотрю, т.к. меня самого увольняли не раз и не два.
>>1595553 1 раз было общее снижение зарплаты по всей конторе на год, потом это опционами выдали. Прям сокращений - не было вообще, в Московском офисе.
Ну и да, судя по тому, как яндекс мне письма любви написывает на почту и линкедин нонстопом - точно не пропаду, даже если не захочу 12 лет сычевать дома.
>>1595555 Кстати, ты, наверное, разбираешься. Компания "Код Безопасности", сколько могут платить в такой? Когда-то очень давно звали туда, а я подумываю о том, чтобы поработать в Рашке, если уж подался назад в хайтек. Вот на такую позицию, скажем: https://www.securitycode.ru/company/hr/vedushchiy-programmist-c-c/
Допустим, как я понимаю, PWRES = 1024. Могу ли я получить dval = 1024? Суть в том, что при этой конструкции максимальный dval = 1023, а мне надо чтобы был 1024, как это сделать?
>>1595567 Выглядит неплохо, спасибо проиграл со start of the art, лол. Я в этом году точно не уйду со своей РАБотки, разве что мне все руководство разом на голову сядет, потому что жутко интересно пока, и не сгорел еще. Если хочешь в будущем быть на связи, ну и не терять возможность получить профит с референса кандидата, если у вас такое практикуется, то черкани на [email protected]. Блин, если бы норм ваканси были и в ДС2, а не только в ДС, то я бы даже жену легко уговорил на переезд, наверное.
>>1595573 PWRES это число бит. Скажем PWRES=5. Первая строчка обнуляет все биты в dval, кроме нижних пяти. Вторая делит на 2, (PWRES - timer_cfg.duty_resolution) раз. Насколько я понимаю, PWRES это резолюция чего-то одного, там низкая частота, а у таймера более высокая частота. Так что, как минимум, PWRES это не 1024, ну а дальше сам выведешь, что надо, думаю.
>>1595676 >Джуна паковать игры для Geforce now (какая-то такая хйуня есть вроде) - да, это Junior Gaming Engineer. Но с нее дальше в кодинг перекатиться реально. А что для этого требуется, из знаний?
Оверолл - еще надо уметь в игры, понимать как работает прости господи СТИМ, ИГРЫ В СТИМЕ, ДЕНУВО, АНТИЧИТЫ. Мам, я не в игы играю, я к собесу в нвидию готовлюсь, лул
Товарищи крестовики, посоветуйте литературу. Хочу по современному стандарту пройтись, с захватом 20. И что-нибудь не похожее на справочник. Почитал какую-то книгу в духе строгого справочника по языку и нахуй послал этот ад. Даже раст так не выбешивал. Пусть там будет хоть 1к страниц, не вопрос. Главное, чтоб жутко скучно. Хотя бы терпимо. Александреску может? Или все-таки Страуструп?
>>1595688 >>1595681 Анон, а резюме на английском кидать? Что лучше написать чтоб взяли?)) Могут вабще рассматривть резюме замкадыша? Где жить в москве найду
>>1595741 На русском норм. Что написать, ну кроме дефолтного содержания резюме, что ты ИГРУЛЬКИ любишь, наверное. Замкадышей рассматривают, и даже если нужно face2face интеврью - оплачивают билеты и гостиницу на денек.
>>1595757 А как в Нвидии относятся к Линуксу/Линусу после его знаменитого фак-ю? Поменялось ли что-то в корпоративной культуре в плане открытой документации?
>>1595766 Я видел, что парни выкладывают потихоньку документацию к GPU на гитхаб, да и драйвера проприетарные работают. Но какой-то интернал инфы у меня нет абсолютно.
>>1595959 Лучше делать так, как надо в контексте твоего кода, о котором ничего не известно.
При помощи copy-and-swap, или unique_ptr&& ты передаешь ВЛАДЕНИЕ обьектом куда-то. Если тебе не надо передавать владение, тогда просто референс передавай (возможно константный).
Если мы говорим о разнице между unique_ptr и unique_ptr&& - то ее тут, фактически нет, потому-что оно не копируемо. Если бы оно было копируемо - там были бы нюансы. В твоем кейсе - разницы фактической нету между unique_ptr&& и unique_ptr как аргументом функции
>>1595961 > разницы фактической нету между unique_ptr&& и unique_ptr как аргументом функции Ну вообще, когда стоит && хуй его знает, что там будет с объектом. Может его переместят, а может и не переместят. Лучше в таких случаях по значению принимать.
Погромист 1 курса на связи, можно ли в таблице ASCII в выбранной кодировке заменить конкретные символы на свои, в идеале загрузить их как массив пикселей?
>>1596155 Да, в консольном. Мне надо заметь несколько символов либо на символы из юникода(всю программу переписывать под юникод лень), либо поменять где-то файлы, можно даже через код.
Появился ещё 1 вопрос по SLD, когда я сворачиваю окно начинается утечка памяти, когда разворачиваю обратно, но память стабилизируется и удаляется лишнее. Как это пофиксить?
Существует простой способ удалять из консоли то, что ты напечатал, а затем выводить снова строкой ниже с сохранением введенных данных и возможностью их редактирования?
>>1597024 Может быть это не то, что ты имеешь в виду, но \r\n означает carriage Return и New line, соответственно, если вывести только \r, то перевода строки не произойдет, а курсор окажется в начале строки, и ты можешь выводить текст поверх старого.
Здесь задают тупые вопросы? Можно ли создать простенькое интерактивное меню в консоли без чистки всего экрана system("cls") и повторного вывода всего при каждом мелком изменении? Если знаете где об этом подробно написано то скиньте ссылку. Заранее благодарен. Если этот метод будет пригоден для создания змейки, тетриса, понга и шашек то вообще заебись.
>>1597016 Гуглится только абстрактный щиттолк, а лезть в исходники буста мне лень, да и вникать там муторно. А мне нужен лишь список правильных винапи и спецификация.
>>1597458 У меня есть 3 директории: в одной лежат общие файлы из которых я делал .lib в VS, а в двух других Source.cpp с мейнами, пытался изменить мейкфайл с хабра и не вышло, говорит, что нет файлов
>>1597474 Мейк гонял давно, но по идее у тебя префикс только к первому имени приклеивается. И какой смысл зависимости цели servermake от, например, utilities.cpp?
Анончик, нужен твой совет. Хочу выкатиться из веба в системщину и прочее байтоебство. Вопрос в том, куда вкатываться. Есть плюсы и есть раст. Работы на первом больше, на втором вообще ничего не видно(по крайней мере в России). Но слышал, что со временем будет, но и набирать они скорее всего будут бывших крестовиков. Даже читал блог, крутого разраба из гугла, где он не советовал писать новый код на плюсах. Поэтому немного в сомнении. Насколько сейчас перспективно вкатываться именно в плюсы?
>>1597474 Аноны с линуксом, может кто помочь скомпилить код? У меня по заданию должно собираться на линуксе, я конечно дефайнил всякие вещи для совместимости, но проверить нужно, а виртуалку сейчас накатывать заебусь - очень слабый ноут
>>1597508 >Даже читал блог, крутого разраба из гугла, где он не советовал писать новый код на плюсах. Без описания цели разработки, это вообще ни о чем. Ну а дрочить на лычки в 21-м веке тем более моветон.
>>1597534 >Без описания цели разработки, это вообще ни о чем. Как я понял, речь шла вообще о любом новом проекте за парой исключений. Не хочу спорить на эту тему, просто насторожил его пост. https://cliffle.com/blog/prefer-rust/ сама статья, если интересно
>>1597540 >Prefer Rust to C/C++ for new code >inside the firmware community Ясно. Он может нахуй пройти. Я у себя в компании Rust отсеял уже на уровне хакатона. То есть мы хотели во время хакатона проверить соответствие Раста на уровне какого-нибудь близкого к железу POC, и уже на этом этапе быстро стало ясно, насколько он неадекватен для таких задач. Ни библиотек нет, нихуя. Наху пусть идет этот фанбой.
Помидоры на месте? Дано: struct A { using MyTypes = std::tuple<int, char>; } struct C : A {}
Нужно внутри C определить MyTypes, который был бы конкатенацией двух std::tuple. Если бы у меня был буст и вместо tuple был mpl::list<>, то я бы это через mpl::joint_view написал. А с tuple хз как. struct C : A { using MyTypes = /std::tuple<int, char, long, Person>/; }
Можно попробовать через tuple_cat, но что-то мне не очень нравится количество decltype и declval.
>>1597650 Ну а хули ты всё в последний день делаешь? Я тебе сразу говорил, сгенерируй. Загугли утилиту вроде vcxproj to makefile или напиши cmakelists.txt и перегони в makefile (хотя тебе походу cmake и нужен, лол)
>>1597656 Я делаю это почти неделю уже, сокеты не знал абсолютно. По заданию мейкфайл надо именно написать, а не сгенерировать, и я гуглил, такие есть, но но на старые версии VS
>>1576737 (OP) Анчоус, есть книга С++ для чайников, Стефан Р. Девис 2007 года, нормально, просто в свое время поккупал печатное издание, с тех пор и лежит
>>1598254 Я сам нихуя не понимаю из всех обьяснений.
Т.е. на уровне "ЭТО ФУНКЦИЯ, КОТОРАЯ ИМЕЕТ СТЕЙТ И МОЖЕТ ВОЗВРАЩАТЬ НЕСКОЛЬКО РАЗ" - я понимаю. Уебищные примеры с питоном и его генераторами - я понимаю.
Он когда начинается co_await - все, выносите меня ногами вперед. Но да, я еще сильно не раскуривал эту тему, а надо...
Аноны, как реализован substr? Я вот тут делал и ничего умнее не придумал как выделить строку и просто перекопировать элементы. Может есть способы как весь участок памяти скопировать?
>>1598261 У Таненбаума в "архитектуре компьютера" очень компактное и доступное объяснение с картинками для даунов, только там корутины называются сопрограммами.
>>1598292 Я перефразирую свой высер. Я понимаю, что такое "просто корутина, yield, и тд". Я не понимаю, как к этому относится co_await, и где там какая-то волшебная кооперативная многозадачность.
Надо на C++ Russia сходить, там Гор Нишанов заяснит.
>>1598261 Насколько я понял корутины асинхроны, но выполняются на одном треде. И если ты вызываешь внутри корутины другую корутину, то тебе нужно использовать co_await, чтобы подождать пока она вернет что-нибудь.
>>1598332 Я вызываю функцию внутри другой функции, и жду пока функция вернет чето. Чем это отличается от co_await? И причем, блядь, тут корутины, учитывая что это лишь функция со стейтом.
>>1598306 Копирование элементов - это стандартный процессорный mov(и его деривативы, типа movq) - фактически. Положил кусочек строки в регистр из памяти. Потом из этого регистра положил в другой кусочек памяти.
В случае строк - ты можешь копировать от 1 байта за такт до 64 (при каком-нибудь адовом AVX512.
>>1598352 Регистр? Я думаю что контролер умеет копировать данные без этого. Операция явно распространенная и засирать кэш и занимать регистры нет практической надобности
Анонче, тут немного упоротый вопрос. Кто-нибудь курил Android NDK? Нужно по работе пилить приложение для ведра, а, значит, осваивать котлин. Но уже есть знания плюсов, получится ли полностью на этом NDK бахнуть приложение или там урезанный функционал плюсов и/или старый стандарт? Где-то я нашел инфу, что на c++ можно только требующие скорости места писать, хотя Android Studio предлагает сделать проект только на них.
>>1598369 Смотри что нашел >Как вы правильно указали, DMA_MEMCPY следует использовать для выполнения копирования RAM-to-RAM. Это описано в Documentation/dmaengine/provider.txt . Вот только соответствующий отрывок, пожалуйста, смотрите весь файл для получения более подробной информации:
>>1598352 Корутина - это функция, которую можно ставить на паузу. Ко- в том плане, что две таких корутины могут работать одновременно. Одна поработала, недоделала, вторая поработала, недоделала, вернулась в первую, первая доделала, вернулась во вторую, доделала.
>>1599121 То есть когда одни русские люди пишут комментарии для других русских людей в проекте, который уж точно никогда не покинет рашку, на ломаном и одним им понятном английском - это нормально?
• https://github.com/sosachbot/cppthreadhat/wiki
Ответы на вопросы:
• https://en.cppreference.com/w/
• https://www.cplusplus.com/reference/
Прошлый тред:
•