Search
Write a publication
Pull to refresh
144
0
Олег Сухонос @sukhe

программист

Send message

Конспектируем Книгу Rust:: Владение

Reading time8 min
Views18K

Перед вами краткое профессиональное описание особенностей языка Rust для профессионалов.


Что это такое?
  • краткое — информации будет гораздо меньше, чем в Книге (The Rust Programming Language)
  • профессиональное — информации будет гораздо больше, чем в Книге;
  • описание особенностей — фокусируемся на отличиях Rust от других языков;
  • языка — описывается именно язык, а не установка средств разработки, управление пакетами и прочий инструментарий;
  • для профессионалов — подразумевается, что читатель имеет существенный опыт в разработке ПО.

Чего здесь НЕ будет


  • Не будет агитации за Rust
  • Не будет легко. Для освоения потребуется неделя-другая вдумчивого чтения по часу в день, с тщательным разбором примеров, как-то так

Содержание


Читать дальше →

Пишем свой PyTorch на NumPy. Часть 1

Level of difficultyEasy
Reading time16 min
Views9K

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

В этой статье мы реализуем собственную библиотеку машинного обучения на NumPy!

Читать далее

Практические варианты использования port knocking

Level of difficultyEasy
Reading time17 min
Views8.7K

Многие компании не успевают оперативно устранять уязвимости. При этом время эксплуатации уязвимости после ее раскрытия сокращается. Существуют различные варианты попыток защиты\сокрытия сервисов от "любопытных глаз". Основные: использование нестандартного порта, fail2ban, ACL и tarpit (и их сочетание).
Есть ещё port knocking: как дополнительный фактор защиты - может снизить обнаружение сервиса, а не пытаться бороться с последствиями (брутфорс, эксплуатация), когда сервис уже обнаружен. Но, очень часто эта технология оказывается не используемой. Где-то из-за незнания технологии (хотя, статей хватает). Но, чаще из-за проблем на практике, которые мешают её внедрению:

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

Часто игнорирование port knocking приводит к тому, что задачи по безопасности пытаются решать другими технологиями. Что приводит к решениям, простота и эффективность которых вызывает вопросы. Усугубляется это частым отсутствием знаний в области наступательной безопасности: непониманием как атакующие могут обходить средства защиты. Я за годы работы пентестером и архитектором безопасности очень полюбил port knocking и нашёл варианты решить самые частые проблемы с его использованием. Ими и хочу поделиться.

Исходная задача: уменьшить количество несанкционированных обращений к сервису (в идеале - исключить полностью). При этом не мешая легитимным обращениям.

В статье обсудим:

‣ зачем (и как) пытаться убрать сервис из базы поисковиков (Censys, Shodan);
‣ использование нестандартного порта, fail2ban, ACL, tarpit и какие подходы используют атакующие для попытки обхода этих мер;
‣ варианты port knocking и практические проблемы их использования;
‣ "прозрачный" port knocking (не требующий от пользователей дополнительных действий, не подверженный фильтрафии трафика и согласующийся с сетевыми мерами безопасности);
‣ port knocking в docker контейнере: когда полезен и как его сделать;
‣ использование ipset для повышения эффективности port knocking;
‣ некоторые спорные практики защиты.

Читать далее

Математическая продлёнка. Изобретаем целые числа

Level of difficultyEasy
Reading time11 min
Views17K

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

1. В этой статье мы (признаюсь, достаточно занудно) построим из натуральных чисел целые, при этом познакомимся с важнейшими инструментами математики: упорядоченной парой, эквивалентностью и факторизацией.

2. Во второй части от целых мы перейдём к рациональным числам, которые тоже можно представить в виде пары — рациональной дроби. Главный вопрос на который мы постараемся ответить: «А чего у дробей всё так сложно-то?»

3. В третьей части мы сконструируем Гауссовы числа и порассуждаем над более общим вопросом: «Что такое число?». В этой части мы перейдём от пар к матричным представлениям чисел, что позволит нам ввести их классификацию.

4. Четвёртая часть будет посвящена эллиптическим арифметикам: комплексным числам и числам Эйзенштейна. Здесь мы порассуждаем над сакраментальным вопросом: «Реальная ли мнимая единица?»

5. В пятой части мы рассмотрим гиперболические арифметики и познакомимся с двойными числами, и немного используем их на практике, чтобы понять «Как работает формула Бине?»

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

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

Читать далее

Сборщик мусора CPython и его влияние на производительность приложения

Level of difficultyEasy
Reading time13 min
Views4.9K

В прошлом я уже публиковал детальный разбор кода сборщика мусора CPython, однако стоит также дать более высокоуровневое объяснение механизмов управления памятью в CPython, не затрагивая сам код. Этому и будет посвящена данная статья. Статья в основном будет посвящена циклическому сборщику мусора (GC), как и когда он запускается и его влиянию на производительность приложений.

Читать далее

DIY: Ваше собственное облако на базе Kubernetes (часть 3)

Reading time8 min
Views9K

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

В прошлых статьях мы уже рассказывали, как мы готовим Kubernetes на bare metal, и о том, как превратить Kubernetes в средство запуска виртуальных машин. Эта статья завершает серию, объясняя, как, используя всё вышеперечисленное, можно построить полноценный managed Kubernetes service и запускать виртуальные Kubernetes-кластеры по клику.

И начнём мы, пожалуй с Cluster API.

Читать далее

Домашний сервер на базе Proxmox

Level of difficultyEasy
Reading time9 min
Views81K

Привет! Меня зовут Александр Щербаков. Я DevOps команд страхования в Банки.ру. На своём карьерном пути я успел поработать эникейщиком, системным администратором и, наконец, DevOps‑инженером с несколькими командами разработки. Как и любой инженер, я стремлюсь постоянно совершенствоваться: получать новые знания, изучать как устоявшиеся, так и только появившиеся технологии.

И здесь сразу появляется главная проблема — для развития DevOps нужна среда, где можно запускать ПО для исследования. Разработчикам проще: открыл документацию, скачал IDE, начал пробовать и изучать новую технологию. А вот DevOps‑инженеру одной только IDE будет мало, так как часть его работы как минимум завязана на Linux серверах. Поэтому важно не просто знать, как использовать готовые решения, но и понимать, как они функционируют на уровне инфраструктуры.

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

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

Читать далее

Разворачиваем среду для работы с микросервисами. Часть 1 установка Kubernetes HA на bare metal (Debian)

Reading time21 min
Views72K


Здравствуйте уважаемые читатели Хабра!


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


Данный цикл будет состоять минимум из четырех статей:


  1. В первой из них я расскажу, как на голое железо установить отказоустойчивый кластер kubernetes, как установить стандартный дашборд и настроить доступ к нему, как установить ingress контроллер.
  2. Во второй статье я расскажу, как развернуть отказоустойчивый кластер Ceph и как начать использовать RBD тома в нашем кластере Kubernetes. Также немного затрону остальные виды стораджей (storages) и более подробно рассмотрю local-storage. Дополнительно расскажу, как на базе созданного кластера CEPH организовать отказоустойчивое хранилище S3
  3. В третьей статье я расскажу, как в нашем кластере Kubernetes развернуть отказоустойчивый кластер MySql, а именно — Percona XtraDB Cluster on Kubernetes. И также опишу все проблемы с которыми мы столкнулись, когда решили перенести БД в kubernetes.
  4. В четвертой статье я постараюсь собрать все вместе и рассказать, как задеплоить и запустить приложение, которое будет использовать БД и тома ceph. Расскажу, как настроить ingress контроллер для доступа к нашему приложению извне и сервис автоматического заказа сертификатов от Let's Encrypt. Еще — как автоматически поддерживать данные сертификаты в актуальном состоянии. Также немного затронем тему RBAC в контексте доступа до панели управления. Расскажу в двух словах про Helm и его установку.
    Если Вам интересна информация данных публикаций, то — добро пожаловать!
Читать дальше →

Django-аутентификация: просто о сложном

Level of difficultyEasy
Reading time13 min
Views13K

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

Аутентификация является фундаментальной частью любого веб-приложения. Мы рассмотрим различные способы реализации аутентификации в Django, начиная от стандартных методов и заканчивая более крутыми техниками, например как 2FA и OAuth2.

Читать далее

Асинхронный Rust в трех частях. Часть третья: IO

Reading time11 min
Views3.4K

Конечно, async/await были придуманы не для сна. Нашей целью с самого начала был ввод‑вывод (I/O), а в особенности сетевой ввод‑вывод. Вооружившись futures и задачами, теперь мы можем перейти к реальным примерам.

Читать далее

Text-to-speech. Анализ открытых решений синтеза речи

Reading time11 min
Views13K

Всем привет! В этой статье будут рассмотрены открытые проекты по синтезу речи с поддержкой русского языка. Под словом «открытые» будем иметь в виду, что разработчики безвозмездно предоставляют в пользование результаты своих трудов (спасибо им за это большое). Также в обзоре вы найдете краткое описание решений с примерами генерации аудио по тексту и полезными ссылками для начального погружения в задачу text-to-speech. Приятного прочтения.

Читать далее

Easy English с левой задней ноги

Level of difficultyEasy
Reading time14 min
Views8.3K

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

Меня зовут Дмитрий и я многократный чемпион по бесплодным попыткам освоить английский язык. Гениальные Д.Петров, С.Дружбинский и десятки талантливых блогеров — не приблизили меня к мечте. Замечательные Duolingo, Memrise, Anki и прочие, помогающие миллионам учащихся — на мне обломались. Два репетитора вернули деньги и рыдая, умоляли больше не приходить. На запрос «таблетка для английского — быстро, недорого и желательно во сне» Google до сих пор недоуменно пожимает плечами.

В конце концов мне пришлось признать, что «God helps those who help themselves», и, собрав в кулак свою лень и немного VSC, я за сравнительно небольшой срок закрыл этот гештальт, ну или почти закрыл.

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

Под катом много скриншотов и незримое «IMHO» перед каждым утвердительным предложением. Скриншоты взяты из моей программы «5 фраз» — предлагаю закрыть глаза на самопиар, а сосредоточиться на подходах.

Читать далее

Начинаем читать на английском — как сделать первый шаг и не забросить

Level of difficultyEasy
Reading time14 min
Views17K

Думаю, мало кто станет спорить с тем, что знание английского языка — это один из важнейших навыков ИТ-специалиста. На начальных этапах становления ИТ-карьеры такой потребности может и не ощущаться, однако по мере роста начинаешь осознавать важность и необходимость этого навыка. Английский крайне необходим для чтения документации, новейших книг по актуальным технологиям (которые либо вовсе не переводят на русский, либо переводят со значительной задержкой, да еще часто с многочисленными опечатками и неточностями), для поиска ответов на технические вопросы и решения проблем (поиск google, stackoverflow, и пр.), для того же общения с ChatGPT и другими подобными системами, для расширения географии своей деятельности (общение с иностранными заказчиками или клиентами) либо для релокейта.

Однако сегодня я хотел бы поговорить не об изучении языка в общем, а конкретно о развитии такого навыка, как чтение на иностранном языке. Безусловно, это не единственный навык. Конечно, важен и разговорный английский, и письменный, и восприятие на слух, однако даже чтение само по себе уже открывает перед ИТ-специалистом множество возможностей, ряд из которых я уже перечислил выше. Кроме того, регулярное чтение увеличивает словарный запас, а также позитивно сказывается на улучшении грамматики и в целом на способности выражать свои мысли на английском языке.

Читать далее

Сборка Python проекта с uv и Docker

Level of difficultyMedium
Reading time12 min
Views12K

Привет, Хабр! Меня зовут Денис Савран. Я старший разработчик направления серверной разработки на интерпретируемых языках и работаю в компании «Криптонит». В этой статье я хочу поделиться опытом сборки проектов на Python с использованием самых современных инструментов.

Читать далее

Получение, обработка, анализ и визуализация спутниковых снимков с помощью библиотек: GDAL, numpy и matplotlib

Level of difficultyEasy
Reading time14 min
Views3.1K

Эта статья является продолжением цикла статей посвященных развитию стартапа "Arrow". Ребята из моей команды тоже не отстают и те, кого больше интересует бизнес-сторона вопроса можете почитать "Старт проекта и гибкость как залог успеха: путь команды ARROW", а те кто больше по разработке оставайтесь здесь. Первая техническая статья на примере нашего проекта освещает проблему построения Веб-ГИС приложения и сервисов. Логика приложения, в том числе, будет реализовывать инструменты получения спутниковых снимков и их обработки по специальным алгоритмам, что позволит решать задачи мониторинга территорий - дешифрировать, классифицировать и кластеризировать объекты и явления местности на основе технологий машинного обучения.

Читать далее

Удалённый доступ к графике в Linux: от X11 до Docker с GPU

Level of difficultyMedium
Reading time6 min
Views13K

Привет Хабр! С вами снова ServerFlow, и сегодня мы хотим поговорить об удалённом доступе к графическим приложениям на Linux-серверах. Тема эта стала особенно актуальной в последнее время – всё больше задач требует работы с GPU на удалённых машинах. Будь то рендеринг в Blender на мощном сервере, работа с нейросетями или даже облачный гейминг.

Обо всё этом в новой статье ниже.

Читать далее

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

Level of difficultyMedium
Reading time4 min
Views2.8K

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

Сегодня мы рассмотрим такую замечательную библиотеку как mlfinlab.

Если вы пытались применить методы машинного обучения к финансовым данным, то наверняка сталкивались с массой подводных камней: от шумных данных до проблем с автокорреляцией. mlfinlab — это библиотека, которая реализует передовые техники из книги Маркоса Лопеса де Прадо "Advances in Financial Machine Learning". Она позволяет не изобретать велосипед, а использовать проверенные временем методы для решения сложных задач финансового ML.

Читать далее

Запускаем Yolo на пятирублёвой монете или Luckfox Pico Mini

Level of difficultyMedium
Reading time29 min
Views27K

В данной статье речь пойдет про использование очень маленькой Luckfox Pico Mini. Я расскажу про особенности платы, её настройку, а также о том как запускать на ней нейронные сети для детекции объектов с камеры.

Мне удалось добиться скорости детекции в 15 FPS (или даже 50!), результат, который по силам далеко не каждому одноплатнику.

Читать далее

Pydantic 2: Полное руководство для Python-разработчиков — от основ до продвинутых техник

Reading time26 min
Views67K

Друзья, сегодня мы погрузимся в мир Pydantic 2 – мощного инструмента для валидации данных в Python! Узнаем, почему эта библиотека стала незаменимой в 30% Python-проектов и как она упрощает работу с данными. От базовых концепций до продвинутых техник – мы охватим всё, что нужно знать современному Python-разработчику. Готовьтесь к практике – ведь только так можно по-настоящему освоить Pydantic и сделать ваш код более надёжным и эффективным.

Читать далее

Пацанский английский. Ленивый способ наконец выучить английский язык: без курсов, без зубрежки, бесплатно

Level of difficultyEasy
Reading time9 min
Views202K

Привет, Хабр! Я не являюсь преподавателем английского языка, но, как и многие присутствующие, долгие годы хотел постигнуть его дебри. В школе я от всего сердца завидовал ребятам, которым он даётся налегке, без видимых трудностей. Я же зубрил, пытался понять, получал двойки… и люто ненавидел английский язык как школьный предмет. Мечтал владеть, но совсем не хотел учить. После школы и университета приступал к его изучению несколько раз, однако каждый мой всплеск быстро угасал.

Наконец случилось чудо. В одну из очередных попыток я нащупал способ, который позволил продолжать развиваться, делать успехи, осознавать их и разжигать мой огонь всё сильнее и сильнее. Сегодня мне сложно представить день, проведенный без английского языка. И мне не хочется говорить без “изучения”, поскольку не сказал бы, что я именно учу. Скорее — постепенно “прошиваюсь” английским, как это обычно происходит с новорожденным детьми, которые постепенно начинают говорить, слушая и наблюдая за своими родителями. В настоящее время мой словарный запас не такой большой: 9 — 12 тысяч слов (зависит от теста). Я свободно смотрю видео на Ютубе разнообразной тематики (видеоуроки, спорт, фитнес, музыка, путешествия, кулинария, обзоры и т.д.), читаю документацию, компьютерную и популярную литературу, публицистику.

Читать далее

Information

Rating
8,221-st
Location
Донецкая обл., Украина
Registered
Activity

Specialization

Backend Developer