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

Я узнал о классах записей, которые были реализованы в JDK 14, они служат для более простого моделирования простых объектов данных. Обычно мы пишем классы для простого хранения данных, таких как результаты базы данных, результаты запросов или информация из службы. мы можем заменить наши повторяющиеся классы данных записями. Записи — это неизменяемые классы данных, для которых требуется только тип и имя полей.

Я узнал, что такое Gradle — инструмент, который позволяет автоматизировать сборку с открытым исходным кодом, ориентированный на гибкость и производительность. Gradle обладает большой гибкостью и позволяет нам использовать другие языки, а не только Java, а также имеет очень стабильную систему управления зависимостями. Я также научился собирать с помощью Gradle проект Java, а также научился собирать с помощью определенной версии JDK.

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

Я больше изучал IntelliJ IDEA IDE и смог изучить несколько инструментов, облегчающих программирование проектов на разных языках. Инструментом, который я использовал больше всего на этой неделе, был отладчик, с помощью которого я отлаживал некоторые проекты, с которыми работал. Было очень полезно выполнить некоторые тесты проекта с открытым исходным кодом, над которым я работал, что упростило выявление проблем.

Я узнал о GitHub Wiki, это полезно, чтобы показывать информацию людям, которые посещают наш проект на GitHub. Работа над проектом с открытым исходным кодом в течение этой недели дала мне возможность изучить работу этого инструмента GitHub, что было очень полезно, потому что благодаря этой информации я смог правильно настроить проект, а также развеял некоторые сомнения, которые у меня были. о коде.

Я узнал о модуле Spring под названием Spring Security, который является библиотекой, являющейся частью проекта Spring. Spring Security пытается сгруппировать все функции контроля доступа пользователей в проектах Spring. Контроль доступа позволяет ограничить параметры, которые могут выполняться заданным набором пользователей или ролей в приложении. Для этого программист должен настроить приложение, сообщив Spring Security, как должен вести себя уровень безопасности.

Я узнал о 3 разных политиках безопасности для заголовков в Http-запросах к серверам, а именно:

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

Вклад в открытый исходный код

На этой неделе я искал Java-проекты, чтобы внести свой вклад, я делал разветвления для нескольких крупных проектов, которые привлекли мое внимание, но большую часть времени я чувствовал себя перегруженным, и в итоге не понял проекты, или мне было очень трудно понять их. заставить их работать. Наконец, я нашел один под названием «саган», который состоял из проекта официального веб-сайта spring.io, мне он действительно показался хорошим проектом для участия, поскольку это технология, которую я знаю, и, в свою очередь, это сайт, который очень посещают программисты, использующие фреймворк Spring.

Ссылка проекта: https://github.com/spring-io/sagan

Я изучал структуру проекта и документировал себя с помощью ресурсов, предлагаемых Wiki репозитория GitHub. Я нашел это очень полезным, потому что информация была довольно проста для понимания, и благодаря ей я мог видеть, как правильно запустить проект. Во время изучения Вики я заметил, что там была ссылка, которая не работала, так как она не была обновлена, чтобы ссылаться на правильную страницу. Из-за этой ситуации я решил открыть вопрос, указывающий на проблему с вики, поскольку только сопровождающий репозиторий может внести это изменение.

Ссылка на проблему, о которой я сообщил: https://github.com/spring-io/sagan/issues/1048

Пока я пытался запустить проект, у меня были проблемы со сборкой с помощью Gradle в IDE IntelliJ Idea, так как проект нужно было собрать с помощью JDK 11, поэтому мне пришлось найти способ изменить версию JDK, чтобы все могло быть сделано правильно. После долгих исследований и нескольких неудачных попыток мне удалось это сделать, и поэтому я смог правильно запустить проект.

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

Ссылка на выпуск: https://github.com/spring-io/sagan/issues/1035

В течение недели я работал над этой проблемой, и мне пришлось изучить некоторые вещи безопасности Spring и провести много исследований о том, как работают 3 заголовка безопасности, которые я должен был добавить. Политики безопасности, которые я должен был разместить на странице, были: политика безопасности контента, политика реферала и политика разрешений. После моего исследования я начал работать над этим, и через несколько часов работы я смог правильно сделать то, что требовалось в задаче. Я сделал свой PR, указав изменения, которые я сделал, и я жду, когда сопровождающий сообщит мне, правильно ли то, что я предоставил, или нужны ли какие-либо изменения.

Ссылка на PR: https://github.com/spring-io/sagan/pull/1049

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

Заключительные мысли

Мне очень понравился этот этап, меня очень радует тот факт, что я вношу небольшой вклад в сообщество открытого исходного кода, что, в свою очередь, принесло мне много знаний благодаря исследованию различных кодов в каждом проекте, что очень полезно для меня, так как обычно во время реальной работы с программным обеспечением, очень вероятно, что мне придется работать над кодовой базой. Я с нетерпением жду продолжения изучения новых вещей в течение следующей недели.