Ответы пользователя по тегу Веб-разработка
  • URL какого вида лучше всего выбрать для сохранения данных пользователями?

    bingo347
    @bingo347
    Crazy on performance...
    В случае файлопомойки юзеров, отраженной на файловой системе, хорошо себя показывает uuid разбитый по дефису на подпапки
    Например для 550e8400-e29b-41d4-a716-446655440000 будет примерно следующая ссылка: site.ru/550e8400/e29b/41d4/a716/446655440000
    А на диске это будет например так: ./uploads/550e8400/e29b/41d4/a716/446655440000
    Ответ написан
    Комментировать
  • Как настроить https протокол на своем сайте?

    bingo347
    @bingo347
    Crazy on performance...
    Нужны:
    Сертификат + ключ от него
    Поддержка ssl протокола веб-сервером

    Настройки зависят от конкретного вебсервера, примеры для каждого легко ищутся гуглом
    Ответ написан
    Комментировать
  • Почему npm игнорирует ключ --save-dev (установка Gulp)?

    bingo347
    @bingo347
    Crazy on performance...
    npm install <пакет или список пакетов через пробел>
    всегда устанавливают пакеты в локальную директорию (исключение - опция --global или кратко -g)

    опция --save-dev (или кратко -D) указывает так же сохранить зависимость в package.json в секции devDependencies
    опция --save (-S) сохраняет зависимость в секцию dependencies

    вся разница в том, что выполняя npm install без параметров установит все зависимости из dependencies но не из devDependencies что очень удобно при разворачивании приложения на продакшене
    Ответ написан
    Комментировать
  • Ребят а можно ли вытищить сертификат с чужого сайта и поставть его себе на сайт?

    bingo347
    @bingo347
    Crazy on performance...
    Вытащить то можно, только толку от этого будет 0, приватный ключ от него Вы все равно не получите.

    Чего именно выдается сертификат ? домену или ип адрессу ? или там вообще по другому все ?
    Сертификат подтверждает, что лицо получившее его является владельцем домена, собственно этим обеспечивается гарантия, что трафик не был перехвачен посередине.

    Вопрос, а зачем Вам это? Сегодня можно получить официальный сертификат бесплатно, например у Let'sEncrypt
    Ответ написан
  • Как сделать отказоустойчивый LAMP кластер для высоконагруженных WEB-приложений?

    bingo347
    @bingo347
    Crazy on performance...
    В первую очередь сменить Apache на Nginx
    Если из php и mysql еще можно выжать какую-то производительность, то из apache это не получится априори
    После уже можно задуматься о смене БД на postgresql/mongodb/rethinkdb/elasticsearch (зависит от модели данных)
    Ну заодно и исполняющую платформу можно сменить на более шуструю
    Производительность 1 такого сервера при прямых руках будет наравне с кластером из 10 LAMP, если и этого не хватит, то вопросов "как сделать кластер" уже по идее возникать не будет
    Ответ написан
    Комментировать
  • Заказ на разработку сайта?

    bingo347
    @bingo347
    Crazy on performance...
    Если бюджет позволяет, наймите качественного фрилансера.
    Да, да, качественный фрилансер стоит гораздо дороже студии.

    Скажу по ситуации в СПб. Очень много заказчиков приходит ко мне с проблемой "я заплатил студии 100 тыс, обещали сделать сайт за неделю, прошло полгода сайта нет, суд проиграл", небольшая часть из них становятся моими клиентами, те кого не смутило "наша команда сделает Ваш сайт по текущим пожеланиям за 4 месяца, это будет стоить Вам 700 тыс, любые изменения в ТЗ обсуждаются отдельно и как правило увеличивают сроки и стоимость".
    Ответ написан
    Комментировать
  • Как в зависимости от скорости загрузки страницы выводить видео или изображение в блоке?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    генерим рандомный файл в 1кб и ложим в паблик дерикторию на сервере, там где видео
    на клиенте отправляем последовательно (по очереди) 10 ajax запросов на этот файл, дописывая в конец, после ? рандомную строку в запрос. Для каждого запроса меряем время от отправки запроса, до получения полного ответа.
    Находим среднее время всех запросов и делим объем файла на это среднее время - получаем примерную скорость соеденения.
    Если больше заранее определенного значения - меняем картинку на видео
    Ответ написан
    4 комментария
  • Как индексируется в поисковиках one page app сайты?

    bingo347
    @bingo347
    Crazy on performance...
    Дополню ответ выше пояснениями и примерами
    Сервер для любой страницы должен уметь присылать ответ как в виде готовой html так и в виде данных для генерации данного html на клиенте, соответственно понадобится шаблонизатор способный работать как на клиенте, так и на сервере.
    Такой сайт спокойно смогут просматривать поисковики, а так же браузеры с отключенным javascript, а когда все норм (js работает) мы получили готовую страницу при первом запросе, а дальше работаем по принципу SPA для последующих переходов между страницами.
    Второй важный момент, поисковики ищут внутренние страницы сайта переходя по ссылкам <a href="/page2">Page 2</a>. Соответственно наше SPA должен запускать свой роутинг перехватывая клики по ссылкам и основываясь на атрибуте href кликнутой ссылки
    Третий момент, придется позаботится о historyAPI для удобства пользователя.

    Ну и на последок, как я это все реализовал у себя на сайте
    У меня есть пачка шаблонов описывающих содержимое страниц, они работают как на сервере так и на клиенте
    Есть один базовый шаблон, задающий структуру html документа, он работает только на сервере.
    По запросу определенной страницы, сервер собирает из шаблонов полноценный html и отдает его браузеру, вот так: https://d-belyaev.ru/
    Браузер ищет все теги a на странице и вешает на них обработчик click:
    function render(node) {
        var links = node.getElementsByTagName('a');
        for(let i = links.length; i--;) {
            links[i].addEventListener('click', doLinkClick);
        }
    }
    
    function doLinkClick(event) {
        var href = event.target.getAttribute('href');
        if(!href.startsWith('/')) return true;
        event.preventDefault();
        router(href);
    }

    Роутер по данному href отправляет ajax запрос на сервер, дописывая к нему ?json
    На что сервер уже отвечает по другому: https://d-belyaev.ru/?json
    А реализовано это все вот таким роутом на сервере:
    function indexRoute(request) {
        var pageData = {
            template : 'page-index',
            activeMenuIndex : 0
        };
        if(request.url.query === 'json') {
            request.json(pageData);
        } else {
            request.html(baseTemplate(pageData));
        }
    }

    Правда в нем у меня пока не хватает обработки для 304 статуса (страница в кэше браузера), так как руки пока не дошли
    Ответ написан
    6 комментариев
  • Есть ли вирусы на Github?

    bingo347
    @bingo347
    Crazy on performance...
    Не один здравомыслящий человек инжектить вредоносный код в опенсорс не будет ибо это сразу подорвет репутацию, как только кто-либо подобный код обнаружит.
    Однако github сам никак не проверяет, что в него заливают (кроме размера файла) и теоретически в него можно залить что угодно
    Ответ написан
    Комментировать
  • Не работает массовая загрузка фото?

    bingo347
    @bingo347
    Crazy on performance...
    На сколько помню php здесь не массив:foreach($_FILES['slider']['name'] as $i=>$name)
    Нужно итерировать по $_FILES['slider']foreach($_FILES['slider'] as $i=>$file)
    Ответ написан
    Комментировать
  • Почему не отправляется POST на Nodejs?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Читать текст возвращаемой ошибки не пробовали?
    Сервис ожидает от Вас параметра value
    Ответ написан
    3 комментария
  • Каков ориентировочный состав команды по веб-разработке?

    bingo347
    @bingo347
    Crazy on performance...
    Тимлида и проект-менеджера можно объеденить
    Добавить СЕО и копирайтера
    + то, что написал Дмитрий Ковальский
    Ответ написан
    Комментировать
  • Начинающий веб-дизайнер vs перфекционизм: как быть?

    bingo347
    @bingo347
    Crazy on performance...
    Работал я когда то давно в подобной "студии", правда прогером-бэкендом, которая шлепала по 20 сайтов в день, а еще вешала лапшу на уши недовольным заказчикам, в среднем по 2-3 в день приходило
    В итоге переманили меня на проект, где уник ценился выше всего, а использование готовой библиотеки надо было обосновать.
    А на мое место студия на сколько знаю наняла через пару месяцев 2 студентов с зп в 3 раза меньше чем у меня, все остались только рады

    К чему я это, если действительно есть талант создавать уник, найдутся и те кто за это хорошо заплатит. Так что наработайте сидя в этой студии себе портфолио и идите во фриланс. Красивый уникальный дизайн может стоить до полумиллиона
    Ответ написан
    Комментировать
  • Как на NW.js реализовать работу с txt файлами?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    var fs = require('fs');и так далее

    p.s. Рекомендую посмотреть в сторону Electron, он по лучше nw будет, да и работает с нодой из Вашей ОС, а не с той, что внутрь зашита, как nw
    Ответ написан
    Комментировать
  • Какой способ передачи данных по http быстрее?

    bingo347
    @bingo347
    Crazy on performance...
    1мб для сегодняшнего интернета - копейки
    при одном запросе по факту будет меньше трафика (заголовки ходят 1 раз)
    при 4х запросах придется резать ответ на сервере и склеивать на клиенте
    Ответ написан
  • Собеседование на позицию JavaScript разработчика в Санкт-Петербурге, что нужно знать?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Насчет вышки, ни разу диплом не спросили.
    Насчет опыта, как правило интересуются чем реально владеет человек, то есть наличие портфолио конечно же хорошо, но гораздо весомее показать свое владение языком и требуемыми в вакансии библиотеками.
    Так же в конторах часто интересуются умением работать в команде.

    Ну а насчет тех кто рекомендуют поработать в фрилансе, имхо бред, я начинал в фрилансе и опыт особо не рос, ибо и не брался за серьезные проекты.
    Поработал на веб-студию, поднабрался опыта и снова вернулся в фриланс, правда уже с ценами раз в 10 выше. Правда сейчас снова работаю на дядю, ибо летом кризис таки прижал, точнее отсутствие нормальных заказов, хотя опять же тут дело в том, что мне браться за дешевку по 15-30 тыс не интересно уже.

    p.s. я из СПб
    Ответ написан
    Комментировать
  • Как защитить web socket?

    bingo347
    @bingo347
    Crazy on performance...
    браузерный клиент вебсокета отправляет куки (подходит если домен и порт сокета совпадают с http доменом и портом страниц)
    так же можно передавать параметры в url сокета - универсальное решение

    При авторизации генерируем пользователю токен сессии, я обычно в качестве такого токена использую uuid
    При коннекте к серверу передаем этот токен в url, например так:
    var protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
    var ws = new WebSocket(protocol + '//' + window.location.host + '/' + token);
    где в переменной token должна быть строка с токеном сессии

    На сервере, при новом соеденении по вебсокету смотрим url и извлекаем из него токен и получаем по нему сессию, если такой сессии нет - обрываем соеденние
    Ответ написан
  • Сколько стоит разработка сайта-портала типа daroo.ru?

    bingo347
    @bingo347
    Crazy on performance...
    От 25 тыс руб в веб-студиях, где Вам сделают типовое решение
    От 200 тыс если хотите уник и чтоб все работало нормально
    Ответ написан
    Комментировать
  • Решил заниматься созданием сайтов на заказ. Какие документы должны быть? Налоги и т.п?

    bingo347
    @bingo347
    Crazy on performance...
    У меня оформлен ИП
    род деятельности: разработка программного обеспечения (72.20 вроде)
    налогооблажение: упрощенка (6% на доход)
    Спокойно работаю, заключаю официальные договора с заказчиками, да и юр лицо - не малый плюс в глазах заказчика
    Ответ написан