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

Я узнал о бинарных деревьях, которые представляют собой структуры данных, очень похожие на двусвязные списки, в том смысле, что они имеют два указателя, указывающих на другие элементы, но имеют не логическую структуру линейного или последовательного типа, а разветвленную. Они похожи на дерево, отсюда и название. Я также изучил 3 разных способа обхода бинарного дерева в Preorder, Inorder и Postorder. Я также узнал, как работает бинарное дерево поиска.

Я научился заполнять вложенные объекты в монго, это очень полезно, когда в документах монго есть ссылки на другие документы, а они, в свою очередь, имеют другие ссылки, и вам нужно получить полную информацию обо всех объектах, на которые есть ссылки. Я также узнал, как правильно подсчитывать документы в коллекции mongo с помощью mongoose, с помощью метода, называемого оцениваемымDocumentCount().

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

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

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

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

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

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

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

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

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

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