Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Подготовиться к C++ Trainee/Junior

Усі статті, обговорення, новини для початківців — в одному місці. Підписуйтеся на телеграм-канал!

Доу, бодрый день.

Хотел бы вырасти в сабжект.
Прекондишн у меня такой:
0. КПИ-ФЕЛ-САПР.
1. На предыдущем месте работы был сисадмин + ит-менеджер + саппорт, что мапилось, собственно, в такой титул: Інженер комп’ютерних систем.
2. Денежная подушка еще месяца на два — три.
3. Якорь из 36 лет за плечами.
Почему решил менять?
1. Нравится чувство, когда что-то написанное заработало.
2. Хочется —именно— создавать продукт.
Что имею:
1. Знания синтаксиса С/C++, STL, структур данных, понимание сложности по времени/памяти.
2. Roadmap, который набросал себе перед уходом, и по которому иду.
а) компиляция, линковка со сторонними библиотеками, сборка.
б) СУВ, а именно git.
в) межпроцессное взаимодействие, а именно TCP сокеты.
г) мультипоточность в с++11.
д) базы данных + SQL.
е) UI на основе Qt.
ж) OpenGL графика.
з) Паттерны
Что отработал из плана:
а) проектик поиска дубликатов файлов. Линковка c boost::serialization, boost::program_options, OpenSSL (функция хеширования). Генерация Makefile с помощью #!/bin/sh.
б) раньше чутку исп. для сохранения конфигов. Сейчас что-то значимое выливаю на github.
в) проектик HTTP-клиент, получает пачку задачек, разбирает URL запросы, резольвит имена хостов, отправляет запрос + заголовок, принимает ответы от серверов, разбирает их, сохраняет запрошенные ресурсы.
г)проектик архиватора на основе алгоритма Хаффмана. Использовал thread, mutex, lock_guard, unique_lock, condition_variable.

Сейчас хочу сверить часы. Варюсь в собственном соку, уже 2,5 месяца и голову посещают мысли и чувства, как-то: а не слабовато ли твое кунг-фу =), правильно ли делаю и т.д.
Плюс уже вижу такой себе deadlock =) : Trainee, Junior — возрастной ценз — мои 36.
Прошу у комьюнити помощи, совета, линков, предложений, мотиваций, даже success story, касательно всего вышеописанного.

Может нужно чего изменить, может добавить, на что упереться.
Есть ли смысл выходить на поиски работы с тем что есть, или шансы пока стремятся к нулю?

Буду рад любой помощи.

upd1: мои изыскания github.com/spqr33?tab=repositories, три верхних. Остальные форкнул себе на всякий случай.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
OpenSSL (функция хеширования).
Вы из-за функции хэширования тянули OpenSSL? Открою небольшой лайф-хак: хэш можно делать используя любой алгоритм шифрования, например RC4. Кроме того, есть несложный всем известный MD5.

Лет 10-15 назад разработка на C++ была в тренде, и на собеседованиях как-то всё серьёзнее выглядело. Впрочем, как сказал царь Соломон, всё пройдёт, всё превратится в пыль... Системный софт вы писать врядли будете, скорее всего игры. Значит, скорее всего под винду. Там есть DirectX (versus OpenGL), и дот нет, на который вы перейдёте.
Или ещё есть например тема с embedded-софтом, правда я ей не занимался.

Именно MD5 из OpenSSL и взял =). OpenSSL есть, наверное, на любой юниксоподобной машине — так что можно было не изобретать велик, хотя сначала и думал писать сам. Там, кстати, можно любой алгоритм хеширования прикрутить: наследовать AbstractHash и реализовать пару =0 методов и функцию сериализации.
За то куда виться — спасибо. ГеймДев круто, если б попасть. Не знаю, может ошибаюсь, но мне он кажется заоблачным. Там такое пересечение технологий и знаний ...=). Эмбеддед тож интересные задачки. Вообще, поглядим, сейчас пробую писать на Qt, || осваиваю php.
Думаю, во что-то вырасту =) По крайней мере, одминить нет желания возвращаться.

Коллеги, я писал долое время на «Си» хотел сменить направление, или в Java или в C# но подумал немного и понял что С++ мне ближе и буду идти по трудному пути единственно подскадите на что ориентироватся, куда тренд идет (Qt, OpenCV, GameDev, нативное ПО Linux\Windows) куда лучше рулить, самого в GameDev тянет но коллеги отговаривают, говорят что Qt перспективней и работу легче найти, а вы как думаете ?

К сожалению в Украине работы ничтожно мало по таким крутым штукам как OpenCV, gamedev, linux kernel, Qt относительно ВЕБ предложений, я даже примерно не знаю чем сейчас может заняться «плюсовик» ? Может баг-фикс ? Новых проджектов по «плюсам» мало заходит, почему сам не знаю ...

в Киев регулярно зовут на С++

Вот может оно и верно для Киева, а в остальных городках глуховато!

Набор предложений ограничен, но людей найти еще сложнее. Все на Java/C#/JS

К сожалению вы правы, если вакансия по разработке ядра то требования вообще космические, а что-то ближе к земле по типу Qt или MFC то хотят опыт 5 лет, оно конечно правильно перестраховатся, но часто перегибают палку. Всунутся «плюсвером» архисложно это я уже понял !

mobile
QT
Linux
3D.

всего вместе изчезающе мало в сравнении с рынком Веб-Девелопмента. В больших городах (то есть в Киеве) может быть получше, чем во всех остальных

У вас наверно опыт не слабый, посоветуйте мне по доброте душевной как лучше поступить, я раньше много писал на Си под МК для местного завода, решил уйти в «плюсы» так как мне эта идеология близка, но вижу что дела не очень в плане работы, как по вашему лучше будет, искать работу на Си или учить С++ или лучше и правда как совутеют многие податся в ВЕБ где эти все Джавы, Шарпы сидят ?

Всё сильно зависит от того чего именно Вы хотите. Работу в «лиделе рынка» или для души?

если

раньше много писал на Си под МК
то и работу логичнее всего искать на С, можно и под МК, такая работа есть, но скорее всего только в Киеве и не много.

Добаляете к своему опыту на С Linux и _Английский_ и можно пробовать искать работу в каком-нибудь Глобал-лоджике. Сюда же можно Android NDK к примеру и OpenGL (OpenGL ES) (вот и ваш геймдев кстати). Ну и С++, если конечно он нравится. Но скорее всего со всем этим так же прийдётся ехать в Киев или ещё куда.

Другой вариант это C++ и QT, на них тоже какой-то спрос есть

А если вопрос куда идёт тренд, то тред идёт в веб :) и если начинать учить веб разработку то с HTMS/CSS/JS а не с джавы и сишарпа, и только после них братся за каой-нибудь серверный язык. но здесь, я так понимаю, прийдется начинать с нуля. Зато работы такой валом и для любого уровня развития.

Ну вот как-то так я картину вижу.

Большое спасибо за ответ буду надеятся что голова не подведёт переварить «плюсы» !

буквально недавно искал работу с++ с полутора годами опыта, предложений предостаточно, даже при условие, что половина отпадала по причине моего elementary английского. Но правда все Киев, Днепропетровск, Одесса

Спасибо за ответ, это мотивирует, правда у вас опыт в «плюсах», а у меня столько же времени но в «сишке» ! И к стати вы юзаете все эти новые плюсовые стандарты (11\14) в рабочих проджектах ?

у нас почти все собирается на msvc2010, так что с++11 там не особо поиграешься. Но замыкания есть и то хорошо)
Но на собеседованиях меня, вроде бы, ни разу и не спрашивали про с++11

Понял, спасибо, а не подкините толковое название книжечки по «плюсам» по типу «плюсы за 24 часа» или «си-плюс-плюс без истерики», что бы без воды и по делу, я выкачал 10Гб книг и видео по предмету, а вот с чего начать толком не знаю, читаю С.Прата С++ (мне её рекомендовали) — но там так много воды что заснуть можно ! Спасибо ...

из того что последнее читал, очень понравилось С.Мэйерс 55 верных советов улучшить структуру и код ваших программ, но это скорее для «продвинутых». И я бы советовал на гитхабе для проектов добавлять readme.md с описанием что за проект, для чего предназначен, как собрать, если надо, то и скриншоты с примером работы. Если библиотека, то еще и программу — пример как пользоваться.

На хабаре есть обзор с основными нововведениями в стандарте, этого вполне достаточно habrahabr.ru/post/182920
кроме того, сайте microsoft есть перечень фич C++, реализованных в разных версиях компилятора. Установите себе VS2015, там есть полная реализация нового стандарта.

Класс, большое спасибо, у VS — есть собственный компилятор, не MinGW ?

Да, есть, и вполне толковый. Visual Studio вообще развилась от Visual C++

У Стивена Праты, 6-ое издание, последняя глава — как раз и рассказывается про нововведения с++11. Плюс там где-то под конец есть описание хорошее STL. Но в книжке ничего нету по темплейтам. Если хочеться быстро и без воды — мне очень понравилась Стенли Липпман, Ессеншел С++.

«Поиграться» с плюшками нового стандарта не отменяет того факта, что 95% кода нужно писать не выходя за рамки visual c++ 2010

Я бы сказал, либо контора использует новый стандарт, либо нет. Пока больше не используют, да. Но обычно те, кто использует — лучше. И gcc его поддерживает давно, msvs наверное были самые тормоза и только с 2015 уже вполне в него смогли (2013 не может в move constructor). Т.е. фактически компилеры-то уже могут и контор всё больше становится тех, кто переходит.

Я думаю очевидно, что в многих случаях это не из-за того что кому то лень читать и вникать в новые «фишки», а потому что есть дюжее количество библиотек собранных на старом компиляторе. И никто не хочет тратить кучу времени на адаптацию и сборку, когда оно и так работает.

У меня ощущение, что на сишке из-за всяких там ембедедов и микроконтроллеров работы примерно столько же как на плюсах.

Насчет С++11 ( кстати чего вдруг 11 а не 14?, а пока Вы доучитесь уже и 17 будет актуально) , так вот ни на одном моём проекте его еще полноценно не использовали из-за совместимости с более старыми платформами (я правда 2 года на плюсах не програмировал, может чего-то и упустил). На собеседованиях иногда спрашивают, но так по-детски, в стиле «ну как вам? какие фичи пробовали? и как понравилось?», совсем не так как по старым заковыкам... Само собой учить потихоньку надо и новый стандарт и старый С++ не забывать.

C++ в основном 03, 11 маячит на горизонте
2 года был питонистом.

Наверно хорошо сменить деятельность для разнообразия, с «плюсов» в «питон» это очень резко, не знаю как вы обратно вернулись ...

Да, разнообразие это хорошо.

ну.. 9 лет на плюсах в хороших проэктах и компаниях...

Ого, я так и знал что у вас огрмный опыт в «плюсах» :)

Новый стандарт можно за пару часов неспеша освоить, там ничего сложного, 11+14. Самая главная фича, которую ввели в стандарт — это smart pointers, с синтаксисом из boost, без которой целесообразность дальнейшего программирования на плюсах была бы под вопросом. Никакие старые платформы поддерживать не нужно, если речь идёт о средах разработки, в этом нет смысла. Поддержка старых платформ увязана с отказом от нового API под Win8.1, и разработкой заранее устаревшего софта.
Кстати, насчёт smart pointers. С новыми конструкциями код становится ещё более громоздкий, архитектура ещё хуже, если сравнить, как легко и эллегантно это реализовано в скриптовых языках. Теперь ещё с удивлением обнаружил и ограничение, возникшее благодаря «мыслителям», создавшим новый стандарт: если указатель создаётся через std::make_shared, то теперь класс обязательно должен содержать публичный конструктор и деструктор.

На равне с умными указателями я б еще поставил стандартизованную поддержку тредов и, наверное, байнд.

С новыми конструкциями код становится ещё более громоздкий
Ключевое слово auto должно помочь. Оно избавляет от бойлерплета очень хорошо.
class B{}; auto spB = std::make_shared<B>();

auto — это конечно же замечтальено, но это капля в море. Громоздкость там не только не уменьшается, а наоборот увеличивается. Чтобы например объект мог передавать смартпоинтер на самого себя, а это аналог this, нужно написать такую конструкцию:
class C : public std::enable_shared_from_this<c>
причём, в конструкторе и деструкторе с этим указателем работать нельзя. Далее, если дочерний класс нуждается, то надо либо опять выводить, что приводит к избыточности, либо динамически кастить, что хак по большому счёту. Захламление лишними конструкциями только прогрессирует... А сообщения об ошибках в темплейтах — это вообще нечто, и ничего с этим не сделано.

Новый стандарт можно за пару часов неспеша освоить, там ничего сложного, 11+14.

неспеша по диагонали просмотреть список фич можно, не спорю. rvalue-reference уже освоил? представляеш, как правильно реализовать move-конструктор? А что такое универсальная ссылка? Можешь рассказать что такое constexpr? ИМХО Там всё-таки всяких заковык немного больше чем на пару часов. Другое дело что мало кто туда копает, и мало кто об этом спрашивает так как спрашивали по старым фичам.

Никакие старые платформы поддерживать не нужно, если речь идёт о средах разработки, в этом нет смысла.
Ну-ну, расскажи мне об этом.
Это вообще-то не тебе и не мне решать. Это решение за бизнесом. «мы поддерживаем Windows XP и всё»
Поддержка старых платформ увязана с отказом от нового API под Win8.1,
Я тебе больше скажу, поддержка какого-нибудь Линукса или не дай бог Айоса тоже некоторым образом связанна с отказом от нового API под Win 8.1 ... как вобщем и старого Win API :), но их наверно тоже не надо поддерживать?
С новыми конструкциями код становится ещё более громоздкий
Ну я как-то делал презентацию рисовал был у меня кусочек кода с шаред промисом, где-то к последнему слайду джависты присутствующие в зале начали терять голову от обилия скобочек.
последнему слайду джависты присутствующие в зале начали терять голову от обилия скобочек.

“This code forms some sort of argument in that debate, but I’m not sure whether it’s for or against” ©

Ну я начиная с VS2010 использую новвоведения стандарта, по мере их реализации в компиляторе. В то же время, основная часть кода всё равно состоит из простых условий, выражений и циклов, а тот факт, что язык программирования со временм становится всё больше похож на китайский язык — не является преимуществом.
Поддержка XP постепенно утрачивает актуальность, поскольку число пользователей этой системы стремительно сокращается. Разрабатывать игры с поддержкой XP вообще нет смысла по ряду причин. О каком бизнесе там речь, если систему за 10 лет не обновили. Ещё хорошо, если SP3 у бизнеса есть, хотябы DX11 встанет.

Ну вобщем-то да, сильно от предметной области зависит, в геймомире все может быть совсем по-другому.

Бог с ним с ХП семёрка то ведь тоже Win 8 API не поддерживает, а она ещё много где стоит...

Посмотрел бегло HuffmanArchiver несколько файлов.
Для джуна наверно норм, видно понимание многих базовых элементов, но надо бы вам стараться писать код более просто и понятно.
И побольше б OOP подхода в дизайне, а то у вас похоже на С с классами, это сложно читать.
Например в main.cpp вы создаете потоки и им передаете мьютексы и кучу общих переменных по ссылке.
А лучше было б сделать эти мютексы и переменные приватными членами класса например того же FrequencyCounter, код потока реализовать в методе FrequencyCounter::thread(), где обращение к мьютексам будет как к приватным членам класса, и инкапсулировать создание потоков, ожидание их завершения и подсчет результатата например в FrequencyCounter::doWork().
Типа

struct FrequencyCounter
{
static some_result doWork()
{
FrequencyCounter fc;
thread fc1(boost::bind(&FrequencyCounter::thread, &fc));
thread fc2(boost::bind(&FrequencyCounter::thread, &fc));
fc1.join();
fc2.join();
return m_result;
}

private:
void thread()
{
std::scoped_lock lk(m_mutex_reading_done);
// do work
}

std::mutex m_mutex_reading_done;
};

тогда в main.cpp будет просто
some_result = FrequencyCounter::doWork()

Спасибо Вам за ревью.
Там есть два вида потоков: один читает в очередь, другие берут из очереди, подсчитывают частоту. Т.е. мьютексы и защищаемые ресурсы там должны быть видны из потоков разного вида.
Я чутку исправил ситуацию, когда писал разархивацию — там сделал структуру Decompression. И в нее помещал очереди, мьютексты, другую общую инфо(для разных типов потоков). И уже в потоки отдавал ссылку на этот объект.
Получилось чуть лучше:
thread r(reader, std::ref(decompression));
vector<thread> decompressors;
for ( uint32_t i = 0; i < physical_core_quantity * 4; ++i ) {
decompressors.emplace_back(Decompressor(decompression), std::ref(decompression));
}
r.join();
for ( auto& t : decompressors ) {
t.join();
}

И побольше б OOP подхода в дизайне, а то у вас похоже на С с классами, это сложно читать.
Угу, спасибо. Над дизайном надо думать больше — это факт, + читать чужой хороший код.
Для джуна наверно норм, видно понимание многих базовых элементов, но надо бы вам стараться писать код более просто и понятно.

Плюс один.

И побольше б OOP подхода в дизайне, а то у вас похоже на С с классами, это сложно читать.

Минус один. Там поменьше надо. Классов, мьютексов, вообще всего.

К C, с классами или без, это не имеет никакого отношения. Читать сложно по другим причинам.

Прочитав я ваш пост і зрозумів, що мені до джуна є куди рости(

Буквально недавно прорабатывал для GoIT тему С++
...
Inspection Date 04.08.2015
Period Last 30 days
Location Kiev
Keyword C++

Total Junior/Fresher
rabota.ua 105 4
work.ua 40 1
job.ukr.net/ 228 8
hh.ua/ 72 1
jobs.dou.ua/vacancies/ 34 0
...
Даже с погрешностью — рынок С++ trainee/junior так сказать пуст.
Сейчас есть одна\две вакансии в GlobalLogic/Materialise/DENTSPLY Implants/Luxoft.
Если уж очень хочется С++, можно попробовать в геймдев, но там чаще ищут сеньоров: Ubisoft/Crytek/Wargaming
...
Исходя из описанных Вами знаний\умений трудно оценить их глубину, вот тут
www.dropbox.com/...​cjecrp/questions.txt?dl=0
385 вопросов, после ответа на них, думаю сами сможете дать оценку своей готовности.
Хорошо бы поконтрибьютить в opensource С++ проекты на github, cpp-netlib например, весомый довод на собеседованиях.
...
Уже отметили, что цена входа для С++ достаточно высока, я сам С++ разработчик с 15 летнм стажем.
Так что тут нужно решить, зачем Вам выбирать достаточно сложный и не очень перспективный ИТ путь в Украине.
QA/DevOps позволят быстрее усилить финансовое положение.

Угу, спасибо. Про спрос — та я примерно понял примерно =). Сам просматриваю тоже. До этого все делал в Ubuntu+NetBeans+gcc. Подумал — нужно под Виндовс пробовать. Что у нас под Виндовс — Студия. Поставил, начал окучивать темку, и для себя понял(возможно не там искал, и не так понял), что MS будет двигать # или JS. А ++ отдаются энтузиастам. Хотя на tiobe c++ подрос, да и если верить githut у ++ не все печально. Такое.
Вопросы — засейвил, если вдруг будут приглашать, то буду дотягивать.
Если можно, дергну Вас еще двумя вопросами:
1. cpp-netlib. Именно он? Или можно что-то по уровню? Потому как я присмотрел себе уже =).
2. И, я понимаю что все оборачивают мысли в что-то мягкое, тут именно

и не очень
или правильно
и очень не
?

И деньги — да без них плохо, понятно, что не дам себе утонуть, потому как, в первую очередь жена спросит: Где ВСЬО? =) , но пока попробую.

что MS будет двигать # или JS. А ++ отдаются энтузиастам
Не совсем так, в M$ работает Герб Саттер(en.wikipedia.org/wiki/Herb_Sutter, котрый и в комитете не последний человек и курирует направление С++ у M$.
С моей точки зрения, текущее положение, обусловлено двумя важными факторами:
1) в начале нулевых, комитет расслабился и пропустил все полимеры. Стандарт С++11 был принят по серьёзным давлением индустрии, в него вошли только предложения, поданные до 2006 года кажется. Думаю С++17, внесёт ясность.
2) Большая часть с++ codebase была все-таки написана на языке «С с классами», жесткий микс printf и голых new.
...
Так что нужно время чтобы все-таки разделить С и С++. По своему опыту, при правильном подходе нет в С++ проблем с управлением памятью: RAII, shared_ptr и пр. творят чудеса, умелое обращение с множественным наследлванием позволяет строить очень эффективные модели бизнес доменом, про метапрограммирование вообще молчу — это просто грааль. Когда мне рассказывают про обощённое программирование в Java — я смеюсь рассказчику в лицо )))
...
1. cpp-netlib. Именно он? Или можно что-то по уровню? Потому как я присмотрел себе уже =).
github.com/cpp-netlib/cpp-netlib
Да, проект достаточно продвинутый, но можно поискать что-то проще. Хотя эти ребята работают над включением библиотеки в boost.
...
2. И, я понимаю что все оборачивают мысли в что-то мягкое, тут именно
Ок.
Первое: ИТ в Украине это только подмножество мирового ИТ и то не сильно репрезентативное и очень аутсорсово-ориентированное. Это надо иметь ввиду.
Второе: Есть общемировые тренды, такие как-то веб, мобайл, клауд. Это туда куда растёт ИТ.
Но в сегментах разработки OS, embedded, обработка multimedia, CAD и пр. конкурента С++ просто нет и не будет, и не надо рассказывать мне про D и Go )
...
Соответственно, мои рекомендации, это попытка связать глобальные тренды, тренды в Украине и собственный опыт.
В любой области всегда есть куда расти, вот вам вакансия:
jobs.dou.ua/...mind-inc/vacancies/17449
зп от 5000$ — думаю подойдёт.
...
Так что если душа лежит к С++ и есть желание разрабатывать ПО — пожелаю удачи и уверен,что хорошую позицию сможешь найти достаточно быстро.
в первую очередь жена спросит: Где ВСЬО? =)
Это наш крест, ну и один из катализаторов движения вперед )))

Ок, спасибо Вам за время и мотивации =)

Олег, не ищите приключений и идите девопсом — молодая востребованная профессия, знания сишки и скрипта не будут лишними. Вариант — build engineer.
Если очень хочеЦЦо программировать — избавьтесь от привычки вставлять в код свою фамилию: вряд ли кто-то из заказчиков это поймет.

Нравится чувство, когда что-то написанное заработало.
Это со временем проходит. ОстаеЦЦа удивление от того, что написанное таки работает :8)
избавьтесь от привычки вставлять в код свою фамилию: вряд ли кто-то из заказчиков это поймет.
Если Вы про namespace, то это я так себя мотивирую — победа лба нокаутом =) Шутко, я понял, придумаю что-то попастельней =).
И за девопс — спасибо, уже два схожих совета от людей, зарабатывающих на жизнь мозгами. Даже такой любитель граблей как я задумался =).

Скорее всего, вы сможете устроиться девом (возможно даже удивитесь как легко). Особенно если правда проработаете всё по списку, голова явно есть. Так что если дев — это мечта, а не хочется больше бабок, то идите в девы (да и годика через 3 по-моему в девах бабок у вас побольше будет). Толковых джунов очень даже берут и на С++ тоже. С++ очень даже жив и на нём есть интересные задачи.

1. код на джуна явно тянет
2. не забудьте указать ОС с которыми работали — будет мощным плюсом, особенно сисадминство
3. ниже писали про C++FAQ, но не дали ссылку: isocpp.org/faq
4. обязательно посмотрите RAII — что-то я не понял, зачем вы делаете mutex::lock / mutex::unlock (например вот тут: github.com/.../FrequencyCounter.cpp#L48 ), для это ставят lock_guard в блоке, который делает lock в конструкторе и unlock в деструкторе

Есть ли смысл выходить на поиски работы с тем что есть, или шансы пока стремятся к нулю?
даже нужно искать — скорость обучения на реальном проекте / задачах сильно выше, чем самостоятельные попытки

1. Спасибо за ревью!=)
2. Имеется ввиду работал раньше, или ос с которыми работал при написании?
3. Букмаркнул.
4. RAII, я применял тут github.com/...leSystemTraverser.cpp#L75 ,например. А тут мьютекс защищает очередь, мне надо извлечь елемент, и сразу деблокировать очередь. И потом еще обработать елемент. Если применить lock_guard, то только после разрушения его освободится мьютекс.

Имеется ввиду работал раньше, или ос с которыми работал при написании?
в первую очередь интересует умение программировать для большой тройки (Win, Lin, OSX), но если опыт администрирования каких-нибудь *BSD, AIX, HP-UX и прочих — это будет несомненно плюсом; особенно в случае сетевых кроссплатформенных проектов либо странного банковского софта, который вращается на странной оси
Если применить lock_guard, то только после разрушения его освободится мьютекс.
Завертайте lock_guard в фігурні скобки. При виході за скобку lock_guard руйнується і викликає unlock мютекса

А почему не DevOps? С вашим-то опытом...

DevOps — это админ, тесно интегрированный в процесс разработки?

Наташа, в любом случае, спасибо за идеи. Уже есть подсказки обратить внимание и и один намек =)

Выбрал ты неудачную тему.
=)
Пищу для размышлений имею, как минимум.

Выбрал ты неудачную тему. По си очень высокий порог, задач мало, да и бабла много не срубишь там.
Выходи на фриланс и параллельно рассылай резюме. Там и определишься со специализацией — где лучше получается. А охватить все за короткий срок — резьбу сорвешь.
Я вообще со своего стартапа начинал, потом фриланс, а потом уже куда выбросит....

Поищу где можно пастись на фрилансе С/С++, но я б, например, врядли отдал на фриланс что-то человеку с нулевым рейтингом. По стартапу, если не секрет, что за продукт?

врядли отдал на фриланс что-то человеку с нулевым
Твоя задача определить список требований по твоей тематике и дальше работать в этом направлении. Ну а если заказчик еще клюнет,так заработаешь еще. Короче, сразу убиваешь два зайца.
По стартапу
Я тогда админил Новелловскую сеть и для ее контроля написал несколько прог, которые показывали, кто грузит сеть в реальном времени. Обычно Новелл. продукты устанавливали в школах и админы очень желали знать, кто из их учащихся лазает по порно сайтам.

Список выглядит хорошо. Судя по нему уже начинать подаваться на джуна можно. Только выложите проекты, без них малопонятно. Советую посмотреть всякие C++ FAQ при подготовке к собеседованиям, а то на самом деле синтаксис С++ можно учить вечно. И небольшой совет — уберите про создавать продукт, довольно часто саппорт.

Спасибо. Я ссылку на github указал в доу профиле, и добавил в конец топика. Касательно FAQ- дельно, ценно, взято на вооружение =), по поводу саппорта: саппорт жеж один из этапов изготовления =).

Код на джуниора тянет. Несколько verbose и есть ненужное (кучи параметров). И рассматривайте его как то, чем люди будут пользоваться, сделайте это использование попроще. Ну и по мелочи, типа надо анлокать мутексы в порядке обратном их локанию, а то возможен дедлок (github.com/...er/src/Compressor.cpp#L35 ).

Спасибо за ревью =) По порядку разблокировки мьютексов — я перед тем как кодить, почитал чутку ISBN-13: 978-5-93286-089-2, 11 глава, pthread, там используется L1, L2 ... U1, U2. И сам типа подумал — почему так? Аналогия с {a1(); b2(); ...~b2(); ~a2()} или создание/разрушение производного класса B(), D() ... ~D(), ~B(). Ну и малость гуглил по unlock mutex order. В примере — не опасно, скорее даже выигрыш по скорости — другой поток может успеть выполнить инструкции между L1 и L2, когда снимается блокировка U1. Но, если писать командно, или safety, то да. Возможно такое L1, L2, U2, L1 и т.д. Выделил нарушенный порядок захвата мютексов =)

Підписатись на коментарі