Рубрика «Программирование» - 43

Как получить root-доступ к Tesla? Как разобрать компьютер? Как подключиться? Чем отличаются компьютеры Тесла. Что делать если экран черный, а машина едет? Эти и многие другие вопросы мне задают регулярно.

На текущий момент прошлую статью о ремонте Тесла прочитали более 56.000 раз. Я получаю огромное количество вопросов, постараюсь ответить на самые распространенные из них.

Читать полностью »
Добрый день! Меня зовут Андрей Духвалов и я руковожу департаментом перспективных технологий aka Future Tech в «Лаборатории Касперского». Сегодня, 11 ноября 2022 года, исполняется ровно 20 лет идее, которая в итоге усилиями большой команды разработчиков превратилась в нашу операционную систему. На примере KasperskyOS интересно посмотреть, как достаточно абстрактная концепция воплощается в реальность в доверенном маршрутизируемом коммутаторе, кибериммунных шлюзах и еще в куче проектов. И это несмотря на все препятствия, главным из которых был общий скепсис «Зачем нам еще одна операционка?». Причем скептиков хватало не только среди сторонних наблюдателей — внутри компании тоже далеко не все верили в успех! И важнее всего было убедить именно последних.

KasperskyOS: от абстрактной идеи к реальной системе - 1
Читать полностью »

Система типов — лучший друг программиста - 1

Я устал от одержимости примитивами и от чрезмерного использования примитивных типов для моделирования функциональной области.

Значение в string не лучший тип для записи адреса электронной почты или страны проживания пользователя. Эти значения заслуживают гораздо более богатых и специализированных типов. Мне нужно, чтобы существовал тип данных EmailAddress, который не может быть null. Мне нужна единая точка входа для создания нового объекта этого типа. Он должен валидироваться и нормализироваться перед возвратом нового значения. Мне нужно, чтобы этот тип данных имел полезные методы наподобие .Domain() или .NonAliasValue(), которые бы возвращали для введённого foo+bar@gmail.com значения gmail.com и foo@gmail.com. Эта полезная функциональность должна быть встроена в эти типы. Это обеспечивает безопасность, помогает предотвращать баги и существенно повышает удобство поддержки.
Читать полностью »

Команда Rust рада сообщить о новой версии языка — 1.65.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.

Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.65.0 вам достаточно выполнить команду:

rustup update stable

Если у вас ещё нет rustup, то можете установить его со страницы на нашем веб-сайте, а также ознакомиться с подробным описанием выпуска 1.65.0 на GitHub.

Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta) или nightly (rustup default nightly) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Читать полностью »

Самое очевидное объяснение: индекс — это смещение относительно начала массива. Так элементы массива легче адресовать в памяти.

Проверим это на C.

#include <stdio.h>
int main()
{
    int data[3] = {1, 2, 3};
    int i = 0;
    printf("Array address: %pn", data);
    do {
        printf("Array[%u] = %pn", i, (void *)(&data[i]));
        i++;
    } while(i < 3);
}

Получим результат:

Array address: 0x7ffd7c514a6c
Array[0] = 0x7ffd7c514a6c
Array[1] = 0x7ffd7c514a70
Array[2] = 0x7ffd7c514a74

Как первый (нулевой) элемент, так и сам массив находятся по одному и тому же адресу, поскольку 0-й элемент удалён на 0 элементов от начала. Эта связь между указателями и массивами в C настолько тесная, что их даже можно рассматривать вместе.

Однако это ответ на вопрос «зачем», а не «почему». Нумеровать массивы с нуля стали не сразу. Удивительно, но развитие такого простого вопроса не умещается в предложении или абзаце.
Читать полностью »

Около 10 лет назад у меня начались серьёзные проблемы в ментальной сфере, в том числе с памятью {впрочем, в этом есть и свои плюсы: например негативные эмоции [злость на кого-то, раздражение, обида] забываются так быстро, что практически полностью перестали меня беспокоить}. Я просто физически перестал понимать всякие сложные штуки вроде графических API или каких-то объёмных библиотек, а при выполнении рабочих задач столкнулся с такой проблемой что к концу прочтения текста какой-нибудь не самой короткой задачи я забывал начало этой задачи (так что мне приходилось перечитывать условие задачи много раз чтобы хоть как-то запомнить его).

Несмотря на то, что к этому моменту я уже закончил разработку графического движка для одного [впрочем не слишком коммерчески успешного] игрового проекта, на меня накатывала апатия и депрессия, и не удивительно — что толку быть разработчиком движка, код которого ты просто перестал понимать (а о возможностях его [графического движка] совершенствования и говорить нечего).
Читать полностью »

Да, это не ошибка: сегодня мы поговорим о самых что ни на есть экстремистских подходах к программированию.

Photo by Soraya Irving on Unsplash
Photo by Soraya Irving on Unsplash

«Если вы не практикуете Test Driven Development (TDD), то не можете считать себя профессиональным разработчиком».

«Парное программирование —  обязательное условие для серьезных разработчиков: это намного быстрее, чем одиночная разработка и асинхронная проверка кода»

Читать полностью »

Дисклеймер.

Статья написана исключительно в развлекательных целях.

Как все начиналось

Любой администратор любой информационной системе знает, что мест для автоматизации в его работе бесконечное множество. Какая огромная ниша для автоматизации прячется в задачах обработки логов, сбора статистики, реакции на события систем.

Читать полностью »

Всем привет. Я – бывший разработчик 1С. Я устал от 1С и его ограничений, свой "каминг-аут" я совершил в середине 2021 года.

Периодически меня мучают "фантомные боли", и я захожу на сайты 1С-ной тематики в надежде, что в очередном релизе платформы 1С (по сути, это стековая виртуальная машина, как, например, JVM) наконец-то "смогли". Да, но нет.

Взять хотя бы реализацию регулярных выражений в платформе – в других ЯП процессор регулярок представляет из себя отдельный класс, в котором определены методы для обработки строк. Видимо, 1С-программисты не достойны ничего, кроме трех куцых функций.

Читать полностью »

Я работал в одной международной, но небольшой ИТ-компании и нередко участвовал в подборе кандидатов: задавал несложные технические вопросы, «щупал» подходы кандидата, оценивал в том числе его мотивацию и опыт. Специфика компании была такова, что личность разработчика играла важную роль, а самим особенностям создания приложений мы обучали отдельно. Поэтому хорошие, крепкие джуны или младшие мидлы мне были гораздо более интереснее снобов «И чё, вы вот так работаете? А я вот в SpaceX космические корабли вот этими руками проектировал в ООО «Грандпрограмма» 10 лет переменные именами своих девушек называл». Но менее опытные кандидаты имели свою специфику.

Лишние кирпичики карьеры? - 1

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js