• Как сделать круговое расположение букв в словах?

    Okujava-script
    @Okujava-script
    Веб-программист с абсолютным слухом и композитор
    <h1 id=h1></h1>
    <script>
    let radius = 70;
    let text = "corporate*service*";
    let step = Math.PI * 2 / text.length;
    for(i = 0; i < text.length; i ++){
    	let x = radius + radius * Math.sin(i * step);
    	let y = radius + radius * Math.cos(i * step);
    	let myspan = document.createElement("span");
    	myspan.innerText = text[i];
    	myspan.style.position = "absolute";
    	myspan.style.left = x + "px";
    	myspan.style.bottom = y + "px";
    	myspan.style.transform = "rotateZ(" + i * 360 / text.length + "deg)";
    	h1.appendChild(myspan);
    }
    </script>
    Ответ написан
    Комментировать
  • Как работать с foreign key sqlite3 через python, нигде понятного объяснения не нашёл?

    Vindicar
    @Vindicar
    RTFM!
    Питон тут нипричем. Читаем доки по sqlite, находим пример:
    CREATE TABLE artist(
      artistid    INTEGER PRIMARY KEY, 
      artistname  TEXT
    );
    CREATE TABLE track(
      trackid     INTEGER,
      trackname   TEXT, 
      trackartist INTEGER REFERENCES artist(artistid) ON UPDATE CASCADE
    );

    Пример обеспечивает каскадное обновление ключа (ты вроде это просишь).
    Также может потребоваться включить поддержку внешних ключей, выполнив первым делом запрос:
    PRAGMA foreign_keys = ON;
    Ответ написан
    Комментировать
  • Какие есть пути объединения Blockchain и AI?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В настоящее время таких путей нет. Так как нет мотивации майнеров к тому чтобы они тратили свои мегафлопы на задачи ИИ. Но если создать свою криптовалюту на основе POW и вместо перебора разрядной сетки SHA256 просто задавать мелкие задачки из области ИИ тогда мы получим полезный эффект.

    В чем здесь сложности я вижу. Сложно придумать алгоритм генерирующий такие задачки на ходу и подходящий под контракт функции POW. Ну... моей фантазии уже на это не хватает. Слишком много ограничений тут.
    Ответ написан
    Комментировать
  • Как он узнает, что (3, 5) - это arguments?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    arguments - это массив массиво-подобный объект аргументов, всегда присутствующий в функции (кроме стрелочных).
    Тут используется декоратор – функция-обёртка над другой функцией.
    Изначальная функция worker.slow()оборачивается в новую функцию-декоратор. Декоратор выполняет некую работу, вызывает оригинальную функцию, с ее результатом может выполнить еще какую-то работу, и возвращает итоговый результат.

    После выполнения этой строчки
    worker.slow = cachingDecorator(worker.slow, hash);
    в worker.slow у вас уже не оригинал, а декоратор. Т.е. эта функция
    function() {
        let key = hash(arguments); // (*)
        if (cache.has(key)) {
          return cache.get(key);
        }
    
        let result = func.call(this, ...arguments); // (**)
    
        cache.set(key, result);
        return result;
      };


    Именно она выполняется в последней строчке. Сюда передаются аргументы 3 и 5, которые и попадают в зарезервированный массив arguments.

    Можно переписать так, чтобы лучше понять, что происходит:

    function cachingDecorator(func, hash) {
      let cache = new Map();
      return function(arg1, arg2) { // явно указать аргументы
        let key = hash(arg1, arg2); // (*)
        if (cache.has(key)) {
          return cache.get(key);
        }
    
        let result = func.call(this, arg1, arg2); // (**)
    
        cache.set(key, result);
        return result;
      };
    }
    Ответ написан
  • Отмена axios запроса в redux thunk?

    Natebash
    @Natebash Автор вопроса
    React, Vue, Angular, Navite JS, Python / Node JS
    black1277 Да, все верно, у меня немного другая реализация получилась, у нас старый пакет axios который пока не можем поднять по собственным соображениям, поэтому сделал с помощью CancelToken
    https://axios-http.com/docs/cancellation

    Санка которая запускается на событие download
    const CancelToken = axios.CancelToken;
    const source = CancelToken.source();
    
    export const uploadThunk = (uploadData) => {
      return async (dispatch: Dispatch<Action>, getState: () => RootState) => {
        try {
          await axiosInst.post(
            `${upload_url}/${subjectId}/upload`,
            uploadData, {cancelToken: source.token}
          );
    
        } catch (e) {
          console.log("Failed upload", e);
        }
      };
    };


    Отменяем предыдущий запрос по клику кнопки на фронте
    export const cancelUploadThunk = () => {
      return async (dispatch: Dispatch<Action>, getState: () => RootState) => {
        source.cancel("Operation canceled by the user.");
      };
    };
    Ответ написан
    Комментировать
  • Как передать url в параметрах get запроса?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    https://example.com/?name=%D0%9F%D0%BB%D0%B0%D0%BD%D1%88%D0%B5%D1%82&imgUrl=https%3A%2F%2FcloudData.com%2Fimg%2F7


    используйте urlEncode urlDecode

    вот пример для js https://www.geeksforgeeks.org/how-to-encode-and-de...
    Ответ написан
    4 комментария
  • Как можно изменить javascript по другому?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    document.querySelector('.navlnk.js-load-more.js-load-more-bot').click();
    Ответ написан
    2 комментария
  • Как преобразовать '<' и '>' в < >?

    @kyzinatra
    Вам скорее всего подойдет elem.insertAdjacentHTML(where, html)
    https://learn.javascript.ru/modifying-document#ins...
    Предупреждаю, что если вы не 100% уверены в этом материале и он может быть подменен пользователем то такой метод использовать ни в коем случае нельзя
    Ответ написан
    Комментировать
  • Может ли useEffect работать по-другому?

    @asdasdqwe
    const isInitialMount = useRef(true);
    
    useEffect(() => {
      if (isInitialMount.current) {
         isInitialMount.current = false;
      } else {
          // Your useEffect code here to be run on update
      }
    });

    https://stackoverflow.com/questions/55075604/react...
    Ответ написан
    Комментировать
  • Как перевести строчную дату формата dd.mm.yyyy в date?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Месяцы от 0 считаются.
    const ddmmyyyyToDate = str => {
      const [d, m, y] = str.split('.');
      return new Date(y, m - 1, d);
    }


    Использование:
    ddmmyyyyToDate('31.05.2022') 
    // Date Tue May 31 2022 00:00:00 GMT+0300 (Moscow Standard Time)
    Ответ написан
    Комментировать
  • Как перевести строчную дату формата dd.mm.yyyy в date?

    amux
    @amux
    alp.ac
    const a = `17.11.1995`.split('.');
    const date = new Date(a[2], a[1] - 1,  a[0]);  // equal new Date(1995, 11, 17)


    https://developer.mozilla.org/en-US/docs/Web/JavaS...
    Ответ написан
    2 комментария
  • Почему UseEffect срабатывает 2 раза при React.StrictMode?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега React
    Потому что в development режиме StrictMode так работает.
    Ответ написан
  • Как обратится к тексту ошибки в typescript?

    @Alwafor
    В JS error может быть представлен любым типом данных, например throw 'error', throw new Error('Error!') будут синтаксически корректны. Поэтому TypeScript по умолчанию выводит тип ошибки как any.

    Однако мы можем предположить, что это за ошибка и корректно обратиться к полю message следующим образом:
    catch(error) {
      if(error instanceof Error)
        alert(error.message) // TS теперь знает, что тут есть поле message
    }

    Или другой способ, если мы точно уверены, что выбрасываемая ошибка имеет определённый тип, мы можем использовать утверждение типа (type assertion), и код будет выглядеть следующим образом:
    catch(error) {
      let e = error as Error
      alert(e.message)
    }

    Однако первый способ определённо лучше, ведь мы можем обработать ожидаемый тип ошибки (в данном случае, Error), а для всех остальных предусмотреть другое поведение.
    Ответ написан
    Комментировать
  • После отправки запроса страница перезагружается?

    @BUTURUM
    Ajax запросы перезагрузить страницу не могу, поэтому возможно её перезагружает что-то, что запускается вместе с featch. Убедитесь что если ajax запрос совершается при отправке формы используется event.preventDefault() и предоставьте полный код функции, которая делать запрос.
    Ответ написан
    Комментировать
  • Как подключить scss к реакту?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    node sass имеет совместимость с разными версиями node. таблица сверху https://github.com/sass/node-sass
    либо правь это, либо ставь dart sass
    Ответ написан
    Комментировать
  • При обновлении страницы сразу вызывается alert, хотя должен по нажатию на кнопку (onClick)?

    kawabanga
    @kawabanga
    clickOnButton() -> clickOnButton

    Вы должны передавать функцию, а не ее выполнение.
    Ответ написан
    Комментировать
  • Какую логику сделать для проверки верности вопроса в приложении тест?

    0xD34F
    @0xD34F Куратор тега React
    Начать следует не с какой-то там логики, а со структуры данных, что содержит вопросы. То, что есть сейчас, никуда не годится. Что, если завтра вместо трёх вариантов ответа надо будет сделать четыре? Будете добавлять ещё по два свойства в каждый объект в массиве вопросов, а в компоненте закопипастите ещё один input? А если в разных вопросах должно будет быть разное количество вариантов ответа? Что тогда?

    Варианты ответа складываете в массив, а корректный вариант обозначаете через его индекс:

    const questions = [
      {
        text: 'Выберите верное утверждение',
        answers: [
          'СССР распался в 1997 году',
          'Солнце вращается вокруг Земли',
          'шестью восемь - двадцать три',
        ],
        correctAnswer: 1,
      },
      {
        text: '...',
        answers: [ '...', '...', ... ],
        correctAnswer: ...,
      },
      ...
    ];

    В компоненте вопроса вместо того, чтобы копипастить input'ы, делаете цикл по вариантам ответа:

    function Question(props) {
      const onChange = e => props.onAnswerChange(+e.target.value);
    
      return (
        <div>
          <h3>{props.question.text}</h3>
          <ol>
            {props.question.answers.map((n, i) => (
              <li>
                <label>
                  <input
                    type="radio"
                    value={i}
                    checked={props.answer === i}
                    onChange={onChange}
                  />
                  {n}
                </label>
              </li>
            ))}
          </ol>
        </div>
      );
    }

    В родительском компоненте храните массив ответов:

    function App(props) {
      const [ answers, setAnswers ] = useState(Array(props.questions.length).fill(null));
    
      const updateAnswer = (questionIndex, answer) =>
        setAnswers(answers.map((n, i) => i === questionIndex ? answer : n));
    
      return (
        <div>
          {props.questions.map((n, i) => (
            <Question
              question={n}
              answer={answers[i]}
              onAnswerChange={answer => updateAnswer(i, answer)}
            />
          ))}
        </div>
      );
    }

    Ну и возвращаясь к вашему вопросу, чего там надо было?

    не получается сделать грамотную проверку правильного ответа...

    Чтобы проверить правильность ответа, надо сравнить его со значением свойства correctAnswer у соответствующего (с тем же индексом) вопроса. Например, считаем количество правильных ответов:

    const correctAnswersCount = answers.reduce((acc, n, i) => {
      return acc + (n === questions[i].correctAnswer);
    }, 0);

    ...и одновременно вывести верные ответы

    Поскольку свойство, обозначающее правильный ответ, является его индексом, просто достаём соответствующие элементы из массивов с вариантами ответа:

    const correctAnswers = questions.map(n => n.answers[n.correctAnswer]);

    Ну а массив строк вывести - надеюсь, справитесь сами.

    UPD. Посмотреть живьём можно здесь (есть отличия от того, что есть или предполагается у вас - вопросы показываются по очереди, а не все сразу; в результатах отображаются только верные ответы).
    Ответ написан
    1 комментарий
  • С помощью чего реализовать управление цветами в градиенте?

    RAX7
    @RAX7
    Похоже на эффект на основе flowmap из библиотеки ogl
    Ответ написан
    Комментировать
  • Как сохранить позиции при масштабировании path внутри svg?

    RAX7
    @RAX7
    g path {
      transform-box: fill-box;
      transform-origin: 50% 50%;
    }
    Ответ написан
    Комментировать