Как стать автором
Обновить
19
0

Пользователь

Отправить сообщение
Мы пережили первую половину этого года и даже самонадеянно начали продавать в киоске мерч «Я пережил 2020 год». Подводим итоги — в деньгах, конечно. Хабр Карьера проанализировала почти 8000 зарплат айтишников за первое полугодие. Смотрите, что получилось.


Медианная зарплата среди всех айтишников сейчас 108 000 ₽. В Москве ребята зарабатывают 150 000 ₽, в Петербурге чуть меньше — 120 000 ₽, в остальных регионах — 80 000 ₽. По сравнению со вторым полугодием 2019 года, зарплаты выросли на 8%, в основном, за счет роста зарплат москвичей.

Сколько-сколько?
Всего голосов 68: ↑68 и ↓0+68
Комментарии216

Встраиваем своё устройство «Умного дома» в экосистему SmartThings

Время на прочтение14 мин
Количество просмотров42K
Платформы «Умного дома» позволяют интегрировать устройства и создавать новые сценарии их взаимодействия. Известен эффект платформ: пользователи скорее выберут ту, с которой уже совместимы имеющиеся у них устройства, нежели перейдут на какую-либо новую. Поэтому для разработчиков новых гениальных девайсов может оказаться выгоднее встраиваться в уже готовую платформу, сосредоточив внимание на «железном» продукте, нежели разрабатывать свои собственные «велосипеды» в виде еще одних облачных экосистем и личных кабинетов.

Рассмотрим, как встроить свое собственное устройство с платформой «Умного дома» Samsung SmartThings. Мы реализуем вариант прямого (Direct) подключения для управления устройством «Умного дома» на примере кнопки-выключателя и трехцветной лампочки. 


Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии4

Делаем собственный имплант для электроники

Время на прочтение9 мин
Количество просмотров17K


История от Bloomberg о том, что на материнских платах якобы были установлены некие импланты [Китайцы использовали микрочип, чтобы контролировать американские компьютеры], не прошла незамеченной. После неё многие люди делились идеями по поводу возможности создания подобных имплантов (их предполагаемого размера, возможностей или способа их обнаружения).

Через несколько дней журнал Bloomberg выпустил статью с дополнительными доказательствами. Вот что конкретно подогрело наш интерес:
Легальный сервер отправлял сообщения одним способом, имплант – другим, но казалось, что весь трафик происходит от одного доверенного сервера.

Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии2

Корпоративный синдром

Время на прочтение13 мин
Количество просмотров72K
— Идея с айфонами — полное говно. — начал встречу Сергей.

— Извините, Сергей, я не ослышалась? — недобро прищурившись, спросила Светлана Владимировна.

— Не ослышались, Светлана Владимировна. — кивнул Сергей. — Айфоны придется отменить, иначе этот бедлам дебильный будет не остановить.

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

— И это говорит человек, больше всех радеющий за развитие? — с ехидной улыбкой спросила Марина, директор по качеству?

— Ты бы молчала лучше… — вздохнул Сергей.

— А ты мне рот не затыкай! — улыбка с лица Марины исчезла. — Сам предлагаешь эти айфоны, сам потом их говном называешь. Как баба капризная.

— Идея не Сергея, а моя. — твердо проговорила Светлана Владимировна. — Сергей, я жду объяснений. И выбирайте, пожалуйста, выражения, вы не с программистами разговариваете. Да и с программистами так разговаривать не стоит.
Читать дальше →
Всего голосов 226: ↑194 и ↓32+162
Комментарии254

Реализация fork() без MMU

Время на прочтение6 мин
Количество просмотров7.8K
Здравствуй, читатель! Пару лет назад в статье про vfork() я обещал рассказать про реализацию fork() для систем без MMU, но руки до этого дошли только сейчас :)

В этой статье я расскажу, как мы реализовали такой странный fork(). Проверять работоспособность буду на сторонней программе — dash — интерпретаторе, который использует fork() для запуска приложений.

Кому интересно, прошу под кат.
Читать дальше →
Всего голосов 43: ↑42 и ↓1+41
Комментарии1

Почему программисты не получают работу: четыре страшилки

Время на прочтение7 мин
Количество просмотров67K
tl;dr; В рекрутинге больше бардака, чем вы думаете. Расскажу четыре истории, где отличным инженерам отказали по причинам, абсолютно не связанным с их профессиональными знаниями или соответствием корпоративной культуре.

Когда люди не получают предложения о работе, то часто думают, что это их вина: «Меня отвергли три компании подряд, наверное, я никудышный инженер». Поработав некоторое время в ИТ-рекрутинге, могу вас заверить, что случайные факторы и шум (ложноотрицательные результаты) тоже играют важную роль. Часто отказы действительно вызваны случайными вещами и иррациональными причинами.

Страшилка № 1: кандидата отвергли из-за фреймворка


На позицию фронтенд-разработчика в агентстве я передал инженера, который участвовал в разработке ECMAScript и сделал значительный вклад в некоторые другие проекты open source. Мне понадобилось несколько недель, чтобы найти этого человека, и несколько часов для его правильной оценки, включая видеоинтервью (мы любим такое делать на coderfit.com). Его кандидатуру отверг программист из агентства после 10-минутного просмотра примеров кода. С ним даже не пообщались лично, а просто прислали «консерву» — шаблонное письмо по электронной почте:

«[…]Хотя ваше резюме и сопроводительное письмо очень конкурентоспособны, наши специалисты по найму рассмотрели вашу заявку и не выбрали её для дальнейшего рассмотрения. […]»
Читать дальше →
Всего голосов 107: ↑100 и ↓7+93
Комментарии694

Как руководить людьми, у которых больше технического опыта, чем у вас

Время на прочтение4 мин
Количество просмотров28K
imageJulie Zhuo — вице-президент Facebook по продуктовому дизайну.

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

image
Усэйн Болт — ямайский легкоатлет, специализировался в беге на короткие дистанции, восьмикратный олимпийский чемпион и 11-кратный чемпион мира.

Прошло всего несколько лет после выпуска из колледжа, когда я стала менеджером по дизайну. Из-за того, что в колледже я изучала информатику, а затем стала работать инженером в компании Facebook, в основном в работе я изучала дизайн. В дни стартапов в компании, традиция быстрого принятия решений подразумевала, что я редко занималась углублением своих знаний и оттачиванием мастерства. Часто казалось, что я самозванка среди настоящих дизайнеров.

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

Однажды я поделилась этим переживанием со своим мужем, когда мы смотрели Олимпийские Игры. Он сказал: «Неужели ты думаешь, что тренер Усэйна Болта бегает быстрее него?». Раньше я не размышляла о том, что Глен Миллс — главный тренер сборной Ямайки по бегу, который ответственен за самых успешных спринтеров — не то, чтобы не отличается высокой скоростью, но и вообще не является бегуном.
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии20

Как в «Додо Пицца» потеряли 8 миллионов за один час из-за технической ошибки, а потом вернули

Время на прочтение9 мин
Количество просмотров55K


Историю нашумевшей технической ошибки «Додо Пиццы», партнера Яндекс.Кассы, нам рассказал системный архитектор компании Андрей Моревский — сразу передаю микрофон автору.


Еду я в «Сапсане» на открытие первой в Санкт-Петербурге пиццерии «Додо», как вдруг получаю оповещение о множественных отменах оплаченных заказов. И не просто множественных — наша система за час умудрилась откатить якобы оплаченные заказы на 8 миллионов рублей!


Сейчас эта история вызывает только улыбку, но в то утро было совсем не смешно. Поэтому хочу поделиться некоторыми техническими подробностями инцидента и сделанными выводами, а заодно немного рассказать про систему обработки заказов «Додо Пиццы».

Улыбнемся вместе
Всего голосов 62: ↑56 и ↓6+50
Комментарии72

Linux, отложенная загрузка драйверов и неработающие прерывания

Время на прочтение9 мин
Количество просмотров29K
Сегодня я расскажу о неожиданных проблемах, которые возникли при подключении матричной клавиатуры к ARM-борде под управлением Linux в приборе Беркут-ETN (ETN — новая аппаратная ревизия Беркут-ET). А конкретно о том, почему драйвер adp5589 не захотел получать прерывания и как мы смогли заставить его это делать.

Кому интересно — добро пожаловать под кат.

Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии6

Как я, в итоге, написал новую RTOS, протестированную и стабильную

Время на прочтение40 мин
Количество просмотров83K
Я работаю со встраиваемыми системами в течение нескольких лет: наша компания разрабатывает и производит бортовые компьютеры для автомобилей, зарядные устройства, и т.д.

image


Процессоры, используемые в наших продуктах — это, в основном, 16- и 32-битные микроконтроллеры Microchip, имеющие RAM от 8 до 32 кБ, и ROM от 128 до 512 кБ, без MMU. Иногда, для самых простых устройств, используются еще более скромные 8-битные чипы.

Очевидно, что у нас нет (разумных) шансов использовать ядро Linux. Так что нам нужна какая-нибудь RTOS (Real-Time Operating System). Находятся даже люди, которые не используют никаких ОС в микроконтроллерах, но я не считаю это хорошей практикой: если железо позволяет мне использовать ОС, я ее использую.

Несколько лет назад, когда мы переходили с 8-битников на более мощные 16-битные микроконтроллеры, мои коллеги, которые были гораздо более опытными, чем я, рекомендовали вытесняющюю RTOS TNKernel. Так что это — та ОС, которую я использовал в разных проектах в течение пары лет.

Не то, чтобы я был очень доволен ею: например, в ней нет таймеров. И она не позволяет потоку ждать сообщения сразу из нескольких очередей. И в ней нет программного контроля переполнения стека (это действительно напрягало). Но она работала, так что я продолжал ее использовать.
Читать дальше →
Всего голосов 162: ↑161 и ↓1+160
Комментарии61

Железячники vs. Программисты

Время на прочтение9 мин
Количество просмотров45K
imageВсем привет!

Я — один из основателей открытого проекта Embox, и по совместительству являюсь генеральным директором компании ООО “Ембокс”. Как не трудно догадаться, её основная цель — это оказание коммерческих услуг на базе нашего проекта.

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

Эта статья первая в нашем блоге, и мне кажется, что будет уместно рассказать не столько о технических решениях и находках, которые мы применяем в нашем проекте, это, безусловно, будет в последующих статьях, а сделать своего рода статью-приветствие. И поскольку Embox — операционная система для встраиваемых решений, речь в статье пойдет прежде всего о сфере embedded systems. По сути дела, в статье я хочу поделиться своим представлением о возможном направлении развития встраиваемого ПО, конечно, подкреплять всё это я буду реальными ситуациями, с которыми мы сталкивались в процессе работы над проектом. Поэтому те, кто интересуется встраиваемыми системами и кому не лень прочитать пару страниц жалоб на трудное детство рассуждений, прошу под кат.
Читать дальше →
Всего голосов 54: ↑47 и ↓7+40
Комментарии65

Разбираемся в С, изучая ассемблер

Время на прочтение11 мин
Количество просмотров89K
Перевод статьи Дэвида Альберта — Understanding C by learning assembly.

В прошлый раз Аллан О’Доннелл рассказывал о том, как изучать С используя GDB. Сегодня же я хочу показать, как использование GDB может помочь в понимании ассемблера.

Уровни абстракции — отличные инструменты для создания вещей, но иногда они могут стать преградой на пути обучения. Цель этого поста — убедить вас, что для твердого понимания C нужно также хорошо понимать ассемблерный код, который генерирует компилятор. Я сделаю это на примере дизассемблирования и разбора простой программы на С с помощью GDB, а затем мы используем GDB и приобретенные знания ассемблера для изучения того, как устроены статические локальные переменные в С.
Читать дальше →
Всего голосов 76: ↑70 и ↓6+64
Комментарии31

Что такое Pimpl по версии Qt, и с чем его едят!

Время на прочтение12 мин
Количество просмотров39K

Вступление.



Часто в документации от Qt встречается термин Pimpl. Кроме того, те кто хоть немного копался в исходном коде Qt часто видел такие макросы как: Q_DECLARE_PRIVATE, Q_D. А также встречал так называемые приватные заголовочные файлы, название которых заканчивается на "_p.h".
В этой статье я попробую приоткрыть ширму за всей это структурой.

Pimpl, что это?


Pimpl — Pointer to private implementation. Это одно из названий паттерна программирования. Еще его называют чеширским котом — «Cheshire Cat» (это название мне больше нравится). В чем суть этого паттерна? Основная идея этого паттерна — это вынести все приватные члены класса и, в не которых случаях, функционала в приватный класс.
Отсюда название «чеширский кот» — видно только улыбку, а все остальное остается невидимым, но оно несомненно есть :-) Кто не помнит этого замечательного кота, может обратится к первоисточнику, к книге Льюиса Кэрролла «Алиса в стране чудес». Очень интересная книга, особенно если читать в оригинале.
Что это дает?
Читать дальше →
Всего голосов 48: ↑46 и ↓2+44
Комментарии70

Приватные слоты в паттерне Pimpl от Qt

Время на прочтение10 мин
Количество просмотров7.4K

Вступление.


Недавно я писал по поводу реализации паттерна Pimpl в библиотеке Qt и призывал людей следовать такому подходу при разработке их собственных бибиотек. Теперь я хочу поговорить о таком понятии, как приватные слоты и тем самым продолжить эту тему. Заключительной статьей на эту тему будет реализация механизма Implicit Sharing и shared d-pointer.

Что это и зачем это нужно.


Приватные слоты — это механизм дополняющий функционал d-указателей. Он позволяет реализовать слоты для приватного класса, даже если он не является наследником от QObject (обычно он им и не является), но для этого публичный класс должен быть наследником от QObject. Тоесть по факту создается некий приватный слот в публичном классе и он непосредственно дергает нужный метод приватного класса.
Зачем это нужно? Ну рассмотрим на примере. Есть класс QAbstractScrollArea. Он просто отображает некий виджет (viewport) и обеспечивает прокрутку. Прокрутка обеспечивается с помощью двух экземпляров класса QScrollBar. Сами эти скролбары он хранит в приватном классе. Теперь проблемма: как подключить сигнал от скроллбара об изменение его позиции с классом QAbstractScrollAreaPrivate, ведь он не является QObject'ом? Сделать его наследником от QObject — лучше не делайте это :-). Можно сделать слот в публичном классе и повесить на него, то в таком случае это не очень красиво — так как наружу выходят слоты от внутренней реализации. Вот ту Qt-шниками был придуман достаточно разумный и элегантный подход — приватные слоты.

Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии17

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Зарегистрирован
Активность