>>1708681 (OP) >2 А если я хочу прогать на языке D, можно я не буду, как говорил какой-то анон "D сделан для тех, кто уже поел говна на С++". Хоть я и знаю язык C++ более менее и писал на нему пару небольших петпроектов, но "говна" таки не поел, зато очень хочется сдриснуть с этого говнистого языка на более красивый. Можно?
>>1708756 → Верно, я что-то упростил все. Но судя по всему можно снизить число connect'ов если все внутри одного класса находится. >>1708768 → Я читаю, но все равно сложно пока ориентироваться. Я даже не понял, есть ли там дефолтные значения для selectionbehaviour, если самому не задавать. >>1708772 → Да, видимо так и есть все, я готовый класс использовал безо всяких переопределений.
> The initialization order of member variables is determined by their order of declaration, not their order in the initialization list. Это с каких пор так?
Хочу перекатиться из веб параши в кресты. Помогите советом, в рашке как я понимаю кресты -- совсем неперспективная область, и придётся становиться байтослесарем с потолком в 100к? Очень не хочу проседать в зп (на вебпараше получаю 200к+), но хочу делать что-то крутое, помимо КРУДОВ и прочего говна.
Выбор у меня между растом и крестами, хочется в каком-нибудь охуенном месте сидеть охуенные задачи решать (лол).
В рашке только в яндексе на крестах норм вакансии и нет смысла даже соваться или как? Вообще, где есть НОРМ разработка, отличная от мобилок (фу) и веба(фуууууу)?
Таки а что случилось с std::dynarray? Он в стандарте или нет? Как рекомендуется в модерновом С++ аллоцировать массив чтобы его не нужно было освобождать? unique_ptr/shared_ptr и туда прямо массив засовывать вместо make_unique? Для char[] я думаю проще всего string использовать
>>1709132 Да где блять мало, джуны 1к-1.5к, миддлы от 2к, сеньоры от 3к. В хороших конторах могут и джунам по 2к платить, это не говоря о том, что когда ты станешь сеньором а то и мидлом, то работа будет искать тебя сама, там же и удалёнка подкатит. А для джунов требуют не так и много, за первые два курса универа учится спокойно
А как виндузовые живут без getopt? Как они аргументы парсят? Шокирован, что getopt это не часть стандарта C++. Столько бесполезного говна туда добавили.
>>1709205 Сокеты планируют в 23-м вместе с рефлексией. Юникод не нужен хуй знает когда будет. Опять же, хотя-бы для консольных приложений, в чём проблема скопипастить boost::nowide в стандарт? Бля и пары человек для ревью хватит, а так хотя-бы консольные приложения страдать не будут
>>1709134 Вектор лучше всего. Уже много раз слышал правило, что если нет везких причин не использовать вектор, то надо брать именно его. А специализации для массивов у шареда нет не осилили скопипастить с буста вместе с самим шаредом
>>1709221 >унижают 2 моих друга из-за нужды в деньгах в 2015 тупо начали рассылать резюме во все фирмы. Оба нашли работу. Сейчас оба мидлы за зп не знаю, не бедствуют. Были почти нулячие на тот момент, в старших классах учили что-то вроде. Жсер так может? Мне казалось там на одну вакансию 5 тыс. резюме, а эйчарши могут отказать из-за непонравившегося шрифта в CV. Вакансии там кстати не особо то и требовательные, вот тебе пофоткал парочку из мск, и пара из моего города. Средняя зп у нас 10к если что, медианная 5-7к или типо того
// integral duration: requires duration_cast auto int_ms = std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1);
Аааа блять что это за говно. Нахуя было так все усложнять. Все что нужно timer.Start() timer.Stop() timer.GetSeconds() or milliseconds. А в этом хроно ебучем какие-то бесконечные касты.
То есть между ++i и i++ нет никакой разницы, и то и другое инкрементит, если мы не присваеваем значение куда-то? Тогда i++ изъебнется и сначала присвоит значение, а уже потом заинкрементит?
>>1709228 ну что ты мне яички выкручиваешь, дружище. Я тебе о том, что сейчас мне за Ноду/Пхп платят 200к+, а знаний у меня хуй да нихуя, только всякие библиотеки да фреймворки как бибизяна выучил. Вакансий миллион, если завтра решу поменять работу, новую найду за дня три макс.
А тут получется, что если я захочу настоящим программистом стать и убить годы на понимание мультитреда и перекладывания байтов, у меня будет условные 10 вакансий в москве с потолком в 250к, и то там конские (по сравнению с вебом) требования, фиг знает, что возьмут и работу менять в случае чего сложно (всего контор раз два и обчёлся).
Короче, хуй знает, но на мой взгляд джс-макаки, вас унижают как только могут за ваши знания
>>1709305 Мимо-неон, а что тут удивительного, никакой связи между сложностью и рыночком. У ембедщиков такая же хуйня. Там еще и железо нужно знать и байтоебство. А не платят не хуя. А с другими индустриями сравнить - вообще пиздец. Математики там всякие, и прочие физики.
>>1709305 > вас унижают как только могут за ваши знания И что делать с этим будем? Нормальный крестокодер сможет себе без проблем место выбить с устраивающей его зп. Я вообще знаком с победителем ICPC, сегодня уже сеньором, там знаний блять как у профессора математики, препода по алгоритмам и 10 жс макак, работает за 3к, говорит как-то похуй на деньги, хотя не раз уже офферы и за бугор были, и местные мск на 5к. Думаешь ему не похуй, что о нём какой-то недопрограммист, который семафор от мьютекса не отличает, думает?
>>1709305 >сейчас мне за Ноду/Пхп платят 200к+, а знаний у меня хуй да нихуя, только всякие библиотеки да фреймворки как бибизяна выучил Я тоже так хочу, откуда начинать?
>>1709291 Ну как бы есть разница, порядок исполнения другой
++i > 1 // это сначала сложение потом сравнение i++ > 1 // это фактически сравнение и сложение можно запускать одновременно. Надо скомпилить вывод посмотреть, я не уверен можно ли один регистр двум командам использовать, но если что можно все равно сложение делать в другой регистр а сравнивать текущий.
>>1709228 Зачем ты выбрал именно топовые вакансии на плюсах? Я сам видел, так как регулярно просматриваю хх по мск. Как мне показалось, очень много предложений работы связано с говном - программирование под винду, mfc, c++/cli, qt. Или байтоебство какое, где предлагают 120к за 6+ лет опыта работы. У жс и джава макак все намного лучше в среднем
>>1709130 >Вообще, где есть НОРМ разработка Интересные задачи встречаются как ни странно в НИИ разной степени паршивости. Правда платят мало. А так в РФ есть самсунг и хуавей, в последнем платят прилично, в пером нет. Яндекс по уровню зп считается ниже среднего по рынку.
Да и вообще, что по твоему норм разработка? В большинстве случаев на плюсах делают либо очередное видеонаблюдение, либо контроль трафика, либо какие нибудь штуки с железками. Чем это принципиально интереснее веба - не знаю. Еще компьютерная графика есть, но это сильно на любителя.
На твоём месте я бы дальше сидел в вебе на хорошей зп. Просто скорее всего окажется, что перейдя в новую отрасль, ты обнаружишь, что задачи по прежнему говно и скучно, а зп и условия работы в разы хуже.
>>1709401 курсы -- говно, по книжкам и можно и нужно. Ну или на юдеми какой курс купи разве только, но вообще немного книжки, много практики и много гугления за глаза хватит
>>1709601 смотрю у яндекса дохуя крутых вакансий, по описанию все выглядят интересно
>>1709600 может быть, ты и прав. Мне сложно описать, что я понимаю под норм разработкой, скорее это что-то вроде создания алгоритмов и решения каких-то абстрактных задач, наелся я бизнес-говна сполна, не могу больше скачивать и использовать библиотеку, хочу написать свою
>>1709604 >хочу написать свою так напиши. если чо полезное будет - отгребешь звезд и будешь мега звездой. а если ты кукаретик мамкин, то хуй сосать будешь де скончания веков. вот тебе мое проклятье
>>1709601 Сбер и дойчебанк это логово джавистов, что собственно неудивительно. Яндекс и нвидия - да. В остальном плюсовики нужны в крайне малом количестве.
>>1709597 Я всего ~5 вакансий просмотрел, выбрал адекватные, они в моём посте и прикреплены, как там в мск дела не знаю, из своего города вообще выбрал джуно-слабомидло вакансии. Хотя и у нас говно есть, одна фирма набирает стажёров со стеком Qt/Boost/WinAPI/MFC, не ебу в душе чем они там занимаются, но звучит не очень.
>>1709604 "для интереса" делай свои домашние проекты или в опен сорс вкатись. Просто смирись, что на дворе 2020, библиотеки уже все написаны. Остался только бизнес. И дальше будет только хуже. фреймворки, облака, saas/paas. Все за тебя напишут, только деньги плати. Базы данных, алгоритмы, криптография, обработка изображений, или вон AI еще не успел развиться а уже есть всякие AI paas в облаках. Для вебсервисов весь plumbing за тебя сделают. Что еще писать? Только веб бизнес. Положил в базу, достал из базы. Больше ничего не будет. Ниш никаких не остается. Если какая-нибудь тема станет популярной, ее тут уж МС/Амазон/Гугл к рукам приберут, в облако засунут и убьют конкуренцию. Я реально не знаю, чем будут погромисты заниматься через 10-20 лет?
>>1709615 вот этот знает. через 10-20 лет у вкатышей будет вариант: быть гением или сосать хуй. вкатывайтесь пока не поздно в менеджмент. дальше только пиздец и купола
Анон, в лямбде std::transform или for_each при использовании auto надо писать типа const auto& v или просто auto v, компилятор сам догадается, что не надо копировать? Проведение auto же указано в стандарте?
>>1709770 Бизнес - это service layer с дохуищей логики и сотнями абстракций. Круды на фоне этого - капля в море, от всего процесса разработки они берут ну процентов 5 времени от силы. Решение давно есть, называется ORM. В задачах бизнес-логики же конца-края не видно, что там > 10-20 лет
Привет ананасам, поясните мои хорошие, где искать проекты/стартапы, просто что бы вкатиться в совместный проггинг? Сам клепал пэт проекты, последнее что мацал, это Qt, но из-за ограничений в креативе, да и тот факт, что всем вокруг объективно похуй на то, что я клепаю, желание просто сдувается как шарик. Хочеца найти себе команду, в которой уже есть идеи, да что я рассказываю, хочу найти себе стартап что бы влиться, куда искать?
Есть отака хуйня : p->Bitmap->SaveToFile( "screen.bmp" ); .Вкратце-записывает скрин в файл с именем screen. 1)Как сделать так,чтобы оно сейвило с именем screen1,screen2 и т.д 2)Как скриншот запихнуть в отдельную папку? 3)как это счастье сжать,ибо 5 метров/скрин это дохуя знаю,там реализация длинная Весь код: TPicture p=new TPicture; HWND hwnd=GetDesktopWindow(); HDC hdc=GetWindowDC(hwnd); TCanvas C=new TCanvas; C->Handle=hdc; int w=Screen->Width; int h=Screen->Height; p->Bitmap->Width=w; p->Bitmap->Height=h; p->Bitmap->Canvas->CopyMode=cmSrcCopy; p->Bitmap->Canvas->CopyRect(TRect(0,0,w,h),C,TRect(0,0,w,h)); ReleaseDC(hwnd,hdc); delete C;
>>1710139 Ну и тип, поставить любой count, если тебе прям нужно что бы было чередование 1 2 3 и т.д. но, вообще, как по мне, лучше просто подсосать time.h и просто в строку вставлять дд.мм.гггг По поводу сжатия, тут хызы, посмотри реализиции в своей WinAPI, более чем уверен, что там есть реализации работы с форматами и их сжатие //А поч bmp ? Помимо того, что это дефолт винды
Аноны, что думаете насчет sourcetrail? Выглядит очень неплохо и удобно для вката в новую кодовую базу, но проблема что куча непотянтных ошибок, которые неясно как фиксить, на маке вообще похоже отваливается из-за кучи objcшных либ. Есть ли еще какие-то продвинутые инструменты для визуализации?
> Как сделать так,чтобы оно сейвило с именем screen1,screen2 и т.д
> Ну и тип, поставить любой count
Не, тут надо проверять наличие файла, и если файл есть добавить к названию (1), или (2), или (3), и так пока цифры не кончатся. Так винда делает если ты новую папку с тем же именем не создашь. А хранить count в оперативе не поможет, так как если файл с таким именем уже есть - он его просто не создаст.
> лучше просто подсосать time.h и просто в строку вставлять дд.мм.гггг
Ну или так...
> Как скриншот запихнуть в отдельную папку?
Путь в SaveToFile( "./folder/screen.bmp" ) передать вот так. А как создать папку сам позырь. Надо проверить есть ли она, и если нет создать.
> как это счастье сжать,ибо 5 метров/скрин это дохуя
Чел, смотри.... bmp - это формат изображения где данные хранятся БЕЗ ПОТЕРИ КАЧЕСТВА.
То есть, если у тебя изображение - чёрный квадрат 3x3 с белой точкой по центру, то это будет двумерный массив из 9 rgb точек
Ну, там я конечно упрощаю, ибо есть определенные механизмы LZW сжатия без потерь, но всё таки это не то.
А всякие жпеги - это алгоритмы сжатия с потерями, но они гораздо сложнее чем тот же BITMAP.
PS: > p->Bitmap->SaveToFile( "screen.jpg" );
Это хуйня. Просто назвав файл jpg ты не сделаешь его jpg. Надо либо юзать либу для закожевания этого говна в jpg, либо реализовывать самому. Это не очень сложно, но за 5 минут не объяснить. Погугли как это делается.
Ну это переименовали. Раньше называли Borland C++, сейчас RAD Studio.
А куда перекатываться - да куда хочешь. Я бы в qt делал, но если тебе это боль не причиняет - используй так. Но на qt нет залупы с хендлерами и ручным менеджментом памяти.
На pastebin или gist код кидай.
> Единственное,что надо-засейвить жипег в отдельную папку,допустим bin
Попробуй папку вручную создать и путь указать к ней. Если выйдет, то создай папку как здесь советуют
>>1710291 Папка существует,мне нужно,чтобы был не фиксированный путь,а путь до программы+папка ней Пока оно всё сейвит в папку с exe,ибо AnsiString path =ExtractFilePath(Application->ExeName
Жил-был СТРАУСТРУП. Шел обычный, скучный день. СТРАУСТРУП занимался рутинными вещами, такими как ебля своей трехсоткиллограмовой матери в зад. Только успев кончить матери в пердак и вынуть измазанный в говне хуй, СТРАУСТРУП услышал стук в дверь. Не заметив, что его мать умерла от сердечного приступа еще 3 дня назад, он пошел открывать дверь и вышел на веранду. На веранде никого не было. СТРАУСТРУП, было, уже начал подозревать СТЕПАНОВА в очередной подъебке, но вдруг, из под крыльца что-то вылетело и понеслось на него. От перевозбуждения СТРАУСТРУП уронил скрепленнеые скотчем очки на пол и смиренно ждал, что будет дальше. ЛЯМБДА, с огромной скоростью пролетела мима СТРАУСТРУПА, квадратной скобкой отпихнула его и заползла в дом, крепко заперев дверь. ЛЯМБДА ясно дала понять, что она приняла дом в качестве аргумента, но отказывается возвращать функцию, которая принимает ПИЗДЮЛИ в качестве аргумента и возвращает дом. ЛЯМБДА заползла на стул перед компьютером и свернувшись в уютный клубок, зашла на ДВАЧ. СТРАУСТРУП знал ЛЯМБДУ. По крайней мере, это слово он точно слышал, но не знал, что оно значит. Он очень удивился, когда недавно узнал, что ЛЯМБДУ включили в НОВЫЙСТАНДАРТ, принятый полгода назад. СТРАУСТРУП понял, что надо выгнять ЛЯМБДУ из дома, потому что желание в очередной раз залезть на мамочку было слишком велико. Будучи первоклассным инженером, СТРАУСТРУП начал искать решение проблемы. Для разминки он решил повторить таблицу умножения до 12 на 12. Он 2 часа стоял на одном месте и смотрел в никуда, потея как свинья. Пока он боролся с таблицей умножения, из за угла вышел измазанный в говне АНДРЕЙ АЛЕКСАНДРЕСКУ и осмотрелся. Рядом стояли несколько зданий, включая психбольницу для буйнопомешанных и тюрьму. АНДРЕЙ задумался и понял, что в округе нет ни одного настолько больного и гнилого человека, чтобы продать ему свою книгу. Небрежно посвистывая, АНДРЕЙ удалился. СТРАУСТРУП закончил разминку и начал думать, как прогнать ЛЯМБДУ. Вдруг его осенило. Его дом был скомпилирован последней версией GNU G++, которая поддерживает ЛЯМБДУ. Именно поэтому, ЛЯМБДА и смогла проникнуть к нему в дом. СТРАУСТРУП понял, что ему нужна более старая версия G++, которая не поддерживала ЛЯМБДУ и тогда, при попытке компиляции дома, ЛЯМБДУ выкинет вместе с СООБЩЕНИЯМИ ОБ ОШИБКАХ. Но старую версию было негде взять. СТРАУСТРУП нанял ФУНКЦИОНАЛЬЩИКА СО ШТАНГОЙ за 5 тысяч рублей. Так как компьютера у них не было, ФУНКЦИОНАЛЬЩИК вначале написал на бумажке компьютер в 1 строчку НА ХАСКЕЛЕ: Computer = Computer ФУНКЦИОНАЛЬЩИК сожрал бумажку и высрал работающий системный блок с ВОДЯНЫМ ОХЛАЖДЕНИЕМ и предустановленой WINDOWS 7. На компьютере уже был установлен АЛАН ВЭЙК и ХАСКЕЛЛ ПЛАТФОРМ. Корпус был красного цвета, с наклейкой ТУРБО на прозрачной боковой крышке. Затем ФУНКЦИОНАЛЬЩИК написал в 2 строчки старую версию G++:
СТРАУСТРУП взял исходники своего дома и запустил компиляцию. Компилятор начал дристать СООБЩЕНИЯМИ ОБ ОШИБКАХ. СТРАУСТРУП попытался разобрать первую строчку, но увидев такое, дальше лезть не решился(таблица умножения и так вымотала его):
Высрав 10 000 СТРОК СООБЩЕНИЙ ОБ ОШИБКАХ, компилятор скончался от ЛЕНИВЫХ ВЫЧИСЛЕНИЙ ПРЯМОЙ КИШКИ и из монитора вылетела ЛЯМБДА. Придерживая круглые скобки квадратными скобками, ЛЯМБДА в ужасе съеблась под ближайший камень. Ей еще долго не захочется принимать и возвращать значения. Довольный СТРАУСТРУП плюнул в руку, чтобы наслюнявить хуй и уже решился залезать на мамочку, но передумал и решил вначале запостить эту историю на ДВАЧ.
Допустим, я хочу написать программу отдельно от интерфейса. Как mpd и ncmpcpp, например. Я так понимаю, для этого нужно саму программу сделать в виде сервера. Какие для этого средства в плюсах существуют? Есть какие-то либы, типа фласка или синатры, чтобы более-менее просто это было организовать?
Ну у тебя софт не лицензирован, в нём в манияесте не прописаны ключи-хуючи, и винда по дефолту не рекомендует такое запускать, а то мало ли какие там вирусы. Ну это уже программирования не касается, можешь забить.
Как в qt фиксить исключения? У меня при нажатии кнопки поиск вылетает, я думаю это из-за sqlrelationshiptablemodel, там одно поле интовое, а я отображается string из другой таблицы по внешнему ключу.
Почему у меня срабатывает деструктор класса? std::vector<class> numbers(10, class(x, y, z)); Создается вектор, на следующей строчке срабатывает деструктор. В конструкторе выделяю память оператором new, если убрать деструктор, на протяжении вызовов методов класса все время вызывается конструктор и выделяет новую память. Вектор передаю в функцию по ссылке. Что за НЕХ?
>>1710918 Я не уверен, что именно в этом проблема, не знаю как в qt с исключениями разбираться. Да и что тут можно скастить в моем обработчике кнопки поиск? model->setFilter("staff.Id LIKE '%"+searchfield->text()+"%'"); Может relationmodel вообще не поддерживает подобные фильтры?
>>1710971 Нет, Qlineedit возвращает строку как и надо. Я лоханулся, но в другом месте, вынес этот объект в хедер, но забыл убрать инициализацию его в конструкторе: Qlineedit ^search = new Qlineedit(); на search = new Qlineedit(); Надо наверное выключать музыку во время написания кода, а я думал, что она наоборот помогает сконцентрироваться мне.
чтоб как бы был массив а потом уже в пустые ячейки как бы пихать - нету такого? Именно надо такой поинтеризованый псевдомассив, библиотека на си как бы принимает это говно.
>>1711069 Хуй его знает, надо если ты потом конструктор в коде определяешь иначе ошибка. >>1711076 Ну ей надо const char args то есть вот эту вот хуйню {"start", ... "end", NULL} Серединку я как бы из нормального массива строк заполняю., но крайние мне наверное лучше вписать
Сап анон. Допустим, есть шаблонный класс с шаблоном <int N>, N типа порог, 1-10 может быть. Как сделать автогенерацию шаблонов фиксированного диапазона, чтобы выбирать нужный экземпляр исходя из например аргументов командной строки? Спп11
>>1711114 Я хотел в коде. Ещё я помню какие-то приемы (писали давно итт), когда создаётся таблица синусов с какой-то точностью. Я считаю, что это ультимейт полезная фича для каких-нибудь МК без fpu
Анон вовремя задал вопрос >>1711176 Переписываю код с шарпа, не могу освободить память из вектора. Пробовал clear() + shrink_to_fit(), но память не освобождается. Пробовал переинициализацию вектора делать - хуй. В векторе хранятся классы, в которых нет указателей/new, по идее же оно должно при выходе из области видимости освобождаться само. Что я делаю не так?
>>1711262 > Значит у тебя что-то другое течёт. Бля, там нечему течь. Там внутри класса два std::byte и пустой вектор. Пробовал даже этот пустой вектор в деструкторе тереть кучей способов, но это явно не он. В методах указатели не использую, чтобы там что-то текло. > Как потребление памяти измеряешь? В VS в профайлер смотрю. Пробовал через диспетчер задач проверять, думал VS пиздит. Не вижу разницы с кодом очистки векторов или без.
>>1711259 shrink_to_fit не обязан освобождать.Попробуй swap с пустым вектором.
И вообще, как ты меряешь расход памяти? У тебя может освободиться память вектора, но остаться память выделенная под кучу (она просто будет помечена как свободная).
>>1711191 Он побайтово переписывает прототип на объекты вектора? Тогда понятно, почему у меня все объекты выдавали одинаковые значения на динамической памяти. (Утечка кстати была не из-за вызовов конструкторов, просто я набыдлокодил).
>>1711362 Вектор сам не вызывает деструктор, просто у твоего временного объекта class(x, y, z) закончилось время жизни, соответственно, после копирования он удаляется. Напиши отдельным оператором class(x, y, z); И у тебя здесь сразу вызовутся и конструктор, и деструктор.
Ну а вектор тупо скопирует значения через дефолтный конструктор копирования.
А ведь header-only библиотеки появились не от хорошей жизни. Достаточно просто скачать и положить в папку с инклудами вместо многочасовых поисков кривых cmake-файлов от васянов. А всё из-за того, что ни одна нормальная система сборки с поиском зависимостей не взлетела.
>>1711647 Мне кажется, макакера на C++ найти легче, нафигачит код он быстрее. Эффективность продукт будет под вопросом. Больше опасность, что код поломается после ежегодной смены стандарта.
>>1711647 Офк лучше. Можно писать используя сейвовые RAII врапперы для всех ресурсов, а не каждый раз вручную писать free(zalupa) с шансом забыть это сделать и получить утечку.
>>1711755 Пиздец, ну и говно. Вместо того чтобы по человечески сделать класс и реализовать у него методы, просто пишут функцию которая принимает указатель на структуру. Вот например гипервизор написанный на плюсах https://github.com/wbenny/hvpp так вот он НАМНОГО читабельнее этой сипараши.
>>1712069 Дык в плюсах это так и реализовано. Можешь убедиться, попробовав вызвать метод в новом поток. Первый аргумент после класснейм::методнейм - указатель на класс.
>>1711660 > ассемблер пизданулся что ли, драйвера это модули к ядру, давай их на ассемблере хуярить в обход апи ага >>1712083 Ты толщину кода и скорость замеряй, а не красоту. Может быть на плюсах и красивее но это работает так же а скорость исполнения кода меньше и место в памяти больше требуется, плюсы помоему только в гайке/BeOS в ядре используются.
>>1712101 Нихуя он не быстрее, вот тебе пример даже https://godbolt.org/z/-7dapo абсолютно одинаковый листинг выдает на идентичный код на си и на плюсах.
сап pr, сижу сейчас над задачей создания лайтового аналога headless браузера на qt, мне нужно просто по запросу перейти в яндекс выдачу, найти там нужный сайт и именно из яндекс выдачи на него перейти, чтобы засчитался просмотр, selenium, puppeter и тд. не покатит, давно бы на них сделал, нужно именно на qt(c++), ответов в гугле особо не нашёл, из документации к QWebEngine понял что там необходимо присутствие гуи, но мне нужно эмулировать действие пользователя обычным браузером, а headless нужен потому как буду закидывать этого бота на orange pi zero, где нет выхода под монитор, и не предусмотрен gui. Если у кого то есть идеи, отпишите пожалуйста, буду очень благодарен.
>>1712069 Сишка гораздо быстрее скомпилится, как минимум. Точнее, это пиздец критично бывает. А ещё она элементарная. Не знаю, кому как, а мне очень приятно смотреть на каноничный сишный код. Приятнее, чем на каноничный плюсовый, однозначно.
>>1711755 Ебать, какое же гавнище там в кодовой базе, как будто первокурсник из ПТУ лабу залил. Документации ноль, из всех щелей лезут меджики, при том что это один из повсеместно используемых модулей. Вот зачем ты этот линк вкинул, как жить-то теперь
>>1712363 Я ни на кого не набрасывался, просто я не понял что тебе надо. Без гуйни перейти куда то надо (то есть цепочку запросов сделать как от клиента) лучше наверное пхп взять или node-js просто потому что у них работа с сетью из коробки есть, зачем тебе плюсы с qt. Qt - это гуй
>>1712533 Ну а хуле. Это во-первых код драйвера, во-вторых на ленупс, в-третьих для гпу. Любого из этих пунктов было бы достаточно, чтоб код выглядел как говно.
>>1712666 тян? В душе не ебу как там с дотнетом, кьюте это инструмент созданный под определенную задачу - написание платформонезависимых гуев. А так - конечно, можно и микроскопом гвозди забивать. Нет если там можно чисто отдельную библиотеку таскать с вот этими QString QObject QMap то это круто, но это просто удобная библиотека, как jquery
Сап, крестач. Работаю почти два года после окончания уника. Работа связана с нейронками и компьютерным зрением. На текущий момент всё вообщем-то устраивает, но возникла мысль открыть резюме и походить по собеседованиям ради интереса, узнать свой текущий уровень и вдруг может перекатиться на мидловую позицию. До первой работы было только одно (неудачное) собеседование по плюсам.
Собственно вопросы: Что думаете насчёт этого? Что если HR с работы увидит моё резюме ( мы сейчас в очень активном поиске программистов)? Что отвечать на собеседовании если спросят что не устраивает в текущей работе? Почему решили придти на собеседование/почему хотите работать у нас?
>>1712069 Приходилось кодить и так и так, для меня уже нет разницы си или кресты, потому что в проектах такого уровня очень редко есть серьёзное ООП. Это вам не курды круды.
На сихе это смотрится очень привычно через определенный промежуток времени.
>>1712533 >Ебать, какое же гавнище там в кодовой базе, как будто первокурсник из ПТУ лабу залил.
Еееееееесть такое. Но я хочу сказать что это вообще-то норма в разработке.
>>1712583 ето я задавал вопрос, суть в том, что нужно сделать продвижение сайтов, тоесть ботярой просто накручивать просмотры, по городу расставлены orange pi zero на которых стоит собственная сборка линукса с кросскомпилятором и сборкой qt, у одноплатника нету выхода под монитор, он будет просто сервером откуда мой бот должен зайти на сайт и обойти защиту яндекса, я пробовал это делать с помощью просто гет запросов, но запроса который у яндекса отсеивает ботов я не нашёл, да и мои регулярки при изменении кода выдачи яндекса слетают нахуй, поэтому решил создать headless браузер который думаю справится с этим идеально, и увидел что QWebEngine на хромиуме, так как все одноплатники берут инфу о сайте и времени когда нужно будет зайти из одного бд, нужно сделать и бота который работает на QT, на котором работает уже бот для гугла. Было бы можно на node js я бы давно скрипт заебашил, это ведь не трудно, а вот заставить вебэнжин работать без гуя сложновато, по крайней мере для меня.
>>1712387 >>1712724 я не уверен что мне нужно рендерить в если гуя нету, я думаю мб задать якобы размеры экрана в QWebEngineSettings и скриптово кликать лкмом по ссылкам нужным, если это возможно, тогда нужно чекнуть позиционку по координатам ссылок и настроить поиск нужной в выдаче.
>>1712745 да я студент ебучий, у меня экзамен, препод сказал эту хуергу сделать, он мне блять вообще на вротпрессе предлагал сайты делать, я попробовал и проблевался нахуй, мне эту хуйню с ботом закончить и я никогда в жизни в веб ебаный не полезу.
Ага. Но опять же, единственное для чего qt хоть сколько-то используется - так это gui обёртки для консольных приложений/демонов. Ну тот же VLC написан на qt, но только сам gui.
Qt это вообще в принципе хороший пример того, что бывает когда нарушается юникс вэй...
>>1712768 Ну смотри, чел, есть такая философия разработки, называется она unix way. И одна из установок - делайте маленькие, простые, прозрачные программы, которые взаимодействуют друг с другом через понятный интерфейс.
В чём же проблема этого вашего Qt. Это по сути глобальный фреймворк, в котором есть всё. Да, там есть неплохой qt widgets, но ещё там есть куча другого говна, и всё они хотят чтобы ты делал "по ихнему". И тесты у них свои, и система сборки у них своя, и сигналослоты у них свои, и там библиотека Qt Network которой вообще пользоваться не возможно.
Они, короче, решили, что они laravel или rails, хотя народу просто нужна нормальная библиотека для гуя. Поэтому на кутэ обычно пишут маленький гуй без функционала, а весь кор на чём-то другом. Возможно на C++ и boost.
Просто сейчас нет нормальной библиотеки для кроссплатформенных гуёв. Либо электрон, либа эта параша.
Есть поле класса std::string В одном потоке я изменяю эту переменную и считываю. В другом потоке просто считываю. Будет ли это потокобезопасно? Могу в первом потоке сделать просто запись без проверки.
>>1712789 ну да, я пишу год на qt, вернулся к плюсам и понимаю что многих вещей базовых не могу быстро вспомнить, постоянно хочется сделать QString->number(a) или для чего то ещё заюзать готовые интерфейсы, отвыкаешь что всё делать нужно руками и привыкаешь что для любого действия есть велосипед.
>>1712798 Очевидно, что не будет. Поток который изменяет может увеличить размер строки, тем самым старая память освободится. А если в это время другой поток читает эту строку, то после освобождения памяти он вылетит.
>>1712825 вот и мне сейчас либо через вебенжин либо через нетворк сделать до конца июня это говно дял яндекса и приступать к диплому)) хз чё делать, наверное буду симулировать монитор)
>>1712825 Просто на стековерфлоу увидел подобный ответ, поэтому был не уверен стоит ли писать мютекс. In MSVC, std::string is no longer reference counted shared pointer to a container. They choose to the entire contents by-value in every copy constructor and assignment operator, to avoid multithreading problems
>>1712843 Если бы string был потокобезопасным, то это наверное бы на cppreference указали? Да и вообще помоему в stl нет ни одного потокобезопасного контейнера изкаробки, какой шанс на то, что string вдруг станет таким?
>>1712843 Не знаю, я пытался гуглить, там написано что VC++ strings не являются reference counted shared pointer, но там не сказано что это делает их thread safe. Просто типа COW - плохо для мультитрединга. Ну это всё
Можно ли оптимизировать такую конструкцию? Часто вызывается функция, которая делает следующее:
// do smth if (!rareStuffDone && rnd(0, 1000000) == 1) { // do rare stuff rareStuffDone = true; } // do other stuff
А то получается, что этот if вызывается почём зря, если работа уже сделана. Тут одна проверка bool переменной, но все же как-то нехорошо. Было бы круто вообще этот кусок кода выкинуть после выполнения. В прочем, для этого if и нужен, проще скорее всего не сделать. Но вдруг я чего-то не знаю.
>>1712987 Можно конечно, но нахуя? Сделай 2 функции, в одной будет этот блок с редким кодом, а в другой нет. Создай глобальный указатель на первую функцию и после выполнения ее просто измени значение указателя на вторую функцию. Вызывать соответственно всегда тоже по указателю. https://ideone.com/fL4R0y
>>1713045 > Как это работает? Вопреки здравому смыслу. Сразу видно, что сишка - это в первую очередь сахарок для ассемблера, а не высокоуровневый язык.
>>1712789 > Просто сейчас нет нормальной библиотеки для кроссплатформенных гуёв. Либо электрон, либа эта параша. А когда они были?
По поводу электрона и прочих это эпичный обсер, казалось бы html/js/css не зависят от платформы но блять на каждую сборку под каждую ос собирать 200мб файл с браузером внутри это пиздец товарищи + на других архитектурах еще более не очевидно, поэтому сама идея пока нежизнеспособна, вот если бы в каждй ос стоял этот ебучий v8 как платформа для запуска таких приложений, как гарантия что он на клиенте есть, можно было бы эти приложения не собирать под каждую платформу а просто передавать как есть в чем собственно и должен быть их плюс, но сейчас этого тупо нет.
В нулевых, назывался winapi. Поддерживал все платформы, на которых тогда люди сидели.
> На каждую сборку под каждую ос собирать 200мб файл с браузером внутри это пиздец товарищи
Ну поставь себе 16 гб и не еби мозг. Электрон юзают не потому что он хороший, а потому что остальное говно. Да и электрон мобилы не поддерживает, а надо бы...
Охуенно, зашёл блять на страничку а там про негров.
>>1713121 Зато почти везде есть браузер. Единственный реальный способ сейчас сделать пооностью кроссплатформенный гуй -: сделать приложение в виде обычного сайта и всем давать на него ссылку. Ну или везде ставить локальный веб-сервер, как питоний jupyter-notebook. А на электрон забить нахуй, в конечном итоге он ничем не лучше Qt, но намного прожорливее. Сама идея запускать по браузеру на каждую мелкоприложуху никак в 2020 не вписывается. Может, лет через 5-10.
> Единственный реальный способ сейчас сделать пооностью кроссплатформенный гуй -: сделать приложение в виде обычного сайта и всем давать на него ссылку.
Лел, только электрон кроссплатформенный среди линух мак винда, а на мобилку или плейстейшон нельзя.
Ну хз, тенденция идёт наоборот. Нативные браузеры в мобилках - говно. Народ всё равно в vk, facebook, instagram и даже в банковской хуйне сидит через приложения, а не через бровсер. Да и я тебе скажу сделать мобильное приложение которая api-ху дрючит не сложнее чем сделать сайт который мобайл френдли.
>>1713190 >Народ всё равно в vk, facebook, instagram и даже в банковской хуйне сидит через приложения, а не через бровсер. Не так давно перешел с обычного телефона на смарт и меня это как раз поразило.
>>1713190 И в результате у юзера на телефоне вместо одного браузера стоит несколько десятков однообразных приложений доставок, магазинов, клубов, кальянных, суш, баров, кафешек занимающих дохуя места и запускаемых раз в полгода. Не знаю, что будет в будущем, но текущее положение дел явно не выглядит здоровым. Ну, ещё есть тенденция делать "гибридные" приложения, по сути тот же подход электрона, но для мобилок.
>>1713012 В чем рофел? Кроме того, что можно "== 1" не писать, если эта функция генерирует равномерное распределение?
>>1713020 Хм, интересно, спасибо. Не подумал об этом. Но лучше оставить как есть, наверно, эта микрооптимизация не стоит дополнительного запутывания кода.
> И в результате у юзера на телефоне вместо одного браузера стоит несколько десятков однообразных приложений доставок, магазинов, клубов, кальянных, суш, баров, кафешек занимающих дохуя места и запускаемых раз в полгода.
А шо ты хотел. Там в интерфейсе никто не ограничивает, а ещё и работает быстрее так как вместо жирного запроса с тоннами гиппертекста дергается апиха.
https://godbolt.org/z/uYapRE Есть две структуры отснаследованные от кучи других, при этом у них есть одна общая. Как наиболее правильно приравнять эту общую, чтобы не сломались какие-то ссылки, указатели или любые другие данные?
>>1713238 А как ещё, если нужно именно случайное срабатывание, а не на n-й раз? Из идей у меня только миллисекунды от текущего времени брать, но это как-то костыльно. Хотя, работать может и быстрее, наверно.
>>1712789 Я не сильно много делал гуи, но сейчас, я думаю, наилучший путь - веб-морда и REST с mvc паттерном. Qml так-то тоже идёт путем mvc, мне это нравится, хорошо отвязывается бэкэнд от гуя со свистоперделками и анимацией, и отличная кроссплатформенность вдобавок
>>1713165 Я както решил порисовать, но понял, что в 2к20 сильно использовать ООП (а uml как раз про это) не самый здравый подход. Сейчас мой код имеет много функциональщины и композиции с простыми, мелкими и понятными функциями, и с достаточно простыми типами, и юмл избыточен, так как архитектура проста, а вся связь описана в @brief
>>1713287 Используй std::uniform_real_distribution, диапазон 0:1, сгенерированную вероятность сравнивай с вероятностью твоего говна (у тебя 1e-6), это будет правильный подход.
>>1712987 > if вызывается почём зря Процессор оптимизирует эту хуйню (branch prediction). Если тебя волнует оптимизация то лучше постараться уменьшить количество вызовов ГСЧ - даже если у тебя там простой линейный конгруэнтный или (в идеале) xorshift - они быстрые но все равно вносят задержки. Один из вариантов - сразу сгенерировать номер итерации на которой на которой нужно сделать редкую хуйню, а в цикле просто инкрементить счетчик. Но тут нужно осторожно так как два этих подхода не равноценны - у них разное распределение, подход с заранее вычисленной итерацией гарантирует максимум итераций через которую произойдет срабатывание тогда как твой подход таких гарантий не дает. Поэтому смотри по производительности. Если ускорять не нужно - то лучше использовать твой подход.
>>1713680 > Процессор оптимизирует эту хуйню (branch prediction). Только после нескольких исполнений и если бранчь обсирается то начинает профилировать заного.
Ну как ты делаешь связь с бэком - это уже другое дело. Если приложение клиент-серверное, то тогда как ты сказал. Если нет, то преложение в виде демона с отдельным гуём.
У Qt хороший гуй, я бы даже сказал самый лучший на рынке среди всех. Лучше gtk, лучше uwp, лучше электрона, лучше чего угодно на свете. Но есть одно "но", Qt это не библиотека для гуя, это general purpuse framework. Но вот кроме гуя мне отних больше нихуя не надо, а они наворотили кала и экосистемы, переписали весь stl, какой-то свой DSL на макросах нахуярили. Зачем?
>>1713788 > Только если у тебя C++03. В новых крестах stl-контейнеры в разы лучше q-контейнеров Кулстори. В стл и половины функциональности нет. После qstring стд та еще боль
>>1713774 Ну так отвяжи свою суперлибу от qt. Нужен гуи - используется qt, не нужен - не используется. Предположу, что консольная версия vlc плеера (я ее использую для стрима юсб камеры) вообще не использует qt
>>1713898 >небольшая программа весит 100мб Если статически слинковать - меньше 20Мб. С upx - около 10. Если новые плюшки не нужны, то 4.8 около 5Мб c upx занимает.
>>1713788 >В новых крестах stl-контейнеры в разы лучше q-контейнеров Чем лучше? В qt все гораздо удобнее, человекоориентированнее. Например, у QMap есть метод value(key, defaultValue), который вернет дефолтное значение, если ключ не найден. У std::map только find, возвращающий итератор.
>>1713910 >Можно гайд по этому всему? В инете куча инфы, если гуглить "qt статическая линковка" (хотя и устарелой, большинство статей по Qt4, но принцип должен быть понятен). UPX - утилита для сжатия exe: https://github.com/upx/upx/releases
>>1713936 >Там китайцы работают в основном, и белых они не любят В московском R&D центре в основном только китайцы работают? Вроде как слышал, что наших студентов в хуавей приглашают работать.
>>1713936 Пиздеж, кстати. Но без нормальной вышки туда попасть будет сложно, они на собесах трепетно к этому относятся. И английский надо знать на уровне повыше "я прочитал документацию с гуглтранслейтом" знакомый пистех на этом прогорел.
Windows/Cmake/Qt/Winapi - Двач, можете подсказать как мне узнать что в моём коде жрёт производительность? Программа не маленькая и несколько запутанная, я никогда ничем подобным не занимался, но слышал что есть какое-то профилирование, но в Qt Creator на Windows по всей видимости оно не доступно, а в visual studio из-за cmake я Qt проект перекатить не могу. В общем можете подсказать что делать?
>>1714449 По чистой случайности же. В дебаге скорее всего просто в регистре последнее вычисленное значение остаётся, оно и возвращается. Попробуй в конце "вернуть" что-то больше твоего инта и пиздец будет даже на дебаге. В релизе компилятор посмотрит, что ты еблан и либо вернет то же самое, что и другой return, либо вообще какую-нибудь хуйню. УБ всё-таки
Сука, какое же говно это ваше системное программирование, сука три дня изучал ебаное апи этого mpv, все через асинхронные вызовы зделал ебать, никаких устаревшихфункций или событий не использую, и что в итоге?
start stop
start stop
start loading play...
блять хочу сразу файл открою, хочу не сразу, че почему - хуй вообще знает
в итоге там че то делал уперся в какую то хуйню, тут какая то хуйня, там это ебаное метопрограмирование фокусы начало показывать (где то ссылку на переменную поставил она динамично меняется и че то не так все работает, но что и как найти тяжело в этой лапше жопу бомбит пиздец лол). В общем ебатни много а прогресса мало.
>>1714410 Действительно, g++ компилирует. Функция возвращает значение последней строки функции как в Ruby, если компилятор не выкинет его в процессе оптимизации . Ну и язык, они кусок кода ахуительней другого просто.
>>1714504 return завершает текущую функцию и управление возвращается в то место, откуда она была вызвана. Если foo вызывает bar, то foo останавливается и выполняется bar. После того как bar завершилась (например, с помощью return), выполняется код, который идет в foo ниже вызова bar. Так должно быть, хотя теперь я уже ни в чём не уверен.
Даже если не указать return, в ассемблерном виде у функции будет ret (как если бы функция было просто void), другое дело что возвращаемое значение будет неопределенным, тк если нет return, содержимое eax/rax не будет изменено, и в качестве ответа вернется то, что будет там в этот момент
>>1714526 В изначальном примере работало потому, что вычисления в функции никак не зависели от возвращаемого значения. С факториалом такой фокус уже не пройдет
Не нашла треда по алгоритмам, поэтому спрошу здесь. Как использовать одномерный массив в качестве двумерной матрицы? Не пойму, как найти номер элемента, используя i, j и, собственно, саму размерность.
>>1714495 Что значит запустить? Запустить приложение? Как обычно, скопировать DLL рядом с exe. Запустить сборку? Без задней мысли открываешь папку с cmakelists.txt и фиксишь ошибки
>>1714650 Почему можно? Просто я когда видеоурок смотрел, долго вдуплял, почему cout << *pointer; выводит значение ptr без обращения к методу operator.
>>1714656 Просто потому, что альтернативный синтаксис для этого. Это как arr[x] и ★(arr + x) Ну, ещё через синтаксис operatorX можно определить указатель на такой метод: int (★A::fp)(int) = operator★; С "сокращённым" синтаксисом так не получится.
>>1714376 У меня всё падает с -O2, -O3 или -O1 и работает с -O0 - и всегда так было. Твой код так же и нихуя там не остаётся в регистре. По этой причине я не выключаю -O1 никогда.
>>1714771 Если функция не возвращает значение когда должна - то это ub, а не проблема в флагах - потому что компилятор никаким образом не может догадаться какое значение вместо возвращаемого подставить.
Вообще разработчикам компилятора стоило бы просто сделать так, чтобы компилятор выпадал с ошибкой при подобном вместо предупреждений на который никто не смотрит. Сразу треть ub в окно вылетит.
>>1714772 Когда ты точку с запятой забыл поставить, компилятор высирает ошибку, хотя научить его распознавать когда они необязательны проще простого (в других же языках это как то делается), тем не менее это категорически никто не делает, потому что это нарушение стандарта языка. А тут значение забыл вернуть похуй компилируем.
Это явно где то проеб в компиляторе, а если еще оптимизации код ломают то еще и в них.
>>1714776 >А тут значение забыл вернуть похуй компилируем. > >Это явно где то проеб в компиляторе, а если еще оптимизации код ломают то еще и в них.
return не обязателен, если функция не возвращает управление. Кунпелятор не может доказать, что управление возвращается, поэтому он только выдает предупреждение: ex.cc:2:5: warning: control reaches end of non-void function [-Wreturn-type] foo(a-1); ~~~^~~~~
>>1714947 За щеку тебе вводили. А функции, не возвращающие управление, существовали со времен деда Томпсона. >>1714856 Дурачок, ты тоже прочитай и подумай.
>>1715000 Ну-ка, умник, объясни, зачем в языке нужна сущность, которая явно указывает на то, что функция не возвращает управление, но при этом по умолчанию оно так и работает, хотя это в 99.99% случаев является ошибкой.
>>1714990 ЕМНИП символ, определенный как weak линкер не обматерит при переопределении, а заменит на новый. Типа есть какая-то дефолтная реализация, и ты можешь написать свою, а можешь не писать. Видел такое один раз, в какой-то либе для МК.
Я могу полностью игнорировать предупреждение "taking address of packed member .. of class or structure .. may result in an unaligned pointer value" на х86, и это сообщение только для условных arm, верно?
>>1715074 Не обязательно. На x86 тоже существуют alignment requirements, где required align for certain type is > 8
При этом вручную использовать всякие avx2 не обязательно, иногда достаточно попытаться собрать свой проект с -O3 и увидеть, что работать, внезапно, перестало, так как структуру ты запаковал, а компилятор всё равно охуел.
>>1715102 Это сишка? Так только на плюсах можно, в сишке обязательно писать "struct", "enum" и "union" перед типами. Ну ли определи синонимы через typedef.
>>1715083 Нет, никаких simd, просто несколько структур для сохранения в файл. >-O3 Он разве не должен сам скомпилировать без побочных эффектов с более медленной инструкцией загрузки невыровненных данных, если там стрёмный указатель и информацию про выравнивание он получить не может? Можешь в общих чертах описать что примерно нужно сделать, чтобы корректный код работал некорректно из-за автоматических simd в O3? Хочу получить это ошибку явно, если она существует - потому что я с O3 компилю всё.
>>1715102 Просто в объявлении пиши сразу typedef enum hgfsd{} hgfsd;
>>1715000 > А функции, не возвращающие управление, существовали со времен деда Томпсона. Перестань говорить слова смысл которых не понимаешь. Возврата управления нет, есть передача управления и возврат. Это машинные команды и к коду на с/c++ они не имеют отношения. В функциях на си ты пишешь ретерн что бы выплюнуть тип либо выйти из функции где то в середине кода. Машина работает ровно наоборот - ей надо говорить явно куда перейти (куда передать управление), а обратно она вернется сама. И так до тех пор пока не кончится вся цепочка исполнений идущая от ядра и машина просто встанет
>>1715176 Бля, развлечения каждый день. В прошлом треде нас посетил O(2n)-шизик. А сейчас спешите видеть и обучаться подробностям "цепочки исполнения идущей от ядра". Но осторожней! Она закончится и машина встанет!
>>1715189 Ну во-первых, для возврата из функции нужен собственно адрес возврата, предварительно положенный в стек. Остальную твою хуйню мне даже читать лень.
>>1715195 > мнум...пук..ну вот как бы ну вот там стек и там адрес возврата как бэ есть а там все дальше понятно. А что будет если не будет адреса возврата на стеке?
>>1715171 >Он разве не должен сам скомпилировать без побочных эффектов с более медленной инструкцией загрузки невыровненных данных Должен, но я в некоторых версиях gcc/g++ наступал на баг, когда он этого не делал
>>1715203 > Будет jmp Но ведь функции без "возврата управления".. как же так? Машина получается все равно куда то возвращается и куда все возвраты идут? Можешь не отвечать а идти сушить одежду от своей же струи мочи пущеной против ветра.
>>1715233 Я согласен только с тем, что тупые терминологические разглагольствования ничем не лучше задрачивания всех паттернов и несколько десятков видов сортировок и деревьев. ООП-теоретики напридумывали кучу лишних терминов, когда в реальности их названия никто не вспоминает, и если кто-то написал код, попадающий под одно из определений, почти 100% он даже не вспоминал, как именно это называется.
>>1715240 Ладно, я перефразирую вопрос. Если я создаю в конструкторе класса объект другого класса через оператор new, то вложенный объект будет уничтожен вместе с объектом первого класса, верно?
>>1715242 Не обязательно, ты можешь потом указатель на объект второго класса передать куда угодно, и он там сохранится и будет валидным, когда объект первого класса удалится. Ну разве что сделать delete второго объекта в деструкторе.
>>1715278 Почему нет? Кликаешь, скачивается установщик (сам, без уебанских ссылок на сайт, открываемых в браузере), детектит, что программа установлена, и предлагает обновить. Далее - далее - готово. Ну или делать то же в фоне без участия пользователя, прога запустит установщик сама и завершится, а установщик сделает всё автоматически.
>>1715199 Что захочешь, то и будет. Ты же у нас на ассемблере пишешь в обход call, ret и прочих предрассудков для быдла. А конпелятор сишечки всегда кладет адрес возврата в стек перед вызовом и всегда делает return перед }, если ты сам не сделал, и в случае, если функция не void, вызывающий код получит содержимое rax.
>>1715186 хуй знает, а чем ты, но из определения вот этой хуйни O(...) следует, что никакие константные множители не меняют значения, стало быть, излишни
>>1715448 > конпелятор сишечки всегда кладет адрес возврата в стек В рот он тебе залупу кладет, компилятор в файлы компилирует, а стек он в памяти находится, это тупо формат данных котором машина понимает где что находится (агрументы/адреса локальные данные) и до каких пределов. Как ты вообще себе представляешь адреса куда-то записывать? Откуда ты знаешь какой адрес будет у функции пока ты ее в память не загрузил? Ни ты ни компилятор ни машина не знают этого, а только только знают под каким ковриком он должен лежать си под каким ковриком будут свой держать.
Вообще эти разговоры в железяче должны быть, тут им не место, тут высокоуровневый язык не имеющий отношения к железу и стекам. На эльбрусе вон вообще стеки разделенные - аргументы и возвращаемые значения отдельно в одной области памяти, адреса возврата в другой вообще, локальные данные как обычно просто друг за другом, и как то блять плюсовый код на нем компилируется запускается.
>>1715467 Ну хорош)) Тут перетолстил уже. Очевидно же, тот анон имел в виду, что компилятор пишет код, который кладет в стек адрес. Обычно это сводится к правильной расстановке call и ret.
>>1715467 >Откуда ты знаешь какой адрес будет у функции пока ты ее в память не загрузил? Адреса функций в таблице символов экзешника лежат, и они всегда одинаковые, потому что виртуальная память.
Абсолютные адреса неизвестны в момент исполнения, да, но есть такая вещь как относительные джампы, чтобы передавать управление относительно текущего места, а жто уже изи рассчитывается в компайл-тайме
Плюс если аслр отключен, то все абс адреса также не изменяются на этапе компилирования
>>1715774 Паем возможно сделать любую прогу, для этого есть релоки Если базовый адрес неизвестен до запуска, вычислить его правильно у тебя получится если ты - ванга, и если так совпадет, что аслр будет грузить модули каждый раз по одним и тем же адресам, вероятность чего даже меньше чем твой писюн
Правильно ли я понимаю, что если я скомпилирую код в vs под x64 то он будет работать на любой винде с 64 битным процем? И как посмотреть наборы используемых инструкций?
>>1716275 Способов много. Например, юзать аппаратный генератор, ну или создавать несколько тредов, измерять среднее время выполнения и брать наименее значащие цифры. А в простейшем случае - функция типа rand_value = (A*rand_value + B) % MAX, где заранее подобраны хорошие A и B.
>>1716282 Безопасно в плане не похерить данные? Если операция не прервётся, то вполне. А если может прерваться (программу убили, питание отрубилось), можно заранее сохранять бекап. Ну или просто позицию, до которой успели докопировать.
>>1716310 >переключиться на другой рабочий стол А как сразу запустить программу на другом рабочем столе и вообще переключить его? Я хочу что-то вроде desktops.exe (который от sysinternals), но со своими фичами.
>>1715771 > Абсолютные адреса неизвестны в момент исполнения, да, это правда, но нужно учитывать что у каждого процессора интел есть приусадебное хозяйство относительные переходы. Окей я понял, только я отвечал про стек, в файлах нету стека. Во вторых ежу понятно что там или локальные/виртуальные адреса какие-то, выравненно все располагается или еще что-то, иначе б не работало нихуя.
Анон, у меня много static функций, простых пиздец, обычно математика. Что мне мешает к каждой приписать constexpr? И какой-нибудь msvc в релизе реально не сделает то же самое, что сделал бы constexpr?
Двач, читаю память из другой программы, в ней строки с символами с номерами 200-255 (ä, ó, á, ö) хранятся побайтово. Это что, UTF-16, Unicode? Когда же сам получаю эти строки в std::string, выводятся кракозябры, помогите.
>>1716909 > выводятся кракозябры Что выводится зависит от используемого шрифта. Пиши конвертер из твоей хуйни в юникод, и выводи на что-то поддерживающее юникод.
В питоне есть numba, которая прямо на ходу компилирует функцию.
Есть что-то подобное для с++ (желательно без установки sdk на 10 гб и тысяч строк кода в программе), что позволяет из какого-то языка скомпилировать (это важно - интерпретируемые скрипты вообще не подходят из-за быстродействия) в машинные коды функцию в райнтайме? Нужна только работа с математикой и возможность ограничить явное выполнение произвольного кода с доступам к файлам, сети и всего такого прочего (без фанатизма - решать проблему с доступом к чужой памяти не обязательно). Что-то на уровне возможностей шейдеров glsl (си без рекурсии и ещё с некоторым ограничениями) будет достаточно, просто чтобы можно было функции и структуры использовать.
Есть идея прямо на ходу компилить dll-ку через gcc, но я не знаю как это сделать в линуксе (и какой-то там вообще аналог dll) - и не очень знаю как там организовать ограничение доступа к файлом, будет ли достаточно просто все файлы кроме math.h удалить. В общем, посоветуйте что-то, пожалуйста.
>>1716981 Без десятикратной потери производительности добавить возможность что-то делать с вводимой (математической) функцией без перекомпилирования?
>>1716984 Угу, он и есть. Но нужны структуры и функции. Желательно с синтаксисом си, и желательны перегрузки операторов и методы - но их я на стадии препроцессора могу сделать может быть. А вот компилятор не смогу.
>>1716987 Пишешь текст на сях в файл. Вызываешь cc -fpic -shared -Wl,-soname,libmy.so /tmp/file.c Подгружаешь библятеку с помощью dlopen, получаешь адрес функции. Перед вызовом функции делаешь chroot в пустую директорию.
Имею только опыт ковыряния всякого легасиговна на 98 стандарте. Подскажите идею для петпроджекта чтобы с многопоточностью и всеми этими современными хуёвинами чтоб.
Есть какая-нибудь фигня для просмотра и редактирования настроек clang-format? В ide, мягко говоря, неудобно - нужно после каждой правки в настройки лезть.
>>1717303 Ничего, не clang-format же. Там же сам clang можно просто для разбивки на токены использовать.
>>1717302 Он с ide не стыкуется. Ещё и платная хрень от моей нелюбимой компании. Написано только про плагины для студии. А у него есть консольный интерфейс, просто запиратить и посмотреть как оно? Меня вполне устраивает форматирование через батник пару раз в день - интеграция с ide и не нужна в общем-то.
Сап, двач. Посмотрел код битка, там они написали свою транспортную библиотеку и свои сокеты. Посмотрел код того же торрентного протокола - та же хуйня.
Почему бы не использовать boost asio для p2p? Это же можно, или я чего-то не понимаю? Или asio для этого не подходит?
>>1709291 Где-то во врезках было, кажись у Липмана, что разница есть: постинкремент создает временный объект; соответственно лучше его не пользовать, там, где фактически не нужен его побочный эффект.
Анон, в качестве ключа umap у меня матрица. Я подмешал в ::std, как должен происходить хеш для этой матрицы. Вопрос: лучше сделать umap от ключа size_t и внешне считать хэш, или прям матрицу сувать туда как ключ? Второй вариант удобнее, но первый как-то выглядит быстрее, так как хэш явно посчитается один раз
>>1718177 Почему в мире крестовиков что ни возьми - найдётся дохуя хейтеров этого? WinAPI параша, POSIX API параша, Boost параша, Qt параша, STL параша, COM параша, MFC параша, OpenGL параша, Vulkan параша, OpenCV параша, только C с классами норм.
>>1718749 >Что думаете об этой конторе? ХЗ, видел на конференции пару челиков оттуда. Вроде норм, если угораешь по дифференциальной геометрии и прочему трешу. >>1718749 >И как вообще на рынке дела с разработкой сапров и прочего софта для инженерного анализа? Цветет и пахнет. Не лезь дебилсукаебаный, оно тебя сожрет
>>1718837 Я как-то работал в конторе, в которой была написана полностью самодельная стандартная либа, все ебучие контейнеры, все кроссплатформенные обертки для потоков и всего остального, и даже UI. Ах какие они были молодцы, но наверное загнулись уже сейчас.
Представь приложение для голосовой конференц-связи, размером 600килобайт. Теперь иногда с теплотой вспоминаю, жаль что в те времена не оценил как там было круто.
>>1718749 >как вообще на рынке дела с разработкой сапров и прочего софта для инженерного анализа
Аскон, t-flex, больше ничего относительно крупного не знаю. И то, аскон в рязане/коломне/нижнем держит свою основную разработку, а не в москве. Особо много вариантов для трудоустройства нет.
>>1718867 > Как вкатиться? Как и в другие конторы: оставляешь резюме, получаешь тестовое задание, идёшь на очное собеседование. > И какие возможности для карьеры в студента в Москве? Что ты понимаешь под карьерой? > Вообще слышал, что сапры - очень консервативная отрасль, это правда? Не понял, что значит "консервативная"?
>>1718897 >Что ты понимаешь под карьерой Стажировки, вакансии для джунов. Хотя бы это пока что. А то в области сапров этого я почти и не видел, по крайней мере на хх уж точно. Даже непонятно, как искать такую работу кроме как у очевидного аскона.
>>1718931 Интересно, какие доходы у разработчиков сапр? Я вообще из мира джавы, просто интересно, сколько платят людям за знание геометрии/вычмата/оптимизации/сопромата/etc Кто-то говорил, что даже до средней до рыночка не дотягивает и люди годами работают за условные 100к в мск. Это так?
>>1718943 > Ты из c3d? Вы же в коломне, а не москве? Не скажу, деанон травля >>1718973 > знание геометрии/вычмата/оптимизации/сопромата/etc Это только джависты думают, что это всё надо. Джуном можно идти с одной только геометрией уровня "знаю как загуглить уравнение прямой на плоскости". Всё, что ты перечислил, знают специально обученные люди, которые в случае чего тебе всё объяснят и проверят. если тебя в конторе заставляют это всё учить, значит твой босс этим летом поедет в охуенный отпуск за твой счёт
По деньгам - да, с жабой не сравнится, но медиана есть медиана
>>1718987 А какой стек желательно знать, чтобы с большой вероятностью вкатиться? Помимо очевидного C++, STL, алгоритмов и общих скиллов типа гита? И как гуглить вакансии? По условным "C++ cad cam", "C++ сапр", и т. д hh выдает только пару вакансий во всей Москве. Я что-то не так делаю?
Если смотреть исходники любых крупных библиотек, код там напоминает магию: никакого использования API операционных систем, никаких STL или Boost. Но все работает быстро и корректно. Сейчас пишу высокопроизводительную программу, и в интернете очень много советов типа не использовать STL, не использовать динамическую память, не использовать мьютексы. А как тогда писать сложные и крупные программы? Открываешь книги по плюсам, и там всегда Hello World, что такое указатели, что такое STL. Что почитать, чтобы научиться писать код без всего этого?
>>1719003 Как будто бы и да, но тогда возникает вопрос: а зачем тогда вообще нужны плюсы? Вот прямо сейчас смотрю книгу Солтера/Кеплера, и они пишут: плюсы круто, мы писали супер производительный код чисто на плюсах, не на си. Но советов каких-то нормальных я там пока не вижу.
>>1718990 > А какой стек желательно знать, чтобы с большой вероятностью вкатиться? Того, что ты перечислил хватит. Но знать нужно достаточно уверенно. Язык уж точно. > И как гуглить вакансии? Попробуй что-нибудь инженерное дописать или без сокращений "проектирование" > hh выдает только пару вакансий во всей Москве Да их в принципе немного
>>1718998 Как это не использовать API операционных систем? Без использования API ОС все, что ты можешь делать, это заранее выделенную память менять, кек.
>>1719007 Не использовать темплейты ещё не значит не использовать C++. В плюсах есть классы, неймспейсы, более вменяемые строки, лямбды и прочее (нет).
>>1718998 1) юзер желательно должен иметь возможность собрать либу с минимальным гемором, поэтому буст, как правило, отваливается. 2) если либа предполагает использование из других языков, то интерфейс всё равно будет на С. То есть, как ни крути, придется работать с указателями, буферами, кастомными функциями аллокации, т.д. Оборачивание всего этого в крестоконтейнеры только всё усложнит. 3) если либа крупная, то она, скорее всего, ещё и старая -- это означает устаревшие подходы.
>>1719326 Эх прям как жс, хуяк и новый стандарт с лямбдами и классами, сначала противишься плюешься потом ну вот в таких случаях буду писать так шоб без фанатизма, а потом как ебанутый тыкаешь это везде, по старому пишешь только в особых случаях. Чет начинаю уже полюбливать плюсы.
>>1719453 Лямбда с auto параметрами в данном случае просто превращается в шаблонную функцию.
Ничего сложного, что-то типа template<class... Ts> void print(Ts args...)
Самый жыр тут в pack expansion. Как сказано в стандарте, A pattern followed by an ellipsis, in which the name of at least one parameter pack appears at least once, is expanded into zero or more comma-separated instantiations of the pattern, where the name of the parameter pack is replaced by each of the elements from the pack, in order.
На пальцах, это значит, что ... размножит предшествуещее ему выражение для каждого параметра, подставляя этот параметр вместо имени пака.
На цппреференс приводятся такие примеры f(&args...); // expands to f(&E1, &E2, &E3) f(n, ++args...); // expands to f(n, ++E1, ++E2, ++E3); f(++args..., n); // expands to f(++E1, ++E2, ++E3, n); f(h(args...) + args...); // expands to f(h(E1,E2,E3) + E1, h(E1,E2,E3) + E2, h(E1,E2,E3) + E3)
Код с пикрила разложится как ((cout << "Hello" << "\n"), (cout << "World" << "\n"), (cout << 123 << "\n"), (cout << 3.14159265 << "\n")); что вполне легальное выражение, т.к. оператор запятая возвращает свое значение справа которое потом игнорируется и это тоже валидно
Вот и всё. При помощи этой фичи можно писать ещё большую шизу. Так например можно унаследовать класс от неопределенного количества базовых и прокинуть их операторы или конструкторы. template<class... Bases> struct S : Bases... { using Bases::operator()...; };
>>1719212 Не знаю почему, но без инициализации *pupaM всегда возвращает одно отрицательное число, хотя там мусор должен быть. Это специфика такая, или у меня оперативка одними числами забита?
>>1719652 >*pupaM всегда возвращает одно отрицательное число Ну совпало так. Перезагрузи компьютер, или погоняй его, чтобы память засралась разными данными из разных программ - и будет другое. Он просто попадает в одну и ту же область памяти, судя по всему, и в этой области лежит одно и то же значение в этом сеансе.
>>1719660 >Перезагрузи компьютер, или погоняй его, чтобы память засралась разными данными из разных программ Перегрузил, забил всю оперативку, все равно одно и то же значение -842150451.
>>1719685 Твое -842150451 это 0xCDCDCDCD в шестнадцетиричном виде, думаешь совпадение? В дебаге, покрайнем мере в студии, после new выделенную памаять записывается специальное значение чтобы было проще найти неинициализированные переменные.
Cделал программу в QT, из среды она запускается, а из папки с исполнимым файлом требует qt5core.dll, qt5gui.dll, qt5widgets.dll. Если скачиваю со сторонних сайтов эти библиотеки, появляется ошибка 0xc000007b. Как быть?
>>1719754 Запусти qtwindeploy или windeployqt, как-то так называется утилита,
1. в PATH пропиши путь к этой утилите. 2. потом в каталоге где у тебя собрался exe: qtwindeploy yourexename.exe и оно подтянет туда всё дерьмо, включая дллки переводы и прочее-прочее-прочее - будет готовый бандл, который уже можно хоть в инсталлер пихать и распространять.
>>1719806 Он часть не копирует - те которые не кютешные. Там их несколько, смотри что выводит и бери из кютешного каталога. Всякие libstdc++-6.dll и тп
Я полный нуб, если что Дано: две проги, которые делают один и тот же Х. Первая сделана по принципу: main.cpp вызывает функцию 1, та что-то делает, вызывает функцию 2, 2 делает что-то и т.п. Вторая сделана по принципу: есть класс, в котором функции 1 и 2, main.cpp вызывает функцию из класса и далее по списку. Т.е. единственное отличие, что во второй проге я запилил класс, чтоб не передавать миллион переменных из функции в функцию. Вторая прога работает на 10-15% медленней. Это нормально? Или я испортил?