Search
Write a publication
Pull to refresh
3
0.5

WEB-программист, сетевой администратор

Send message

Асинхронный SQLAlchemy 2: простой пошаговый гайд по настройке, моделям, связям и миграциям с использованием Alembic

Reading time30 min
Views48K

Наконец-то пришло время взяться за то, что я давно планировал — подробный гайд по асинхронной версии SQLAlchemy 2.0 в стиле ORM. В этой серии статей я подробно расскажу обо всех аспектах: от создания моделей и установления связей между ними до миграций с Alembic и взаимодействия с данными в базе. Мы будем шаг за шагом разбирать ключевые моменты работы с асинхронной базой данных, что позволит вам глубже понять SQLAlchemy и применить эти знания на практике.

Для начала, давайте разберёмся, что такое SQLAlchemy и почему каждый разработчик, работающий с реляционными базами данных (такими как SQLite, PostgreSQL, MySQL и т. д.), должен знать о ней. После этого — настройка. Мы будем работать с PostgreSQL, но не переживайте: код, который мы напишем, универсален для всех реляционных баз данных. Мы начнем с базовой настройки SQLAlchemy для асинхронного взаимодействия, а затем перейдём к созданию таблиц в современном декларативном стиле.

Читать далее

Почтовый сервер с нуля. Часть третья

Level of difficultyHard
Reading time17 min
Views18K

В этой заключительной статье мы подробно рассмотрим процесс настройки почтового сервера с использованием Docker и Exim4, Dovecot, PostfixAdmin и RainLoop. Наша цель — создать полностью функциональный и масштабируемый почтовый сервер, который легко управляется благодаря контейнеризации.

Давайте настраивать

Ведение дел – мой опыт

Level of difficultyEasy
Reading time10 min
Views9.1K

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

Создать свой список дел!

OSINT: Разведка в ЕВРОПЕ

Reading time9 min
Views13K

В статье на сегодня пойдёт разговор про OSINT на территории Европы.
Тема обширная, европа разношерстная, стран много, людей много, менталитет местами разный.

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

Итак, начнем с GEOINT и его основ.

Часовые пояса

Континент Европа разделен на следующие часовые пояса:
Часовой пояс Азорских островов (UTC-1);
Западноевропейский часовой пояс / Часовой пояс по Гринвичу/
Ирландский часовой пояс (UTC+0);
Центрально европейское время (UTC+1);
Восточноевропейское время (UTC+2);
Калининградский часовой пояс (UTC+2);
Восточноевропейский часовой пояс и Московский часовой пояс (UTC+3).

Часовой пояс достаточно сильно сужает объем мест поиска.
Так например, если вам попалась фотография с метаданными (что с одной стороны редкость, а с другой реальность), то в ней может быть прописано дата её создания или редактирования. Эта дата обычна указана в формате timestamp - это формат хранения даты и времени с учетом часового пояса.

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

К примеру exiftool, вот пример её работы.

Читать далее

Как настроить двухфакторную аутентификацию через Telegram для SSH

Level of difficultyEasy
Reading time9 min
Views14K

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

Двухфакторная аутентификация (2FA) – это мощный инструмент, который значительно повышает уровень безопасности, требуя подтверждения вашей личности с помощью второго фактора. В этом контексте, двухфакторная аутентификация через Telegram представляет собой эффективное решение, которое можно легко интегрировать в процесс SSH-подключения.

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

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

Читать далее

Telegram Mini App. Как создать Web App с нуля

Level of difficultyHard
Reading time13 min
Views155K

Mini Apps (или же WebApps) - это относительно новый и удобный способ добавления веб приложения прямо в интерфейсе приложения Telegram. Используя JavaScript, становится возможным создавать бесконечное множество интерфейсов, которые смогут заменить полноценный веб-сайт.

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

И сегодня мы попробуем создать miniapp приложение, взаимодействующее с данными пользователя.

Приступим

Читать далее

Пишем FastAPI с нуля на python

Reading time19 min
Views112K

FastAPI — это современная, быстрая (высокопроизводительная) веб-инфраструктура для создания API-интерфейсов с Python 3.7+ на основе стандартных подсказок типов Python.

В этой статье мы рассмотрим как написать его с нуля.

Читать далее

Чистый код: инверсия зависимостей (DIP)

Level of difficultyMedium
Reading time8 min
Views5.5K

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

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

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

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

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

Читать далее

Как сменить технологию и не закопаться в рефакторинге: опыт внедрения DDD в проект на FastAPI — Часть 2

Level of difficultyMedium
Reading time10 min
Views4.8K

Привет, хабравчане!

В первой части были рассмотрены паттерны проектирования Repository и Unit of Work.

Это вторая часть цикла о DDD. В ней расскажу, как добавить к проекту событийно-ориентированную архитектуру.

Код подопытного приложения ищите в репозитории по ссылке. Подробнее о DDD и паттернах Repository и Unit of Work читайте в первой части по ссылке...

Читать далее

Как нарисовать квадрат 3 × 3 см на веб-странице*

Reading time5 min
Views30K

* Не привлекая внимания санитаров

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

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

Что ж, вызов был брошен. И я поставил себе задачу (вы же тоже сами ставите себе задачи?) — нарисовать красивый красный квадратик размером 3 × 3 см. Тому, что у меня в итоге получилось, и посвящён мой необычный рассказ. 

Читать далее

От PuTTY до МС22: сравниваем SSH-клиенты

Level of difficultyMedium
Reading time5 min
Views34K

На сегодняшний день SSH-клиентов написано множество: от встроенных в ОС терминалов до отечественных решений вроде МС22. Я решил протестировать популярные варианты и сравнить, какой будет лучше.

Читать далее

Postman: почтальон на страже API

Level of difficultyMedium
Reading time18 min
Views8.5K

Привет! Меня зовут Бальцер Вадим, я QA-инженер в команде android направления Банки.ру. Сегодня поделюсь нашим опытом внедрения автотестов обратной совместимости и интеграции их в CI. 

В материале расскажу: 
1) зачем нашей команде понадобились автотесты для контроля обратной совместимости API, почему мы выбрали Postman CI.
2) с чего начали: базовые вещи + полезные советы для начинающих.
3) есть ли жизнь за гранью проверок схемы.
4) CI и интеграция с ТестОпс.
5) к чему пришли и какие перспективы видим.

Также добавлю примеры примеры кода и небольшие советы, которые могут пригодиться, если вы еще только присматриваетесь к Postman как к инструменту автоматизации проверок API.

Читать далее

Самые опасные сетевые порты: как найти и закрыть все лазейки

Reading time7 min
Views39K

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

Привет! Меня зовут Ваня, я ведущий инженер по информационной безопасности в Selectel. В этом материале разберу, какие порты наиболее интересны хактивистам и как быть в курсе актуальных уязвимостей. А в конце поделюсь чек-листом с планом действий при обнаружении открытых портов в своей инфраструктуре. Подробности под катом!
Читать дальше →

Секреты айтишной карьеры, о которых лучше не рассказывать…

Level of difficultyEasy
Reading time11 min
Views89K

Секреты айтишной карьеры, о которых лучше не рассказывать...

...но которыми всё же с нами поделился QA lead "ITQ Group" Сергей Мурашов.

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

Читать далее

Гайд по логам для тестировщиков

Level of difficultyEasy
Reading time15 min
Views21K

Почти четыре года я познаю дивный мир тестирования в департаменте корпоративных систем ЛАНИТ. Последние полтора ― на финтехпроектах, поэтому работа с логами стала частью моего рабочего процесса. В этом гайде я познакомлю вас с ключевыми моментами, которые помогут понять логи лучше и применять инструменты логирования эффективнее.

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

Читать далее

Простой мини-чат на FastApi: Современный интерфейс, вебсокеты и SQLAlchemy с деплоем

Reading time40 min
Views29K

Привет, друзья! Сегодня я подготовил для вас увлекательную практическую статью о создании мини-чата на FastApi. Мы погрузимся в мир вебсокетов, узнаем, зачем они нужны и как применяются в реальных приложениях. Также я продемонстрирую работу с асинхронной SQLAlchemy на примере взаимодействия с базой данных SQLite.

Для создания современного интерфейса мы обратимся к интересному и бесплатному сервису Websim.ai, который за пару минут сгенерирует нам интерфейс, включая страничку для входа/регистрации и страницу самого чата.

Чтобы наш чат мог обслуживать множество пользователей одновременно, мы выполним деплой нашего FastApi приложения. Для этого воспользуемся сервисом Amvera Cloud. Нам нужно будет подготовить файлы приложения, написать код, создать файл с настройками (можно сгенерировать на сайте или скопировать мой код), а затем доставить файлы на сервис. Для доставки можно использовать встроенный терминал или GIT, используя стандартные команды PUSH/PULL.

Но прежде чем мы погрузимся в код, давайте кратко обсудим, что такое вебсокеты и как они работают в контексте FastApi.

Читать далее

Создание аппаратно-независимых библиотек для микроконтроллеров

Level of difficultyMedium
Reading time10 min
Views12K

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

Суть создания аппаратно-независимой библиотеки состоит в том, чтобы отвязаться от того уровня абстракции (библиотеки и фреймворки), который предоставляет производитель микроконтроллеров, внутри реализуемой библиотеки. Например, для STM32 - HAL, ESP32 - ESP-IDF или Arduino, для AVR зачастую используют Arduino. Это позволит использовать одну и ту же библиотеку на различных микроконтроллерах (и не только) без изменения кода библиотеки под каждый камень.

Читать далее

Кодирование с кодеком HEVC простым языком — гайд на FFmpeg. Высокое качество, но низкий вес

Level of difficultyEasy
Reading time11 min
Views35K

Казалось бы, довольно простой вопрос: «Чем сжать видео?». На ум сразу приходят Handbrake, Movavi Converter или ещё что-нибудь пострашнее. Однако когда речь заходит о более гиковском подходе с упором на максимальное качество и экономию места, такие программы сложно назвать инструментами. Равно как и для обратной ситуации, когда картинку нужно сильно сжать и сохранить в целостности большую часть полезной информации. Все эти программы только лишь предоставляют набор наиболее общих конфигов для обычной съёмки и 2D.

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

Information

Rating
3,678-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity