Pull to refresh
0
0
Александр Борисов @Alexhaos

User

Send message

35+ бесплатных ресурсов для начинающих разработчиков С++

Level of difficultyEasy
Reading time7 min
Views12K

Привет. Предположим, вы захотели начать изучать языĸ программирования C++ или, возможно, тех материалов, что уже изучили, вам недостаточно.

Я — Савва, программирую уже больше 7 лет, работаю менеджером команды наставников в Практикуме на курсе «Разработчик С++», а с недавнего времени — разработчиком в Positive Technologies. В этой статье мы с вместе с Практикумом собрали леĸции, ĸниги, курсы и всяĸое таĸое, чтобы шансов выстрелить себе в ногу самостоятельно было меньше :) По C++ существуют и другие подборĸи, но, ĸ удивлению, на Хабре их всего две.

Читать далее
Total votes 26: ↑26.5 and ↓-0.5+27
Comments17

Правило трех и пяти в C++: что это такое и зачем они нужны?

Level of difficultyEasy
Reading time5 min
Views21K

Привет, Хабр!

Сегодня я хочу поговорить о двух правилах С++: правиле трех и правиле пяти.

Правильное понимание этих правил способно уберечь код от утечек и неопределенных поведений.

Читать далее
Total votes 38: ↑28 and ↓10+18
Comments10

Итак, вы унаследовали старую кодовую базу на C++. Что дальше?

Level of difficultyMedium
Reading time21 min
Views15K

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

Теперь вы отвечаете за кодовую базу на C++. Она большая, сложная и своеобразная; достаточно слишком долго на неё посмотреть, как она начинает разваливаться разными интересными способами. Иными словами, это легаси.

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

И что делать теперь?

Не волнуйтесь, у меня такое случалось очень много раз и в разных компаниях (кто-то язвительный может спросить: а разве кодовые базы на C++ бывают какими-то другими?), выход есть, он не особо сложен и поможет вам действительно устранять баги, добавлять фичи, а то и когда-нибудь переписать её.

В этой статье я расскажу о том, что оказалось полезным для меня, и о том, чего стоит всячески избегать.
Читать дальше →
Total votes 71: ↑70 and ↓1+69
Comments26

Настройка CI/CD для самых маленьких разработчиков

Level of difficultyEasy
Reading time8 min
Views32K

Считается, что построение CI/CD - задача для DevOps. Глобально это действительно так, особенно если речь идет о первоначальной настройке. Но часто с докручиванием отдельных этапов процесса сталкиваются и разработчики. Умение поправить что-то незначительное своими силами позволяет не тратить время на поход к коллегам (и ожидание их реакции), т.е. в целом повышает комфорт работы и дает понимание, почему все происходит именно так.

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

Читать далее
Total votes 23: ↑21 and ↓2+19
Comments40

Краткий обзор развития лямбда-выражений в C++11, C++14, C++17 и C++20

Level of difficultyEasy
Reading time4 min
Views12K

Привет, Хабр!

Сегодня рассмотрим лямбда-выражения в C++ и их эволюцию с момента появления в стандарте C++11 и до последних обновлений в C++20.

Лямбда-выражения в C++ — это анонимные функции, которые позволяют писать инлайн-выражения прямо там, где они используются. С их помощью можно легко определять функции обратного вызова, передавать их в функции высшего порядка или использовать для инициализации функциональных объектов.

Читать далее
Total votes 27: ↑20 and ↓7+13
Comments201

150+ хакерских поисковых систем и инструментов

Reading time11 min
Views77K

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

Пост состоит из 8 объемных разделов:

1. метапоисковики и поисковые комбайны;

2. инструменты для работы с дорками;

3. поиск по электронной почте и логинам;

4. поиск по номерам телефонов;

5. поиск в сети TOR;

6. поиск по интернету вещей, IP, доменам и поддоменам;

7. поиск данных об уязвимостях и индикаторов компрометации;

8. поиск по исходному коду.

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

Читать далее
Total votes 64: ↑61 and ↓3+58
Comments6

Как работает протокол X11 на самом нижнем уровне

Level of difficultyMedium
Reading time13 min
Views36K

X11 это тот механизм на чем работает весь графический интерфейс Unix подобных ОС.


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


А протокол в своей сути прекрасен. Он лаконичен и почти совершенен.


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


А все книги и статьи по использованию X11 описывают это через библиотеки прокладки типа XLib и XCB, и даже, что хуже, GTK или Qt.


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


Как бы то ни было, если кому-то интересно как все работает на самом деле, пожалуйста под кат.

Читать дальше →
Total votes 201: ↑199 and ↓2+197
Comments182

Ламповый дисплей для компьютера. Часть 1 — обзор концепций и постановка задачи

Reading time10 min
Views14K
Всем привет! Мне с большим трудом удалось побороть лень и начать писать новый цикл статей, но на этот раз не о лазерах. Дело в том, что лазеры – не единственный мой интерес, значительное место в списке интересов у меня занимает ламповая техника в её разнообразных проявлениях, и совершенно особый фетиш – советская ламповая радиолокационная аппаратура. Мне давно хотелось отвлечься от лазеров и создать что-то такое, что, как бы это ни звучало банально, не имеет аналогов. Потому вспомнил одну старую идею, очень долго лежавшую в «долгом ящике». И речь в статье пойдет о нестандартных устройствах отображения визуальной информации.
image

Читать дальше →
Total votes 76: ↑73 and ↓3+70
Comments22

Обзор Чипа Внешней I2C Памяти AT24Cхх

Level of difficultyEasy
Reading time7 min
Views8.1K

AT24C02M5/TR это EEPROM на 256 байт с доступом по двухпроводному синхронному последовательному интерфейсу I2C.

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

Внешние чипы памяти особенно важны так как прошивку могут полностью стереть. В связи с этим хранить серийный номер на микроконтроллере внутри on-chip NOR-Flash самого микроконтроллера ненадежно.

Читать далее
Total votes 30: ↑19 and ↓11+8
Comments33

BadUSB: Эксперименты с Arduino и Flipper Zero

Level of difficultyEasy
Reading time9 min
Views7.9K

Часть 1. Arduino

Если верить Википедии, BadUSB — класс хакерских атак, основанный на уязвимости USB устройств. Благодаря отсутствию защиты от перепрошивки в некоторых USB‑устройствах, злоумышленник может видоизменить или полностью заменить оригинальную прошивку и заставить устройство имитировать любое другое устройство. BadUSB предназначен для доставки и исполнения вредоносного кода. При этом я бы хотел уточнить, что BadUSB — это атака против USB стека компьютера, который по умолчанию слепо доверяет любому устройству (в том числе и зловредному).

Впервые понятие BadUSB было введено в августе 2014 года, исследователями организации Security Research Labs, Карстеном Нолом и Джейкобом Леллом, которые выступили с докладом «BadUSB — On Accessories that Turn Evil» на конференции BlackHat USA 2014. Данной уязвимости подвержены все устройства с незащищенными USB контроллерами на борту. При этом для успешного проведения данной атаки не требуется наличия особого ПО на компьютере «жертвы», а так же она работает под любыми операционными системами, поддерживающими USB‑HID устройства.

BadUSB — это целое семей­ство атак на USB‑порт, при которых под­клю­чаемое устрой­ство выда­ет себя за дру­гой девайс, нап­ример:

Читать далее
Total votes 10: ↑9 and ↓1+8
Comments6

Как обеспечить безопасность корпоративных данных на macOS-устройствах?

Reading time9 min
Views2.3K

Для контроля действий на рабочих станциях в Solar Dozor применяется отдельный модуль — Dozor Endpoint Agent (агент), с помощью которого можно своевременно отследить и при необходимости заблокировать передачу данных. Этот модуль адаптирован и может работать под управлением разных операционных систем - компания-разработчик "Ростелеком-Солар" предлагает версии для Windows, Linux и macOS. На нашем портале уже приводились обзоры модуля Dozor Endpoint Agent для Linux и Windows. В этой статье речь пойдет о модуле Dozor Endpoint Agent для macOS, который разрабатывается с 2021 г. Он стал флагманом движения российского рынка DLP-систем к полнофункциональному мониторингу рабочих мест на базе устройств Apple и по сей день занимает лидирующую позицию на рынке.  

Читать далее
Total votes 16: ↑10 and ↓6+4
Comments5

Проверка целостности исполняемых файлов

Reading time9 min
Views5.3K

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

В деле контроля целостности нам помогут хэш-функции.

Читать далее
Total votes 8: ↑7 and ↓1+6
Comments22

Карманный ПК своими руками

Level of difficultyMedium
Reading time7 min
Views34K

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

Карманные ПК всегда занимали в моём сердце особое место. Первым был Palm III, а чуть позже я стал обладателем Sharp HC-4500. Меня заинтересовали проекты Yarh.io, и в начале этого года я задумал купить uConsole. Предполагалось, что этот девайс будет отправлен в марте, но заказ всё ещё находится на стадии подготовки. Так что, вооружившись множеством идей и сильной мотивацией, я приступил к реализации собственного проекта по сборке карманного ПК: Decktility.
Читать дальше →
Total votes 105: ↑104 and ↓1+103
Comments50

Вызываем демонов с printf

Level of difficultyEasy
Reading time5 min
Views6.8K

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

Читать далее
Total votes 27: ↑27 and ↓0+27
Comments7

Дорожная карта навыков разработчика на C++

Level of difficultyMedium
Reading time16 min
Views56K

Джеймс Гослинг как-то сказал, что Java — это C++, из которого убрали все пистолеты, ножи и дубинки, однако практика показывает, что «ножи и дубинки» становятся классным инструментом в руках опытных разработчиков. В общем, немалая часть проклятий в адрес C++ объясняется элементарным «вы просто не умеете его готовить». Мы в «Лаборатории Касперского» умеем готовить «плюсы» и поэтому любим их. C++ — низкоуровневый язык, который позволяет работать с железом и писать быстрый код и при этом содержит массу возможностей. В экосистеме «плюсов» куча проработанных паттернов, best practices и готовых библиотек под разные задачи. Язык динамично развивается — но сохраняет обратную совместимость. 

В этом посте мы с помощью карты покажем, какие навыки и знания нужны разработчику на C++. Естественно, разбирать путь развития «плюсистов» будем на собственном примере — тем более что у нас в «Лаборатории Касперского» много очень разных проектов с отличающимися задачами. Однако наша карта по большей части универсальна и будет полезна всем, кто хочет развиваться в С++-разработке.

Отправляемся
Total votes 46: ↑38 and ↓8+30
Comments93

На пол пути к конечному автомату для Arduino. Однопроходные функции и фиксация событий программы с помощью флагов

Level of difficultyMedium
Reading time32 min
Views6.2K
image

Мы привыкли к линейным алгоритмам. Нас учили строить их на информатике в школах, затем на младших курсах в колледжах и институтах. Это был бейсик или паскаль в консоли. Часто учителя просто выдавали программу, указанную в учебном плане, а для чего такое программирование может понадобиться на практике, особо никто не рассказывал. Да что там говорить, большинство повседневных задач мы сами формулируем в виде линейных алгоритмов.

Но так ли хорош этот метод для программирования микроконтроллеров, и есть ли какая-то простая и доступная альтернатива линейным алгоритмам? Я предлагаю вместе разобраться в этом вопросе.
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments38

Создаём систему радиоуправления для самодельного самолёта. Ч.1

Level of difficultyMedium
Reading time13 min
Views37K
Картинка Viarprodesign, Freepik

У каждого человека есть определённая тема, к которой он испытывает некое иррациональное влечение. У автора этой статьи такой темой является авиамоделирование: на тот момент, когда ещё существовали авиамодельные кружки, автор пришёл в него записываться и ему сказали, что он ещё слишком мал и лучше прийти через пару лет. А через пару лет распался Советский Союз и всем стало совсем даже не до кружков — на дворе наступили «благословенные» 90-е годы…

Однако, «гештальт сам себя не закроет» и автор решил тряхнуть стариной и попробовать собрать свою первую авиамодель (лучше поздно, чем никогда, да и в авиамодельный кружок опять не возьмут — теперь уже по причине старости :-)
Читать дальше →
Total votes 101: ↑98 and ↓3+95
Comments51

Неблокирующая обработка тактовой кнопки для Arduino. Как использовать прерывание таймера «в два клика» в стиле ардуино

Reading time27 min
Views10K


В своей прошлой статье я писал про блокирующие способы обработки кнопки. Реакция была, наверное, больше положительная, чем отрицательная. Хотя минусов мне поднасовали… Но, тем не менее, я решил продолжить. И в этой статье я хочу поделиться с вами своим опытом по неблокирующей обработке кнопок на Arduino. Напишем несложную библиотеку в стиле Си. Но, боюсь, что закрыть свой гештальт этой статьей тоже не получится…

Чтобы сохранить общую концепцию, пришлось разобраться с обработкой прерываний таймеров-счетчиков в стиле Arduino. Если вы не сталкивались с этим, и работаете напрямую с регистрами, рекомендую посмотреть, как это выглядит. HAL-драйвер для STM32 в этом плане нервно курит в сторонке.

Заранее предупреждаю, что материал рассчитан для начинающих. Но комментарии от бывалых программистов микроконтроллеров только приветствуются.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments43

Пособие по программированию модулей ядра Linux. Ч.1

Reading time19 min
Views36K

Перед вами последняя версия пособия по программированию модулей ядра Linux, вышедшего 2 июля 2022 года. Пособие большое, поэтому материал будет разбит на серию статей. В первой части мы разберём, что такое модули ядра, рассмотрим необходимые подготовительные этапы для их создания и в завершении по традиции напишем первый простейший модуль «Hello world», попутно разобрав вопросы лицензирования, передачу аргументов командной строки и прочие нюансы. Это пособие вы можете смело воспроизводить и изменять в соответствии с условиями Open Software License v 3.0.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments4

Перехват функций в ядре Linux с помощью ftrace

Reading time22 min
Views10K
ниндзя-пингвин,  En3lВ одном проекте, связанном с безопасностью Linux-систем, нам потребовалось перехватывать вызовы важных функций внутри ядра (вроде открытия файлов и запуска процессов) для обеспечения возможности мониторинга активности в системе и превентивного блокирования деятельности подозрительных процессов.

В процессе разработки нам удалось изобрести довольно неплохой подход, позволяющий удобно перехватить любую функцию в ядре по имени и выполнить свой код вокруг её вызовов. Перехватчик можно устанавливать из загружаемого GPL-модуля, без пересборки ядра. Подход поддерживает ядра версий 3.19+ для архитектуры x86_64.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments4

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Software Architect