Pull to refresh
32
0
Зеленый Андрей Сергеевич @Green21

User

Send message

Безопасность в Docker: от правильной настройки хоста до демона

Reading time12 min
Views19K

Привет, Хабр! Меня зовут Эллада, я специалист по информационной безопасности в Selectel. Помогаю клиентам обеспечивать защиту инфраструктуры и участвую в разработке новых решений компании в сфере ИБ. И сейчас я начала больше погружаться в тему разработки и изучать лучшие практики по обеспечению безопасности приложений.

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

Сегодня сложно представить современное приложение без технологий контейнеризации. Поэтому я решила подробно изучить вопросы безопасности в этом направлении и собрала рекомендации, как лучше подойти к работе с Docker-платформой. Подробности под катом!
Читать дальше →
Total votes 63: ↑63 and ↓0+68
Comments3

Введение в нейросети: что, зачем и как?

Level of difficultyMedium
Reading time25 min
Views46K

Это модное слово всё чаще используется в разговорной речи: обывателей плотнее окутывают угрозами бунта искусственного интеллекта и войны с роботами — с одной стороны, и рекламой нейросетевых продуктов — с другой. Отдельный котёл в аду — для тех, кто впаривает «курсы дата‑саентистов». А когда бедный юзернейм в поисках истины обращается к Гуглу своему любимому поисковику — то вместо простого ответа на простой вопрос, получает ещё больше вопросов — таких как тензорфлоу, сигмоида и, не дай Бог, линейная алгебра.

Как же нейросети рисуют картинки?
Total votes 48: ↑46 and ↓2+54
Comments27

Преобразование Уолша-Адамара

Level of difficultyHard
Reading time11 min
Views14K

На сайте hackerrank.com есть отличная задача. По заданному массиву short[] A; найти максимальное количество его подмассивов, xor элементов которых будет одинаковым. Сам этот xor тоже нужно найти.

Максимальная длина массива равна 105, так что квадратичный алгоритм не укладывается в лимит по времени исполнения. Я в своё время с этой задачей не справился и сдался, решив подсмотреть авторское решение. И в этот момент я понял почему не справился — автор предлагал решать задачу через дискретное преобразование Фурье.

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

PostgreSQL + pgAdmin + mTLS + certificate-based authentication + docker-compose в одном флаконе

Reading time4 min
Views5.8K

Чего у меня не отнять, дак это мастерства заголовка...

В какой-то момент при локальной разработке (да, в общем-то и при тестировании на иных стендах) задумываешься о том, как бы избавиться от довольно монотонных действий. Одним из них является ввод пароля в рамках процесса аутентификации в PostgreSQL. В этой статье я расскажу как слегка автоматизировать данный процесс.

Данная статья является легким переосмыслением того, что я написал на медиуме. Ибо думать я продолжаю на русском.

TL;DR исходники к вашим услугам.

В рамках любых взаимодействий мы сталкиваемся с такими сущностями как авторизация и аутентификация. Повторять в 100500 раз что есть что я не буду (но мне не лень такую длинную ремарку напечатать, ага). В рамках PostgreSQL первое обеспечивается через Roles, а второе через Privileges.

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments10

Самый простой и подробный гайд по конкурентным коллекциям в C#

Level of difficultyEasy
Reading time18 min
Views25K


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

Конкурентные коллекции в C# предлагают встроенные механизмы для обработки конкурентного доступа, что делает их мощным инструментом в программировании с конкурентным доступом.

В рамках статьи я попробую объяснить System.Collections.Concurrent настолько, насколько это возможно, включая примеры и сценарии использования. Также будет затронута тема сравнения с неизменяемыми (immutable) и замороженными (frozen) коллекциями.
Читать дальше →
Total votes 43: ↑41 and ↓2+60
Comments26

Предварительная обработка данных для машинного обучения

Level of difficultyHard
Reading time13 min
Views8.1K

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

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

Развитие медийности – нужен ли инженеру личный бренд?

Level of difficultyEasy
Reading time5 min
Views5.8K

Всем привет! Я Анжелика, работаю ведущим инженером в РСХБ‑Интех. В последнее время все чаще задумываюсь про медийность и важность ее развития для ИТ‑специалистов. Поговорим про это в сегодняшнем материале.

Читать далее
Total votes 16: ↑13 and ↓3+18
Comments10

Лучшие практики для надёжной работы с RabbitMQ

Level of difficultyEasy
Reading time13 min
Views27K

Привет, Хабр! Я Женя, архитектор интеграционной платформы в Точке, отвечаю за асинхронный обмен сообщениями между внутренними сервисами, за ESB и за брокеры сообщений.

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

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

Следуй за белым кроликом
Total votes 58: ↑58 and ↓0+59
Comments16

Рекомендации при работе с PostgreSQL

Level of difficultyMedium
Reading time10 min
Views27K

Доброго времени суток. Основываясь на своём опыте хочу представить некоторые рекомендации при разработке кодовой базы на SQL.

Данные рекомендации получены горьким опытом, так что надеюсь, они Вам помогут :)

Читать подробнее и больше не косячить
Total votes 51: ↑48 and ↓3+51
Comments53

Настройка CI/CD глазами разработчика

Level of difficultyMedium
Reading time9 min
Views22K

Тема, которая будет сегодня освещена, рассказывается от лица backend разработчика. На нашем проекте нет devops'а, который бы мог подсказать, направить. Поэтому нам пришлось выходить из зоны комфорта.

Тут кое-что интересное...
Total votes 14: ↑12 and ↓2+10
Comments24

ИТ в РФ уже не нужно? Попытка анализа рынка на основе того, чего нет

Level of difficultyHard
Reading time7 min
Views69K

Вместо предисловия – цитаты известных людей:
из режима "Всё идет по плану" казённая медийка переходит в режим "Идёт ликвидация ответственными лицами отдельных недоработок". Ключевой момент - "ликвидация недоработок" должна быть полностью заслугой "ответственных лиц". Системных "ответственных лиц". "Всё пошло немножко не по плану, сейчас поправим".
Непризнание кризиса кризисом является главным признаком системного кризиса. То есть система свои проблемы не рефлексирует как системные, изменения в механизм работы не вносятся. И решать их нормально не решает. И, в целом, продолжает работать "по плану и с опережением графика".
(С)

Тезисно.
Увидеть черную дыру нельзя по определению – излучение Хокинга может есть, может нет. Однако можно увидеть и гравитационное линзирование, и излучение от газового облака.
Похожим образом – соотнося те события, про которые писать «можно», те события, о которых «говорят официальные лица» и то, как сейчас пишут и как НЕ пишут вакансии, о чем пишут и о чем НЕ пишут на том же Хабре, можно попробовать сделать какой-то анализ. Как обычно пишут мне свежеразмороженные учетки в комментариях - "эмоционально,спутанно и негативно".

Читать далее
Total votes 186: ↑103 and ↓83+40
Comments178

Автоматизируем сборку и деплой приложения в GitLab CI/CD: подробное руководство с примерами

Level of difficultyEasy
Reading time22 min
Views30K

При разработке приложений рано или поздно наступает момент, когда заниматься развёртыванием вручную становится затратно и неудобно. Как следствие на помощь приходит автоматизация этого процесса с помощью специально настроенных пайплайнов непрерывной интеграции и непрерывной доставки (Continuous Integration & Continuous Delivery — CI/CD). Для разных систем управления репозиториями исходного кода существуют свои способы настройки CI/CD.

В этой статье мы рассмотрим, как использовать GitLab для организации автоматической сборки и деплоя приложения в кластер Kubernetes. Сам кластер работает под управлением Deckhouse Kubernetes Platform, а автоматизировать процесс будем с помощью werf — Open Source CLI-утилиты, организующей полный цикл доставки приложения в Kubernetes и использующей Git как единый источник истины для состояния приложения, развёрнутого в кластере.

Читать далее
Total votes 30: ↑29 and ↓1+34
Comments17

Задачи от Tinkoff для Junior Java developers

Level of difficultyEasy
Reading time4 min
Views26K

Отличная тренировка для начинающих разработчиков на знание Java core. В статье будет представлено описание 5 задач с разным уровнем сложности.

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

Читать далее
Total votes 12: ↑4 and ↓8-4
Comments33

Как я уменьшил размер образа docker на 40%

Level of difficultyEasy
Reading time16 min
Views16K

Ежедневно по работе я сталкиваюсь с Dockerfile, написал несколько из них самостоятельно, создавал контейнеры и всё такое. Но я никогда не публиковал их в реестре docker hub. Мне хотелось создать ugit — инструмент для отмены команд git (написанный в виде шелл-скрипта), который бы могли использовать люди, не любящие устанавливать случайные шелл-скрипты из Интернета.

Да-да, знаю. НАДО ПЕРЕПИСАТЬ ЕГО НА GO/RUST/ЕЩЁ КАКОМ-ТО ВОЛШЕБНОМ ЯЗЫКЕ. Сейчас скрипт состоит из пятисот с лишним строк Bash, поэтому я перепишу его на другой язык только под страхом смертной казни. Кроме того в ugit уже есть практически все функции (осталось реализовать отмену лишь небольшого количества команд, используемых не так часто).

В этой статье я расскажу о том, как написал официальный Dockerfile для ugit (шелл-скрипта) и снизил размер образа почти на 40% (с 31,4 МБ до 17,6 МБ), выполняя пошаговые попытки работы по инструкции. Надеюсь, это замотивирует других любителей шелла тоже публиковать свои скрипты в виде образов docker!

Читать далее
Total votes 15: ↑14 and ↓1+21
Comments50

Event Loop. Мифы и реальность

Reading time19 min
Views18K

В сети есть довольно большое количество публикаций про Event loop и как он работает. Новые статьи появляются на популярных ресурсах и по сей день, в том числе на Хабре. Однако, к сожалению, далеко не вся информация, представленная в этих материалах является проверенной или достоверной. В связи с чем, само понятие обросло рядом мифов и догадок. Порой, даже опытному разработчику требуется немало внимания и опыта, чтобы понять, где истина, а где, чистой воды, вымысел.

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

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

Почему с каждой новой версией Windows от нее усиливается усталость

Reading time6 min
Views81K

Привет! Меня зовут Васьен и я пользуюсь Windows уже 24 года. Большие боссы из Майкрософт молодцы и соображают, что делают. Тут и удачные инвестиции, развитие самых различных направлений и стремление захватить как можно больше рынка (хотя куда уж больше?). Но мне, простому смертному пользователю, искренне не понятно, что же в последнее время делает Майкрософт со своим главным продуктом – операционной системой, которой я как раз и пользуюсь более двадцати лет. И поймал себя на мысли, что все больше новостей вокруг новых версий ОС вызывает раздражение, а от новых версий ОС возникает какая-то усталость и мне стало интересно разобраться, с чем же это связано?

Читать далее
Total votes 153: ↑127 and ↓26+126
Comments889

Сколько ядер CPU можно использовать параллельно в Python?

Level of difficultyMedium
Reading time6 min
Views22K

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

Как же проверить, сколько ядер есть у компьютера? И действительно ли это хороший совет?

Оказывается, на удивление сложно определить, сколько потоков выполнять:

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

- Хуже того, из-за таких функций CPU, как параллельность на уровне команд и одновременной многопоточности (Hyper-threading в CPU Intel), количество ядер, которое можно эффективно использовать, зависит от того кода, который напишете вы!

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

Читать далее
Total votes 17: ↑14 and ↓3+18
Comments33

Мои советы после 20 лет в программировании

Level of difficultyEasy
Reading time44 min
Views128K

Сегодня ровно 20 лет, как я начал программировать профессионально. За эти годы я:

Получил одобрение на петицию по грин‑карте за выдающиеся способности в науке.
Стал Google Developer Expert.
Стал IEEE Senior Member.
Был операционным директором в компании со 100 сотрудниками.
Написал код, который скачали 135 миллионов раз.
Выступал перед аудиторией в 2000 человек, дважды.
Стал самым честным человеком в России по версии НТВ.

Но упустил я гораздо больше и делал всё это слишком долго. Думаю, этот путь можно было бы пройти «на скорость» лет за 5 с теми подходами, принципами и приоритетами, которым я научился. Если вы только начинаете свой путь, этот текст может сэкономить вам 15 лет жизни.

Читать далее
Total votes 253: ↑143 and ↓110+70
Comments277

Как я чуть не стал миллионером, продавая воздух, или почему Россия – не Америка

Level of difficultyEasy
Reading time10 min
Views118K

Все знают, что Россия — энергетическая сверхдержава, она же – «разорванная в клочья Обамой бензоколонка». Но не все знают, как это может отражаться в области развития математического моделирования. Расскажу одну жизненную историю. 

Начну с далекого 2007 года. Довелось мне в те времена поработать на крупном заводе, который «эффективные менеджеры» как раз делили на несколько отдельных предприятий, каждое из которых крутилось, как могло.  В том цеху, который и стал одним из таких предприятий, на токарных станках могла крутиться (и крутилась!) металлическая болванка размером с автобус. А в печку для нагрева металла можно было затолкать паровоз. Целиком.  Когда я в первый раз увидел токарный станок, на котором крутится и обтачивается деталь размером с автобус, моему восторгу не было предела. Гордость за страну переполняла до состояния «в зобу дыханье сперло». А потом старожилы показали ту часть цеха, где стояли фундаменты таких же станков и пояснили:

- А вот тут были станки для точной обработки. Их продали китайцам по цене металлолома.

- А почему вот другие не продали?

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

Схема бизнеса был гениальна: Siemiens привозил на завод многотонные болванки, их неделями и месяцами обтачивали до состояния заготовок и увозили для чистовой обработки в Германию. Где уже выполняли чистовую доводку на точных и дорогих станках. Главные затраты при черновой обработке – это износ станков и инструмента, зарплата токаря и электроэнергия, необходимая для вращения тонн металла. Поскольку электроэнергия в РФ дешевле немецкой, недели обработки болванок с лихвой окупают транспортировку, а низкая точность обработки не требует дорогого обслуживания и мало чувствительна к износу еще советского оборудования.  В итоге весь бизнес заключался в «перепродаже» дешевой электроэнергии из РФ в Германию, но в виде металлических обточенных болванок. 

Читать далее
Total votes 244: ↑235 and ↓9+274
Comments301

Как оптимизировать код на С для x86-процессоров: подсистема кэша и памяти, инструкции AVX-512

Level of difficultyMedium
Reading time12 min
Views11K

Меня зовут Андрей Бакшаев, я ведущий инженер-программист в YADRO. Моя команда занимается разработкой и оптимизацией математических библиотек под архитектуру x86. До этого я 15 лет работал в Intel. Значительная часть моих задач заключалась в том, чтобы реализовывать некоторые алгоритмы обработки изображений и сигналов в довольно известной математической библиотеке IPP, максимально эффективно используя возможности процессоров. Я также исследовал производительность этих алгоритмов в процессорах на ранней стадии проектирования. 

В статье я поделюсь своим опытом оптимизации низкоуровневого кода на языке C. Рассмотрим подсистему кэша и памяти процессоров и новые инструкции AVX-512. Разберем пример ускорения копирования байтового массива данных и посмотрим, как векторизованный код позволяет сократить время работы широко используемого алгоритма замены байтов по таблице с 619 до 34 мс, то есть примерно в 18 раз. 

Читать далее
Total votes 42: ↑39 and ↓3+48
Comments23

Information

Rating
Does not participate
Location
Краснодар, Краснодарский край, Россия
Works in
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Technical Support Engineer
Senior
Web
Restful WebServices
RESTful API
FullStack
NestJS
Vue.js
TypeScript
TypeORM
C#
Python