Изучаю вариатность в программировании.
Вариантность — перенос наследования исходных типов на производные от них типы.
Есть 3 вида:
- Ковариантность — перенос наследования исходных типов на производные от них типы в прямом порядке.
- Контравариантность — перенос наследования исходных типов на производные от них типы в обратном порядке.
- Инвариантность — ситуация, когда наследование исходных типов не переносится на производные.
В питоне довольно подробно вариантность описана в:
- PEP 483 – The Theory of Type Hints;
- PEP 484 – Type Hints;
Классные PEP. Нужно изучить их более внимательно.
Честно, осмысление данного вопроса дается непросто. Нужно писать примеры, много примеров. Без практики тема не заходит.
Подскажите, как у вас с данной темой? Что помогло в освоении?
Вариантность — перенос наследования исходных типов на производные от них типы.
Есть 3 вида:
- Ковариантность — перенос наследования исходных типов на производные от них типы в прямом порядке.
- Контравариантность — перенос наследования исходных типов на производные от них типы в обратном порядке.
- Инвариантность — ситуация, когда наследование исходных типов не переносится на производные.
В питоне довольно подробно вариантность описана в:
- PEP 483 – The Theory of Type Hints;
- PEP 484 – Type Hints;
Классные PEP. Нужно изучить их более внимательно.
Честно, осмысление данного вопроса дается непросто. Нужно писать примеры, много примеров. Без практики тема не заходит.
Подскажите, как у вас с данной темой? Что помогло в освоении?
Python Enhancement Proposals (PEPs)
PEP 483 – The Theory of Type Hints | peps.python.org
This PEP lays out the theory referenced by PEP 484.
👏2👀1
Столько всего интересного в программировании!
PEP в Python для меня стали открытием года.
Раньше я знал о существовании только PEP 8, который посвящён стилю написания кода. И то я его даже не открывал, так как обходился парой статей и линтерами.
Например, сегодня читал PEP 591 – Adding a final qualifier to typing.
Он посвящён модификатору final.
Он реализован в виде:
- декоратора "@final" (для обозначения метода, который запрещено переопределять, или класса, от которого нельзя наследоваться);
- аннотации типа "Final" (для обозначения переменной, атрибута класса, параметра функции, которые запрещено переприсваивать).
PEP в Python для меня стали открытием года.
Раньше я знал о существовании только PEP 8, который посвящён стилю написания кода. И то я его даже не открывал, так как обходился парой статей и линтерами.
Например, сегодня читал PEP 591 – Adding a final qualifier to typing.
Он посвящён модификатору final.
Он реализован в виде:
- декоратора "@final" (для обозначения метода, который запрещено переопределять, или класса, от которого нельзя наследоваться);
- аннотации типа "Final" (для обозначения переменной, атрибута класса, параметра функции, которые запрещено переприсваивать).
👏3
🔥Записался на курс "Инженер данных".🔥
Всем привет! Решил, что логическим развитием моей карьеры будет освоение такого направления в разработке как data engineering.
Моим первым местом работы был Магнит, где я познакомился с Big Data. На текущем месте работы я также работаю с данными. Т.е. у меня уже есть некоторый опыт в этой специализации.
Хочу углубиться в данном направлении, перейти на качественно новый уровень, познакомиться с лучшими практиками работы с данными, освоить современные инструменты, получить комплексную теорию, и пополнить портфолио соответствующими проектами на гитхаб.
Курс длится 6,5 месяцев. Программа интересная.
Вперед!👨💻
Всем привет! Решил, что логическим развитием моей карьеры будет освоение такого направления в разработке как data engineering.
Моим первым местом работы был Магнит, где я познакомился с Big Data. На текущем месте работы я также работаю с данными. Т.е. у меня уже есть некоторый опыт в этой специализации.
Хочу углубиться в данном направлении, перейти на качественно новый уровень, познакомиться с лучшими практиками работы с данными, освоить современные инструменты, получить комплексную теорию, и пополнить портфолио соответствующими проектами на гитхаб.
Курс длится 6,5 месяцев. Программа интересная.
Вперед!👨💻
👍3🔥3👏2
Тем временем как у меня дела с ООАП?
Всё хорошо. Постепенно осваиваю тему. Сейчас изучаю что такое полиморфизм, ковариатность, отношения между классами.
Например, какое отношение между классами выбрать на стадии проектирования? "Содержит" или "является"?
Тема для меня была довольно сложная для понимания. Но постепенно пазл складывается и у меня формируется довольно хорошее представление в голове на эту тему.
Тема мне даётся непросто. Спустя только почти 2,5 месяца изучения, у меня реально начало появляться понимание как всё работает.
Тема большая. Поэтому мне ещё её изучать и изучать.
Всё хорошо. Постепенно осваиваю тему. Сейчас изучаю что такое полиморфизм, ковариатность, отношения между классами.
Например, какое отношение между классами выбрать на стадии проектирования? "Содержит" или "является"?
Тема для меня была довольно сложная для понимания. Но постепенно пазл складывается и у меня формируется довольно хорошее представление в голове на эту тему.
Тема мне даётся непросто. Спустя только почти 2,5 месяца изучения, у меня реально начало появляться понимание как всё работает.
Тема большая. Поэтому мне ещё её изучать и изучать.
👏5
Всем привет!
Месяц ничего не писал.
Как у меня дела?
Всё хорошо. Хочу поделиться целью на первое полугодие.
Мне нужно увеличить доход на 30%+. У меня уже есть первый результат.
С нового года мне пересмотрели ЗП и увеличили её на 15%.=)
Мы с женой выражаем благодарность компании и моему руководителю.
Это моё первое повышение ЗП в должности разработчика без перехода на новое место работы.
Для меня это ещё признак того, что у меня получается, я развиваюсь, и иду в правильном направлении.
Но что на счёт выполнения цели в полном объёме?
Для этого у меня есть план.
Он включает в себя подготовку к собеседованиям и сами собеседования в другие компании.
В рамках подготовки к собеседованиям мне нужно:
- прочитать пару книг;
- повторить структуры данных и алгоритмы;
- изучить типичные вопросы на собеседованиях для своей специализации;
- подготовить ответы на типичные личностные вопросы;
- актуализировать резюме.
Ну и самое главное проходить непосредственно собеседования.
По плану нужно проходить их очень активно.
Месяц ничего не писал.
Как у меня дела?
Всё хорошо. Хочу поделиться целью на первое полугодие.
Мне нужно увеличить доход на 30%+. У меня уже есть первый результат.
С нового года мне пересмотрели ЗП и увеличили её на 15%.=)
Мы с женой выражаем благодарность компании и моему руководителю.
Это моё первое повышение ЗП в должности разработчика без перехода на новое место работы.
Для меня это ещё признак того, что у меня получается, я развиваюсь, и иду в правильном направлении.
Но что на счёт выполнения цели в полном объёме?
Для этого у меня есть план.
Он включает в себя подготовку к собеседованиям и сами собеседования в другие компании.
В рамках подготовки к собеседованиям мне нужно:
- прочитать пару книг;
- повторить структуры данных и алгоритмы;
- изучить типичные вопросы на собеседованиях для своей специализации;
- подготовить ответы на типичные личностные вопросы;
- актуализировать резюме.
Ну и самое главное проходить непосредственно собеседования.
По плану нужно проходить их очень активно.
👍3🔥3👏1
Прохожу курс "Инженер данных" - прошел 25%.
Хочется отметить что тема мне знакома.
С помощью курса получается здорово систематизировать знания.
Серьезных трудностей курс пока не вызывает.
При этом хочу выделить то, что узнал нового:
- простая и инкрементальная загрузка данных;
- архитектура DWH (Staging, Хранилище, Витрины);
- модели данных (Реляционная - OLTP, Многомерная - OLAP);
- виды многомерных моделей (Звезда, Снежинка);
- функции и триггеры в бд;
Отдельно выделю знакомство с PostgreSQL, DBeaver, Metabase.
Получаю удовольствие от выполнения заданий и написания кода. =)
Продолжаем.👨💻
Хочется отметить что тема мне знакома.
С помощью курса получается здорово систематизировать знания.
Серьезных трудностей курс пока не вызывает.
При этом хочу выделить то, что узнал нового:
- простая и инкрементальная загрузка данных;
- архитектура DWH (Staging, Хранилище, Витрины);
- модели данных (Реляционная - OLTP, Многомерная - OLAP);
- виды многомерных моделей (Звезда, Снежинка);
- функции и триггеры в бд;
Отдельно выделю знакомство с PostgreSQL, DBeaver, Metabase.
Получаю удовольствие от выполнения заданий и написания кода. =)
Продолжаем.👨💻
🔥6👍2
Бэкап или Откат?
Бэкап представляет собой файлы, в которых содержится инструкция, как восстановить сохранённую копию БД. Например, в PostgreSQL есть утилита pg_dump. Она генерирует файл с SQL-запросами для создания таблиц и вставки в них данных.
Откат изменений — это более сложный процесс восстановления БД к исходному состоянию. Откат отменяет те изменения, которые были внесены. Для каждого действия в БД можно найти противоположное действие. Если была добавлена новая колонка, то скрипт отката должен содержать алгоритм удаления этой колонки. Он может быть осуществлён скриптами или с помощью утилит. Скрипты должны учитывать алгоритм миграции и все временные таблицы. Существуют специальные приложения, которые позволяют выполнять миграции, версионировать БД и откатывать изменения, например системы контроля версий Liquibase и Flyway.
Бэкап представляет собой файлы, в которых содержится инструкция, как восстановить сохранённую копию БД. Например, в PostgreSQL есть утилита pg_dump. Она генерирует файл с SQL-запросами для создания таблиц и вставки в них данных.
Откат изменений — это более сложный процесс восстановления БД к исходному состоянию. Откат отменяет те изменения, которые были внесены. Для каждого действия в БД можно найти противоположное действие. Если была добавлена новая колонка, то скрипт отката должен содержать алгоритм удаления этой колонки. Он может быть осуществлён скриптами или с помощью утилит. Скрипты должны учитывать алгоритм миграции и все временные таблицы. Существуют специальные приложения, которые позволяют выполнять миграции, версионировать БД и откатывать изменения, например системы контроля версий Liquibase и Flyway.
🔥4
Слои в корпоративном хранилище данных (КХД).
- Слой Raw (от англ. «сырой») — слой сырых данных. Исходные данные сохраняются, чтобы можно было сделать дополнительные ETL-процессы без перевыгрузки информации из систем-источников.
- Слой ODS (от англ. Operational Data Store — «хранилище операционных данных»). В рамках этого слоя сырые данные очищаются от технической информации: даты обновления строк, изменение полей и др. Состояние данных близко к источнику, но с ними уже могут работать аналитики.
- Слой DDS (от англ. Detail Data Store — «хранилище детализированных данных»). В этом слое готовятся справочники со всей нужной информацией по компании, нормализируются данные, создаются ключи связей, чтобы было удобнее использовать информацию из разных источников.
- Слой CDM (от англ. Common Data Marts — «общие витрины данных»). Здесь собираются широкие витрины с агрегатами и показателями с детализацией вплоть до пользователя. Данные поступают в витрины по регламенту из источников DDS слоя.
- Слой REP (от англ. Reporting — «отчётность»). Отсюда данные отправляются, например, в BI или автоматизированные боты, чтобы пользователи получили готовые отчёты. Данные в REP отличаются тем, что они готовятся для конкретной задачи. Данные же в слое CDM постоянно переиспользуются.
Описанные слои не являются обязательными для процесса обработки, всё зависит от целей и особенностей компании и её данных.
Чаще всего можно увидеть менее объёмную схему обработки данных:
Источник данных → слой Raw → слой ODS → слой CDM
👨💻
- Слой Raw (от англ. «сырой») — слой сырых данных. Исходные данные сохраняются, чтобы можно было сделать дополнительные ETL-процессы без перевыгрузки информации из систем-источников.
- Слой ODS (от англ. Operational Data Store — «хранилище операционных данных»). В рамках этого слоя сырые данные очищаются от технической информации: даты обновления строк, изменение полей и др. Состояние данных близко к источнику, но с ними уже могут работать аналитики.
- Слой DDS (от англ. Detail Data Store — «хранилище детализированных данных»). В этом слое готовятся справочники со всей нужной информацией по компании, нормализируются данные, создаются ключи связей, чтобы было удобнее использовать информацию из разных источников.
- Слой CDM (от англ. Common Data Marts — «общие витрины данных»). Здесь собираются широкие витрины с агрегатами и показателями с детализацией вплоть до пользователя. Данные поступают в витрины по регламенту из источников DDS слоя.
- Слой REP (от англ. Reporting — «отчётность»). Отсюда данные отправляются, например, в BI или автоматизированные боты, чтобы пользователи получили готовые отчёты. Данные в REP отличаются тем, что они готовятся для конкретной задачи. Данные же в слое CDM постоянно переиспользуются.
Описанные слои не являются обязательными для процесса обработки, всё зависит от целей и особенностей компании и её данных.
Чаще всего можно увидеть менее объёмную схему обработки данных:
Источник данных → слой Raw → слой ODS → слой CDM
👨💻
👍2
Друзья, делаю 2D игру на Python.
Для закрепления и отработки ООАП решил сделать игру-платформер.
Буду использовать игровой движок https://github.com/pythonarcade/arcade.
Цель: сделать игру на 20+ классов.
Пожелайте мне удачи. =)
Для закрепления и отработки ООАП решил сделать игру-платформер.
Буду использовать игровой движок https://github.com/pythonarcade/arcade.
Цель: сделать игру на 20+ классов.
Пожелайте мне удачи. =)
GitHub
GitHub - pythonarcade/arcade: Easy to use Python library for creating 2D arcade games.
Easy to use Python library for creating 2D arcade games. - pythonarcade/arcade
👍4🔥2