После выходных

После выходных

Пахан

Выходные

Выходные дались тяжело в том плане, что сложно отдыхать, когда в голове мысли о том, что нужно работать: дальше учить Python и тд. Пытался бездельничать, но когда-то немного почитывал. Вообще нужно уметь отдыхать конечно, иначе - беда. Стоит, наверное, и этому поучиться, а не только Python.

Python

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

В целом ООП в Python становится понятней, какие-то тонкости, например:

class A:
def __init__(self, ...):
...
class B(A):
def __init__(self, ...):
# self.__init__(...) - Вызовет бесконечный вызов
A.__init__(self, ...) # пока не было речи о super, вызываем напрямую у родителя, что равносильно

Git

Дальше по книге о Git все также объясняются тонкости хранения названия файлов, названия директорий, самих файлов, коммитов, тэгов, деревьев.

На картинке показано как выглядит объект Git: tag и branch name указывают на commit, commit в свою очередь указывает на tree, которое уже указывает на blob (binary large object) объекты хранимых данных.

Прочитал про то, как используется хеш-функция. И что для оптимизации используется метод: если два идентичных файла хранятся в Git, то они оба будут указывать на один и тот же blob объект, потому что результат хеш-функции будет одинаковый для них, и нет смысла хранить два разных объекта.

Пока все это поверхностно, но понемногу что-то ухватываю. Хотел сегодня поиграться с этими вещами, посмотреть, как устроена папка .git, какие имена у файлов внутри, но не дошли руки.

SQL

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

Вспомнил про аргумент DISTINCT, который предотвращает появление повторений в выполненном запросе.

SELECT DISTINCT ... FROM ...

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

Django/Стрим

Появилось вдохновения постримить сегодня. Решил совместить полезное с приятным, почему-то тянет иногда этим заниматься. В плане полезного - решил расширить функционал написанного todo-листа на прошлом стриме: добавить регистрацию/авторизацию пользователей, реализовать todo-лист для каждого пользователя отдельно.

В итоге все получилось, кроме регистрации, потому что забыл про нее, да и сил уже не было. Огранил доступ к страницам сайта, кроме страницы авторизации, для неавторизированных пользователей, для этого понадобилось добавить декоратор в файл urls.py и обернуть им нужные view:

django.contrib.auth.decorators.login_required

Также был такой баг (bug), что любой пользователь, мог удалить объект из листа другого пользователя, написав "угаданный" id объекта в url "/update/<id>". Чтобы устранить эту возможность, перегрузил метод get() UpdateView и DeleteView. А именно добавил проверку, если объект с этим id принадлежит другому пользователю, а не тому, который авторизован, то происходить редирект (redirect) на главную страницу. Решение костыльное на мой взгляд, но может в будущем найду лучше.