Статьи
9 прочтений · 1 месяц назад
Django 41. Комментарии к постам
В нашем проекте не хватает одного важного элемента – блока комментариев на странице поста. Давайте исправим это. Что мы сделаем: Модель комментария. Для хранения комментариев нам нужна модель. Откроем файл models.py в директории приложения blog. Создадим класс CommentModel, унаследованный от models...
8 прочтений · 2 месяца назад
Отправка поста с Django в AIOgram - обновление
В посте "Django + AIOgram3 + Redis - Отправка поста с Django в AIOgram" я рассказывал как отправлять текст поста в AIOgram, обрабатывать и публиковать в Telegram-канале. Это была первая версия обработчика, которая работала, но была не совсем удобна в использовании. После нескольких месяцев использования...
5 прочтений · 2 месяца назад
Создание резервных копий VPS на Яндекс Диск
Бэкапы – больная тема. Разработчики скажут "какие бэкапы? У меня есть git!" и будут правы. Частично. Git, безусловно, позволяет откатиться на прошлую, "рабочую", версию. Но что будет, если откажет накопитель с проектом, который был размещен локально? Или случатся проблемы с сервером, где, помимо файлов проекта, лежит ещё и БД? Где бэкапы? Где резервные копии? Их нет... Давайте исправим это. Почему я задумался о бэкапах? Всё просто. У меня на сервере сейчас много всего: Потерять это будет крайне обидно...
3 прочтения · 2 месяца назад
Сравнение интерпретатора Python и компилятора C
Всем доброго дня! Сегодня я продолжу свою рубрику о сравнении работы двух языков программирования: Python и C. В предыдущей статье я сравнивал типизацию Python и C и показал процесс компилирования программы на C. Компиляция проводилась, чтобы посмотреть на результат работы программы C. Тут у читателя сразу могли появиться вопросы: "В Python нет компиляции, что же происходит там?" или "Где сравнение того, что происходит под капотом у этих двух языков?". Конечно, я не могу обойти эту интересную и сложную тему без освещения в своей рубрике...
1 прочтение · 2 месяца назад
ООП на Python. ч. 2. Статические методы
Что такое статический метод? Если выражаться просто, статический метод – это такой метод, который может выполнять свою работу, не имея доступа к информации, хранящейся в атрибутах экземпляра класса. То есть по сути статический метод не привязан к экземплярам класса. Данные, которые имеют отношение к конкретному объекту, никак не влияют на работу статического метода этого объекта. Всем ли методам класса нужен объект self? После нашего первого поста вы могли подумать, что объект self необходимо передавать в качестве аргумента всем без исключения методам класса...
12 прочтений · 2 месяца назад
Поздравление с 8-м марта!
Всемирный женский день - самый милый праздник в году. И это действительно так! Женщины, девушки, дамы украшают своим присутствием всё: семьи, группы, коллективы. И наш коллектив не исключение. По статистике на женщин в российском it-секторе приходится примерно треть общего кадрового состава. И даже в наших микроскопических коллективах – редакции «Кода на салфетке» и команде «Некоего проекта» – эта доля плюс-минус соблюдается: в первом девушек у нас четверть, а во втором – 31%. Но и в том, и в другом случае цифры не должны вводить в заблуждение...
18 прочтений · 2 месяца назад
Разворачивание Django-проекта на Replit
В одном из прошлых постов я рассказал о том, как развернуть Django-проект на бесплатном сервисе PythonAnyWhere. В этом посте поговорим о другом сервисе, который знаком многим - Replit. Replit - это онлайн IDE для разных языков программирования. Помимо онлайн интерпретатора, он также позволяет размещать у себя небольшие проекты. Естественно, с ограничениями, но, как и было сказано ранее, этот способ подойдёт для демонстрации проекта, а не для рабочего использования. Развернуть проект на Replit намного проще, чем на PythonAnyWhere...
21 прочтение · 3 месяца назад
Docker 7. Разворачивание Telegram-бота в Docker на VPS
Следующий шаг после (или даже в процессе) разработки какого-либо проекта – разворачивание (deploy) на сервере. Для этого будем использовать Docker. Запустить бота, сайт или любой другой проект на сервере можно и без контейнеризации. Проблем не будет, если проект всего один. Когда проектов на сервере несколько, становится труднее контролировать версионность и решать конфликты зависимостей. Именно для этого есть Docker. Он упрощает разворачивание проектов на сервере, позволяет контролировать требуемые...
17 прочтений · 3 месяца назад
Разворачивание Django-проекта на PythonAnyWhere
Есть несколько сервисов, которые позволяют бесплатно развернуть проекты на Django (и не только). Их немного и в каждом есть свои ограничения, но они порой бывают полезны, когда собственного сервера нет, но нужно, например, показать результат работы заказчику. В этом посте мы развернём проект на сервисе PythonAnyWhere. Адрес сервиса: https://www.pythonanywhere.com Регистрация в сервисе достаточно простая, нет смысла её описывать. В процессе регистрации осознанно выбирайте username, поскольку именно он будет адресом сайта в интернете...
3 прочтения · 3 месяца назад
AIOgram3 17. Подготовка к разворачиванию на сервере
В одном из следующих постов в цикле "Применение Docker" мы с вами будем разворачивать бота на сервере, но перед этим необходимо кое-что подготовить. Когда мы прописывали токен бота в посте "AIOgram3 3. Основная функция", я упомянул, что хранение в коде секретных данных небезопасно. В данном посте мы исправим это, и я покажу, как правильно передавать секреты в бота. Переменные окружения. Переменные окружения (environment variables) – это механизм хранения данных, который позволяет хранить конфигурационные параметры вне кода...
11 прочтений · 4 месяца назад
AIOgram3 16. Перевод голосовых сообщений в текст
Голосовые сообщения – весьма спорная тема. Кто-то без них жить не может, а кто-то ненавидит их всей душой. Если опустить прения на эту тему, то у голосовых сообщений есть одна проблема: их банально не всегда удобно слушать. Чаще всего голосовые сообщения – это "информация в моменте", и, когда появляется возможность прослушать их, они теряют свою актуальность. У нас в чате любят слать голосовые, и, чтобы все могли оставаться "в теме", даже когда не у каждого есть возможность прослушать их, мы решили научить бота переводить голосовые в текст...
5 прочтений · 4 месяца назад
Django 40. Собственные страницы ошибок
Ошибки на сайте случаются постоянно, но далеко не все из них происходят по вине программиста. Самая знаменитая ошибка – 404 Not Found – относится к пользовательским ошибкам, когда был совершён переход на несуществующую страницу. Ещё одна известная ошибка – 500 Internal Server Error – относится к ошибкам на стороне сервера. Это означает, что сервер не справился с какой-то задачей...