# Краткий конспект "первой" лекции
Всем привет! Моё имя можно видеть на слайде (@rerand0m [vk](https://vk.com/rerand0m) [telegram](https://t.me/rerand0m)) И сегодня мы с вами поговорим.
А что у нас было в прошлый раз? Окей, sql иньекции были, про http чёт не понятно, ssrf, xxe, услышал. Про CRUD не слышали.
Про id injection слышали? Вот нам на ZN показали...
OWASP TOP 10? Ну, вот это знать нужно. Кто у нас самое уязвимое звено? Правильно, человек.
Сегодня я вам расскажу о своей боли, как разработчика. CTF'еры любят изобретать велосипеды, не надо так.
#### code conversion (code style)
Нужно следовать code style не только потому что так понятнее, но и потому что это помогает избежать ошибок. А ещё это моя боль, как пользователя vim, если вы пишете одну конструкцию в двух местах по разному, то работая с вашим кодом, как с шаблоном, я вношу туда новые ошибки. Просто старайтесь делать так, чтобы код в рамках одного файла, а лучше одного проекта, выглядел одинаково.
#### Системы управления версиями
Простите, но у меня git головного мозга, поэтому я говорю о нём.
Эти системы позволяют описать работу во времени и обеспечить эффективное переключение между зафиксированными состояниями проекта.
Лучше загуглить, если хотите подробно разобраться, например, https://proglib.io/p/git-for-half-an-hour/ *(также обратите внимание на ссылки в конце, даже если не осилите статью)*.
Чем отличается git от github? *(Я думаю, что не все поняли, можете загулить в этом нет ничего такого)*
Далее пару слов о git flow - это как code style, только для git.
Затем совсем чуть-чуть о CI/CD - continue integration / continue delivery *(Да, я соврал сказав development, простите, бывает. Если что, принимаю поправки на лету)*. Тоже советую гуглить отдельные статьи на эту тему.
На самом деле они решают целый ворох проблем:
* ААААА, всё сломалося, верните как было! (git checkout, git reset, …)
* С какого момента это сломалось? (git diff)
* Кто это сломал? (git blame)
* Сейчас на секунду отвлекусь… (git stash)
* У меня есть эта фича и эта фича, как мне их объеденить? (merge)
* Я закончил, нужно описать. (git commit)
* Нужно выпустить новую версию (разработчик) (git tag)
* Нужно доставить новую версию до пользователя (менеджер) (github/gitlab release)
* Пожар!!! (git commit; git push)
Это всё лишь примеры, не стоит рассматривать как руководство или топ-команд.
Затем немного сказал о команде diff и что это всё строится на ней, т.к. такие системы работают вокруг изменений.
По секрету рассказал, что git в угоду скорости зачастую хранит не изменения в чистом виде, а слепки файла, таким образом занимает больше места, чем это необходимо.
#### Кто-нибудь слышал о методологиях разработки? agile? scrum?
Waterflow - old-school, не гибкий, долгий, и вообще много минусов.
Agile - гибко, модно, молодёжно.
Рассказал про доску из сериала "Силиконовая долина". Это trello и есть.
Далее сказал, что остановились на discord, как альтернативу предложил slack, где использовать отдельные чаты для каждого сервиса.
Ну и в качестве самого простого решения в виде одного файла, который все могут редактировать - hackmd.io.
Немного рассказал о языке разметки MarkDown.
## ctf - это тимбилдинг
Затем было голосование за следующий блок лекций по пятницам, вебчик победил.