• Из-за чего может быть ошибка ERR_CONNECTION_TIMED_OUT?

    Загрузитесь в Линукс и выполните
    sudo traceroute -T -p 80 seasonvar.ru
    Сравните с обычной трассировкой
    Ответ написан
    4 комментария
  • Как должен быть обжат сетевой провод чтоб оба светодиода не проявляли активности, но передача данных шла?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Диоды зажигает драйвер. А кабель должен быть обжат по стандарту.
    Драйвер карточки проверяет микросхему MII-трансмиттера, и по сигналу от нее (по прерыванию), зажигает соответствующую комбинацию диодов. Если диоды не горят, то просто нет линка.
    Есть микросхемы MII, в которых комбинация диодов выбрана по умолчанию, и лампочками особенно и управлять не нужно, достаточно активировать линк, остальное делает железка по умолчанию. Но можно и из драйвера помигать :-)
    Но в любом случае, лампочки никак с кабелем не связаны. И если вам кто-то говорит, что есть такая "волшебная" комбинация обжима, то он просто вас дурит!
    Ответ написан
    5 комментариев
  • Bootstrap 3 или 4?

    NikitaRain
    @NikitaRain
    Full-Stack Developer.
    Изучайте лучше пока 3 версию. Разница в коде там будет не колоссальная чтобы переучиваться
    Ответ написан
    1 комментарий
  • Настройка окружения для front end?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Начните с этого старенького туторила по Grunt, а там уже откроется дорога к Gulp и Webpack
    Ответ написан
    2 комментария
  • Что нужно знать в javascript что-бы начать изучать react?

    fakey0u
    @fakey0u
    (javascript) => ['Node.js', 'React']
    • базовый синтаксис, встроенные методы массивов, синтаксический сахар в виде классов, es6 +-
    • как функционирует DOM,
    • событийную модель,
    • зачем нужно SPA
    • базовое понимание REST архитектуры
    Ответ написан
    6 комментариев
  • Где здесь утечка памяти?

    dummyman
    @dummyman
    диссидент-схизматик
    Во первых, вы неправильно используете анонимные функции, например
    const startTimer = (){ ... }
    и все остальные.
    Анонимные функции можно использовать только в ситуациях, когда их вызывают "не по имени" для сохранения контекста. Например, аргументом forEach().
    В данной ситуации лучшей синтаксической формы ничего не придумали:
    function startTimer(){ ... }
    Второй момент
    for ( const key in _headers ) {
            if ( {}.hasOwnProperty.call( _headers, key ) ) {
                headers.append( key, _headers[ key ] );
            }
        }

    и конкретно
    if ( {}.hasOwnProperty.call( _headers, key ) )
    Вы в цикле каждой итерацией создаете новый объект, это крайне не рациональное использование метода hasOwnProperty()
    по мне
    if (_headers != null && !!_headers[key] )
    может выглядело бы не так красиво, за то потребляет памяти по-меньше.
    Третий момент
    .catch( console.error )
    Вы можете немного сэкономить памяти использовав как раз по назначению анонимную функцию
    .catch( e => console.error(e) )
    В этом случае интерпритатор не будет искать ссылку на console.error при создании каждого промиса, и будет искать, соответственно, только в исключитальных ситуациях.
    Четвертый момент
    Поменьше пользуйтесь ключевым словом const, особенно, внутри методов и функций. Во-первых, так как они не выгружаются из памяти. Во вторых, const не дает никаких преимуществ в производительности, только лишь накладывает на интерпритатор обязанности следить чтобы ее случайно не перегрузили.
    Ответ написан
  • Хорошая ли идея хранить переводы в JSON?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Значится так, имея множественный опыт мультиязычных сайтов:
    вариант с файлами самый гнилой, причем как для перевода темплейтов, так и для переводов словарных.
    жсон в таблицах - пока фича новая, еще никто нигде не отписался о скорости работы, я регулярно этот вопрос просматриваю - отсюда вывод - хз как оно работает.

    Пока самым верным решением для перевода статей и т.п. является таблица с языками + таблица со значениями, в которой есть:
    id | groupid | languageid | contetnt | e.t.c...
    по группе выбирается нужный объект, по лангвижу - соответствующий язык.
    для перевода темплэйтов - таблица похожая:
    id | alias | languageid | contetnt
    в шаблонах прописывается хелпер, который по алиасу тащит нужную фразу/слово.
    Удобно и гибко, любое количество языков искаропки.
    Ответ написан
    1 комментарий
  • Хорошая ли идея хранить переводы в JSON?

    sim3x
    @sim3x
    Как уже сказали, перевод темплейтов - в файлах

    Перевод контента - три подхода
    доп поля с суффиксом языка - если языков не много и БД не получится сильно разреженной
    доп таблицы, с доп связями к основной - если языков крайне много

    ну и самый так себе - пилить жсон
    Ответ написан
    Комментировать
  • Rails или Node.js для backend (RESTful API)?

    mak_ufo
    @mak_ufo
    500к запросов в минуту - это очень мало
    1000000 соединений в секунду на node.js
    1000000 соединений в секунду на python

    Но вообще всё зависит от нагрузки. Если у вас 10 запросов в минуту, то что угодно потянет. Если уж совсем по харду, то пишите на Crystal или Elixir, если знаете Ruby
    Ответ написан
    5 комментариев
  • Что это за JS? Шифрованый?

    @pekc83
    Берем скрипт, в конце eval заменяем на console.log, копипастим выдачу в любой преттифайер и получаем более-менее читаемый скрипт - https://jsfiddle.net/yu1e9fk8/
    Использовать только в учебных целях!
    Ответ написан
    Комментировать
  • Есть лого на SVG, как правильно вставить SVG в HTML?

    zenwalker
    @zenwalker
    0xABADBABE
    Код SVG можно вставлять прямиком в код страницы. Это всё тот же DOM, и, соответственно, все его элементы можно точно также стилизовать с помощью CSS.
    Ответ написан
    Комментировать
  • Как правильно настраивать дев-окружение для веб-разработки?

    @xfg
    Не думайте о доменах. Вы смешали администрирование и программирование. Не нужно никакого dev сервера. Делайте работу на локальной dev машине, отправляйте изменения в удаленный репозиторий и всё. Можете вообще не устанавливать nginx/apache и т.д. на локальную dev машину, чтобы не забивать голову всякими доменами, а проект запускать под встроенным PHP сервером например из корня проекта и тогда будете обращаться к вашим сервисам по адресу localhost:port/service1/index.php, localhost:port/service2/index.php и т.д.

    Домены будете создавать уже на продакшене. В простейшем случае склонируете на продакшн машину удаленный репозиторий проекта и в конфигах nginx нужно будет написать что-то типа такого

    server {
      server_name company.com;
      root /home/www/company/frontend;
     ...
    }
    server {
      server_name admin.company.com;
      root /home/www/company/backend;
     ...
    }
    server {
      server_name service1.company.com;
      root /home/www/company/service1;
     ...
    }
    server {
      server_name service2.company.com;
      root /home/www/company/service2;
     ...
    }


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

    Так и делают. Разработчикам не нужен никакой dev сервер. Они клонируют репозиторий, делают что-то локально у себя и отправляют изменения в удаленный репозиторий. Для тестеров и всяких менеджеров просто поднимают так называемый stage-сервер где они и тестируют приложение, но это тоже самое что и продакшн сервер, просто доступ к нему только внутри компании. Можно настроить continuous integration чтобы все изменения из репозитория в master ветке автоматически бы приводили к деплою приложения на stage и продакшн сервера. Примерно так в общих словах устроена веб разработка.
    Ответ написан
    22 комментария
  • Что мне нужно изучить, чтобы стать настоящим Middle PHP-разработчиком?

    DevMan
    @DevMan
    за год и 3 месяца поменял 3 работы? o_O это как-то ненормально.
    мидл - это не только и не столько знания, как умение их применять.
    приходи сюда с этим вопросом годика через 3. а может и позднее.

    большинству веб-девов дискретный матан, выч. мат и все такое в корне не уперся. лишним это конечно не будет (как минимум прокачаешь мозги), но веб-дев обычно лежит в иной плоскости.
    изучай best practices, применяй их на практике, качай скил и все у тебя получится.
    а если сможешь не циклиться только на пыхе, то вообще будешь красавцем (пых - молодец, но изучение других технологий здорово развивает кругозор и скилы, даже если ты будешь зарабатывать только пыхом).
    Ответ написан
    12 комментариев
  • Как сделать проверку на подключение jquery?

    Kublyakov
    @Kublyakov
    Всё просто:
    <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.2.min.js"><\/script>')</script>
    Ответ написан
    Комментировать
  • Как присвоить класс через js?

    @ZaxapKramer
    Больной верстальщик
    На JavaScript? Так:
    document.querySelector(".story .link .highslide").classList.add("link link_ajax link_theme_normal", "story__image gw9wsja80d4pldi__image i-bem");

    Либо так, если элементов несколько:
    [].forEach.call(document.querySelectorAll(".story .link .highslide"), function(el){
        el.classList.add("link link_ajax link_theme_normal", "story__image gw9wsja80d4pldi__image i-bem");
    });
    Ответ написан
    Комментировать
  • Как присвоить класс через js?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    а в чем проблема то?
    $( ".story .link .highslide" ).addClass( "link link_ajax link_theme_normal story__image gw9wsja80d4pldi__image i-bem" );
    Ответ написан
    4 комментария
  • Как сделать подсветку фона при наведении мыши?

    orlov0562
    @orlov0562
    I'm cool!
    смотри радиальный градиент: htmlbook.ru/css3-na-primerakh/radialnyi-gradient
    центр градиента - позиция мыши: https://css-tricks.com/examples/MovingHighlight/
    а соты сверху нарисуй
    Ответ написан
    3 комментария
  • А что если писать сайт вообще в одном файле?

    Wolfnsex
    @Wolfnsex Куратор тега CSS
    Если не хочешь быть первым - не вставай в очередь!
    Сказать по правде, Вы немного странно ставите вопрос... мне кажется, актуальнее было бы уточнить, о причинах, по которым нужно объединять файлы в один.

    Понятно, что будет неудобно работать, но это допустим не важно. Привыкнется)))
    Неудобно работать кому, Вам, или браузеру? Если браузеру, то за него не беспокойтесь, он парень сильный, справится. Если Вам - то есть сборщики проектов, коих как грибов в лесу. На крайняк можно написать свои 20 строк кода.

    Речь не идет про крупный проект, портал или магазин. Простой одностраничник)
    Вопрос звучит примерно как: "я тут приехал в какую-то деревню (город с населением 200тыс. человек), стоит ли там соблюдать правила дорожного движения и законы? Это же не миллионник и даже не мегаполис..."

    Дело не в том, скольки-страничник сайт, а в причинах, которые послужили предпосылкой к объединению скрипто-стилевого мусора в один файл. Основных причин было несколько:

    1. Большой файл грузится быстрее, чем много маленьких, по тому, что:
    а) Обращение к дисковой системе происходит 1 раз
    б) Исчезает промежуточный мусорный обмен трафиком между сервером, на загрузку каждого дополнительного файла

    2. Особенность браузеров, работающих по поротоколу HTTP 1.0/1.1 заключается в том, что они не могут открывать более 16-32 соединений (если мне память не изменяет, точные цифры не помню). Это значит, что одновременно более 16-32 файлов скачиваться не будет. А теперь представьте, что у Вас на "одностраничнике" штук 300 спрайтов, на всякие соц. сети, иконки, стрелки и пр. лабуду, и каждый будет загружаться отдельно...

    Я думаю, Вы уже знакомы с протоколом FTP... Попробуйте как-нибудь, ради интереса загрузить на сервер любую CMS, в которой 5-15тыс. файлов по FTP, в распакованном виде. А потом попробуйте упаковать все эти файлы в архив, с нулевым сжатием (TAR или ZIP без сжатия), загрузить на сервер и распаковать. Даже на самом "мёртвом" сервере, даже с учётом времени на распаковку, процедура с архивом обычно проходит в несколько (иногда десятков) раз быстрее, чем загрузка каждого файла по одному. В браузере разница не настолько критична, принцип тот же.

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

    Так же, сжатие всех скриптов в один - позволяет решить проблему порядка загрузки, и добавить скрипту флаг async, что было довольно актуально для меня в ряде случаев. А CSS - тем более грузятся по порядку, т.к. это каскадные таблицы, и как бы Вы их там не вращали, браузер априори будет их читать линейно и так же линейно применять, именно в том порядке, в котором они были указаны к загрузке. И в этом случае, сочетание протокола HTTP/1.0|1.1 и отсутствие многократного дёргания сервера, довольно очевидно.
    Ответ написан
    Комментировать
  • Как посчитать странное выражение (из теста с UpWork)?

    lazalu68
    @lazalu68
    Salmon
    UPD: разбор именно вашего случая

    TLDR - комментированный jjencode

    Описание порядка действий, type conversion table

    ++[[]][+[]]+[+[]]

    Два слагаемых: ++[[]][+[]] и [+[]]

    Первое слагаемое равно единице, т.к. первая пара квадратных скобок это литерал массива с единственным элементом - пустым массивом, вторая пара - обращение к этому массиву по индексу +[], то есть 0. По индексу 0 лежит пустой массив, в виду инкремента он приводится к числу (получается 0) и добавляется единица, получается 1

    Второе слагаемое это литерал массива с единственным элементом 0.

    То есть складываются единица и [0], 1+[0].

    Единственная загадка это почему в этой операции [0] приводится к строке. Было бы логично если бы в операции сложения единицы и массива массив приводился к примитиву с PreferredType равным "number", но почему-то получается строка. Большое спасибо было бы тому человеку, который бы объяснил этот момент в спецификации.
    Ответ написан
    7 комментариев