Вместо шапки:• https://github.com/sosachbot/cppthreadhat/wikiОтветы на вопросы:• https://en.cppreference.com/w/• https://www.cplusplus.com/reference/Прошлый тред:• >>1552778 (OP)
https://www.meetup.com/ru-RU/Moscow-C-User-Groups/events/267873544/И сразу бампану митапчиком в Align Technology в ДС
>>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 шутер можно переделать в стратегию со строительством и сложными иерархиями объектов или в гонки с видом сверху не сильно модифицируя логику пространства. А из платформера ничего особо большего чем платформер не сделаешь.
>>1576861Он не сможет написать игру без знания паттернов.>>1576854Либу напиши какую-нибудь, логгер например. Свой аллокатор со свистелками и перделками. Вот в таком духе таски выбирай.
>>1576945>А из платформера ничего особо большего чем платформер не сделаешь.Нелинейный платформер с процедурной генерацией уровней и динамической сложностью врагов, например, мне кажется очень хорошим вариантом, особенно для начала.
>>1576947Ему не нужны паттерны. И паттерны не требуют отдельного изучения - часть из них интуитивно очевидная и он напишет их сам собой, другая часть - костыли, которые нужно чтобы притянуть ооп или ещё что-то туда, где оно не нужно и лишь усложняет код. Вдвойне бесполезная штука, если он пишет код один, а не с кем-то, где нужно понимать друг-друга и говорить на общем языке.Прочитать книжку про паттерны и взять-опробовать нужные можно за несколько часов.Ему и не нужно написать игру - ему нужно её пописать, чтобы попробовать что-то новое и научиться чему-то.>>1577109Я просто хейтер платформеров.
вопрос чиста теоретический. если я в крестах выделяю память под какой нибудь массив примитивного типа через new[], могу ли я, передав указатель и размер массива в шарп например крестовая функция в .dll через pinvoke возвращает структуру с этими данными, в шарпе вызвать через pinvoke VirtualFree на полученный указатель? Или что нибудь наебнется и распидорасится?
>>1577143Оператор new не обязан на каждый твой чих вызывать VirtualAlloc. Он может делать вообще все, что считает нужным, пока это конфермит стандарту. Соответственно - UB
>>1577132Удваиваю насчет паттернов. Написать какую-нибудь фабрику можно и без знания, что такое фабрика. Ты её в любом случае напишешь, когда тебе надо будет создавать нужный тип монстра в зависимости от того, какая строка написана в конфиге уровня. Ты просто не будешь знать, что она так называется.
Сап, кто может пояснить почему эта хуйня отказывается компилится? Я понимаю, что нельзя underlying_type использовать не на енумы, но там же блять стоит if constexpr, т.е. не емуны туда вообще не могут попасть и компилятор тупо должен пропустить этот кусок кода.Мне эта хуйня нужна для генерации метаданных, все это будет завернуто в макрос
>>1577819>Сап, кто может пояснить почему эта хуйня отказывается компилится?[temp.res]/8, 100 раз обсасывали на SOThe 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>заблокировано за размещение материалов, оправдывающих совершение суицидаКто-то туда закинул стандарт плюсов?
>>1579699блядь, не то спастил, но суть та же помогите, пожалуйста, с задачкой по плюсам. буду очень благодарен. Завтра сдавать надо, не понимаю как сделать + не успеваю Задан массив структур «Покупатель» (фамилия покупателя;имя; номер карты; наименование товара; стоимость покупки).Вывести на экран сведения о покупателях и суммарнойстоимости покупок в порядке возрастания суммы.буду очень признателен, аноны
Короче, платина.Насколько сильно нужно углубляться в кресты, чтобы смочь в UE4? с детства мечтал делать игори, но сделал только танчики на pygame :(Я не полный нюфаг, сейчас работают бэкэнд макакой на пистоне. В вебе чувствую себя комфортно, но дико боюсь крестов, потому что есть явные пробелы в CS.Нужны ли какие входные данные, или тупым не дано? Может SICP какой прочитать еще раз попробовать? Или уже неактуально? Может какие то конкретные области математики подтянуть? Есть тут увлекающиеся этим дерьмом? В /gd/ не отправляйте плз, там шиз на шизе.
>>1580165Открою тебе тайну - тебе С++ нахуй не нужен. Почти все можно нашлепать на блюпринтах. Современные игры как бы вообще к программированию мало отношения имеют, если делать на готовом движке.Сам пилил по работе небольшую демку на UE4, обошелся только блюпринтами, все мои сениорские крестоскиллы не пригодились вообще.
>>1579986Угу, спрашивай сколько угодно такие вопросы, тред же именно для них и предназначен. Удачи тебе разобраться в этом :3https://ideone.com/g2t3Nd>Вывести на экран сведения о покупателях и суммарнойстоимости покупок в порядке возрастания суммы.Может быть в порядке возрастания стоимостей покупки? Не очень понятное условие. Ну, там два варианта, надеюсь тебе нужен второй.
>>1580327Влом проверять, но скорее всего boost::asio::io_context не копируемый. А std::thread копирует аргументы.
Анон, хочу в качестве параметра шаблона передать 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 соответствие имени-карточки и стоимости покупок - добавляю новое имя или (если такое имя-карточка уже есть) то добавляю к суммарной стоимости покупок стоимость этой.
>>1579630Он может проверять исходник и добавлять заголовки классов и прочего, если нужно, или удаляет их, если они лишние.
>>1580809Добавлять автоматом умеет решарпер под студией, про убирать не уверен, наверное только выделяет что не используется.
class Matrix{publuc:friend Matrix loadFromFile (std::fstream &file);};Matrix loadFromFile (std::fstream &file){//...}int main{std::fstream inpBin("inpBin", std::ios::binary);std::fstream inpTxt("inpTxt");Matrix bin = loadFromFile(inpBin);Matrix txt = loadFromFile(inpTxt);//...}error: ‘loadFromFile’ was not declared in this scope Matrix bin = loadFromFile(inpBin);Я вообще не подрубаю, в чём проблема, причём он тригеррится только на первом вызове loadFromFile. g++
Сап, программисты. Поясните за физическое представление файла. Если все файлы это последовательность 0 и 1, то я могу создать программу, которая выдает все возможные последовательности, состоящие из 0 и 1 (да, я знаю, что это как с числами Фиббоначи, даже все последовательности из 64 битов будут генерироваться очень долго, но мы идеализируем), то будут ли среди этих файлов существующие? Т.е можно ли перебором сгенерировать песню Фейса, или картину звездная ночь, к примеру?
>>1580948>>1580950>>1580951>>1580953Спасибо за ответы, не давало покоя эта мысльНаверное, в результате таких генерации немало криповых файлов может быть создано
>>1581063Почему именно size_t и почему именно по значению? Ссылку я использую, чтобы не выделять память под unsigned long при вызове функции, unsigned long чтобы наверняка не выйти за пределы инта, не вижу проблем в этих решениях.
>>1581135Ты дурак, только честно? 1 курс прогуливал? Ссылка бесплатная у тебя? Она тоже память кушает, если что. Зато строку по значению передал, молодец. Садись, два.
>>1581135>чтобы не выделять память под unsigned long при вызове функцииА какой размер у указателя, которым будет представляться ссылка? Какова потеря скорости из-за обращения к памяти (пусть даже к L1) вместо регистра? Ты смотрел как микроопы на порты скедьюлятся?
>>1581135https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%B3%D0%BB%D0%B0%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D0%B5#cdeclСсылка - довольно дорогая операция разыменовывания (а ещё она занимает по меньшей мере 8 байт, когда unsigned long всего 4). Передача по значению - у тебя просто через регистр без каких-либо выделений и даже обращений к памяти пробрасывается значение.
>>1581178Все гораздо проще, если объект превышает размер регистра, то он должен передаваться по ссылке.
>>1581140>>1581141>>1581176Ясно, спасибоА что, собственно, по error: ‘loadFromFile’ was not declared in this scope?
>>1581327Хз, мне например глаза режет, когда метод не помещается на экран 120 символов из-за const для примитивных типов.
Лол, да const писать в простом коде это вообще какая-то лажа. Конст, с учётом того, как он работает в js, вообще не нужен.
Или вы не про js? В любом случае, мне сложно припомнить оправданное использование const где бы то ни было. Это слово больше сигнал для разраба, мол, тут у нас хранится какое-то значение, неизменное и пользуемое акросс всего приложения.
>>1581387Много времени на расстановку констов, много времени на поддержку, чтобы теперь везде так было, даже на небе и даже у аллаха.
Перегрузил std::ostream& operator<< (std::ostream& out, Matrix &matrix)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;то всё окMatrix Matrix::transpose ();gcc ёбнулся или я?
>>1581531Могу быть не прав год не кодил на плюсах, но у тебя оператор ссылку на матрицу принимает, а ты пытаешься ему саму матрицу скормить, может по этому ругается.
>>1581536У меня появилось предположение, что это потому что объект, возвразённый transpose(), не пожет быть преобразован в ссылку, потому что никуда не сохранён или что-то типа того. Походу, придётся реал сделать второй аргумент без ссылки
>>1581552Если объект существует и доступен для кода - то у него есть ссылка. Попробуй так &(sample1.transpose()).
Просто transpose() возвращает по значению, а не по ссылке. Можешь свою функцию/метрд замутить, которая будет принимать матрицу и возвращать ссылку на результат уже с transpose() если не хочешь захламлять кол объявлениями переменных.
>>1581638MatrixТак - https://stackoverflow.com/questions/81870/is-it-possible-to-print-a-variables-type-in-standard-c
Анон, очень важный вопрос. Хочу в программу добавить векторизируемые участки, и два пути:1. Использовать openmp, но он не из стандарта нихуя2. Использовать c++17, но это будет единственная фича 17, сейчас все на 11 и потенциальна миграция библиотеки на хуевый компилятор на Эльбрус.Как быть, анон? Совершенно не хочется городить чехарду из #ifndef и условной компиляцией
Не понимаю такой момент. Мне приходится часто делать парсинг байт ориентированных массивов. Самый топовый способ на си - описать структурку и прикастовать через void*. Прекрасно и быстро, все довольны.А в реалиях крестов начинается параша - структуры приходится выравнивать через #pragma pack(push, 1), чтобы в памяти были выровнены по байту, причем что-то стандартное типа alignas(1) работать не будет, так как он только на повышение порядка. Почему так нахуй? Как удобно парсить сериализованное говно? Переписывать оператор << заебисто просто пиздец
>>1581990struct P { uint8_t a; int32_t b;};#pragma pack(push, 1)struct PA { uint8_t a; int32_t b;};#pragma pack(pop)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>структуры приходится выравнивать через #pragma pack(push, 1), чтобы в памяти были выровнены по байтуСтоп, но в сях же то же самое
>>1581945А, я еще видел код наших железячников-сишников, они тоже распаковывают входные массивы данных тоже каким то подобием объектов из смеси struct ов и указателей, которые создают в динамике.>>1582043 й
>>1582044>нужно ли писать директиву #pragma pack в СиНу, она работает - с ней размер 5 байт, без неё размер 8 байт. Никаким других очевидных способов без директив сделать структуру на 5 байт с переменной с 4-байтовым выравниванием я не нашёл.>reinterp_cast Можно и в с++ же не писать оставив сишное преобразование.
Ананасы, есть ли в гцц предупреждение о том, что при наследовании я явно не написал public\private\protected?
Нетривиальный вопрос. Начал писать обертки для managed языков над нативными либами. И столкнулся с одной проблемой. Если в винде все с зависимостями решаются установкой необходимой версии Visual C++. То под линухом идет зависимость от libstdc++ и libcxxabi и libc, версий которых сотни. При этом версии совместимости ABI переваливает за два десятка. Хотелось бы решение без sudo apt get install для разработчиков, которые юзают конечную библиотеку. Есть ли вариант хранить все зависисимости в одной директории и грузить их вручную dlopen с относительным путем и флагом RTLD_GLOBAL? Не рушиться ли в этом случае совместимость этих библиотек с версией ядра Linux?
>>1582475> Есть ли вариант хранить все зависисимости в одной директории и грузить их вручнуюТак даже на винде делают.
>>1582475контейнеризируй енвайромент, будь мужиком.какие нахуй директории?госполдь дал вам fedora silverblue, но нет, хотим ебаться
>>1583032Немножко костыльно, но можно.https://github.com/Microsoft/vcpkg/issues/1681#issuecomment-324160402А вообще, нехуй использовать древние версии либ.
Присутствует ли каким-то образом в крестах 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> экранирует звёздочку.
>>1583074realloc'а не существует. Ты можешь попробовать написать свой аллокатор через placement new там, но в среднем это нахер не сдалось.
Сосоны, поясните почему конструктор строки из const char* быстрее чем из const string&, да еще и почти в три раза?http://quick-bench.com/G7B2w0xPUWgOVvuzI7unES6cU4w
>>1583327потому-что у тебя одно создание строки и одно удаление в варианте const char*А в варианте строк - 2 создания и 2 удаления.
>>1583342Схуяле одно, если там цикл. Пишут, оно меряет только код внутри цикла, а там в обоих случаях одно создание.Можно для чистоты и в первую фукцию запилить:http://quick-bench.com/05VIGmMjuYgK52bNcYaWfvTDO0g
>>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.
>>1584402>>1584407У вас бугурт UB.Заюзай указатели на поле. Хоть для чего-то они пригодились.http://cpp.sh/6wxyd
>>1584425я несколько проебался, можно и без шаблонов:int sum_member(vector<test> const& v, int test::* p)
>>1584301сначала суммы а, потом суммы б... считать нужно один раз, потом массив меняется.>>1584402>>1584425спасибо, то что и искал.
Анон, хочу к своей проге написанной на С++ прикрутить скриптовый язык JavaScript (в идеале TypeScript, но JS тоже пойдет), чтобы скрипты писать.поискал... и не нашел, хотя уже видел полноценный софт с JS скриптами (нет, не с помощью node.js)Может кто-то видели бинд JS для C++?Надо полноценный, строго соблюдающий стандарт, а не типа JS (как ChaiScript)
>>1584477есть возможность встроить v8 но это будет то еще развлечение, скорей всеготот же луа или питон легче встроитьне говоря уж о забытых технологиях наших более продвинутых предков из майкрософт, а именно active scripting на com
>>1584280std::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Весь код выложен на гитхабе, могу скинуть, если нужно, там говнокод, я ещё учусь. Студент-кун
>>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 вызывается каждую итерацию.
Ньюфаг в треде!Подскажите как подружить VS 2019 с русским языком?#include <locale.h>и после main(){ setlocale(LC_ALL,"RUS");пробовал, как и замена кодировки самого файла.
>>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.
>>1586055Это действительно древнее говно, сейчас С++ выглядит вообще не так как 20 лет назад, эта книга может быть даже вредной
>>1586319уже не лучше.Насосался хуев короче, создал set "ребро" из двух точек, написав хеш-функцию для точки, пытаюсь insert его в set всех ребер, компилятор выдает всякие простыни, что он не умеет сравнивать такое. Проще уже свой set написать, который не выебывается.
>>1586189Да, я не заметил где ты её используешь. Тогда непонятно зачем ты не присваеваешь прямо в ресайзе.
>>1586332>написав хеш-функцию для точки, Зачем? Кидаешь в std::pair, операции сравнения автоматом генерятся.
>>1586578Ващет изменился, хотя кресты однозначно стали одновременно более простыми местами, местами бля пиздец нахуй как это вообще работает. За это мы их и любим=)
Сап, двач, почему этот код, когда я иду по циклу и дохожу x2 до 0, вызывает аварийное завершение?Если я вызываю не в цикле, а просто подставив значение, то все нормально, проблема в этих циклах, но я не понимаю, в чем может быть проблема
>>1586687>просто подставив значение, то все нормальноА то ли значение ты подставляешь? Подставь вот это -2.03e-15 (или что у тебя там получается) и проверь падает ли с ним.Если к -10 прибавлять по 0.2, то ты получаешь не ровно 0 из-за особенностей плавающей запятой. Стандартная же ошибка, у меня даже собаки во дворе про неё знают.
>>1586312а седьмое положение логико-философского трактата витгенштейна:О чём невозможно говорить, о том следует молчать.
>>1586698Пофиксить? В этом нет ошибки. 2e-15 - это ноль. Если у тебя такая функция, которая при 0 выдаёт один результат, а при 2e-15 другой, то проблема скорее в функции.Если ты напишешь -10+0.2*i, где i целочисленное, то будет лучше, потому что ты складываешь большое число с большим. Наибольшая ошибка, когда ты складываешь числа разные по порядку, что-то вроде 10000+0.01.Ещё лучше будет, если цикл будет целочисленный (i=-50 .. +50), а x=i/5.0 на каждой итерации, тогда вообще не будет проблем от сложения плавающих запятых.
>>1586708У меня в функции что-то типо парсера, я не учел, что может число может быть передано в таком видеМожет, можно как-нибудь избежать передачу числа с мантиссотой?Переделывать парсер желания нет
У меня есть вектор из моих классов, при количестве больше 20 тыщ он перестает выдавать свой size. В чем проблема может быть?
>>1586897Код примерно такой:vector<Object> MyVector;for (...<20000)MyVector.pushback(...)далее из-за этой строчки segfault:int MyArray[MyVector.size()];
>>1586903>MyVector.size()Ничего, что элементы считаются от нуля и последний элемент - MyVector.size()-1 ? Конечно сегфолт.
>>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Прибыльность зависит от конторы, а не от области. Оверолл - финтех всегда платит. Нвидия платит, чем бы ты не занимался. Яндекс вроде как платит в последнее, а требует вообще только алгоритмы.Но я бы не рекомендовал вкатываться в С++ на данный момент. Веб обезьянничать сильно проще, да и денег выше, рынок поживее.
>>1587402Я уже вкатился, просто недоволен своей зарплатой в сравнении со знакомыми, которые пишут на питоне и жс.
>>1587404Если ты вкатился - тогда смотри на вакансии нвидии, сбербанка (он платит, но специфика), Дойчебанка, ну и хз даже, что еще посоветовать. Жидбрейнс какой-нить хайрить крестовиков на шлион.И вот задрачивай их требования
>>1587400>1. Большинство охуевает от сложности плюсов и забивает на программирование вообщена самом деле можно не учить все плюсы, видел код энтерпрайзного матмоделирования, так там будто на чистом си писалось
>>1587417Я вообще читал несколько историй, где на конкретных проектах заранее договариваются, какие фичи плюсов вообще использовать не будут из-за сложности. Вот только в разных проектах такие соглашения разные, и волей-неволей приходится учить всё.
>>1587427единственные ограничения на разных работах, которые я видел - это ограничение по стандарту, и запрет на буст. ВсеНвидияблядь
>>1587442Как это поможет? Приходишь ты такой и говоришь "я знаю алгоритм Кнута-Морриса-Пратта", и все такие "ебааать, пойдешь к нам на 300к?"
>>1587448Знание этой хуйни поможет стать лучше в плане кодинга, лучшие кодеры получают больше. Вроде очевидная хуйня, не? Кроме ещё более очевидной, что зарплата растет при переходе в другую контору (или на более высокую должность) относительно текущей зарплаты. То есть надо просто устраиваться на более высокооплачиваемую работу и делать это каждый год. Потом можно а америку съебнуть и там повторить. Ну и понятно, что с чего то нужно начать, но я так понял ты уже в пути.Ну а вообще нехуй меня слушать, я два часа назад решил в кресты вкатиться и пришел за этим сюда. Только откомпилил свой первый хелоу ворлд.
>>1587432Чем буст не угодил? Алсо, че в нвидии происходит, какая работа? Мне пиздец интересна математика, и я хорошо шарю в железе, был бы смысл мне туда идти?
>>1587461Ну ты же знаешь, что шаблоны это тьюринг-полный язык, а значит позволяют добиться сколь угодно долгой компиляции. А теперь вспомним, из чего состоит весь буст.
>>1587456На крестах работу хер поменяешь. Язык один, но предметные области и задачи сильно отличаются между конторами. Это не джава, где можно бегать из одного места в другое каждые полгода, потому что везде нужен спринг и делать надо одно и то же.
>>1587465Вроде как прекомпилед хедеры позволяют сильно ускорить компиляцию. Да и АSIO хорош, я хз как без него с сетью работать
>>1587484Область фиг сменишь. Если телеком, например, то придется либо искать следующую работу в телекоме, либо переучиваться и искать младшие позиции. Мобильность ограничена, не получится побегать между работами, набивая себе цену.
>>1587461> Чем буст не угодил?Есть нюансы в связи с внутренними процессами и сборкой.> был бы смысл мне туда идти?Идти точно есть смысл - это лучшее место работы в ДС. А скиллы в железе\математике - зависит от команды. Мне, например, знание ИГРУЛЕК сильно помогает в работе, рофл.> Алсо, че в нвидии происходит, какая работа?Зависит от команды очень сильно.
Кто-нибудь писал нейросети на плюсах? Как это вообще происходит, с помощью каких-то библиотек или все с нуля делается?
Можно ли как-нибудь в Qt проверить, используется ли файл другим процессом/программой/etc?Пробовал менять имя файла на тоже самое, всегда false выдаёт и это не позволяет детектитьМожет, есть ещё какие-нибудь способы?
>>1587580Tensorflow же. Обычно те либы, что есть на питоне, имеют реализацию или очень хорошую основу на крестах. Из-за скорости.
>>1587390>а в реальности ебущая байты на си с классамиЭто, кстати, не такой плохой вариант. Хуже работать с проектом, в котором, например, три разных вида умных указателей (стд, самописный, навелосипженный до С++11, и из сторонней либы) или какая-нибудь ебанистическая шаблонная магия, весь код в хидерах, и на каждый чих требуется полная пересборка минут на пять.
>>1587810Да хуевый это вариант, надо всегда развиваться программистам. Си с классами явно отдает хреновым общим опытом разработки
>>1587834>Си с классами явно отдает хреновым общим опытом разработки Иногда - наоборот. Люди с опытом пишут простой и понятный код без большого количества абстракций.
>>1587834Тут нужен баланс. Си с классами - это не очень хорошо, но и ехал AbstractFactoryProxyBeanFactory - это тоже оверкилл.Мне в последнее время нравится идея небольших классов без наследований, и дальше - ну, почти процедурный код.
>>1587390Ну почему, чистый код на сишечке очень хорошо читается и аккуратно выглядит. Другое дело, что разбухает он действительно быстро.
Ананасы, можете посоветовать книги по Qt QML Шлее не предлагать или в целом годные книги про построение интерфейсов которые GUI. В целом мне интересно, как лучше разделять gui и "ядро", чтобы при каких-то пиздецовых операциях гуи не лагало. И как организовывать гуи, чтобы с минимальными трудозатратами адаптировать его к разным устройствам (телефоны, пк)
>>1588219> как организовывать гуи, чтобы с минимальными трудозатратами адаптировать его к разным устройствам (телефоны, пк)А никак блядь.
>>1588219> с минимальными трудозатратами адаптировать его к разным устройствам (телефоны, пк)Веб. Единственный реалистичный вариант.
>>1588254Он уже прочитан. Не понравился. Больше понравился М. Саммерфилд>>1588302>>1588313Что-то не нравятся мне ваши предложения...
>>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> понимание, что надо что-то в жизни менять.>либо работать в мухосранске говном из жопы, когда тебя ненавидит начальство, либо все таки ебашить в надежде на светлое будущее и перекат в какую-нить классную компанию.Вот я пока на этом этапе,лол)
>>1588957Ты вполне можешь повторить мой путь, он реален, как видишь. Правда, буду честен, второй раз я этот ебучий подвиг под названием "Ебучее задротство 24х7" уже не повторил бы.
http://cppquiz.org/quiz/question/226схуяле у Y нет дефолтного Y(&&Y)? он же генерится автоматически и явно не удален
>>1589019Потому что дефолт хуйня всё ещё user defined, а значит конпелятор не будет генерировать никаких лишних конструкторов
>>1589022То есть правильный ответ - undefined behavior?Да не может быть такого чтобы не было четкого ответа какой конструктор будет вызываться - явно дефолтный или просто дефолтный
>>1589019>он же генерится автоматически Пока ты не определил хотя бы одного из большой шестерки афаик
>>1589024То и смутило> but since Y has no move constructor, its copy constructor is called.Ответ есть в целом, но не на мой вопрос>>1589043Можно линк на афаик, было бы бесценно
>>1589138Declaring 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Тестирование. Обновление библиотек. Рефакторинг того пердолинга, которого за nn лет набралось порядком.
>>1589466хуй знает, но если есть выстреливший продукт с набранной клиентской базы, то я бы кодовую базу вообще ни на новые компиляторы и стандарты не переводил, ни, боже упаси, не занимался бы написанием типа новой охуенной платформы с нуля которая заменит старую сосредоточился бы на исправлении ошибок и добавлении функционалано это такие маняфантазии о том если бы у тебя был собственный продукт
>>1589491В джаве наоборот: ты либо вынужден постоянно переписывать легаси, либо платить за право использовать старые версии.
>>1589517Да хуй его знает, я так до конца и не понял. Есть какие-то запланированные сроки окончания поддержки версий жабы, после которых либо обновляешься до новой, либо платишь за старую. Но это только оракле ждк, в других сборках может быть бесплатно, но нет поддержки от оракла.
>>1589411На всех моих работах было одно и то же.Есть некий продукт, в котором есть баги и таски. Тебя обычно садят что-нибудь почитать, и потыркать, чтобы ваще понять, что за продукт, как его собирать, где лежат сорцы и тд.Потом, обычно, дают простенькие баги, это те, которые с наименьшим приоритетом, чтобы ты стабильно научился проходить некие конторские процессы, типа Мердж реквест - Ревью - Прогон CI\CD - Коммит.Ну а дальше потихоньку вктаываешься в рутину разработки и все.Не надо переживать, что тебя с нуля посадят писать что-то сложное, или что на тебя все будут класть хуй там. Тебе в среднем все будут помогать и слушать.Если сильно хочешь проверить свои знания - пиши на jordanrudess@yandex.ru с пруфом того, что это твой пост - я тебя фейкоотсобесю на джуна и скажу, где ты проебываешься.
>>1589567Ты только того анона будешь фейкособесать?Я сам хочу как-то уровень знаний плюсов узнать, но они у меня только самоприобретенные, работаю не плюсовиком.
>>1589458Там ниасилили бы его, слишком дохера студентов, для которых шаблоны сродни магии, а основной костяк - уже застаревшие типы лет 45-50, которым это нафиг не надо и проще написать 100500 функций, которые будут принимать "бесконечное" количество аргументов, чем заморачиваться с variadic templates. Ну одним словом пиздец, прогресс там остановился в 90х>>1589466Что-то где-то может неожиданно отвалиться, после этого надо с нуля тестировать всё приложение.А во вторых, команда должна понимать, что происходит в проекте. У нас там половина не знала, что такое move semantic и с трудом читала код на шаблонах, который ничем особо сложным не выделялся ну студенты далеко не самого тового вуза, работающие за двадцадку, что с них требовать то? Что-то поправить могут, не сломав при этом ничего, и заебись>>1589485Продукты обычно развиваются. Как развиваются и программисты, которые их пишут. Вечно на С99 никто писать не будет, молодые прогеры, которым нравятся плюсы, туда не пойдут, а старые рано или поздно уйдут например я ушёл как раз из-за отсутствия развития>сосредоточился бы на исправлении ошибок и добавлении функционалаТак вот с новыми стандартами часть работы можно делать быстрее, чише и безопасней. Стагнация в нашей сфере = смертьИМХО
>>1589625> ну студенты далеко не самого тового вуза, работающие за двадцадку, что с них требовать то? Что-то поправить могут, не сломав при этом ничего, и заебисьТе, кто писали приложение изначально по идее более опытные программисты, верно? Но у них все равно остаются ошибки?
>>1589622Есть разница между челиком, который задрачивает и пытается вкатиться и праздным любопытством.
>>1589653Да, там основной костяк состоял да и состоит из двух прогеров, которые там сидят с самого начала основания компании. Ребята норм, но без какого либо желания развиваться дальше. Си с классами их более чем устраивает.А ошибки есть у всех. А ещё куча ошибок появляется после того, как приложение попадает в реальный мир. Там всегда возникает чувство, что тестеры нихерна не тестировали ну если это не под какое-то определённое устройство делалось, которое у всех одинаковое
>>1589671Ясно. Просто интересно про процесс разработки узнать, просто странно когда исправлять ошибки назначают менее опытных сотрудников. Мне кажется в других сферах обычно наоборот происходит.
>>1589671> Там всегда возникает чувство, что тестеры нихерна не тестировалиНу а хули, повезло что тестировщики вообще есть, ибо если программисты - это студенты за 20к, то тестировщики скорее всего просто бомжи с улицы.
>>1589746Нет, это студенты, которые тоже учились и учатся на программистов, но не осилили программирование
>>1589674> исправлять ошибки назначают менее опытных сотрудников.Дописывать проект будут мене опытные сотрудники когда синьер уже съебал в галеру пожирнее и чтоб не изговняться продакшеном
>>1589659Принял. Логично, я тоже хочу в плюсы, но пока просто изучаю, а не ищу работу.Только не принимай пруф из дашчана, там любой пост можно своим пометить.
>>1589932У нас синьеры работают по двадцать лет над одной хуйней, как раз с момента конца студенчества.
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 (или что-то подобное) с нужными для выполнения функциями. Если у тебя постоянный (но динамический) набор функций для выполнения то создаешь просто вектор с такими биндами (или ссылками на функции например) и в треде пробегаешся по нему и засыпаешь на время. Потом повторяешь
>>1590015>Вообще не знаю как нормальные люди делаютИспользуют готовый движок, хотя бы в виде обертки вокруг директ икса и винапи.
>>1590020Как будто в готов движке оно каким-то магическим образом само-собой работает.Один хрен в 98% играх ввод с клаво-мышки привязан к рендеру, и в 90% игровая механика прибита гвоздями к рендеру.Но слипать поток с циклом обновления игры в любом случае не стоит, даже на 60 фпс скорее всего он уснёт больше чем на 16 мс. По крайне мере я никаким образом не смог добиться стабильного интервала между обновлениями, если поток с ними слипается.
>>1590024>98% играх ввод с клаво-мышки привязан к рендеру, и в 90% игровая механика прибита гвоздями к рендеру.Нет.
>>1590012Зачем там else, типа если кто-то спамит очередь сообщениями, пошел нахуй юзер, не до тебя сейчас?>Аноны, есть подобный код, хочу добавить сюда отдельный поток для GameController::Update(), как мне это сделать? Зачем? Пока видюха рендерит, основному потоку все равно нехуй делать. Если же ты хочешь заняться чем-то тяжелым, физикой какой-нибудь, которую на видюху нельзя либо влом, то именно это и нужно пихать в отдельный тред. Не надо наворачивать сложность там, где она не нужна.
>>1576737 (OP)Что здесь происходит?strBuilder.Append(word.Substring(0, width - 1) + "-");word = word.Substring(width - 1);С++ не знаю. Нужно для конвертации в другой язык.
>>1591024Ты щас смеешься?Ни дебаггера, ни компилятора, ни системы сборки, ни статического анализа, ни раннера юниттестов.Это так, блокнотик с подсветкой. А вижуал студия - полноценный профессиональный инструмент, лол.
>>1591057> Ни дебаггера, ни компилятора, ни системы сборки, ни статического анализа, ни раннера юниттестов.Ты щас смеешься? Ты щас смеешься? Ты щас смеешься? Ты щас смеешься? Ты щас смеешься?> Это так, блокнотик с подсветкой. Лол. Лол. Лол. Лол.пиздец миленниалы пошли
>>1591057> дебаггерgdb> компиляторТакие же как и везде - gcc и clang> система сборкиqmake, ninja, make, waf, scons, meson...> статический анализclang analyzer и semmle> раннер юниттестовgunit> вижуал студия - полноценный профессиональный инструментУж лучше бы профессиональные инструменты из неё упомянул. Их там есть немного.
>>1591079Какую аргументацию предлагаешь привести для школьника (>>1591072), который очевидно ни разу не пользовался CB? Хотя может просто ниасилил?
>>1591088И как, весь зоопарк тобой перечисленный относится к Code::blocks, и конкретно, самому определению IDE?
>>1591089Зачем пользоваться (и, о боги) осиливать заведомо инфериорный продукт? Если ты идейный хейтер всего майкрософтовского, то всегда есть CLion. Если у тебя аргумент "ТАРМАЗИТ" - то ты не зарабатываешь деньги программированием, и твое мнение априори не интересно. ЛАБА3 можно писать и в nano
>>1591068>code blocksНе умеет выводить подсказки (список полей и методов структуры) при использовании auto, decltype и сколько угодно простых шаблонов. Код компилируется, но в редакторе всё красным зачёркнуто-перечёркнуто, никаких полезных предупреждений от среды нельзя получить. В автоматическую установку отступов соответственно не умеет, если там вообще такое есть.Может быть и пофиксили что-то или это можно настроить, но у меня самые отвратительные впечатления остались (хуже только от визуал студии) - зачем это нужно, если в другой среде это всё без особых проблем работает?
>>1591146> Ну а зачем тогда высираться тут, если ниасилил?Сидит челик, обмазывается говном, и на все вопросы отвечает "АХАХА ТЫ НЕАСИЛИЛ ПРОСТО, НЕАСИЛЯТОР АХАХАХА", и продолжает обмазываться. Это выглядит примерно так.> Тогда и VS не IDE.Как раз - фактически это единственная IDE, ставишь только ее, у тебя сразу и редактор, и весь тулчейн, и редактор.
>>1590737Это на C# похоже.https://docs.microsoft.com/en-us/dotnet/api/system.string.substringhttps://docs.microsoft.com/en-us/dotnet/api/system.text.stringbuilder
>>1591387> и на все вопросыКакие вопросы? Там были лишь заведомо ложные утверждения.> Как раз - фактически это единственная IDE, ставишь только ее, у тебя сразу и редактор, и весь тулчейн, и редактор.В студии есть рабочие нагрузки, так что можно вполне себе поставить студию без компилятора.Тащемта CB, насколько я помню, тоже поставляется со всей этой хуетой.
>>1589977По моим наблюдениям, есть несколько человек, которые десятилетиями сидят и есть остальные, которые каждый год сменяются
>>1591890У меня в свежей студии после шаблонной мангии intelliSense глючит, порой вообще отказывается синтаксис светить. Хз что делать, наверное, буст его перегружает
>>1589466Может быть это неочевидно, но при смене стандарта, есть ломающие изменения, когда программа просто не соберется из-за изменившейся сигнатуры функции в стандартной библиотеке. Но, кроме этого, меняются некоторые правила, например, вывода типов в шаблонах. Из за чего может поменяться семантика некоторых выражений. То есть, ты или кто то еще пишет строчку, подразумевая одно поведение, а оно с разными флагами отличается. Сам я примеров не приведу, но вот тут - вызовется другая перегрузка функции https://stackoverflow.com/questions/6399615/what-breaking-changes-are-introduced-in-c11А вот тут содержимое объектов поменялось с уникального на одинаковое для всех https://stackoverflow.com/questions/5759232/stdvector-default-construction-c11-and-breaking-changes/5759296Вот еще разное поведение constexpr https://stackoverflow.com/questions/23980929/what-changes-introduced-in-c14-can-potentially-break-a-program-written-in-c1Так что кому то придется каким то образом просмотреть все строчки кода и используемых библиотек (или надеяться что все покрыто тестами)
>>1591978От жидбрейнс плагин установи для студии и попердоль оптимизацию, у меня вроде как перестало лагать, но время загрузки проекта увеличилось.
>>1592091Какого размера солюшн?у меня на 200 проектов загружается где-то минуту, если почистить кеш, то минуты три
Объясните пожалуйста дураку, как сделать...У меня есть класс Socket. Я хочу, чтобы когда он принимал соединение, он возвращал шейрд указатель на объект класса Connection, который бы сразу и конструировал из хэндла, полученного функцией WinSock. В свою очередь объект класса Connection содержит в себе Socket. Я пытался сделать через форвард декл., но не выходит. В Socket.cpp заинклюжен Socket.h, а в него Connection.h, что не дает мне заинклюдить Socket.h в Connection.h. Как такое делается?
>>1592123Нвидиа-кун, если это ты, я помню твой гайдлайн <3В планах, сейчас пока пилю этот чат как тестовое на джуна, и руки не доходят.
Поясните, как лучше написать. Есть такой набор строк:test[1] = function[1,2,3,a,b,c]; ...test[10] = function[4,3,6,e,f,g];была идея завести отдельную структуру для параметров функции и итерировать по ней.
>>1592110Деструктор нужен, если хранишь unique_ptr и хочешь forward declare.Деструктор в cpp разумеется.
Хочу вкатиться в Embedded на С/С++Есть опыт работы с Ардуинами также чуток Мплаб (ПИКи) и чуток Андроид. Большой опыт в промышленной автоматике и чуть меньше в электронике.Посоветуйте как вкатываться, что читать/ учить.
Сап, программисты. Вопрос по QProccess. По нажатию на кнопку, я запускаю скрипт python. Все работает нормально некоторое время, но потом Qt закрывает скрипт, не дождавшись его окончания. Скрипт для дефолтного вывода графика. В чем может быть проблема?Ошибка QProcess: Destroyed while process ("python3") is still running.Мой QProcess p.start("python3",{"draw3d"});p.waitForFinished();
Есть функция принимающая ссылку на вектор, как рекурсивно вызывать эту функцию? Надо например каждый раз тот же вектор обрезать с краев.
>>1593102>Надо например каждый раз тот же вектор обрезать с краев.Вектор так не умеет, вроде бы. Ты либо делаешь новый вектор (меняешь уже имеющийся) на каждой итерации, либо создаёшь свой тип / передаёшь итераторы.
>>1593133>Вектор так не умеет, вроде бы.eraseНо передавать изменяемый вектор по ссылке при рекурсии - сомнительное решение, это будет или куча багов или легко меняется на цикл.
>>1593596А что он у тебя должен делать, выводить столько символов переводов строки, сколько в введенном тексте? Очень полезно.std::cin.ignore();
Поясните когда следует добавлять const у метода класса? Допустим я пишу обертку над сишным FILE* да я знаю про fstream. У меня есть функция записи в файл, в которой я передаю указатель по значению в сишный fprintf. Компилятор позволяет мне объявить этот метод константным, сами поля класса при этом не изменятся, но поведение класса изменится. При следующей записи он уже будет писать в файл с другим смещением. Так вот следует ли в такой ситуации оставлять const?
>>1593607const в методах нужен (можно поставить), когда ты не изменяешь не-mutable поля класса, не вызываешь других не-const методов и всё в таком роде.Константный указатель не есть указатель на константу - если у тебя класс содержит указатели - можешь сколько угодно изменять значения на которые они указывают. FILE - простая структура, указатель на неё ничем не отличается от указателя на число. Ты не сможешь использовать fprintf, только потому что у него в объявлении нет const, но фактически сам указатель ты передаёшь по значению и у функции просто нет возможностей его (указатель) изменить (const в объявлении аргумента функции влияет только на возможности записи в этот аргумент внутри функции и существенный смысл имеет только вместе с ссылками). Ещё ты можешь поставить const_cast<FILE✲>(f1) вместо f1 если понимаешь что ты делаешь и зачем тебе это нужно, и тогда ты сможешь использовать fprintf вместе с const FILE✲.Ещё по большей части const нужен для людей, просто чтобы не ошибиться лишний раз, компилятору более-менее без разницы и если ты не записываешь значения в переменную он и так может провести оптимизацию во многих случаях.
>>1593632Ну вот тут например я по могу использовать fprintf в константном методе, передавая туда неконстантный указатель. Но в то же время я не могу использовать константный указатель т.к. fprintf принимает неконстантный.
>>1593682Ну так прикрути const_cast, если тебе нужен константный - в действительности указатель всё-равно не изменяется.
Поясните, есть два цикла выдающих инфу:AAAAAA BBBBBBBBКак попроще получить (без промежуточных хранилищ) из этогоABABABABABBBBB
>>1593819Есть есть заготовочка, где настроена обёртка вокруг winapi для создания окна, инициализации опенгля и вывода текста, то побью его (за 20 часов кодинга)!
>>1593819Но вообще совсем не впечатляет. У него десять текстур, статичные блоки и простой генератор мира. Интерфейса или ещё чего-то нет, показан только режим полёта (прыгать по кубам нельзя). Сделаю за три-пять часов плюс-минус такое. Могу с записью, если ты хочешь поспорить со мной.>>1593903Не знаю что это.
>>1593607Тоже задумывался над этим вопросом, когда писал свой враппер над FILE. Решил сделать read и write константными, просто потому, что сырой константный FILE тоже можно писать и читать. Получилось прикольно в том плане, что можно передать куда-то const File&, и это будет означать "можешь писать и читать, но не можешь закрыть и переоткрыть".Хотя потом оказалось, что такой подход плохо расширяется — захочешь вместо File передать другую читалку-писалку, а у неё read и write уже могут быть не константными.
>>1593607Константными можно делать методы вроде .size(), .readPos()Когда ты читаешь из файла, ты меняешь позицию указаетля чтения. Так что хотя технически метод чтения можно сделать константным, логически он меняет объект.
Аноны, я тут пытаюсь устроится на работу джуном C++ и мне с ходу выслали тз, сделать игру Pong без движков, + обязательно должен быть режим битвы против бота. К тому же назвали всё это очень простым тз. Я конечно кое-как сделаю скорее всего эту игру, но не слишком ли это большие требования для джуна? Если это простая задача, то что ждет меня дальше.
>>1593989Задача простая, но объемная. Ничего сложного, но придется потратить время, день-два. Хорошее задание, интересное.В принципе отрисовку можно сделать на GDI в виндоусе, и вообще все сделать тупо на Windows APIСделай, даже если тебя туда не возьмут, это хорошая практика.Постарайся в коде не сделать хуйню вроде текущих ресурсов (будь внимателен к исключениям) или битых ссылок.
>>1593992Я хотел сделать на DirectX(это же нельзя отнести к категории движков?), в любом случае собираюсь делать конечно, даже если не возьмут, получу хоть какой-то опыт.
>>1593994DirectX тоже пойдет, это не движок. Хотя это оверкил, тебе надо нарисовать 2 прямоугольника, линию и кружок. Почитай у Петцольда про GDI, у тебя реально всю отрисовку можно в 10-20 строчек уместить.
>>1593989Вообще расскажи подробнее, если не сложно. Я просто десять лет кодю, но никогда не работал, потому что хикка социофоб, но нужно как-то устраиваться. Твоё задание кажется очень простым, но когда я попробовал приходить на собеседование, меня спрашивали что я знаю, и я не мог ни про что сказать, что я что-то знаю, потому что в чём угодно есть много вещей и дополнительных функций, которые я не знаю - я честно так и отвечал, что имею какой-то опыт работы с тем-то, с этим, после чего меня благополучно посылали.
>>1593998Я тоже никогда ещё не работал, сейчас на 2 курсе учусь и просто разместил свое резюме и потом уже со мной связались, собеседования ещё не было, оно после выполнения тз.
>>1593995>>1593989Можно взять тот же imgui чисто для рисования, не думаю, что это могут посчитать готовым движком.
>>1593989Без движков? Без б, ебани в консоли ascii графикой.Я так "жизнь" сделал.Три совета для скорости печати: собирай в релизе, ставь в консоли курсор на левый верхний угол и печатай каждый раз один раз одно и то же количество символов(они будут перекрывать друг друга, быстрее, чем очищать вывод) и печатай сразу все, что есть для отрисовки, а не построчно.
>>1594021Могут и не посчитать, но сам факт сторонней либы может понизить "рейтинг", если у них несколько кандидатов.
Поясните за эту хуйню, почему я могу использовать функцию из неймспейса не указывая этот самый неймспейс просто потому что я в нее посылаю аргумент, тип которого объявляется в этом же неймспейсе? Это типо так и должно быть?
>>1594129В первой строке test-a ты (обосрал себе штаны) объявил новую функцию, а не вызвал существующую из zalupa
>>1593776бампую вопрос, т.к. до сих пор использую вектор в котором храню значения из первого цикла в нечетных местах, а значения из второго цикла в четных, а потом вывожу это в файл.
>>1594168Нахуя это вообще так сделали? А если у меня в глобальном неймспейсе функция с таким же названием, то какая из них вызовется?
>>1594217Делаешь один цикл, где на каждой итерации записываешь два значения, а когда одно из условий нарушается - выходишь из цикла и добиваешь всё оставшимися A или B в зависимости от нарушенного условия? Удобнее через while.
>>1593940Загуглил, давно читал, да, есть те кто может и кто не может. Не считаю это чем то плохим, я например рисовать не умею, а другие умеют.Хотя думаю с 2006 прошло много времени и умеет больший процент, тупо потому что больше пользуются электронной техникой.
>>1594233Чтобы не писать всю эту дриснюstd::operator<<(std::cout, "Hello, world").operator<<(std::endl);
>>1593905>Но вообще совсем не впечатляет.Он первым сделал демонстративный пример на крестах, все норм>У него десять текстур, статичные блоки и простой генератор мира.Больше всего он ебался с созданием окна и правильным отображением мира, только в конце уже можно было бы что-нибудь добавить>Сделаю за три-пять часов плюс-минус такое. Могу с записью, если ты хочешь поспорить со мной.На что споришь?
Не даёт покоя пикча, где типа совершенство использования c++ - использовать си. и линукс блядский на сишке Сука блять, с++ же силен либами и всяким ьаким говном. Я например использую Eigen и не представляю даже, сколько страшной ебли было бы на си. Или я ошибаюсь, и сишка совершенна?
>>1594496Не слушай сектантов плиз, с++ как раз и полезна тем, что много абстракций добавлено и либ спрограммировано.
>>1594496У С в 2020 году есть 2 юзкейса.1. Отсуствие компилятора С++ под твою платформу2. Экспозинг extern C интерфейсов для FFI других языков\компиляторов.Все, больше нахуй нигде не сдалось, не слушай луддитов.
>>1594506Иронично, что C++ предназначен быть полезным в куче юзкейсов, когда очевидно, что в еще большей куче он не подходит, то этот ИТТ петуховен так уверен в себе.
>>1594501Жаль что все либы с++ написаны в разном стиле и с разным интерфейсом, считай на 10-ке разных диалектов. Ну и на сях либ то наверное побольше.
>>1594533Жесткое ограничение на размер шеллкода, например.>>1594535Вообще нет ни одного кейса, где бы Java не подошла.
>>1594545> Жесткое ограничение на размер шеллкода, например.Ты вполне можешь получить такой же размер, как в си. Минус РТТИ, минус эксепшены - пожалуйста.Но мы тут, все таки про разработку полноценную, а не упражнения> Вообще нет ни одного кейса, где бы Java не подошла.Напишешь мне кернел драйвер виндовый на джаве? Я на С++ пишу вот щас сижу.
>>1594553>Ты вполне можешь получить такой же размер, как в си. Минус РТТИ, минус эксепшены - пожалуйста.Скажи мне, ты в своем уме? В Си у меня на выбор кучи заменяющих libc библиотек, из которых можно взять только самое нужное, в C++ мне нужно будет тащить весь libc++ без альтернатив, не говоря уже о том, что там все завязано на работу с памятью, а это означает еще библиотеки, заменяющие работу с памятью ОС.>Но мы тут, все таки про разработку полноценную, а не упражненияЯсно @ понятно. Настоящая разработка ведется исключительно в винде. Спасибо, что пояснил.> Напишешь мне кернел драйвер виндовый на джаве?Не вижу никакой причины не захуярить JVM прямо в драйвер.
>>1594559у тебя и в С и в С++ можно линковаться только на платформенное АПИ вообще без какого-либо рантайма, если ты не в курсе.> Ясно @ понятно. Настоящая разработка ведется исключительно в винде. Спасибо, что пояснил.Не передергивай, любой большой проект на любой ОС.> Не вижу никакой причины не захуярить 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, например. Обернуть сишное апи - получаем хороший С++.
>>1594604> Обернуть сишное апи - получаем хороший С++.Перефразирую - обернуть платформенное сишное апи - получаем хороший С++, даже сишные либы не нужны нахер.
>>1594601>Шаблоны, классы.Макросы, структуры.Реальный профит от C++ начинается с возможности использовать RAII и исключений для обработки ошибок.>>>1594585>В настройках компилятора просто ставишь статичную линковку(MT) и и у тебя весь рантайм сам встроится в твое приложение используя исключительно winapi.Без рантайма, не статисчная линковка, а без рантайма.>>1594604RAII без исключений не дает профита.И да, в 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, а не отсутствие необходимости вызвать лишнюю функцию для освобождения ресурсов, начинается с возможности использовать исключения для обработки ошибок.Ладно, здесь уже можно закончить. Удачи с дипломом.
>>1594641Хоть бы погуглил, блин, петуховен.https://hero.handmade.network/forums/code-discussion/t/94-guide_-_how_to_avoid_c_c++_runtime_on_windows
>>1594642Просто типичнейший рашкопрограммист в вакууме.ЧСВ, неспособность к коммуникации, неадекватность в общении — все на месте.
>>1594653Ты понял, что обосрался по всем пунктам, и сейчас у тебя бомбит от осознания собственной профессиональной несостоятельности. Пишешь драйверы и не понимаешь, как генерируется код, лол. В своем узкоспециализированном домене не знать, что VS вставляет вызовы в CRT где попало — это нужно быть типичнейшим кодомакакой, хоть и от C++, лол. Не знать, зачем на самом деле нужен goto в C — аналогично. Ты просто привык понтоваться умными словами перед джунами, но чем-то их подкрепить не в состоянии.
>>1594659продолжай, продолжай. Ну, как минимум курс операционных систем в вузике ты не проспал, но судя по всему, продакшен код еще не писал.
>>1594661>Ну, как минимум курс операционных систем в вузике ты не проспал, но судя по всему, продакшен код еще не писал.Good, good, let the butthurt flow through you.>>1594662Для этого надо хотя бы понимать суть проблемы, а не как этот петуховен, код работает и ладно, лол.
>>1594670Туда ли ты зашел, петушок?Зачем сидишь на двачике, ньюфажик? С коллегами общаться не в состоянии, они неспособны понять твой ОБВМ?
>>1594674С коллегами я на работе общаюсь, а на двачиках\ментачиках\сосачиках\педаликах я уже лет 12 сижу.Но ты смешно проецируешь.
>>1594678С коллегами я на работе общаюсь, а на двачиках\ментачиках\сосачиках\педаликах я уже лет 12 сижу — раздался пронзительный голос со стороны параши.Но пацаны, как всегда, не обратили внимания на это визгливое кукареканье. Пусть кукарекает, что с него взять?Петух — не человек, и сегодня ему предстоит очень трудная ночь. У него уже в течение полутора лет каждая ночь была очень трудной, и теперь его анус был разработан настолько, что он без труда мог спрятать в нём банку сгущёнки.
>>1594689Тюремная тема? Ну, отлично. Я смотрю ты много о петухах и их жизни знаешь. Батя сидел, или сам по малолетке?
Не забывайте ребятки, что тюремную культуру принесли русские евреи незадолго перед революцией. Если вы куколды и гои, то окей хуле.>>1594574А вообще хочется разработать такую же игру, примерно. Тут огромный простор для творчества, на самом деле. Вот в мажонг не попадешь, да и они сами на жава пишут. Вот интересно, есть идеи у тебя какие либо?я думаю в майнкрафте мало экшена и реального выживания, думаю может что-то похожее запилить.
>>1594734>Не забывайте ребятки, что тюремную культуру принесли русские евреи незадолго перед революцией.Именно поэтому пидарашки в любом закрытом коллективе устраивают анальную иерархию, а в израильской армии дедовщина отсутствует, как класс, лол.
>>1594734Зачем вообще с нуля разрабатывать свой движок и потом на нем еще и игру? Есть UE, Unity, не хочу, хочу жрать говно и пилить свой велосипед.
>>1594729А чтобы оно мне само ещё и распараллелило? А вдруг видеокарта будет, и можно будет на ней посчитать?
Через что лучше пердолить Qt, а конкретно QtWidgets, книги или документация с примерами?И ещё вопросик такой, что обычно означает в вакансиях: «знание Qt (QtWidgets/QtCore)»? Умение применять в реальных проектах?
>>1594774> Через что лучше пердолить Qt, а конкретно QtWidgets, книги или документация с примерами?Через написание кода. А с чем ты будешь консультироваться при написании кода - похуй, но, наверное, с документацией.> И ещё вопросик такой, что обычно означает в вакансиях: «знание Qt (QtWidgets/QtCore)»? Умение применять в реальных проектах?Ты понимаешь, как работает мемори менеджмент в qt, сигналы\слоты, moc, uic, как рисовать гуй, как наследуются\переопределяются методы в qt и так далее.
>>1594788А где почитать вот про эту модульность, где классы в хедерах и отдельных cpp файлах реализуются, как они с главным файлом стыкуются и т.д.? А то я только маленькие делал пока только программы.
>>1581140блять, а мне 80-летний препод на первом курсе говорил все что можно, даже небо, даже аллаха, по ссылкам передавать, чтобы память экономить, ну охуеть блядь, пойду читать.Мимодругойанон
>>1594893void foo(std::string name){...}void bar(){ string str; foo(std::move(str));}80-летний дед то про это поди не рассказывал?
>>1594604Последнее, если надо, если есть задача обоснованная, например, если у тебя железка какая-нить голая без ведра линуксовского, то делаешь и не выебываешься.Бля, поставят задачу - написать линкер свой на работе - не думаю, что у нас кто-то скажет "ОХУЕТЬ КАК СЛОЖНА, ЭТО МЫ НЕ СМОЖЕМ".
>>1594919Модульность это когда ты можешь просто, без задней мысли, импортнуть нужный модуль, очевидно же. Без сайд-эффектов на остальные включаемые модули, с инкапсуляцией объектов в каждом модуле. Как в жабе и Питоне.
>>1593989Дополнили немного тз: разрешено использовать только сдл2. Я сделал небольшую заготовку и у меня возник вопроса, я сделал управление таким образом(на пикче), но у меня нельзя одновременно двигать обе платформы, только 1, как решить эту проблему?
>>1581135У меня на собедовании как-то кандидат инт по ссылке передавал с таким же объяснением.Написал "не знает С++" в фидбеке.
>>1594742Майнкрафт требует специфичного движка, у тебя куча кубов, которые даже в массиве нельзя хранить по нормальному и нужно в чуть ли не прямо в сжатом виде обрабатывать. Хранить кубы как объекты с разными виртуальными методами для камня и сундука не получится. Помимо этого графон там простой без эффектов, и ещё там нереальное количество специфичной геометрии без lod-ов. Движок почти ничего не даст, а если он делает какую-то дополнительную обработку, пытается геометрию разбить по дереву для оптимизации, то он утонет - по сути ты будешь писать всю механику без движка, а движок использовать лишь на 5% для создания окна, обработки мышки, и вывода меню и других элементов интерфейса. Оверкилл, в общем.>Unity>не хочу хочу жрать говноНа ноль поделил, кстати. Посмотри игры на юнити, даже очень простые игры вроде робокрафта лагают как не в себя, хотя выглядят на уровне 2005 года. Ksp и cities:skylines имеют утечки памяти и имеют проблемы с производительностью в очень странных местах (в cities:skylines например фпс увеличивается в два раза при скрытии интерфейса - то есть вывод двух панелек с текстом и цветными кнопками занимает ресурсов больше, чем рендер крупного района города).>>1594734>есть идеи у тебя какие либоНету.Когда я когда-то очень давно играл в бету 1.5_01, я заблудился в пещерах и 8 часов искал выход переставляя факелы. Потом ещё метки на стенах рисовал (выкладывал из цветной шерсти), чтобы можно было ориентировать в пещерах. Это был самый интересный опыт игры. На что мне ребята сказали, что я глупый и нужно было просто проход наверх прокопать.Вот мне кажется тут самое интересное что можно сделать - убрать возможность так просто копать унылые блоки, и добавить больше глубины в мир и более сложную организацию пещер. Когда ты заблудился - это перестаёт быть игровой условностью, потому заблудился ты сам, а не персонаж - и никакие "нарисованные" уровни или хорошая экипировка тут не помогут. Вот сделать что-то как на картинке по сложности, только объёмное, чтобы можно было месяц реального времени искать выход, если заблудился и всё развитие и геймплей сделать внутри этих пещер с конечной целью найти выход.
>>1595021Охуенно про майнкрафт расписал, действительно не хватает какого-то приключения, в котором ты не чувствуешь себя всемогущим.
>>1594559> Не вижу никакой причины не захуярить JVM прямо в драйвер.Бля, какие же сука Васяны в треде сидят, каждый раз ахуеваю.
>>1594742Движки идут во-первых с оверхедом ненужного тебе, во-вторых нехватающие технологии тебе все равно самому дописывать, в-третьих, они своими интерфейсами навязывают свой стиль кодинга, который может тебе не подходить.
>>1594614В чем проблема использовать RAII без исключений? Условно говоря, в конструкторе проверяешь открылся ли файл, в деструкторе закрываешь.
>>1595332Раньше драйвера писал, сейчас я одновременно на трех проектах, еще четвертый подсунуть хотят, и сбоку тыкают, чтобы ресерчил какую-то неведомую хуйню. Весело, короче.
>>1595048У тебя есть два варианта, первый посмотреть как делается вывод SDL_ttf. Второй - просто рендерить картинки цифр. Вообще говоря, даже не обязательно картинки, их можно рисовать толстыми линиями-прямоугольниками, которыми ты рисуешь платформы.
>>1581135Сейчас компеляторы умные стали, сами оптимизируют многое, поэтому на всяких конференциях советуют почти все передавать и возвращать просто по значению.
>>1595318Васян здесь только ты, типичный пидорахен-вайтишник, не способный создать ничего принципиально нового. А люди, которые не ставят себе искусственные ограничения — делают.https://dl.acm.org/doi/10.1145/1408654.1408657
>>1595391Использовать можно, где профит?Без исключений RAII удобен, не более того.С исключениями он меняет весь стиль программирования.
>>1595508я прямо сейчас (в субботу, ага) сижу и тестирую говно, написанное в пятницу, т.к. задачек сильно больше, чем времени.Ну, из хороших новостей лишь то, что в этом году скорее всего запромоутят до Senior II, ради этого и потею.
>>1595514>в этом году скорее всего запромоутят до Senior II, ради этого и потеюНикогда не понимал такой хуйни.
>>1595517>>1595519Ну, лично я левел-ап получал образованием, тянки добился, гранты всякие, проекты известные, устроился на работу, на которую всегда мечтал. Но чисто бабло? Вообще никаких эмоций не вызывает. Если бы меня интересовало бабло, я бы менял компании каждую пару лет, наверное.
>>1595526Ну хуй знает, добиваться лычек в какой-то компании это не самый эффективный метод для зарабатывания бабла, тем более потеть ради этого.
>>1595528С моей зарплатой чисто теоретически уже не возможно "сменить контору", прыгнув на более высокий рейт. Единственный вариант - сьебывать в США, чего я пока не хочу. По-этому расту вертикально и медленно. Но, анивей, чем выше твой грейд - тем интереснее задачи. Чем интереснее задачи - тем больше бизнес-импакт компании, обычно. И так далее.Короче, меня текущее развитие событий устраивает. Если все пойдет как надо - перешагну 550к в месяц.
>>1595505> В этой статье мы предложили модель безопасного драйвера устройства для ОС Linux> ОС LinuxДальше не читал. Можешь не продолжать, у тебя нулевой уровень экспертности.
>>1595529Не проецируй, маня.>>1595532Ну так ты ограничен таким вертикальным ростом из-за решений, которые принял до того, очевидно же. Я предпочитаю, когда у меня много опций. Если меня прямо сейчас заебет хайтек, то легко съебу на постдок в любую страну, например. Заебет писать под Линукс — буду писать под винду в своей компании или в другой. Заебет программирование — уйду в академию. Мне психологически важно иметь возможность послать все нахуй в любой момент.
>>1595535Можешь не продолжать, у тебя нулевой уровень экспертности — раздался пронзительный голос со стороны параши.Но пацаны, как всегда, не обратили внимания на это визгливое кукареканье. Пусть кукарекает, что с него взять?Петух — не человек, и сегодня ему предстоит очень трудная ночь. У него уже в течение полутора лет каждая ночь была очень трудной, и теперь его анус был разработан настолько, что он без труда мог спрятать в нём банку сгущёнки.
>>1595535>>1595540Мне вот интересно, насколько сильным должен быть эффект Даннинга-Крюгера у человека, чтобы считать, что я не видел, что в статье речь идет о Линуксе, а не о винде? Тупое одноклеточное, блеать.
>>1595538Я искренне рад за тебя, что у тебя есть такая свобода. Меня NV полностью устраивает вообще всем, по-этому смысла менять нету.
>>1595546Смысл увольнять достаточно хорошего инженера, по меркам конторы?Ну, даже если так - у меня есть однушка в мухосранске, и достаточно денег на счете чтобы не работать примерно 12 лет (я считал, кек).За 12 лет я уж задрочу литкод достаточно, для оффера из гугла\фейсбука и прочего топа.
>>1595550>Смысл увольнять достаточно хорошего инженера, по меркам конторы?Ты серьезно? Тупо упадет акция, закроют направление / офис в Рашке / еще овер9к вариантов. Компании такого масштаба увольняют людей десятками тысяч, и тогда не до разборок, кто хороший инженер, а кто нет.Понятно, что не пропадешь, я больше в психологическом плане на такие вещи смотрю, т.к. меня самого увольняли не раз и не два.
>>15955531 раз было общее снижение зарплаты по всей конторе на год, потом это опционами выдали. Прям сокращений - не было вообще, в Московском офисе.Ну и да, судя по тому, как яндекс мне письма любви написывает на почту и линкедин нонстопом - точно не пропаду, даже если не захочу 12 лет сычевать дома.
>>1595555Кстати, ты, наверное, разбираешься.Компания "Код Безопасности", сколько могут платить в такой?Когда-то очень давно звали туда, а я подумываю о том, чтобы поработать в Рашке, если уж подался назад в хайтек.Вот на такую позицию, скажем:https://www.securitycode.ru/company/hr/vedushchiy-programmist-c-c/
>>1595563Вангую ~250 потолок.Иди лучше к нам - https://hh.ru/vacancy/35113629Тут реально ~300к на руки, плюс акций пакован.
Анончики, уважаемые. Подскажите пожалуйста Я C++ не изучаю, мне просто надо подкорректировтаь одну прошивку., что значит:dval &= ((1 << PWRES)-1);dval >>= PWRES - timer_cfg.duty_resolution;Допустим, как я понимаю, PWRES = 1024. Могу ли я получить dval = 1024? Суть в том, что при этой конструкции максимальный dval = 1023, а мне надо чтобы был 1024, как это сделать?
>>1595567Выглядит неплохо, спасибо проиграл со start of the art, лол.Я в этом году точно не уйду со своей РАБотки, разве что мне все руководство разом на голову сядет, потому что жутко интересно пока, и не сгорел еще.Если хочешь в будущем быть на связи, ну и не терять возможность получить профит с референса кандидата, если у вас такое практикуется, то черкани на mk@dee.su.Блин, если бы норм ваканси были и в ДС2, а не только в ДС, то я бы даже жену легко уговорил на переезд, наверное.
>>1595573PWRES это число бит.Скажем PWRES=5.Первая строчка обнуляет все биты в dval, кроме нижних пяти.Вторая делит на 2, (PWRES - timer_cfg.duty_resolution) раз.Насколько я понимаю, PWRES это резолюция чего-то одного, там низкая частота, а у таймера более высокая частота.Так что, как минимум, PWRES это не 1024, ну а дальше сам выведешь, что надо, думаю.
>>1595567Я вот много раз видел эту сеньорскую вакансию на ххру, но ты вроде как-то писал, что и джуна можете взять, я ж верно помню?
>>1595672Джуна прогера - нет.Джуна паковать игры для Geforce now (какая-то такая хйуня есть вроде) - да, это Junior Gaming Engineer. Но с нее дальше в кодинг перекатиться реально.>>1595576Будет надо - дай клич в С++ треде, и я появлюсь, кек
>>1595676>Джуна паковать игры для Geforce now (какая-то такая хйуня есть вроде) - да, это Junior Gaming Engineer. Но с нее дальше в кодинг перекатиться реально.А что для этого требуется, из знаний?
>>1595677https://hh.ru/vacancy/35332731Оверолл - еще надо уметь в игры, понимать как работает прости господи СТИМ, ИГРЫ В СТИМЕ, ДЕНУВО, АНТИЧИТЫ. Мам, я не в игы играю, я к собесу в нвидию готовлюсь, лул
Товарищи крестовики, посоветуйте литературу. Хочу по современному стандарту пройтись, с захватом 20. И что-нибудь не похожее на справочник. Почитал какую-то книгу в духе строгого справочника по языку и нахуй послал этот ад. Даже раст так не выбешивал. Пусть там будет хоть 1к страниц, не вопрос. Главное, чтоб жутко скучно. Хотя бы терпимо.Александреску может? Или все-таки Страуструп?
>>1595702Я кроме дяди Жени не знаю никого, кто хоть как-то платит и занимается интересными вещами в области ИБ.
https://isbn.directory/book/9780135953396Не могу понять, книга вышла уже? Если да, то где можно купить?
>>1595688>>1595681Анон, а резюме на английском кидать? Что лучше написать чтоб взяли?)) Могут вабще рассматривть резюме замкадыша? Где жить в москве найду
>>1595741На русском норм.Что написать, ну кроме дефолтного содержания резюме, что ты ИГРУЛЬКИ любишь, наверное.Замкадышей рассматривают, и даже если нужно face2face интеврью - оплачивают билеты и гостиницу на денек.
>>1595757А как в Нвидии относятся к Линуксу/Линусу после его знаменитого фак-ю? Поменялось ли что-то в корпоративной культуре в плане открытой документации?
>>1595766Я видел, что парни выкладывают потихоньку документацию к GPU на гитхаб, да и драйвера проприетарные работают. Но какой-то интернал инфы у меня нет абсолютно.
Есть ли какая-то разница между подобным принятием аргументов, если я потом в списке инициализации сделаю std::move() ?
>>1595944ты изобрел идиому copy-and-swaphttps://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom
>>1595701С захватом 20 хз. Вот из последнего:C++17 - The Complete GuideC++ 17 STL CookbookC++ Templates The Complete Guide
>>1595959Лучше делать так, как надо в контексте твоего кода, о котором ничего не известно.При помощи copy-and-swap, или unique_ptr&& ты передаешь ВЛАДЕНИЕ обьектом куда-то. Если тебе не надо передавать владение, тогда просто референс передавай (возможно константный).Если мы говорим о разнице между unique_ptr и unique_ptr&& - то ее тут, фактически нет, потому-что оно не копируемо. Если бы оно было копируемо - там были бы нюансы. В твоем кейсе - разницы фактической нету между unique_ptr&& и unique_ptr как аргументом функции
>>1595961> разницы фактической нету между unique_ptr&& и unique_ptr как аргументом функцииНу вообще, когда стоит && хуй его знает, что там будет с объектом. Может его переместят, а может и не переместят. Лучше в таких случаях по значению принимать.
>>1595963когда стоит && будет ошибка компиляции, если аргументом выступает не rvalue ссылка (или prvalue, если ты эстет)
Погромист 1 курса на связи, можно ли в таблице ASCII в выбранной кодировке заменить конкретные символы на свои, в идеале загрузить их как массив пикселей?
>>1596155Да, в консольном. Мне надо заметь несколько символов либо на символы из юникода(всю программу переписывать под юникод лень), либо поменять где-то файлы, можно даже через код.
>>1596161Кто тебе позволит где-то файлы менять? Ни препод, ни админ на работе не позволит. Нормально делай.
Появился ещё 1 вопрос по SLD, когда я сворачиваю окно начинается утечка памяти, когда разворачиваю обратно, но память стабилизируется и удаляется лишнее. Как это пофиксить?
Существует простой способ удалять из консоли то, что ты напечатал, а затем выводить снова строкой ниже с сохранением введенных данных и возможностью их редактирования?
>>1597024Простого нет, придётся городить свой ввод через какой-нибудь getch(), и перерисовывать/затирать текущую строку символами \b и пробелами.
>>1597024Может быть это не то, что ты имеешь в виду, но \r\n означает carriage Return и New line, соответственно, если вывести только \r, то перевода строки не произойдет, а курсор окажется в начале строки, и ты можешь выводить текст поверх старого.
>>1597081Нет, тут ситуация такая: пока пишешь сообщение/команду, может прийти пакет от сервера и записаться посередине ввода.
Здесь задают тупые вопросы? Можно ли создать простенькое интерактивное меню в консоли без чистки всего экрана system("cls") и повторного вывода всего при каждом мелком изменении? Если знаете где об этом подробно написано то скиньте ссылку. Заранее благодарен. Если этот метод будет пригоден для создания змейки, тетриса, понга и шашек то вообще заебись.
>>1597016Гуглится только абстрактный щиттолк, а лезть в исходники буста мне лень, да и вникать там муторно. А мне нужен лишь список правильных винапи и спецификация.
Сап программач, помогите нубу. Есть два файла: "A.h" и "A.cpp". К ним нужно подключить "B.h". Его нужно к .h или .cpp подключать?
Может кто помочь с написанием мейкфайла? Там вопрос плёвый для знающего, срочно нужно и не получается никак
>>1597458У меня есть 3 директории: в одной лежат общие файлы из которых я делал .lib в VS, а в двух других Source.cpp с мейнами, пытался изменить мейкфайл с хабра и не вышло, говорит, что нет файлов
>>1597474Мейк гонял давно, но по идее у тебя префикс только к первому имени приклеивается. И какой смысл зависимости цели servermake от, например, utilities.cpp?
>>1597483По сути все хедеры из папки SockNet в итоге есть в SockNet/SockNet.h, а он уже инклудится в Server/Source.cpp и в Client/Source.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.
>>1597516Всё ещё актуально, пожалуйста, кто-нибудь 3 гб оперативки, прямо сейчас убунта повисла на установке в виртуалбоксе сегодня последний день
>>1597623Дебилушка, ты ведь даже код не выложил. Алсо, убунту бы поставил как вторую систему, вышло бы быстрее и производительнее
>>1597650Ну а хули ты всё в последний день делаешь? Я тебе сразу говорил, сгенерируй. Загугли утилиту вроде vcxproj to makefile или напиши cmakelists.txt и перегони в makefile (хотя тебе походу cmake и нужен, лол)
>>1597656Я делаю это почти неделю уже, сокеты не знал абсолютно. По заданию мейкфайл надо именно написать, а не сгенерировать, и я гуглил, такие есть, но но на старые версии VS
>>1597660Не пиши сложный мейкфайл. Напиши простой, без общих правил и переменных.all: server clientserver: server1.o server2.o[tab]gcc -o server server1.o server2.oserver1.o: server1.cpp server1.h[tab]gcc -c -o server1.o server1.cppНутыпонел.
>>1576737 (OP)Анчоус, есть книга С++ для чайников, Стефан Р. Девис 2007 года, нормально, просто в свое время поккупал печатное издание, с тех пор и лежит
>>1598005std::async - это обертка на тредом, возвращающая фучуру.Корутины - это вообще абсолютно другое
>>1598254Я сам нихуя не понимаю из всех обьяснений.Т.е. на уровне "ЭТО ФУНКЦИЯ, КОТОРАЯ ИМЕЕТ СТЕЙТ И МОЖЕТ ВОЗВРАЩАТЬ НЕСКОЛЬКО РАЗ" - я понимаю. Уебищные примеры с питоном и его генераторами - я понимаю.Он когда начинается co_await - все, выносите меня ногами вперед. Но да, я еще сильно не раскуривал эту тему, а надо...
Аноны, как реализован substr?Я вот тут делал и ничего умнее не придумал как выделить строку и просто перекопировать элементы. Может есть способы как весь участок памяти скопировать?
>>1598261У Таненбаума в "архитектуре компьютера" очень компактное и доступное объяснение с картинками для даунов, только там корутины называются сопрограммами.
>>1598292Я перефразирую свой высер. Я понимаю, что такое "просто корутина, yield, и тд". Я не понимаю, как к этому относится co_await, и где там какая-то волшебная кооперативная многозадачность.Надо на C++ Russia сходить, там Гор Нишанов заяснит.
>>1598291как такое вообще реализуют? Такое копирование прям на уровне ядра сделано и нельзя реализовать самому?
>>1598261Насколько я понял корутины асинхроны, но выполняются на одном треде. И если ты вызываешь внутри корутины другую корутину, то тебе нужно использовать co_await, чтобы подождать пока она вернет что-нибудь.
>>1598332Я вызываю функцию внутри другой функции, и жду пока функция вернет чето. Чем это отличается от co_await? И причем, блядь, тут корутины, учитывая что это лишь функция со стейтом.>>1598306Копирование элементов - это стандартный процессорный mov(и его деривативы, типа movq) - фактически. Положил кусочек строки в регистр из памяти. Потом из этого регистра положил в другой кусочек памяти.В случае строк - ты можешь копировать от 1 байта за такт до 64 (при каком-нибудь адовом AVX512.
>>1598352Регистр? Я думаю что контролер умеет копировать данные без этого.Операция явно распространенная и засирать кэш и занимать регистры нет практической надобности
Анонче, тут немного упоротый вопрос.Кто-нибудь курил Android NDK?Нужно по работе пилить приложение для ведра, а, значит, осваивать котлин.Но уже есть знания плюсов, получится ли полностью на этом NDK бахнуть приложение или там урезанный функционал плюсов и/или старый стандарт?Где-то я нашел инфу, что на c++ можно только требующие скорости места писать, хотя Android Studio предлагает сделать проект только на них.
>>1598426Элегантно. Я продумывал способ со сверткой, т.е. поэлементно цеплять к новому tuple типы, что больше времени потребовало бы.
>>1598428У меня коллега запилил как-то на кюте блютус пульт управления под андроид, может там это проще:https://doc.qt.io/qt-5/android.html
>>1598369Смотри что нашел>Как вы правильно указали, DMA_MEMCPY следует использовать для выполнения копирования RAM-to-RAM. Это описано в Documentation/dmaengine/provider.txt . Вот только соответствующий отрывок, пожалуйста, смотрите весь файл для получения более подробной информации: https://codengineering.ru/q/kak-perenesti-dannye-cherez-dma-iz-operativnoy-pamyati-v-operativnuyu-pamyat-58776/
>>1598556эх, скинул вам свою потешную резюмешку, думаю не возьмут, лол. На хедхантере написано что менеджер чекает только 36% резюме. Чому так?
>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)
>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)>>1598613 (OP)
>>1598352Корутина - это функция, которую можно ставить на паузу. Ко- в том плане, что две таких корутины могут работать одновременно. Одна поработала, недоделала, вторая поработала, недоделала, вернулась в первую, первая доделала, вернулась во вторую, доделала.
>>1599121То есть когда одни русские люди пишут комментарии для других русских людей в проекте, который уж точно никогда не покинет рашку, на ломаном и одним им понятном английском - это нормально?