Ответы пользователя по тегу Node.js
  • Как вывести ссылку с парсинга в NODEJS?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Вариант 1: тупо прём по ссылке
    .follow('.user-contacts@data-url')
    .find(.....)
    .set(.....)
    ....


    Вариант 2: если там нажимашка pop-up с аяксамми, то иммитируем клик
    .click('.js-userContactsShow')
    .delay(500)
    .find(......)
    .set(.....)
    ....
    Ответ написан
    Комментировать
  • IDE для Node.js?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Всяк кулик свое болото хвалит :)

    Тут холивары с аргументами и в сравнении. Актуальность, опять же
    Ответ написан
    Комментировать
  • Как снаружи прервать выполнение асинхронной функции?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Если флаги не вариант, тогда только запихнуть асинхронную задачу в отдельный процесс - его при желании можно прибить. Для отдельного процесса, можно легко организовать `await`.
    Читать тут
    Ничего не мешает сделать отдельные самостоятельные модули под асинхронные процессы.
    Таким макаром можно организовать аналог многопоточности с балансировкой, контролем приоритетов. чифирем и папиросами.

    * npmjs.com/package/invoke-parallel
    * npmjs.com/package/runnablepool
    * npmjs.com/package/child-pool

    Есть еще workers и cluster

    И не надо забывать, что вся асинхронность Ноды - на событиях (Event Loop)
    Ответ написан
  • Как вы боретесь с удалением папок node_modules в Windows?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Тема в интернетах давно и широко освещаема, народ давно прикурил, что не все так просто, как кажется на первый взгляд, и нет "серебряной пули".

    `RimRaf` - хорошо, но не очень: использовать можно либо из скрипта, либо вручную на каждый проект, т.е. перед массовым бэкапом можно использовать лишь в составе некое "подготовительного" инструмента. И таки да - есть проблемы на разных конкретных конфигурациях. "Platform independence" не получился. По сути тех же результатов можно получить делая `rm -rf node_modules` в оболочке `bash` или `rmdir /S node_modules` в `cmd`, причем `rmdir` в большинстве случаев не вспомнит про длину строки, даже если для этого есть поводы.

    `npm dedupe` - тоже очень хорошо, но также не очень. Это неплохо делать в каждом проекте после `install` или после каждого изменения зависимостей. В противном случае перекур на сутки - просто гарантирован.

    1.

    Если доступна оболочка Bash на основе CygWin (если пользуетесь Git, скорее всего она - оболочка баша - есть, но не факт) решение, которое лежит на поверхности:

    find . -name "node_modules" -exec rm -rf '{}' +

    плюсик в конце - так надо: автоматом подтаскивает завершение (перевод) строки, можно заменить на \;

    Попадался и такой вариант:

    #!/bin/bash
    
    delete-all-dep-folders() {
      # `-prune` prevents building up lists of `node_modules` inside `node_modules`
      find ${1:-.} -type d -name "node_modules" -prune -exec rm -rf '{}' \; -exec echo 'Deleted {}' \;
      find ${1:-.} -type d -name "bower_components" -prune -exec rm -rf '{}' \; -exec echo 'Deleted {}' \;
    }


    После запуска скрипта (можно просто скопипастить в окошко баша) можно без параметров запустить команду `delete-all-dep-folders` в нужной папке или первым параметром задать путь:

    $ delete-all-dep-folders /path/to/project-root

    Напомню: если `bash` под cygwin, только тогда ему плевать на длину пути. Насколько это так, вы должны знать сами - где и какую версию Гита/Баша вы брали, там и надо читать: в интернетах найдется куча версий баша, скомпилированных с использованием нативных библиотек Windows, которые не используют cygwin!!!

    2.

    PowerShell. Якобы та самая "серебрянная пуля" от МелкоСофт. Вроде бы, плевать он хотел на длину пути. Якобы.

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

    Вариант:

    Get-ChildItem -Path "." -Include "node_modules" -Recurse -File:$false  | Get-ChildItem -Recurse | Remove-Item -Recurse  -Force


    Вполне рабочий, НО версия PowerShell >4.0. Более старые версии даже с ключом `-Force` не могут удалить НЕпустые папки.

    Уточню: несмотря на то, что Remove-Item (он же del, он же ...) имеет возможность обозначать фильтры и работать рекурсивно, тем не менее необходимость конвейера (знак палки между командами) все-таки есть, и на эти грабли наступало уже очень много народу еще до того, как на ms-tech и в документации была признано и отмечено, что таки да, проблема есть и в качестве решения предлагается использовать конвейер, т.е. – через палку надо делать, и не делать тупо Delete.

    И таки да, я нарвался на случай, когда это не сработало - на USB диске (NTFS) лежал старый проект на `Meteor`. Актуальности никакой, для истории тоже не находка, но он единственный усиленно сопротивлялся 4 с лишним часа. После чего мне надоело доискиваться причин такой стойкости и старый (честно купленный еще в прошлом веке) добрый Total Commander справился со всем проектом полностью за 1.897s.

    3.

    Победитель конкурса - Total Commander с настройками дисковых операций с помощью собственных (НЕ системных) функций. Не верьте документации: Windows, начиная с Vista, выполняет при дисковых операциях значительно больше "левых" действий для красоты, чем Commander, посему операции "его" функциями выполняются быстрее, чем "её" функциями. Совсем хорошо, если отключить в командере поддержку файлов описаний содержимого каталогов. Также, когда-то давно, мне попадался на глаза подключаемый модуль для командера, который заменял/дополнял поиск файлов на другой, в котором используется другая библиотека для работы с регулярными выражениями и дисковые операции можно выполнять сразу над результатами поиска без перекладывания во временную панель.

    4.

    Или мы не программисты? Пишем свой велосипед по рекурсивному обходу каталогов и `rimraf`-им чего надо. При этом не забываем положить сей золотой ключик отдельно, чтобы мимоходом не прибить его зависимости, и делаем для него консольный вызов. Успешно выкладываем в NPM и собираем звезды на Гитхабе. Дерзайте, а я настоящий программист, мне - лень, когда все просто и понятно :)
    Ответ написан
    Комментировать
  • Бесплатный хостинг для проекта на nodejs + mongodb?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Сloud9

    + Бесплатно - один персональный проект, неограниченно - открытых

    + Домен свой можно прикрутить, а по-умолчанию на халяву - есть домен 3го уровня

    + своя IDE - можно рулить с планшета, не имея под рукой ничего кроме браузера, особая фишка - позволяет одновременную параллельную работу в несколько рыл

    + дружит с GitHub-ом, BitBucket-ом и Google Cloud Platform.

    + Виртуалки - Ubuntu c SSH (были, по крайней мере раньше) в который можно и не лезть - все рулится через веб-морду или код.

    UPD

    Всё, баста карапузики, кончилися танцы -- нет больше старого доброго c9. Теперь это Амазон со всеми прилагающимися. Однако, IDE осталась, кое-какие проверенные плюшки тоже остались. Появились Амазоновские заморочки и ограничение на бесплатное использование в 12 месяцев, помимо более жестких ограничений на ресурсы.

    Хорошей халявы (м-да, умею же сказать) тоже не осталось. Из надежных бюджетных решений могу порекомендовать облачный VPS для разработчиков от VScale (подразделение Selectel). Хороший и шустрый сервер с SSD, собственным ДНС и платой в месяц как 2 чашки кофе в придорожной забегаловке. 5 лет пользуюсь -- полёт нормальный.

    UPD 2021

    - netlify.com - 3 года кайфа
    -vercel.app- простота и мощнота
    - repl.it - есть ништяки про Питонов, Го и ещё куча всего. Крутота
    все умеют тащить в автомате с ГтиХаба, а Нетлифай ещё и с ГитЛаба и Битбакета: просто пушишь в master и, бам-бара-бам але хоп - вуаля! -- все в продакшене, всё на халяву, можно прикрутить свой домен у всех.
    и
    - конечно же -- VScale!!! -- полный контроль и -- 8 лет, полёт нормальный

    Welcome.
    Ответ написан
    2 комментария
  • Какие плагины использовать веб разработчику в sublime text 3?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    ВСЕ!

    Ставлю по необходимости, ищу доступное на packagecontrol.io - настроен как поисковик в браузере.

    Раз в пару месяцев или чаще - сношу все нахрен, и далее по рекурсии.

    Следующая рекурсия обычно начинается с установки Emmet и пары цветовых схем собственного изготовления, далее возможны варианты.
    Ответ написан
    Комментировать
  • Как сделать крупный веб-проект на node и не заблудиться в коде, контролируя разработку от начала и до конца?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Давно использую Sails (sailsjs.org) - даже временные масштабные штуки получается разворачивать за пару дней, очень легко следить за структурой или вести разработку командой. Очень радует прозрачная поддержка WebSocket.
    Единственное, что изменил под себя - перевел сборщики с GRUNT на Gulp и для автоматизации работы с версткой юзаю TARS (https://github.com/2gis/tars), собственно из-за него и перевел на Гульп. Все руки не доходят собрать все вместе, вечная отговорка - не всегда нужно то и другое вместе.
    Ответ написан
    Комментировать
  • Помогает ли gulp при верстке обычных сайтов?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Вот хороший ответ на вопрос: TARS
    В 2х словах - швейцарский нож верстальщика от разработчиков 2ГИС, вплоть до автоматической подготовки спрайтов. Все основано на Gulp.
    Ответ написан
    Комментировать