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

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

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

Я узнал о фреймворке Mockito, который используется для создания модульных тестов с фиктивными объектами в Java, он облегчает разработку тестовых классов, имеющих внешние зависимости. Он очень популярен из-за простоты использования. Мок-объект — это фиктивная реализация интерфейса или класса. Это позволяет определить вывод определенных вызовов методов. Обычно они записывают взаимодействие с системой, и тесты могут это подтвердить. Благодаря тому, что я задокументировал сам фреймворк, я научился внедрять Mockito в проект Java.

Благодаря проекту с открытым исходным кодом, над которым я работаю, я узнал о концепции «Крипирования», которая представляет собой процесс копирования мультимедийного контента в наше внутреннее хранилище с любого ресурса, такого как CD, DVD, Blu-ray или любого интернет-сайта. Я также научился создавать свой собственный «риппер» на Java с различными инструментами, облегчающими процесс поиска общедоступных ресурсов, доступных на веб-страницах, и их автоматическую загрузку.

Я узнал о библиотеке «Jsoup», которая используется для получения HTML любой веб-страницы и для поиска в ее содержимом любого полезного нам элемента, этому значительно способствуют различные предлагаемые методы. Я также узнал, какие опции эта библиотека предлагает в отношении HTML, например, вложенный поиск элементов. Кроме того, благодаря тому, что мне приходилось манипулировать некоторыми строками HTML, я научился генерировать подстроки в Java.

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

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

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

Как только я понял, как работает проект, я подготовил среду и смог успешно добавить класс, содержащий функциональность для загрузки мультимедийного контента со страницы, предложенной в выпуске, а также я создал метод в существующем классе, чтобы помочь другим программистам для получения массивов JSON из URL-адресов, плюс я добавил различные тесты для методов, которые я добавил в новый класс, так как это было требованием для принятия PR.

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

PR-ссылка: https://github.com/RipMeApp/ripme/pull/1935.

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

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