Сообщество Хекслета

Владимир cssfish 21 декабря 2016 →

при попытке захода на repl.it хром сообщает что, дескать:

Веб-страница недоступна ERR_SSL_VERSION_OR_CIPHER_MISMATCH

Невозможно установить безопасное соединение, поскольку сайт использует устаревший протокол или набор шифров. Скорее всего, сервер использует шифр RC4, который считается небезопасным.

user-6f68bfce3eef2f8a 21 декабря 2016 →

Так какой правильный ответ в вопросе:

Какое значение должно быть у переменной окружения DEBUG если стоит задача логгировать все во вложенном неймспейсе express:router

?

Andy 21 декабря 2016 →

"Эта библиотека неявно проставляет состояние 'none' и делает переход в наш начальный стейт. Нас это состояние не интересует, поэтому в 'history' его нужно избегать."

Надо бы уточнить: нас не интересует соcтояние none (тогда править тесты) или не интересует первое состояние при инициализации (хотя по мне - вполне полезная вещь).

 

"Реализуйте два обработчика (функции) cancel и complete которые генерируют на автомате аналогичные события в случае если их возможно применить."

Сильно смущает слово обработчик. В моем понимании обработчик вешается к чему-то (к объекту/событию), а здесь обычные функции. Это можно понять из тестов (хотя тест все равно придется смотреть), но лишние сложности и путаница не нужны.

Кстати "... в случае если их возможно применить." в тестах не проверяется, хотя было бы полезно.

Михаил Нарышкин 21 декабря 2016 →

Почему в данном коде не работает проверка на NaN?

export const calc = (oper, a, b) => {
  let result;
  switch (oper, a, b) {
    case '+', a,  b:
      result = a + b;
      break;
    case '/', a, b:
      result = a / b;
      break;
    case '*', a, b:
      result = a * b;
      break;
    case '-', a, b:
      result = a - b;
      break;
      default:
      result = NaN;
  }
  return result;

};```

Andrew Titov 21 декабря 2016 →

В данном задании применяются приёмы из текущего видео или ещё задействованы приёмы из предыдущих уроков?

Artyom Svinin 21 декабря 2016 →

Получилось вот такое решение:

const smallestDivisor = (n) => {
  const iter = (number, divider) => {
    if (number == 1 || number === 0 || number < 0) {
      return 1;
    }
    else if(number % divider === 0 || number === divider) {
      return divider;
    }
    return iter(number, divider + 1);
  };
  return iter (n, 2);
};

и выдает вот такую ошибку:

FAIL  __tests__/solution.test.js
  ● smallestDivisor

    TypeError: (0 , _solution.smallestDivisor) is not a function

      at Object.<anonymous>.test (__tests__/solution.test.js:4:67)

  ✕ smallestDivisor (3ms)

Заранее скажу, что что-то не ладит с тестом, читал подсказки, но не совсем понимаю проблему, буду рад если расскажут ) Могу бы кто-то обьяснить, что не так ?

Renat Tursunbaev 21 декабря 2016 →

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

Допустим у нас есть выражение const sum = x => y => x + y; Я понимаю, что функции могут быть аргументами других функций и являться результатом выполнения функций (проходил простенькие лямбда-функции на питоне), поэтому берем для примера const test = sum(3). Теперь у нас получается функция y => 3 + y. Как же число 3 миновало определение внутренней функции и попало в ее тело? Я представил начальное выражение в таком виде:

const sum = x => {
   const sum2 = y => {
       return x + y;
   };
   return sum2;
};

Далее пытаюсь анализировать - sum принимает параметр 3, пропускает (или "откладывает на потом" вычисление) определение функции sum2, доходит до возвращаемого значения, в котором значится "верните мне функцию sum2". Ага, возвращаемся в sum2, sum2 не получает никаких параметров (что для меня самое невероятное) и пытается возвратить x + y по такому алгоритму:

  • ищет x "внутри себя", не находит;
  • обращается к внешней функции (создает ли каждая функция собственный namespace и каждая ли функция будет искать рекурсивно до глобального неймспейса?);
  • находит x "снаружи", ищет y;
  • y у нас в формальных параметрах, поэтому останавливаемся (что здесь происходит?). Теперь у нас функция sum(3)(y), и если передать второй параметр, то пройдя предыдущий алгоритм функция превратится в значение.

Возьмем другой пример: const compose = x => y => value => x(y(value));. Его можно разобрать методом подстановки построчно:

const level1 = compose(Math.sqrt);
// level1 = y => value => Math.sqrt(y(value));

const level2 = level1(Math.abs);
// level2 = value => Math.sqrt(Math.abs(value));

const level3 = level2(-36);
// level3 = Math.sqrt(Math.abs(-36));

До сих пор не укладывается в голове как это работает и почему такие функции не ругаются на отсутствие формальных параметров (передача параметров по имени?). Читать я их более-менее научился, и то, если переписать в развернутом виде, но как самому придумать конструкцию типа True = (x) => (y) => x;? Ощущение того, что что-то упустил (следующий курс уже не воспринимается), может есть способ как-то изначально расписывать на бумаге?

Дастан Жанибек 21 декабря 2016 →

export const distance = (point1, point2) => {

return Math.sqrt(Math.pow((getX(point2) - getX(point1)),2) + Math.pow((getY(point2) - getY(point1)),2); }

почему у меня не работает?? у уже посмотрел решения учителя все равно не понятно.. как вы решили это задачу? рекурсия?? не совсем похоже. и где вы задали поинт1 и поинт2

Виктор Опейкин 21 декабря 2016 →

Не просек фишку с cons и consList, если смотреть под прямым углом разницы никакой, а если вглубь, то есть большая и важная разница. Ментор Александр Овчар подсказал как жить правильно :-), ему отдельное спасибо!

Илья Силич 21 декабря 2016 →

Привет, джава-джедаям! Подскажите, что значат эти ошибки? Я так понимаю это синтаксические, но я переписал всё точно так же как и на видео. Причем в PlayerBuilder этих ошибок нет >_<

http://pastebin.com/4BwqDjD8 Ошибки http://pastebin.com/uDYcU6Z4 Код класса GameBuilder

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →