• Модуль возвращает undefined, почему?

    fs.readFile работает асинхронно. Передавайте в getDataObj callback или юзайте промисы.
    Примерно так:
    const getDataObj = (cb) => {
      const regex = /<email>(\D+?)<\/email>/g;
      fs.readFile('uploads/dataset.xml', "utf-8", function(err, data) {
        let m;
        let result = "";
        while ((m = regex.exec(data)) !== null) {
          if (m.index === regex.lastIndex) {
            regex.lastIndex++;
          }
          m.forEach((match, groupIndex) => {
            if (groupIndex === 1) {
              result += match + '\n'
            }
          });
        }
        return cb(result)
      })
    }


    app.get('/', function(req, res) {
      parser.getDataObj((message) => {
        res.render(path.join(__dirname, 'views/index.pug'), {
          pageTitle: 'Hey',
          message: message
        });
      });
    });
    Ответ написан
  • Зачем нужно тестирование?

    @azShoo
    Проблема в том, что разработчики не могут писать код без ошибок.
    Более того, в сколько-нибудь сложных программных системах при внесении каких-либо изменений слишком сложно понять, как это отразится на других частях.
    Для того, что бы минимизировать поиски этих багов и ускорить их обнаружение пишутся юнит тесты.

    ТДД про то, что бы писать тесты до кода.
    Зачем это надо? Потому что такой подход помогает лучше структурировать в голове необходимую функциональность перед написанием непосредственно кода.
    Такой подход позволяет избегать избыточного усложнения кода, потому что подход "tests first" не позволяет написать полотнище сложного кода, не проверив правильность его работы.
    Плюсов достаточно.

    Теперь по поводу того, нужно ли ТДД всегда.
    ТДД нужно не всегда, как и красивый, производительный и правильно работающий код.
    Иногда, нужно закостылить MVP, проверить бизнес-идею и продолжить жить. В таком подходе 20% времени, потраченные на юниты - непозволительная роскошь.
    Иногда, вы пишете систему, сложность которой такова, что держать в голове матрицу состояний даже одного модуля не представляется возможным. И тут уже без юнит-тестов никак. Тут ТДД будет полезно.

    Резюмируя. ТДД - отличный инструмент. Он позволяет не откладывать на потом написание юнит тестов, добиваться хорошего покрытия и, что важнее всего, контролировать изменения, вносимые в систему. Любая неожиданная ветка поведения приведет к падению тестов.
    Как и любой инструмент - ТДД хорошо тогда, когда ты применяешь его своевременно, правильно и по назначению.
    Писать тесты когда продакшен в огне, а компания терпит крах - плохая идея. Везде нужен здравый смысл.
    Ответ написан
    Комментировать
  • Pug: что делает эта строка?

    yarkovaleksei
    @yarkovaleksei
    Это твинк. Основной акк: @yarkov (в бане)
    const compiledFunction = pug.compileFile('template.pug');

    Почему мы потом передаем compiledFunction объект с переменными шаблона, ведь это вроде не функция?

    Не смущает ничего? =)
    Получаем функцию, скомпилировав шаблон. Передаем туда объект с переменными и получаем результат. По-моему все нормально =)
    Ответ написан
    6 комментариев
  • Зачем нужно тестирование?

    dimonchik2013
    @dimonchik2013
    полковник Андрейченко
    основная идея:

    1) программа должна работать так, как нужно;
    2) программа не должна работать так, как не нужно

    программа - читай "функционал программы"

    вот без тестов с (2) , да и с редко используемым функционалом (1) начинаются сюрпризы, а сюрпризы влияют на деньги
    Ответ написан
    Комментировать
  • Зачем нужно тестирование?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Если вы следуете парадигме ТДД то автоматически ставите наличие четкой спецификации, и архитектуры на первый план. И тем самым обеспечиваете себе отстуствие хаоса в разработке. Это моя основанная на личном опыте интерпретация. К сожалению мы не делаем ТДД и у нас хаос :)
    Ответ написан
    4 комментария
  • Как и почему работает такой вызов функции?

    lxsmkv
    @lxsmkv
    Test automation engineer
    оператор отрицания превращает все это в выражение. Значение выражения вычисляется.
    Так же будет работать если анонимную фунцкию обернуть в скобки.
    Ответ написан
    Комментировать
  • Можно ли в тег заголовка H1 вставлять теги?

    delphinpro
    @delphinpro
    frontend developer
    1. Элемент span не имеет семантической нагрузки. Он нейтрален. Значит код семантичен.
    2. ПС умные, см. пункт 1.
    Ответ написан
    2 комментария
  • Как понять принципы ООП?

    onqu
    @onqu
    weasy
    Чтобы понять принципы ООП, книги не требуются. Взгляните вокруг себя. Всмотритесь в любой объект в реальном мире, опишите его наиболее подробно (материал, размер, цвет, вес, плотность, составные части и т.д.), это будут его свойства. Опишите, что и каким образом этот объект умеет делать (включаться, складываться, кушать электроэнергию, взаимодействовать с другими объектами или окружающей средой и т.д.), это будут его методы. Подумайте, для чего используется этот объект, что ему нужно изменить или добавить, чтобы использовать в других условиях или целях, и на основе всех собранных знаний создать более удобный экземпляр, это будет наследование и полиморфизм. Теперь немедленно забудьте обо всем, используйте объект по назначению, это будет инкапсуляция. Дальше останутся только тонкости выбранного Вами языка, шаблоны, методологии и прочаяие ересь тренды.
    Ответ написан
    2 комментария
  • Математика и программирование

    @nonrblGyN4ik
    Как уже имели ввиду выше, для написания обычных приложений под смартфоны, сайты, программы, математика особо не нужна. А для нормально кода достаточно нормального мышления и практики.

    По началу будет достаточно знаний языка, паттернов, фрейморков и простых алгоритмов. Далее, для более серьезных вещей, желательно будет выучить алгоритмы и мат. методы посложнее, но все уже реализовано до вас, так что от вас будет достаточно знания того, что эти методы и алгоритмы делают, а что у них там внутри уже не ваша проблема.
    Ответ написан
    Комментировать
  • Ведение диспута на aliexpress

    Trow_eu
    @Trow_eu
    Не вижу смысла отказываться от диспута.
    Если вы решили, что 50% справедливая цена за пришедшее качество товара, то описывайте все в диспуте. Можете снизить, скажем, до 30%: 10 - отсутствие, 20 - скорее за мороку и трату времени, нежели за незаводскую пайку или небольшие несоответсвия с фото, там это повсеместно, кроме фирменных товаров. Если качество именно плохое, а не просто ручная пайка (бывает и хорошая), то сумму увеличить. Но это имхо, как поступил бы я.
    Возможность открыть диспут вновь пропадет, поэтому решите для себя сумму. Решать без диспута - не помочь другим клиентам и сервису правильно оценить продавца + он вам дополнительных удобств не доставил, к чему идти на встречу?
    Ответ написан
    Комментировать
  • Динамическое подключение C# библиотеки в .NET

    trerums
    @trerums
    Первый же результат в гугле по запросу ".net load assembly dynamically": stackoverflow.com/questions/465488/can-i-load-a-ne...
    Ответ написан
    Комментировать
  • Как подступится к генетическим алгоритмам, нейронным сетям, началам ИИ в общем к этой области

    @vasiliev
    Я вопринимаю генетические алгоритмы именно как способ оптимизации.

    Для моделирования эволюции я бы посмотрел на какие-то решения в области имитационного моделирования, например Beagle
    Ответ написан
    3 комментария
  • Во что превратилась javascript и что представляет из себя node.js?

    titulusdesiderio
    @titulusdesiderio
    IT-специалист
    в web она тоже, начинает набирать обороты

    JavaScript мальчик, а не девочка!
    Ответ написан
    1 комментарий
  • Хочу изучить Node.js

    Есть еще форум где мы обитаем — forum.nodejs.ru
    Ответ написан
    Комментировать