Pull to refresh
313
0
Николай Шлей@CodeRush

Firmware Security Engineer

Send message
Ну мы тут сейчас о синдороме самозванца, а если никто не следит за процессами, и одна задача — заработать денег, успев до кризиса, то ему, мне кажется, негде возникать. Ты и так сам себе менеджер, сам себе постановщик задач, сам себе разработчик и сам себе продажник, куда тут до мыслей про то, что ты ничего не понимаешь и отстал от технологий…
Как мне работается в Эппле — хорошо, пишу код, допускаю ошибки, исправляю их, учусь. ВУЗ заканчивал, кстати, провинциальный (РИИ, филлиал АлтГТУ в г. Рубцовске) с теми же стариками, прологом, паскалем и фокспро. В окружении теперь очень много очень сильных специалистов, поэтому синдром самозванца тоже иногда «подъедает» и меня, но работы столько, что заниматься рефлексией некогда — «время идет, срок уже близенько».
«Если отладка — это процесс удаления багов из кода, то программирование должно быть процессом их туда добавления». Понятно, что всплывет, и может быть даже принесет какие-то убытки, только вот это все не важно, если задача все-таки решена. Ошибки — нормальный компонент рабочего процесса, и чем раньше их получается обнаружить и признать, тем дешевле они обходятся. Да и в прикладном (а уж тем более веб-) программировании допустить какую-то непоправимую ошибку все же несколько сложнее, чем в других областях.
Полезный совет. Нет, серьезно, самым действенным способом справиться с синдромом самозванца является, на мой взгляд, написание кода и решение тех задач, которые перед вами ставят. Справляешься с задачами в срок и с нужным качеством — уже красавчик и молодец, а никакой не самозванец, что бы ты сам про себя не думал.
Автор живет в мире космических единорогов, где юникод поддерживается всеми устройствами и вводится в любые поля прямо из воображения.
На самом деле, ввести что-то, кроме 7-битного ASCII до сих пор очень сложно на абсолютном большинстве сайтов, устройств и всего остального, и добавлять с свои пароли юникод означает практически гарантированно остаться без возможности входа на любой хоть немного нестандартной/несовременной системе.
На скриншоте модель из этой статьи, ссылка на прошивку.
И опять в прошивке WPBT, Computrace и BootGuard:


Один раз вам устроили скандал, второй — ваши говорящие головы поизвинялись, а по сути ничего не изменилось и скорее всего не изменится. Прошу прощения, но идите к черту со своими бэкдорами, которые нельзя удалить без замены SoC, доверия к вам и вашим системам больше нет.
Отличная статья, спасибо большое за то, что поделились знаниями с широкой аудиторией.
Считаю, что заниматься нужно тем, что вам интересно, а не выбирать ЯП по количеству вакансий и уровню хайпа. Есть много интересной работы и на чистом С, и на Эрланге, и на Хаскеле тоже, и она там, зачастую, значительно лучше оплачивается даже со старта, чем фронтэнд на JS.
А первую работу можно сделать себе самому: начните OpenSource-проект или поучаствуйте в существующем, попробуйте себя в GSoC во время обучения, попытайтесь решить какую-то задачу в той области, которая вам интересна, а потом автоматизировать это решение — так вы и знания свои углубите и расширите, и сообществу поможете.
Сообщество, кстати, это очень важно, старайтесь не программировать «в стол», а писать статьи, общаться на тематических форумах и в списках рассылки, отвечать на вопросы новичков там же и на SO, в общем, не замыкайтесь в себе в надежде через N месяцев выдать на гора идеальный продукт, решающий все проблемы.
Слишком подробнее не могу, тем более на данной модели (стараюсь не покупать технику Lenovo как заведомо забэкдоренную), но можно понять общую схему работы из этой и вот этой статей.
Прошу прощения, взял не тот файл, от Y910 AIO. Впрочем, в прошивке ноутбука Y910 ситуация примерно такая же, плюс сильное подозрение вызывает PEI-модуль с интересным именем SecureBackDoorPeim.
В статье не упомянут предустановленный и сопротивляющийся удалению бэкдор Computrace, который из прошивки этого ноута выдрать хоть и можно (ибо Intel BootGuard на нем отключен), но весьма непросто, и переустановка ОС начисто от него не спасает, т.к. для автоматизированной повторной установки бэкдора используется ACPI-таблица WPBT.
Скандал прошлогодний Lenovo ничему не научил, видимо.
И пусть ругается, на скорость это не влияет, так что можно смело игнорировать.
Выкинуть то можно, только в этом случае видеокарта совсем перестанет работать, скорее всего. Если опции отключения CSM нет, значит прошивка, по мнению производителя не готова работать в UEFI-only режиме. Т.е. она в нем либо не тестировалась совсем, либо не может работать по разным причинам (рантайм-сервисы сломали и не смогли починить, например). Лучшее, что тут можно сделать — заменить плату на более новую либо пользоваться легаси-режимом дальше (ОС все равно потом переинициализирует как нужно).
Пока вы там сверху придумываете стартапы и накидываете бэкэнд на Руби, разработчики на С разрабатывают вашу пилу и решают проблему с медведями. Это тоже дело, и оно должно быть сделано прежде, чем на вашей системе вообще можно будет запустить Руби и соединить ее с интернетом, в любом году.
Непонятно, в чем преимущество C++ в тех нишах, где позиции С по прежнему сильны: embedded, firmware, kernel core, вот это все. Там не нужны исключения, полиморфизм и RTTI, там нет стандартной библиотеки, там мало толку от шаблонов, там часто вообще нет кучи, т.е. единственный доступный operator new — размещающий, и т.п.
Для «нормального» C++ нужен гораздо более жирный рантайм, а специалистов, умеющих писать на «обрезаном» С++ — намного меньше, чем специалистов по С, т.к. такому «ограниченному» использованию С++ почти нигде не обучают.
Для системного программирования у C маловато альтернатив, зато имеется огромный багаж существующего кода. Непонятно, на что его можно заменить сейчас там, где указатели реальны, а из инструментов отладки только UART и доброе слово?
На ум приходят Ada и Rust, но первый язык так и набрал популярности (хотя он во многих аспектах намного лучше подходит для системного программирования), а второй пока еще довольно молод, но я искренне за него болею.
Можно, конечно, попробовать «причесать» уже имеющийся С (Cyclone, Checked C, etc.) или ограничиться небольшим «безопасным» подмножеством языка (JPL Coding Rules, MISRA C, etc.), но это все мало кто может себе позволить, т.к. программировать с такими ограничениями умеют меньшее количество специалистов, и сама разработка в итоге становится дороже (иногда существенно) и медленее (иногда на порядок).
Именно что не понимаю, почитал стандарт, разобрался.
Я что-то не понимаю, наверное, но с учетом ограничений на использование break и continue то же самое делается без лямд и C++ конструкцией do {… } while(0);
Отключали эту автоматику и отключать будем, пока такую возможность в очередном обновлении апологеты эмозди не отобрали.
Текстовыми — пользуюсь. Графическими — упаси рандом.

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Инженер встраиваемых систем, Системный инженер
Ведущий