Search
Write a publication
Pull to refresh
156
0
Виктор @TyVik

Full-stack developer

Send message

Многопоточный Python на примерах: токены отмены

Level of difficultyHard
Reading time10 min
Views12K

В этой статье мы обсудим паттерн "Cancellation Token", популярный в некоторых других языках, но почему-то обойденный вниманием в Python-сообществе. Он о том, как безопасно и красиво завершать работу функции, треда или корутины.

keep_on()

Фреймворки обратной связи

Level of difficultyMedium
Reading time8 min
Views11K

Недавно меня спросили, какие фреймворки обратной связи я знаю. Я растерялся и сходу вспомнил только бутерброд, а также то, что хвалить нужно публично, а ругать — приватно. Это заинтриговало меня: какие же существуют практики для правильной обратной связи?

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

Давайте разбираться

Пакуем весь трафик в Ping message, чтобы не платить за интернет | ICMP NAT traversal

Level of difficultyHard
Reading time29 min
Views102K

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

Так вот, переходя ближе к теме. Вы можете воспроизвести подобное поведение очень просто прямо сейчас при помощи вашего мобильного телефона и ноутбука. Я в своём конкретном кейсе буду пользоваться услугами оператора красного цвета, однако проблема актуальна для всех текущих 4 монополистов рынка сотовой связи. Как вам, скорее всего, уже известно, они около года меняют свою политику, внедряя одно интересное нововведение — с вас требуют дополнительной платы за раздачу интернета поверх основного пакета. То есть вы не можете взять и использовать свои 7 гигов на месяц как ресурс для раздачи при помощи точки доступа. Для точки доступа вам предлагают отдельный, зачастую совсем невыгодный тариф. Конечно, можно сменить основной тариф на специальный «тариф для раздачи» и платить втридорога, но, как вы понимаете, сегодня мы в потребителя будем играть совсем недолго. Сейчас по пунктам нужно доказать нечестность подобной политики и с чувством завершённого введения перейдём к непосредственно технотексту.

Подобные условия пользования, само собой, порождают внутреннее недовольство пользователей:

За интернет они платят? — Да.

Раздача как-либо использует ресурсы провайдера сверх нормы? — Нет.
Читать дальше →

Typescript: лучшие практики

Level of difficultyEasy
Reading time3 min
Views25K

Привет👋 В последние годы среди фронтенд разработчиков Typescript используется практически везде по умолчанию, начиная небольшими пет-проектами и заканчивая огромнейшими веб-приложениями. Однако, до сих пор на некоторых проектах можно встретить кучу any и Function. Давайте разберемся используете ли вы этот невероятно мощный инструмент правильно?

Читать далее

Графические оболочки FFmpeg

Level of difficultyEasy
Reading time6 min
Views40K


Считается, что работа в консоли эффективнее GUI по нескольким причинам. Во-первых, там быстрее набирать команды, чем двигать курсором. Во-вторых, на CPU, память и GPU не ложится лишнее бремя графической оболочки, так что любые процессы быстрее выполняются в консоли.

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

FFmpeg — изначально консольная утилита. Но её популярность крайне высока. Поэтому появляются всё новые варианты графических оболочек для FFmpeg, чтобы доступ к инструменту получили абсолютно все пользователи.
Читать дальше →

Роадмэп по современному фронтенду от KTS

Level of difficultyEasy
Reading time25 min
Views59K

Привет! Меня зовут Фёдор, я фронтенд-тимлид в KTS и преподаватель школы Metaclass.

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

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

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

Читать далее

Fooocus v2 — бесплатный Midjourney у вас на компьютере. Подробная инструкция по установке и использованию нейросети

Level of difficultyEasy
Reading time10 min
Views348K

Друзья, всем привет! Сегодня я хочу рассказать вам про самую простую и доступную для понимания нейросеть, которая создает изображения по вашему текстовому описанию. Она называется Fooocus и основана на знаменитой Stable Diffusion XL. Это идеальное решение в качестве вашей первой нейросети, и необходимый инструмент для любого дизайнера или контент мейкера.

Внутри много тяжелых изображений.

Читать далее

Kubernetes Scheduler в Деталях: Ключевые Концепции. Часть 2

Level of difficultyHard
Reading time13 min
Views5.9K

В мире, где Kubernetes доминирует в управлении контейнеризированными приложениями, один вопрос часто встаёт перед теми, кто стремится понять его внутренние механизмы: 'Как на самом деле работает k8s scheduler?' Эта статья предназначена для развенчания мифов и предоставления чёткого объяснения работы Kubernetes планировщика. Мы исследуем ключевые моменты этого процесса, начиная от того, назначает ли планировщик модули узлам один за другим в очереди или выполняет эту задачу параллельно, и заканчивая более сложными аспектами его работы. Погрузитесь в детали этой сложной, но увлекательной темы вместе с нами, чтобы лучше понять, как Kubernetes оптимизирует размещение подов в вашем кластере

Погружение в Мир Kubernetes Scheduler

eBPF в руках атакующего: обнаружение вредоносных модулей

Level of difficultyMedium
Reading time11 min
Views3.4K

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

Технология eBPF становится все более популярной и используются во многих приложениях для Linux. В нашей статье Анализ и обнаружение Dirty Pipe мы коснулись темы eBPF и как он может помочь при обнаружении эксплуатации уязвимостей ядра. Но инструмент с такими возможностями непременно заинтересует и злоумышленников. В этой статье мы рассмотрим, каким образом атакующие могут использовать eBPF и как можно их обнаружить.

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

В открытом доступе есть различное вредоносное ПО, основанное на eBPF, мы выбрали наиболее многофункциональные:


https://github.com/Gui774ume/ebpfkit
https://github.com/pathtofile/bad-bpf
https://github.com/krisnova/boopkit
https://github.com/h3xduck/TripleCross


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

Читать далее

Детектирование атак на контейнеры с помощью eBPF

Level of difficultyMedium
Reading time14 min
Views4.3K

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

Меня зовут Илья Зимин, я аналитик-исследователь угроз в компании R-Vision. Сегодня в статье я расскажу о возможностях обнаружения атак на контейнеризированные приложения с помощью такого инструмента, как eBPF, на примере приемов, связанных с побегом из Docker-контейнеров на Linux-системах.

eBPF (extended Berkeley Packet Filter) — это технология, которая предоставляет программный интерфейс в ядре Linux для обработки его событий в режиме реального времени. Он позволяет загружать и выполнять пользовательские программы в ядре без необходимости модификации самого ядра. Программы выполняются в виртуальной машине, что не позволяет ошибке в пользовательской программе повлиять на всю систему.

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

Читать далее

Здоровая конкуренция в GO. Главное не перехитрить самого себя

Level of difficultyMedium
Reading time15 min
Views16K

Несколько лет назад я прочитал статью о параллелизации в GO и ничего не понял – я тогда только начинал программировать на этом языке. Но размышления автора мне очень понравились – они подкреплялись бэнчмарками, что было довольно убедительно. Автор игрался c параметром GOMAXPROCS и показал, что увеличение этого параметра не всегда приводит к увеличению производительности. Под конец статьи он подобрал такое значение, которое будет максимально эффективным для его функции, на мое удивление, это значение оказалось равно единице! Т.е. его код работал максимально эффективно, если работал всего на одном ядре процессора! Однако, в одном из комментариев под той статьей я прочел, что все эти изыскания нелепы, поскольку та же самая функция из статьи запущенная всего в один поток оказывается эффективнее любой ее параллельной реализации.


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



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

Домофон, который знает, как вас зовут — своими руками

Level of difficultyMedium
Reading time12 min
Views13K
image

В мире современных технологий, где мы можем управлять многими устройствами через мобильный телефон или голосового ассистента, удивляет присутствие примитивных элементов, таких как неприятно пищащие зуммеры. Ведь они были изобретены еще в 1831 году! Я решил привнести некоторые современные функции в систему управления доступом (СКУД), которая является ключевой частью любого домофона. Мой проект направлен на создание более интуитивной и приятной для слуха системы управления доступом.
Читать дальше →

Реверс-инжиниринг ячейки регистра процессора Intel 386

Level of difficultyMedium
Reading time10 min
Views11K

Новаторский Intel 386 (1985 год) стал первым 32-битным процессором линейки x86. У него есть множество внутренних регистров: регистры общего назначения, индексные регистры, селекторы сегментов и более специализированные регистры. В этом посте мы изучим кремниевый кристалл 386 и объясним, как реализованы некоторые из этих регистров на уровне транзисторов. Изученные мной регистры реализованы как статическое ОЗУ, где каждый бит хранится в стандартной восьмитранзисторной цепи, называемой «8T». Исследование этой цепи демонстрирует интересные техники размещения, использованные Intel для «сжатия» двух ячеек с целью минимизации необходимого им пространства.
Читать дальше →

Кастомизируем VS Code для веб-разработки

Level of difficultyEasy
Reading time10 min
Views41K

Привет, меня зовут Филипп, я фронтенд-разработчик в KTS.

Visual Studio Code — это бесплатный, шустрый (что важно на больших проектах) и глубоко кастомизируемый редактор кода.

В статье расскажу, какие настройки и плагины VS Code использует наша команда фронтенда в KTS. Материал может быть полезен для JavaScript- и React-разработчиков, а ещё для тех, кто уже давно пользуется VS Code, но не знает о некоторых полезных плагинах и фичах для повседневного использования. 

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

Также я рассмотрел инструменты для оптимизации работы с Git, шаблоны директорий и другие возможные настройки.

Читать далее

Flutter Web умер. Да здравствует Flutter Web

Level of difficultyMedium
Reading time6 min
Views16K

У нас тут хоть и неофициальный, но очень способный наследничек объявился — Jaspr! 

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

Узнать, чем он так хорош

Как описать большую систему в нотации С4

Reading time6 min
Views83K

Хабр, привет!
Нас зовут Дмитрий Фролов и Владимир Мясников.Мы стандартизировали подход по документированию внутренних систем в команде интеграционного тестирования Мир Plat.Form с помощью «Модели С4».

Платежная платформа «Мир» представляет из себя десятки систем и сотни интеграций, за работоспособность которых отвечает наша команда. Разобраться новичку, и даже опытному сотруднику, в происходящем бывает непросто, и сегодня мы расскажем, как помогаем коллегам быстро и удобно получать информацию о наших системах.

Давайте разберемся, что такое «Модель С4» и какие задачи она помогает решать. С чего начать, если вам поступила задача задокументировать «большую» систему – читайте под катом.

Читать далее

Асинхронный python без головной боли (часть 1)

Reading time14 min
Views380K

Почему так сложно понять asyncio?

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

Но будь я автором самого толстого в мире учебника по python, я бы рассказывал читателям про асинхронное программирование уже с первых страниц. Вот только написали "Hello, world!" и тут же приступили к созданию "Hello, asynchronous world!". А уже потом циклы, условия и все такое.

Съешь красную таблетку

Глубокий JS. В память о типах и данных

Level of difficultyHard
Reading time10 min
Views33K

Всех нас учили, что в JavaScript есть примитивные и ссылочные типы данных. Исчерпывающая информация есть в официальной документации, а на просторах интернета полно статей на этот счет.

Теория теорией, однако, JS-код исполняется не в теории, а на практике. Точнее, его компилирует и исполняет движок JS. Таких движков существует несколько, разрабатывались они разными людьми и для разных целей. Было бы наивно предполагать, что все они полностью идентичны друг другу. А значит, время разобраться, как же на самом деле хранятся вполне конкретные данные на вполне конкретном движке JS V8.

Читать далее

Абсолютный минимум об Unicode на 2023 год (всё ещё — никаких оправданий!)

Level of difficultyMedium
Reading time18 min
Views19K

Двадцать лет назад Джоэл Спольски написал: «Не существует такой штуки, как «обычный текст». Если имеется строка, но неизвестно, какую кодировку символов она использует — смысла в этой строке нет. Больше нельзя спрятать голову в песок и притвориться, что «обычный» текст имеет кодировку ASCII.»

Многое изменилось за 20 лет. В 2003 году главный вопрос звучал так: «Что это за кодировка?». В 2023 году такой вопрос больше не стоит: с вероятностью в 98% это — UTF-8. Наконец то! Можно снова спрятать голову в песок!

Читать далее

Ликбез по вхождению в Data Science: что для этого нужно и стоит ли пытаться?

Level of difficultyEasy
Reading time9 min
Views36K

Всем привет! Меня зовут Надя, и сейчас я выступаю в роли ментора на программе Mentor in Tech и помогаю людям «войти» в Data Science. А несколькими годами ранее сама столкнулась с задачей перехода в DS из другой сферы, так что обо всех трудностях знаю не понаслышке.

Порог для входа в профессию очень высокий, так как DS стоит на стыке трех направлений: аналитики, математики и программирования. Но освоить специальность — задача выполнимая (хоть и непростая), даже если ты гуманитарий и списывал математику у соседа по парте.

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

Погрузиться в мир Data Science

Information

Rating
9,155-th
Location
Краснодар, Краснодарский край, Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Software Architect
Lead
Python
PostgreSQL
Linux
Docker
Kubernetes
RabbitMQ
Elasticsearch