DON'T STOP AND CODE – Telegram
DON'T STOP AND CODE
103 subscribers
58 photos
2 videos
1 file
119 links
Мой путь в программировании
#python

Для связи: @avagners
Download Telegram
~ 572 день 👨‍💻 | Уязвимые вершины в графе

Реализовал метод нахождения уязвимых вершин в графе.

Уязвимые вершины - это вершины, которые не в ходят ни в какой треугольник.

Треугольник вершин - это когда у смежных вершин есть связь.

Например, у вершины А есть смежные вершины В и С. Если у вершин В и С есть связь, то вершины устойчивы, они связаны в треугольник.

Если вершина не имеет ни одной связи между смежных вершин, то данная вершина уязвимая.

Код покрыл тестами.

С кодом можно ознакомиться на гитхаб:
https://github.com/avagners/algorithms_and_data_structures/blob/main/data_structures/graph/simple_graph.py#L110
👍4
~ 573, 574 дни👨‍💻 | Итоги месяца

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

Наибольшие трудности испытал с удалением узлов из бинарного дерева поиска.
Довольно хорошо прокачал навык написания рекурсивных функций. Хорошо усвоил особенности "пирамиды" ("кучи"). Понравилось искать пути в графе. Теперь точно знаю разницу между обходом в глубину и обходом в ширину. Понравилось строить двоичные деревья поиска различными способами.

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

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

А как у вас прошел месяц?
🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
👍1
DON'T STOP AND CODE
🔥🔥🔥 Помните про сверхцель и сверхзадачи, которые я постепенно для себя формирую? Скромно поделюсь своим черновиком, который написал прямо сейчас.😅 Сверхцель: стать ТОП-специалистом в ИТ через 5 лет. А именно уметь проектировать и реализовывать сложные проекты…
Что у меня по достижению сверхцели?

'''Сверхцель: стать ТОП-специалистом в ИТ через 5 лет. А именно уметь проектировать и реализовывать сложные проекты на миллионы строк кода.'''

Прошел уже год. Что мы имеем? =)

Календарный год начинался насыщенно. Читал много книг, занимался на курсах, развивал LinkedIn, общался с другими разработчиками, активно общался с рекрутерами, проходил собеседования.

После февраля, темп значительно снизился, но к апрелю восстановил учебу. Активно занимался английским.

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

В начале августа завершил 10-ти месячный курс Яндекс.Практикума по разработке сервисов на Django. Курс реально большой, знакомит с многими актуальными навыками работы. Довольно хорошо выработался навык написания чистого кода по стандарту PEP8. На курсе было много хорошего. Иногда открываю материалы и перечитываю. При этом рекомендую на него записываться имея некоторый багаж знаний и навыков за плечами. Из минусов могу назвать, что сейчас навыки backend разработки не применяю, на django сервисы не пишу.

В августе начал активно изучать АСД. Это крайне важный блок, который необходимо изучить на хорошем уровне. На сегодня изучил 15 структур данных, написал к ним методы, покрыл код тестами.

В целом я доволен своим вектором развития. =)

Что дальше?
Начал изучать ООП. И не просто ООП, а ООАП (объектно-ориентированный анализ и проектирование).

P.s. прошел 1 год из 5-ти.
🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
1
581 день 👨‍💻 | Абстрактные типы данных (АТД)

Не писал здесь почти 2 недели. Активно изучаю ООАП.
Постепенно буду отписываться по данной теме.


Что такое абстрактный тип данных (АТД)?

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

Это более высокий уровень абстракции, чем класс.
Если пройти сверху вниз по уровням абстракции, то получается следующее:
1) АТД
2) Класс
3) Объект класса

АТД - это класс, но без реализации.

АТД определяет допустимое множество объектов, а также допустимый набор методов над этими объектами. Просто задается тип данных и указываются допустимые методы без их конкретной реализации.

АТД - это абстрактный класс.

Класс - это реализация АТД.
В классе доступны поля и методы, которые прописаны в АТД. А все вспомогательные методы и поля, которые не прописаны в АТД, приватны и недоступны для внешнего мира.

———
Например, можно посмотреть АТД динамического массива по ссылке на гитхаб.
АТД DynArray и его реализация в виде уже готового класса.

Как всегда код покрыл тестами.

https://github.com/avagners/OOAP/blob/main/dyn_array/DynArray.py
🔥4
🌲👨‍💻🌲👨‍💻🌲👨‍💻
🍾6🔥31
С наступающим Новым годом! 🎄🎄🎄

Напишу пару слов.

Год выдался хорошим. Возможно, самым успешным в плане выполнения поставленных целей.

Завершил ряд курсов, среди которых большой курс на ЯП. Прочитал ряд книг по Computer Science. Изучил базовые структуры данных на довольно хорошем уровне.

Закрепился в профессии. В июне поменял место работы с ростом в доходе. Сейчас у меня много задач. А это значит много опыта.

Обновил себе ноутбук. Эта покупка является своеобразным символом моих достижений в освоении новой профессии.

В следующем году нужно приложить ещё больше усилий, чтобы реализовать поставленные цели. "Дисциплина, усердие, внимание!" - вот мой девиз следующего года)))

Вперёд, в 2023 год! 🎉🎊🎉🎊🎉🎊
🍾3🔥2🥰2
Продолжаю изучение ООАП.

После изучения абстрактных типов данных (АТД) и практической отработки на 10 структурах данных приступил к изучению наследования, композиции и полиморфизма в ООП.

Все мои АТД можно посмотреть по ссылке на гитхаб: https://github.com/avagners/OOAP/tree/main/part_1

Есть два фундаментальных вида отношений между классами в ООП: наследование и композиция.

Наследование -- это отношение "является" (is-a), когда один класс является потомком другого класса.

Композиция -- это отношение "содержит" (has-a), когда один объект содержит объект другого класса (как поле соответствующего типа).

Три разные возможности наследования:
-- расширение класса-родителя (наследник задаёт более общий случай родителя);
-- специализация класса-родителя (наследник задаёт более специализированный случай родителя);
-- комбинация нескольких родительских классов.

#ООП
🔥3
Зарегистрировался на HackerRank.👨‍💻

Как минимум ближайшие 30 дней буду решать задачки на данном ресурсе.
Хочу проверить навыки SQL и Python.

Сегодня решил 13 задачек:
- 5 на Python;
- 8 на SQL;

Получил первые звёздочки)😁

гоу со мной)
🔥7
Получил еще по одной звёздочке =)
🔥4
Итоги 7 дней на HackerRank.

Всего решено 76 задачек, из которых:
- 45 на SQL;
- 31 на Python;

По SQL уже получил золотой значок)
🔥52
Всем привет!

Итоги 14 дней на HackerRank.

Всего решено 115 задач.
Получил "золотые" значки по Python и SQL.
Продолжаю проходить челлендж 30 дней.

На работе есть небольшое достижение.
Удалось оптимизировать функцию, которую написал другой разработчик.
Ранее отрабатывала около 1 минуты. Сейчас 8 секунд.
🔥4
+1 книга в этом году

Всём привет!

Завершил чтение книги "Изучаем SQL" Алана Бьюли.

Книга мне очень понравилась. Кратко, понятно, с примерами и заданиями на закрепление.

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

Книга 10/10. Рекомендую.
👍4🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Изучаю вариатность в программировании.

Вариантность — перенос наследования исходных типов на производные от них типы.

Есть 3 вида:
- Ковариантность — перенос наследования исходных типов на производные от них типы в прямом порядке.
- Контравариантность — перенос наследования исходных типов на производные от них типы в обратном порядке.
- Инвариантность — ситуация, когда наследование исходных типов не переносится на производные.

В питоне довольно подробно вариантность описана в:
- PEP 483 – The Theory of Type Hints;
- PEP 484 – Type Hints;

Классные PEP. Нужно изучить их более внимательно.

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

Подскажите, как у вас с данной темой? Что помогло в освоении?
👏2👀1
This media is not supported in your browser
VIEW IN TELEGRAM
Столько всего интересного в программировании!

PEP в Python для меня стали открытием года.

Раньше я знал о существовании только PEP 8, который посвящён стилю написания кода. И то я его даже не открывал, так как обходился парой статей и линтерами.

Например, сегодня читал PEP 591 – Adding a final qualifier to typing.

Он посвящён модификатору final.

Он реализован в виде:

- декоратора "@final" (для обозначения метода, который запрещено переопределять, или класса, от которого нельзя наследоваться);

- аннотации типа "Final" (для обозначения переменной, атрибута класса, параметра функции, которые запрещено переприсваивать).
👏3
This media is not supported in your browser
VIEW IN TELEGRAM
😁2