/ Programming

Hexlet projects review. part 3

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

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

Суть проекта была в построении CLI утилиты, которая скачивает веб страницу с вложенными линками, которые указаны в тегах, а так же меняет ссылки в этих самых тегах на локальные. Вначале я использовал promises для асинхронного кода (чтение данных, загрузка из сети), после того как понял что мое приложение развило слишком высокую сложность и с промисами очень сложно отслеживать ошибки и вообще следить за flow, я переписал все на async/await, что значительно упростило работу с кодом и само приложение. В проекте очень много использовалось стандартных модулей node.js — fs, url, os, path, что дало возможность ближе познакомиться с ними и изучить их возможности. Еще хочу отметить данное видео от Филипа Робертса, оно очень сильно помогло мне разобраться с асинхронным флоу. Тем у кого возникают трудности с этим, маст хев. Ну и у него отличный сайт, где можно поиграться с работой любого кода и визуально посмотреть на стек вызовов.

В целом как и ранее проект очень сильно помог мне разобраться в определенной предметной области, но этот проект отличался тем, что очень сильно вымотал, не знаю почему именно, видимо это особенность асинхронного программирования :) Итоги как всегда в GitHub.

На этом основные проекты закончились и я потихоньку начинаю заниматься поисками работы, параллельно заканчивая курс hexlet, в нем уже остались более прикладные вещи (реализация http server, микрофреймворк js express и др.). Так же еще будет 4 проект, что то вроде дипломного, стартует 6 марта и на этот раз будет длится 2 недели, но он будет состоять из 1 шага, скорее всего это будет чисто прикладной проект, но вероятнее всего будет работа с БД, что очень радует.