▓▓▓▓▓▓▓▓▓▓▓░░░░░ 71%
👆👆👆
Это 2022 год.
Кто-то ставил цели на год?
Что у вас? Что выполнили? Что осталось?
У меня этот год довольно продуктивный. Все основые цели достиг.
Есть еще одна задача, которую я хочу сделать - создать свой сайт и написать на нём несколько статей.
У меня есть хостинг, домен. Даже накатывал уже движок и была одна заметка. Но зимой я всё снёс.
Давайте сделаем ставки))) Выкачу ли я до конца года блог с минимум 2-мя статьями? 😁
Судя по моей статистике, я бы поставил на отрицательный ответ. 😄
👆👆👆
Это 2022 год.
Кто-то ставил цели на год?
Что у вас? Что выполнили? Что осталось?
У меня этот год довольно продуктивный. Все основые цели достиг.
Есть еще одна задача, которую я хочу сделать - создать свой сайт и написать на нём несколько статей.
У меня есть хостинг, домен. Даже накатывал уже движок и была одна заметка. Но зимой я всё снёс.
Давайте сделаем ставки))) Выкачу ли я до конца года блог с минимум 2-мя статьями? 😁
Судя по моей статистике, я бы поставил на отрицательный ответ. 😄
👍3👏1
Сделаю я свой блог с 2-мя статьями до конца этого года?
Anonymous Poll
82%
✅ Да, сделаешь
18%
🚫 Нет, не сделаешь
Всем привет! 👋
Спасибо всем, кто в меня верит, что я закрою последнюю цель на этот год. Приятно получить поддержку)
А также спасибо тем, кто послушал меня и проголосовал за то, что я этого не сделаю и сольюсь)
На сегодня определился с тем на каком движке будет сайт.
Решил сделать его статическим и собирать с помощью генератора статических сайтов Pelican. Мне очень нравится идея писать статьи в Markdown. =)
Pelican полностью написан на питоне. Установка и настройка очень простые. Из минусов могу назвать только малое кол-во качественных тем.
Сейчас у меня дилемма - взять готовую тему или написать свою с нуля?
Склоняюсь к написанию своей темы. Для меня это будет дополнительной задачей, с помощью которой научусь еще чему-то новому.
Да, на это нужно будет потратить время. Зато буду ориентироваться в своем сайте от А до Я.
У меня к вам вопрос =)
У кого-то из вас есть свой сайт? Или кто-то планирует его сделать?
Спасибо всем, кто в меня верит, что я закрою последнюю цель на этот год. Приятно получить поддержку)
А также спасибо тем, кто послушал меня и проголосовал за то, что я этого не сделаю и сольюсь)
На сегодня определился с тем на каком движке будет сайт.
Решил сделать его статическим и собирать с помощью генератора статических сайтов Pelican. Мне очень нравится идея писать статьи в Markdown. =)
Pelican полностью написан на питоне. Установка и настройка очень простые. Из минусов могу назвать только малое кол-во качественных тем.
Сейчас у меня дилемма - взять готовую тему или написать свою с нуля?
Склоняюсь к написанию своей темы. Для меня это будет дополнительной задачей, с помощью которой научусь еще чему-то новому.
Да, на это нужно будет потратить время. Зато буду ориентироваться в своем сайте от А до Я.
У меня к вам вопрос =)
У кого-то из вас есть свой сайт? Или кто-то планирует его сделать?
👍3
DON'T STOP AND CODE
🔥🔥🔥 По итогам собеседований и прохождения тестовых заданий мне сделали оффер и с 21.10 я иду работать в Магнит в должности разработчика.👨💻
Год назад, 21.10.2021, состоялся первый рабочий день в профессии разработчик!👨💻
Быстро время летит.
Что я могу сказать по итогам года?
Усилия на освоение новой профессии полностью себя оправдывают.
Я наконец работаю в профессии, которая мне интересна.
Увеличил доход.
Сейчас являюсь разработчиком в маленькой команде, но в крупной компании.
Чем больше кодишь, тем лучше получается.
Без теоретической базы кодишь плохо. Поэтому читаю книги и прохожу курсы.
После книг и курсов всегда поднимается качество работы на новый уровень.
Профессия уже не воспринимается так романтично. Это хорошо.
Быстро время летит.
Что я могу сказать по итогам года?
Усилия на освоение новой профессии полностью себя оправдывают.
Я наконец работаю в профессии, которая мне интересна.
Увеличил доход.
Сейчас являюсь разработчиком в маленькой команде, но в крупной компании.
Чем больше кодишь, тем лучше получается.
Без теоретической базы кодишь плохо. Поэтому читаю книги и прохожу курсы.
После книг и курсов всегда поднимается качество работы на новый уровень.
Профессия уже не воспринимается так романтично. Это хорошо.
🔥7👍2❤1
Тем временем продолжаю изучать структуры данных.
Сегодня изучал деревья.🌳
Создал структуру и методы. Покрыл код тестами.
Осталось реализовать метод перемещения узла вместе с дочерними узлами под другой узел.
Ознакомиться с кодом можно на гитхаб по ссылке:
https://github.com/avagners/algorithms_and_data_structures/blob/main/data_structures/trees/SimpleTree.py
P.s. если ещё не подписались на мой гитхаб, то подписывайтесь) Подпишусь взаимно)👨💻
Сегодня изучал деревья.🌳
Создал структуру и методы. Покрыл код тестами.
Осталось реализовать метод перемещения узла вместе с дочерними узлами под другой узел.
Ознакомиться с кодом можно на гитхаб по ссылке:
https://github.com/avagners/algorithms_and_data_structures/blob/main/data_structures/trees/SimpleTree.py
P.s. если ещё не подписались на мой гитхаб, то подписывайтесь) Подпишусь взаимно)👨💻
GitHub
algorithms_and_data_structures/SimpleTree.py at main · avagners/algorithms_and_data_structures
Алгоритмы и структуры данных. Contribute to avagners/algorithms_and_data_structures development by creating an account on GitHub.
🔥3👍2
✅Дописал метод перемещения узла вместе с поддеревом.
Также написал метод установки уровня глубины узла в дереве.
Метод рекурсивно перебирает все узлы дерева, считает и устанавливает уровень узла относительно корня.
Код покрыл тестами.
Ссылка на гитхаб: https://github.com/avagners/algorithms_and_data_structures/blob/main/data_structures/trees/SimpleTree.py#L65:L77
Также написал метод установки уровня глубины узла в дереве.
Метод рекурсивно перебирает все узлы дерева, считает и устанавливает уровень узла относительно корня.
Код покрыл тестами.
Ссылка на гитхаб: https://github.com/avagners/algorithms_and_data_structures/blob/main/data_structures/trees/SimpleTree.py#L65:L77
👍4
~ 549 день👨💻 | Двоичные деревья поиска
Сегодня изучал двоичные деревья поиска (бинарные деревья).
Бывают:
- полными (full binary tree);
- строгими (strictly binary tree);
- законченными (complete binary tree);
Бинарные деревья обеспечивают быстрый поиск данных за O(log n).
Отличия от обычных деревьев, которые я изучал накануне:
1) данные в дереве хранятся в определённом порядке;
2) поиск выполняется с учётом этого порядка;
Порядок заключается в том, что у узла может быть только два потомка (левый и правый). Левый всегда меньше родителя, а правый всегда больше.
Допускается реализация с хранением узлов с одинаковыми ключами. Тогда действует правило: ключ правого потомка должен быть больше или равен ключу родителя. Подобные деревья называют частично упорядоченными.
------
Реализовал структуру данных и покрыл тестами.
Осталось реализовать метод удаления узла.
С кодом можно ознакомиться по ссылке на гитхаб:
https://github.com/avagners/algorithms_and_data_structures/tree/main/data_structures/binary_search_trees
📚Чтение:
+ 14 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(135 страниц из 308)
Сегодня изучал двоичные деревья поиска (бинарные деревья).
Бывают:
- полными (full binary tree);
- строгими (strictly binary tree);
- законченными (complete binary tree);
Бинарные деревья обеспечивают быстрый поиск данных за O(log n).
Отличия от обычных деревьев, которые я изучал накануне:
1) данные в дереве хранятся в определённом порядке;
2) поиск выполняется с учётом этого порядка;
Порядок заключается в том, что у узла может быть только два потомка (левый и правый). Левый всегда меньше родителя, а правый всегда больше.
Допускается реализация с хранением узлов с одинаковыми ключами. Тогда действует правило: ключ правого потомка должен быть больше или равен ключу родителя. Подобные деревья называют частично упорядоченными.
------
Реализовал структуру данных и покрыл тестами.
Осталось реализовать метод удаления узла.
С кодом можно ознакомиться по ссылке на гитхаб:
https://github.com/avagners/algorithms_and_data_structures/tree/main/data_structures/binary_search_trees
📚Чтение:
+ 14 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(135 страниц из 308)
🔥3❤1
~ 550 день👨💻 | День работы
Сегодня не удалось ничем дополнительным позаниматься кроме работы.
Почти завершил две долгоиграющие задачи, во время решения которых многому научился.
Например,
- впервые дописывал довольно большой блок модуля;
- впервые поработал с API Яндекс.Диска;
——————
Последнее время работаю в основном самостоятельно. Мой наставник занят своими задачами и уже не уделяет столько времени как раньше.
Радует, что справляюсь. =)
📚Чтение:
+ 0 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(135 страниц из 308)
Сегодня не удалось ничем дополнительным позаниматься кроме работы.
Почти завершил две долгоиграющие задачи, во время решения которых многому научился.
Например,
- впервые дописывал довольно большой блок модуля;
- впервые поработал с API Яндекс.Диска;
——————
Последнее время работаю в основном самостоятельно. Мой наставник занят своими задачами и уже не уделяет столько времени как раньше.
Радует, что справляюсь. =)
📚Чтение:
+ 0 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(135 страниц из 308)
🔥5👍2🥰1
~ 551 день👨💻 | Удаление узла из бинарного дерева
Написать метод удаления узла из бинарного дерева оказалось не такой простой задачей. Просидел порядка 1 часа. Мой код пока не проходит мои тесты)
Проблема с указателями. После операции удаления не все указатели на родителя/потомков указываются верно.
Т.е. узел удаляется, находится узел-преемник, преемник занимает место удаленного узла, но осталось поправить указатели.
Интересная задача. Чем-то напомнила работу с узлами и указателями в связанном списке.
📚Чтение:
+ 0 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(135 страниц из 308)
Написать метод удаления узла из бинарного дерева оказалось не такой простой задачей. Просидел порядка 1 часа. Мой код пока не проходит мои тесты)
Проблема с указателями. После операции удаления не все указатели на родителя/потомков указываются верно.
Т.е. узел удаляется, находится узел-преемник, преемник занимает место удаленного узла, но осталось поправить указатели.
Интересная задача. Чем-то напомнила работу с узлами и указателями в связанном списке.
📚Чтение:
+ 0 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(135 страниц из 308)
👍2
~ 552 день👨💻 | Удаление узла из бинарного дерева. Продолжение...
Время 1:30 ночи...
Сегодня работал над методом удаления узла из бинарного дерева. =)
Вроде все работает. Узлы удаляются. Тесты свои прохожу.
В общей сложности сегодня решал эту задачу около 9 часов.🙈
——————
Завтра еще раз нужно все перепроверить. И тесты и код.
Возможно, получится поправить код, чтобы он был более компактным и читабельным.
📚Чтение:
+ 0 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(135 страниц из 308)
Время 1:30 ночи...
Сегодня работал над методом удаления узла из бинарного дерева. =)
Вроде все работает. Узлы удаляются. Тесты свои прохожу.
В общей сложности сегодня решал эту задачу около 9 часов.🙈
——————
Завтра еще раз нужно все перепроверить. И тесты и код.
Возможно, получится поправить код, чтобы он был более компактным и читабельным.
📚Чтение:
+ 0 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(135 страниц из 308)
🔥1
Снова восхищаюсь практикой написания тестов))
Сижу перепроверяю вчерашний код. Пишу новые тесты (ну, чтобы на 100% быть уверенным). Написал дополнительно 2 теста. Все работает отлично.
Про себя подумал, что все хорошо и можно заканчивать работу. Но решил написать еще один тест... Иии... Он упал!!!😳
Вроде уже тестов на удаление узла сделал вдоль и поперек. Но как оказалось из вида упускал еще один возможный вариант))
Сижу думаю как поправить метод)🤓
——————
Как я люблю тесты))) Без шуток)
Сижу перепроверяю вчерашний код. Пишу новые тесты (ну, чтобы на 100% быть уверенным). Написал дополнительно 2 теста. Все работает отлично.
Про себя подумал, что все хорошо и можно заканчивать работу. Но решил написать еще один тест... Иии... Он упал!!!😳
Вроде уже тестов на удаление узла сделал вдоль и поперек. Но как оказалось из вида упускал еще один возможный вариант))
Сижу думаю как поправить метод)🤓
——————
Как я люблю тесты))) Без шуток)
👍2🔥1
~553, 554 дни 👨💻 | Закончил работу над бинарным деревом
Написал 545 строк тестов. Было не просто.
Какие сделал выводы?
1) Тестировать все возможные варианты;
2) Если по условию задачи в отрицательном случае метод должен возвращать False, то в противоположном случае обязательно реализуем возврат True. Не оставляем None.
3) Листок и ручка - лучшие друзья при решении подобных задач. Сначала пишем, рисуем. Только потом пишем код.
---------
И самое главное! Читаем условия задачи не жопой! А внимательно, с ручкой и бумагой!
С итоговым кодом можно ознакомиться по ссылке на гитхаб: https://github.com/avagners/algorithms_and_data_structures/tree/main/data_structures%2Fbinary_search_trees
📚Чтение:
+ 0 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(135 страниц из 308)
Написал 545 строк тестов. Было не просто.
Какие сделал выводы?
1) Тестировать все возможные варианты;
2) Если по условию задачи в отрицательном случае метод должен возвращать False, то в противоположном случае обязательно реализуем возврат True. Не оставляем None.
3) Листок и ручка - лучшие друзья при решении подобных задач. Сначала пишем, рисуем. Только потом пишем код.
---------
И самое главное! Читаем условия задачи не жопой! А внимательно, с ручкой и бумагой!
С итоговым кодом можно ознакомиться по ссылке на гитхаб: https://github.com/avagners/algorithms_and_data_structures/tree/main/data_structures%2Fbinary_search_trees
📚Чтение:
+ 0 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(135 страниц из 308)
GitHub
algorithms_and_data_structures/data_structures/binary_search_trees at main · avagners/algorithms_and_data_structures
Алгоритмы и структуры данных. Contribute to avagners/algorithms_and_data_structures development by creating an account on GitHub.
🔥4
~555, 556 дни 👨💻 | Поиск в глубину и поиск в ширину
Есть 2 общепринятых способа обхода дерева:
- обход в ширину - это когда перебираем узлы по уровням: сначала корень, потом все узлы второго уровня, далее все узлы третьего уровня, и так далее;
- обход в глубину - это рекурсивный перебор узлов по веткам. Например, сначала перебираем все узлы левого поддерева, потом корень, потом все правого поддерева. Такой способ возвращает упорядоченный список узлов в порядке возрастания. Его ещё называют in-order. Есть ещё pre-order (сначала проверяем узел), и post-order (узел проверяем последним);
С кодом можно ознакомиться на гитхаб: https://github.com/avagners/algorithms_and_data_structures/blob/main/data_structures/binary_search_trees/binary_search_tree.py#L165
---------
📚Чтение:
+ 15 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(150 страниц из 308)
Есть 2 общепринятых способа обхода дерева:
- обход в ширину - это когда перебираем узлы по уровням: сначала корень, потом все узлы второго уровня, далее все узлы третьего уровня, и так далее;
- обход в глубину - это рекурсивный перебор узлов по веткам. Например, сначала перебираем все узлы левого поддерева, потом корень, потом все правого поддерева. Такой способ возвращает упорядоченный список узлов в порядке возрастания. Его ещё называют in-order. Есть ещё pre-order (сначала проверяем узел), и post-order (узел проверяем последним);
С кодом можно ознакомиться на гитхаб: https://github.com/avagners/algorithms_and_data_structures/blob/main/data_structures/binary_search_trees/binary_search_tree.py#L165
---------
📚Чтение:
+ 15 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(150 страниц из 308)
👍3
~557 день 👨💻 | Двоичное дерево в виде массива
Продолжаю изучать двоичные деревья. Сегодня начал рассматривать реализацию двоичного дерева поиска в виде массива.
Основные моменты.
1) Узлы в массиве хранятся в последовательном порядке;
2) Дерево хранится целиком. Т.е. если узла нет, то на его месте в массиве хранится None. Пример на изображении.
3) Индексы родителя, левого или правого потомка можно найти след. образом:
- индекс родителя:
(I - 1) / 2
- индекс левого потомка:
2 * I + 1
- индекс правого потомка:
2 * I + 2
, где I - это текущий индекс массива.
—————
📚Чтение:
+ 0 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(150 страниц из 308)
Продолжаю изучать двоичные деревья. Сегодня начал рассматривать реализацию двоичного дерева поиска в виде массива.
Основные моменты.
1) Узлы в массиве хранятся в последовательном порядке;
2) Дерево хранится целиком. Т.е. если узла нет, то на его месте в массиве хранится None. Пример на изображении.
3) Индексы родителя, левого или правого потомка можно найти след. образом:
- индекс родителя:
(I - 1) / 2
- индекс левого потомка:
2 * I + 1
- индекс правого потомка:
2 * I + 2
, где I - это текущий индекс массива.
—————
📚Чтение:
+ 0 стр. "Изучаем SQL" Алан Бьюли (2007 год)
(150 страниц из 308)
👍3🤔1