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

    bingo347
    @bingo347
    Crazy on performance...
    Во-первых, строки в JS в памяти хранятся в виде utf-16, а значит сохранение произвольного бафера в строку может сломать данные.

    Вот тут Ваши данные ломаются:
    let chunks = '';
    
    req.on('data', chunk => {
        chunks += chunk;
    });


    Во-вторых, не стоит читать файлы в память целиком. Память не резиновая, и однажды ее может просто не хватить.

    В-третьих, не нужно перекладывать байты из одного потока в другой руками, есть pipe, который делает это гораздо эффективнее.

    Отправка:
    const filePath = `../source/archive.zip`;
    const reader = fs.createReadStream(filePath);
    const options = {
        hostname: url.hostname,
        port: 443,
        path: url.pathname,
        method: 'PUT',
        headers: {
            'Content-Type': 'application/zip',
            'Content-Length': fs.statSync(filePath).size
        }
    };
    const req = https.request(options, res => {
        res.on('error', err => console.log('ошибка:', err));
        res.on('end', () => console.log('отправлено'));
    });
    reader.pipe(req);

    Получение:
    router.put('/', (req, res, next) => {
        const pathToFile = path.join(__dirname, '../public/uploads/archive.zip');
        const writer = fs.createWriteStream(pathToFile);
        req.pipe(writer).once('error', next).once('finish', () => {
            res.send('файл сохранён');
        });
    });
    Ответ написан
    4 комментария
  • Переадресация, если приложение на NodeJS не запущено?

    @Konf
    Редактирую ответы на 2 + 2 по 4 раза
    Никогда не работал с nginx, но судя по документации и другим примерам на той же странице, если искать фразу error_page, должно сработать что-то вроде такого:

    ...
    index index.html;
    
    error_page 502 https://example.com/;
    error_page 404 /404.html;
    
    location / {
        try_files $uri @backend;
    ...
    Ответ написан
    1 комментарий
  • Как сделать SSL сертификат для сервера, который пока-что не использует домен?

    @dronmaxman
    VoIP Administrator
    > Может быть для этого использовать какой-то временный домен?
    Можно. Добавь new.example.com и сделай 302 с example.com.

    > А может быть можно просто перенести файлы сертификата с одного сервера ну другой?
    Можно и достаточно легко, но доменное имя должно совпадать.

    > Но тогда какие именно файлы (внутри /etc/letsencrypt их много в разных папках)
    Посмотри в apache какие именно файлы у него настроены в директиве SSL.
    egrep -Ri "SSLCertificateKeyFile|SSLCertificateFile" /etc/apache2/

    > И в результате такого копирования будет ли работать автообновление каждые 3 месяца?
    Будет, если обновить DNS на новый сервер, установить certbot.

    Можно использовать CNAME, т.к. он быстро обновляется.
    https://vps.ua/wiki/cname-record/

    Вообще варианты есть
    1. Перенести сертификат, обновить DNS, настроить проксирование на новый сайт. В результате, часть клиентов будут ходить по новом DNS, часть через прокси пока не обновиться DNS.
    2. Создать отдельное DNS имя (можно просто префикс к текущему имени добавить), настроить 302 на него. После обновления DNS сделать все в обратном порядке.
    3. Скопировать сертификат, использовать тот же домен, но вместо A записи использовать CNAME.
    Ответ написан
    Комментировать
  • Как сделать SSL сертификат для сервера, который пока-что не использует домен?

    dyuriev
    @dyuriev
    A posteriori
    скопируйте сертификат (файлы которые в соответствующих директивах конфига nginx прописаны) с рабочего сервера перед переносом и пропишите в директивы nginx на новом сервере

    уже после переноса и смены А-записей поставьте нормально certbot с автообновлением сертификата

    не городите велосипед и грабли

    Это будет самый быстрый способ для разового переноса одного сервера.

    UPD: чтобы не было конфликтов, размещайте файлы с рабочего сервера с ключем и сертификатом на новый не в /etc/letsencrypt, а, например, в /etc/nginx/ssl, а то потом certbot офигеет, че ему подсунули
    Ответ написан
    2 комментария
  • Как сделать SSL сертификат для сервера, который пока-что не использует домен?

    копируешь сертификаты с продакшена ставишь их и местный certbot их пропустит поскольку они валидные и не будет их перевыпускать.
    А вот когда сайт переедет он их перевыпустит.
    СОбственно все будет бесшовно.
    Ответ написан
    Комментировать
  • Как прекратить отдавать статичные файлы через Node.JS на локальном сервере?

    Lynn
    @Lynn
    nginx, js, css
    Переставьте
    app.use(express.static(path.join(__dirname, 'public')));
    до
    app.use(logger);
    Ответ написан
    Комментировать
  • Где брать заказы на дизайн сайтов и создание под ключ?

    @McBernar
    С небольшим портфолио и кое-каким опытом вам только за 1500 и брать сейчас.

    Лучшие клиенты — те, что приходят от знакомых или сами находят вас на бихансе/дрибле.
    Ответ написан
    Комментировать
  • Есть ли хорошие аналоги adobe flash?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В основном это js и html5, но это уже результат.
    Фреймворк может быть на чем угодно.
    Ответ написан
    Комментировать
  • XHR работает, fetch — не работает. Видимых отличий в параметрах запросов нет. В чем проблема?

    t-alexashka
    @t-alexashka
    Сразу пишу legacy код
    у вас в примере xhr: X-CSRF-TOKEN
    а в примере с fetch: X-XSRF-TOKEN
    Ответ написан
    Комментировать
  • Стоит ли использовать WebGL для связки CANVAS + Video?

    svaa1982
    @svaa1982
    Web разработчик с трёхмерным уклоном
    С WebGL будет быстрее, но если рендерите 2-5 файлов HD, быстро точно не будет ;) Момент с растеризацией будет быстрый, но сама отрисовка видеотекстур крайне медленная операция.
    Ответ написан
    Комментировать
  • Как вызвать функцию из тела родительской функции?

    y0u
    @y0u Куратор тега JavaScript
    dev
    Какой-то странный у вас подход. Вы вызываете myBigFunction, которая вызывает func1, которая в свою очередь вызывает две остальные. Почему бы вам в том месте, где вы пишите
    func1('func2');
    func1('func3');
    не написать
    func2();
    func3();
    ?

    В крайней случае можно написать вот так:
    function myBigFunction() {
    	
    	var methods = {
    		func1: function(functionName) {
    			methods[functionName]();
    		},
    		func2: function() {
    			console.log('2');
    		},
    		func3: function() {
    			console.log('3');
    		}
    	}
    	
    	methods.func1('func2');
    	methods.func1('func3');
    
    }
    Ответ написан
    5 комментариев
  • Как изменить размер холста под изображение?

    trikono
    @trikono
    Novice publisher
    Меню "Изображение", дальше "Тримминг". Выбираете на основе прозрачных пикселов. Обрезка со всех сторон.
    Ответ написан
    1 комментарий
  • Где найти "вдохновение" на дизайн?

    @Xeli
    не могу ничего красивого создать

    Ну еще бы. Потому что задача красиво создать лежит на плечах художника. А из синопсиса я понял, что вы даже не дизайнер (для меня среднестатистический дизайнер это отстойный художник с завышенным ЧСВ, нахватавшийся верхушек по ютубам).
    Поэтому есть три варианта :
    1) Выключить режим перфекциониста и пользоваться нативными средствами frontend того же bootstrap и радоваться жизни.
    2) Нанять талантливого человека за деньги или позвать бездаря бесплатно (талантливый человек бесплатно работать не будет). Мусор на входе, мусор на выходе как говорится.
    3) Изучить тему самому. Изучение нужно начинать с освоения академического рисунка, вдумчивого изучения истории искусства (чтобы разбираться в стилях и самому уметь задавать какую то стилизацию работе), перспективы, логики цвета, света, типографики и еще уймы мелочей.
    Если пускаться в отважное плавание по пункту 3, то стоит запастись терпением и временем в размере примерно 3-4-5 лет.
    Так что 1 вариант как по мне в данной ситуации самый лучший, а если проект начнет собирать какие то деньги, то можно подумать и о найме профессионала за деньги для создания красивой обертки.
    Где брать вдохновение?

    Нигде. Пока вы ноль в этой теме. Смысл от того, что вам понравится какой либо сайт? Ну вот пришли вы в строительный магазин, на полке лежат красивые молотки, они вас вдохновляют на постройку красивого дома, только вот увы молоток вы не знаете с какой стороны держать.
    Если так охота делать визуальную часть самому, начните с малого -- научитесь правильно заточить карандаш. Затем научитесь проводить им прямые линии без линейки, затем... ну и т.д.
    Ответ написан
    6 комментариев
  • Как найти все элементы .class и перестроить?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    На чистом js https://jsfiddle.net/575zrjh5/
    Ответ написан
    Комментировать
  • Есть ли вообще какой-нибудь толк от HTML5 семантической разметки страницы?

    iiiBird
    @iiiBird Куратор тега HTML
    Пока ты спишь - твой конкурент совершенствуется
    Некоторые люди на сайтах пишут, что "семантический код занимает меньше места".

    тк они для того и создавались чтобы ты классы не задавал. правильно будет сравнивать так:
    <header></header> || <div class="header"></div>
    p.s. и не приплетай сюда БЭМ. это вообще из другого разряда
    Ответ написан
    7 комментариев
  • Лучший конкурент Sketch, но под Windows?

    @AlexSunSky
    Дождитесь Adobe XD, должен утереть нос Скетчу, да и хорошая альтернатива от Адоб
    Ответ написан
    3 комментария
  • При onclick отправляется get, как исправить?

    FFxSquall
    @FFxSquall
    Могу писать код, могу не писать
    У вас внутри функции нет event так как вы его туда не передаете в вызове функции. Если всё оставить как сейчас, то нужно сделать так:
    1. Либо в конце тела функции написать return false;
    2. Либо так
    <a href="#" onclick="event.preventDefault();  popopen('.syswarning', './delete')" title="Удалить товар" class="button careful u-pull-left">Удалить товар</a>

    или
    <a href="#" onclick="popopen('.syswarning', './delete'); return false;" title="Удалить товар" class="button careful u-pull-left">Удалить товар</a>
    Ответ написан
    1 комментарий
  • Как у себя на сайте сгенерировать результаты поиска Гугла по определенному запросу?

    profesor08
    @profesor08
    1. Google Search API, но имеет статус Deprecated.
    2. Посмотреть на страничке гугла, какие он запросы отправляет и откуда получает инфу, а дальше попробовать использовать это.
    3. Получить HTML страницу по ссылке https://www.google.ru/search?q=как+сделать и спарсить нужную инфу.
    Ответ написан
    Комментировать
  • Как веб-дизайнеру избавиться от топорности в своих работах?

    paulradzkov
    @paulradzkov
    Дизайнер, верстальщик, начальник отдела UI
    1. Читайте теорию.

    2. Изучайте крутые сайты. Не просто любуйтесь чужим портфолио, а изучайте его «под микроскопом». Ваша задача понять, почему сайт выглядит круто: изящно, потому что красиво подобраны шрифты? текст легко читается, потому что аккуратная типографика и соблюдается вертикальный ритм? сайт выглядит чистенько, потому что все элементы выровнены по модульной сетке? сайт ощущается легким, потому что грамотно использовано пустое пространство? Попытайтесь себе ответить на такие вопросы, исходя из изученной теории.

    Если вы не можете понять какими средствами дизайнер сделал крутой сайт → читайте теорию.
    Если теория расходится с практикой, значит вы не полностью изучили теорию или сработало исключение или вы пытаетесь применить не ту теорию, → продолжайте изучать теорию.

    3. Анализируйте подробнее. Обращайте внимание не только на то, что видно, но и на то, что не заметно. Откройте чужой дизайн (скриншот) в графическом редакторе и попробуйте подобрать модульную сетку, которую использовал дизайнер. Померяйте отступы между элементами, ищите закономерность. Так вы лучше поймёте теорию.

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

    Действуйте по алгоритму «теория» → «поиск чужих преимуществ» → «анализ чужих преимуществ» → «собственные эксперименты» вы быстрее повысите качество своих работ, потому что будете развиваться осознанно, а не случайным образом натыкаться на хорошие решения.
    Ответ написан
    Комментировать