Pull to refresh
24
0
Антон Зубарев @aszubarev

User

Send message

Самое понятное объяснение парадокса близнецов

Level of difficultyMedium
Reading time5 min
Views49K

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

Кратко напомню суть парадокса

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

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

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

Читать далее
Total votes 85: ↑81 and ↓4+98
Comments408

Мастерим собственные awaitables и циклы событий

Level of difficultyEasy
Reading time5 min
Views3.6K

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

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

Для этого можно создавать собственные awaitables и кастомные циклы событий.

Читать далее
Total votes 12: ↑9 and ↓3+10
Comments1

Путеводитель по Docker. От основ контейнеризации до создания собственного докера

Reading time10 min
Views27K

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

Читать далее
Total votes 16: ↑7 and ↓9+1
Comments3

Избавляемся от паролей

Level of difficultyEasy
Reading time10 min
Views18K

Меня зовут Александр Чикайло, я разрабатываю межсетевой экран уровня веб-приложений PT Application Firewall в Positive Technologies и специализируюсь на защите веба. Сегодня речь пойдет о беспарольной аутентификации и ее безопасном применении в приложениях. В этом материале я освещу систему passwordless-аутентификации, уже работающую «из коробки», например, в Windows 11 и Chrome.

В скобках замечу, что многие пока путают аутентификацию с авторизацией. Если упрощенно, аутентификация случается, когда я доказал, что я это я. Авторизация немного другое — это предоставление определенных прав для осуществления изменений в системе.  

Читать далее
Total votes 16: ↑14 and ↓2+14
Comments23

Знакомство с хранилищем Ceph в картинках

Reading time11 min
Views300K
Облачные файловые хранилища продолжают набирать популярность, и требования к ним продолжают расти. Современные системы уже не в состоянии полностью удовлетворить все эти требования без значительных затрат ресурсов на поддержку и масштабирование этих систем. Под системой я подразумеваю кластер с тем или иным уровнем доступа к данным. Для пользователя важна надежность хранения и высокая доступность, чтобы файлы можно было всегда легко и быстро получить, а риск потери данных стремился к нулю. В свою очередь для поставщиков и администраторов таких хранилищ важна простота поддержки, масштабируемость и низкая стоимость аппаратных и программных компонентов.

Знакомьтесь: Ceph


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



При выходе любого диска, узла или группы узлов из строя Ceph не только обеспечит сохранность данных, но и сам восстановит утраченные копии на других узлах до тех пор, пока вышедшие из строя узлы или диски не заменят на рабочие. При этом ребилд происходит без секунды простоя и прозрачно для клиентов.
Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments67

Как я сдавал AWS Cloud Practioner в 2024

Level of difficultyEasy
Reading time4 min
Views3.8K

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

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

Уникальные возможности Tarantool

Reading time4 min
Views103K

Tarantool — это крайне интересная база данных.
Представление о ней можно получить из доклада Константина Осипова Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?

Этой заметкой я хочу обратить внимание на уникальные возможности, которые отличают Tarantool от других подобных решений и делают его полезным инструментом.
Кроме того, я расскажу, чем можно помочь этому открытому проекту и почему это круто :)
Читать дальше →
Total votes 104: ↑84 and ↓20+64
Comments153

Pet-проект на Rust нуждается в конструктивной критике

Level of difficultyMedium
Reading time1 min
Views5.8K

Примерно 8 месяцев назад я написал на Rust pet-проект, который пытается быть подобием Hibernate в экосистеме Java. Я даже опубликовал его в качестве Open Source, но получил негативный отзыв и удалил его с GitHub.

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

Читать далее
Total votes 24: ↑10 and ↓14+4
Comments15

Удобное управление тестовыми окружениями в docker-compose

Level of difficultyEasy
Reading time2 min
Views6.8K

Всем привет, хочу рассказать о своей утилите dcw (Docker Compose Workspace) для удобного управления тестовыми окружениями на базе docker-compose.

Читать далее
Total votes 28: ↑28 and ↓0+33
Comments19

Как один опытный разработчик за три дня потерял аккаунт в Телеграме, а второй чуть не перевел «другу» 100 тысяч рублей

Level of difficultyEasy
Reading time8 min
Views15K

Коллеги из ИБ-отдела финансовой организации рассказали нам, как недавно атаковали их ИТ-специалистов — эту статью мы написали вместе с CISO, который активно участвовал в расследовании. 

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

Первый сотрудник попался на обновленную схему с фейковым голосованием и отдал мошенникам аккаунт в Телеграме вместе со всеми переписками. У второго сотрудника пытались выманить 100 тысяч рублей, но он вовремя обратился за помощью к своей команде безопасности и сохранил деньги.

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

Читать далее
Total votes 12: ↑9 and ↓3+9
Comments31

Go vs Rust. Что же лучше в конкурентности?

Reading time10 min
Views19K

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

Для упрощения я буду горутины в Go и асинхронные задачи в Rust называть корутинами. Для проверки различные тесты запускались на количестве корутин 101, 102, ..., 106. Смысл тестирования заключается в том, чтобы определить, какой из языков решит задачу наиболее быстро. По затраченному времени на выполнение задачи можно судить не только о скорости работы языка, но и том, насколько он страдает от большого количества конкуретных задач. Также в каждом тесте записывалась потребляемая память.

Читать далее
Total votes 24: ↑21 and ↓3+20
Comments20

Go против Rust — производительность вне конкуренции

Reading time5 min
Views52K

В статье Наблюдение за выполнением конкурирующих задач в Go и Rust коллега cpmonster привёл весьма интересные результаты:


Программа на Rust показала намного большую производительность при вычислении членов возвратной последовательности, чем программа на Go: 367 млн. итераций в секунду против 44 млн.

Ну, в 1.5 раза… Ну, в 2 раза… Но семь гвардейцев за два дня? — это слишком, тем более что тут "гвардейцев" больше восьми!


Или нет, не слишком? В общем, потенциал любопытства пересилил другие потенциалы и я провёл своё исследование.

Читать дальше →
Total votes 84: ↑82 and ↓2+103
Comments110

Без холивара «переписать все на Go»: проблема переносимости в Python и ее решение

Level of difficultyMedium
Reading time19 min
Views16K

На скриптовых языках удобно разрабатывать… И на этом удобство заканчивается. Вне машины разработчика начинаются проблемы. Особенно если вы пишете какой-то прикладной тулинг — cli-утилиты, вспомогательные приложения в вашем SDK и прочее. Вы даже не можете рассчитывать на то, что у пользователя будет pip, чтобы он смог поставить все ваши зависимости, вам все нужно организовать самостоятельно.

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

Если вам покажется, что в чем-то я ошибаюсь, добро пожаловать в комментарии. Буду рад услышать любые альтернативные точки зрения. Кроме, как я уже отметил в заголовке, рекомендации переписать все на Go/Rust/You name it :) Этот холивар мы уже проходили.

Читать далее
Total votes 70: ↑70 and ↓0+78
Comments34

Автоматический выпуск SSL-сертификатов. Используем Kubernetes и FreeIPA

Level of difficultyEasy
Reading time4 min
Views4.7K

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

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

Обзор K8s LAN Party —  сборника задач по поиску уязвимостей в кластере Kubernetes прямо в браузере

Level of difficultyEasy
Reading time9 min
Views4K

Я продолжаю тестировать инструменты, которые помогают научиться защищать кластеры Kubernetes. На этот раз взглянем на продукт от разработчиков из компании Wiz ResearchKubernetes LAN Party, челлендж по выполнению CTF-сценариев. Выход инструмента был приурочен к прошедшей в марте этого года конференции KubeCon EMEA 2024.

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

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

Делаем резервное копирование кластера ClickHouse: простая инструкция

Reading time4 min
Views3.1K

Делаем резервное копирование кластера ClickHouse: простая инструкция

Меня зовут Леонид Блынский и я администратор баз данных в Лиге Цифровой Экономики. В этой небольшой статье расскажу, как я делаю резервное копирование кластера ClickHouse размером 20 ТБ.

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

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

kafka dev-cluster in docker

Level of difficultyEasy
Reading time11 min
Views7.1K

Привет! В этой статье мы развернем dev-cluster kafka последней версии (3.7 на момент написания статьи), без использования zookeeper. Также в нашей сборке будет web-ui и все для мониторинга. В представленной конфигурации настроены SASL, SSL, ACL.

В чем полезность статьи? В статье представлен готовый docker-compose.yml для использования, который будет вам полезен если вы не сильно искушены в вопросах администрирования kafka и docker-compose, но уже хотелось бы начать заниматься разработкой, используя кластер kafka. Беглый поиск в интернет не дал результата в виде готового docker-compose.yml для конкретно такой конфигурации, которая потребовалась нам, поэтому было решено выложить полученный результат.

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

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

Как тимлиду совмещать работу в IT с жизнью

Level of difficultyEasy
Reading time7 min
Views13K

Привет, Хабр! Я Саша Шутай, руководитель направления PHP в AGIMA. Хочу обсудить важные для тимлидов вопросы: как управлять бэклогом и правильно распределять время, нормально ли отвлекаться во время работы, как овертаймить, не выгорать и успевать жить. Статья в первую очередь будет полезна начинающим тимлидам. Ну а матерые руководители команд найдут в ней советы по оптимизации работы.

Читать далее
Total votes 19: ↑16 and ↓3+15
Comments20

Священный холивар «Python vs Go»

Reading time3 min
Views11K
Выбери, на какой стороне ты, и встань на защиту своего любимого языка в решающей битве на Russian Python Week.



Что будет?


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

Холивар «Python vs Go» на Russian Python Week не будет:

  • мнением одного «эксперта»;
  • выступлением одного спикера, в котором, пускай и аргументированно, победитель заранее известен;
  • сравнением на синтетических тестах;
  • набором бенчамрков, которые заведомо выгодны для одного участника.

Битву начнут два представителя Python- и Go-сообщества, но каждый участник сможет повлиять на её ход. Конечное решение останется за вами.
Total votes 30: ↑14 and ↓16+3
Comments24

Как работает multiprocessing в Python под капотом

Level of difficultyHard
Reading time12 min
Views13K

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

Мне захотелось залезть в исходники multiprocessing, разобраться и заодно написать статью. Данная статья в основном рассчитана на новичков в Python и тех, кто хочет подробнее разобраться в том, как именно создаются процессы и пулы в Python и погрузиться в детали реализации.

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

Information

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

Specialization

Backend Developer, Software Architect
Lead
Git
SQL
Docker
Python
Django
RabbitMQ
Kubernetes
Database
Designing application architecture
Creating project architecture