2 months ago (edited) • Django School | Омельченко Михаил

Всем привет.
В компании которой я работаю есть вакансия. 

Есть кто-то из python разработчиков, который хотел бы свичнуться на junior elixir? Вилка 100к р.

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

 https://www.notion.so/elonsoft/Elixir-2364aaa6269542fab186118e6b141c01?pvs=4 

3 months ago (edited) • Django School | Омельченко Михаил

Стрим сегодня 27.01.24 в  20:15  по мск.

 https://www.youtube.com/live/vD-lj8P7zsw?si=e5Jk21cBdsXiM1EG 

3 months ago • Django School | Омельченко Михаил

На конфе по python 

4 months ago (edited) • Django School | Омельченко Михаил

🥳 Всем привет!


С наступающим новым годом!😂😂😂
Желаю счастья и здоровья.
Побольше интересных задач и быстрых фиксов багов.
Побольше интересного и полезного контента.

В моем телеграм делитесь фото как проходит ваш новый год.
 https://t.me/django_school 

6 months ago • Django School | Омельченко Михаил

🤔 Что такое Server Sent Events (SSE)?

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

💡 Как это работает?

Клиент отправляет HTTP-запрос на сервер.
Сервер отвечает специальным заголовком Content-Type: text/event-stream, что указывает на то, что это поток событий.

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

🚀 Чем это полезно?

Server Sent Events идеально подходят для сценариев, где вам нужно передавать обновления, такие как новости, уведомления или данные в онлайн-играх. SSE также менее сложны в настройке по сравнению с WebSocket, и могут быть использованы совместно с другими технологиями.

👩‍💻 Как это реализовать?

На стороне сервера, вы можете использовать множество языков программирования, включая Python, Node.js, и другие, чтобы отправлять данные в формате SSE. На стороне клиента, вы можете использовать JavaScript для прослушивания и обработки событий.

Server Sent Events - это мощный инструмент для веб-разработчиков. Он позволяет создавать интерактивные  веб-приложения. 

7 months ago • Django School | Омельченко Михаил

Hard Code и почему его следует избегать

🤖 Что такое "Hard Code"?

"Hard Code" - это практика написания программного кода с жестко закодированными значениями, которые трудно изменить или поддерживать. Это значит, что вместо использования переменных или настроек, значения вставляются напрямую в код.

🙅 Почему это плохо?

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

Трудности в поддержке: Чтение и понимание такого кода затруднено, а исправление ошибок или добавление новых функций становятся сложными задачами.

Зависимость от конкретного контекста: "Hard Code" привязывает значения к конкретным условиям или окружению, что делает код не переносимым.

🛠 Как избегать "Hard Code"?

Используйте конфигурации: Выносите настройки и константы в конфигурационные файлы или переменные. Это делает код гибким и управляемым.

Документируйте код: Правильное описание, комментарии и документация помогут другим разработчикам и вам самим легко понимать код.

Тестируйте: Убедитесь, что ваш код протестирован на разных данных и сценариях.

Используйте паттерны проектирования: Некоторые паттерны, такие как Dependency Injection, могут помочь сделать ваш код более гибким.

🚀 Важный вывод:

Избегайте "Hard Code" в вашем коде. Сделайте его гибким, читаемым и поддерживаемым. Это сэкономит вам в будущем много времени!

🤔 А какие советы у вас есть по борьбе с "Hard Code"? Поделитесь ими в комментариях!

Телеграм канал -  https://t.me/django_school 

7 months ago (edited) • Django School | Омельченко Михаил

🛑 Анти-паттерн "God Object": Как избегать кодового беспорядка

🤖 Что такое "God Object"?

God Object - это объект или класс в программном коде, который пытается делать всё: управлять множеством задач, содержать многочисленные методы и данные. Это чрезмерное скопление функциональности в одном месте.

🙅 Почему это плохо?

❇ Сложность: "God Object" становится огромным и трудным для понимания, что делает код запутанным.

❇ Неупорядоченность: Множество функций в одном месте делает код неструктурированным, что усложняет его поддержку и расширение.

❇ Зависимость: Модификация "God Object" может затронуть множество частей кода, что создает риск ошибок.

🚀 Как избегать "God Object"?

✅ Разделение ответственностей: Разбейте функциональность на мелкие, независимые части. Каждый объект или класс должен выполнять только одну задачу.

✅ Используйте принципы SOLID: Эти принципы помогут создать чистую архитектуру, где каждая часть кода знает только о необходимой минимум информации.

✅ Тестирование: Покройте код тестами, чтобы быстро обнаруживать проблемы.

✅ Рефакторинг: Если вы обнаружите "God Object" в своем коде, не бойтесь провести рефакторинг, разделив функциональность на более мелкие куски.

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

🧐 Вам уже доводилось сталкиваться с "God Object"? Поделитесь вашими историями и методами борьбы с этим анти-паттерном в комментариях!

Телеграм канал -  https://t.me/django_school 

7 months ago • Django School | Омельченко Михаил

Паттерн Одиночка (Singleton, Синглтон)

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

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

✅ Управление состоянием: паттерн Синглтон упрощает управление состоянием объекта, поскольку все запросы будут адресоваться к одному и тому же экземпляру класса. Это позволяет сохранять и синхронизировать состояние между запросами.

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

В заключении

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

Телеграм канал -  https://t.me/django_school 

🔥Провожу индивидуальные занятия по python и веб разработке (django, fastapi, flask, javascript).

Обучаю с нуля, а так же провожу консультации для мидлов и сеньоров.

Пишите -  https://t.me/DJWOMS 

🌐  #IT   #программирование   #паттерн 

7 months ago • Django School | Омельченко Михаил

Паттерн Прототип: Как создавать объекты с помощью клонирования

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

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

Почему паттерн Прототип полезен?

✅ Упрощение создания объектов: паттерн Прототип упрощает процесс создания сложных объектов. Мы можем использовать готовые прототипы (клонированные объекты), чтобы не тратить время на создание объектов с нуля.

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

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

Участники паттерна Прототип

Prototype: определяет интерфейс для клонирования самого себя, который, как правило, представляет метод Clone().

ConcretePrototype1 и ConcretePrototype2: конкретные реализации прототипа. Реализуют метод clone().

Client: создает объекты прототипов с помощью метода clone().
В заключение

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

Телеграм канал -  https://t.me/django_school 

🔥Провожу индивидуальные занятия по python и веб разработке (django, fastapi, flask, javascript).
Обучаю с нуля, а так же провожу консультации для мидлов и сеньоров.
Пишите -  https://t.me/DJWOMS 

🌐  #IT   #программирование   #паттерн 

7 months ago • Django School | Омельченко Михаил

Паттерн Фабричный метод

Всем привет!

Представьте, что вы хотите создать объект определенного типа, но хотите сделать этот процесс более гибким. Паттерн Фабричный метод именно для этого. Он предлагает способ гибкого создания объектов, позволяя вам делегировать создание объектов подклассам или конкретным реализациям.

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

Почему это полезно?

✅ Управление сложностью: паттерн Фабричный метод помогает управлять сложностью создания объектов. Он делегирует процесс создания объектов конкретным классам, позволяя подклассам самостоятельно определить, какого типа объект они должны создать.

✅ Гибкость: фабричный метод обеспечивает гибкость в создании объектов. Каждый подкласс может самостоятельно определить, какой объект создать и как настроить его. Это позволяет легко добавлять новые типы объектов без изменения существующего кода.

✅ Расширяемость: мы можем легко добавлять новые классы-создатели (creators) или классы-продукты (products) без влияния на существующий код.

Участники паттерна Фабричный метод

Product (абстрактный класс) определяет интерфейс класса, объекты которого надо создавать.

ConcreteProduct представляют реализацию класса Product. Таких классов может быть множество. 

Creator (абстрактный класс) определяет абстрактный фабричный метод factoryMethod(), который возвращает объект Product.

ConcreteCreator - наследники класса Creator, определяющие свою реализацию метода factoryMethod(). Причем метод factoryMethod() каждого отдельного класса-создателя возвращает определенный конкретный тип продукта. Для каждого конкретного класса продукта определяется свой конкретный класс создателя.

Таким образом, класс Creator делегирует создание объекта Product своим наследникам. А классы ConcreteCreator могут самостоятельно выбирать какой конкретный тип продукта им создавать.

В заключение

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

Телеграм канал -  https://t.me/django_school 

🔥Провожу индивидуальные занятия по python и веб разработке (django, fastapi, flask, javascript).

Обучаю с нуля, а так же провожу консультации для мидлов и сеньоров.

Пишите -  https://t.me/DJWOMS 

🌐  #IT   #программирование   #паттерн