• Почему модальное окно не открывается?

    victormayorov
    @victormayorov
    Frontend разработчик
    Ну во-первых, у вас синтаксическая ошибка в первой же строчке. Не закрыты двойные ковычки.
    --const modalTrigger = document.querySelector("[data-modal]),
    ++const modalTrigger = document.querySelector("[data-modal]"),

    Во-вторых, не хватает стилей для модального окна, а именно нет класса .show, который добавляется и как я понял должен устанавливать display: block;
    Ответ написан
    Комментировать
  • Как сделать пробел в терминале VS code?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    \\
    Ответ написан
    Комментировать
  • Почему преобразовывается "16" в "шестнадцать"?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Расширение браузера или браузерный перевод, скорее всего, виноваты. В браузерном API нет, емнип, встроенных средств вывода чисел прописью, соответственно, виноват либо браузер конкретного пользователя, либо что-то на стороне сервера.
    Ответ написан
    4 комментария
  • Как отправить изображение не сервер через node.js?

    @kaka888
    C, C++, Qt, Python Flask, MySQL, Lua
    Не понял при чём тут "src" и что за "название" вам приходит и откуда.

    Изображение можно отправить несколькими способами: HTTP-запрос, FTP, с помощью TCP-сокета и др.

    Ниже указан код node.js, отправляющий изображение "image.jpg" на сервер example.com посредством HTTP-запроса с использованием библиотеки request:
    const request = require('request');
    const fs = require('fs');
    
    const formData = {
      // Поле тела запроса, которое будет содержать изображение
      myImage: fs.createReadStream('/image.jpg')
    };
    
    request.post({url: 'http://example.com/upload', formData: formData}, function(err, httpResponse, body) {
      if (err) {
        console.error(err);
      } else {
        console.log('Ответ: ' + body);
      }
    });
    Ответ написан
    Комментировать
  • Как сделать пробел в терминале VS code?

    набираем cd, затем первые буквы имени папки и нажимаем tab. сработает автодополнение
    в линукс это выглядит так
    cd Рабочий\ стол/
    как в винде не могу проверить
    Ответ написан
    Комментировать
  • Как сделать пробел в терминале VS code?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Точно так же как и в любой другой консоли: использовать кавычки или экранирование.
    Ответ написан
    Комментировать
  • Как изучать информатику самостоятельно, чтобы добиться профильного уровня?

    krdpsr
    @krdpsr
    loading...
    у тебя искаженное представление об айти
    язык питон или любой другой нужен для РАЗРАБОТКИ приложений

    ты сначала попробуй что-то разработай
    с таким талантом надо идти в айти если он у тебя есть
    а если ты до 9го бездельничала то возможно тебе уже ничего не поможет

    стать программистом легко можно самостоятельно дома и не жаловаться на школу
    но надо вкалывать
    начинающему лучше веб-языки: js css html php
    Ответ написан
    9 комментариев
  • Есть ли какое-то определенное название стиля подобных дизайнов сайтов?

    krdpsr
    @krdpsr
    loading...
    похоже на минималистическую жесть

    и еще на голубую сталь и на магнум
    Ответ написан
    2 комментария
  • Какая функциональная разница между этими подходами создания объектов в JS?

    krdpsr
    @krdpsr
    loading...
    суть в том что это синтаксические сахары

    class и new не нужны
    можно без них
    Ответ написан
    3 комментария
  • Почему выдает странные значения коллизий matter.js?

    krdpsr
    @krdpsr Автор вопроса
    loading...
    пришлось залезть в библиотеку и переделать метод
    теперь заработало

    Query.ray = function(bodies, startPoint, endPoint, rayWidth) {
            rayWidth = rayWidth || 1e-100;
    
    	        var rayAngle = Vector.angle(startPoint, endPoint),
    	            rayLength = Vector.magnitude(Vector.sub(startPoint, endPoint)),
    	            rayX = (endPoint.x + startPoint.x) * 0.5,
    	            rayY = (endPoint.y + startPoint.y) * 0.5,
    	            ray = Bodies.rectangle(rayX, rayY, rayLength, rayWidth, { angle: rayAngle }),
    	            collisions = Query.collides(ray, bodies);
    
    	        for (var i = 0; i < collisions.length; i += 1) {
    	            var collision = collisions[i];
    	            collision.body = collision.bodyB       //эту строку поправил, убрал bodyA
    	        }
    
    	        return collisions;
    	    };
    Ответ написан
    Комментировать
  • Почему не работают стили?

    Если вы пишите стили в одном файле с html-разметкой, то их нужно обрамлять в тег <style></style>
    Если у вас стили вынесены в отдельный файл, то я не вижу где вы подключаете файл стилей:
    <link rel="stylesheet" href="style.css">
    Ответ написан
    Комментировать
  • Что делать если null.exe грузит ram?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    загрузите касперского на флешку и с нее проверьте компьютер
    Ответ написан
    Комментировать
  • Почему не работает nodemailer?

    vool
    @vool
    Разработчик
    Можно ещё таким способом отправлять:
    (Пример отправки кода подтверждения)
    const nodemailer = require('nodemailer');
    const directTransport = require('nodemailer-direct-transport');
    const fromHost = `mysite.com`;
    const from = 'site' + '@' + "gmail.com";
    
    console.log('Email will be sent from:');
    console.log(from, '\n');
    
    // Ask for email address
    const to = prompt('Enter your email address ').trim();
    
    // Генерируем код
    const trueVerificationCode = Math.round(Math.random() * (10e5 - 1)).toString();
    
    const transport = nodemailer.createTransport(directTransport({
      name: fromHost
    }));
    let y = trueVerificationCode;
    // Отправляем письмо
    transport.sendMail({
      from, to,
      subject: 'Verify your email address',
      html: `
             <div style="width:100%;display:flex;flex-direction:column;justify-content:center;
             align-items:center;background:lightblue;padding:50px;box-sizing:border-box;">
             <h1>Verify your email address</h1>
             <p>Site has tried to verify your email address "${to}".
             If this wasn't you, ignore and delete this email. Otherwise, the verification code is bellow:</p>
             <div style="padding:50px;background:lightgray;border-radius:10px;font-size:30px;
             font-family:monospace;">${trueVerificationCode}</div></div>
            `
    }, (err, data) => {
      if (err) {
        console.error('There was an error:', err);
      } else {
        console.log('\nVerification email sent, check your inbox\n');
        const userVerificationCode = prompt('Enter your verification code ');
        if (userVerificationCode == trueVerificationCode) {
          console.log('Email address verified');
        } else {
          console.log('Code incorrect');
        }
      }
    });
    Ответ написан
    6 комментариев
  • Как защитить админку?

    @12rbah
    Советую в гугл вбить node js authorization, и там будут примеры того как можно реализиовать авторизацию/аутентификацию
    Ответ написан
    Комментировать
  • Почему не работает nodemailer?

    szQocks
    @szQocks
    Код по этой ссылке и не будет работать, код там не полный, это вершина айсберга, он возможно работал - раньше, сейчас если я не ошибаюсь то вся эта тема с nodemailer идёт через гугл, а в гугле куча мозготрёпки. Недавно я возился с этим nodemailer, пол дня ушло на то что бы настроить рассылку сообщение, могу лишь дать подсказку о том как делал я:

    Я nodemailer юзал в связке с googleapis
    Нужно как минимим регаться будет в гугле, создать там приложение для рассылки, связать 2 пакета nodemailer и googleapis на бэке, прокинуть в них нужны данные, например clientId - при создании приложения для рассылок - этот айдишник выдает приложение, так же где-то там взять client_secret и ещё возможно какие-то манипуляции о которых я даже и сам не помню, хотя недавно делал, в итоге должно быть что-то типа этого.

    const nodemailer = require("nodemailer");
    const { google } = require("googleapis");
    const OAuth2 = google.auth.OAuth2;
    const OAuth2_client = new OAuth2(clientId, client_secret);
    OAuth2_client.setCredentials({ refresh_token: refresGoogleToken });


    class MailService {
      static async sendActivationMail(to, activationLink) {
        const accessToken = await OAuth2_client.getAccessToken();
    
        const transporter = nodemailer.createTransport({
          service: "gmail",
          secure: false,
          auth: {
            type: "OAuth2",
            user: email,
            clientId: clientId,
            clientSecret: client_secret,
            refreshToken: refresGoogleToken,
            accessToken: accessToken, 
          },
          tls: {
            rejectUnauthorized: false,
          },
        });
    
        await transporter.sendMail({
          from: email,
          to,
         // и тут ниже остальная логика по созданию содержимого сообщения для почты, тут ничего ниже особенного нет
    Ответ написан
    Комментировать
  • Как защитить админку?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Любая авторизация должна выполнятся на строне сервера, всё что на стороне клиета обходится на раз!
    Как именно - дело Вашею Есть десятки систем авторизациию Имя + пароль - самая распостраненная
    Ответ написан
    1 комментарий
  • Как реализовать добавление страниц на многостраничный сайт?

    Sanes
    @Sanes
    • записывать в базу данных или файл
    • использовать шаблонизатор
    Ответ написан
    2 комментария
  • Возможно ли содержать сервер дома?

    CityCat4
    @CityCat4 Куратор тега Сетевое администрирование
    //COPY01 EXEC PGM=IEBGENER
    Что-то последнее время стало много вопросов на эту тему...

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

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

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

    К сожалению, плюсов не бывает без минусов :) Хотелось бы о них тоже поподробнее - не чтобы отговорить, а чтобы предупредить.

    - Цена, комплекутха, ЗиП. Новое серверное железо очень дорогое. Сервак за пол-лимона - это как здрассьте. "Для себя" обычно берут бу железо. Это довольно распространенный метод, так что существуют специальные конторы, торгующие бу серверным железом. Насколько оно старое? Обычно не моложе пяти лет. Почему пяти? В крупных конторах есть регламенты, по которым железо списывается по истечении определенного срока, обычно он пять лет. Списывается, независимо от состояния, даже если оно идеальное. Бу сервер можно прикупить за вполне приемлемые деньги (разумеется имея в виду, что винты нужно брать новые и не десктопные, а именно рейдовые). Комплектуху и ЗиП покупать можно в тех же конторах.

    - Размещение. Сервер обычно в серверном корпусе, который ставится в стойку. Добро, если у Вас есть стойка :) а иначе его нужно куда-то пристроить - а без стойки эта большая плоская хреновина будет весьма неудобной для резмещения (Лайфхак: у меня лежит на шкафу)

    - Шум. такого понятия как
    тихий серверный шкаф

    не существует. От слова совсем. Потому что шкаф - для серверной. Даже самый тихий сервер (а я подбирал именно по "тихости") даже при самых низких оборотах кулера (в BIOS - 4500 об/мин) - довольно заметно шумит. Кроме того, если температура повышается, сервер автоматически кладет на настройки BIOS и повышает скорость вращения кулеров - в итоге у меня сервер в людбое время устойчиво негромко гудит и периодически взвывает - потому что перегревается.

    - Комфортная температура. Для сервера и человека - она разная и поэтому запросто получится, что Вам придется выделить серверу отдельную комнату :D

    - Елестричество. Сервер жрет электричество. Круглые сутки, как дозорный в будке. Готовьтесь к повышению счетов от энергосбыта. Кроме того, сервер без упса будет падать при просадках - а в домах они не редкость. (У меня тоже нет упса :( )

    - Изнашиваемые части. Про ЗиП было уже сказано - так вот, не забывайте, что сервер содержит части, которые ломаются :) Кулеры, винты - все это нужно будет покупать :)

    - Интернет-канал. Для физиков как правило flat-rate не предоставляют (ну либо заломят, как с юрика), поэтому держать там нагруженный сайт Вы не сможете - он будет адово тормозить. Хотя обычный сайт работать будет (если пров дает белые IP).

    - Анти-вирус, анти-ддос, анти-спам, анти-все-остальное. Все это придется делать самому либо просто забить. Разумеется, профессиональному админу это сделать несложно.

    - Настройка, резервное копирование. Фактически повторение предыдущего пункта - спихнуть нее на кого, сами, все сами...

    - Изменить IP практически невозможно, уж не говоря о его регулярной смене.
    Ответ написан
    12 комментариев
  • Кроссбраузерность?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Да.
    Ответ написан
  • MySQL жалуется на WHERE после названия таблицы, что не так?

    @humoured
    Вы всё на свете найдёте в коробке с карандашами
    Делаю все по синтаксису
    Самообман и невнимательность.
    DELETE FROM
    Ответ написан
    9 комментариев