• Почему не все серверы пишутся на Node js?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1. Принципиальных качественных преимуществ у node.js перед остальными языками нет, как впрочем и недостатков. Просто yet another язык со своими особенностями. Соответственно если в вопросе заменить node.js на php/ruby/python итд - ничего не изменится.
    Вопрос по сути абстрактный "почему все не перешли на язык %%%%%"

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

    UPD
    hbrmdc
    У NodeJS есть уникальные и очень весомые преимущества, которых нет ни у одного другого языка. Например то, что это JS, и, следовательно, нет необходимости разучивать лишние языки - можно весь webapp писать на js.
    Личные предпочтения обоснованные привычками - это не имеющий значения аргумент в данном вопросе.

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

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

    2) Личные предпочтения обоснованные привычками это основной аргумент.
    Я вот умею в php, умею в ноду, умею в еще десяток умных слов.
    Мне нужна новая команда на новый проект.
    Я открываю hh и что я вижу: node.js 279 резюме из которых половина фронтэндщики.
    PHP - 9613 резюме. Даже если 90% разработчиков PHP на hh - уроды которых к коду нельзя подпускать на пушечный выстрел - останется все равно в 3 раза больше чем есть node.js.
    Собственно на этом выбор и закончен.

    На малопопулярных языках пишут в случаях:
    a) это мелкий сервис с неявными перспективами который можно переписать за неделю
    б) это проект "для души" разработчика.

    Получается замкнутый круг на самом деле.
    Менеджер смотрит резюме, резюме на node.js нет =>
    Менеджер не начнет проект на node.js =>
    Не возникнет вакансия на node.js =>
    Разработчик анализируя вакансии не увидит вакансий на node.js =>
    Разработчик будет учить что то другое =>
    Менеджер смотрит резюме, резюме на node.js нет...

    Переломить ситуацию могут только очень крупные игроки обладающие возможностями формирования рынка (например Apple и Swift), и то не со 100% гарантией (samsung&c и Tizen)
    Ответ написан
    13 комментариев
  • Какова ответственность на разработчике?

    @Beltoev
    Живу в своё удовольствие
    По-моему, сильно накручиваете: в сети столько хайпов и всем на них как бы параллельно.
    Я бы не парился, к тому же, ваша задача - разработать "проект со вкладами и реферальными программами". Ничего уголовного в постановке задачи нет, а там уже от заказчика зависит, будет ли проект белым или нет.
    Хоть раз кто-нибудь обвинял не Мавроди, а программистов, создавших ему сайт для недавней МММ? Или почему не сажают разработчиков CMS, на которых делают противозаконные ресурсы?

    В общем, подводя итоги: проблемы все-таки нет, просто накручиваете
    Ответ написан
    Комментировать
  • Как открыть консоль в Chrome на Android?

    OsBen
    @OsBen
    Печатай больше года, что бы запомнить больше кода
    Удаленная отладка на Android с Chrome
    https://developers.google.com/web/tools/setup/remo...
    Ответ написан
    Комментировать
  • Арендовав vps/vps, можно разместить только ОДИН сайт?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Вы покупаете виртуальный сервер - уменьшенную копию реального сервера, то есть маленький компьютер. С ним вы можете делать всё, что захотите. Даже захостить 100500 сайтов. И для этого достаточно 1 ip. В dns ко всем доменам, которые хотите захостить на своём vps прописываете ip вашего vps, а в vps уже настраиваете виртуальные хосты на вашем веб-сервере.

    Как vps будет понимать какой сайт показать?
    Когда вы вбиваете адрес сайта в браузер, он спрашивает у dns ip адрес машины, соответствующий данному домену и соединяется с машиной и установленным веб-сервером на ней по HTTP протоколу, при этом отсылая заголовки. В одном из заголовков (Host:) браузер присылает адрес сайта, который он хочет получить в ответ, веб-сервер смотрит на этот заголовок, сверяет со своим конфигом и отдаёт, грубо говоря, всё содержимое папки, которая соответствует данному хосту в конфиге. Такая практика называется "virtual hosts", виртуальные хосты.
    Ответ написан
    Комментировать
  • Как при быстром многократном клике по кнопке обрабатывать только первый клик - jQuery?

    @dmitryKovalskiy
    программист средней руки
    disable кнопке проставлять нельзя? или не помогает?
    Ответ написан
    5 комментариев
  • Где искать информацию о компонентах bower?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    А какую информацию вы ищете? Там в списке есть название, описание, ссылка на репо. Поиск работает. Чего еще хочется?
    Ответ написан
    Комментировать
  • Как вставить td в конец tr на JQuery?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    [].forEach.call(document.querySelector("#table tr"), function(v){
       v.appendChild(document.createElement("td"));
    });

    Или
    $("#table tr").append("<td></td>");
    Ответ написан
    1 комментарий
  • Как рассчитать степень схожести двух текстов?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Вам нужен синонимайзер и яндекс для составления словоформ синонимов в разных падежах: https://export.yandex.ru/inflect.xml?name=тест

    2. Затем составляете все возможные схемы предложений: порядок следования КЛЮЧЕВЫХ слов и падежи (предлоги, союзы и мат :) не входят сюда).

    3. Строим дерево для быстрого поиска команды на основе КЛЮЧЕВЫХ слов из произнесённой фразы.

    4. Используем распознавание похожести слов Левенштейном и похожести цепочек для дерева - Шинглы.

    5. Профит!

    Доп. метод: также можете воспользоваться для определения частей речи моим велосипедом и через Левенштейна построить ожидаемые цепочки дерева.
    Ответ написан
    4 комментария
  • Как добавить/удалить link в head? И возможно ли это вообще?

    По мне так, лучшим вариантом будет оставить один link, а далее менять его href атрибут.
    Примерно, так:
    $('#blackstyle').click(function (){
        $('link[href="style1.css"]').attr('href', 'style2.css');
    });
    $('#original').click(function (){
        $('link[href="style2.css"]').attr('href', 'style1.css');
    });
    Ответ написан
    3 комментария
  • Как убедить начальство отказаться от велосипедов?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Все можно сделать.... (как бы странно это не звучало....)
    1. Нужно составить схему архитектуры, создать список классов и их методов, функций и т.д..
    2. Наложить файлы на архитектуру, чтобы понимать где что делается.
    3. Затем, рефакторинг архитектуры и кода (если необходимо и есть время).
    Продолжать работу.

    PS: не очень приятная работа, однако без неё однозначно всё встанет в ближайшем будущем на этом решении без необходимого понимания и документации разработчика.
    Ответ написан
    Комментировать
  • Как убедить начальство отказаться от велосипедов?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Не волнуйтесь, вас уволят и правильно сделают. И вот почему.
    Начну со стороны хорошего бизнесмена:
    У него уже есть cms и crm, которую он пилил 5 лет, умеет продавать и знает. Да, так получилось, свой велосипед, ужасно написанный, но это его не волнует до тех пор, пока она кормит и его и всех его подопечных. Отказаться от неё означает не только огромные временные затраты на смену всего, начиная от обучения программистов как её пилить, заканчивая обучением всех, кто будет её касаться. Так же это означает поддержка уже двух систем, старых клиентов со старой и новых с новой. Но самое главное - это высокий риск того, что продавать её будет тяжелее.

    Со стороны хорошего разработчика:
    А хорошему разработчику вообще до фени, с чем ему работать. Спросите у опытных. Эмоционировать при виде говнокода и велосипедов - это максимализм юного программиста. Разработчики с опытом умеют погружаться в любой велосипед, в любой говнокод и работать с ним. А потому что они уже навидались и в своё время тоже кричали и пытались перевернуть мир, но, кому это надо? Вы - наёмный работник, вы не должны писать красивый код, вы должны решать бизнес задачи. Бывалые так и делают, просто иногда про себя вздыхая, т.к. чувство прекрасного всё же не убить :)
    Ответ написан
    18 комментариев
  • Как получить даты последних пяти дней?

    Creamov
    @Creamov
    Senior Fullstack Software Engineer
    Пример с использованием UnixTimeStamp:

    function getLastNDays($days_count = 5) {
    	$today = time();
    	$last_days = [];
    
    	for ($i = 0; $i < $days_count; $i++) {
    	    $prev_day = $today - (3600 * 24 * $i);
    	    array_push($last_days, $prev_day);
    	}
    
    	return $last_days;
    }
    
    // Вывод
    $days = array_map(function($item){
    	return date('d M', $item);
    }, getLastNDays(5));
    
    asort($days);
    
    echo implode(', ', $days); // 11 Aug, 12 Aug, 13 Aug, 14 Aug, 15 Aug

    Или вариант с DateTime:

    function getLastNDays($days_count = 5) {
    	$datetime = new DateTime();
    	$last_days = [];
    
    	for ($i = 0; $i < $days_count; $i++) {
    	  array_push($last_days, clone $datetime);
    		$datetime->sub(new DateInterval('P1D'));
    	}
    
    	return $last_days;
    }
    
    // Вывод
    $days = array_map(function($item){
    	return $item->format('d M');
    }, getLastNDays(5));
    
    asort($days);
    
    echo implode(', ', $days); // 11 Aug, 12 Aug, 13 Aug, 14 Aug, 15 Aug

    В следующий раз приводите примеры своего кода.
    Ответ написан
    1 комментарий
  • Замена содержимого и появление div при клике. Как реализовать?

    Creamov
    @Creamov
    Senior Fullstack Software Engineer
    Способов масса. Вот один из:

    HTML:
    <button class="js-button" data-toggle-text="Close">Open</button>
    <div class="js-container hidden">
    Some text here.
    </div>

    CSS:
    .hidden {
      display: none;
    }

    Если вы не используете jQuery в проекте, то посмотрите пример на чистом JavaScript:

    JavaScript: (Демо: codepen.io/anon/pen/EjzYpy )
    ;(function($D){
        var $button    = $D.querySelector('.js-button'),
            $container = $D.querySelector('.js-container');
      
        $button.addEventListener('click', function(e){
          var data = e.target.dataset,
              toggleText = $button.innerHTML,
              isVisible = $container.style.display == 'block';
          
          $button.innerHTML = data.toggleText;
          data.toggleText = toggleText;
          
          $container.style.display = isVisible ? 'none' : 'block';
        });
    })(document);

    Если используете jQuery, посмотрите следующий пример:

    jQuery: (Демо: codepen.io/anon/pen/MwdgEN )
    $(function(){
      var $button    = $('.js-button'),
          $container = $('.js-container');
      
      $button.on('click', function(){
        var toggleText = $(this).data('toggle-text');
        
        $(this).data('toggle-text', $(this).text())
               .text(toggleText);
        
        $container.toggleClass('hidden');
      });
    });
    Ответ написан
  • Как узнать, какой скрипт JS управляет состоянием элемента DOM?

    Можно повесить точку останова на элемент, в котором изменяется атрибут.

    Пример с хромом.

    cf5430682959459d95652d12d8ec2f92.gif
    В firebug есть аналогичная возможность.
    Ответ написан
    1 комментарий
  • Как правильно организовать инфраструктуру продакшена и процессы разработки, тестирования и деплоя?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    Нельзя брать некую теоретическую компанию и делать теоретическую структуру продакшена.
    Надо брать конкретный продукт, конкретные требования заказчика, который платит деньги, и отталкиваться от этого.

    Можно настраивать CI, можно разводить agile процессы, но главное - выяснить требования заказчика, и подстраиваться под них.
    Ответ написан
    5 комментариев
  • Как просканировать значения в таблице?

    var values = $('table td:nth-child(2)').map(function() {
        return $(this).text();
    });
    Ответ написан
    Комментировать
  • Почему я не могу на верстке кликать на ссылки?

    Creamov
    @Creamov
    Senior Fullstack Software Engineer
    Если вы установите #content свойство z-index равное -1, то это решит вашу проблему, поскольку #content переместится на задний план.

    Верстка — без комментариев. Поищите и почитайте материалы про позиционирование элементов.
    Ответ написан
    Комментировать