Как стать автором
Обновить
32
2.7
Евгений Казанов @evgenyk

Пользователь

Отправить сообщение

Встроенные механизмы безопасности фреймворков Python

Время на прочтение10 мин
Количество просмотров2.2K

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

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

Читать далее
Всего голосов 6: ↑6 и ↓0+9
Комментарии3

Как я написал бота для саммари telegram каналов

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.6K

Всем привет!
Меня зовут Азрет, я - CTO в AAA (читается как "трипл-эй"). Мы разрабатываем LLM приложения для бизнеса. Решаем разнообразные задачи - оптимизация внутренних процессов за счет ИИ, маркетинговые исследования и запуск новых продуктов. Но запрос на бота, про которого я хочу рассказать, внезапно пришел от фаундера нашего агенства.

Ситуация понятна - я подписан на кучу телеграм каналов, я не успеваю их читать, мне от этого неприятно, я испытываю FOMO. А я бы хотел не пропустить ничего важного, тратить как можно меньше времени и иметь все в одном месте.

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

В этой обзорной статье - детали архитектуры и стека.
Кому интересно - прошу под кат.

Читать далее
Всего голосов 12: ↑10 и ↓2+10
Комментарии19

Что делает ChatGPT… и почему это работает?

Уровень сложностиСредний
Время на прочтение75 мин
Количество просмотров156K

То, что ChatGPT может автоматически генерировать что-то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи - дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более-менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать. (Примеры в статье применимы как к другим современным "большим языковым моделям" (LLM), так и к ChatGPT).

Читать далее
Всего голосов 248: ↑248 и ↓0+248
Комментарии121

Telegram Web App, FastAPI и вебхуки в одном приложении: Создаем Telegram-бот с веб-интерфейсом для приема заявок

Время на прочтение49 мин
Количество просмотров19K

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

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

Для разработки самого бота мы воспользуемся библиотекой Aiogram 3, которая обеспечит удобный и мощный интерфейс для взаимодействия с Telegram API. Это позволит нам быстро реализовать необходимые функции и сделать процесс разработки более эффективным.

Читать далее
Всего голосов 20: ↑18 и ↓2+19
Комментарии9

Неинтерактивная SSH-аутентификация

Время на прочтение3 мин
Количество просмотров8.1K


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

Чтобы не вводить пароль каждый раз вручную, есть специальные инструменты для автоматизации логина, то есть для неинтерактивной SSH-аутентификации. Это классическая утилита sshpass и её «исправленный» вариант passh (подробнее о причине «исправления» см. здесь).
Читать дальше →
Всего голосов 16: ↑15 и ↓1+19
Комментарии39

Редактирование образа Raspberry Pi с помощью qemu-user-static (Ubuntu 14.04)

Время на прочтение5 мин
Количество просмотров19K
image

Иногда необходимо редактирование стандартных загрузочных образов, а также конфигурирование систем с последующим тиражированием на большое количество плат Raspberry Pi. Для решения подобных задач удобно использовать пакеты qemu-user-static и binfmt-support.
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии3

Embedded Linux в двух словах. Второе

Время на прочтение25 мин
Количество просмотров34K

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

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

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

Читать далее
Всего голосов 25: ↑24 и ↓1+31
Комментарии19

Получаем виртуальный raspberry pi с помощью QEMU. Часть 2

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.5K

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

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Получаем виртуальный raspberry pi с помощью QEMU. Часть 1

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров11K

Зачастую новички используют поставляемую производителем операционную
систему, систему на базе Debian. Загрузившись, новичок начинает настройку системы «под себя». Я решил показать процесс создания виртуального клона raspberry pi, чтобы не производить эти действия на самом одноплатнике.

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии7

«База данных» в гугл таблицах для телеграм-бота

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров7K


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


Для хранения информации можно использовать гугл-таблицы.


Сегодня мы разберём пример телеграмм бота для проведения тестов, где вопросы и ответы хранятся в разных вкладках одной Google-таблицы. Почему одной? Опять же, для облегчения доступа для потенциальных пользователей.

Читать дальше →
Всего голосов 10: ↑10 и ↓0+13
Комментарии14

От документации к готовому API: Генерация кода из Swagger для FastAPI

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2K

В статье вы узнаете, как с помощью OpenAPI Generator преобразовать OpenAPI-документацию в рабочие роуты и Pydantic модели для FastAPI. Один раз настроив конфигурацию, вы сможете за секунды создавать готовый код, что значительно ускоряет разработку и упрощает поддержание API.

Итак, давайте разбираться!
Всего голосов 5: ↑4 и ↓1+5
Комментарии8

Микросервисы. Исследование кухни

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров7.7K

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

Читать далее
Всего голосов 15: ↑12 и ↓3+11
Комментарии9

Полноценный API на Django REST Framework: легкая разработка, автодокументация и быстрый деплой

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров7.6K

Сегодня мы погрузимся в процесс создания собственного API на Django с использованием мощного инструмента — Django REST Framework (DRF). Этот фреймворк предоставляет полный набор инструментов для разработки API: маршрутизация, сериализация данных, обработка запросов и формирование ответов. DRF значительно упрощает взаимодействие с клиентами через HTTP, поддерживая такие методы, как GET, POST, PUT и DELETE.

Однако, в отличие от FastAPI, Django REST Framework не включает встроенный инструмент для автодокументирования API. Мы легко решим эту задачу, воспользовавшись расширением drf‑spectacular, которое генерирует спецификации API в формате OpenAPI 3.0. Это позволит интегрировать интерфейсы, такие как Swagger и Redoc, для удобного тестирования и наглядной визуализации документации.

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии16

Мини-гайд по отправке сообщений из Google Таблицы или базы данных с Python

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.3K

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

Pipeline для личных фото и видео

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.8K

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

Моё медиа хранилище в 948,4 GiB выглядит сейчас вот так (фото начинаются с 2001 года)

Читать далее
Всего голосов 11: ↑10 и ↓1+10
Комментарии29

Настройка cервера с помощью docker для простых проектов. Часть вторая: docker-compose

Время на прочтение19 мин
Количество просмотров77K

Настройка cервера с помощью docker для простых проектов. Инструкция для самых маленьких. Часть вторая: docker-compose.

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

Читать далее
Всего голосов 11: ↑10 и ↓1+9
Комментарии10

Экстремальная оптимизация скорости загрузки Raspberry Pi

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров9.4K

Некоторое время назад был создан проект SolarCamPi — автономная камера на солнечных батареях с Wi‑Fi.

В этом проекте Raspberry Pi Zero 2 W загружается в Linux, делает снимок, подключается к Wi‑Fi и затем выключается (для экономии энергии). Цикл повторяется каждые несколько минут, чтобы постоянно отправлять актуальные изображения в облачный сервис.

Каждая секунда работы Pi Zero, расходует ценную электроэнергию – ресурс, который постоянно находиться в дефиците у устройств на солнечных батареях (по крайней мере зимой в Западной Европе).

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

Читать далее
Всего голосов 48: ↑48 и ↓0+57
Комментарии21

Django 5: асинхронный бекенд и эффектный фронтенд с минимальными затратами времени

Время на прочтение17 мин
Количество просмотров4.9K

Приветствую, друзья!

Уже давно у меня возникала мысль подробно, как в случае с FastAPI и Aiogram 3, разобрать «суровый» Django 5. Однако, из-за большого дефицита свободного времени и масштабности Django, руки до этого не доходили. Сегодня, как вы уже поняли, момент настал.

В процессе написания кода мы затронем следующие темы: маршрутизация, работа со статическими файлами, асинхронное использование Django 5, работа с базой данных SQLite через встроенное ORM и многое другое.

Сегодня мы создадим простой сайт, который будет демонстрировать гороскоп на завтра для любого знака зодиака. Чтобы было интереснее, гороскоп будем парсить в момент обращения к знаку зодиака (об этом подробнее далее).

Читать далее
Всего голосов 11: ↑9 и ↓2+10
Комментарии12

Топ 5 продвинутых инструментов Data Science. Изучи за выходные и будешь выделяться

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров15K

Привет, чемпионы! Сегодня рассмотрим, как облегчить себе жизнь, применяя 5 инструментов в своих проектах. Эти инструменты улучшат ваш код, сделают ваш pipeline более стабильным и позволят не писать один код по 10 раз. Круто? Погнали!

Изучать новое!
Всего голосов 13: ↑11 и ↓2+13
Комментарии14

Наводим порядок с базами данных. Переносим файлы в S3, мигрируем в единый кластер

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5.5K

«Что там с базами, не пора ли добавлять ресурсов?» — казалось бы, звучит как дежурная реплика менеджера, и классический ответ на неё: «всё ок, до конца недели должно хватить!». 

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

Однажды на вопрос «что там с базами?» мы в команде решили ответить несколько иначе. Вместо «до конца недели должно хватить» — сказали: «давайте мигрируем базы в единый кластер, а тяжёлые файлы перенесём в S3».

О том, что из этого вышло, читайте под катом.

Читать далее
Всего голосов 20: ↑20 и ↓0+22
Комментарии11
1
23 ...

Информация

В рейтинге
1 299-й
Откуда
Висагинас, Литва, Литва
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Senior
Python
Linux
Git
Docker
Kubernetes
English
Bash
PostgreSQL
MySQL
Django