Это копия, сохраненная 15 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
⚹ https://github.com/sosachbot/cppthreadhat/wiki
Ответы на вопросы:
⚹ https://en.cppreference.com/w/
⚹ https://www.cplusplus.com/reference/
Для указателей: ⚹
Прошлый: >>1914169 (OP)
говном против мочи освятил?
кляти хохлы
Да.
вопрос к тем, кто работал с облаками точек
В общем, у меня есть azure kinect, висящий ровно над объектом (в пределах человеческой погрешности)
Каким образом можно рассчитать, сколько точек будет находиться в объекте, после преобразования в облако точек?
Всмысле MultiIndex? Поддержание двух сортировок (по строке и по встречаемости) во время построения таблицы на всём множестве слов (хотя нужно только на 100 самых встречающихся) тоже может быть затратно.
https://en.cppreference.com/w/cpp/container/multimap
Я уже не помню, как решал, есчестно, помню, что в решении был мультимап
У тебя проблема с проверкой того, лежит ли точка в объекте, или ты уже этот вопрос решил и теперь хочешь этот процесс ускорить?
не совсем
короче у меня есть предмет, размеры которого я точно знаю - это коробка от обуви, рядом с этой корбкой лежат более мелкие предметы
и вот мне нужно эту коробку распознать
после кластеризации у меня остается прям выделенная коробка и другие кластеры
я хочу отфильтровать по количеству точек в кластере мелкие предметы
и поэтому я хочу знать, условно, сколько точек на мм\см\м мне дает азур кинект
А вот и высеры подпитоныша. Я уж запереживал, что ваше отребье не появится.
https://pastebin.com/an7zqKFy
объясняю, что хочу и что идёт по пизде. есть контейнер foo, в котором хранятся структы Bar. есть функция, которая проверяет, есть ли структ bar в контейнере. если нет, то тогда и только тогда создаёт новый структ. а если есть, то вытаскивает тот, что уже есть. после этого всего с созданным/вытащенным структом функция что-то делает дальше.
короче, как это бы сделать, чтобы совсем не уёбищно было?
Выблядскому языку об этом грех не напомнить.
https://github.com/pyca/cryptography/issues/5771
pohuy
Спасибо, что не iostream.h
Ты вызываешь update для созданной на стеке переменной, переменные в контейнере не меняются.
if (it == end(foo)){
foo.emplace_back(Bar(val));
foo.back().update(update);
}
else
it->update(update);
bar.update(update);
Нет, кинект я в руках не держал, как он точки раскидывает я не знаю, поэтому ничем помочь не могу. Если формализуешь задачу, тебе много кто сможет подсказать, а так просто никто не понимает, что за хуйню ты спросил.
Да там скорее всего нужно мануал читать с какой частотой сканирование делается и по нему будет понятно, какую плотность точек лидар выдаёт.
Уже который тред об этом пишут.
Короче так, я более-менее освоился с С++, уже пишу лабы в стол, классы, ооп, паттерны - чисто общепрограмерское уже освоил.
Но С++ я осваивал урывками, где-то подсмотрел, где-то недочитал, где-то недослушал... Собственно когда-то я взял книжку С++ за 21 день. Честно выполнил там занятий по первой недели и бросил. Дальше я книг не читал. Во всем разбирался поскольку,постольку, заебывая всех вопросами или гугл....
У итоге ОООООЧЕЕНЬ много дыр в знаниях базы по С++. Ну типа работает инкремент и чем отличается от посткремента, или там что происходит с переменной при переполнении.. А как стековая память выделяется. А где же хронятся статические переменные. А где там константы и т.д. Я уже промолчу про такие вещи как rvalues и т.д.
И вот хочу взять книженцию и пополнить знания по базе...
И вроде как я уже и не новичок чтобы читать Липмана (пробовал, скучно, так как все это уже знаю, выискивать там среди тон текста дыры - такое себе занятие, иголку в сене быстрее нахожу).
Можно было бы конечно Страуструпа - но какой же он тяжелый
А что еще есть?
На размышление дается 30 секунд?
почему не работает?
Потому что {} надо ставить.
Потому что нет такого конструктора.
Книжки дальше бесполезно читать.
Ищи всякие вопросы по с++, типа такого:
https://cppquiz.org/
Ещё природное любопытство помогает - а что, если я вот так вота напишу... oh shit...
Конструктор объявлен
Bar(const uint & val)
Тип точно соответствует
const uint & val
Что же не так? Нельзя использовать emplce_back и forwarding?
есть опыт в юнити3д и байтоебле (суммарно года 4)
что делать дальше, чтобы вкатиться в крестики?
>Тип точно соответствует
А стандарте нет никакого uint, те литералы что он задаёт на вход функции дают обычный int, не unsigned, и я писал вообще про другое. Можешь не отвечать.
Тут бывший дев из EA пишет движок и попутно объясняет каждый чих, стоит ли вообще на вот всякое подобное тратить время?
Если хочешь заниматься геймдевом, то посмотри, не повредит.
Всего майерса сьешь
Трижды дрочую эстета - серии по началам графики лучшие на ютубе
Он объясняет все в очень общих чертах + если углубляется, то это касается лишь конкретной фичи, которую он реализовывает. Имхо, это скорее как обзор, если у тебя уже база построения чего-то подобного есть.
>>1938549
Новички не умею гуглить, после каждой проблемы пишут в тред, что сюда заходить не хочется.
Слэши хуевые, я думаю. Они забиндены под табуляцию, новую строку, вот это вот всё. Чтобы слэш напечатать, нужно двойной ебануть.
чел это метаирония зачем....
На самом деле там всё понятно. С обтекателем проблема, вон видно что он подчеркнут красной линией, кривовато только подчерктнуто
Да не, проблема в том, что iostream дорогие. Нужно puts использовать, на него лицензия осталась ещё с доса.
Я сегодня в касперыч проходил собес, первое задание было, типа, вот есть две функции:
void f1();
void f2();
нужно написать третью
void func(int i){
...
}
, которая в зависимости от аргумента (1 или 2) будет вызывать f1() или f2().
При этом нельзя использовать операторы сравнения, и то что вызывает их в неявном виде (if, switch, ...);
Я как бы сразу понял, в какую сторону думать надо, но, блядь, не додумал, и сдался. Задачу считаю, конечно, интересной, но ебанутой и для собеса не подходящей. А вы что думаете?
И после такой хуйни идут вопросы уровня детского сада, типа "че такое лист?))) че такое дедлок?))) а как сделать?))) что больше памяти занимает, лист или вектор?)))".
А потом вопрос:
-что такое new?
-оператор
-сколько видов перегрузок у него есть?
-.....................
-вы нам не подходите
Блядь, никогда new не перегружал. В общем, самый странный собес, что у меня был.
А вообще все плохо, уже 0-5 по собесам, вакансии кончились, остались только на галеры/говнопродукт. Походу придется учиться.
>Задачу считаю, конечно, интересной, но ебанутой и для собеса не подходящей. А вы что думаете?
Может быть куда то и не подходящая, но тут явно на реверсера.
>Может быть куда то и не подходящая, но тут явно на реверсера.
Не, это на Kaspersky OS, какая-то ебала для IOT.
Вообще там из плюсов, то что чекают кругозор. Типа, что такое fork(), как он работает; какой порядок байт у ARM. Я ответил, что little endian, что походу неправильно, т.к. там и так и так может быть, но блядь, я не эмбеддщик, я тупо мимо проходил.
Ну пососал так пососал, не ною.
Да вроде нормальные вопросы. Они же там байты ебут.
void func(int i) {
using pf = void(⚹)();
pf a[] = {f1, f2};
a[i - 1]();
};
>какой порядок байт у ARM. Я ответил, что little endian
Ну ты правильно сказал. little endian на ARM достаточно распространён (если дело касается именно процессоров).
крестовые библиотеки собранные разными компиляторами (и даже разными версиями одного компилятора) бинарно не совместимы, нужно все собрать одним конпелятором
void func(int i){std::map<int,void(*)()>{{1,f1},{2,f2}}();}
Был о каспере лучшего мнения, задавать вопросы аля круглоты люков - такой себе способ фильтровать людей
Там [ i ] перед ();} в конце конечно, на серваках двача начала память заканчиваться, не все влезает
Да, по идее где-то должен. Тогда map заменить на array.
Мне кажется что есть несколько путей решить эту штуку
Некст попытка
void f(int i) { ((void()()) ((std::size_t)(f1) ((unsigned)i % 2) + (std::size_t)f2 * ((unsigned)i / 2)))(); }
Я не могу сказать какой уровень разработки у меня, вроде знаю о многих вещах, но так не кажется, постоянно вставляю себе палки в колеса)
В какую область с++ стоит двигаться где меньше упора делается на математику? Математика на уровне 7-8 классов стопит меня. ДжаваСкрипт изучаю как замену для с++ (заниматься фронтом) после выхода из Университета
>Математика на уровне 7-8 классов стопит меня
Имхо, твоя ошибка в том, что ты отталкиваешься от своих текущих способностей, а не от желаний.
Способности -- не приговор, и легко прокачиваются.
Если станет тебе интересна какая-то область, и там нужна будет математика, ты ее подтянешь со школьного уровня до необходимого месяцев за 6. Потратишь на это хуеву кучу глюкозы, порвешь очко, но оно того будет стоить.
Если же желаний пока нет, и отталкиваться не от чего, то тупо дрочи фундамент. Алгоритмы, операционные системы, математику, опять же. Сети. Если дрочить фундамент не хочется, то дрочи что увлекает в данную секунду и не рефлексируй.
А по поводу того, в каких областях на плюсах не нужна математика - у меня ответа нет. Если ты готов быть посредственным программистом, то, в принципе, математика не нужна в 80% вакансий.
>Математика на уровне 7-8 классов
>после выхода из Университета
Нормальный у тебя такой "университет". Профтехнический или политехнический?
>>1939221
>Способности -- не приговор и легко прокачиваются
Ты там с навыками то не путай.
>математика, ты ее подтянешь со школьного уровня до необходимого месяцев за 6
С этого ещё больше проиграл.
Интересно, а есть ли какие-то анальные способы решить задачу через рефлексию? Грубо говоря, к буковке "f" присоединить i, получить название функции и ее вызвать. Есть ли в плюсах инструменты/библиотеки, это позволяющие?
Через UB возможно всё.
typeid(std::string("f")+std::to_string(i)), но внутри скорее всего сравнение по названию.
Так то в крестах рефлексия стандартными средствами не то чтобы есть,по крайней мере динамическая
Очевидный qt. Только вместо функций придется вызывать методы, ну и это уже надмножество крестов.
Что-то типа QMetaObject::invokeMethod(myObj, "f" + QString::number(i)); должно быть.
желательно какой-нибудь советский учебник 60-70х годов
семантика оператора индексирования для ассоциативных контейнеров stl подразумевает именно такое поведение которое тебе требуеться! подумой об этом на досуге! хотя я понимаю вы занятые кабанчики, и думать некогда, надо код писать!11
а ты проведи анализ рынка! на самом то деле в россии полторы конторы этим занимаются, и отслеживать если вдруг появится свободная вакансия легко
потом по всему миру нужно вообще наверное несколько десятков людей всего лишь которые бы писали на с++ дермецо для автоматизированного трейдинга
и не более
правда заключается в том что программирование - это высоконкурентная отрасль труда, никто тебе не будет помогать с реальными советами, мастерству не учат, мастерство воруют, награда для учителя - убийство учителя учеником, так всегда было
>
>
смотри ебать: сначала на собесе дают вопрос ну чутка посложнее, если ты на него влет отвечаешь, дальше уже ебашат по нарастающей
а если ты обосрался, то задают простенькие вопросы, чтобы ты че-нибудь поотвечал и не расстраивался, и не особо обижался на фирму и на этого конкретного собеседующего челика
но это не более чем лицемерие
на самом деле тебя считают говном и закономерно прокатывают
вот
может нужно было применить тернарную условную операцию ?: вместо операторов ветвления?
и всего то
Да нет, там через массив указателей подразумевается решение. Это типа полу-классическая задача, гуглится на каких-то говнофорумах от 2007-2014.
Вообще, если кто-то сейчас ищет работу на ~мидла на удаленке, поясню за собесы, на которых я обосрался:
1) REVO Capital LLC - какой-то мелкий американский хедж-фонд. Хоть по конторе ничего и не гуглится, но это не наебалово, чел скинет инфу по их регистрациям на биржах. Сам мужик 10/10, вопросы задает 10/10. Второй этап, тестовое - написать кодер-декодер Хаффмана. Я забил, т.к. по моим прикидкам это ~день. Хотя легко написал бы, много приходилось подобное кодить. Попробовать однозначно рекомендую, если не жалко въебать день на тестовое.
2) NetworkOptix - зашкварные системы видеонаблюдения, да, но зато очень много денег. Первый этап - тупо ответить на список 11 вопросов. Сложность примерно easy-middle из quizz'а. Я обосрался, т.к. джва года пишу на чистой сишке, и не готовился. Рекомендую попробовать, если вас устраивает оформление через ИП и вам просто нужно много денег.
3) Яндекс - ну тут всем известно, отличный собес (идеальный для меня), сидишь, потея и краснея на камеру решаешь задачи уровня ~medium с leetcode'а. Пять этапов, каждый по часу, итого пять часов. Меня после первого игнорить начали, видимо, медленно решал. Но в целом их методике собесов ставлю 9/10. Рекомендую, только подготовьтесь.
4) ITICapital - типа, брокер уровня топ ~10 в РФ. На hh нет вакансии, чел сам пишет. Самый приятный, интересный и полезный собес что у меня был. Сперва минут 40 по плюсам, потом алгоритмическая задача (уровня easy, если знать про трикс с guard node в листах), потом архитектурная (типа, есть два датацентра, куда сам сядешь, куда мать посадишь). Строго рекомендую, если вам напишет.
5) Касперский - выше описал. Хуй знает. Раз компания ищет работников по каким-то странным критериям, значит эти критерии для компании важны, и не нравится - твои проблемы. Так что возмущаться тут нельзя. Для меня собес 8/10. Длительность собеса - полчаса, потом 2 этапа по 2.5 часа. Итого 5.5 часов собеседований. Умеренно рекомендую, т.к. на любителя, наверное.
Да нет, там через массив указателей подразумевается решение. Это типа полу-классическая задача, гуглится на каких-то говнофорумах от 2007-2014.
Вообще, если кто-то сейчас ищет работу на ~мидла на удаленке, поясню за собесы, на которых я обосрался:
1) REVO Capital LLC - какой-то мелкий американский хедж-фонд. Хоть по конторе ничего и не гуглится, но это не наебалово, чел скинет инфу по их регистрациям на биржах. Сам мужик 10/10, вопросы задает 10/10. Второй этап, тестовое - написать кодер-декодер Хаффмана. Я забил, т.к. по моим прикидкам это ~день. Хотя легко написал бы, много приходилось подобное кодить. Попробовать однозначно рекомендую, если не жалко въебать день на тестовое.
2) NetworkOptix - зашкварные системы видеонаблюдения, да, но зато очень много денег. Первый этап - тупо ответить на список 11 вопросов. Сложность примерно easy-middle из quizz'а. Я обосрался, т.к. джва года пишу на чистой сишке, и не готовился. Рекомендую попробовать, если вас устраивает оформление через ИП и вам просто нужно много денег.
3) Яндекс - ну тут всем известно, отличный собес (идеальный для меня), сидишь, потея и краснея на камеру решаешь задачи уровня ~medium с leetcode'а. Пять этапов, каждый по часу, итого пять часов. Меня после первого игнорить начали, видимо, медленно решал. Но в целом их методике собесов ставлю 9/10. Рекомендую, только подготовьтесь.
4) ITICapital - типа, брокер уровня топ ~10 в РФ. На hh нет вакансии, чел сам пишет. Самый приятный, интересный и полезный собес что у меня был. Сперва минут 40 по плюсам, потом алгоритмическая задача (уровня easy, если знать про трикс с guard node в листах), потом архитектурная (типа, есть два датацентра, куда сам сядешь, куда мать посадишь). Строго рекомендую, если вам напишет.
5) Касперский - выше описал. Хуй знает. Раз компания ищет работников по каким-то странным критериям, значит эти критерии для компании важны, и не нравится - твои проблемы. Так что возмущаться тут нельзя. Для меня собес 8/10. Длительность собеса - полчаса, потом 2 этапа по 2.5 часа. Итого 5.5 часов собеседований. Умеренно рекомендую, т.к. на любителя, наверное.
- алгоритмический трейдинг
- GameDev не движок а именно игровая логика,
- высоконагруженный бэкэнд
по деньгам +- одно и то же играми не увлекаюсь
Я бы бэкенд выбрал. Самые универсальные навыки.
Или HFT, что по сути тоже бэкенд; но мне немного не нравится захайпленность этой темы, слегка пахнет блокчейном. Точно так же стало чрезмерно популярно из-за резкого притока денег на рынок, и закончиться может так же резко.
Но геймдев точно нахуй.
0 офферов на руках
геймдев ставь на третье место, тут однозначно
Нет, просто не хочется врать. Вот я указал анону в другом треде список тем, которые я думаю есть в HFT. А больше и не могу, так как сам не шарю и нет знакомых из этой сферы. Поэтому ничем в вопросе "как вкатиться в HFT" больше не могу помочь. Думаю, что для остальных то же самое. Как >>1939297 сказал, нужно уже самому всё искать.
HFT очевидное.
"boost", подразумевают "обязательно asio, желательно beast, опционально context, остальное нам поебать"?
Просто блядь, иначе как это. Никто же не может заявить, что он "знает boost" - там чего только нет, даже библиотеки для того чтобы срать не снимая свитер наверняка найдутся.
Я не знаю, что такое "знать boost". Наверное - уметь его компилировать и подключать? Ну и какие-то основные вещи, типа контейнеров, может у нихз там С++98
>он не использует MPL, Fusion и Hana в одном проекте
лмао
Но вообще я думаю что подразумевается Asio, Filesystem и чутка из различных алгоритмов, хотя хрен людей знает.
>>1939453
https://www.youtube.com/watch?v=2olsGf6JIkU
под STL почти всегда подразумевается не STL, а вся стандартная библиотека
https://sourceforge.net/projects/waveshop/
Я её, короч, пытался сначала открыть в VS 2019, он сконвертировал проект, но в итоге сборка не прошла, и так как в ридми к коду было написано "WaveShop is designed to be an MFC 6.0 or .NET 2005/2008 project", я пошел и скачал VS 2008. Затем из-за ругательств компилятора выяснил, что надо установить еще DirectX SDK, мне подошел версии "August 2007", потому что в более новых уже отсутствовали нужные заголовки, сейчас вот мне теперь компилятор выдает такое, с чем я уже разобраться не знаю как, потому что нуб-нубом:
1>DSCapture.obj : error LNK2019: unresolved external symbol _DirectSoundCaptureEnumerateA@8 referenced in function "public: static bool __cdecl CDSCapture::EnumDevices(class CArrayEx<class CDSPlayer::CDSDeviceInfo,class CDSPlayer::CDSDeviceInfo &> &)" (?EnumDevices@CDSCapture@@SA_NAAV?$CArrayEx@VCDSDeviceInfo@CDSPlayer@@AAV12@@@@Z)
1>DSCapture.obj : error LNK2019: unresolved external symbol _DirectSoundCaptureCreate@12 referenced in function "public: bool __thiscall CDSCapture::Create(struct HWND__ ,struct _GUID )" (?Create@CDSCapture@@QAE_NPAUHWND__@@PAU_GUID@@@Z)
1>DSCapture.obj : error LNK2001: unresolved external symbol _IID_IDirectSoundNotify
1>DSPlayer.obj : error LNK2001: unresolved external symbol _IID_IDirectSoundNotify
1>DSPlayer.obj : error LNK2019: unresolved external symbol _DirectSoundCreate@12 referenced in function "public: bool __thiscall CDSPlayer::Create(struct _GUID ,struct HWND__ )" (?Create@CDSPlayer@@QAE_NPAU_GUID@@PAUHWND__@@@Z)
1>DSPlayer.obj : error LNK2019: unresolved external symbol _DXGetErrorString8A@4 referenced in function "public: static void __cdecl CDSPlayer::ReportDXError(long)" (?ReportDXError@CDSPlayer@@SAXJ@Z)
1>DSPlayer.obj : error LNK2019: unresolved external symbol _DXGetErrorDescription8A@4 referenced in function "public: static void __cdecl CDSPlayer::ReportDXError(long)" (?ReportDXError@CDSPlayer@@SAXJ@Z)
1>DSPlayer.obj : error LNK2019: unresolved external symbol _DirectSoundEnumerateA@8 referenced in function "public: static bool __cdecl CDSPlayer::EnumDevices(class CArrayEx<class CDSPlayer::CDSDeviceInfo,class CDSPlayer::CDSDeviceInfo &> &)" (?EnumDevices@CDSPlayer@@SA_NAAV?$CArrayEx@VCDSDeviceInfo@CDSPlayer@@AAV12@@@@Z)
1>d:\dev\src\waveshop\waveshop-1.0.14.001-src\Debug\WaveShop.exe : fatal error LNK1120: 7 unresolved externals
https://sourceforge.net/projects/waveshop/
Я её, короч, пытался сначала открыть в VS 2019, он сконвертировал проект, но в итоге сборка не прошла, и так как в ридми к коду было написано "WaveShop is designed to be an MFC 6.0 or .NET 2005/2008 project", я пошел и скачал VS 2008. Затем из-за ругательств компилятора выяснил, что надо установить еще DirectX SDK, мне подошел версии "August 2007", потому что в более новых уже отсутствовали нужные заголовки, сейчас вот мне теперь компилятор выдает такое, с чем я уже разобраться не знаю как, потому что нуб-нубом:
1>DSCapture.obj : error LNK2019: unresolved external symbol _DirectSoundCaptureEnumerateA@8 referenced in function "public: static bool __cdecl CDSCapture::EnumDevices(class CArrayEx<class CDSPlayer::CDSDeviceInfo,class CDSPlayer::CDSDeviceInfo &> &)" (?EnumDevices@CDSCapture@@SA_NAAV?$CArrayEx@VCDSDeviceInfo@CDSPlayer@@AAV12@@@@Z)
1>DSCapture.obj : error LNK2019: unresolved external symbol _DirectSoundCaptureCreate@12 referenced in function "public: bool __thiscall CDSCapture::Create(struct HWND__ ,struct _GUID )" (?Create@CDSCapture@@QAE_NPAUHWND__@@PAU_GUID@@@Z)
1>DSCapture.obj : error LNK2001: unresolved external symbol _IID_IDirectSoundNotify
1>DSPlayer.obj : error LNK2001: unresolved external symbol _IID_IDirectSoundNotify
1>DSPlayer.obj : error LNK2019: unresolved external symbol _DirectSoundCreate@12 referenced in function "public: bool __thiscall CDSPlayer::Create(struct _GUID ,struct HWND__ )" (?Create@CDSPlayer@@QAE_NPAU_GUID@@PAUHWND__@@@Z)
1>DSPlayer.obj : error LNK2019: unresolved external symbol _DXGetErrorString8A@4 referenced in function "public: static void __cdecl CDSPlayer::ReportDXError(long)" (?ReportDXError@CDSPlayer@@SAXJ@Z)
1>DSPlayer.obj : error LNK2019: unresolved external symbol _DXGetErrorDescription8A@4 referenced in function "public: static void __cdecl CDSPlayer::ReportDXError(long)" (?ReportDXError@CDSPlayer@@SAXJ@Z)
1>DSPlayer.obj : error LNK2019: unresolved external symbol _DirectSoundEnumerateA@8 referenced in function "public: static bool __cdecl CDSPlayer::EnumDevices(class CArrayEx<class CDSPlayer::CDSDeviceInfo,class CDSPlayer::CDSDeviceInfo &> &)" (?EnumDevices@CDSPlayer@@SA_NAAV?$CArrayEx@VCDSDeviceInfo@CDSPlayer@@AAV12@@@@Z)
1>d:\dev\src\waveshop\waveshop-1.0.14.001-src\Debug\WaveShop.exe : fatal error LNK1120: 7 unresolved externals
>2013-11-08
зачем тебе эта прога и зачем тебе её собирать, проект мёртв уже семь лет, рано или поздно придётся перекатываться на что-то другое (очевидный audacity)
Ну разобраться надо как весь этот функционал реализован с отображением волны, манипуляцией над волной, как раз такой проект не большой, чисто ученический, альтернативы более современной я не смог найти, если знаешь подскажи.
> audacity
Ну он же огромный, реально не для дилетанта, там еще все эти wxWidgets, CMake, со всем эти разбираться надо хз сколько времени уйдет, а там тупо для VS проект.
Да, в папке того самого DirectX SDK и на заголовки путь прописал
Это UB
По каким критериям ты проставлял оценки?
И как ты понял что у кого-то там много денег, они сами рассказали? Я тоже про свои Рога и Копыта могу многое загнать
&b == char⚹⚹ // это адрес указателя, который хранит адрес первого символа строки
(int⚹ )b == int⚹ // это адрес первого символа строки
а (int "звёздочка") b адрес чего? самой строки но не массива, не указателя чтоли?
У тебя b изначально это адрес первого символа массива a и от того, что ты его кастанул к указателю на int он быть адресом первого символа a не перестанет.
Значит смотри сюда, скомпилил-отредачил:
Ошибки:
1. 8 строка - операцией &b ты отправишь адрес b, но не адрес a. Тебе нужно просто отослать переменную b - ведь поскольку это указатель, он и так содержить адрес. Исправляем.
2. 9 строка - не учил матчасть и теорию, конвертация в int - лишняя. Теперь нужна операция &b. Причина проста - тип указателя (int, char) нужен чтобы соответствовать указываемой переменной, но сами указатели всегда одного и того же формата - адрес в 16-й системе исчисления.
Итого: 8 строка - &b заменить на b
9 строка - (int b) заменить на &b
Надеюсь это то, чего ты ждал.
Такой вопрос, нужно маленький JSON сделать текстовым полем другого JSON, нго при этом изначальный JSON должен не иметь " и других символов, чтобы воспринимался как строка внутри текстового поля большого JSON. То есть, если есть ", оно должно быть заменено на \" и так далее.
Можно ли как нить такое сделать средствами C++11, не заменяя явно " на \" ?
Вот код чтобы было понятней о чем речь:
https://godbolt.org/z/zs1Ybc
Нахуя ты это делаешь? Возьми лохмановскую жсон либу и сделай нормальон.
Нлохман есть в доступе, но разве там есть инструменты, чтобы в json escape-символы заменить?
Они вообще для разных целей, SFML - это простенькая либа, чтобы создать окошко и делать в нём 3D-графику или контекст OpenGL, если хочешь простую либу для простой графики без ебли, бери её. Qt - фреймворк в первую очередь для окошек, формочек, графики, мультимедии и прочего.
>По каким критериям ты проставлял оценки?
Критерии - впечатления от собеса, хорошо ли посидели-попиздели. Офк никак не коррелирует с тем, как там работается.
>И как ты понял что у кого-то там много денег, они сами рассказали?
Угу, ну и отзывы. Дак похуй же. В худшем случае если сумма в контракте меньше обещанного, просто забиваешь и ищешь дальше.
>Я тоже про свои Рога и Копыта могу многое загнать
Я бы с удовольствием послушал. Рассказывай.
>>1939732
> Поясните как изучить технологию блокчейна? С чего начать и по каким книгам? Сразу в окружении крестов.
Нахуй оно тебе надо? В 2к20 поработал с блокчейном в паре контор. Впечатления от технологии позитивные, от контор - негативные. Дохнут как мухи, т.к. по сути жадные хайпожоры, которые хотят навариться любой ценой.
Каких-то учебников по блокчейну нет, либо они есть, но не нужны. Почитай пару ознакомительных статей на хабре, типа, что такое консенсус, какие они бывают. После этого можно сказать что ты понял блокчейн, все остальное лишь детали имплементации (network layer), либо детали решаемой задачи (application layer). Детали имплементации надо смотреть в коде. Выкачай исходники ноды биткоина, она на C++. Или исходники Qtum. Там, кажись, та же самая блокчейн-нода, но допиленная до directed acyclic graph (обязательно прочитай, что это).
Если тебя интересует application layer (за который, наверное, обычно и платят, т.к. он и приносит компании деньги), то тут не о плюсах. Все sdk/инструменты для работы со смарт-контрактами сделаны на JS/Go.
Если хочешь посмотреть на пиздтый инструмент, где network+consensus уже заимплеменчены, а ты занимаешься чисто бизнес-логикой, чекни cosmos sdk. Мне было очень приятно с ним работать, только оно на Go.
Сам по себе он вообще для гуёв не подходит. SFML - это создать окно определённого размера и рисовать в нём прямоугольники, овалы, линии, картинки из файлов и обрабатывать события вроде движения мыши или нажатия кнопки на клавиатуре, и всё. Нет ни кнопок, ни текстбоксов, ни менюшек, ни диалоговых окно. Есть обёртки для SFML вроде imgui и nuklea, они добавляют кое-какие виджеты, но это скорее годится для UI в играх наподобие списка предметов в инвентаре. Да и обе, честно говоря, отдают васянством, когда тыкал, почти всю инфу узнавал из страниц с багами на гитхабе.
Roger roger. Значит беру qt. Спасибо что просветил.
А вот ты создаешь мап char:int, а потом так резво идешь и делаешь инкремент по оператору []. ты уверен, что при твоем обращении через этот оператор, когда map создаст значение int он обязательно проинициализирует его как ноль?
Судя по примерам, которые находил в интернете, все должно работать нормально. Но даже если бы там лежал бы мусор постоянно, то все равно не понятно, что за -1 'я' откуда он каждый раз появлсяется.
>Byte order mark — маркер последовательности байтов, символ Юникода.
Эх как же эта хуйня мне насолила, я помню где это прочитал давно, и забыл, и вот у меня на собесе спрашивают : что такое big endian/ little endian, и я помню что это про последовательность байт, и всместе с этим у меня всплывает что то в голове про этот BOM, и я выдал - ну это маркер, там что-то с кодировкой связанное лол.
Я тогда не прошёл собес.
Да и похуй, контора так себе была
Да, видимо оно. Спасибо анонасик! А можешь тогда еще помочь с 2-м вопросом? По поводу того, каким образом русская буква переводится в 2 символа? Например, если была буква "Я", то при отладке показывает, что записываются в map -48 'P' и потом -81 'Ї' ну и затем BOM. От разных букв, разные комбинации, т.е. это ни как с BOM который всегда есть.
Блять я вот до того чтобы сосчитать разницу между адресами не додумался, подставлял множители к параметру, который передавался в функцию, получилось что оффсет 22. Почему именно такой? Или это зависит от имплентации компилятора?
Бешено проиграл
Лучше почитай про Юникод. Посмотри в какой кодировке у тебя текстовый файл, тогда будет понятно на какие байты раскладывается отдельный символ.
Просто ты рассеянный, потому и многословный. Тебе кодить противопоказано, даже если очень хочется.
А то вроде всеми необходимыми инструментами владею, но большую картину очень сложно с нуля составить, чувствую что делаю какую-то хуйню и отсебятину.
Если совсем такой треш, то можно вкладываемый json закодировать в base64 и хранить. Один хуй у тебя там говнокод какой-то.
>Можно ли как нить такое сделать средствами C++11, не заменяя явно " на \" ?
А чем тебе замена не нравится? Стандарт крестов ничего не знает о жсоне. Библиотеки для работы с ним все равно вставят эскейп последовательности при сериализации ДОМ в текст.
QT не хочу. С буфферами opengl ебаться пока тоже не хочу.
Ну, то есть, хочу я порисовать сам хуету, повизуализировать всякие задачки по вычислительной геометрии, порастрезировать с руки линии и треугольники, пиксельарт может какой-нибудь.
Я могу, конечно, на OpenGLе просто рендерить квод с текстурой, и писать в буффер с текстурой, но это такое себе.
Imgui, ну или все таки сишарп и avalonia
Есть задача, её надо выполнить в разумные сроки в соответствии с требованиями. Ты начал мозгоёбить и потратил x5 времени в поисках хуй пойми чего. У тебя довольно низкое КПД, ты рассеянный, невнимательный и преследуешь надуманные цели. Работодатели это видят и сливают тебя на собесах.
Допустим, клиент залогинился, после этого работает с основным сервером через кэшированную сессию
Я так понимаю, что нужно хранить где-то подобие таймстампа для последнего обработанного пакета
Если пакет для client_id не обрабатывался N времени после последнего timestamp, то нужно выпилить сессию из кэша.
Но как найти тех клиентов, которые давно не слали пакеты? Не итерироваться же по всему контейнеру, это долго, а контейнер используется и теми клиентами, которые сейчас онлайн
> Не итерироваться же по всему контейнеру, это долго,
Ты реально профилировал и нашел что тормозит именно в этом?
Нет, но это всё в многопоточном сервисе.
Соответственно, нужно делается unique_lock перед итерацией.
А это блок на все реквесты, которым нужен session cache, на время итерации/удалений.
Колбек на вотчдог
Итерироваться. Или дрыгай таймеры на каждый пакет.
Ускоряй итерацию. Как минимум вынеси тайм стампы или их дубли в отдельный вектор, чтобы не было кеш миса при каждой проверке. А лок делай потом, когда уже составил список на удаление ( их все равно надо будет проверить не пришли ли новые пакеты, но уже гораздо меньшее количество, если они у тебя массово пачками не отпадают).
Попробуй собрать блендер https://wiki.blender.org/wiki/Building_Blender по инструкции и потом посмотреть как это устроено. Если коротко, то отдельно перед сборкой там скачиваются внешние либы и распаковываются/компилируются в отдельные папочки, что позволяет не таскать их с собой в репозитории. На своей стороне ты указываешь пути относительно текущего проекта, разумеется ссылаясь на пути, куда будут распаковываться все либы.
Как запустить QT проект имея CMakeLists.txt?
как ты знаешь на про-мувабл обьекты, но забыл про указатели?
>Макопомойку даже не упоминайте.
Если ты про какую-то pos, которая используется в макдональдсе на кассах, то скорее всего, тебе как раз к ней и нужно привыкать.
Я про растение, чел...
На одной работе была винда со студией, на другой линупс (какой хочешь) с CLion'ом. Какая целевая платформа - такое и окружение. Вообще после вима с парой плагинов всё заходит, и тебе посоветую этот экспириенс.
Учиться - точно в студии с решарпером.
А на работе - в чем заставят, в том и будешь. Я успел и в Студии, в кутекреаторе, и в ебучем виме (теперь у меня нервный тик от слова опенсолярис).
Я вот тоже успел в qt creator поработать, на винде, с разными компиляторами и дебагерами, и все дебагиры работали очень тормозно и глючно.
У всех так?
>Винду со студией принципиально не хочу
Привередливый ты и отсекаешь большую долю компаний, которые занимаются десктопом, но как хочешь. В студии отличные встроенные отладчики памяти, например, что мне иногда очень помогает.
Студия + студийный дебаггер. Культекреатор афаик только в гдб умеет, хотя хз, давненько я им не пользовался.
Сейчас кросс винда/мак, а до этого были:
- винда с таргетом analog devices (visualdsp)
- Linux (после вузика)
- FreeBSD (стажировка)
Всегда больше винда интересовала, но занимался тем что само в руки шло
>Какая целевая платформа - такое и окружение.
Да сейчас то пофиг уже. У меня вот проект был и сейчас слабо поддерживается, который я писал под виндой в креаторе, а боевая сборка под эмбеддед была на виртуалке линуксовой с кросскомпилятором
Если у тебя какой-то бэкенд - то почему нет.
Мы вообще в виндовом докере на CI собираемся, и нам ок (но это ебануто, да)
Постепенно всё скатывается в линукс, а сама работа становится смешанной. На компе часто стоит винда + Visaual Studio, на ней несколько виртуалок с разными лялексами (VSCode/Eclipse). Ещё терминал в целевую платформу (putty-хуютти, ssh, vim и всё такое). Ещё, возможно, виртуалка с winxp для легаси говна.
Сначала висячие ссылки пусть санитары обработают.
Да, используется. В коммерческих.
Храню на внешнем ssd (работаю из разных мест и так получается удобнее). Бэкапы образов тоже периодически обновляю на машине в сети, доступной через VPN.
у меня тоже виртуалбокс
Как с этим всем управляться: сделать базовый класс с интерфейсом чтения\записи в файл, производный класс уже реализует чтение\запись и предоставляет юзеру функции добавления в конфиг и чтения?
Конечно линукс.
CLion самое то. Попробуй, потом будешь удивляться как раньше на своих студиях и кутекреаторах колдобился.
Зря.
Хочу вкатиться в программирования и выбираю первый язык, решил что надо, что-то серьезно и сложное брать, а не какой-то элементарный питон, надеюсь сделал правильный выбор c++ или есть что-то получше?
>Yosifovich et al. Windows Internals
А чтобы не виндоус есть что-то? Стэк у меня вообще левый, под винду не пишу ничего.
Большая часть кода в хеджфондах даже в условно-топовых типо Citadel или Two-Sigma это стандартные бэкэкндовые компаненты ниче такого. К тому же золотой век HFT уже ушел.
А отвечая на твой вопрос:
В порядке убывания приоритетности:
1. Леткод.
2. Тупо крепкие знания плюсов.
3. Основы работы ОС. Ну типо что такое syscall,процесс поток итд.
4. Архитектурное собеседование аналогичное фангу.
5. Ну да наверное lock-free и simd.
Оно жалуется на "member '...s/t' with constructor not allowed in anonymous aggregate"
Можно как-то исправить, чтобы не писать всюду имя анонимной структуры? 17 стандарт.
Можно выкинуть на помойку структуру, тогда всё работает - но вместо конструктора приходится дополнительную функцию с дополнительным именем вызывать. Это всё ещё лучше чем имя структуры дописывать постоянно, но такое себе. В чём его проблема - если с именованной структурой всё работает, а с анонимной - нет?
Да, наверное стоило бы указать что компилятор mingw.
Вот даже какая штука гуглится, лол. Решения правда не вижу там.
https://gcc.gnu.org/legacy-ml/gcc-help/2004-01/msg00238.html
Чел, вот это, и только это. Лучшая книга, когда-либо написанная, абсолютный шедевр, мировая классика, 10/10 на кончиках пальцев.
Она большая, да, но хули, ты слабый что-ли?
Нубас просит некоторых пояснений.
1) struct это аналог interface из других языков?
2) зачем нужен template? Можно же делать перезагрузку методов.
Не до конца понимаю вот эту строчку
template <bool SSL> struct TemplatedApp {}
Это просто объект с методами? Или что.
>зачем нужен template?
Полистай же книжку по шаблонам. По 800 перегрузок делать для каждого типа, даже если код совпадает один в один?
По большей части это синтаксический сахар и в редких случаях перенос части работы из рантайма в компайл-тайм.
Забудь про template на время, если ты не понимаешь что такое struct.
Читай книги пока
промышленного программирования в команде. Совсем уже охуели, сразу мидлом хотят после чтения страуструпа и деланья трех лаб.
Ты давай не экстраполируй. Я вообще-то к Страуструпу в дополнение перечитал Мейерса а к трём лабам покопался в бустазии, и трохи в опенгле с qt. А на джуна за 40к в ДС перекатываться нифига не комильфо.
Пчел, у тебя сейчас безумно играет эффект даннинга крюгера классический. Ты ПОЧИТАЛ КНИЖЕЧКИ и поделал ПЕТ ПРОЕКТИКИ. Это такой слабенький джун. О каком мидле речь, мидл это человек, который умеет коммуницировать, проектировать, думать о лонг-терм последствиях решений.
Чел, ты прочитал статейку на вики и у тебя заиграл эффект Даннинга-Крюгера по отношению к психологии людей. Я не спрашиваю "Хули меня не берут на работу с таким набором знаний", я спрашиваю ЧЕМУ ЕЩЁ МНЕ НУЖНО НАУЧИТСЯ чтобы меня взяли.
Идти поработать джуном годик, чтобы посмотреть, что такое программирование не дома. Я же написал выше.
такое ощущение, что люди, делавшие говно полное, в качестве петов, проецируют свои скилы на других.
Если ты делал говно полное, то это не значит, что другие тем же занимались. ос, компилятор со стандартным набором оптимизаций, симулятор на вулкане - при таком наборе петов мне было смешно смотреть на таких как ты, втирающих о скилах нарабатываемых только на работе.
Маня, если ты умеешь развиваться только из под пинка хозяина, то это твои проблемы.
Твое резюме на мидла без опыта тупо эйчар не пропустит, хоть твои петпроекты самые охуенные в мире, умник. Компилятор и ОС он написал, Терри Дэвис восстал из мертвых.
Мне кажется, если ты прочитал Страуструпа, всего Мейрса, плюс имеешь какой-то кругозор по CS в целом (структуры и говно), то по знаниям ты уже дотягиваешь до Миддла, не дотягиваешь только по опыту. Хватит пока читать, иди работай.
И не злись на ребят итт, тут много ЧСВшных чудиков, это издержки профессии, да.
Да хуле, сразу принципалом пусть идет, управляет разработкой Хрома или поиска в гугле. Кругозор по CS и прочитанный страуструп достаточны для этого.
Выпили конструктор у А, написано же.
пускай укажет 2 года опыта в рандомной компании
искренний совет тому челу, если действительно скилы есть то отсутствие опыта не вскроется.
Я так проскочил тот самый уровень джуна, правда поработав 2 месяца им.
Да уж, сколько человек столько и мнений. Ладно, закрою-ка я лучше тред и пойду практиковаться. В любом случае всем спасибо.
Ну как вариант. Главное чтобы он не спалился на каких-то командных вещах, типа внезапно устроенного кринжа в репозитории Git'а.
Начать устройство на работу с пиздежа - отличное решение. Это сразу палится все без проблем на behavioral interview.
> компилятор со стандартным набором оптимизаций
Что такой стандартный набор оптимизаций?
> симулятор на вулкане
Симулятор чего?
Ты просто рандомные слова пишешь же.
Удачи вскрывать пиздеж умного человека за 45 минут. С учетом того что все ситуации, который он приписывает себе реальны.
Но это действительно редкий случай, у 95% не хватит скила соответствовать мидлу, впроцем они и не станут пытаться, а оставшиеся 5% быстро вкатятся на норм зп.
Вскрывается сильно проще, чем кажется.
А вообще - сколько таких долбоебов я собесил, когда у нас в конторе была джуновская вакансия открыта в конторе. Каждый первый - гений, сразу из дома готов вкатываться на сениора. После каждого такого гения конференц рум от подливы вытирали, которую такие "сениоры" обильно выделяли под себя.
> Что такой стандартный набор оптимизаций?
Я просто обозначил, что не просто примитивный генератор кода по аст.
> Симулятор чего?
Обычный sph. Из контекста же понятно, что симуляция какого-то физического процесса. Какого именно тут неважно.
Я не говорю, что это супер сложные проекты, но достаточно сложные, чтобы набить опыт.
Валилсь на примитивных вопросах? Я говорю о задротах, которых по знаниям хуй ты завалишь.
Такие домашние задроты
1. они очень сильно переоценивают свои знания
2. они вообще не умеют в софт скиллы
> Вулкан лучше чем опенгль?
Да.
> И насколько сложнее?
100 строчек на гл vs 1000+ на вулкане .
для проектов уровня Doom Eternal - нужен. Для корзинкиных клонов супер мапебо - не нужен.
Ясно, хуита для гейдеверов значит.
Предполагается, что в чистом виде их использовать не будут и напишут высокоуровневые движки, как в 2021 году и делают. И именно там может появиться профит. Это не усложнение ради усложнения, а фичи для якобы более тонкой настройки/оптимизации.
Да я понял уже что эта хуета нормальному человеку не нужна. Пусть пердольки-задротки копают.
И это правильно, ты игры делать собрался, или переизобретать велосипеды
Нормальные люди в игры не играют, или почти не играют.
На дваче ты такой охуенный, пишешь ОС, компиляторы, хуйню-малафью, а на собесе обсираешься с простых вопросов про какой-нибудь stl или код ревью на 5 строк кода.
Каким вообще нужно быть чсвшным долбаебом, чтобы на серьезных щах рассказывать, как ты в одиночку писал ос/компилятор/движок на вулкане, не имея вообще никакого опыта? Это лишь говорит о том, что ты:
a) написал хуиту
b) считаешь хуиту, которую ты написал, не хуитой
c) считаешь себя не хуитой, являясь хуитой, по причине пунктов a и b
Я бы даже на собес не позвал такого дурика малолетнего лол. Может только если порофлить.
> stl
Если составить вопросы по типу: назовите за 3.22 секунды все алгоритмы из стандартной либы - то и сеньора можно подрезать
Ну а так да, какие еще ОС - что-то наподобие зп 300к в секунду, смешно читать.
я помню, как тоже корзиночные проекты пописал, книги почитал, и пошел на собес, щас типа покажу этим лошпедам, кто тут батя.
Мне прям на собесе сказали, какие книги почитать, потому-что я фонтаном там обосрался. Я конечно вкатился через некоторое время, но вот такие высеры очень смешно читать.
Линкедин - это специальная олимпиада для даунов. На твои сертификаты никто не смотрит и никому они нахуй не сдались.
Релевантен только опыт работы и имя конторы.
>Мне прям на собесе сказали, какие книги почитать
Полгода назад, на заре своего вката, я читал эту пасту. Сейчас я второй месяц работаю на 140к/месяц. Вопросы будут?
> корзиночные проекты пописал, книги почитал
Какие проекты писал и книги читал?
> Мне прям на собесе сказали, какие книги почитать
Какие?
Вкатился за неделю сразу на сеньёр позицию в амазон в сша по туториалам с ютьюба. Работаю второй месяц за 300к бачей в год плюс столько же в акциях, параллельно учу инглиш с нуля тоже по ютьюбу. Вопросы будут?
Нет, не повезло. Я дрочился 4+ часа зачастую по 7 дней в неделю совмещая с работой.
на 140к - это повезло. Сколько бы ты не дрочился дома.
> Я дрочился 4+ часа зачастую по 7 дней в неделю совмещая с работой.
А как дрочился? Что перед собесом знал или мог написать в итоге?
мимо интересуюсь
>Что перед собесом знал
Спрашивали указатели, про смысл констов в разных местах, битовые операции, stl, qt, линал ну и по мелочи.
>мог написать в итоге?
В душе не ебу, с гуглом и индусами с ютуба вполне вероятно что угодно. Ваш любимый Даннинг-Крюгер, да-да.
Под XBox на вулкане. С поддержкой OculusRift.
Ну возьми вот такое типовое тестовое, недавно предлагали. Предполагается, что сеньор сделает его аккурат за рабочий день, т.е., менее чем за 8 часов, в приличном виде.
// Cервер слушает запросы на указанном PORT и предоставляет API для простой key-value базы данных
// Внутреннее хранилище сервера - boost::multi_index, который хранится в маппируемом в оперативную память файле
// Ключ имеет тип - Строка (максимальная длина 1024 символа)
// Значение имеет тип - Строка (максимальная длина 1024 1024 символа)
// База данных поддерживает операции
// INSERT - добавить key:value
// UPDATE - изменить key:value
// DELETE - удалить key
// GET - получить value по key
// Если ключ уже существует, то при операции INSERT База Данных возвращает ошибку
// Если ключ не существует, то при операции UPDATE База Данных возвращает ошибку
// Если ключ существует и значение совпадает, то при операции UPDATE База Данных возвращает ошибку
// Если ключ не существует, то при операции DELETE База Данных возвращает ошибку
// Если ключ не существует, то при операции GET База Данных возвращает ошибку
// Клиент получает из командной строки:
// - адрес сервера
// Cервер слушает запросы на указанном IP:PORT и предоставляет API для простой key-value базы данных
// Внутреннее хранилище сервера - boost::multi_index, который хранится в маппируемом в оперативную память файле
// Ключ имеет тип - Строка (максимальная длина 1024 символа)
// Значение имеет тип - Строка (максимальная длина 1024 1024 символа)
// База данных поддерживает операции
// INSERT - добавить key:value
// UPDATE - изменить key:value
// DELETE - удалить key
// GET - получить value по key
// Если ключ уже существует, то при операции INSERT База Данных возвращает ошибку
// Если ключ не существует, то при операции UPDATE База Данных возвращает ошибку
// Если ключ существует и значение совпадает, то при операции UPDATE База Данных возвращает ошибку
// Если ключ не существует, то при операции DELETE База Данных возвращает ошибку
// Если ключ не существует, то при операции GET База Данных возвращает ошибку
// Клиент получает из коммандной строки:
// - адрес сервера
// - команду
// - ключ
// - значение
// После выполнения команды клиент возвращает успешность выполнения и ошибку, если она возникла
// Сервер ведет статистику отправленных и полученных комманд
// С переодичности в 60 секунд, сервер выводит на std::cerr статистику
// - количество записей в БД
// - количество успешных/неуспешных операций INSERT
// - количество успешных/неуспешных операций UPDATE
// - количество успешных/неуспешных операций DELETE
// - количество успешных/неуспешных операций GET
// Общение по собственному протоколу поверх TCP/IP
// Для автоматизации сериализации структур использовать boost::fusion
// Для реализации сетевого взаимодействия использовать boost::asio
// Для реализации потоков использовать возможности boost::asio
// Для реализации таймеров использовать возможности boost::asio
// Для хранения данных использовать boost::multi_index и boost::interprocess
// Сборка C++-проекта должна осуществляться с помощью CMake
// Для сборки сформировать Dokerfile на базе Ubuntu 20
Ну возьми вот такое типовое тестовое, недавно предлагали. Предполагается, что сеньор сделает его аккурат за рабочий день, т.е., менее чем за 8 часов, в приличном виде.
// Cервер слушает запросы на указанном PORT и предоставляет API для простой key-value базы данных
// Внутреннее хранилище сервера - boost::multi_index, который хранится в маппируемом в оперативную память файле
// Ключ имеет тип - Строка (максимальная длина 1024 символа)
// Значение имеет тип - Строка (максимальная длина 1024 1024 символа)
// База данных поддерживает операции
// INSERT - добавить key:value
// UPDATE - изменить key:value
// DELETE - удалить key
// GET - получить value по key
// Если ключ уже существует, то при операции INSERT База Данных возвращает ошибку
// Если ключ не существует, то при операции UPDATE База Данных возвращает ошибку
// Если ключ существует и значение совпадает, то при операции UPDATE База Данных возвращает ошибку
// Если ключ не существует, то при операции DELETE База Данных возвращает ошибку
// Если ключ не существует, то при операции GET База Данных возвращает ошибку
// Клиент получает из командной строки:
// - адрес сервера
// Cервер слушает запросы на указанном IP:PORT и предоставляет API для простой key-value базы данных
// Внутреннее хранилище сервера - boost::multi_index, который хранится в маппируемом в оперативную память файле
// Ключ имеет тип - Строка (максимальная длина 1024 символа)
// Значение имеет тип - Строка (максимальная длина 1024 1024 символа)
// База данных поддерживает операции
// INSERT - добавить key:value
// UPDATE - изменить key:value
// DELETE - удалить key
// GET - получить value по key
// Если ключ уже существует, то при операции INSERT База Данных возвращает ошибку
// Если ключ не существует, то при операции UPDATE База Данных возвращает ошибку
// Если ключ существует и значение совпадает, то при операции UPDATE База Данных возвращает ошибку
// Если ключ не существует, то при операции DELETE База Данных возвращает ошибку
// Если ключ не существует, то при операции GET База Данных возвращает ошибку
// Клиент получает из коммандной строки:
// - адрес сервера
// - команду
// - ключ
// - значение
// После выполнения команды клиент возвращает успешность выполнения и ошибку, если она возникла
// Сервер ведет статистику отправленных и полученных комманд
// С переодичности в 60 секунд, сервер выводит на std::cerr статистику
// - количество записей в БД
// - количество успешных/неуспешных операций INSERT
// - количество успешных/неуспешных операций UPDATE
// - количество успешных/неуспешных операций DELETE
// - количество успешных/неуспешных операций GET
// Общение по собственному протоколу поверх TCP/IP
// Для автоматизации сериализации структур использовать boost::fusion
// Для реализации сетевого взаимодействия использовать boost::asio
// Для реализации потоков использовать возможности boost::asio
// Для реализации таймеров использовать возможности boost::asio
// Для хранения данных использовать boost::multi_index и boost::interprocess
// Сборка C++-проекта должна осуществляться с помощью CMake
// Для сборки сформировать Dokerfile на базе Ubuntu 20
Скажи пожалуйста название компании, которая это предложила.
Для меня тестовое выглядит как "реализовать Django на C++ за 8 часов", я бы охуел без каких-то наработок под рукой.
Не, тестовое годное, но слишком объемное, имхо.
Не лезь, блядь, дебил, сука, ебаный.
Попробуй иголкой по жесткому диску сразу, емакс для слабаков.
Дали блядь вам вижуал студию, дали шлион для красноглазых, хватит уже хуйней заниматься, код пишите блядь
Двачую. Им зп по 10к долларов дают когда другие за 20к деревянных на заводах горбатятся а они пердолятся как бараны.
Clion (как и решарпер) элементарно "лицензируется", если у тебя есть хоть 1 знакомый студентик
Так это каркас для бэкенда, причём на boost. Такой себе хуяк хуяк и в продакшн. Шкорость она совсем не про этот слой ПО.
>я бы охуел без каких-то наработок под рукой
У тех, кто работает не первый год, куча кода в закромах лежит. Если вакансия релевантна твоему опыту, то обычно тестовое делается копипастой за 20-30 минут и ещё потом часик надо на визуальное оформление и подгон под формально описание.
>// Для сборки сформировать Dokerfile на базе Ubuntu 20
>boost
А мне норм, если бы не вот эти пункты. Мне кажется я все 8 часов буду ставить буст и убунту - но если от них отказаться, то готов на спор с записью видео без наработок часа за 4 попробовать сделать вышеуказанные клиент-сервер. Для сети заюзаю sfml-сокеты (в с++ же нет своих собственных кроссплатформенных), или можно winsock, лол.
Мне совсем не нравится такое задание, потому что оно демонстрирует не навыки кодинга, а насколько быстро ты разберёшься с использование boost::multi_index и других указанных в тз вещах. По коду там только хранилище, таймер, и функция приёма-отправки.
Делал недавно тестовое, там было что-то похоже по взаимодействию, только вместо реальных сокетов - заглушки
В требованиях heavy OOD, чтоб заглушки легко заменялись на преальный нетворк.
Было прикольно, им понравилось, но на собес я не пошёл
Тестовое не для кодмакаки, которая 4 часа работает под присмотром, а для мастера, который сделает решение под ключ.
Может быть тестовое на сеньора подразумевает что он за эти 8 часов наймет студентов на фивере которые ему по частям напишут? Или как минимум найдет готовое на гитхабе.
> // Если ключ существует и значение совпадает, то при операции UPDATE База Данных возвращает ошибку
Я бы в таком месте работать не хотел.
я код не порчу
Ну типо раньше в 0х и начеле 10х HFT ебало рынок, а сейчас такой робот у всех есть, понимаешь, поэтому их доходности упали.
Полно есть стратегий которые к латенси вообще не чувствительны или торгуют скажем на минутных таймфреймах, что не подразумевает дикой оптимизации на fpga, локфри итд.
Сейчас куча перфомящих стратегий, которые опираются скорее на большое кол-во данных чем на скорость эксекьюшена.
Ух какие маневры. Хули здесь тогда забыл, говно обосранное? Пиздуй обратно в ваш js-загон на бутылку, а то твой папка опередит и у него как в прошлый раз она в недрах лопнет и всю жопу разорвет, потом точно ебать нечего будет и вы с голода сдохните без денег
Вообще на помидора норм вполне тестовое.
Если платят выше рынка так вообще норм.
Единственное я докера не знаю, а надо бы.
Ты тупой или больной? Постинкремент потенциально может содавать копию для хранения значения перед инкрементом.
И сует -O2. Просто пошёл нахуй
Одна известная достаточно известная компания в узких кругах любителей крипты.
Позиция на 300 -- Нет, не $, просто т. рублей/месяц.
Принял аналогичное предложение от других товарищей, которые не напрягали тестовым, если что.
>>1943374
>Для сети заюзаю sfml-сокеты (в с++ же нет своих собственных кроссплатформенных)
Лолшто? Мы вам перезвоним.
В проде везде минимум -O2, нахуя нам смотреть без оптимизаций то?
На курсере курс от Яндекса, все пояса, почти все задачи как ты описал.
Гриша?!
Насчет крипты интесно конечно.
Просто одно дело, на обычной бирже когда все стоят в колокации у всех одинаковый провод до торговой системы, сам биржевой протокол оптимизирован для latency итд.
А в случае криптобиржи хуй пойми как твой пакет будет до ее сервера идти, протоколы там текстовые вроде в основном хз крч не знаю.
Но тоже слышал про такие организации.
Написано же в тестовом, делать на boost.asio.
Там есть и сокеты кроссплатформенные, и много чего еще.
Просто буст стандартное расширению сипипи, если ты сипипишник, ты должен уметь в эти бусты.
Стандартное - это то, что комиссия утвердила. Остальное уровня расширений компилятора от микрософта.
Буст это сблёв с кучей ненужного говна, типа своего шаред птр, который ЛУЧШЕ СТАНДАРТНОГО МАМ НУ СКАЖИ ИМ.
Собстно, не зря много где есть правило "никакого буста"
Это очевидно, другой вопрос - нахуя в бусте свой собственный теперь, который якобы лучше? Собстно, Полухин пытался в мейллисте обьяснить этим ебучим ретроградам, что будет сильно лучше, если не будет с собой тащить миллиарды этих ненужных зависимостей. Но его не послушали, потому-что А КАК ЖЕ ДЕДУШКИ С С++98. хуй сосут эти дедушки
Чего блять?
Как же охуенно, когда у тебя одинаковые классы из boost и из std в одном проекте, да дедуль?
зачем тебе?
Я вообще на спор хотел для треда попробовать сделать, чтобы меня потом разнесли за плохой код или ещё что-то, и ставить буст на 98 мб в архиве для этого не хочется - я слышал он довольно паршиво заводится, и скомпилировать в первый раз хоть что-то с ним довольно трудоёмко.
Или там что, совершенно иная концепция работы с сокетами/потоками - а не почти дословно такие же классы и методы в другом неймспейсе? Да не поверю, такие же send/sendto.
Почти полностью уверен, что это просто чек на то, пользовался ли ты бустом минимально и представляешь ли примерно содержание буста.
https://habr.com/ru/post/125564/ <- я про эту статью
https://habr.com/ru/post/117193/ <- похуй но пусть будет до кучи
Ты наверняка их видел, но, согласись, сквозь призму жителя 2к21 это как-то странно/кринжово читать. Чел с таким восприятием действительности в наше время даже не тянет на миддла, а тогда умные головы, наверное, читали, кивали, и говорили, ага, прав чел.
К чему это я. Можно ли говорить о том, что сильный программист 10 лет назад = слабее посредственного сегодня? Причем даже если атуальность/неактуальность знаний из картины убрать, чисто по инженерному мышлению.
очевидно же что самые популярные статьи будут не самые лучшие, а самые спорные, а значит флеймовые
Напишите плез что делаете на основной работе. Кратко, одним предложением. С перечислением технологий.
Пример: Десктопное приложение с GUI от wxwidgets с бустом, yada yada
Или: Backend, используем non-boost ASIO, gRPC, ещё-какую-то поебень и тд.
Интересно чё вы пишете :3
а как ты код писать собрался? Ведь это и есть всратые задачки
Программист 10 лет назад: написал в одно рыло 3д игру, оптимизировал на ассемблере.
Программист сейчас: Как сложно писать код для браузера.
>написал в одно рыло 3д игру
Скопипастил из "как сделать игру на directx за 14 дней"
>оптимизировал на ассемблере
Потому что не было автовекторизации и хреново работал инлайнинг, а сейчас таких low-hanging fruit не осталось.
Гении никуда не делись, просто злоебучие вротендеры своими кукареками умудряются заглушить все остальных вместе взятых.
Бэк с opencv, tensorflow (собранным под плюсы), eigen, pcl.
Фронт на qt.
Везде хренова куча всего из boost.
>Бэк с opencv, tensorflow
Это что же получается, для машин лёрнинга всё таки плюсы нужны?А как же петухонщики визжащие что никто кроме них?!
Узбагойся. На плюсах просто часто делают всякий оптимизацию или масштабирование в продакшен по уже готовым макетам на питоне. Большая часть ml инженеров в самом деле с плюсами дело не имеет.
Вот тебе элементарный пример где все разжевано.
https://www.codeproject.com/Articles/1264257/Socket-Programming-in-Cplusplus-using-boost-asio-T
Собери, поиграйся, попробуй что-нить поменять, добавить новых фичек, и т.д.
другой любопытствующий
Я так понял, то что asio делает asio, то чем оно может выебнуться перед пердолящим POSIX API дедом - все эти приблуды с многопоточностью, корутины, стэклесс блядь, не стеклесс. Да?
https://github.com/uNetworking/uWebSockets
Юзаю вот эту хуйню. Хочу сделать авторизацию. Соответственно, когда залогинился, попал на сервер с сокетами.
Мне для этого замутить отдельный сервер, или отдельный класс какой-то, где юзать какую-нибудь монгу? И после авторизации по токену давать доступ с клиента к серверу уже?
Вот спысы, пошёл покурю.
Вриоте, петухон тир с решение!!11!
Лично я понял глубинную суть после написания своего сервера на poll'е с неблокирующими сокетами.
Вот этого удвою
Марио\Тетрис\Арканоид
Да нету здесь блоков кода, и Абу похуй. Жрём говно, кидаем скрины кода или ссылки на пастебин, бугуртим с макабы, которая выделяет курсивом текст между звёздочками.
Позырь за html/css/js, нахуярь базовую SPA на ноде. Вообще базовую, без нихуя .
Заливаешь картинку, обрабатываешь её через OpenCV. Бэк на крестах
В ней хочу вызывать методы из другого класса и общаться с массивом, который у этого класса в членах.
Это нормальная практика?
Для этого лучше использовать struct?
> В ней хочу вызывать методы из другого класса
Нормальная, лол
> и общаться с массивом, который у этого класса в членах.
То есть массив хочешь сделать public? Уже хуже, но смотря что ты пишешь.
> Для этого лучше использовать struct?
Да можно, ты знаешь чем struct от class отличается в крестах? Вообще ничем. Просто в class если ты не указал модификатор доступа он по дефолту private, а в struct это public.
Какой сисадмин, ты совсем ебобо?
Докеровский образ это иногда и есть конечный продукт. В крупных конторах/командах этим девопс занимается, но все кто старше мидла должны уметь образы создавать, апдейтить и отгружать.
ты про первые его книжки? конечно актуально
только там очевидные вещи, советы типа "после того как положили сахар в чай, возьмите ложечьку и размешайте, иначе будет несладко"
Вкат в буст происходит сам по себе. Сидишь такой и думаешь: так блэт, сам я это писать не буду, это уже сто раз до меня писали. Где бы спиздить? Гугдишь boost asio или beast.
Вот почему многие так бугуртят с буста, его существование мешает писать свои ламповые велосипеды.
многие бугуртят с буста потому что он и является сборником велосипедов, разные части буста написаны разными людьми, с подходами в архитектуре, зачастую кардинально отличающимся друг от друга
Ну если ты тугосервис подымишь и через него пропустишь то можно наверно. Но я к сожалению с тугосерями мало работал
На моем некропека нет какой то виртуализации в винде поэтому wsl2 не работает, а линукс я естественно для такого ставить не собираюсь.
Это то место где Джон Уик снимался?
пара негров, несколько индусов и азиатов, несколько баб.. 90% белых мужиков.. кхе кхе
Поковыряйся в биосе, авось заработает.
Работал в трех конторах, занимающихся криптографией. Везде часть модулей низкоуровневых была написана на асме и потом линковалась с C или C++ либой.
Именно врезки инлайн асма в исходниках не видел ни разу.
Читать и гуглить ошибки не пробовал?
По идее достаточно только <. Можно просто совать в сорт функцию компаратор или вообще лямбду.
Это как через лямбду? В std_sort надо сунуть начало и конец контейнера. Вместо begin и end будут лямбды какие то?
Не. Например у тебя есть вектор s структур S у которых есть член х, чтобы отсортировать его значению x ты делаешь
std::sort(s.begin(), s.end(), [](S &a, S &b) {
return a.x < b.x;
});
ну и т.п.
Что за код VS? Это как код давинчи?
Чиво, андрюх
Не, нельзя, да и не поможет, в целом.
На джуномидлов 80% вопросов это "посмотрите на код, и скажите какой будет вывод / найдите проблему".
И там строчка типа
auto p = func(std::shared_ptr<Obj>(new Obj), func2());
Если ты читал книжки, то ответишь, а если не читал, то гугл никак не поможет.
Проблема в том, что шаред поинтер временный?
Алсо, мне больше интересно про эти собесы с "напишите программу х". Я бы повыебывался и использовал стл , но я часто забываю некоторые функции от туда, особенно в алгоритмах
>Проблема в том, что шаред поинтер временный?
Неа
>Алсо, мне больше интересно про эти собесы с "напишите программу х".
Ты про задачку в рамках собеседования или про тестовое? Если тестовое, то ну его нахуй, там чего только не запросят; а те задачи, что в рамках собеседования, допустим, у Яндекса, там из stl-алгоритмов максимум sort() используется.
Зато, если ты джун, то 100% будут дрючить по контейнерам - что там под капотом, и т.п.. Очень рекомендую книгу от господина Adam Drozdek, "Data Structures and Algorithms in C++". Просто бiмба.
>>1944859
Наверное, вы правильно поняли, да.
Компилятор имеет право обрабатывать аргументы в том порядке, в котором ему вздумается, поэтому он вполне может сделать так: new Obj -> func2() -> shared_ptr<>();
В этом случае, если func2() бросит эксепшн, Obj мы просрем.
make_shared<>() такого не допустит.
Понятно. Я, кстати, загуглил, но нашёл далеко не сразу.
Несколько лет назад прекрасно собирал буст на винде одной командой в терминале PowerShell по инструкции, потом подключал к студии и проблем никаких не было.
А вот со всякими другими библиотеками (никак не связанными с бустом) какая-то возня была, их нубу собрать сложно, что-то докачивать необходимо. Например, OpenSSL.
Есть ещё вариант собирать всё в виртуалке на линуксе, там просто ставишь нужные пакеты и готово.
что же ты творишь..я аж прыснул
в контексте этого треда некоторым спецам нужно уметь читать асм-код для того чтобы отслеживать, насколько хорошо с точки зрения производительности, компилятор сгенерировал маш код
ну и еще остается реверс-инжиниринг, умение дизассемблировать
возможно, от компилятора с++ не удасться добиться чтобы он при генерации задействовал все новые возможности конкретного цп, и в каких-то особых случаях кто-то пишет асм-код, только сегодня это делают не ассемблерными вставками, а оформляют в отдельную единицу трансляции
Вот давай чисто субъективно, скажи:
1) Как изменился рынок труда для плюсов за последние десять лет? Плюсы не сдохли, как многие прогнозировали, это уже победа. Вкатиться стало сложнее, но это в целом по IT так. Т.е., в целом можно сказать, что плюсы пережили десятилетие хорошо и не стали чем-то супер-нишевым, да?
2) А что будет в следующие десять лет? Может быть, плюсы-таки станут менее востребованы? Или же наоборот, и тогда ехидные зумеры-фортнайтеры с острым как бритва интеллектом массово набегут и заберут our jeeerbs? Что думаешь?
> число запросов по языку в гугле
Лютая хуйня. Не понимаю, как вообще можно было до такого додуматься. Каждое упоминание TIOBE триггерит.
> число вакансий
Это ближе к реальности, но нужно брать только крупнейшие сайты с вакансиями.
>более ранние*
Нормальный специалист не задрачивает один язык, правильно?
Во-первых, имеет смысл знать хотя бы питон параллельно с плюсами.
Во-вторых, развиваться в какой-то предметной области. Машоб, hft, геймдев, embedded, да хоть фронт для мобилок на том qt пишут, т.д.
Вот. А вообще плюсы сдыхать не собираются. Да, хипста плюсов боится, но от этого компенсация для нас, опытных плюсовиков, только бодро растёт.
Да не, нормально. Смартпоинтеры же нужны для борьбы с утечкой ресурсов, но нужно уметь их правильно применять.
Бля, ещё бы брали на работу не с вилкой - либо 30к стажёром в дсе либо 3 года задротства и язык был бы тиер s.
>>1945035
Я не уверен на какой уровень это вопрос, мне его чел из брокерской конторы задал, и я не ответил. Чисто интуитивно переписал через make_shared<>, но объяснить зачем я это сделал, не смог - сказал пук и среньк.
Это Item 17 из старой книги Мейерса.
Так что по сути вопрос не столько про смартпоинтеры, сколько про "читали ли вы Мейерса?".
Точно так же как вопрос Касперского про типы назвать виды оператора new() - туда же.
>Плюсы не сдохли
с хуя ли не сдохли?
криптография вся сдохла, ибо уже все написано (не имею в виду криптовалюты)
безопасность вся сдохла (ибо в винде встроенный файрвол и антивирусник и прочие инструменты безопасника, всем похуй теперь на сторонние разработки)
виртуализация под x86 вся написана (включая и "софт" виртуализацию)
у крестоблядков и сиблядков тупо нет задач, нет задач - нет работы
ну, осталось че-то там по мелочам дописывать и на саппорте сидеть
ну, геймдев всегда будет за миску риса с переработками
ну и все как бы
по последней книге майерса и по последней книге про шаблоны
>embedded
сдохло
у каждой железнячной фирмы уже есть свой пул исходников, они тупо дрова и прошивки перекомпилируют под новые версии устройств и все
держать одну или две си-обезьяны в штате и все, этого достаточно
>Машоб
дутая дрисня, крестанам там делать нечего, там раздолье для питоно-блядков
в лучшем случае будешь их маня-код на питоне переделывать под кресты чтобы быстрее было
>поэтому он вполне может сделать так: new Obj -> func2() -> shared_ptr<>();
я сомневаюсь что это так
В тривиальном примере это может и не так, но в более сложном случае обосраться с new легко.
А если серьезно?
Вот я обычный бот, вышедший после Российского Вуза.
Из знаний: базы данных, операционные системы, архитектура ИС и прочая ересь, знание алгоритмов и структур.
Из личных проектов: Симуляции для гидродинамических и астрофизических процессов, парсер для данных в банковской сфере.
Идешь и устраиваешься на любую работу, через годик два пиздуешь в яндекс, еще через 2-3 в нвидию. Все просто
Это везде так. Я тоже устраивался на плюсы, а пишу питон и баш.
Уже сишарп, кстати.
те есть диплом "погроммиста" и что-то учил в вузике по с++? тогда шансы есть (хоть какие то), если готов вьябывать за прайс ниже рынка
главное, чтобы не было перерыва, чем дольше не сможешь устроиться на работу, тем меньше будет шансов устроиться
года три проебланишь без работы или на сторонних работках - то все, пиздец
Ну вообще по первым двух пунктам у меня пока так и было, причем по верхней планке
>но объяснить зачем я это сделал, не смог
Очевидно же, что вместо двух выделений памяти будет одно.
>>1945235
Кто вообще в 2021 году верит в какую-то сферическую разработку на чистом с++? Сейчас с++ никто специально не учит, чтобы на работу устроиться. Обычно он учится автоматически вместе с какой-то предметной областью.
Ну и охуительные истории, конечно, про яндекс с 300к и нвидии с 700к лол. Такие зп имеют ключевые сотрудники и точно не простые хуи после любой работы за 25-100к | 1 год, лол.
Вкатываться в айти на с++ с нуля - это совсем дурачком нужно быть.
Зрение ещё более-менее востребовано. Есть ароматное легаси. И, по традиции, дно работа в эмбед при нищем российском производстве.
У меня 170 решенных задач на леткоде из низ больше 40 хард.
И все равно я регулярно обсираюсь на алгособесах.
За 80 минут на кодилити не успел доделать вторую из двух, потому что сначала не туда пошел, а потом осталось мало времени на дебаг.
Думаю в наше время уровень компетишена на позицию разраба уже реально начал упираться в генетические способности индивидов.
У меня там две решенных задачи, дальше мне показалось сложно.
Легко прошёл штук 7 последних собеседов, везде легко справился, с тремя продолжил диалог, на остальных забил, сейчас выбираю из трех офферов.
Ну в яндексе я бы наверное тоже обосрался, но это показатель уровня ЕГЭ
Я за бугром типо.
Ну во все приличные конторы, по крайней мере тут, практикуется яндексообразное собеседование.
Или Codilty для прескрининга, чтобы даунов не набирать.
Да я понимаю, после 700к уже смешно стало.
>>1945333
Так и учил, и диплом скоро будет, недавно полгода работал на одну компанию, которая терминалы для банковских систем производит.
>>1945347
Учил c/c++ потому что у нас дохуя физики было и математики, поэтому много симуляций и вычислений писали, в том числе параллельных. Да и байтоебство люблю, если честно.
Понял.
Вообще конечно были собеседования с задачками, но как-то адекватно мне пока что попадалось.
А один собесед вообще очень понравился — просто обсуждали всякие фичи, какие технологии использовали, порассуждали на тему всяких архитектур и т.д. Даже собеседование не почувствовал, просто попиздели с чуваком на интересные нам технические темы вокруг плюсов и т.д, приятно было. Оффер от них тоже получил в итоге.
А за бугром хз, да. Могу только посоветовать собеседоваться дальше, вряд ли ты тупой
>Думаю в наше время уровень компетишена на позицию разраба уже реально начал упираться в генетические способности индивидов.
Вкатывайся в дотасаенс. Туда до сих пор берут даже макак.
>работал на одну компанию, которая терминалы для банковских систем производит
Если не секрет, что за контора? Эвотор? AQSI? Расскажи, пожалуйста, о впечатлениях.
>Если не секрет, что за контора?
Очень локальная, но входит в подразделение другой компании, которая работает на TSYS.
>которая терминалы для банковских систем производит
Я не сами терминалы программировал, а обработку данных на сервере, вообще удивлен, что бек на Си писали.
спасибо
>фронт для мобилок
Много приложений-то? 2ГИС знаю, что на плюсах написал. Там по-моему ещё платная версия нужна, чтобы это всё нормально работало.
>>1945167
IoT есть, со всяким кодом для обработки сигналов с датчиков. Но там сишка и много матчасти знать надо, там не только кодописание. Разработка эмбеддедп дня управления всякой мало где применяемой йоба-переферией вроде рентгеновских датчиков, обработчиков всяких хитрых сигналов. Там по-моему тоже сишка. Вроде бы всё есть для постороннего взгляда, а как сунешься - много чего нет, софт пишут с нуля, как минимум для интеграции всего этого. Видел вакансии на Delphi (лол) в конторе, которая делает различные сканы поверхностей на предмет дефектов. Короче, эмбеддед - то, где надо знать матчасть, и где много разных проектов со своей спецификой.
Расскажи поподробнее. У меня создалось впечатление, что под мобилки делают на юнити-анриле или на открытых движках, и всё это не на плюсах, а на Джаве или Котлине. А на плюсах свои движки делают разве что богатые конторы крупные проекты, много ли таких на рынке?
Если я правильно понимаю, во второй структуре только шаблон, и оно не знает что существует перегрузка для initializer_list в A. Как "пробросить" список имеющихся перегрузок из A в B?
https://ideone.com/pzK8n5
Так?
Тогда код B::operator= не вызывается вовсе, а в нём какие-то дополнительные действия перед вызовом A::operator= должны происходить.
Мне вот кажется там решение должно выглядеть примерно как 16-17 строка, список с указанием возможных типов, но что-то я не знаю по какому запросу такое гуглить, "явное инстанцирование методов" ничего не выдаёт.
С шаблоном без специализации не получится, потому что если в нём явно не указан std::initializer_list<T>, то это невыводимый контекст.
Судя по предыдущему коду, тебе нужно было перенести operator=() из предка в потомок без изменений ("пробросить"). Для этого и используется using. Так же можно делать с конструкторами.
Если кроме вызова метода предка ты ещё хочешь что-то сделать, то добавь ещё один шаблонный метод (специализацию), чтобы контекст был выводимым. А using убери.
template <typename T>
B& operator=(std::initializer_list<T> x) {
A::operator=(x);
printf("++");
return *this;
}
>я не знаю по какому запросу такое гуглить
Вот ссылка на выведение шаблонов
https://en.cppreference.com/w/cpp/language/template_argument_deduction
И там ищи "but P is not std::initializer_list"
> что под мобилки делают на юнити-анриле
Если какая-то 3д йоба, то да.
>или на открытых движках
Если какая-то 2д йоба, то да, уровня кокос/годот/дефолд.
>и всё это не на плюсах
Сишарп в юнити / плюсы на остальных движках.
>а на Джаве или Котлине
Это если самопал какой-то на андройд.
>А на плюсах свои движки делают разве что богатые конторы крупные проекты, много ли таких на рынке?
Когда юзаешь движок, нету разницы особо плюсы или нет. Там макаки сидят апи юзают просто и всё. А часто вообще обходятся встроенным конструктором и не пишут кода даже почти.
>и всё это не на плюсах, а на Джаве или Котлине.
хочешь охуенную плавную анимацию, чтобы выглядело заебись - у тебя нет выбора, надо писать на крестах даже под андроед
>в росскосмос
пиздец. это где блядь такие собеседования?
Тут проблема из-за символа управляющей последовательности, а именно \"
(ты не сможешь вставить в строку кавычку, так как кавычка показывает начало-конец строки. поэтому и нужен такой символ \"
А есть какая-нибудь либа для этого?
Ну на никсах есть ncurses... Но хочется что-нибудь легковестное, без ебли с их компиляцией и под винду
Короче:
- винда в приоритете, но в идеале платформозависимость (линукс и винда, можно emscripten)
- только вывод букв в консольку, с разными цветами (нахер не нужны там всякие панельки-окна).
- поддержка кириллицы
- нативное (например на виндах через винапи), а не эмулятор на SDL/etc( потому что капец как бесит когда хочется по фану на пять минут что-нибудь набросать, а вместо этого надо ебаться с стороними либами)
- легковесность - в идеале heander-only - прост включил в проект заголовок и пиши
- минимализм
Вроде как Зверович в свою fmtlib завозил
Там же просто перевода но новую строку нет, по типу \n или endl. Все в одну строку выводится.
> Сишарп в юнити / плюсы на остальных движках.
только анриал и чуть кокоса (с последним не работал - инфа от википедии)
Да это тролль очевидный, не бывает на свете таких наивных людей.
Кстати, есть сейчас ИТТ кто-то, кто в госконторах работает? Рассказывайте, как живется и что делаете. На Borland 6 за дедами доедаете?
сам в Роскосмосе начинал когда-то, было весело, вспоминать приятно
Изучаю С++, ну это и так думаю понятно.
Так вот, все мне нравиться, но хочу просто для себя больше понять как работает процессор и прочие модули.
Нашел годноту, но эта книга, что на пикче на английском(да могу осилить ее на инглише, но займет больше времени)
так вот ананасы, есть ли русская версия? или может что то другое на подобную тематику на русском?
И да сразу после нее, думаю читать Таненбаума-архитектура ЭВМ.
Вообщем, посоветуйте годных книг по работе железа как доплитерутуру, для байтоебов.
И да, я в курсе про ассемблер
Бывшая девушка делала в РНИИРС системы наведения боевых вертолетов на старом qt.
Привет! Извини, я книгу не читал, но если судить ее по обложке, то кажется, что это что-то для домохозяек.
Таненбаум - "Архитектура ЭВМ" это тоже для домохозяек. ее я читал
Лучшая в галактике книга по системному уровню вот: >>1942749
Она большая и надо думать, зато будешь расти как разработчик, а не как пользователь ПК.
Если тебе нужен еще ниже уровень (железо), то ты ошибся тредом (ты и так, в общем-то, ошибся), зайди к Сишникам, найди эмбеддеров, потыкай в них.
хм, антоша, спасибо
То есть для с++ разработчика(в будущем конечно) лучше будет прочитать, то что ты рекомендуешь?
А там есть про так процессор обрабатывает команды, грузит данные в память ну и подобные фичи, которые мы регулярно используем в наших программах.
Короче, когда я пишу какую то команду, я хочу хотя бы на базовом уровне понимать как cout<<"Hello" попадает ко мне на монитор.
Надеюсь ты понимаешь о чем я) и да спасибо за рекомндаци, сейчас скачаю. бобра и печенек тебе
>То есть для с++ разработчика(в будущем конечно) лучше будет прочитать, то что ты рекомендуешь?
Ну т.к. речь идет о системной разработке, там все примеры на чистом Си. Говорится в т.ч. о том, как писать модули ядра. Но если не считать этого, то 80% вещей оттуда плюсовику знать, наверное, тоже очень желательно.
>А там есть про так процессор обрабатывает команды, грузит данные в память ну и подобные фичи, которые мы регулярно используем в наших программах.
Ага. Там про разное железо, и про разные операционки. Условно говоря, идет речь о планировщике потоков, говорится, как он устроен в Linux'е, под виндой, на макоси, и на какой-то BSD-хуйне, по-моему.
А по поводу того, что она на английском, и займет много времени -- как я понял, ты пока еще студент, и спешить особо некуда, так что пусть, заодно английский подкачаешь, двойная польза.
ух, спасибо антоша, ты сделал мой день
да, открыл, смотрю, конечно на мой скромный взгляд годнота
еще та
осталось только на русском найти это вин
>>А по поводу того, что она на английском, и займет много времени ->>- как я понял, ты пока еще студент, и спешить особо некуда, так >>что пусть, заодно английский подкачаешь, двойная польза
ну как бы да, но и дел на самом деле хватает тоже.
но ты прав
Бздя бзде рознь
На картинке написаное Ninth (девятое), 2018й год, я с рутрекера качал. В более старой версии хз что, но, конечно, всегда свежее = лучше. Допустим, про андроид тоже есть, а в старом может не быть.
>>1946259
Емнип, в макоси двойное ядро - бсд-хуйня для POSIX-совместимости и второе, основанное на забытых некро-разработках, которое большую часть работы и делает.
я нашел девятое издание на англ и на русском.
хз какой это год.
последнее 2020 только платное вижу...
при чем тут перевод строки, если там синтаксическая ошибка - этот код просто не будет компилироваться
https://ideone.com/uMZbnW
>>1946099
Братан... меня пугает все то что написали под постом про эту "задачу". Для троллинга слишком уныло кста
Релакс, не имеет смысла долго выбирать книгу, которую почти наверняка не прочитаешь, не говоря уже о "премиумном коненте" в ней. Если под этим контентом подразумеваются 17-21 главы про сети и распределенные системы, то да, есть. Но пока до них неспеша доберешься, выйдет 228-ое издание книги.
кинь ссылку, ты на русском языке скачал?
на английском то он и так в свободном доступе есть, полная версия
никто не говорит про полное прочтение.
по опуту, суть книги помещается в 60% основного текста
далее идет материал, к которму вернешся в случае необходимости
Конечно же Раст. Тем более если ты транс. Будешь как дома, там самое транс-френдли комьюнити. Но даже если не транс, то все равно раст.
Не, англ.
>при чем тут перевод строки, если там синтаксическая ошибка - этот код просто не будет компилироваться
А блять, в глаза долблюсь, показалось, что там \\.
вы вообще работаете? у вас в единицу времени сообщений на дваче пиздец просто
питон редко отвечает, нейроночки еще реже, си вообще сдох
зато в крестах блять
пиздуйте давайте работать, байтоебы
Ну так C++ - это самый популярный язык, рейтинги с жопаскриптерами пиздят.
Не вижу ничего такого. Нейронка гоняет датасеты, бабки капают, апекс играется.
Дак мы тут вчера пообсуждали стримеров на твиче, пока модератор не потёр.
Еще к нам с университетскими лабами набигают, т.к. наш язык преподается в вузах.
Плюс, ребята из Яндекса и Нвидии крайне некомфортно себя чувствуют, если целый день не приходят напомнить нам об этом.
В добавок, мой шитпост чтобы ответить на твой шитпост.
Так тут школьники-сеньеры-помидоры из нвидии сидят же, чего ты хотел? Может с виду кажется, что тут что-то происходит, но обычно отвечают нерелейтед хуитой.
Как минимум, по компьютерной графике, например. Я поначалу думал, что просто дауны отвечают и пытался с кем-то спорить, что-то объяснять, но потом понял, что это просто тред такой, чтобы рофлить над вкатышами наивными и кидать пасты уровня Эндрю Таненбаум энд Технолоджис.
Хз, всегда стараюсь нормально отвечать на нормальные вопросы, в которых шарю. Остальное игнорирую.
потому что это двач - тут нормальные человекини не сидят
бля лол
я тебе открою секрет, что решает не инструмент, а предметная область
или ты перед женой выебываешься, что умеешь махать молотком с прицелом?
я знаю таких фронтов, что ты точно нахуй пойдешь со своими взглядами. И многие из них, о боже - может это для тебя секрет, умеет в плюсы, но выбрали красить кнопки
так что не считай себя умнее других, плиз
Мы наблюдаем сильного, независимого фронта в естественной среде обитания.
Еле еле доучился, но это отдельная история...
Вопрос по Asio.
Когда ассептор при поступлении запроса на соединение инициализирует серверный сокет, этот сокет биндинтся на рандомный порт, а не на тот порт на котором сам ассептор висит.
Какого хуя, собственно? Сервис развернут на одном порту, к которому и подключаются клиенты, а обрабытываюющие сокеты уже на каких-то левых портах. Получается, что к одному порту может быть подключен только один сокет, и ОС дальше как-то сама определяет, когда приходят пакеты, на какой сокет в какой порт их пихнуть?
Это было грубо с твоей стороны, предполагать что здесь нет кошкодевочек.
растотред два блока вниз
Так работают сокеты, asio тут не при чём. Если бы у тебя юзался только один серверный порт, ты бы не мог работать одновременно с несколькими клиентами, а с разными ничего не мешает, и главный порт нужен для диспатчинга по разным портам.
Что делать тогда, если сервак должен хендлить сотни тысяч клиентов одновременно? Портов явно не хватит, тем не менее люди как-то делают
И как на сервере определяется, куда завернуть приходящие пакеты, в какой сокет они направлены? в самом пакете все равно есть только адрес и порт сервиса
> Что делать тогда, если сервак должен хендлить сотни тысяч клиентов одновременно? Портов явно не хватит, тем не менее люди как-то делают
Юзать несколько серверов и балансировщик.
> И как на сервере определяется, куда завернуть приходящие пакеты, в какой сокет они направлены? в самом пакете все равно есть только адрес и порт сервиса
С этим уже ОС разберётся.
Благодарю, почему-то сам не догадался ночью и "дополнительный код" B из _copy во все перегрузки ниже тащил. Так немного громоздко, но хотя бы код в одном месте.
>>1945951
Да я примерно знаю правила вывода, было интересно можно ли как-то указать, написать что-то вроде template<> operator=<initializer_list<int>>(initializer_list<int>) =default; - чтобы код общего шаблона не менялся, но оно пыталось приводить аргумент к initializer_list в первую очередь, как если бы я сам явно скопировал его со всем кодом.
>>1945948
Да, извиняюсь, возможно это было не очевидно - но в таком случае я бы вовсе не писал в B никакой перегрузки.
Не в бровь а в глаз. Как раз пока собралось успел приготовить еду и поесть
>в таком случае я бы вовсе не писал в B никакой перегрузки
Так b = 4.7f не скомпилится. Придётся либо (A&)b = 4.7f, либо b.A::operator=() = 4.7f писать. Компилятор сначала ищет имена в most derived. Если он там нашёл хотя бы одно (это будет operator=(B&), созданный по умолчанию), то в потомке он ничего смотреть не станет. Удаление "= delete" тоже не поможет, так как удалённый метод тоже в перегрузке участвует.
В общем вот такая хуйня не скомпилится:
struct S {};
struct A { void test(float a) {} };
struct B : A { void test(S s) {} };
int main() { B b; b.test(4.7f); }
Не понимаю одной вещи.
С одной стороны, видел советы по названию переменных и методов в camelCase.
С другой, постоянно вижу в коде именования в стиле under_score.
Так что выбрать, чтобы поцаны не засмеяли?
1) когда проект - твой, делаешь как тебе удобно
2) когда ты только участвуешь - делаешь как у них принято
В плюсах нет единого кодстайла, и в каждом проекте своё соглашение. Если пишешь что-то сам, делай как угодно, лишь бы кодстайл был единый.
Ща набегут пуристы. Раньше код писали, а теперь куда ни глянь битвы хyями между остроконечниками и тупоконечниками.
Так на плюсах работы нет вот и сидим в треде
кек
У меня проект с Boost.MPL компилируется. Утром сделал make all, к вечеру как раз закончит. А там можно уже и рабочий день закончился.
О, я смотрю, вы человек культуры? Как насчет чашечки HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, __drv_aliasesMem LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
а ты не думал о том, что немного неправильно выстроил взаимосвязь между двумя твоими суждения?
и запомни - воры не работают
бля, уверен тут есть у кого книга Вильяма Столинга на русском!
поделитесь, че вы псы в самом деле жопитесь
Загугли еще в качестве альтернативы "Operating Systems dinosaur book". Я не читал и хз насколько там глубоко, но это классика классики, рекомендуют всегда и везде.
Правда, возможно, давно не переиздавалось. Хз.
Какие структуры данных используют для многопоточности?
Скажем, нужно что-то складывать по ключ:значение и забирать из разных потоков?
Используешь стандартные структуры вместе с синхронизацией
Либо пишешь свои thread-safe классы
Либо используешь сторонние либы от Васянов
Либо перекатываешься в lock-free
Либо идешь нахуй
Те уже ответили, ну и помни что у современных процов обычно кешлайн 64 байта.
Есть где про это почитать?
что это? Чубака?
1 день на составление резюме на хедхантер и линкедин.
от 1 дня до 2 недель на собеседования.
И ты уже вкатился.
Голод на прогеров бешеный, СЕЙЧАС БЕРУТ ВСЕХ.
Толсто.
Серьезно, некоторые люди по 10 лет вкатываются и все еще имеют зарплату джуна, какие-то 200-300.
Сделал им тестовое задание просто топово, позвали в офис на встречу. проигнорил, так как уже было близко к офферам в двух других местах, не стал заморачиваться.
Что надо было сделать в тестовом и какие сроки дали?
И чем те мингв не нравится?
https://ideone.com/9PSwgT
Я же делаю все по Мейерсу. Как этот ебучий конструктор по умолчанию заприватить?
Потому что если я делаю Singleton() = default; как протектед, то в результате оно компилируется, да, но при этом конструктор какого-то хуя становится публичным, код:
https://ideone.com/jwYk0J
(то есть по итогу это нихуя не синглтон, а создается ДВА экземпляра - что за хуйня? смотри main() - я сейчас из-за этой хуйни полчаса багу искал)
А если я запривачу конструктор Foo,то опять нихуя не работает
https://ideone.com/HaNiUU
Как ты хочешь чтобы синглтон создавал экземпляр класса, у которого не публичный конструктор, это невозможно.
>но при этом конструктор какого-то хуя становится публичным
в классе Foo у тебя конструктор Singleton станет private, а конструктор Foo будет public
всекаешь?
хочешь запретить прямое конструирование Foo? делай его конструктор приватным..
все возможно, на этом трюке несколько паттернов основано
В том числе. Реально ли устроиться на такую работу в другом городе, а работать из своего?
Да.
Сайт у них как-то не внушает доверия, стремота.
long long(A)[][MB][4]; //объявил массив
A = (long long()[][MB][4])malloc(M MB 4 sizeof(long long)); //выделил память
copy((A)[N][kk]); //передал функции адрес куда пихать
void copy(long long a[]) {
a[0] = N0;
}//пихаю
Получаю нарушение доступа к памяти. Причём до этого вместо лонгов был char и всё работало. Где ошибка?
Фикс, там (*А) со звёздочкой, ну и в функии a[0].
Чёрт, странная тема, но похоже ошибка была из-за дебага в х86, вместо х64. Интересно почему тогда ошибка была именно при копировании, ведь N0 тоже long long. В любом случае вроде работает, недоглядел.
Тебе с таким говном в С тред.
Я пишу заяву в ООН. Надеюсь тебя посадят на пятилитровку за вот это
https://godbolt.org/z/x7GG4Y
Значения переменных совпадают? Хотя одна разыменовывается в другую. Если еще звездочку впихнуть - ничего не изменится. Что за магия?
Я С-сеньер, мне здесь можно писать.
Где блять тут UB, роскомнадзор и разыменовывание запретил?
Ap указатель и A указатель. Ap = A копирование адреса из одной переменной в другую. Как они будут разными то?
А также ⚹A, ⚹⚹A, ⚹⚹⚹A. И только ⚹⚹⚹⚹A имеет тип char.
Я это конечно с дивана говорю, но потому что многомерный массив с константным размеров типов - это обычный указатель.
https://godbolt.org/z/K7WEGK
Или ты думаешь, что компилятор настолько поехавший, что хранит там тройной указатель, который разыменовывает? Нет, он просто складывает и умножает размерности известные в компайл-тайме.
>Я С-сеньер, мне здесь можно писать.
Кочегарам место в машинном отделении. Кают-компания для С-сеньеров++.
Функция принимает массив, а ты ей элемент передал. Вообще, код слишком сложный какой-то и запутанный.
Ты хоть понимаешь масштаб проблемы? Написал ты бэк на ++С, приходит тебе запрос /nosuchapi, а ты отвечаешь 200 { "success": false, "error": 4294967295 }. Это вот пиздец, по сравнению с которым nothrow - детский лепет
Не проверяешь на 0.
Вот пишу вверху программы using namespace std;
Беру оттуда функцию, допустим forEach. Пишет forEach is ambiguous.
Пишу std::forEach и все норм.
> Вот пишу вверху программы using namespace std;
Не пиши блять. Неймспейсы как раз и придумали, чтобы твоей проблемы не было.
Весь неймспейс лучше не таскать. Если лень печатать, лучше понаделать алиасов типа auto & fe = std::for_each;
Будешь в каждом треде писать?=)
переведи мне на счет хотя бы десять тысяч (тебе ведь ничего не стоит), иначе не верю.
ну с 700к то явно я больше чем 3 миллиона накопил
Там уже почти 18, думаю вот брать или не брать трешку у офиса...
Друг, я сам в ахуе. Акций продал на 10 миллионов, а остальное - с оклада набежало.
Дообналичиваю их - запостю фо лулз в тред с супом
>>Дообналичиваю их - запостю фо лулз в тред с супом
1. x+1
2. 3 - x+1
3. x+1
4. 2x+1
5. 2x+1 * 3 - x+1
А вообще лучше всегда использовать скобки для предотвращения глупых ошибок и удобночитаемости.
Да, как залупе захочется.
Назрел вопрос, в шапке есть книги по С++, одна из них Роберт Лафоре Объектно-ориентированное программирование в C++
Насколько есть смысл вкатываться через эту книгу, учитывая, что я хочу изучить С++ чисто чтобы не завалить универ (благо он будет у нас только до 2-ого курса) или же проще будет сразу Липпмана брать?
Благодарю за ответы
>Роберт Лафоре Объектно-ориентированное программирование в C++
2004й год? А зачем? Бери Страуструпа, хули ты. Потому что чего ты опасаешься-то? Потратить много умственных усилий на язык, который ты потом дропнешь? Дак чем больше глюкозы ты потратишь на плюсы, тем легче потом тебе дастся твой пидорский раст или джаваскрипт, или что там еще.
>чисто чтобы не завалить универ
Не ссы, не завалишь. Если будут какие-то сложные лабы, неси сюда, ребятки помогут решить.
https://www.toptal.com/c-plus-plus/interview-questions
7й вопрос, который "Implement a template function IsDerivedFrom() that takes class C and class P..."
Сорян если видел. Просто реально приколюндрий.
Как ты dynamic_cast в compile time выполнишь? Задача про темплейты.
Там есть ответ, если нажать клавишу (кнопку) мыши. Один для умных (std::is_base_of), второй для слишком умных. Вот я про него.
Ну конечно, если темплейты то только компайл тайм!
>Какие виды двоичных деревьев знаете?
Вот ты со своими деревьями сиди дальше в НИИ пропёрживай штаны, чел))
>Напишите О большое для new.
Охуенное знание. Зачем нужно? Нужно знать, что heap фрагменитруется, а вот уметь это формализировать - бесполезный трюк уровня "смотрите как я могу".
Знаешь, как гений-алгебраист может не знать как взять самый простейший интеграл, точно так же 700к-нвидия пацан может себе позволить забыть какие-то основы CS; в то время, как задроченный студент обязан их помнить, т.к. могут спросить.
Ну в любой компании(всякие яндексы, хуавеи, нвидии, самсунги, стартапы, etc.) ключевые люди получают норм зп + акции компании, что может выйти в 700к. Но это единицы, работающие там годами и уж точно не местный шизик, который рассказывает как без образования на собес пришел и всё такое прочее.
Ну, во первых, я не шизик, во вторых, 700 стабильно за год между ревью получилось. Было бы дохуя меньше, если бы не грант акций, который выдавали по 150-200 вырос до 550+ (я все что было продал по 550).
static_ cast и SFINAE, но вопрос ебанутый
>второй для слишком умных
Посмотрел раздел Possible Implementation для is_base_of. Никогда бы сам не придумал.
>Как ты dynamic_cast в compile time выполнишь
В задании про compile time ничего не сказано, так что dynamic_cast тоже правильный ответ.
я нихуя не ключевой, ключевые это принципалы и выше, я вангую там полтора+ ляма суммарный доход
Да, и не рублей.
А рядовые программисты вполне себе лям рублей могут иметь. Чел, 200-300 тыс долларов в год это норм зп сеньора с не особо-то и высоким грейдом.
В штатах - да, в Москве - 200-300к долларов в год я вообще хуй знает. Випи\Директор какой-нибудь, с хуевой горой акций)
Обсуждали на реддите этот вопрос. треш ещё тот
>Even an interviewee with only passing knowledge should write something similar to this
Особенно это
>No no[3];
Используются. Лучше не трогать
Нужно, но не часто
Можешь в компайл-тайм вынести много всего.
Их ответ неправильный.
>Просто реально приколюндрий.
Эти трюки описаны в древних книжках из начала нулевых.
А в каких-нибудь журналах типа drdobbs возможно были описаны и того раньше.
Можно начать с этого
template <class D, class P>
bool is_derived() {
struct S { virtual void stub() {}; };
struct SD : public D, S {};
return dynamic_cast<const P*>(&SD());
};
И додумать как быть с final и отсутствием конструктора.
Памагити! В универе заставляют писать на Borland C под DOS.
Суть проблемы:
1)пик1: после редактирования файла L1ASM.ASM почему-то при компиляции не перезаписывается файл L1ASM.OBJ , хотя файл L1.OBJ , который компилируется из файла L1.CPP перезаписывается нормально. Т.е. если L1ASM.OBJ удалять каждый раз вручную, то все работает нормально.
2)Но если скомпилировать L1ASM.ASM с помощью Turbo Assembler без привлечения среды Borland C, то соответствующий файл L1ASM.OBJ перезаписывается нормально, сколько бы раз я его не компилировал. Значит, проблема где-то между Borland C и Turbo Assembler.
3)Ещё перед пик 1 появляется пик 3.
Что с этим делать? inb менять IDE
DoxBox от имени администратора запускал, ОС Windows 7 x64, в режиме совместимости с WinXP и Win95 запускал, не помогло.
Обосрался с твоего универа.
Даже я учился 15 лет назад в залупотворожном универе мухосранска, нам разрешали использовать вижуал студию 2005
У нас тоже можно netbeans, но только на своем ноуте, а я нищеброд.
Самое депрессивное что я видел за сегодня, держись, брат.
Год назад уволился от одного из топовых работодателей рынка IT в России; там в числе прочего приходилось поддерживать сборку под DOS16, т.к. клиенты этой компании хотят сэкономить на железе, да и сам DOS бесплатный.
После этого сидел без работы почти год, пердолил себе консольку в линуксе, и радовался жизни.
Понял, что лучше быть бедным, зато пердолиться в нормальную консольку, а не эту вот.
Ебать, я видел разработку под DOS, но это были некропаравозы. Что-то еще где-то есть?
Кассы чтоле? Я видел кассы под досом когда-то очень давно, лул.
А, речь про upcast. Удаляюсь.
Нижняя строчка, там какие-то макросы можно вставлять.
https://intensive.skillbox.ru/c-plus-plus
Мощная программа
Три дня вебинаров по 1,5 часа для полного погружения в тему — такого вы ещё не видели.
Реальные задачи
Которые помогут закрепить знания и понять, в каком направлении двигаться дальше.
Кейс в портфолио
На интенсиве вы создадите проект, который наверняка оценят потенциальные работодатели.
Комьюнити
Вас ждёт общение с другими участниками и ведущим интенсива в закрытом чате в Telegram.
24 февраля (среда)
Готовимся к созданию сервера на C++
Рассматриваем основы синтаксиса C++.
Разбираем типы и структуры данных.
Пишем первое простейшее приложение.
Разбираемся с основными принципами ручного управления памятью.
Устанавливаем среду разработки, изучаем её возможности.
Применяем стандартную библиотеку.
Создаём основу нашего сервера.
Проходим квиз и получаем сертификат Junior C++ developer.
25 февраля (четверг)
Создаём высокопроизводительный сервер на C++
Продумываем протокол общения между сервером и клиентом.
Разбираемся с основными принципами построения многопоточного приложения.
Разбираем, как работают сетевые соединения.
Применяем фреймворк для организации многопоточного сервера.
Пишем основную логику работы чат-сервера.
Выполняем домашнее задание и получаем сертификат Middle C++ developer.
26 февраля (пятница)
Сервер на C++: подводим итоги
Улучшаем код сервера.
Разбираемся, как собрать код в финальный исполняемый файл.
Выкладываем наше приложение в облачный хостинг.
Выбираем победителей, раздаём призы, получаем сертификат Senior C++ developer.
Составляем резюме и устраиваемся на работу.
https://intensive.skillbox.ru/c-plus-plus
Мощная программа
Три дня вебинаров по 1,5 часа для полного погружения в тему — такого вы ещё не видели.
Реальные задачи
Которые помогут закрепить знания и понять, в каком направлении двигаться дальше.
Кейс в портфолио
На интенсиве вы создадите проект, который наверняка оценят потенциальные работодатели.
Комьюнити
Вас ждёт общение с другими участниками и ведущим интенсива в закрытом чате в Telegram.
24 февраля (среда)
Готовимся к созданию сервера на C++
Рассматриваем основы синтаксиса C++.
Разбираем типы и структуры данных.
Пишем первое простейшее приложение.
Разбираемся с основными принципами ручного управления памятью.
Устанавливаем среду разработки, изучаем её возможности.
Применяем стандартную библиотеку.
Создаём основу нашего сервера.
Проходим квиз и получаем сертификат Junior C++ developer.
25 февраля (четверг)
Создаём высокопроизводительный сервер на C++
Продумываем протокол общения между сервером и клиентом.
Разбираемся с основными принципами построения многопоточного приложения.
Разбираем, как работают сетевые соединения.
Применяем фреймворк для организации многопоточного сервера.
Пишем основную логику работы чат-сервера.
Выполняем домашнее задание и получаем сертификат Middle C++ developer.
26 февраля (пятница)
Сервер на C++: подводим итоги
Улучшаем код сервера.
Разбираемся, как собрать код в финальный исполняемый файл.
Выкладываем наше приложение в облачный хостинг.
Выбираем победителей, раздаём призы, получаем сертификат Senior C++ developer.
Составляем резюме и устраиваемся на работу.
>>24 февраля (среда)
>>Рассматриваем основы синтаксиса C++.
>>25 февраля (четверг)
>>Создаём высокопроизводительный сервер на C++
>Год назад уволился от одного из топовых работодателей рынка IT в России; там в числе прочего приходилось поддерживать сборку под DOS16, т.к. клиенты этой компании хотят сэкономить на железе, да и сам DOS бесплатный.
Шо, железо дороже времени на портирование под DOS?
Выглядит как шутка про опердень на Эрланге.
Looking for a position: Senior C++ developer
Expected salary: $ 150 000 - 250 000 / yr
experience: 3 (full) days
CV:
February 24 2021 (sreda)
Got to the basics of C++ syntax.
Parsed types and data structures.
Wrote the a simple application.
Understood the basic principles of manual memory management.
Installed the development environment, explored its capabilities.
Used the standard library.
Created the basis of the server.
Got a Junior C++ developer certificate.
February 25 2021 (chetverg)
Built a high performance C ++ server
Architected a communication protocol between the server and the client.
Built a multi-threaded application.
Understood how network connections work.
We applied a framework for organizing a multithreaded server.
Created the basic logic of the chat server.
Got a Middle C++ developer certificate.
February 26 2022 (pyatnitsa)
Improved the server code.
Assembled the code into a final executable file.
Uploaded the application to cloud hosting.
Received a Senior C++ developer certificate.
Looking for a position: Senior C++ developer
Expected salary: $ 150 000 - 250 000 / yr
experience: 3 (full) days
CV:
February 24 2021 (sreda)
Got to the basics of C++ syntax.
Parsed types and data structures.
Wrote the a simple application.
Understood the basic principles of manual memory management.
Installed the development environment, explored its capabilities.
Used the standard library.
Created the basis of the server.
Got a Junior C++ developer certificate.
February 25 2021 (chetverg)
Built a high performance C ++ server
Architected a communication protocol between the server and the client.
Built a multi-threaded application.
Understood how network connections work.
We applied a framework for organizing a multithreaded server.
Created the basic logic of the chat server.
Got a Middle C++ developer certificate.
February 26 2022 (pyatnitsa)
Improved the server code.
Assembled the code into a final executable file.
Uploaded the application to cloud hosting.
Received a Senior C++ developer certificate.
Особо устремлённые (и богатые) учащиеся будут оставлены на дополнительные занятия в субботу, им будет пересажен слепок разума Страуструпа.
Чот кек
ну возможность метапрограммирования на шаблонах используется типа для кодогенерации..
но когда дело доходит до реальных задач все равно пользуются внешними препроцессорами
ха ха..
Потому что метапрограммирования и компайл тайм рефлексии в плюсы пока не завезли. Приходите через 1 стандарт
boost.mpl
ты кладешь таски, и они по одной вынимаются свободными тредами. Одновременно бежит количество равное тредам в тредпулах
Залочил мютекс - достал таск - разлочил мютекс - работаешь над таском, в это время остальные тоже достают таски
хм, как раз некоторые возможности шаблонов в раннем с++ и позволили некоторые возможности метапрограммирования в языке..
по сути вся книжка александреску и посвящена была этому..
а в сегодняшних стандартах есть прямая поддержка метапрограммирования.. без костылей..
>Один для умных (std::is_base_of), второй для слишком умных.
Их код это эквивалент std::is_convertible<D°, B°>, а не std::is_base_of<B, D>
Но как тредпул распределяет какой именно из четырех работающих тредов должен достать и выполнить таск?
Занятые треды заняты, а свободные треды висят на какой-нибудь Кондишн Вариабле в слипе, и просыпаются, когда пришла новая таска (триггернули CV)
Строит цифровой гулаг и не стесняется.
std::cout << "олды_in_da_thread"
Да. Сишисты со своими while(⚹s2++=*s1++) совсем двинулись. Да, лаконично, но это читаемость кода в говно превращает же, и по быстродействию никакого выиграешь с тремя строками - а прочитать три строки можно намного быстрее.
Такая же лишняя когнитивная нагрузка как и хуёвые названия переменных.
Дебил ты ничего не понимаь в программировании. Шэринг из кэринг. Опрессор свинья, мужской расист.
Какие юзкейсы? Вроде даже в бусте есть обёртка на него. ГДЕ ЭТА ХУЙНЯ ИСПОЛЬЗУЕТСЯ?
Правильно ли я понимаю, что это низкоуровневая либа делающая то, что по хорошему сейчас через Apache Kafka делают?
По твоему while(⚹s2++=*s1++) быстрее работает, чем читаемая запись в три строчки?
Вбей в годболт, там буквально одинаковый асм-код получается.
Такое используется для вычислений в системах с массовым параллелизмом (MPP). Например моделирование физических процессов с помощью методов конечных элементов и не только (CAE системы).
Естественно, что машины с кучей процов, распределённой файловой системой и разделяемой памятью есть только во всяких Росатомах и Роскосмосах (ещё в МГУ есть). Соответственно вакансий под MPI хуй да нихуя и все они для патриотов.
Как же хочется в оборонку. Проектировать какую-нибудь ёбу машину массового уничтожения.
Я из патриотов недавно выписался.
Есть класс, назовём его Buffer. Буфер представляет из себя небольшую обертку над QVector, хранит дохуя импортируемых записей, поэтому хочется иметь копи и мув операции. Из этого следует, что от QObject наследоваться нельзя. Хочется иметь qml синглтон, который будет этот буфер менеджить - управлять импортом/экспортом, прокидывать буфер в какие-то вьюхи. Назовём это BufferManager. Тут начинается интересное. Хочется иметь возможность в qml делать что-то вроде
SomeBufferView {
buffer: BufferManager.buffer
}
Хуй там плавал! Никоим образом буфер прокинуть нельзя, он должен быть зарегистрирован в qml-движке, но это невозможно из-за копи и мув хотелок. Чо делать? Кроме как перевести BufferManager из qml синглтона в обычный с++ синглтон есть варианты?
В годболте тогда будут показаны другие инструкции. Там -O2 добавь или -O3 в строку вызова компилятора
Откуда у тебя мой скрин?
Вью должен получать не сырой буффер, а модель для отображения. Посмотри туториал по моделям, там все расписано.
А модель готовь в крестовом классе, и выкладывай в кюмл как проперти или функцией.
Пардон, я ошибся. Как раз моделям во вьюхах я хотел прокидывать буфер. В сыром виде. До BufferModel обёртки чё-то даже не допёр сначала лол. Спасибо, подтолкнул, буду пробовать.
Ну вот пример моего всратого пултреда. Когда втыкал pthread_mutex_lock не совсем понимал что делаю и зачем. Если поставить анлок мютекса на 30ю строку, иногда вылетает сегфолт и не все таски обрабатываются. Сейчас, когда всё как на скрине, работает нормально. Однако все еще есть сомнения в моем понимании мютексов.
В то и проблема, что там все очень упрощено. Хотелось бы обмазаться тредпулом на си чтобы понять их.
Там единственное есть особенность: в отличие от виджетов, кмл вьюха не сообщает модели номер столбца, он всегда 0, поэтому их приходится различать по ролям, и соответственно на отображение влияет только кмл делегат, а не сообщаемые моделью роли (editable и т.п.). Поначалу несколько обескураживает.
1) Чтобы круто хуярить нативные приложения на плюсах (Qt). Не то чтобы хочется, но мало ли, жизнь заставит. Там же есть какие-то устоявшиеся практики, вроде разбиения десктопного приложения внутри на бэкенд (в виде стейт-машины, возможно с вынесением в сервис?) и фронтенд. Нихуя не поятно, короче. Откуда я это высосал? Увидел где-то. А раз где-то увидел, значит, откуда-то оно взялось?
2) Книжки по ""архитектуре"" для бэкенда. Просто часто на собесах говорят - "нам нужен специалист с архитекторским опытом...." Дак вот, где этому учатся? Звучит как очень размазанное понятие, сферический конь в вакууме. Почитать дайте. Выкачал "чистая архитектура", еще не читал, но предвкушаю что водища.
А в крестах без задней мысли не бывает, здесь как ни крутись будет ебля. Смотри SFML.
Ну дак я понимаю, брат, но если чему-то можно научиться, значит по этому есть книжки.
Верно? Верно.
Ведь если кто-то обладает ""архитекторским опытом"" и по этой теме нет еще ни одной книги, разве он откажется написать первую и навеки остаться в истории Computer Science?
Книжки давай, чего выебываешься сидишь.
Получаешь дозу наркоза, сквозь пелену слышишь "...читал вчера книжки по анатомии", засыпаешь. Конец.
Нахуй ты им с твоими книжками нужен?
>Нахуй ты им с твоими книжками нужен?
Мне плевать, нужен ли я им. Я для себя учусь. Чтобы когда пришел момент получать ""архитекторский опыт"", было на что опираться.
А вообще, отстань, ты какой-то пустословный.
Мне помогло систематизировать все знания чтение стандарта. Это тяжело, часто не совсем понятно и очевидно, но интересно и круто
Тут в треде активно SFML продвигают. Это, новый мем какой-то? Типа COBOL'а?
Потому что только долбоёбы используют русскую локализацию
Да какой мем, анон явно не для работы спрашивает, наше дело лишь предложить технологии. Но даже если для работы, sfml в вакансиях писать тупо, он за пару вечеров учится же.
1.488см
Хуй 16.5, толстый, тянки ноют. Но какое это имеет значение на этой доске?
Может есть какая операция копирования которая сразу же вставит куда надо, и не по одному элементу а весь массив?
Вот если бы мне надо было вставить в конец, то я бы сделал через insert.
А тут мне надо по сути заменить в середине
https://godbolt.org/z/Yqqzae Если я тебя правильно понял, братишка
>>1951283
>Хуй 16.5
Да какой хуй? У вас после плюсов все еще стоит?
Картинки генерирующиеся и довольно простые, выбирается один из вариантов.
Питон не покатит, это поделие хочу запускать на роутере с 70мбайт свободной оперативы и 600мгц процессором.
да, я ебанутый
Да говорю тебе, все там правильно.
m_numbers[j] = numbers[j] будет заполнять только первые 6 элементов. Это неправильно
По задаче мне надо в огромный массив m_numbers из нескольких тысяч элементов скопировать содержимое из массива numbers (в котором шесть элементов), начиная с индекса m_num
поэтому там:
m_numbers[m_num] = numbers[j]
m_num = это первый элемент,в который надо копировать значение из numbers
Он может быть хоть стопятсоттридцатым,
То есть там это раскладывается в такое
m_numbers[10000] = numbers[0];
m_numbers[10001] = numbers[1];
m_numbers[10002] = numbers[2];
m_numbers[10003] = numbers[3];
m_numbers[10004] = numbers[4];
m_numbers[10005] = numbers[5];
никакого уба тут нет
Что-то фигня получается, получилось тормознуто
(обычный перебор циклом и присваивание поэлементно на моем объеме данных работает на почти 200мс быстрее чем std::copy
почти +200мс к времени выполнения на моих данных при юзанье std::copy, написал так:
std::copy(m_queue.begin(), m_queue.end(), m_data.begin() + m_num);
херня
Извини, но ты нихуя не уточнял, что тебе перформанс важнее всего.
Если так, то вообще memmove() используй.
Расскажешь.
Анон спросил аналог бейсика для графики, а не библиотеку, с которой можно на работу устраиваться.
Не в дебаге случайно собираешь?
m_numbers.resize(sizeof(number) / sizeof(int));
memcpy(m_numbers.data(), &number, sizeof(number));
Извини, я был под спайсом. Ты прав, конечно же.
В прочем, godbolt показывает одинаковый ассемблер для memcopy и memmove.
>>1951489
Чел, убедись что твои бенчмарки - не говно.
https://stackoverflow.com/questions/4707012/is-it-better-to-use-stdmemcpy-or-stdcopy-in-terms-to-performance
Пацаны говорят, что любой компилятор сплющивает std::copy до memcpy, или даже лучше, "векторизирует" че-то там, блядь. Знал бы я что это.
Не проецируй свои фантазии на меня, плес. Каким надо быть опущенцем, чтобы агриться из-за зависти
Чел, да я просто хуево выразился. Попросили сделать свою реализацию стринг поверх сишного массива чар.
>Ты лучше ответить, что за самопсинный стринг?
Я не знаю, браток, я не тот чел, которого заставили его писать. Но спасибо за то что ответил на мой пост, мне очень приятно твое внимание.
А так, я, думаю, ничего такого, просто сказали "напиши стринг", а он там стал че-то оверинжинирить, типа, блядь, а вдруг юникод, ой, а итераторы, ой, пук, а может COW сделать, как в 1992 модно было? Ой...
Не переживай, дружище. Ты на джуна же собеседовался, да? Исключительно Страуструпа в качестве первой книги рекомендовать надо, а не ту кучу непонятно чего, что навалено для в шапке. У Страуструпа там на пол книги размазана реализация то ли вектора, то ли стринга. Точно ответил бы.
>>1951720
>Почти как в 90-х - готовой продукцией.
Пиздос, устроился в фейсбук, а зарплату ретвитами и лукасами выдали
Скорее ваучерами. Хотя акции, скорее всего, привилегированные без права голоса.
ну на карточку то 400к ежемесячно приходит, и еще 300 сверху акциями, отлично.
Код писать, как знаешь. Не пытайся сделать идеально, сделай хоть как-то, чтобы работало, потом порефакторишь.
Пишешь как можешь.... долбоебов рассказывающих что-то там про то что пишешь говнокод и про какой-то мифический хороший код - шлешь нахуй.
Простреливаешь себе колено парочку раз и осознаешь как надо писать код. Всё
С++, это брутальный язык, который можно познать только через боль.. Но это как в жизни - путь набивания шишек
это должно быть похоже на божественно питоняче
foo = {}
bar = foo.get(val, Bar())
bar.update(update)
Это должно быть похоже на богомертвый гет инстанс
Попробывал выравнить код разными конфигами в Visual Studio.
Какого хуя они все код в нечитабельное говно с уебанскими переносами превращают?
Что вообще можно использовать для форматирования? Жрать говно?
И какие еще есть крутые ide для плюсов, кроме говняной студии, которая выглядит как высер мамонта из нулевых.
Эм, в студии полностью кастомное выравнивание - как хочешь, так и делаешь (где-то в параметрах-текстовый редактор-цпп и там найдешь
Ну епт, почему в vscode есть плагины, которые делают хорошее выравнивание и это даже не ide. А тут в ide я блять вынужден все сам настраивать, а по дефолту список из дерьма от гугломазил, после форматирования которыми хуеешь с того, как они там вообще работают.
Что у тебя там за форматирование? кинь пример. Потому что по дефолту студия выравнивает так, как это делают 99% разработчиков.
Ты джаваскриптер, наверное? У меня есть знакомая джаваскриптерша, ее тоже почему-то сильно волнуют отступы, будто доебаться больше не до чего.
Особенно доставил аргумент "питон говно а не язык, там отступы эти дебильные".
//
Анон, по твоему опыту, на собесах по плюсам спрашивают SOLID, паттерны? Я за пять лет побывал на ~10 собесах, ни разу не спрашивали. Все вопросы касательно ООП ограничиваются особенностями плюсов, типа там виртуальных деструкторов, временных объектов и т.п..
Спасиб, только это мне не помогло
Двач, напомните мне что делает мой код (в качестве переменных адреса памяти intptr_t):
if ((переменная1 & переменная2 & переменная3) !=0) Обновлять кое-что
>if ((переменная1 & переменная2 & переменная3) !=0) Обновлять кое-что
intptr_t - это "signed integer type capable of holding a pointer", т.е. не обязательно указатель, а может быть тупо используется как инт.
Иначе мне непонятно, какого хуя ты там битовые флаги смотришь.
Кинь код нормально, братишка, браток, дружище.
char *msg = new char[data.length() + 1];
strcpy(msg, data.c_str());
delete[]msg;
Бля, а получается память нужно очищать только после того места, где я использую переменную?
блять, дай полный код (с ссылкой на пастбин или ideone, разумеется, иначе пойдёшь нахуй). Что за привычка постить непонятный огрызок говна
Понимаю.
Но тут все просто. Беру строку, конверчу ее в чар и передаю в другую функцию сильно ниже. Я думал, что память нужно сразу очищать. А теперь как я понимаю, память нужно очистить только после того места, где я заюзаю переменную?
>Беру строку, конверчу ее в чар и передаю в другую функцию
Возможно, ты передал указатель на строку внутри объекта std::string после того, как вызвался его деструктор, засим ты передал висячий указатель и обосрался.
Поэтому тебя, дубину, и просят запостить ВЕСЬ код, а не вонючий огрызок, который позволяет понять истинную причину сегфолта, а не заставляет гадать на кофейной гуще.
Не, такой хни нет.
Просто когда я сразу очищаю память, то ниже ссылаюсь на удаленный участок памяти, как я понимаю, поэтому летит эксепшен.
while(true){};
Это какой-то трюк? С какой целью делается?
Наверное, чтобы главный тред не завершился раньше остальных трелов и не убил из преждевременно. Только непонятно, зачем, если есть join().
Ты всё написал правильно! Это баг в конпеляторе наверно!! Плохо зделоли, тупо!
Вкатился? Сколько лет учебы до вката было?
Похоже это проверка на знание того что можно выделять память для объектов. Для примитивных же невозможно?
Я вот не понимаю - стачала был Heap или Stack?
Поинтеры это олдовый артефакт или наоборот новый?
пошёл нахуй короче
тебе уже сказали что надо сделать для того, чтобы тебе помогли, но ты оказался тупорогим упёртым ослом
Указатель - это как процессор работает, еще с доисторических времен
Кто я? Просто хочу разобраться. Думаю пока ассемблер не начну изучать буду дауном.
В начале начал. Когда компьютер был размером со стадион. Думаю стачала создавали пойнтер а потом назначали туда значение. Но это догадка.
В начале была тупо оперативка, адреса хардкодились при написании программ. Не было умных ОС и компиляторов, которые организуют поверх оперативаи стек и кучу.
Ты действительно можешь прочитьюать первые гоавы из учебников по ассемблеру, там разжёвывается прхитектура.
>адреса хардкодились при написании программ.
Ага теперь понятно.
Еще вопрос. Если куча работает медленнее а памяти сейчас много и она дешевая, то почему бы не обойтись без динамической аллокации вообще? Вместо поинтеров для char[] использовать string.
>Вместо поинтеров для char[] использовать string
Не понял. Ты думаешь стринг - это не обертка над char[], а какой-то новый тип?
> то почему бы не обойтись без динамической аллокации вообще?
Ну так она работает быстрее за счёт того, что в реалтайме не нужно хуиту считать. Если сделаешь только один тип памяти, то она станет такой же, как динамическая сейчас.
>Не понял. Ты думаешь стринг - это не обертка над char[], а какой-то новый тип?
Это я знаю. Я затупил. Правильно будет сказать - выделять место сразу а не динамически.
>Если сделаешь только один тип памяти, то она станет такой же, как динамическая сейчас.
Архитектуру я не собираюсь менять. Просто обходить стороной аллокации когда это возможно. Вот еще вопрос - у нас класс сout имеет готовую сущность (инстанс, не знаю как по русски) и она как объект тоже динамически создается кажый раз или как то по особому?
>почему бы не обойтись без динамической аллокации вообще? Вместо поинтеров для char[] использовать string.
Обосрался в голосину
Ты их, блядь, еще до 8х32 пикселя пережми.
Кроме прочих недостатков стека, его размер сильно ограничен. Пусть у тебя хоть терабайт оперативы, ты не сможешь запихнуть в стек много больших объектов, он быстро переполнится. Иногда дефолтный размер стека можно изменить, но это сильно зависит от компилятора и ОС, и полагаться на это не стоит.
Платформозависимо, но у меня с mingw/win64 свалилось на массиве из миллиона интов. Это считай несколько картинок.
-Wl,--stack,<size>
Ну картинки большие по определению. Допустим мы знаем что у нас будет в программе 10 объектов. Возможно ли их статически создать заранее в виде struct-ов и только модифицировать в ходе программы?
Легко. Правда в реальных программах это не сработает, посмотри сколько один только браузер съедает.
короче сейчас перекатываюсь из игроиндустрии, где писал на спп
хочу подготовиться к собесам через пет проект
вопрос: есть ли у вас, примерно, идеи чтобы такого замутить, чтобы показать и знание крестов и знание питона?
мегабайт для винды + студии. Но вообще - оно конфигрурется свитчом компилятора
Препод сказал что в Хроме утечки памяти потому что экстеншены на джаве пишут всякие проходимцы. То что он съедает это не особо напрягает. Интересует cкорость.
Это я к тому, что держать всё в "более быстром" стеке для софта такого масштаба не получится.
Зато вкачусь.
>Если куча работает медленнее а памяти сейчас много и она дешевая, то почему бы не обойтись без динамической аллокации вообще?
В системах, где важна скорость и предсказуемость (допустим, ты делаешь ракеты, бомбы и говно), так и делают. Можешь чекнуть стандарт lockheed martin, JSF++ называется.
Превосходно.
>Если куча работает медленнее
Делал кучу для wasm. Там просто объекты <= 512 байт (у стандартного линуксного malloc из libc вроде так же) выделяются сразу массивами по 64 (ну у меня так) штуки. Такая куча работает очень быстро.
>памяти сейчас много и она дешевая
Стек кешируется процессором, поэтому он и быстр. А кеша у ЦПУ хуй да маленько.
Выглядит интересно. Этим вообще можно заменить книги базового уровня типу Праты или Липпмана? Что-то вроде, читаешь главу -> пишешь код по изученному в подглаве, вышеупомянутых авторов немного отвратно читать из-за воды, а тут прям по делу всё расписано.
мимо другой вкатывальщик
Это перевод материалов с https://www.learncpp.com/
>заменить книги
Вполне самостоятельный курс. Если книжки не заходят, то почему нет?
схуяли ЮБ? в этом языке есть вообще ли какие-нибудь менее ранимые операции, кроме слажения двух int больше нуля и меньше 10?
Чел, ты долбоеб? Ты делаешь побитовое умножение адресов указателей, какого дьявола ты пытаешься добиться?
Ряяяя не разрешают, UB
Нету здесь UB, просто ты долбоеб и делаешь какую-то хуйню; и получишь какую-то хуйню, которая абсолютно никогда никому не потребовалась бы; в т.ч. тебе, даже учитывая что ты долбоеб.
Спасибо за годноту. На английском самое то. На русском даже сложнее понимать ИМХО.
>слажения
Сынок. У тебя вся жизнь впереди, а ты уже всем недоволен.
Скажи твоя мама тебя люлит?
Ты любишь свою маму?
Иди и обиими её. Потом продолжим.
Хром на плюсах написан. Но, скорее всего, с использованием гуглового виденья плюсов - с отключенными эксепшнами и запретом на все, что их кидает.
Лень смотреть https://github.com/chromium/chromium тбх фам, т.к. фаерфокс лучше
Препод сказал что это возможно проверить по увеличению загрузки памяти и скорости. Причина - экстеншены. Да, фаерфокс он советовал как альтернативу.
Юзаю либу, пишу маленький прожект поделку.
Захотел перенести и переименовать этот проект. Оказалось что в ебучей вижуал студии это сделать не так-то просто.
Создал новый проект, перекинул туда ранее билдищийся код с гитхаба. И дальше начинается необъяснимая хуйня.
Билд ломается, сыпется куча ошибок, указывающих на кишочки либы. Захожу, там всякая хуйня уровня namespace "std" has no member "string_view".
Три часа ебусь, переустанавливаю vcpkg, либы, пробую менять версии. Н-и-х-у-я не помогает. В итоге до сих пор сижу сосу хуй, вместо того, чтобы писать код.
КАК БОРОТЬСЯ С ЭТОЙ ЕБАТНЕЙ?
Да, ты прав.
Через 3 часа написав сюда я догнал, что это за хуйня. Я забыл в новом проекте выставить поддержку последних плюсов.
Эти пидоры ничего для людей сделать не могут.
Походу там уже вся Индия работает.
Скачать бесплатную IntelliJ IDEA Community Edition и воспользоваться её git клиентом. Открываешь своей проект, выделяешь кусок файла, жмёшь правой и выбираешь что-то вроде Show history for selection, смотришь, наслаждаешься. Поддержка C++ в самой IDE какая-то примитивная вроде есть, для работы с гит клиентом её хватает. Для остальных задач используешь Qt Creator, они с Идеей друг другу никак не мешают.
>нормальный человек
Нормальный человек тут ты один? Тут ньюфагов типа меня не сидит?
>Через 3 часа написав сюда я догнал, что это за хуйня.
У тебя явные проблемы с пониманием прочитанного.
Ну конечно, дело ведь только в запятых.
> аноны, есть ли у вас кулстори с переката откуда-то в кресты?
Зачем перекатываться в кресты? Кому в здравом уме придет в голову такая мысля? Разве что какому-то микрочелику который хочет в геймдев, земля ему пухом.
Выкатываются только из крестов. Разве не так?
Я вот несколько раз выкатыавлся в другие языки, но меня всегда засасывало обратно.
Типа, начнешь вот на Go работать, сперва кайфуешь и оргазмируешь фонтаном, а потом начинаешь чувствовать, что вот здесь вот явно переборщили с защитой от долбоеба. Или начинает напрягать факт наличия сборщика мусора в твоем языке. Абсолютно ж ненужное удобство, которое своим наличием разве что ограничивает сферу применений языка.
В итоге добро пожаловать, снова.
>Раньше делали chroot jail и совали туда все зависимости.
раньше были профессиональные платные тулзы для тестирования под линуксами, но по сути делали они софтварную виртуализацию, да
копролит
Не сам хром, а экстеншены.
Растошизик, спок.
Сап. Учусь на первом курсе на софт енджениринг. Преподы - аутсорсные долбоебы.При этом задачи и тесты непомерно сложны. На фоне читинга по прохождению тестов сплачивается коллектив. Думаю летом попробовать написать совместо игру с некоторыми из команды. И возможно создать маленькую студию. Это конечно мечтоы, но почем бы не попробовать. Пока люди еще на энтузиазме, а я знаю чтобы бывает когда осознаешь истинное положение дел. Я то сам не упал бы духом. Но вот за них не знаю. Поэтому думаю надо пилить пока не поздно. У кого есть опыт руководства и попытки распределить таски между командой? Что посоветуете? Присмотрел уже опен сорс на основе которогу будем делать.
git освой уже, макак
>Что посоветуете?
Советую хуйней не заниматься.
А уж если прям точно намерен заниматься хуйней, то не лезь в плюсы и оупенджеэлы и всё остальное.
Берите юнити, запрягайте прям сразу половину людей моделить/рисовать ассеты или хотя бы пиздить/ковырять их в блендере/фотошопе, остальную половину лепить говнокод / тягать конструктор.
Если будете там чёт код какой-то писать - соснете с вероятностью 100 процентов.
Просто без контента, пусть даже хуевого, реально ничего не получится. А что-то там процедурно делать вы не умеете и не научитесь до приличного уровня.
Двачую этого (подтверждаю это как далбаёб написавший свой кросплатформенный движок и не совладавший со всем остальным)
Бро, что там за непомерно сложные задачи на первом курсе? Вас же не заставляют писать компилятор?
Создавать студию, в которой никто из участников не имеет опыта, и для каждого из них задачи с первого курса непомерно сложные -- ну ты понял.
Ты хотя бы финансово в эту идею не вкладывайся. Пусть будет кружок по интересам, а не студия.
Вы пососете, но опыт получите, и это очень здорово. Молодцы.
А задачи скинь, любопытно.
>процедурно
Зачем используются процедуры? Разве на ооп не сделать? Я вообще минималист. Мне главное чтобы логика работала. А там уж допилю как-нибудь графику. Если сосну - заплачу артисту если геймплей будет что-надо и мне самому доставлять будет.
Я скидывал тесты вверху. Картинки с инглишом. Проблема конечно не в сложности задач но в том что по полочкам не раскладывают. Типа - смотрите это оператор он делает вот так. Нука напиши свой. Вместо того чтобы просто сказать что это для удобства в первую очередь.
Под процедурно он видимо имеет в виду не языковые конструкции, а конвейерную генерацию и кастомизацию контента.
Он про процедурную генерацию контента видимо, а не процедурное программирование. Но так то кресты мультипарадигменные, и в стл тащемто куча именно процедур.
Движок для игры или другой? Я вообще консольной текстовой игре буду рад. Потом простой пиксейльный графон. Вообще если геймплей будет такой, что сам готов буду годами играть, то построю целое коммюнити вокруг этого на ютюб и в пораше(нет) А потом и артисты сами подтянутся.
Почему первый вариант не работает как надо, но работает второй?
Это две очень разных записи.
matrix foo = bar;
не использует оператор присваивания, оно использует конструктор копии.
Эта строчка эквивалентна этой:
matrix foo(bar);
Посибо
Просто берешь и начинаешь делать. От простого к сложного. И ни студия, ни команда на этом этапе не нужны.
Я уже нашел консольный оупен соус. Теперь надо разобратьяс в коде и прокачать AI до максималки. Для меня это приоритет. Потом добавлять PCG и лутбоксы. Ну а потом DLCшная рента и профит.
Давай браток. Не забывай на все вопросы отвечать "ну игра же еще находится на стадии разработки".
На дваче есть пользовательский раздел для геймдева, тебе правда лучше туда. Сюда не надо. Туда.
>задачи и тесты непомерно сложны
>Думаю летом попробовать написать совместо игру
О сколько нам открытий чудных...
а книги базового уровня вообще не надо читать, они ничего тебе не дадут
выгодней всего взять "язык программирования с++" 4е специальное издание страуструпа и пробиваться через нее с боем
а до этого осилить k&r
а сверху накатить майерса последнее издание и "шаблоны" вандервурда, это чтобы вкатиться в последние стандарты плюсов
если ты будешь бить пуховые подушки, ты не научишся драться с каменными великанами
Прошу подсказки, почему этот алгоритм поразрядной сортировки не влезает в 1 секунду в каком-то тесте, опаздывая аж на 0,1 секунд? Что его так сильно тормозит?
Как не загромождать пространство циклами, пушами на каждый из 10 векторов?
Есть ли перегрузка '+' для сложения векторов?
В нуфаготреде проигнорировали.
L0.clear();
L1.clear();
L2.clear();
L3.clear();
L4.clear();
L5.clear();
L6.clear();
L7.clear();
L8.clear();
L9.clear();
Бро, извини что не по делу, но тебе точно заменить все это дело на вектор векторов, типа
std::vector<std::vector<int>> L;
И обращаться к своим элементам вот так:
L[1].push_back(L[0][0]);
В итоге, допустим, заместо той очистки что у тебя сейчас есть, ты мог бы написать две строчки:
for(auto &vec : L)
vec.clear();
Это никак не повлияет на быстродействие, что там тормозит я не в курсе, но прежде чем сдавать это куда ты там сдаешь, прими мой совет к сведению.
И еще: удали, пожалуйста, свою функцию возведения в степень и используй библиотечную:
https://en.cppreference.com/w/cpp/numeric/math/pow
Твоя функция работает хуже, и это будет сказываться на быстродействии.
Нет, не троллю. Я год назад последний раз код писал, и то были простые алгоритмы. Говорю же, я из ньфаг-треда.
>>1953761
Спасибо на том, а то я не понимал, как это уменьшить в размере. Может 100 применений clear и отнимают 0,1 секунд.
>но прежде чем сдавать это куда ты там сдаешь
В yandex contest. Там автоматически через тесты программа прогоняется и код никто не видит, поэтому я и сдаю говнокод, ведь препод палкой за такое бить не будет.
>>1953768
Когда учил алгоритмы C# нам препод говорил, чтобы мы руками в степень возводили вот я и написал свою функцию. Значит pow тоже родной щас впишу.
По алгоритму хз но сразу видно что самый большой проеб это L.erase(L.begin()); у тебя каждый раз происходит копирование всех оставшихся элементов на одну позицию к началу. Pow замени на обращение к массиву { 1, 10, 100 ... }. Векторы вставляй инсертом а не пушбеком.
Извини, ты очень плохо задал вопрос, братишка. У тебя вся работа делается в двух функциях, которые ты не показал. А "Просто рандом" говорит абсолютно ничего, рандом бывает разный.
Потому что ты не привёл содержимое других функций, а значит, оно выглядит так:
std::string date_to_string(tm *d)
{
return "18.08.2005";
}
Ты не выделяешь память на указатель, и возвращаешь всегда указатель на одно и тоже место на стеке.
The returned value points to an internal object whose validity or value may be altered by any subsequent call to gmtime or localtime.
Ну не прям сильно наврал
А хотя причина вот в чем - т.к. память не выделяется, то локал тайм возвращает указатель на статическую структуру внутри библиотеки.
Те реально все четыре вызова твоих функций возвращают один и тот же указатель. Тебе надо или сохранять значение где то ещё после каждого вызова, или вывод ить результат после каждого вызова.
И вообще это сишные функции, используй крестовые.
В кресты завезли сборку мусора, больше не нужно писать касомные аллокаторы и юзать смартпоинтеры.
>>1953998
Дак если программа маленькая, то освобождать в ней память нахуй надо; имеет смысл только чтобы на тебя косо не посмотрели.
Многие линуксовые утилиты, типа всякие cat'ы-huyat'ы память выделяют, но не освобождают; потому что делать что ли нечего, память очистится вместе с закрытием программы. А так лишние вызовы.
Хотя то си, а это плюсы, тут в теории в деструкторах что-то важное может быть; но нихуя нет.
Так что оставьте человека в покое, чего вы давите на бедняжку.
Скоро Go 2 выйдет, с дженериками. А вторая часть всегда лучшая, посмотри, например, на Шрек 2. Какой-то смысл в плюсах на бэкенде окончательно пропадет.
>>1954028
Я хотел сказать, что чистить память после работы программы это как мыть руки после того как ты посрал. Если программа маленькая, и срал ты не два часа поносом, то руки моют только ханжи.
Пацаны, у вас есть какие-то любимые утилитарные библиотеки?
Допустим, я для логирования spdlog использую, 8/10, снял пару баллов за то что синглтон.
Для сравнения, boost::log оценил бы на 2/10, это кромешный пиздец, литерали троллейбус из хлеба.
А вот boost::program_options наоборот относительно заебца, 6.5/10.
А вы что за собой таскаете в (почти) каждый новый проект?
Окей, а зачем тогда, например, лично ты до сих пор сидишь на плюсах, если они мертвы?
fmt
чё бля??
рапида сблев говна (с нее и переехали), jansson вообще сиподелие вроде
Сорта на самом деле
Бля, только это смог найти:
https://lists.gnu.org/archive/html/bug-coreutils/2011-05/msg00065.html
>Explicitly freeing the memory would only waste time managing the heap just before we'd exit anyway.
>What's implied here is that the way the operating system recovers the unfreed memory is more efficient than the program could achieve on its own.
В текущем году (2021) ls, возможно, как-то иначе себя ведет, не смотрел код, но не о нем конкретно речь; такая точка зрения, такая практика все еще имеет право на жизнь.
Зачем писать лишние строчки кода, если они абсолютно ничего кроме проеба нескольких секунд твоего времени, увеличения компайлтайма и замедления работы программы не делают?
Разве что для того, чтобы усмирить ОКР-ных невротиков-перфекционистов. Но о них пусть санитары заботится, согласись.
==28743== HEAP SUMMARY:
==28743== in use at exit: 21,781 bytes in 52 blocks
==28743== total heap usage: 243 allocs, 191 frees, 116,307 bytes allocated
А, не, все так же работает, как и в 2011.
Просто valgrind, походу, за эти годы перестал считать это проблемой, и не записывает в "утечки".
cat, du, apt туда же.
Дак здесь нет ни UB, ни даже каких-то мерзких грязных хаков.
Получается, можно заявлять, что самые используемые человечеством компьютерные программы ну наверняка же это gnu utils эти практики применяют и всем заебись?
Еще можешь gdb и make прочекать, та же картина.
Для тебя все это не аргумент?
Конечно, вся эта тема неуместно смотрится в c++ треде, т.к. тут RAII и говно, совсем другие реалии.
Но т.к. речь изначально пошла о чебзике, делавшем свою laba1.cpp в исключительно процедурном стиле, то хули нет.
>самый большой проеб это L.erase(L.begin())
Так, а че с этим делать тогда? У меня по алгоритму, допустим, числа 73 25 81 93. Сначала идет сортировка по последней цифре (младший разряд), - 73, 93 отправляются в L3, 25 в L5, 81 в L1. Дальше они собираются обратно в L. Потом цикл повторяется, пока прога не дойдет да самого старшего разряда, тут их 2 (в проге 10). Я это к тому, что в младшем разряде может быть 3 единицы, а в более старшем 1 и если я буду инсертать, то потом при сборке придется обозначить, что у меня 1 логически верное число в массиве а не 3 физических. То есть, без стирания тоже никак не обойтись.
Потому что кресты - лучший язык всех времён и народов.
Radix sort это по сути тот же самый counting sort, только для каждого разряда отдельно. Ты перемудрил. Во-первых, тебе не нужны отдельные массивы на каждый разряд. Во-вторых, разряды должны быть в системах счисления с основаниями степеней двойки. Для них достаточны сдвиги и маски, а так у тебя две очень тяжёлые операции: % 10 и степень.
Сейчас ты каждый раз смотришь на первый элемент, а потом его удаляешь. Вместо этого логичнее смотреть на элемент по индексу ii а потом стирать все целиком.
Алсо, я понял, что от тебя хочет Яндекс, и ты занимаешься хернёй. Просто читаешь числа как строки, переворачивает их, сортируешь, переворачиваешь обратно и выводишь. Все функции стандартные.
Ты бы ещё сравнил js и жабу.
Если в 10-й не получится, - попробую в 2-й системе считать, хотя разве это значительно увеличит быстродействие? Может спизжу алгоритм counting sort для тела цикла, так и получу лучшее время.
>>1954374
1 реализую.
По второму скажу, что яндекс - это просто платформа. В задании именно radix sort просят, да и вероятно, задания и тесты писал вузовский препод.
>попробую в 2-й системе считать, хотя разве это значительно увеличит быстродействие?
Есди в двоичной, то ты будешь по одному биту сортировать за раз. Да, это долго. Лучше побайтово идти, тогда тебе нужно всего 256 счётчиков. Сначала сортируешь по первому байту числа, потом по второму и тд.
он не манагер, он обычный работяга там
>. В задании именно radix sort просят,
Ну так-то при сортировке строк у тебя именно он и работает, только искаропки, но преподу вероятно нужно ваша реализация.
А так в мой вариант делается за пару минут.
Да, а что?
Да, using namespace std; пишут либо студенты в laba1.cpp, либо дебилы.
В любом нормальном code style guide любой нормальной компании запрещено использование "using namespace *;" директивы.
С подключением, дебилушка.
ну вообще то страуструп для того и ввел в язык механизм исключений чтобы обрабатывать ошибки в конструкторах, у него не было другого выбора, это он в "дизайне и эволюции" написал
а так если не хочешь использовать исключения, то нужно пользоваться приемом двухэтапного конструирования объекта, делая is_success() и прочее
что то получше - использовать один из порождающих паттернов или несколько, по ситуации
недостаток первого подхода - очевидное уродство, недостаток второго подхода - необходимось работать через указатель
все это в соответствующих книжках было написано четверть века назад
хмм, а если я буду кидать исключения только из конструкторов, а все отсальные методы будут использовать условный std::optional для обработки ошибок, то я не особо сильно обосрусь по перформансу? Такое вообще принято делать или это быдло-кодинг и анти-паттерн?
не знаю, если ты задаешь такие вопросы, то для байтоебского проекта лучше делай в стиле как обрабатывает ошибки хром-браузер, в котором вообще не используют исключений, погугли
это будет тебе проще понять и надежней
И в начале вызывающий приватный конструктор, который ничего не делает? Теперь понятно, зачем это придумали.
а шо еще делать без эксепшенов та
Так, а откуда у тебя ошибки в конструкторах? Пиши так, чтобы ошибок в них не было. Память не выделяй динамически, а то потом будешь ныть.
А потом он запускает свою софтину в ОС, которая не убирает за тобой ресурсы.
Ну или, опять же, в деструкторе может быть всё что угодно, шаред-мемори, семафоры в ней же, и т.д., которые освобождены не будут даже в мейнстримном юниксе.
Вот у тебя есть апи, куда входит конструктор и документованные значения параметров. Если кто-то неправильно использует апи, получает в рожу ассерт. Все честно и эффективно.
Теперь пойду во второй вариант
Хоть бы подумал пару дней, а ты буквально на следующий рабочий уже зааксептил
>Алсо в данную секунду забираю твой второй вариант, чтобы у тебя геймдев остался.
Проиграл.
пажалуста нинада
1C++
>Сейчас ты каждый раз смотришь на первый элемент, а потом его удаляешь. Вместо этого логичнее смотреть на элемент по индексу ii а потом стирать все целиком.
Реализовал это. Самый жирный тест вместо 1090 мс занял 134 мс, доходил до 2 мб при лимите в 64, но такая проблема и не стояла.
Спасибо за помощь тебе и остальным.
Да всё логично, всё строго в соответствии со Словом Божием. Но почему так нахуй?
Нормально
%f прочитает 4 байта, а int у тебя может оказаться 2х байтовым. Если варарги расположены в памяти, то ты выйдешь за границы и прочитаешь часть стека. Поэтому кончай с laba1.c и используй fmtlib, тут плюсы всё-таки.
Да там и без этого strict aliasing rules нарушены.
трипл хуйни не скажет
я работал вашим вот байтоебом (на си и чуть с++)
психанул от низкой зп и перешел к другану в питон бэкэнд и вот это все
прошло два года и я решил сменить профессию
скажите, насколько high performance вообще в россии востребован? А то еще с уника интересуюсь этой историей, но судьба пока не закинула в область
Сейчас есть и время и подушка, чтобы нормально вкатиться
кресты все это время держал в тонусе - иногда даже контрибьютил во всякое дерьмо
короче нужно ли в ДС, что по зп или стоит съебывать в другую страну?
>high performance
Всмысле HPC вещи типа MPI? В Нижнем Интел вроде как подобными вещами занимается. А так больше нигде не встречал (хотя я и не искал).
ну из ДС в нижний не очень хочется)
у нас, зуб ставлю, н видиа чем-то таким занимается
но если это делают только они, то хуево - нахуй надо замыкаться на одном работодателе
>>1955412
Смотря какой HPC. Обычно это связано всегдо со всяким численным моелированием, то есть нужно знать предметную область и вообще иметь академический бэкграунд нормальный.
Обычно такими вещами занимаются всякие додики после физфаков, аспирантур и прочего.
Просто сферических задач уровня распараллель нам тут хуйню не бывает.
>прошло два года и я решил сменить профессию
Расскажи, нахуя? Разве неспеша пердолить Джангу - это не рай на земле?
А по поводу C++, за те пару лет, что тебя не было, требования ощутимо выросли. Я вот собеседуюсь сейчас, и охуеваю с того, что спрашивают в банках; а что спрашивают в нвидиа - страшно представить.
Если ты до ухода в питон работал с "с++ чуть-чуть", а не дрючил его круглыми сутками, если по плюсам прочел не сильно больше Страуструпа + (всего) Мейерса, то ловить здесь откровенно нечего.
Я не наезжаю, я просто предупреждаю, что, возможно, ты переоцениваешь свой былой уровень. Особенно если байтоебом ты работал в НИИ/оборонке. Тогда совершенно точно переоцениваешь, и подумай хорошенько, прежде чем делать резкие движения.
имеешь ввиду, что не вар туда пробиться никак?
потому что у меня мага робототехники, а не матешечки
>>1955448
ну рай ней рай - бэкэнд это интересно (и я не на джанго), но без движения нет жизни
я поработал уже в двух областях - хочу еще до 30 парочку зацепить
а что там такого спрашивают? прям пиздец как жеска?
да и кст за бугром high performance самые высокооплачиваемые
прада совершенно не хочется жертвовать личной жизнью ради переката
если все прям настолько пиздец как жестко, что ты додик который 17 часов в день красноглазит байты - то в пизду
лучше перекачусь в мл
но подискутировать на тему попадания в НРС и правда интересно, вообще говоря
>я поработал уже в двух областях - хочу еще до 30 парочку зацепить
>да и кст за бугром high performance самые высокооплачиваемые
>то в пизду лучше перекачусь в мл
Какой-то манямирок пиздец. Конечно же ты не залетишь в любую наукоемкую область, причём довольно конкуретную, после работы говнокодера.
залетишь, не выебывайся
в мл вкатываются люди, посмотревшие два курса от стенфорда и имеющие СВОЙ ПЕТ ПРОЕКТ
а у меня опыт работы уже 5 лет и мне 26, так что уже на джуна я точно залечу
плюс стоит понимать и тему "наукоемкости": мл это по большей части трясуны, наука там только в очень жестких rnd центрах и в phd историях. Туда залетать можно только по фану, тк получают такие люди не сильно больше гребцов
а вот НРС уже реально сложно и челенжево, но у меня нет знакомых, чтобы спросить как вообще там все происходит и вот узнаю на любимом дваче)
Даже недавно семен из dlcourse написал в ОДС, что перекатился из геймдева
а геймдев, я тебе так скажу, даже не сравнится с обычным проганьем - там все про логику, чем про оптимальность и прочее (вот пример недавний с ГТА идет туда же)
Так что, пацанчики, не нужно уж совсем усложнять это все
Есть прям совсем замкнутые на дико-узких спецах области, но мл точно не такой пример
Да и работники дико замкнутых областей также дико замкнуты на эту область, что тоже не очень хорошо (но кому как)
Блять, чел, я не знаю, где ты там работал 5 лет, если у тебя такие представления о вещах.
Когда говорят про мл, говорят про технические компании, где программисты сидят с phd почти все.
Когда говорят про геймдев, говорят про разработчиков движков, разбирающихся, как в системной программировании, так и в математике, а не про говнокодеров, таскающие прямоугольники в конструкторах.
Я не знаю, куда ты там вкатываться собрался с пет проектами и курсерой блять, охуеть вообще.
> Когда говорят про мл, говорят про технические компании, где программисты сидят с phd почти все
ага, это у меня манямирок, да?
> Когда говорят про геймдев, говорят про разработчиков движков, разбирающихся, как в системной программировании, так и в математике, а не про говнокодеров, таскающие прямоугольники в конструкторах.
ну тут ты вообще упоролся конечно. Увы, но нет, говорят именно про говнокодеров
люди, занимающиеся разработкой движков - это как раз таки нормальные программисты
> Я не знаю, куда ты там вкатываться собрался с пет проектами и курсерой блять, охуеть вообще.
я и не собирался, мне хватает моего образования, чтобы понимать что там происходит, а не курсеровских "ну линейная регрессия это как если бы мы провели провели прямую" и прочее объяснение для даунов
в мл ничего
я к мл в целом-то хладнокровно отношусь
а вот плюсы нравятся - хочу к вам - токсичные говнюки)
>Туда залетать можно только по фану, тк получают такие люди не сильно больше гребцов
Орнул с быдлокодера
>манька не знает, что докторские никто не пишет, так как они нихуя не дают, а пишут только кандидатские диссертации
Продолжаю орать.
Чел, ты меня заебал. Я тебе говорю, что на с++ нету работы без предметной области.
Ты должен спрашивать вопросы, уровня как вкатиться в численное моделирование, как вкатиться в эдвэнсед статистику, etc, а не, как вкатиться в плюсы. Потому что на таких позициях плюсы идут просто в довесок, не смотря на то, что уже сами по себе являются довольно большим пластом знаний.
во, супер, спасибо что поправил
но я думал что НРС настолько пронизаны математикой, что не нужно отдельно говорить
но понял тебя
тогда задаю как раз эти вопросы
мне типа нужно в phd идти с такими запросами?
потому что бэк - это круто, да
но с++ + предметная матеша - это прям уровень
Колхозный совет: valgrind'ом чекни. Если в дебажной и релизной сборке отличаются результаты, 92% что ты где-то ты проебался с памятью, и используешь неициниализированную. В дебажных сборках она нулями активнее забивается, а в релизных - хуем по губам.
>>1955480
Чел, вот тебе совет, но можешь не слушать. Если тебе ~26 лет, ты за пару лет добился чего-то в питоне (допустим), и сидишь, довольный, ощущая себя дохуя способным познать что угодно, стоит лишь кинуть на это взгляд и иметь хоть какое-то желание, плюс немного времени -- это иллюзия.
Если ты чувствуешь, что ты способный парень, и, в принципе, нвидия может и подумала бы, а вот какой-нибудь яндексо-сбер тебя 100% сразу же захочет себе в штат, стоит тебе только открыть рот -- у тебя не иллюзия, у тебя бред.
Прежде чем принимать какие-то решения, типа, увольняться и дропать питон, можешь сходить на один собес по плюсам, чтобы реальность больно ударила тебя по ебалу, и ты отправился обратно чиллить на свое теплое местечко.
Но можешь не слушать, просто имхо.
чел
я совершенно не питаю себя иллюзиями, что меня хотят яндексы сберы и нвидии. Понятное дело, что уровень конкуренции там это пиздец полный. А уж опыт на питоне там явно ничего не дает, может даже и хуже делает, хуй его
я тебе говорю: я реально готов ебашить ради вката - вопрос не в этом
вопрос вообще стоит ли игра свеч
переходить на с++ чтобы пилить легаси - сомнительное удовольсвтие
реально меняться и уволиться хочется именно ради чего-то стоящего, пусть даже с падением зп и статуса (мидл -> джун)
но
короче тема такая, я ТОЖЕ поработал байтойбом пару лет в унике на чистом си, потом ушел именно вот этой макакой в геймдев
теперь хочу перекатиться в с++ (и кст не пиздите, что у вас зп мелкие, там есть и сопоставимые и выше, чем в вебе и нейронках)
но джуновских вакансий вообще (в дс) пиздец мало
из 1600 с++ных около 60 (!!!!) джуновских
хули делать? где искать работу? я не хочу в веб
да, тут много пишут, что кресты это предментая область
я понимаю, но в ЛЮБУЮ предметную область надо зайти
ты не родишься с 3 годами опыта в численном моделировании
помогите плезз
не в том смысле, что помогите найти работу) а в том, что подскажите, где искать
я про хх сейчас
на хабр карьере еще хуже
линкед ин?
>как отдебажить релизную версию?
Т.е. версия одна, просто во время запуска и дебага программы разные результаты, во время запуска не получается то что получается во время дебага.
Я думаю, если ты реально два года работал на чистом си, то после пары-тройки книг, просмотра cppcon по вечерам и пары проектов для себя сможешь сразу на миддл-левел идти.
ну выше вот ребята чуть ли не попиздились на этот счет
мол матеша сила - чистый спп могила
и пробиться нереально
в целом, учитывая, что спп реально сложный и уже довольно спецефичен, я верю им
но буду делать как ты посоветовал, спасибо) а то не хочу в макак веб идти - хочу с мужиками с конской косичкой байти пилить и 300к/сек получать
> и кст не пиздите, что у вас зп мелкие, там есть и сопоставимые и
выше, чем в вебе и нейронках
+
реально пиздят
может у джунов и есть какой-никакой разрыв, но по пути к сеньеру это максимум 10ка, что не очень-то и существенно на фоне премий и тд
они, видимо, насмотрелись на 400+ к у джунов джавы, но, ребятки, уж лучше получать меньше, но нахуй джаву
Ну, ты наверное не хуи пинал на сях, а делал что-то конкретное. Видео, драйвера, железки, сокеты, параллелизм, может даже численные методы на всяких бласах и лапаках - что угодно. Я исходил из того, что ты реально что-то где-то знаешь и сможешь сам развиться и найти как применение своему экспириенсу в проектах, так и самому язык освоить.
железки о основном
can, uart, spi, работа с памятью и прочие всякие аппаратные средства реализация всяких спецификаций
Ну вот. Какой-нибудь условный сименс может взять, например. Или всё, что работает с электроникой. Я пару лет назад в Касперском собеседовался, например, и у них тоже была похожая тематика открыта. Что-то с защитой машин. Я не пошёл, потому что не моя эта тема. Но собес приятный был: лишь пара задачек по языку в начале минут на 10, а потом болтали про опыт и всякое, что на ум приходило (что-то про линковщики, TCP, кеши, философские вещи типа нужны ли исключения и другое).
Но тут другой анон недавно писал, что его собес в касперском не то чтобы хорошее впечатление оставил, так что это похоже сильно от команды зависит.
да так везде же
недавно читал, что даже в сбере есть топовые по составу команды
вроде как sberAgile
>собес в касперском не то чтобы хорошее впечатление оставил
Да не, все норм, там проблема во мне все-таки была, это я на эмоциях написал.
Вот сегодня был собес в один большой банк, и меня опять чутка триггернуло.
1. ~Два часа дрючили по C++98. И каждый раз когда я говорил что здесь UB (допустим, где-то идет работа с массивом после того как он был удален), до меня докапывались, и спрашивали "не ну а что на практике-то произойдет, как оно выразится?".
Ну вот откуда мне знать и какая нахуй разница, а?
2. Или, допустим, код, в котором throw by value + catch by value (в базовый класс, т.е. со слайсингом) + rethrow потом. Я говорю, типа, ловить надо по референсу, чтобы не было лишнего копирования и трабл с полиморфизмом (=слайсинга). Мне говорят, не, так не годится, рассказывай нюансы. Rethrow будет копии или оригинала? М?
Я считаю, что программисты для того и учат лучшие практики, чтобы забыть про худшие и чем они чреваты. Тем самым освободив место в бошке под новую информацию.
Узнали? Согласны?
Нет, другой. Не скажу. Красный логотип, на "А" начинается.
В Сберыч я тоже собеседовался несколько лет назад, и прошел.
Я тогда совсем зеленый был, вопросы тоже по C++98, но не совсем плохие - типа, напиши хэштаблицу на коленке, потом трахни пару байт, и еще парочку. Или, вот есть такие-то данные, придумай как их сжать. Но не совсем без кринжа, допустим, 40% собеса дрючили по ромбовидному наследованию зачем-то.
Если в Сбер хочешь, то иди в Sberdevices, там начальству ~38-45 лет, а не 45-60, так что все адекватно. Проверял.
Катись в другое место. У нас и без тебя тут не протолкнуться.
Мимо работавший в hpc, cv/ml, и некоем подобии gaydev.
в плюсах нет опыта
>но с++ + предметная матеша - это прям уровень
Это не уровень, это сегодняшние реалии к которым с++ прикатился за последние 10 лет.
Собес на более-мене приличную должность состоит из 10% вопросов по плюсам и 90% предметная область (часто матан всякий). Вот типа у нас тут хуё-маё и зрение с облаками точек. Как вы их будете классифицировать и трекать. А у нас тут HPC под FEM. Как вы будете дрочить BREP модель из NRBS так, чтобы железо вывозило.
Плюсовый джун это самое дно. Нищий, загнанный и бесправный он вынужден постоянно бороться с полчищами орков, которые плодятся в НИИ по всей стране.
>ты не родишься с 3 годами опыта в численном моделировании
Заканчиваешь какой-нибудь универ или МФТИ и спокойно вкатываешься как к себе домой в Интел (Нижний Новгород это пиздец конечно, но стерпится-слюбится).
ну блять не все заканчивают мфти знаешь ли
я вот из мгту им дауна и у нас с матешей не так жестко как у них
теперь на помойку что ли пиздовать?
тем более, что они все в мл пиздуют
Если проект небольшой, то можешь в студийный проект его ручками оформить. И там уже будешь дебажить релиз. Заодно профайлер там есть.
я конечно мимо, но не согласен
аналогия хуевая
не пишут закрыто
бывает, что ты стучишься а тебе говорят иди нахуй
а бывает, что даже зыкрытые двери открываются
и то и то примерно с одной частотой происходит
Ну дак от опыта зависит, ты попробуй, расскажешь нам.
>>1955703
Ну вот кстати да, через НИИ можно вкатиться в плюсы, если совсем все плохо.
Попинаешь хуи там годик, но, во-первых, скорее всего неплохо проведешь время, почитаешь книги, познакомишься с Qt (НИИ обожают Qt). А там уже и перекатишься.
Если после годика в НИИ у тебя все по-прежнему плохо, то перекатишься сперва на галеру. Если на галеру пиздец не хочется, то дрочишь алгоритмы месяцев шесть и из НИИ сразу в Яндекс.
Или не страдай хуйней и учи Go/Python/Java.
>can, uart, spi
Это всё и сейчас на C пишется. Окукливается в отдельный подуль и потом через интерфейсы стыкуется с бэкендом на C++.
Ну то есть опыт не совсем релевантный, даже если ты писал в стиле "C с классами".
почему хуйней сразу?
я вот пилил у себя в гейдев стартапе обработку облаков точек
мне зашло
но я писал на питоне тк сроки, а я кресты не знал, увы
но область мне зашла, а в ней без крестов - соси бибу
теперь хочу переписать проект на кресты, кинуть в гит и хуярить на работу
плюс опять же: го, питон, это все очень круто и хорошо
но плюсы это вещь, которой через лет 10-15 вообще никто не будет знать из вкатунов - все будут мл ящики трясти
и в таком контексте нужны будут норм плюсовики
и даже вот сейчас: крупные конторы юзают плюсы - факт. работать в рогах и копытах лично мне остопиздило
>>1955719
да знаю вот, поэтому и парюсь
так бы с ноги уже двери открывал (потом извинялся бы и аккуратненько прикрывал тк опыта все равно не оч многа)
>Просто не понимаю нахуя так делать
Я написал это в таком формате ради шутки. Извини, если для тебя это не оказалось очевидным. Извини, что как-то зацепило твое внимание. У тебя синдром Аспергера, братишка? Поправляйся.
Бест пркактикс это когда новый свежий проэкт.
В банках тонны кода десятилетиями пишутся и они вполне адекватные вопросы тебе задавали. Сам имел дело со сберовским проектом. Там кодовая база с начала 2000-х тянулась со всякими delete this в деструкторах.
>но плюсы это вещь, которой через лет 10-15 вообще никто не будет знать из вкатунов - все будут мл ящики трясти
и в таком контексте нужны будут норм плюсовики
Страус скоро отъедет, потом случится раскол среди последователей и на свет появится новый язык для людей. А то что новое - оно для молодых, их проще и дешевле обучить. Остальных дружно сбросят за борт к акулам. Да-да, тех кто бился как ЛевЪ за 700к в нвидии.
https://www.glassdoor.com/Interview/NVIDIA-Russia-Interview-Questions-EI_IE7633.0,6_IL.7,13_IN205.htm вот наше. Оно не сильно сложное, там половина вопросов - которые я задаю.
>Бест пркактикс это когда новый свежий проэкт.
Ну, не согласен. Практика "ловить эксепшны по референсу" не имеет абсолютно никакого отношения к возрасту кода, это всем известно еще с начала девяностых. И, встретив такую хуйню как ловля по value, абсолютно ничего не стоит это просто исправить. Я пытаюсь представить себе код, который я мог бы поломать такой правкой, и у меня не получается.
Вопрос "что будет при работе с уже удаленным массивом" - тоже адекватный? Как бы ты ответил? Только честно.
Спойлер: если ты собирался ответить что-то про возможный сегфолт, падение, то ты ответил неправильно. Лично я считаю, что надо детектить и убирать говно, а не сидеть и разбираться в его сортах.
Если не секрет, чем в Сбере занимался? Эквайринг? Процессинг? Что-то внутреннее?
знаешь, я искренне верю, что выучить язык - это не проблема
с крестами все так, потому что он реально очень сложен, на фоне всех го джавы и си шарпа. И то , проблема в том, что он дико старый и нахуеверчено пиздец сколько всего
вот пример: я работал на си, относительно долго - два года
об ооп вообще только слышал
но на си шарп пересел довольно быстро
к чему я это? ну случится великий раскол, ну появится новый язык
и что? не выучится что ли этот новый язык?
Я не в самом сбере работал. Я аутсорсил их проект (считай легаси копал). У них выросла нагрузка на систему и надо было разгрести говно и понять как повысить поризводительность и функционала туда допихать.
Ну а рефакторить код под бест практис это путь в никуда. Для заказчика никакой business value это не несёт, а напрудить туда новых багов легко (тестами не обложено, внятной документации на систему нет).
>Вопрос "что будет при работе с уже удаленным массивом" - тоже адекватный? Как бы ты ответил? Только честно.
По сути это обычная порча памяти, когда ты по левому адресу что-то пишешь и читаешь. Exception при этом не возникает. Само удаление вряд ли приведёт к изменению данных, разве что старый указатель после delete будет/может указывать в специальное место (тратить процессорное время на забивание нулями/спец значениями ненужных данных - зачем?). Если далее по тексту никто не выделяет память, то можно смело работать с массивом за вычетом увеличения его размера.
Красавчик, да.
От меня такого ответа и ожидали, что с удаленным массивом можно дальше работать.
Но я, пожалуй, не буду. Считайте что зассал.
> откуда мне знат
То-то и выдно, що ты как попугай затвердил стандарт, а опыта маловато!
С неопределенным поведением ты будешь сталкиваться всю свою недолгую и мучительную карьеру (некоторые его используют). Так-то.
> Само удаление вряд ли приведёт к изменению данных
Эх, молодежь.
> разве что старый указатель после delete будет/может указывать в специальное место
Расскажи подробнее, к чему приведет обращение после указывания "в специальное место".
> (тратить процессорное время на забивание нулями/спец значениями ненужных данных - зачем?).
Free list там пропустят, а ты не балуй!
>некоторые его используют
Согласен. Ну я бы не стал писать использовать UB, если бы делал бэкендный банковский софт.
Мой ответ был:
-возможное падение, либо гарантированное, если программа собрана с нужными флагами. [хз зачем про флаги высрал, просто вспомнилось санитайз че-то там]
-думай еще
-а почему это важно знать?
-чтобы задетектить проблему, когда увидишь симптомы
-дак valgrind'ом можно задетектить
-вы вообще работали с valgrind'ом? он очень медленный; наша софтина, наверное, даже не запустится.
-[пук] но ведь... [среньк] наверное можно как-то модульно проверить.... [пук] ладно... давайте следующий вопрос...
С дивана оно всегда виднее.
У меня как-то вот такую залупу спрашивали и я не ответил:
int p[] = {0,1,2};
3[p - 1] = 10;
Что будет в массиве?
>Расскажи подробнее, к чему приведет обращение после указывания "в специальное место".
эксепшен вылетит?
>а вот какой-нибудь яндексо-сбер тебя 100% сразу же захочет себе в штат, стоит тебе только открыть рот -- у тебя не иллюзия, у тебя бред.
Почему тогда я легко устраиваюсь везде
>Free list там пропустят, а ты не балуй!
Какой лист, там про массив речь, данные хранятся в памяти последовательно. Дедуль, таблетки прими, да утку опорожни, а то через край сейчас потечёт.
>Почему тогда я легко устраиваюсь везде
Ну дак ты просто умный дохуя. Сиди, гордись, наслаждайся собой. Мы вот тоже восхищаемся всем тредом, какой же ты восхитительный. Умничка просто. Расскажи, как ты таким стал? В чем секрет твоего успеха? Без иронии, серьезный вопрос.
Программирую и читаю на работе и дома круглые сутки, больше нихуя не делаю интересного.
Какой эксепшн, откуда?
>Расскажи подробнее, к чему приведет обращение после указывания "в специальное место".
Это зависит от имплементации аллокатора памяти. У меня есть опыт в эксплуатации уязвимостей кучи ptmalloc3 (дефолтный аллокатор в glibc), поэтому буду говорить за него.
Если аллокация была большой (больше ~130 килобайт чанк), то new за кулисами использует системный вызов mmap для аллокации динамической памяти. После delete данная память анмаппится и дальнейшее обращение к ней повлечёт за собой сегфолт. Если аллокация была маленькой, то за кулисами вызывается системный вызов brk для увеличения дата секции (если включена рандомизация адресного пространства и сам бинарь является позиционно-независимым, то куча отделена от дата секции и увеличивается отдельно от нее в результате данного системного вызова. Если же рандомизация адресного пространства отключена, то куча - это просто продолжение дата секции с правами на запись и чтение).
Так вот, если удалить маленькую аллокацию и обратиться по указателю, по которому чанк освободили, то будет обращение в прежний валидный адрес в куче, что является багом под названием Use after free, который эксплуатабелен в большом количестве случаев в крупных и сложных программах (браузеры имеют тонны UAFов и по сей день, например). так как создает эффект overlapping chunk.
А вообще, это не то, что должны спрашивать на собесе на дефолтную цпп-макаку. Бьюсь об заклад, сам интервьюер не до конца понимал то, о чем он спрашивал, так как ответ на этот вопрос ОЧЕНЬ СИЛЬНО зависит от имплементации аллокатора памяти, коих у тебя может быть несколько, даже в пределах одной и той же ОС - например, имплементация аллокатора в glibc (аналог ntdll.dll в шинде) в Линуксе - ptmalloc3. Но браузер мозилла использует jemalloc в качестве аллокатора памяти, где многие вещи работают по-другому. У хрома так вообще есть свой кастомный гугловский аллокатор с блэк джеком и шлюхами.
мимо другой анон, безопасник и игрец в CTFы
>читаю на работе и дома круглые сутки
А можешь накидать нам какой-то ридлист?
Просто то что в шапке - объективно устарело, и, судя по тому что тот чел который его составлял, пропал -- явно нежизнеспособно. Т.к. наверняка он вскрылся, или в тюрьме, или еще чего. Не стоит ему верить, в общем.
А вот этот ридлист слишком однобокий:
https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
Нету какой-то кругозоритости в этом списке, плюс он сам себя перекрывает.
>цпп-макаку
Если то не касперский, то должно быть достаточно с точки зрения стандарта — UB / не UB.
Дефолтная проверка на понимание арифметики указателей. Данная операция является коммутативной, засим это аналогично этому: ⚹(p - 1 + 3) = 10;
Ебать ты задрот, чел. Ты просто ебнутый. В хорошем смысле.
Кстати, можешь немного раскидать про конторы в РФ, которые безопасностью занимаются? Может, есть какие-то компании, о которых у тебя сложилось стойкое впечатление.
В частности интересует Infowatch.
Ну, кстати, я и так знал всё, что он написал, хотя сильно много с аллокаторами я не работал, просто много читал, плюс пару своих интересны костылил.
быстрофикс
Достаточно, чтобы была включена рандомизация адресного пространства для того, чтобы куча была отделена от дата секции, при этом бинарю необязательно быть позиционно-независимым.
Но так это работает в Линуксе (и скорее всего во всех остальных POSIX-compliant никсах), за винду не скажу, так как не пользуюсь ею и не работают в ней.
А если мы перейдём от С к С++, то как насчёт вот такого?
std::array<int, 3> p = { 1, 2, 3 };
3[p - 1] = 10;
А это уже невалидно
А я представил как от него пахнет. Хорошо, что я более высокими материями занимаюсь и красноглазики наши сидят two blocks down.
Треды будут просыпаться в нужном количестве, как только появится работа и спать, пока ее нет
Хотелось бы красивое и быстрое решение, раньше я очень любил boost::asio, удобно добавлялись треды, быстро все работало
Есть ли сейчас решение лучше? Буст практически не использую, и тянуть его проблематично под винду
Гугл предложил эту статью с корутинами. Я плохо понимаю что это из себя представляет, и как тред пул будет работать эффективнее с ними
https://habr.com/ru/post/519464/
Что лучше? Или лучше вообще самопальный сделать с конд_вейтами
ЛОЛ
та я заебываюсь его писать, потом несколько дней дебажить
неужели ничего из коробки до сих пор нет?
Да должно быть несложно, я несколько раз накидывал с нуля
да хорош уже
парень красава, да
но имхо - такие вещи должен знать каждый программист
это тоже самое как: "как распознавать на изображении предметы с хуевыми фичами и что такое хуевые фичи" или любой другой вопрос, который должен знать человек с лет 5 опыта
Что такое НРС?
Cпасибо. Не зря я значит по Маркову книги качал.
Я могу в проект залинковать две либы из vcpkg: hui-lib:x64 и ebalo-fw:x64-static?
Я еще когда буст компилил, узнал что на винде, помимо дебаг-релиз, статик-шаред есть еще сингл-мультитред и статик-шард рантайм. Но так и не понял нахуя, а самое главное зачем
А ты видел вакансии с менее 5 годами опыта? То-то же.
Фаулер со своей архитектурой копро устарел или нет? У него там релейшнал модель для БД и он пишет что объектная это будущее.
пиздец, почему меня никуда не берут?
На работе переписываю в одно рыло легаси софт десятилетней давности с бейсика на шарп
Прихожу домой, ебу байтики на С++ в своем пет проекте и коммичу в гитхабо-опенсурс...
(каждый день занимаюсь коддингом больше 10 часов... Странно что не перегорел, хотя в таком темпе уже больше года, но мне нравится... При этом на фоне включаю лекции по программированию и в свободное время читаю программерские бложики/статейки/книжки)
И....
Нахуй никому не нужен, и выживаю на 600$ в месяц
p.s. был тут разговор про эту тему - что текущая рекрутинговая система программистов, говно полное.
Если у тебя не знакомых и ты не альфа чед - то вероятность устроится куда-то кроме галер или госконтор равна шансу заработать миллион в пирамиде.
Потому что эти долбоящеры берут в основном по рекомендациям... Ах да, вспомнил как это красиво они сейчас называют "мы лучше откажемся от профи, чем возьмем неспособного" (и эти же ребятки потом ноют что программистов нет)
То есть весь шанс тут в том, что тебя увидит HR-шлюха, скучающе кликающая вконтактики, что ей будет не похуй на тебя и что она уже не пристроила своих знакомых и друзей этих знакомых.
Я открыл резюме в конце января, к текущему моменту пришло штук 30 писем, по двум из них ответил, пособеседовался и получил два оффера. Остальное проигнорил (нереально на всё успеть, да и многие позиции были скучными, плюс текущая работы отнимала время).
И у меня всего три года опыта. Так что не совсем понимаю, в чём твоя проблема. Или ты просто не в мск?
>То есть весь шанс тут в том, что тебя увидит HR-шлюха, скучающе кликающая вконтактики, что ей будет не похуй на тебя и что она уже не пристроила своих знакомых и друзей этих знакомых.
А как ей ещё зарабатывать то, если мохнатка быстро в тираж уходит. Хороший HR сначала заводит знакомства с годными спецами, а потом их по кругу продаёт из конторы в контору. Всем заебись от этого (ну кроме тебя).
>Или ты просто не в мск?
не в мск
>>1955931
>Только за сегодня прищло 12 писем
Это ничего не значит. Их рассылают ботами. Ты попробуй хоть по одному из них пройти до собеседования с техлидом... Нихуя не выйдет, и дело не в навыках, отфутболят еще на уровне общения с аутсорсной шлюхой hr (там их тоже специально набирают ебанутыми - до сих пор угораю как одна такая расписывала на хабре что она набирает резюме только тех, чьи фотки в фейсбуке ей понравились)
Открываешь лекцию на втором монике, кодишь свои задачи, пока идет лекция. По-началу сложно , потом привыкается. Лекцию слышишь во время пауз (ну там запуски тестов, компиляции, кодомакакинг, рефакторинг - то где мозг не надо напрягать... А когда надо напрягать, ставишь на паузу)
>>1955955
жопосранск, да
>>1955960
>Походу просто из манямирка
Какой же это манямирок, когда зарабатываешь меньше 600$ вот уже какой год?
А вот то что в хорошие компании берут в основном по знакомству - уже давно факт, поищите голосования - больше половины программистов именно так и устраиваются - друг привел.
Вторая половина - чеды, которым просто по природе все достается.
То что там вам спамят на почту.. Мне тоже спамят на почту все включая яндекс, только это тупо спам и ничего большего. Даже до собеса не доводится, ибо никому не известный хуй не нужен.
Не, я понимаю если бы говорили "мы вам перезвоним" после собеса, или после тестового задания, или даже после чтения резюме. НЕТ блядь, Мне так говорят еще до всего этого, еще даже не читая мое резюме.
Вот я как раз сейчас кодил задачу, закрыл свой таск, и все это под этот роллик
https://www.youtube.com/watch?v=vVA46EvbL4E&t=18s
Охуенчик
Лекция годная но по поводу чедов смешно было.
Ты пытаешься подключить 32 битную библиотеку к 64 битному приложению.
бамп..
потому что ты работаешь на си-шарп а ищещь работу на с++? естественно так будет тяжелей сменить работу
Ну а хули ты хотел в жопосранске
По опыту скажу, что берут джунов часто берут не профильно, а именно С/C++, чтобы в зависимости от проектов их можно было куда нужно слить. Далее, джунов никогда не берут в маленькие компании, где их не смогут вытащить на нужный уровень/перекрывать в случае косяков. Т.е. 50+ человек в компании, ориентированных на C/C++, а такое в мухосранске невозможно организовать. Причем легко найти сотни компаний вебщиков с 20 людьми, которые ищут джунов, просто потому что им так дешевле будет.
Да, такой минус С/C++ галерок, рабоать можно только в крупных городах. Об этом почему-то мало рассказывают с самого начала.
>меньше 600$
это неплохие деньги для мухосранска, если у тебя есть собственное жилье (подогнали родители, осталось от бабки, etc)
у фаулера "немодный" для сегодняшнего с++ подход - иерархии классов основанные на наследовании, динамический полиморфизм..
а сегодня сообщество с++ развлекается шаблончиками и статическим полиморфизмом..
>залинковать две либы из vcpkg: hui-lib:x64 и ebalo-fw:x64-static?
в большом копро проэкте скорей всего так и будет
но, конечно, это оче нежелательно
когда еще работал на работе, на сопровождении, то часть трудноуловимых ошибок была как раз связана с тем что библиотеки в составе приложения линковали разные версии либ и всякое такое, а переделать это уже было нельзя
>"как распознавать на изображении предметы с хуевыми фичами и что такое хуевые фичи" или любой другой вопрос, который должен знать человек с лет 5 опыта
знакомые чилики, работающие в говношарашке, делающие потобные задачи, просто использовали opencv, кек
считались экспертами
че было в потрохах opencv считали магией написанной более высокоразвитыми существами,
он не задрот
он те просто говна в уши налил,
примерно как гопник на улице на страх берет чисто разговорами, так и этот челик
а че это вы, пацаны, не говорите ему "ко ко ко зачем тебе в кресты ты што ДуРаК????"
постоянно же кукарекаете такое
Так чё ему говорить, он уже итак ощутил днище-кресты на себе и работает за днищеденьги.
имхо, так у всех не в дс
я смотрел у себя в городе - там пиздец
лучшее, что я смог найти - это си шарп 90к
с++ нет и в помине
все пхп и с#
максимальную вилку указал
сейчас мб что и изменилось, но хз
>отфутболят еще на уровне общения с аутсорсной шлюхой hr
У меня ни разу такого не было, всегда дальше проходил
он шарпистом работает, ебобо
Необходимо заобкастить, допустим, заклинание Fireball, желательно не создавая новых объектов, т.e. преобразовать тот же объект класса. Но если так нельзя, я не обижусь. Расскажите пожалуйста нубасу, как делать.
могу одну продсказку дать - хранить общие параметры для фаербола в каждом инстансе - плохая идея, flyweight паттерн попробуй
не понимаю, зачем тебе наследоваться, когда новый класс ничего нового не предполагает
блядь
stih -> element
arrow - это блядь стрела в луке, из говна и палок, когда стихия - это называется bolt
wEAkness
остальное я скину на оригинальность, может ты делаешь средневековый постал
Я уберунтер вкатывальщик 0 часов с++, почитаю литературу. Понял ток что память помогает экономить, пасиб за литературу
Да какую литературу, людям которые игры пишут нет времени книги читать.
Например, в майнкрафте, ты думаешь, каждый блок в игре хранит внутри себя свою текстуру, эффект замеделения, свечение, время добычи, тип устойчивости итп? Нет, он просто хранит указатель на общий тип такого блока, в котором указаны эти параметры.
https://www.youtube.com/watch?v=GACpZp8oquU
Этого чувака вспомнил, он годно делает, посмотри, если ноль часов
мне через два месяца (желательно) нужно залететь на работу, очень хочу плюсы
вопроса два:
1) Я недавно делал MVP для одной компашки по облакам точек (кстати поразительно как часто я вижу их упоминание, думал это специфичная тема) на питухоне. Когда допилил, то резко узнал, что проект не одобрили тк чувакам резко стало похуй на это вот зрение, но исходники остались. Я собираюсь переписать эту хуйню на кресты и выложить на гит, раз уж всем так похуй. Это будет норм плюсик или тут каждый первый вкатун в кресты сидит с пиздатым пет проектом на гите?
2) Кресты я помню чуть по унику + недавно прошел довольно клевые (на мой взгляд) курсы на степике. Но вот то, что вы обсуждаете тут я прям вообще не слышал ни разу. Конечно знание си помогает, когда речь идет о работе с памятью и тд, однако часто хуй пойми о чем речь в треде. Понятно, что многое из того, что я видел (А ля эта хуйня, что CFTшник затирал) набито шишками и хорошим таким опытом. Но все же вопрос задам: что вообще из таких специфичных плюсовых вещей должен знать джун? а мидл? про сеньера лучше нахуй промолчу тк еще лет 5 на него работать
3) Реально ли джуном залететь на зп 100к? Сейчас это моя зпха и терять в ней я не хочу, тк ДС итак довольно дорогой.
Вот вроде и все, скажу всем спасибо, если поможете. Пока есть силы и время (уник ток этим летом закончил), хочу влелеть в плюсы, тк нравится и интереснее чем веб и тот же мл. Образование норм, по крайней мере свой вуз частенько вижу вакансиях "приемущество отдаем пидорасам отсюда-то"
я распизделся да, сорян, просто время смены работы довольно нервное - не от хорошей жизни из конторы своей бегу)
>arrow - это блядь стрела в луке, из говна и палок, когда стихия - это называется bolt
Кастанул на тебя Melf acid arrow, добил болтом из арбалета.
1. Норм плюсик. Даже если в гит никто не посмотрит — тебе просто будет что дополнительно рассказать на собесе.
2. Проедься по A Tour of C++ и Effective Modern C++ , можно по диагонали. В принципе можно проехаться за неделю по основным концептам.
3. Да, реально.
блин, даже не ожидал, что мне ответят
спасибо больше)
а третий пукнт это "да, реально, но ты охуеешь от поиска" или "да, реально, в целом в дс такие зп"?
Как повезет
В принципе не думаю, что охуеешь
Зависит уже от тебя. Например, если алгоритмы знаешь и дерево обойдешь, то можешь и в яндекс легко залететь хотя бы на сотку, даже без знаний языка
Если нет, то в любое другое место поменьше.
неужели в яндекс так легко залететь? дерево я и сейчас обойду
Вот этот дело говорит. Если именно прям по языку собесят, а не по алгоритмам и смекалке, то подливятся практически все. Причём обсираются собеседник и собеседующий по очереди.
Когда у тебя ничего нет на гите, по другому на тебя смотрят, мол еще хуй знает что ты можешь выдать и как сильно насрать в коде
По поводу залететь - нахуя тебе залетать джуном при трех годах коммерческого опыта на си, хрюшам вообще похер си там, или сиплюсплюс или си шарп, а зп они тебе назначают
По поводу того, что знать нужно - это че в голову бахнет лиду, то и будут спрашивать. Огромное количество вопросов вообще не имеет никакого смысла, могут быть дебильные вопросы, могут быть сложные, просто находи ответы там, где проебался и иди дальше собесайся.
Помню, меня спрашивали как можно отпустить владение поинтера от shared/unique. Я блядь представить себе не могу, насколько костыльным может быть код, чтобы там такую хуйню пришлось делать. А ребятки типо шарящие, как на говно смотрят.
> Помню, меня спрашивали как можно отпустить владение поинтера от shared/unique.
кек
> По поводу залететь - нахуя тебе залетать джуном при трех годах коммерческого опыта на си, хрюшам вообще похер си там, или сиплюсплюс или си шарп, а зп они тебе назначают
да у меня то и на шарпах есть полтора года (бля в шарпах очень крутой ооп, в си++ мне не так зашел конечно), просто не хочется прийти и типа такой "ой я бля мидл сейчас вас всех научу как нахой надо", по крайней мере за 2 месяца таким точно не станешь
а ждуном есть вар, думаю
ИМХО, пусть тебя хоть пидором гнойным считают по званию, главное, чтобы тебе твои три года коммерческого опыта оплатили.
ну в целом, я с тобой согласен
вообще я думаю, что твоей команде и тех спецам похуй, сколько тебе платят (в пределах разумного)
для адекватной компании 90 - 100 - 120 это довольно небольшая разница, так что если будут жопится (это я тебе >>1956541), уж лучше не иметь с ними дел, это, возможно, только начало маразма. В дс много неплохих контор, с хорошими процессами, наличием менторсва, которым важен сотрудник. Там и зп адекватные (часто вижу, что некотроые джуны в ДС на зп 120 сидят и ок, а чего такого?).
Алсо: я работал у ребят, которые спросили "какая вам зп норм?" Я сказал 40, тк был студентом и таких денег в жизни не видел, так еще и на стажера шел. Ударили по рукам, а в итоге в договоре было прописано 70, лол.
Это не янедекс и не сбер, не ИБМ. У чуваков штат 100 человек - но отношение к сотрудникам нормальное. После них лично я для себя и сделал выводы: если компашка норм - зп не жопят, если не норм, то зажопивание зп - только начало - лучше валить
Я скажу тебе честно, если бы я работал уже на питоне и нормально получал, я бы не полез в цпп. Можешь точно так же залететь в наукоемкое что-нибудь.
Ну ты сходи на собес и охуей кароче. Если бы у меня был выбор и я уже не заинвестил многеи годы - не стал бы точно.
бля я только более менее определился не идти в питон, братан)
имхо цпп дает больше возможностей
1) легче перескочить в другие языки, если надо. По крайней мере мне даже цпп уника хватило, чтобы врубиться в основы си шарп
2) больше возможносей: тут тебе и cv и hpc и хайлоад и числодробилки и железо. А питон что? Веб да мл (и то в мл нужно прям математиком быть, прям ебать, еще теперь на каждой второй вакансии ШАД требуют, мне 24, нахуй мне еще 2 года на шад тратить?)
А у меня вот было в резюме 230, так на 230 оффер и сделали, хотя у самих в объявлении вилка до 270 на эту позицию.
И я постеснялся торговаться. А теперь у всех моих коллег зп выше, а я не знаю, что делать, котовиться через полгода что-нить другое искать, или всё же как-то попросить о повышении...
так а причем здесь плюсы, дружище? тебе надо софт скилы качать, а не язык менять
Чел, ты какую-то хуиту несешь. В какие языки перескочить блять. Ты перескочить можешь хеллоу ворлды писать. А что-то серьезное точно так же нужно годами дрочить.
>больше возможносей: тут тебе и cv и hpc и хайлоад и числодробилки и железо.
Так тут точно так же нужно образование и шад. Что ты собрался в hpc или cv делать? Только ко всему этому еще плюсы дрочить. Ты похоже вообще не представляешь, что там сейчас происходит со стандартами, стлом и всем остальным.
Это всё разговоры какие-то школьные блять: РЯЯ ЖЕЛЕЗО ТРУ ПРАГРАМИРАВНИЕ ВЕШАЛКА ИЗ ВИТОЙ ПАРЫ РЯЯЯ
Это только в твоих фантазиях ты такой охуенный интеллектуал занимаешься там чем-то охуенным, а на деле твои hpc и числодробилки - это распильная хуита с мамкиными учеными, пишущие какой-то говнокод, железо - это какое-нибудь отечественное говно за зп вдвое меньше рынка, а на любой хорошей позиции в хорошей компании сидят жесткие задроты-инженеры с phd, которые посылают тебя сходу нахуй и никаких вкатышей не берут тем-более. Конкуренция охуевшая и залетают практически в любую область люди с сразу с универа.
Блять, да проскакивают, только это ситуации уровня
>топ технологическая компания хантит топового чела с публикациями на топовых конфах на 2x прайс сеньера
Я подозреваю, что в любой другой области с такими же усилиями любой чел будет каким-нибудь CTO и получать не меньше.
у вас блять биполярка у всех какая-то, ей богу блять
одни говорят что все ок
другие ноют
блять реально идите нахуй уже
я конечно мимо, но я тоже считаю что перескочить в другой язык - много не надо времени
и да, чтобы нормальные вещи писать тоже
вы вообще так сильно к языку привязываетесь - просто пиздец
ясен хуй хуй нет ни одного языка без предметной области
бэк, вэб - тебе важнее знать как бдшчки работают или http, а не как работает zip в питоне или ГоРуТиНы в го. Выучить последнее - много не надо
мл - тебе похуй на каком языке писать свои модели
графика, числодробилки - матан матан матан и знать как работает железо. По поводу стандартов крестов - бля ну я думаю, что проект пишется на одном. И если вы хуярите на ++17, то нахуя разбираться в 11? но это просто коммент
язык - инструмент
с++ - кривой и сложный, но тоже "инструмент"
не надо вот так себя вести, как будто вы бедные - несчастные убили лучшие годы чтобы изучить с++ и подцепили проклятие "ничегонимагувыучить". Раз не перекатываетесь - значит не хотите
А теперь к дрочке на шад. Это обычный, хороший вуз. Я бы к себе на работу брал бы не шадовца, а человека с опытом
вообще, когда у тебя 3+ лет опыта, то какая нахуй разница что ты там заканчивал
с таким же успехом можно говорить "не ну НРС только для выпускников 17 лицея"
я знаю очень умных ребят из МАИ, у них нет пхд, но они шарят, да. И работают в мэйлах и яндексах
а знаю тупых мфтишников - и они сидят в лабах хуйней страдают
хватит уже ярлыки вешать, уважайте себя, а то после таких все прогеров маньками считают
А еще и искренне не понимаю, что вы так к пхд прицепились. Пхд - это способность 4года разбиратья в узкой проблеме - не более того
чаще всего ты делаешь исследование твоего научрука, а не свое
>маньки перекатываются из говнокодинга в цпп
>спрашивают, чё там как в цпп
>говоришь, что сложно и хуево
>РЯЯЯЯ А ВОТ Я ТАК НЕ ДУМАЮ Я ВОТ ПИСАЛ НА ПИТОНЕ И Я ЭКСПЕРТ ВО ВСЁМ ВРЯД ЛИ ЦПП СЛОЖНЕЕ НАУКА-ХУЮКА Я ТУТ СОРТИРОВКУ НАПИСАЛ НЕДАВНО УМНЕЕ ЛЮБОГО УЧЕНОГО
Блять, ну идите нахуй тогда отсюда, что сказать еще.
я бы не стал бомбиться, если бы вы просто говорили, что "чел это сложно"
но вы прям прибедняетесь пиздец
и пхдшники на вас ссут, и синтаксис языка каждые 5 секунд меняется, и занимаетесь вы вообще только легаси
к тому же еще и у сеньеров зп в 15к рублей до вычета налогов (а у плюсовиков налоги 60 процентов)
как бы камон, понятно, что тяжело. А где легко? думаешь в джаве просто? у тебя там другой тип проблем, то то и всего
Кек, какой BIM? Их писано-написано уже овердохуя и денег там давно не водится.
>А где легко? думаешь в джаве просто? у тебя там другой тип проблем, то то и всего
Да, не думаю, а знаю.
Почему ты считаешь, что кто-то прибедняется? Посмотри просто по линкедину чуваков из нормальных технологических компаний и прикинь что как.
А почему все так любят забывать, что qt-форсошлепы тоже сиипипшники?
Наверное потому, что кутешники зарабатывают и им некогда сидеть на дваче.
я в свое время работал в геймдеве на юнити
причем макакой, как вы их называете
так вот у нас там порой такая дичь была, что просто хуеешь
то кватернионы тебе gimble lock дают, то какое-нибудь ебанутое ограничение платформы, то нормали переворачиваются не так, где надо. С ui так порой вообще пиздец
и хотя мы ряяяяя макаки сидим клацаем по клавишам - проблемы тоже есть
так что везде сложно
> Думаешь везде просто?
> Да, не думаю, а знаю.
> Посмотри чуваков из тех компаний
ну блять, во первых я не ебу как вообще это связано
во вторых покажи там, на кого мне посмотреть бля
Потому что большинство из них работает в говНИИ и их даже за людей считать неприлично.
Я тебе к тому, что если ты посмотришь на любых сеньйров-помидоров из всяких самсунгов, хуавеев, нвидий, интелов, там будут максимально жесткие чуваки с топовым образованием, пхд, статьями и огромным опытом, и это с учетом того, что раньше порог вхождения был ниже и область знаний меньше.
Так это разработчик графического движка, который и без BIM столько получает.
посмортел у яндекса
обычные ребята
причем много из моего вуза - бауманки
те, кто совсем крутые, у тех лет 15 опыта (не только из мгту)
причем не все начинали в яндексе
сейчас еще самсунг знаю
но если учесть, что у меня туда знакомого из МИЭТ взяли - думаю примерно такая-же ситуация
Upd: не нажал enter и успел глянуть
их expert software заканчивал Международный Университет Природы, Общества и Человека «Дубна»
про публикации стоит говорить что-нибудь?
короче ладно, я устал что-то доказывать
если тебе ок жить в мире а ля "ну если не поступил в мфти или мгу, то нечего и соваться" или "ну если не взять и не получить пхд, то нечего и думать даже", то ок, твое право
мне больше нравится жить с мыслью, что некоторые вещи можно затащить, если иметь желание
чем хуже бэкграунд, тем сложнее, да, но упорство необходимо (хотя человек из университета природы меня прям вдохновил, может и с бомонкой можно куда-нибдуь норм пройти)
кстати можно вспомнить, что Витек Рогуленко из МГИМО в шад поступил
так что я заебался двачевское нытье слушать уже
всем добра и успехов
Смешно. Топовые чуваки давно не в этой стране, и давно со своим успешным стартапом. Если кто-то кажется по резюме топовым, но всё еще здесь и наёмник -- ты имеешь дело с фэйкером.
И это все понимют, кроме тебя.
P.S.
Знакомый техлид в хуавей.раша вообще без вышки.
ну тут я не соглашусь разве что со стартапом
не все же хотят) можно и миллионеров в гугле быть)
я с уважением отношусь к ребятам из физтеха
очень сильная школа математики - базару ноль
но я ни за что не поверю, что есть хотя бы один выпуск, где нет хотя бы одного дауна
Это не ирония, это больше константация факта. Раньше не знаю как, а вот сейчас довольно много даунов, для которых учёба = всё скатать и всё спихнуть, выбить оценку повыше в основном, конечно же, женщины. Если физтехи что-то до сих пор и могут, то это ботать за ночь кванты.
еще, опять же при всем уважении к физтеху, у меня не очень мэтчится этот вот великий дроч на МФТИ (он бомбанул вместе с бомбежкой мл, как я понимаю), но вместе с тем не такое уже и большое кол-во достижений в области ИИ в россии
либо я чего-то не понимаю
добавь в threadpool::init дефолтное значение параметра 0 чтоб удобнее вызывать, тем более дальше логику менять не придется
Зачем здесь rvalue?
void add_job(std::function<void()>&& call);
...
pool.add_job(foo);
Типо из-за упаковки foo во временный std::function? А что, если RVO произойдет?
Норм, иди
По диагонали прочитал, и увидел изменение переменной кондвара _m_idle_counter без мьютекса. Смотри, почему так нельзя:
>Т1, строка 179: захватили мьютекс
>Т1, строка 180: проверили условие - ложно, тут ВНЕЗАПНО тред прерывается
>Т2, строки 161-162: делаем _m_idle_counter++ и notify_one(). Тред засыпает обратно
>Т1, строка 180: так мы уже проверили, что условие ложно, то засыпаем обратно (уже навсегда)
Lost wakeup в самом чистом виде. Поэтому переменную, на которую завязан кондвар, нужно всегда изменять только под мьютексом этого кондвара.
Многие не знают до сих пор. Два года назад мне приходилось 40-летнему синьору объяснять, зачем я переменную кондвара изменяю под мьютексом ("просто сделай её атомарной", лол).
Есть некоторого рода сущности с двумя идентификаторами: главным и побочным (обычные int'ы). Нужно по идентификаторам возвращать объект-описание, содержащий определенную информацию.
Проблема в том, что идентификаторов пара. Для различения большинства сущностей достаточно главного, при этом у этих сущностей побочный идентификатор не влияет на то, какую информацию нужно отдавать, но есть сущности с одинаковыми главными идентификаторами, у которых побочный идентификатор имеет значение.
Бонусом хотелось бы, чтобы для всех неизвестных значений побочного идентификатора отдавалось некоторое значение по умолчанию.
Иллюстративный пример:
1,1 - А
1,2 - А
1,3 - А
1, - А
3,1 - Б
3,2 - Б
3, - Х
4,1 - С
4,2 - Д
4,* - Е
Естественно, на этапе компиляции ничего не известно, все подгружается при работе программы из файлов данных.
Ничего адекватнее map'a из map'ов, при этом вложенные будут иметь значения по умолчанию, пока не придумал. Может, есть что-то более удачное (map с ключом в виде пары? Но как искать?)
Забыл про звездочки, макаба их сожрала... Но понятно, надеюсь
Без гугла? Я бы не смог, аллокаторы не использую в практике почти.
id = (uint64_t)master<<32 | slave
https://pastebin.com/JM38x56A
>>1956778
> threadpool::init дефолтное значение параметра 0
Дык есть же ж
> Типо из-за упаковки foo во временный std::function? А что, если RVO произойдет?
Разве не надежнее просто rvalue поставить, зафорсить оптимизацию? Это же не гарантируется стандартом, это по желанию самого компилера, может, захочет, а может - нет. Особенно когда имеешь дело с msvc стараюсь форсировать такие вещи. Переубедите меня.
>>1956926
Done. Нечего больше сказать.
Я видел префикс _ для приватрых переменных. Я видел префикс m_. Но зачем _m_? Да ещё с венгерской нотацией только для флагов. Алсо, в C++11 можно две закрывающих '>' подряд ставить в шаблонах, без пробела.
И я бы объединил get и worker_wait - блокировал бы сразу, пока не придёт задача или сигнал, что пора заканчивать. Иногда полезно их разделять, но не в этом случае. И два мьютекса и два кондвара тут не нужны, здесь это только чревато: в одном случае _m_cv делает нотифай под одним мьютексом (строка 146), а потом ждёт под другим (строка 165). Гонки и/или дедлоки очень вероятны.
Почитай C++ Concurrency in action, там есть примеры потокобезопасных очередей и тред пулов.
1) _m_ Выделяется лучше, m позволяет легче отличать функции от переменных, функции через _M_, например. Не очень красиво, но мне удобно не прыгая двадцать раз по коду понять что написано
2) три символа, ибо у меня IDE вызывает тулхелп после 3го символа
За остальное благодарка, чуть позже переварю
> язык с областями видимости
> std::пук(std::среньк)
> на скрытых символах префиксы
Та же хуйня с sid::unordered_map, которую за каким-то хуем назвали так вместо std::hash_map, якобы чтобы не конфликтовала с другими реализациями с hash_map в названии.
Буст тяжело пойдет, если не работал до этого. Можешь кьют попробовать, есть оф гайды. Либо у Шлее в книжке почитать.
https://doc.qt.io/qt-5/examples-network.html
Но у кьюта нет адекватного http + намного тяжелее буста, норм пацаны сетку либо на бусте либо на нативе делают
https://habr.com/ru/post/192284/ типо того
boost::beast мощный имхо, хотя может тут смогут его грамотно обосрать
сетка - это просто файл в который ты пишешь, ничего больше
только поаккуратнее с 'сетевым кодингом', в компаниях это немного другое, будешь совсем не клиент-серверами заниматься
>>1957218
а) не работает
б) даже если бы работал - это все равно неудобно
ц) я долгое время юзал m_, но очень сливается с глобальными и статическими, особенно, когда есть статические приватные и неприватные. Если ты не пишешь проект на 20к строчек тебе на такие вещи будет глубоко похуй. К слову в тредпуле я далеко не все свои предпочтения выразил, просто тогда бы его анон отказался читать бы. Серьезно, если у тебя сегфолт, на колстеке 20 функций, которые ты писал год назад и в душе не ебешь что там происходит.. 'наводить мышкой', 'контрол клик' - от таких вещей пропадает желания вообще что-то делать
Помню мне еще за пробелы в скобках предьявляли любители нечитаемых условий типо (((a+b)-((MAX(a(b-a))>b))),b)a)))) ) )) )
что-то вспомнил помидоров, с которыми раньше работал аж подгорел, особенно
if ( APICALL1() != error ) {
if (APICALL2() == error) {
print(error);
return;
} else {
if (error == APICALL3() ) {
print(error);
return;
} else {
ЕЩЕ ДВАДЦАТЬ ИФКЕЙСОВ НА ПРОВЕРКУ УСПЕХА С ДВАДЦАТЬЮ ТАБАМИ
}
} else {
print(error);
return;
}
Ты там под веществами? Как автокомплит не удобен? Какая мышка?
Типичный опен-ссл
эксепшены тормознутые вообще-то.
если у тебя какой-то хайлоад, лучше ими вообще не пользоваться.
>надо уметь
Пора бы уже понять, в it все работают выше пределов своей компетенции.
Если кто-то чем-то пользуется, 95% что он не умеет этим пользоваться.
согласен, и это грустно.
Когда я научился в эксепшены - обмазать ими проект уже тупо невозможно стало.
Ну и нахуй мне эти твои игрушечные языки?
Меня интересует:
1) Часть с мультитредингом. Как синхронизировать данные, чтобы что-то там менялось между drawcall'ами?
2) Писать в переменные можно как-то более эффективно, чем просто лапшой уровня if(string=="var_name") var_name = value?
Ведь там может быть параметров очень очень много.
>1) Часть с мультитредингом. Как синхронизировать данные, чтобы что-то там менялось между drawcall'ами?
Хотя, сейчас я думаю, что там никакой мультитрединг вообще не нужен, наверное и можно просто в колбеке клавиатуры конкетенировать строку и смотреть чё там.
в графику никогда не лез, но вроде это такой же квадратик, просто нужно затемнить всю 3д графику и нарисовать окошко
если не ошибаюсь графика делается в одном треде (могу ошибаться) все остальные заняты прочим процессингом
а if string == "set" это уже не туда точно.
тебе нужны дескрипторы к каждой команде, и все это завернуто в хеш мап, чтобы все в итоге выражалось в что-то вроде
console_process(const cmd_descriptor & descriptor, std::vector<std::string> params)
{
}
и она по дефолту использует глобальный дескриптор с самыми верхними командами, потом раскрывается и рекурсивно распаршивает столько поддиректив сколько нужно, пока не доберется до нужного колбека, и дернет его с оставшимися параметрами, типо
set network_buffer const 1024
сет идет в глобальном дескрипторе хеш-мапы, потом в дескрипторе хеш-мапы берется buffer, в буффере уже колбек, в который запихиваешь два оставшихся параметра
Рисуешь 3д, потом рисуешь задник, потом текст из массива строк. События от клавиатуры обрабатываешь между рисованием, они меняют твой массив строк (эмулируешь терминал). Смотри в исходниках q1.
>>1957748
>>1957758
>Эксепшены надо уметь готовить
Ну вот поясните, умельцы. Что значит "эксепшны надо уметь готовить"? В чем заключается ваше секретное умение?
1) Конструктор пытался, но не смог? Пусть кинет эксепшн.
2) Функция должна была выполнить какую-то работу, а не смогла из-за невалидного инпута/неподходящего состояния нужных объектов? Кинь эксепшн
3) Планируешь вернуть из функции кинуть return code сложнее чем bool - подумой, будет ли кто-то его анализировать в месте вызова? Если никому это нахуй не надо, либо ничего не даст -- то просто кинь эксепшн.
4) ????????? всё
Разве не так?
>>1958005
Не, как рендерить-то понятно.
>тебе нужны дескрипторы к каждой команде
Что ты имеешь ввиду, расскажи плиз? Я прост вообще никогда со стрингами всякими дел особо не имел.
У меня команды будут вида "переменная знак значение", уровня
var = value или var += value.
Значения могут быть float, int или vec3f условно.
Мне прям какие-то вложенные штуки не нужны, наверное.
Переменные свои регистрируй ты, тогда будет некая база данных и в ней один алгоритм вида нашёл - поменял:
addvar("foo", &global_foo, VarInteger);
Там же будет сохранение /восстановление.
Ну или классы сделай, если хочешь поебаться.
А, понял, окей. Спасибо.
в этом то и фишка дескрипторов - в гибкости, создавать можно на основе темплейтов, если позволяют знания
тут долго обьяснять, если серьезного ничего не нужно - зачем себе жизнь усложнять, сделай ифкейсами, KIS
если прям по красоте хочешь - думаю, начни с класса дескриптора команды, завернутой в глобальный хешмап, типо, хешмапа типо std::unordered_map<std::string, cmd_descriptor>, там инстансы:
.emplace( "set", set_cmd_descriptor )
.emplace( "restart", restart_cmd_descriptor )
.emplace( "connect", connect_cmd_descriptor )
ну а в самом дескрипторе коллбек std::function<void(const std::vector<std::string>&>
и типо ты дергаешь что нужно
global_descriptorp[user_cmd].call(params)
одним вызовом
Если без сложностей, проделай сначала такое, потом опыта наберешься - сам поймешь как лучше
Нагугли туториалы по написанию интерпретаторов, у тебя по сути очень простой язык получается же, типа шелла.
И как это поможет?
Любые другие уязвимости с remote code execution. Вон в киберпанк модах недавно было.
имхо, я у страуструпа советую читать 2 книжки - "дизайн и эволюцию" и "4е специальное издание", все остальные книжки у него неудачные
даже к 4му специальному изданию есть претензии а именно пара глав по проектированию где много воды
мимо безработный челик любящий читать для развлечения
а вообще если только учишь с++, то книжки страуструпа вообще лучше не читать, учитель из него хуевый
да я думаю, чтобы адекватно юзать какую-то либу, нужно хотя бы раз что-то подобноее написать самому
Это копия, сохраненная 15 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.