LINUX.ORG.RU
ФорумJob

Инженер-программист, г. Санкт-Петербург

 , ,


2

5

В петербургскую компанию требуется программист для участия в разработках изделий преимущественно морского назначения для операционных систем Linux, QNX.

Требования скромные:

- опыт разработки на языках C/C++ от 1 года;
- желателен опыт разработки на Python;
- желателен опыт разработки с использованием Qt;
- знание или отсутствие боязни Bash;
- навыки администрирования Linux, QNX;
- умение или отсутствие боязни разбираться в чужом коде;
- готовность к самостоятельной работе;
- готовность к командировкам.

Зарплата от 60000р. Оформление по ТК РФ. Предоставление и оплата отпусков и больничных в соответствии с законодательством. Пятидневная рабочая неделя, 8-ми часовой рабочий день.

Резюме слать на адрес: aleksey.karelin@rif-spb.ru



Последнее исправление: HongZa (всего исправлений: 1)

Ответ на: комментарий от MuZHiK-2

А почему человек без опыта и образования должен больше 60 получать

Потому что я умею и могу делать свою работу.

BruteForce ★★★
()
Ответ на: комментарий от BruteForce

Это ты так думаешь, а на самом деле у тебя типичный говнокод. Просто со стороны виднее. Давай ссылки на свой код.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от BruteForce

Увеличится немного

man Средняя_Зарплата_РФ, что плохого получать x1.5-x2 средних зарплат, находясь в своем родном городе?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Не понимаю, что за родной город. А на две средних ЗП не прожить.

BruteForce ★★★
()

Зарплата до 60000р
Нет удаленки
- опыт разработки на языках C/C++ от 1 года;
- желателен опыт разработки на Python;
- желателен опыт разработки с использованием Qt

Это как-то не серьезно

навыки администрирования Linux, QNX;

То есть и сопровождать самому ? Или все же навыки использования Linux, QNX ?

Dred ★★★★★
()
Ответ на: комментарий от BruteForce

https://github.com/RussianBruteForce/

Ну, давай пройдемся.

Для начала, твой CMake файл.

add_definitions(-DIQ_VERSION_MAJOR=${VERSION_MAJOR})
include_directories(./GSL/include)
aux_source_directory(. SRC_LIST)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")

За это нужно бить палкой. Это говорит уже о том, что ты CMake-говнокодер и не понимаешь, как правильно надо его использовать.

Дальше в твоем коде я вижу вещи типа:

public slots
signals

Или вот такие вещи в классах:

protected:
	int spacing;
	QMargins margins;
	QSize extraWindowSize{0, 0};
	QRect availableScreenGeometry;

Это тоже хрень:

private:
	const QScreen *screen_;

А в другом месте по-другому приватные члены именуются:

private:
	std::unique_ptr<QTimer> t;

Слоты в Qt вот так только отсталые соединяют:

connect(screen_, &QScreen::availableGeometryChanged, this,
		&IQDisposition::recalculateAvailableScreenGeometry);

Вот это место чудесно:

bool IQHistoryModel::insertRows(int row, int count, const QModelIndex &parent)
{
	if (row || count > 1)
		return false;

	beginInsertRows(parent, 0, 0);
	endInsertRows();
	return true;
}

А вот это рождает непортабельное поделие:

#pragma once

Также у тебя явно наблюдается auto головного мозга:

auto screen = disposition->screen()->availableSize();
		auto w = width_factor * screen.width();
		auto h = height_factor * screen.height();
		return QSize{static_cast<int>(w), static_cast<int>(h)};

Дальше у меня вытекли глаза. Я уже молчу про отсутствие документации, тестов, CI и прочих вещей.

И я не нашел у тебя там реально сложных или средней сложности проектов, у тебя там уровень старшего класса. Поэтому очевидно, что если тебе выдать сложный или среднесложный проект, ты там наломаешь дров. Отсюда вывод - твой уровень соответствует среднестатистическому зеленому выпускнику, поэтому платить больше 60К (и это многовато) не вижу смысла.

За мою бесплатную консультацию не благодари.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MuZHiK-2

Чё не так с коннектом-то? И кто сейчас в прагму не умеет? И чем тебе signals и public slots не угодили, если чувак 100% не будет другие библиотеки с сигналами подключать?

fluorite ★★★★★
()
Ответ на: комментарий от fluorite

Чё не так с коннектом-то?

Гугл сломался что ли?

И кто сейчас в прагму не умеет?

Да мне пофиг кто умеет, а кто - нет. Если человек использует нестандартный костыль, при наличии стандартного решения, то он - идиот.

И чем тебе signals и public slots не угодили

А кто даст тебе гарантию 100%, что завтра тебе не понадобится подключать? Это как раз и приходит с опытом - предвидеть и делать изначально правильно, чтобы потом раком не стоять.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MuZHiK-2

Может, в Воркуту какую закинуть хотите.

В Воркуту навряд ли, в Мурманск могут. Или во Владивосток. В Новороссийск ещё. Нормально, приличные городишки.

Deleted
()
Ответ на: комментарий от WARNING

можно, внезапно, стать невыездным. Обидно это знаете ли. Но опыт интересный.

Вторую форму ты будешь подписывать, так что тебе решать - оставаться или нет. Будут пихать тебе форму - отказываешься и валишь. Не проблема.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от WARNING

можно, внезапно, стать невыездным

Нельзя. В системе ВПК не всякий невыездной.

Режимным, неважно, какой они принадлежности, обычно доплачивают, надевают какие-никакие погоны и ограничивают некими обоюдными договорённостями. Всё остальное, включая слепую веру в намёки и ничем неподтверждённые обещания людей, напяливающих имидж пастуха, является проблемой наивненького лабуха.
Иными словами: тебя должны вызвать и чётко рассказать, что то, чем ты занимаешься, составляет государственную или служебную тайну, и на какие жертвы ты пойдёшь, если подпишешь бумажку о неразглашении.
А также о том, что ты будешь иметь преференции в виде, например, защиты государства от того-то и того-то.
Всё остальное является пустым набором звуков.
Поэтому ты смело можешь заявлять, что ты шпион Зимбабве, что у тебя генеральское звание, - эти слова никакой смысловой нагрузки не несут.
А если для кого-то несут, то этот человек однозначно нездоров.

Deleted
()
Ответ на: комментарий от fluorite

Внутри класса — наследника QObject? Лол.

Да, есть такая штука, как рефакторинг, и при переносе кода в не-наследник QObject придется втыкать явно. И имя функции connect не такое уж редкое, есть вероятность нарваться на коллизию. Потому даже в приведенной тобой ссылке указано явно. Так что лол - это ты со своим братом-акробатом брутфорсом, в нормальные люди сразу пишут код, минимально подверженный ошибкам.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MuZHiK-2

Ну тебе и this придётся менять. Если твой блокнот не позволяет с лёгкостью манипулировать такими незначительными изменениями — выкинь его на помойку.

fluorite ★★★★★
()
Последнее исправление: fluorite (всего исправлений: 1)
Ответ на: комментарий от MuZHiK-2

Будут пихать тебе форму - отказываешься и валишь. Не проблема.

Утраиваю.

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

Проходили.

Deleted
()
Ответ на: комментарий от fluorite

Ну тебе и this придётся менять. Если твой блокнот не позволяет с лёгкостью манипулировать такими незначительными изменениями — выкинь его на помойку.

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

MuZHiK-2 ★★★★
()
Ответ на: комментарий от fluorite

Я тебе и говорю, this надо будет поменять на что-то, тупо скопипастить всё равно не получится.

Нажеюсь, тебе не платят больше 60К.

У меня в классе (унаследованном от QObject) есть два приватных объекта obj1 и obj2. Я их соединяю через connect. Мне вообще this не нужен. Если я из текущего класса переношу функционал этих двух объектов (их имена сохраняются, так как копипаста) в класс, который не QObject, то в твоем случае я поимею проблему компиляции, в моем случае - все будет работать.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MuZHiK-2

Зря надеешься, я-то нормальный разработчик и знаю, где надо стелить соломку, а где нет. Часто такие рефакторинги копипастом проводишь?

fluorite ★★★★★
()
Ответ на: комментарий от fluorite

Зря надеешься, я-то нормальный разработчик и знаю, где надо стелить соломку, а где нет. Часто такие рефакторинги копипастом проводишь?

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

Когда ты был еще маленьким и бегал за мамкой, люди уже набили шишек на кривом коде, поэтому если ты откроешь Ada 95 Quality and Style Guide, то найдешь там следующее:

The statement that «it can never happen» is not an acceptable programming approach. You must assume it can happen and be in control when it does. You should provide defensive code routines for the «cannot get here» conditions.

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

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MuZHiK-2

Батя, защитное программирование — оно о контрактах, а не о рефакторинге копипастом. Я понимаю, что у тебя в 1995-ом не было инструментов получше, чем текстовый редактор и кривой компилятор. У нас в 2017-ом разработка — это процесс, включающий контроль версий, ревью, ci и тесты. Код читается чаще, чем пишется, и засорять его ненужными символами ради того, чтобы потенциально было можно скопировать строчки куда-то ещё, не нужно. Рефакторинг же делается с помощью нормальных инструментов, понимающих семантику кода, погугли хоть clang-rename и прочие плюшки 21-го века.

За адагайд спасибо, читаю.

fluorite ★★★★★
()
Ответ на: комментарий от Deleted

В системе ВПК не всякий невыездной.

Но стать им может каждый. Простые российские милиционеры не дадут соврать.

Более того, вот эти всякие вторые формы, обоюдные договорённости и прочее, это всё хорошо и правильно, но всё это разбивается о суровое военно-российское раздолбайство. Ты совершенно буднично и внезапно можешь оказаться где-то, и увидеть что-то, к чему тебя не должны были подпускать и на пару километров без соответствующей формы допуска. А дальше будет только один вопрос, прокатит или нет. И если нет, то всё подпишешь и спасибо скажешь.

WARNING ★★★★
()
Ответ на: комментарий от Deleted

В районе 20 - это может быть и 27 в районе метро Международная.

Так что подумать действительно стоит.

Deleted
()
Ответ на: комментарий от WARNING

Но стать им может каждый.

Не каждый. Допуск каждому не дадут.

Deleted
()
Ответ на: комментарий от Deleted

Да недавно ещё тётя снимала.

1-комнатная квартира 27к в месяц примерно. 15 минут от конечной станции фиолетовой ветки (юго-восток города, хотя точнее даже юг, наверно).

Фактически ползарплаты от данной в посте на съём квартиры. Ну... Невесело так то.

Deleted
()
Последнее исправление: merhalak (всего исправлений: 2)
Ответ на: комментарий от Deleted

Я двушку за 29к снимаю, в районе кораблестроителей.

wolph ★★
()
Ответ на: комментарий от fluorite

Дело не в сложности и инструментах рефакторинга. Дело в принципе. Если допускаешь для себя шлак в одном случае, сделаешь это и в другом, более важном. Это просто зеркало твоих принципов.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от WARNING

Дурачок что ли? Чтобы получить доступ к чему-то, тебя сперва спросят о бумажке на допуск, более того в командировочном отметку поставят, если по нормальному. Иначе допускаюшему потом все яйца выкрутят. Ну и на режимный объект без справки тебя не отправят. Так что не пори чушь.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MuZHiK-2

тебя сперва спросят о бумажке на допуск, более того в командировочном отметку поставят
на режимный объект без справки тебя не отправят

Смеялся и утирал слезы.

WARNING ★★★★
()
Ответ на: комментарий от Deleted

Мдя, дороговато. Из 60 килорублей половину на поднаём жилья - это слишком. Смысла нет. А то б понаехал.

Собсна, цены такие счас кругом, 50% от среднебольничной.

Deleted
()
Ответ на: комментарий от MuZHiK-2

Чувак просто не в курсе.

Либо его развели как лоха. Что тоже бывает, когда какому-нибудь подлецу или сучечке охота поиграться в рыцаря плаща и кинжала.

Deleted
()
Ответ на: комментарий от WARNING

Смеялся и утирал слезы.

Дурачком быть всегда смешно, ага. Сперва поработай на ВПК, а потом будем вместе над тобой смеяться.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от shkolnick-kun

А можешь так же меня обосрать? Интересно же!

Могу, конечно. Последний раз бесплатно.

Во-первых, структура проекта какой-то шлак. Зачем простыня новостей на главной? Для этого есть отдельный файл. Почему нет прямой ссылки, как твое барахло собирать? Ну и да, у тебя там есть хоть какая-то система сборки?

Во-вторых, русский doxygen в комментах - это ад. Никому в мире не нужна твоя сраная кириллица. Для 10 языков типа тоже будешь эту лабуду ваять? Если надо на 10 языках, то сделай отдельные файлы с доками и генери по ним. Зачем это, для генерации документации при сдаче ВПК?

В-третьих, так делать нельзя:

#ifndef _MUTEX_H_
Читай раздел 7.1.3 стандарта С. Дальше по коду у тебя много таких нарушений.

В-четвертых, что это:

#endif // _MUTEX_H_
Так ты все-таки на С или на С++ пишешь? Определись уже.

В-пятых, объясни, зачем это:

typedef struct _mutex_t mutex_t;
struct _mutex_t
{
    bgrt_sync_t wait;
};
Что это делает в заголовочнике? А если содержимое структуры поменяется - то все, пересборочка? Держать открытыми структуры, которые пользователь не должен видеть - говнокод.

В-шестых, в заголовочниках я не увидел extern «C» для С++. Что, я не могу С код использовать в компиляторе С++? Или это у тебя никакая не библиотека?

В-седьмых, возьмем для примера функцию _bgrt_sync_wait. Что будет, если в качестве параметра proc я туда NULL передам? Сдохнет ядро? Есть подозрения, что не единичный случай.

В-восьмых, у тебя там есть четкое разделение на public и internal API? Почему internal постоянно светится в открытом для пользователя? Internal на то так и называется, что обычно в отдельных файлах сидит, потому как его реализация может постоянно меняться.

В целом неплохо, но не прослеживается четкой структуры: что для пользователя, что только для ведра. Отсюда могут вылезать другие проблемы.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MuZHiK-2

Во-первых, структура проекта какой-то шлак.

Структура складывалась эволюционным путем, мне так удобно писать и поддерживать это все одному.

И да, можно пример, где не шлак?

Зачем простыня новостей на главной? Для этого есть отдельный файл.

Чтобы модераторам было проще проверить новость об очередном релизе. Надо подумать над выносом.

Почему нет прямой ссылки, как твое барахло собирать?
Ну и да, у тебя там есть хоть какая-то система сборки?

Это библиотека для микроконтроллеров, которую надо добавлять в проект в виде исходников. Каждый собирает свой проект так, как ему надо. Единого решения тут быть не может.

Во-вторых, русский doxygen в комментах - это ад.

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

Читай раздел 7.1.3 стандарта С. Дальше по коду у тебя много таких нарушений.

Спасибо, не читал эту часть стандарта. Делал по примерам других проектов (например, chibios/RT, OSA и прочих фримодбасов). Судя по всему, её много кто не читал :)))

Так ты все-таки на С или на С++ пишешь? Определись уже.

/*MUTEX_H*/

Так лучше?

А если содержимое структуры поменяется - то все, пересборочка?

Я не использую управление памятью (malloc/free) в ядре (~религия~ отраслевые стандарты не велят), соответственно, не могу использовать сокрытие структуры данных и opaque pointers.

В-шестых, в заголовочниках я не увидел extern «C» для С++.

Это уже из религиозных соображений :)

Что будет, если в качестве параметра proc я туда NULL передам? Сдохнет ядро?

Сдохнет. Как и в случае, если передать любой другой невалидный указатель. Но всё равно спасибо!

не прослеживается четкой структуры: что для пользователя, что только для ведра. Отсюда могут вылезать другие проблемы.

Это «модельный» проект, который можно использовать в реальных проектах. На нем я пробую приемы, которые потом использую в других местах.

Спасибо за отзыв - есть над чем подумать.

shkolnick-kun ★★★★★
()
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Ответ на: комментарий от shkolnick-kun

Сдохнет. Как и в случае, если передать любой другой невалидный указатель.

Но проверку лучше все же добавить.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от shkolnick-kun

И да, можно пример, где не шлак?

Ну посмотри более-менее известные проекты в плане всяких системных либ. У тебя там все дерьмище свалено в кучу. Зачем doxygen документация в проекте? Кому надо - сгенерит. Для ленивых на guthub есть github pages. Исходники прямо в корне валяются - заведи одну папку типа src и свали все туда.

Чтобы модераторам было проще проверить новость об очередном релизе. Надо подумать над выносом.

Специально для этого есть файл NEWS. Или CHANGES. Или Changelog. Все остальное - велосипед и моветон.

Это библиотека для микроконтроллеров, которую надо добавлять в проект в виде исходников. Каждый собирает свой проект так, как ему надо. Единого решения тут быть не может.

Ну так сделай хоть какой-то шаблонный проект, например сборку с тупой заглушкой - чтобы можно было просто собрать и увидеть, что оно хотя бы компилится. Кто захочет тратить свое время без быстрой оценки компилируемости кода?

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

Вынеси в отдельные файлы для doxygen.

/*MUTEX_H*/
Так лучше?

Так правильнее.

Сдохнет. Как и в случае, если передать любой другой невалидный указатель. Но всё равно спасибо!

Тогда зачем в той же функции проверка на NULL первого параметра делается? Ты либо все проверяй, либо ничего.

Это «модельный» проект, который можно использовать в реальных проектах. На нем я пробую приемы, которые потом использую в других местах.

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

MuZHiK-2 ★★★★
()
Ответ на: комментарий от Deleted

Я вообще не понимаю как можно работать с C++ менее, чем за 300К рублей, если он тебя кормит. Это ж 150К по старому курсу, уверен, что в дефолт сити многие и на Javascript примерно столько поднимают, не особо напрягая извилины в каких-нить тинькоф банках.

menangen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.