И снова всем привет!
В северных странах осень постепенно вступает в свои права. Желтеют и опадают листья. Птицы покидают свои гнезда и улетают в тёплые края. В южное полушарие приходит весна и отдохнувшая, напитавшаяся талыми снегами земля снова покрывается густым ярко-зелёным ковром. И только у нас в Израиле, где лето не спешит сдавать свои позиции, на прошлой неделе ВНЕЗАПНО наступил новый 5778 год 😜.
Конечно же, это событие не прошло мимо меня и я вместе со всеми отмечал, ходил в гости, вкусно кушал на праздничных застольях и поднимал рюмочку “за хороший и сладкий год”. Но праздники праздниками, а если в новом году я всё-таки хочу оказаться на новом рабочем месте, то мне следует приложить определённые усилия и не выбиваться из графика. Благо, для учёбы на этой неделе время тоже нашлось, поэтому в этом плане мне тоже есть, чем похвастаться.
Основной моей целью на этой неделе было создание рабочей веб-версии моего приложения для рассчёта собственной зарплаты. С одной стороны, задача несложная, если учитывать, что вся основная логика уже написана и работает точно также, как и в консольной версии, поэтому её достаточно было просто скопипастить. Но в плане интерфейса всё оказалось несколько сложнее, чем на первый взгляд. Пришлось вспоминать вёрстку и Bootstrap, который я, в общем-то, никогда толком и не знал, кроме того, как его подключить. Также я никогда раньше не работал с такими элементами, как кнопки и формы, поэтому во всё пришлось вникать с нуля: что и куда они отсылают, как мне получить эти данные в своем коде и что с этим богатством потом делать. Но самым тяжёлым этапом для меня оказалась локализация. Если честно, то на каком-то этапе уже думал, что сам не справлюсь, но в конце концов удалось навелосипедить решение, отчасти основанное на том, что я уже использовал ранее, но со своими нюансами (для каждого языка пришлось писать отдельный обработчик, практически идентичный другим, всё это привело к ужасному дублированию кода, но по другому не получилось). До использования специальной библиотеки для локализации руки опять не дошли. Но в конце-концов, это моё собственное решение, оно работает, а значит тоже имеет право на существование.
Также продолжаю заполнять пробелы в теоретической базе. На этот раз просвещался на MDN, где, как я уже говорил, есть небольшой обучающий раздел про серверное программирование. Ничего особенного. Просто немного походил по ссылкам, почитал статьи. Информация там рассчитана, как мне кажется, на совсем уж новичков, поэтому по большей части всё это мне уже было известно. Но кое-что новое там я всё же узнал, так что не жалею о потраченном времени. Большинство статей раздела всё ещё не переведены или не до конца переведены с английского, но я считаю это только преимуществом, поскольку во-первых, это даёт возможность попрактиковаться в чтении, а во-вторых, MDN создаётся добровольцами и каждый — если хочет — может принять участие в переводе. И это тоже, я считаю, неплохая практика и небольшой плюсик, о котором даже можно упомянуть в резюме).
После того, как я, наконец-то довел свой мини-проект до рабочего состояния, мне конечно же захотелось выставить его на всеобщее обозрение. Одного лишь репозитория на гитхабе в случае с вебом недостаточно и хочется иметь постоянную действующую ссылку на рабочий сайт, поэтому следующим шагом я начал разбираться в том, как задеплоить своё детище на heroku. Heroku это так называемая PaaS-платформа (Platform as a Service). Боюсь объяснить неправильно, поэтому вот копипаста из Википедии:
Platform as a Service (PaaS, «платформа как услуга») — модель предоставления облачных вычислений, при которой потребитель получает доступ к использованию информационно-технологических платформ: операционных систем, систем управления базами данных, связующему программному обеспечению, средствам разработки и тестирования, размещённым у облачного провайдера.
В общем, насколько я понял — это такое место, куда (в идеале) можно просто закинуть свое веб-приложение и не особо париться об его развертке на сервере, потому что платформа уже настроена таким образом, и включает всё необходимое программное обеспечение, чтобы сделать это за вас и облегчить вам жизнь. Есть ещё, правда, такая штука, как IaaS (Infrastructure as a Service), например AWS от Amazon и если честно, я не совсем понял, в чём их разница. Думаю, есть какие-то преимущества и у того и того подхода. Для простых приложений типа статических сайтиков без всяких там навороченных баз данных и прочего, такие платформы являются бесплатными, поэтому это самый, что ни на есть лучший вариант для использования в учебных целях.
Разобраться в общей схеме работы с heroku оказалось очень просто. По сути, все, что нужно сделать, это скачать консольную программку, залогиниться, переместиться в директорию со своим приложением (где до этого уже должен быть инициализирован гит-репозиторий) и создать heroku-приложение при помощи команды heroku create [name]
. Если имя приложения не задать, то heroku делает это за вас, придумывая оригинальные названия вроде “blue-dragon-184”. После этого на серверах heroku создаётся удаленный гит-репозиторий и всё, что теперь остаётся сделать, это просто запушить туда своё приложение. Также в настройках можно подключить гитхаб аккаунт и пушить изменения прямо к себе в гитхаб, а heroku будет забирать их прямо оттуда, а не из созданного им репозитория. Тоже удобно, т.к. устраняет необходимость проделывать дважды одно и то же действие. После того, как мы делаем git push heroku master
(ну или origin master
), приложение само разворачивается и запускается на сервере, если, конечно же, все необходимые для этого скрипты в package.json или в специальном файле Procfile прописаны правильно. На деле, мне пришлось повозиться с этими скриптами, пока всё не заработало правильно, но ребята на Хекслете помогли во всём разобраться и теперь можно в любой момент получить доступ к моему сайтику по адресу https://maof-maskoret.herokuapp.com.
Пост вышел с опозданием именно по той причине, что я хотел довести начатое дело до конца и поделиться здесь этой самой ссылкой на рабочий сайт, ведь именно это и является кульминацией всей проделанной работы за неделю. Вчера поспал после работы всего 3 часа, а потом весь день и весь вечер возился с npm-скриптами, пытаясь понять, что я делаю не так. В итоге, когда всё, наконец, получилось, у меня уже не оставалось никаких сил на написание статьи. А сегодня как раз не работал и выспался, поэтому пишу на свежую голову.
На этом всё. Желаю вам, чтобы ваши приложения всегда деплоились и запускались с первого раза, ну и как всегда: хорошей недели!