Всем привет! Обычно я публикую новые посты по понедельникам, но в этот раз делаю это с небольшим опозданием, поскольку последние пару дней активно занимался оформлением блога. Тут на днях я получил фидбек от одного из читателей: мне сообщили, что статьи на сайте оформлены не очень хорошо и читать текст сложно. С другой стороны, Кирилл обещал скоро начать пиарить мой блог на Хекслете и в скором времени я ожидаю большого притока читателей. Поэтому сайт должен выглядеть как конфетка. В общем, для вас стараюсь, так что не обессудьте) Ну и буду рад любым дальнейшим комментариям по поводу блога, обратная связь очень важна для меня!
Ну а теперь — по делу. Прошедшая неделя была довольно продуктивной и я успел сделать и выучить очень много всего.
Во-первых, я узнал, что для моей библиотеки совсем не обязательно использовать Gulp и для автоматизации таких процессов, как тестирование и транспайлинг исходных файлов вполне можно обойтись npm-скриптами и стандартной юниксовой утилитой make.
Во-вторых, я примерно понял что именно происходит после установки какого-либо пакета в систему, и по какому принципу она производит поиск исполняемого файла при выполнении какой-либо команды.
Также, я разобрался в том, что это за package-lock.json
, присутствующий в моем пакете и который я, вроде бы, не создавал. Оказывается, это специальный файл, который генерируется самим npm-ом при установке любых новых зависимостей. Он гарантирует, что даже если мой пакет будет установлен кем-то через 5 лет, то все зависимости подтянутся именно в такой форме и в таких версиях, которые были на момент создания моего пакета. Ну или как-то так. В общем, идея в том, что если за это время в этих сторонних пакетах произойдут кардинальные изменения, то мой все равно будет работать как надо и ничего не поломается. Подробное объяснение можно найти на сайте npm на анлийском. Если кто-нибудь может посоветовать, где можно найти что-то подобное по-русски — буду очень благодарен, т.к здесь мало что понял.
Разобрался, наконец-то, в том, для чего мне, собственно, нужен файл index.js, который в моем package.json помечен как main. Оказывается, именно через него нужно экспортировать наружу все содержимое моей библиотеки.
Кроме того, сделал в своем проекте еще много важных вещей: прописал gitignore, настроил как надо babel, установил локально и настроил eslint, раскидал классы по отдельным модулям и переписал тесты, подключил сторонний сервис Travis и вставил бейджик тревиса в ридми. Travis CI — распределённый веб-сервис для сборки и тестирования программного обеспечения, использующего GitHub в качестве хостинга исходного кода. Если честно, я не совсем понял, что он мне дает, ведь я и так собираю и тестирую всё по ходу разработки, но надо — значит надо. Скорее всего, преимущества данного сервиса становятся видны именно в случае командной работы над проектом. Поживем — увидим. Ну а пока что, Кирилл сказал прикрутить — я прикрутил.
В итоге, моя (пусть и маленькая) библиотечка с алгоритмами заиграла новыми красками и наконец, обрела черты нормального node.js-проекта, который не стыдно выложить на гитхаб и показать людям. Ну и на npm, естественно, тоже можно ее найти и при желании, установить (хотя я крайне не рекомендую использовать ее для любых целей, кроме как для ознакомительных :)
Далее, в качестве “итогового задания” по инструментам, Кирилл поручил мне создать и опубликовать на npm пакет, который после установки будет по команде в терминале выводить “Hello, World!”. Но раз уж я живу в Израиле, я решил поступить немного более оригинально и теперь среди всего множества хеллоуворлдов на npm-е, есть один-единственный, который здоровается по-еврейски)))
В общем, потрудился я на этой неделе на славу, а также узнал кучу всего нового. Как объяснил мне Кирилл, он намеренно накидывает мне как можно больше всевозможных инструментов для того, чтобы избавить меня от страха перед всем новым. На данный момент моей проблемой является то, что каждое новое слово, термин, инструмент вызывает у меня холодный пот и дрожь в коленях. При том, что после этого я иду и без особых проблем разбираюсь во всем самостоятельно, ну или после небольших наставлений ментора. То есть проблема — чисто психологического характера и поэтому решить её можно только одним способом: почаще выходить за пределы зоны комфорта и браться за все новое и сложное. Отныне, моя установка должна быть: “О! Новый инструмент/язык/проект/задача…! Круто! Дайте две! Пойду и изучу!” Конечно же, такие перемены в сознании не происходят за один день, но к этому нужно всеми силами стремиться и именно этот огонь в глазах должен быть виден будущему работодателю.
Теперь, когда я уже более-менее познакомился со всеми основными инструментами, я, наконец, могу приступать к освоению более практичных вещей, связанных с веб-разработкой. Моим следующим заданием будет разобраться в таких вещах, как основы tcp/ip и понятия ip адреса и порта, принцип работы протокола http, ну а после этого приступим к изучению фреймворка Express.js.
Продолжаю потихоньку почитывать “Совершенный код” Макконнелла. Вроде как теперь пошли более практичные вещи, более связанные с самим кодом, чем с общей архитектурой приложения.
По подкастам: слушаю сразу несколько, попутно слежу за новыми выпусками тех, которые уже прослушал полностью. На этой неделе прослушал подкаст Зоракса, большая часть которого, по сути, представляет собой просто аудиодорожки из обучающих видеороликов на youtube. Это было довольно сложно: воспринимать видеоуроки на слух и пытаться представить себе происходящее в этот момент на мониторе у автора, но по большей части, у меня это получалось. В любом случае, это был полезный и интересный опыт. Вообще, видно, что парень толковый, очень жаль, что он совсем забил на свой канал. Сейчас было бы еще, что посмотреть и что послушать. Ну, будем надеяться.
А вообще, если честно, подкасты уже несколько поднадоели и хотелось бы разбавить их какими-нибудь книгами или лекциями/докладами. Но с аудиокнигами на айтишную тематику, насколько я понимаю, все совсем туго. Если вдруг сможете посоветовать что-нибудь годное послушать кроме подкастов — я буду вам искренне благодарен. Если не о программировании, то по крайней мере что-нибудь, что может быть полезно и интересно послушать программисту.
Ну что ж, вроде все. Пойду теперь гуглить про устройство Всемирной паутины. Ну а вам, дорогие читатели, всего хорошего! Увидимся на следуюющей неделе!