Pull to refresh
77
0
Безверхий Олег @Bizonozubr

.Net программист

Send message

Как не давать пустых обещаний себе, команде и заказчику

Reading time10 min
Views15K

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

14 лет я работал в международной компании Airbus – компании, занимающейся авиастроением. В IT же мой путь начался совсем недавно – всего лишь чуть больше года назад.

Чем отличается управление релизами программного обеспечения и управление проектированием конструкций гражданских самолётов? Мой опыт позволяет поставить знак равенства между этими двумя видами деятельности. По крайней мере, в контексте выстраивания долгосрочных отношений между заказчиком и исполнителем.

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

Читать далее
Total votes 34: ↑32 and ↓2+38
Comments40

Реверс-инжиниринг нативно скомпилированных .NET-приложений

Level of difficultyHard
Reading time9 min
Views4.7K


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


На платформе .NET 7 впервые была представлена новая модель развертывания: опережающая нативная компиляция. Когда приложение .NET компилируется нативно по методу AOT, оно превращается в автономный нативный исполняемый файл, оснащённый собственной минимальной средой исполнения для управления выполнением кода.
Читать дальше →
Total votes 29: ↑26 and ↓3+37
Comments4

Как стать тестировщиком бесплатно? Программа обучения с нуля

Level of difficultyEasy
Reading time2 min
Views25K

Если вбить слово «тестировщик» в поисковую строку, можно найти множество курсов по данному направлению. Проблема заключается в том, что все курсы являются платными и, как правило, стоят несколько десятков, если не сотен тысяч рублей. 

Чтобы разбавить обилие платных курсов, мы подготовили для вас программу обучения «Тестировщик с нуля», которая состоит только из бесплатных курсов.

Читать далее
Total votes 26: ↑23 and ↓3+22
Comments6

Применение чистой архитектуры в Go

Level of difficultyHard
Reading time13 min
Views13K


Одна из проблем, с которыми мне часто доводится сталкиваться в различных софтверных проектов — это сильная связанность кода, при которой в него так сложно вносить даже простые изменения, не провоцируя нежелательных побочных эффектов. Дело в том, что программисты склонны сосредотачиваться на разработке конкретных фич, не задумываясь о том, как база кода станет развиваться в будущем. Также не все учитывают, что применяемые сегодня библиотеки и фреймворки могут постепенно сойти со сцены спустя несколько месяцев или лет.

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

Большинство этих инструментов – это частности, и выбор большинства из них (кроме языка программирования) можно на некоторое время отложить, пока проект не окрепнет. Поэтому на ранних этапах разработки проекта стоит уделить внимание не тому, при помощи каких инструментов пойдёт реализация. Лучше смоделировать предметную область проекта, а к вышеупомянутым инструментам подходить так, как следует — то есть, как к частностям. Разумеется, чтобы проект был реализован, с такими деталями тоже нужно определиться, но они могут оставаться в некоторой отдельной части кода, не относящейся к предметной области — там, где их будет легко менять, удалять или заменять по нашему усмотрению.

Для решения именно таких проблем с сильной связностью кода многоопытные инженеры создали ряд архитектурных паттернов. Таковы, в частности, чистая архитектура Роберта Мартина («дядюшки Боба»), гексагональная архитектура Алистера Кокбёрна и явная архитектура Герберто Грацы.
Читать дальше →
Total votes 24: ↑22 and ↓2+31
Comments5

Популярные ошибки в Golang и как их избежать

Level of difficultyEasy
Reading time15 min
Views9.7K

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

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

Выбираем дешёвый VPS-сервер. Что почём в 2024 году?

Reading time12 min
Views27K

Всем привет! В начале года я писал публикацию «Можно ли заработать на партнёрских программах хостеров в 2024 году? Пробуем посчитать» — просмотров и комментариев было немного, но в личке было немало вопросов, а я с тех пор смог заметно поправить своё финансовое положение на этих самых партнёрках. Но сегодня речь пойдёт чуть по другой, пусть и смежной теме — не так давно у меня появилась необходимость в виртуалке для тестирования разрабатываемого мной ПО, и как часто бывает, встал вопрос, у какого провайдера заказывать. В своём выборе хостеров для обзора я в первую очередь решил отталкиваться от стоимости их услуг. И в этой статье я хотел бы сравнить несколько хостингов, которые были первыми в гугле по запросу «Дешёвый VPS-сервер» — спешу поделиться с вами полученным опытом и выводами.

Читать далее
Total votes 46: ↑43 and ↓3+63
Comments49

10 видов угроз, с которых надо начинать мониторинг ИБ в АСУ ТП

Level of difficultyEasy
Reading time20 min
Views8.4K

Коллеги, всем привет! Меня зовут Илья Косынкин. В компании Positive Technologies я руковожу разработкой продукта для глубокого анализа трафика в технологических сетях — PT ISIM. На проектах в различных компаниях мы много сталкиваемся с практическими вопросами о том, как выстроить мониторинг ИБ в АСУ ТП. И это закономерно, ведь наша система решает именно эту задачу.

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

Если интересно — добро пожаловать под кат
Total votes 9: ↑9 and ↓0+11
Comments12

Шорт-листы «Технотекста 2023»: достойные из достойных

Reading time27 min
Views11K

Мы получили 1022 заявки, приняли из них 918, в шорт‑листы попало более 300 статей. Точной цифры по шорт‑листам нет неслучайно: поскольку наш естественный интеллект это вам не ChatGPT склонен уставать и ошибаться, несколько статей могут попасть в шорты, но, скорее всего, выпадут из них — так, во время подготовки этой статьи выяснилось, что из финала выбыли двое участников, скрывшие свои публикации в черновики.

Вообще, такого «Технотекста», как в этот раз, ещё не было: обычно мы сравнительно легко отсеивали участников и выбирали финалистов, разница в уровне материалов была очевидной. В этот раз номинанты сильные — и многие статьи не вышли в финал не потому, что они какие-то не такие, а потому что они объективно слабее лучших из лучших — но очевидно, что сильнее большей части статей на Хабре. Хотя участники «Технотекста» из года в год находят отличные способы добить нервную систему модераторов конкурса 😃

Читать далее
Total votes 84: ↑84 and ↓0+122
Comments41

Разработка вредоносного ПО для MacOS: инъекция и закрепление шелл-кода на конечном устройстве

Level of difficultyHard
Reading time20 min
Views4.1K

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

В этой статье мы:

- Изучим методики инъецирования кода и то, как он применяется в вредоносном ПО;

- Затронем способы обеспечения постоянства хранения;

- В конце мы покажем простой процесс инъецирования шелл-кода и его постоянного хранения. 

Читать далее
Total votes 20: ↑20 and ↓0+24
Comments1

Quansheng UV-K5/K6: трансивер, из которого можно сделать что угодно

Reading time7 min
Views24K

Дядюшка Ляо не перестаёт удивлять. Мы хорошо помним, какую революцию совершили USB-донглы на микросхемах Elonics E4000 и Rafael Micro R820T, изначально предназначенные для просмотра телевидения на экране компьютера. С заменённым драйвером они превращались в универсальный SDR-радиоприёмник, принимавший в диапазоне от 25 MHz до 1 750 MHz, отображая при этом спектр шириной 2.4 MHz. И стоило это удовольствие долларов 5, может, чуть больше.

Вторым важным событием стало появление дешёвой народной «шарманки» — Baofeng UV-5R. Это простенький двухдиапазонный трансивер с заявленной выходной мощностью 5W. Но недавно китайцы вновь превзошли сами себя и выпустили нечто, что стало ещё более интересным — Quansheng UV-K5 и улучшенные версии, обозначаемые UV-K5(8) и UV-K6. Что это за трансивер и почему он стал так популярен — читайте под катом.

Читать далее
Total votes 51: ↑51 and ↓0+76
Comments37

Неправильные ML-библиотеки, обфускация и кража аккаунтов Телеграм. Очищаем PyPI от вредоносных библиотек

Level of difficultyEasy
Reading time7 min
Views2.9K

Мы, команда Threat Intelligence экспертного центра безопасности Positive Technologies, в рамках недавнего автоматизированного аудита проектов, размещенных в главном репозитории Python-кода, нашли 28 вредоносных пакетов, которые уже много месяцев вредили пользователям. В совокупности они были скачаны 59 000 раз.

Отчет о перечисленных ниже проектах был передан команде Python Package Index (PyPI), благодаря чему проекты были удалены.

Посмотреть наши находки
Total votes 19: ↑19 and ↓0+24
Comments5

Кто генерирует ботов, каким софтом, как Яндекс не справляется с ботами

Level of difficultyMedium
Reading time3 min
Views24K

Кто генерирует клики ботов? Зачем генерируют прямые заходы и ложные заявки? Каким софтом? Сколько таких кликов во всём объеме трафика? Как эти клики отделить? Обо всем этом, и даже больше, пойдет речь в сегодняшней статье.

Я, Григорий Мельников, автор онлайн сервиса по выявлению ботов KillBot, продолжаю цикл из 5-ти статей посвященных качеству трафика в РСЯ. Это вторая статья из цикла. Первую можно прочитать здесь: Деградация трафика в РСЯ: с каждым годом всё хуже и хуже.

Читать далее
Total votes 36: ↑26 and ↓10+22
Comments43

Где вы 300к/наносек находите, часть 2. Май 2024. Тримодальное распределение окладов

Level of difficultyHard
Reading time10 min
Views35K

Краткое содержание для Хабра: не техническая статья, графомания, минусовать не читая.

Для лиги лени. Общество в РФ разделено на 3 уже не класса, но еще не касты – нормисы и линейный персонал слева, огромная квалификационная яма по центру, инженерно-руководящие кадры (лиды, тим лиды, хорошие РП-ПМ, руководители среднего звена) справа, и номенклатура. Номенклатура внутри себя тоже разделена, не пирамидально, в том числе на силовых и либеральных чекистов,  но их доходы в структуре открытого рынка труда не отображаются.

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

Читать далее
Total votes 100: ↑67 and ↓33+56
Comments113

Как информативно оформить профиль на GitHub?

Level of difficultyEasy
Reading time6 min
Views13K

Тетрадь, дневник — ваше лицо. А круто оформленный профиль на гитхабе — статус вашей занятости. Чем больше участий в проектах, тем безработнее... Пока молодые специалисты оформляют свои страницы с "Lib-Meta-Neo ML-Scientist 10 years of expirience" на LinkedIN настоящий амбассадор HR и трудового найма бегут на GitHub. Именно там выискиваются самые закостенелые гики программирования, вносящие тридцать пять тысяч коммитов в безбюджетные опенсорс проекты; именно там рождаются гении, разрабатывающие AAA-проекты геймдева на ассемблере. 

Все это шутки. 

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

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

Читать далее
Total votes 26: ↑24 and ↓2+26
Comments5

Век поиска кратчайшего решения задачи о кратчайшем пути

Level of difficultyMedium
Reading time22 min
Views10K

TL;DR Очень подробный разбор алгоритмов решения задачи о кратчайшем пути от классики до двунаправленного А* и ALT с кодом и примерами на OSM

Люди пытались найти более быстрые способы передвижения на протяжении всей своей истории. Появление качественной дорожной системы в римской империи в своё время привело к её расцвету, но со временем выяснилось, что и в продуманных дорожных системах бывают забавные изъяны, как например в небезызвестной задаче о кёнигсбергских мостах, считающейся отправной точкой возникновения теории графов. Неудивительно и то, что с развитием вычислительной техники логистические задачи стали одними из первых, над которыми трудились первопроходцы компьютерных наук. Задача о кратчайшем пути -- одна из них, звучит достаточно просто: есть несколько городов и дорог, соединяющих пару городов между собой, мы хотим попасть из города А в город Б пройдя при этом минимальное расстояние. Первый системный подход к этой задаче был описан в работе Эгервари в 1931г., спустя 25 лет Эдсгер Дейкстра придумал алгоритм, который сейчас является частью любого уважающего себя базового курса алгоритмов на графах. На нём же, будем честны, заканчиваются знания о кратчайших путях у большинства профессиональных разработчиков, ибо сценариев, где реализации с википедии/stackoverflow будет не хватать, крайне мало.

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

Читать далее
Total votes 42: ↑42 and ↓0+52
Comments14

Сборка MS-DOS 4.0

Reading time6 min
Views25K

Совсем недавно на хабре появилась следующая новость: На GitHub опубликован исходный код MS-DOS 4.00 под лицензией MIT. Раз появились исходные коды, стало сразу интересно: а можно ли собрать эту операционную систему?
Читать дальше →
Total votes 112: ↑111 and ↓1+156
Comments73

4 частых вопроса на собеседовании по части Kubernetes, с которыми может столкнуться каждый. Часть 1

Level of difficultyEasy
Reading time7 min
Views9.5K

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

Начнем с основной архитектуры Kubernetes и роли основных компонентов.

Читать далее
Total votes 15: ↑8 and ↓7+7
Comments8

Что нужно знать, чтобы успешно пройти System Design Interview

Reading time16 min
Views39K

Для любого разработчика глубокое понимание основных принципов системного проектирования является необходимым условием для создания стабильных и масштабируемых программных систем, способных обеспечивать высокую производительность. Системное проектирование (System Design) включает разработку архитектуры и структуры программной системы, направленную на удовлетворение специфических требований и обеспечение требуемых показателей производительности.

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

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

Читать далее
Total votes 49: ↑47 and ↓2+56
Comments26

Как дальнобойщик в 38 лет стал разработчиком на Ruby on Rails

Level of difficultyEasy
Reading time8 min
Views8.3K

Недавно мне представилась возможность взять интервью у Педро Давида Гарсии Лопеса, разработчика на Ruby on Rails из Великобритании, который до этого работал дальнобойщиком. Интересно то, что он решил стать программистом в 38 лет. В этой статье я расскажу его историю, которая, надеюсь, покажется вам такой же вдохновляющей, какой она показалась мне.
Читать дальше →
Total votes 33: ↑30 and ↓3+52
Comments23

Пять вредных советов, как гарантированно НЕ написать книгу

Level of difficultyEasy
Reading time7 min
Views4.3K

Привет, Хабр! Меня зовут Иван Чаплыгин и я – руководитель отдела переводов в компании КРОК. Пару лет назад я написал книгу «Думай о смысле. Будни переводчика IT-текстов», которая вышла в издательстве «МИФ». 

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

Читать далее
Total votes 32: ↑29 and ↓3+33
Comments7

Information

Rating
5,471-st
Location
Екатеринославка, Амурская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Developer, System Administration
Middle
From 150,000 ₽
Git
SQL
Python
C#
.NET
PostgreSQL
APCS