Точка входа в программирование
21.3K subscribers
949 photos
172 videos
1 file
2.49K links
Фундаментальные знания по основам программирования

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/zrgj
Download Telegram
Точка входа в программирование
Простыми словами: Паттерн «Одиночка» Про «Фасад» поговорили. Теперь расскажу про другой популярный паттерн. «Одиночка» (Singleton) полезен, когда необходимо гарантировать существование единственного экземпляра объекта в системе. Но использовать его следует…
Простыми словами Паттерн «Factory Method»

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

Подробнее о нём можно узнать в карточках.

#простымисловами #паттерны
#простымисловами: ​​Различия между MVC, MVP, MVVM, MVVM-C, и VIPER

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

MVC (Model-View-Controller) — один из самых широко используемых архитектурных шаблонов. Он разделяет приложение на три основных компонента: модель (представляет данные и бизнес-логику), представление (отвечает за отображение интерфейса) и контроллер (действует как посредник между моделью и представлением).

MVP (Model-View-Presenter) отчасти похож на MVC, но имеет немного другой подход. В MVP посредником между моделью и представлением является презентер , а не контроллер. Презентер отвечает за обновление представления данными из модели и обработку пользовательского ввода и событий.

MVVM (Model-View-ViewModel) — архитектурный шаблон, набирающий популярность и используемый в приложениях со сложными пользовательскими интерфейсами. Он похож на MVP, но с добавлением модели представления (view model), которая отвечает за управление состоянием представления и за предоставление данных из модели в представление.

MVVM-C (Model-View-ViewModel-Coordinator) — это вариация MVVM, с добавлением координатора, который отвечает за управление навигацией между различными экранами или представлениями в приложении. Этот шаблон полезен для приложений, в которых есть несколько управляемых экранов или представлений.

VIPER (View-Interactor-Presenter-Entity-Router) — относительно новая архитектурный шаблон, который похож на MVC, но с добавлением нескольких новых компонентов, включая интерактор (отвечает за обработку бизнес-логики), сущность (представляет данные) и маршрутизатор (обрабатывает навигацию между различными экранами и представлениями).

#паттерны
#простымисловами: Паттерн Observer (Наблюдатель)

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

Подробнее в карточках.
Что такое стек и куча?

Стек — это область памяти, где хранятся временные данные, например, локальные переменные и параметры функций. Он работает по принципу «последним пришёл — первым ушёл". Когда функция завершается, её данные автоматически удаляются. Стек быстрый, но его размер ограничен.

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

Пример использования стека:

def add(a, b):
result = a + b # Локальные переменные хранятся в стеке
return result



Пример использования кучи:

class User:
def __init__(self, name):
self.name = name # Объект "User" хранится в куче

user = User("Alex")
print(user.name)


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

#простымисловами #основы
Как работают хэш-функции

Хэш-функция — это алгоритм, который принимает произвольные данные (например, строку или файл) и преобразует их в фиксированную строку определенной длины, называемую хэш-значением.
Два ключевых свойства:

1. Для одного и того же ввода всегда возвращается одинаковый хэш.
2. Невозможно восстановить исходные данные по хэшу (обратное преобразование).

Давайте рассмотрим пример

Возьмём строку "password123" и пропустим её через хэш-функцию (например, SHA-256). Она вернёт хэш-значение:
password123 → ef92b778bae11c00c8cc0d9525c7f90631ad9e11cdec095c9c3af7b06ecf90fc


Хэш будет одинаковым для "password123", сколько бы раз вы его ни рассчитывали. Но если изменить хотя бы один символ, хэш станет совершенно другим.

Пример кода на Python

import hashlib

# Пример строки
text = "password123"

# Использование SHA-256 для получения хэша
hash_object = hashlib.sha256(text.encode())
hash_value = hash_object.hexdigest()

print("Хэш:", hash_value)


Результат: ef92b778bae11c00c8cc0d9525c7f90631ad9e11cdec095c9c3af7b06ecf90fc

Где используется:

1. Для хранения паролей: Вместо хранения пароля "password123" его хэш сохраняют в базе данных. Когда пользователь вводит пароль, хэш снова рассчитывается и сравнивается с сохранённым хэшем.

2. Для ускорения поиска данных: Например, в хэш-таблицах (словарях Python). При добавлении ключа "text" его хэш помогает найти место для хранения значения.

3. В хэш-таблицах: Структура данных для хранения пар «ключ-значение». Хэш-функция вычисляет индекс, где хранится значение, что ускоряет доступ к данным.

#простымисловами