Кодим вместе: Путь к IT-Успеху
530 subscribers
112 photos
1 video
104 links
🌟Всем привет! Я начинающий Python-разработчик, вернувшийся к обучению. Здесь делюсь своими планами и достижениями, чтобы мотивировать вас и себя заниматься программированием каждый день! 🚀
Download Telegram
🤔 ПРО МОДУЛЬ abc 🤔

В языке Python есть еще один распространенный способ объявления абстрактных методов класса через декоратор abstractmethod модуля abc:
from abc import ABC, abstractmethod

Чтобы корректно работал декоратор abstractmethod сам класс должен наследоваться от базового класса ABC. Например, так:
class Transport(ABC):
@abstractmethod
def go(self):
"""Метод для перемещения транспортного средства"""

@classmethod
@abstractmethod
def abstract_class_method(cls):
"""Абстрактный метод класса"""

Мы здесь имеем два абстрактных метода внутри класса Transport, причем, первый метод go() - это обычный метод, а второй abstract_class_method() - это абстрактный метод уровня класса. Обратите внимание на порядок использования декораторов classmethod и abstractmethod. Они должны быть записаны именно в такой последовательности.

Теперь, если объявить какой-либо дочерний класс, например:
class Bus(Transport):
def __init__(self, model, speed):
self._model = model
self._speed = speed

def go(self):
print("bus go")

@classmethod
def abstract_class_method(cls):
pass

То в нем обязательно нужно переопределить абстрактные методы go и abstract_class_method класса Transport. Иначе, объект класса Bus не будет создан (возникнет исключение TypeError).


Также с помощью модуля abc можно определять не только абстрактные методы, но и абстрактные объекты-свойства (property). Делается это следующим образом:
from abc import ABC, abstractmethod

class Transport(ABC):
@abstractmethod
def go(self):
"""Метод для перемещения транспортного средства"""

@property
@abstractmethod
def speed(self):
"""Абстрактный объект-свойство getter 'speed' """

@speed.setter
@abstractmethod
def speed(self, value):
"""Абстрактный объект-свойство setter 'speed' """

Порядок навешивания декораторов важен! Конечно, вы можете в базовом классе Transport не прописывать "property", и без этого сработает. Но так лучше все-таки делать, чтобы понимать как именно надо реализовывать этот метод в дочернем классе.

Комментарии и реакции приветствуются👇
🔥 — Огонь, приму на вооружение!
🤔 — Знал, но освежил память.
💬 — Есть вопросы в комментарии!
🔥5
👿Алгоритм Дейкстры или куда пропал мой вчерашний день.👿

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

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

Собственно сел решать, на 95% всё описал по ТЗ. Казалось бы почти все. Но как же я ошибался😅Это оказалось лишь верхушкой айсберга)

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

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

А у вас как дела обстоят с графами?)
🎃4🔥2
👁Множественное наследование в Python👁

Это когда класс наследуется от нескольких родителей. Не самый частый, но мощный инструмент!

📚 Часть 1: Простой пример

🎯 Главный кейс — миксины (примеси) — классы, которые добавляют одну конкретную фичу другим классам.

👉 Простой пример:
class Goods: # Товары
def __init__(self, name, weight, price):
super().__init__() # 🔑 ключевой момент!
self.name = name
self.weight = weight
self.price = price

def print_info(self):
print(f"{self.name}, {self.weight}, {self.price}")

class MixinLog:
ID = 0

def __init__(self):
super().__init__() # здесь для примера
MixinLog.ID += 1
self.id = MixinLog.ID

def save_sell_log(self):
print(f"Товар с id={self.id} был продан в {datetime.now()}")

# Множественное наследование
class Notebook(Goods, MixinLog):
pass

n = Notebook('Acer', 1.5, 30000)
n.print_info() # Acer, 1.5, 30000
n.save_sell_log() # работает!

Что происходит?

1. Создаем Notebook → вызывается Goods.init
2 . super().init() в Goods передает управление MixinLog.init
3. Оба инициализатора выполняются

🧠 Как работает super()?
Раньше, уже думаю, ее видели и понимаете что она делает. Я тоже так думал, но оказалось не совсем верно понимал🫣
Оказывается super() возвращает не просто "родительский класс", а следующий класс в MRO (Method Resolution Order) — порядке обхода классов при наследовании.

👉 Цепочка вызовов в данном примере:
1. Notebook() → Goods.init()
2. super().init() в Goods вызывает MixinLog.init()
3. super().init() в MixinLog вызывает object.init()
4. Все инициализаторы выполнены!

🔍 Важно: порядок имеет значение!
Порядок наследования (Goods, MixinLog) определяет MRO (Method Resolution Order):
print(Notebook.__mro__)
# (<class '__main__.Notebook'>,
# <class '__main__.Goods'>,
# <class '__main__.MixinLog'>,
# <class 'object'>)

💎 Правила для миксинов:

1. Делайте их максимально простыми и узкоспециализированными
2. Всегда вызывайте super().init() в init
3. Ставьте миксины после основного класса в наследовании

🎯 Зачем это нужно?

• Переиспользование кода без дублирования
• Гибкое расширение функциональности
• Чистая архитектура (разделение ответственности)

📌 Итог:
Миксины — это как LEGO для классов. Добавляйте готовые блоки функциональности, не ломая основную логику!

А вы использовали множественное наследование или миксины на практике? 👇
👍4
📚 Часть 2: MRO и конфликты методов в Python

🔍 Что такое MRO на самом деле?

MRO (Method Resolution Order) — это алгоритм, который определяет порядок поиска методов и атрибутов при множественном наследовании.
class A:
def method(self):
print("A")

class B(A):
def method(self):
print("B")

class C(A):
def method(self):
print("C")

class D(B, C):
pass

print(D.__mro__)
# (<class '__main__.D'>, <class '__main__.B'>,
# <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

d = D()
d.method() # Вывод: "B" (первый в MRO)

🎯 Как Python вычисляет MRO?
Используется алгоритм C3 Linearization. Главные правила:

• Дочерний класс всегда перед родительским
• Порядок наследования сохраняется
• Более левые классы в наследовании имеют приоритет

⚔️ Разрешение конфликтов методов

Рассмотрим ситуацию, когда несколько родительских классов имеют методы с одинаковыми именами, и как можно управлять их вызовом:
class Printer:
def action(self):
return "Печатаю"

class Scanner:
def action(self):
return "Сканирую"

class Copywriter:
def action(self):
return "Копирую"

class MFP(Printer, Scanner, Copywriter):
pass

🔍 1-й вариант: Оставить как есть (используется первый по MRO)
mfp = MFP()
print(mfp.action()) # 👉 "Печатаю"

Почему? MRO для класса MFP: MFP → Printer → Scanner → Copywriter → object. Python находит метод action() в классе Printer первым и останавливается.

🎯 2-й вариант: явный вызов метода из конкретного класса

print(Scanner.action(mfp)) # 👉 "Сканирую"

Важно: При таком вызове нужно явно передавать объект (mfp) первым аргументом, так как мы вызываем метод класса, а не объекта.

🔧 3-й вариант: Переопределить метод в дочернем классе
class MFP(Printer, Scanner, Copywriter):
def action(self):
return Scanner.action(self)

# Своя уникальная логика
# return "Я МФУ, делаю всё!"

mfp2 = MFP()
print(mfp2.action()) # "Копирую"

📊 Когда что использовать:

1-й способ — когда порядок MRO вас устраивает и конфликтов нет
2-й способ — для разового вызова метода из конкретного родителя
3-й способ — для постоянного изменения поведения или комбинирования логики

⚠️ Замечание:
Хотя явный вызов методов через Класс.метод(объект) работает, это жёсткая привязка к конкретному классу. Если изменится иерархия наследования, такой код может сломаться. Переопределение метода в дочернем классе — более гибкий и поддерживаемый подход.

💡Напоминаю - проверить MRO можно всегда:
print(MFP.__mro__)
# (<class '__main__.MFP'>, <class '__main__.Printer'>,
# <class '__main__.Scanner'>, <class '__main__.Copywriter'>, <class 'object'>)


Вывод
: В Python есть гибкие механизмы для работы с наследованием. Выбирайте подход в зависимости от задачи — от простого использования MRO до полного контроля через переопределение методов.
🔥3
🎯 Коллекция __slots__ в Python. Что это?

__slots__ — это специальный атрибут класса, который определяет разрешённые имена локальных свойств экземпляров.

🔧 Пример использования:
class Point:
__slots__ = ('x', 'y') # Разрешаем ТОЛЬКО 'x' и 'y'

def __init__(self, x, y):
self.x = x # Можно
self.y = y # Можно

p = Point(1, 2)
p.z = 3 # Ошибка! Только 'x' и 'y'


⚠️ Важный момент:
# При slots у объектов нет dict
print(p.__dict__)  #  AttributeError! 


💪 3 главных преимущества:

1️⃣ 🔒 Ограничение свойств
• Можно создавать ТОЛЬКО атрибуты из slots
• Защита от опечаток и случайных атрибутов

2️⃣ 💾 Экономия памяти
• У объектов не создается `__dict__` (обычный словарь атрибутов)
• Атрибуты хранятся более эффективно
• Экономия 20-50% памяти на каждый объект

3️⃣ ⚡️ Ускорение работы
• Быстрее читать/писать разрешённые атрибуты
• Прямой доступ вместо поиска в словаре

🎯 Идеально для:
• Фиксированных структур данных
• Массового создания объектов
• Оптимизации памяти в сервисах
🔥4
🎯 __slots__ с property и при наследовании

Рассмотрим два важных аспекта использования __slots__ — взаимодействие с декоратором property и особенности наследования.

🔧 slots и property
• Возьмём за основу класс Point из прошлого поста.
• Добавим в slots еще одно допустимое свойство - 'length'.
• А что будет, если добавить property с таким же именем 'length'?

class Point2D:
__slots__ = ('x', 'y', '__length') # Используем защищенный атрибут

def __init__(self, x, y):
self.x = x
self.y = y
self.__length = (x**2 + y**2)**0.5

@property
def length(self):
return self.__length

@length.setter
def length(self, value):
self.__length = value


Работает отлично! Потому что:
• length в property — это атрибут класса, а не локальное свойство экземпляра.
slots не запрещает работу с такими атрибутами!

🔧 slots и наследование

Базовый класс:
class Point:
__slots__ = ('x', 'y')

def __init__(self, x, y):
self.x = x
self.y = y


Дочерний класс БЕЗ __slots__:
class Point3D(Point):
pass

pt3 = Point3D(10, 20)
pt3.z = 30 # Работает!
print(pt3.__dict__) # {'z': 30} - x и y не в dict!


📌 Важно: если не определить slots в дочернем классе, у объектов появится dict и можно создавать любые атрибуты!

Дочерний класс С __slots__:
class Point3D(Point):
__slots__ = ('z',) # Добавляем только новые атрибуты

pt3 = Point3D(10, 20)
pt3.z = 30 # Работает
pt3.w = 40 # Ошибка! Только x, y, z разрешены


🎯 Ключевые моменты:
1) __slots__ работает с property — используйте защищенные имена (__length) в слотах
2) Наследование требует явного указания __slots__ в дочерних классах
3) Слоты объединяются — дочерний класс получает все слоты из цепочки наследования
4) Без __slots__ в потомке — объекты получают __dict__ и теряют преимущества оптимизации

📝 Правило для наследования:
Если базовый класс имеет __slots__, определите __slots__ и в дочернем классе, даже если он пустой!
class Child(Parent):
__slots__ = () # Пустой кортеж сохраняет оптимизацию

Используйте slots осознанно, учитывая эти нюансы! 🚀
👍3
Завершил курс Балакирева по ООП. Не прошло и пол года, как говорится))

В наилучшем исходе рассчитывал пройти дней за 20, ожидаемо - 30. А прошло два месяца😅Ну это смотря как считать.🙃 Очевидно что не все 60 дней я усердно занимался. Недели две, а то и три, можно смело выкинуть на помойку. И уже получается 40 дней. В принципе адекватное время, учитывая что там как раз около 40 тем.

В день я занимался(когда не дурака валял) часов по 4-5+. Некоторые темы легче давались сложнее, некоторые легче. Другие вообще можно было пачкой сделать за один оборот земли своей оси. Но к сожалению у меня так не работает😐. И после одного цельного блока информация уже уходил на отдых. Может решил себя не грузить, чтобы всё усвоилось. А может расслаблялся слишком порой. Или же концепция ООП долго до меня доходит. Чаще получалось так: сначала надо было понять что от меня хотят, подумать как это сделать, и только потом уж писать код.

В общем, курс можно пройти за 30 дней(как и планировал), не особо сильно напрягаясь, но и не халтурить при этом). К сожалению ожидание не всегда совпадает с реальностью.🫠 На днях запишу более подробный отзыв о курсе.

Осталось еще пара-тройка скипнутых задач. На удивление не по связным спискам)) Наверно этим и займусь на ближайших выходных, но это не точно😅 Еще хотелось бы довести до ума сапера, крестики-нолки, ииии морской бой, чтобы это было играбельно всё. Тут уж от настроения зависит... Затем пойду тыкать Django.🫡

А у вас какие планы на выходные?) Все уже ёлку нарядили дома?)
🔥5🎉31🤝1
В начале нового года на Stepik планируют изменить интерфейс платформы. Пару недель назад висело объявление о прохождении тестирования.

Собственно вот ссылка - макет на figma. Это пока что прототип. Если захотите - посмотрите, потыкайте. Кнопка 'R', возвращает на начальный экран.

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

P.S. Мне интересно, найдете ли вы быстро кнопку "развернуть"?)
🔥5👏3
И снова здравствуйте!) Немного о наболевшем.

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

Это не есть хорошо. Например, после последнего(надеюсь)) курса по базе питона был вообще отдых в неделю, после ООП - уже тоже дней 5 ничего не делаю толком. А всё потому что надо двигаться дальше. И хочется и не хочется одновременно🙂

Есть конечно еще и другая причина - перенапрягся за последнее время. Бывает даже после хорошего сна не могу и 2 часа просидеть за компом - начинают болеть глаза(в частности почему-то именно один здоровый). И приходится делать огромный перерыв. Или вообще больше не заниматься в этот день, т.к. допустим что-то смотреть/слушать еще могу, а вот читать текст или писать/прогать - нет. Сразу неприятные ощущения и красные глаза😔. Такие дела😒

Но текущих знаний пока маловато для нынешнего рынка труда, поэтому надо как-то двигаться дальше. Теперь в планах Django. Надо вспоминать что это такое вообще). До конца года сделаю проект на нем, а потом буду более подробно разбираться во фреймворке на курсе. Уже потихоньку начал🙃
12🔥2
🎄🎊🎄Всех с наступающим новым годом!!!🎄🎊🎄

Желаю, чтобы в 2026:
• Все задуманные проекты не только запускались, но и отрабатывали без ошибок с первого раза.
• Баги находились до продакшена, а пайплайны не ломались в пятницу вечером.
• Новые технологии давались легко, как синтаксический сахар в Python.
• Ваш код был чистым, как свежевыпавший снег за окном.

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

P.S.
У нас тут за сутки намело почти 70 см снега - такого не помню уже лет 100! ❄️ Если у вас его нет - ловите немного зимней атмосферы на фото. Пусть и у вас будет уютно, тепло и по-новогоднему.

Отличных праздников, ребята! Пусть следующий год будет полным открытий и в коде, и в жизни😼Всем желаемых офферов!😈
10🎉72🎅1
Пока как-то так🙃 А у вас как дела?)
💯81🐳1🌚1
Так, пока совсем не забыл как все было в курсе "Добрый, добрый Python ООП - обучающий курс от Сергея Балакирева" - оставляю отзыв:

"""""""""""""""""""""""""""""""
Этот курс я начал проходить еще 3 года назад, не помню почему забросил, но это было зря. Лучше бы завершил его раньше)

Теория:
Объясняется крайне хорошо. Информация в видео-формате, а в текстовом дублируется на личном сайте. Сам не люблю смотреть, а больше читать, но все же в первом случае немного больше инфы и тонкостей рассказывается, рекомендую такой способ поглощения инфы. Много тем разобрано и хорошо пояснено. Не хватает про мета-классы(раз дата-классы были затронуты), возможно в будущем добавиться, но в текстовом формате есть уже на сайте.

Практика:
Достаточно много задач по написанию кода. Для сложных есть видео-разборы на ютубе. Частенько задачи в теме стоят не по порядку увеличения сложности. Забавляли задачи с пометкой "Relax" - здесь никогда не угадаешь будешь ты отдыхать или сидеть на горячем кресле в процессе решения). Тесты с несколькими вариантами ответа та еще боль) Заставляет напрягаться. Но полученных знаний вполне хватает. Если нет - пересмотрите видео еще раз. Местами не хватало(лично мне) простеньких задач на изучение новой темы, иногда сразу рвались с места в карьер.

В общем и целом:
У меня это не первая теория+практика по ОПП, проходил раньше, но давно. Здесь решил восполнить знания. Однако большую часть своего времени я пытался понять что от меня хотят в задачах😅Нет, дело не в условиях и их формулировках(многие почему-то хейтят Сергея за это). Голова отказывалась думать в нужном направлении, наверно больше привык к функциональному стилю программирования и переучиваться сложновато было. А когда решил очередной подвиг, то понимаешь что тут тебе изложено всё по полочкам, иногда кажется что даже слишком сильно.

Рекомендую ли проходить?
Одноздачно да!) Классный курс с отличной теорией и необходимой по объему практикой, с повторением прошлых тем. Так же после прохождения добавите к себе в проекты: Систему обращения по сети, Крестики-нолики, Сапера, Морской бой😈

p.s.
Если вдруг вы не знаете как работает односвязный/двусвязный список, то хочешь не хочешь, точно научишься этому.😂
"""""""""""""""""""""""""""""""


Так же еще нашел парочку неплохих курсов по ООП, но надеюсь я туда не сорвусь, т.к. теперь на очереди Джанго. Вчера все-таки сел за него, 4 часа как будто испарились в небытие😑, а сделал как будто бы нифига.😕Т.к. в данный момент я просто пробегаюсь и вспоминаю, но выходит какая-то каша. В одном мете так пишут, во втором по другому, ИИ-шка вообще говорит третье. Пока что какая-то лабуда, т.к. изучаю не по курсу, а по сборной солянки из разных источников.

Но да ладно, что-то накалякаю, потом покажу этого уродца вам😅
👍4🔥1
Как-то так👆выглядит текущий проект на Django😶

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

Начал делать: Создал проект, приложение, форму, модель, пару вьюшек, прописал url-пути, чтоб это всё работало. А дальше понеслось🫠 А давайте после 1/5 части установим DRF, напишем сериализатор, подготовим файл для бота в ТГ, API, Celery, Docker.

А дальше продолжается обучение Django, без дрф. Модели поста, его представление, шаблоны, пользователь(CRUD), пароль, отправка почты, права доступа и т.д. и т.п. Зачем такие перескоки - я не понимаю. Но если это пропустить и пойти дальше, то уже будет не совсем понятно😐И вот думаю стоит ли это закончить или нет.

К чему вообще это? Сейчас много инфы в интернете. Выбирайте, смотрите, проверяйте. Но как быть тем, для кого это новый материал🤔🤔🤔
🤔4🥴2👍1
Как работает Django
👋 У меня есть путь и я его придерживаюсь👋.
Хотел бы я так сказать, но получаются разветвления🙃

Зачем изобретать велосипед, если есть где проходить, после чего мне становится всё понятно и ясно. Но нет, не ищу видимо лёгких путей) Вместо джанго Балакирева, который планировал, прошел парочку других небольших курсов, которые были у меня давно добавлены на степике. Вот один из них: GoStack: Django для новичков

Проходить его не советовал бы, т.к. там обучение заканчивается на шаблонах. Но с другой стороны, там столько раз было рассказано как работает джанго в общем, куча повторений по круг, что наверно я это не забуду))Криво да косо, точно уж рассказать смогу как там всё происходит. Коротко - смотрите фотку выше. В курсе еще зачем-то пару уроков было про регулярки(для использования в маршруте re_path() - 1-5% случаев когда пригодится это 🫠).

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

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

В любом случае все достигается через практику. Помню как говорил наш учитель, когда проходили Django: "Это не сложно, просто поначалу так кажется. Сделаете 10 проектов и будете легко разбираться"). Тут с этим согласен, начало положено и понятно. Т.к. уже написал 10+ чуть ли не однотипных представлений(views) и к ним url-ы, и это уже кажется легкотней. Аналог - написать int(input()) 100 раз и print() получивишийся результат😁
👍72
Немного пропал😅🙈

За последние лет 5+ вошло в привычку засыпать под видосики с ютуба, иногда без. Но вчера такой номер не удался😶 Помню как в универе засыпал минут через 10, при подгтовке к экзамену по физике. Что-то подобное попытался провернуть с аудио-форматом. Решил послушать курс про Django. Но все пошло не по плану.

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

Собственно вот небольшой плейлист: Изучение Django 3 .

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

p.s. немного не по теме:
Раньше замечал еще видео по типу: "спи и учи английский" или что-то в таком духе. Врубаешь на фон, по сон, а тебе там говорят фразы на англ и их перевод, и наоборот. И так ты на подсознании изучаешь его. Интересно, кто-то так пробовал, рабочий метод?)
🔥6
😼 Вступил в клуб вайбкодеров. Пока одним мизинцем левой ноги 😼

Думаю многие из вас отвлекаются в процессе обучения. И я не исключение.😶 Например, за собой заметил, что многовато времени провожу на твиче. Поэтому решил устранить этот момент. Просто не открывать - не работает🫣😅

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

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

Найти можете тут, на гитхабе: Twitch-blocker

А у вас какие есть способы борьбы за учечу или против лени?🤔
🔥7👏2😁2
Жиза или нет?)
😁12💯1
😶 Процесс изучения Django 😶

Пока так и не добрался до "рейд-босса"). Формат стал похожим на то как изучал базу питона(хотя это весьма абстрактное понятие). Много изучаю в разных источниках. Например недавно просмотрел еще один плейлист на ютубе, прочитал курс на степике, где много-много буков текста и одни тестовые задачки на повторение теории. На гитхаб подгружаю свои практические действия. Мб когда будет 10 проектов, можно будет сказать что понимаю больше чем 0🙃🫠

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

Пока нравится, понятно объясняет. Знакомые темы стараюсь делать на опережение, а потом смотрю как это реализует автор, и если что - корректирую. В оптимистичных планах было пройти за 3 дня, (наивный, да?😅) в реалистичных - за неделю, а на деле посмотрим как будет дальше.🙃
👍6🔥3👌1
🫠 Нейросети: История в трех картинках 🫠

Крч, вчера занимался и мне надо было вернуть статус-код 404. Этого не объясняли еще на курсе (p.s. это знал, но просто забыл). Поэтому решил спросить у QWEN-кодер... И пошло поехало) Сделал мне костыли через полчаса распросов. Дальше пошла тема тестирование в Django. Пару простых функций написал сам, для понимания, попросил нейронку дописать мне еще другие примеры. И...все его тесты падали, потому что не так делал. Хотя казалось бы...модель как раз для этого и создана)

А потом это чудо мне говорит, что так можно, (после того как я предъявил, что так работает), хотя как изначально говорило, что нельзя🫣 Что можно было сделать за минуту, или меньше, в итоге заняло полчаса. Благо хоть CSS не пришлось самому писать, чисто подправлял. Не люблю это занятие, вспоминать больно много надо, а красиво чтоб было хочется)

Казалось бы несложный вопрос, и то поставил с тупик "coder-a". Нейросети по большей части помощник, но порой наоборот, идут тебе во вред...🫠🫠🫠
🤔62💯1🫡1