Парсим новости

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

Тут я познакомился с пакетом Osmosis, основные функции я изначально смотрел по официальной документации и беглым взлядом пробежался по первой половине статьина tproger. Принцип работы таков (ссылка на pastebin):


Set - это немного особое место. Работает это примерно следующим образом: мы указываем ключ и некоторое значение. Затем, когда мы в .data обращаемся к data.[ключ из set] (например data.title) - происходит поиск на странице внутри объекста с селектором из find, поиск ланных по заданным селекторам в ключе. Если взять пример из моего кода, то на странице будет найден элемент с тегом tagsName, который находиться внутри элемента с классом classname.
Надеюсь, что это хоть немного понятно.
Далее, я приступил к изучению того, как мне записать результаты в файл. Тут я наткнулся на библиотеку File System (она же fs). Меня вполне устроило fs.writeFile. Изначально, я сохранил все в JSON, a метод JSON.stringify помог мне в этом. Затем я планировал преобразовывать это в HTML.
Но тут в голову мне пришла идея сразу хранить все в нужном мне формате. Тем более что, отображаемый формат результатов для меня прост: Название новости - ссылка. В целом все было отлично, но одна вещь меня постоянно разражала - между строчками была чертова запятая в конечном файле. Я пол дня пытался ее убрать всеразличными способами, но не получалось этого сделать даже с помощью DOM в итоговом варианте страницы. В итоге, через пол дня я обратился в чат и все оказалось проще чем я думал. Я все делал через array.map(), а наддо было делать через array.join(‘’). Я понял что совсем забыл про этот метод :( и это сработало. Затем я создал еще два файла, которые формировали мне шапку и хвост html файла, для воссоздания полноценной структуры файла и подключения Bootstrap для более красивого вида. В целом, на этом задача была выполнена. Получилось нечто такое:

Node Weather App

Данную вещь я не изначально не панировал, просто увидел идею и решил попровабовать. Идея максимально проста - брать по API погоду с openweathermap.org и отображать это с помощью express на сайте.
Изначально надо зарегистрироваться на openweather и получить ключ для доступа к данным. Тут я немного поработал с request и body-parser (правда пока не до конца понятно что это), вспомнил express и вспомнил работу с Heroku. В результате получилось что-то такое: ссылка. Мне только не нравится что название городов нужно писать только на английском языке. Но, поискав в гугле, я не нашел более достойной замены для openweather.
В данной задаче я впервые познакомился с ejs и познакомился с тем, как развертывать приложения node на heroku. В целом, если честно, развертывание делается так же как и на Rails, с тем лишь отличием, что я вручную создавал procfile.
Procfile - это механизм объявления команд, выполняемых приложениями на Heroku. В основном он используется чтобы сообщить Heroku как запускать различные части приложения. На каждой строке, слева от двоеточия - указывается тип процесса, а справа - команда запуска для этого процесса. Для своего проекта я использовал тип процесса - web, это особый вид процесса, который направляет HTTP-запросы на процессы запущенные с этим именем. Для запуска механизмов, достаточно лишь добавить файл с именем “Procfile” в корень проекта, что бы Heroku запускал необходимые нам процессы. Боле подробно можно прочитать тут.

Color Game Project

Этот проект я прохожу в рамках курса на Udemy. Он нужен для закрепления знаний в ходе прошлых курсов (html, css, js, dom), перед переходом к JQuery и backend. Смысл приложения таков: есть сетка из различных цветов размерностью 6 х 6 и есть надпись формата “rgb(0, 0, 0)” с указанным цветом. Нужно угадать, у какого из квадратиков этот цвет. Если не угадал - то текущий квадрат исчезает (если точнее, то закрашивается в цвет фона), а если угадал - все квадраты закрашиваются в этот цвет. На данный момент это имеет такой вид, но это еще не финальный вариант:

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

Кстати о чтении

Все также продолжаю читать С. Кови “Семь навыков высокоэффективных людей”, а если точнее - я решил начать ее сначала, потому как много что не понял и упустил. Но, в целом, уже догнал прошлый результат и в принципе без потерь в знаниях + начинаю применять их в жизни.
Взял себе пару книг по Node.js на будущее: “Node.js в действии. 2-е издание” и “Изучаем Node.js. Переходим на сторону сервера 2-е издание”. Надеюсь, когда придет первая книга, она меня не огорчит. Вторая книга была только в электронном формате и мне пришлось ее распечатывать и прошивать (дабы сделать вид книги), но это все мелочи, по сравнению с тем - что она фактически написана по версии Node 4.0, хотя автор вроде как и приводит разницу в коде с 6.0 там где это необходимо. Но все же…
И чуть по позже хочу заказть себе “React и Redux: функциональная веб-разработка”. Судя по оглавлению - неплохая книжка и как говорится - в хозяйстве всегда пригодиться. Но ее планирую покупать только когда дойду до React. Может, если кто прочитает (либо уже успел прочитать) - напишите какой нибудь небольшой отзыв о ней.

Все это, заняло у меня недели полторы (может чуть меньше), а остальные дни я лишь писал данный пост. Потому как только на это и хватало времени до и после работы.
Спасибо всем за внимание!