Задать вопрос
  • Подойдет ли такой вариант получения опыта?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Да.
    Ответ написан
    Комментировать
  • Как сделать быстрое переключение между ОС с сохранением состояния?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Так гибернация и работать должна. Просто две ОС разные поставьте и паузу для выбора ОС увеличьте
    Ответ написан
    Комментировать
  • Бесплатный аналог гитхаба, но чтоб мой проект не был виден всем. Есть такое?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    При наличии белого IP, просто на локальной машине развернуть gitdaemon или git через ssh?
    Ответ написан
    Комментировать
  • Почему не все серверы пишутся на 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 комментариев
  • Silverlight умер?

    @dmitryKovalskiy
    программист средней руки
    Он в интенсивной терапии , в критическом состоянии. А в соседней палате лежит Flash
    Ответ написан
    3 комментария
  • Как сделать так, чтобы человек мог подключиться к принтеру дистанционно?

    gbg
    @gbg Куратор тега Компьютерные сети
    Любые ответы на любые вопросы
    VPN. Только учтите, что если у вас интернет худой, задание на печать будет уходить медленно и печально.
    Ответ написан
    3 комментария
  • Как создать exe из формы c++ cli?

    @Beltoev
    Живу в своё удовольствие
    Слишком мало входных данных, чтобы дать вам ответ.

    Как я понял, в вашем случае движок планируется в виде редактора игр, в котором по нажатию волшебной кнопки "Создать игру" (образно) будет компилироваться exe-шник, так?
    В таком случае вам нужно будет вместе с движком поставлять компилятор и при нажатии той самой волшебной кнопки запускать процесс компиляции. Ну, а файлы для компиляции будет создавать и заполнять редактор на основе действий пользователя
    Ответ написан
    4 комментария
  • Как убедить начальство отказаться от велосипедов?

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

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

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Дисклеймер
    Кому не нравится название "обещания", мысленно заменяйте его на то, которое считаете подходящим. Я выбрал именно его, чтобы концепция, лежащая в их основе, была интуитивно понятна.

    Если функция асинхронная, то лучше всего использовать обещания, что вы и попытались сделать (интерактивный пример).
    one().done(two);
    
    function one() {
        var dfd = new $.Deferred();
    
        // Запускаем асинхронную задачу. Например, ajax-запрос.
        setTimeout(function () {
            var foo = 'bar';
    
            // "Выполняем обещание", передавая в него какую-то информацию.
            // Передавать аргументы, разумеется, не обязательно.
            dfd.resolve(foo);
        }, 2000);
    
        // Возвращаем из функции обещание, на которое могут подписаться другие функции.
        // Обратите внимание, этот код выполнится до того, как завершится асинхронная задача.
        return dfd.promise();
    }
    
    function two(foo) {
        // Обрабатываем данные, полученные внутри асинхронной функции one.
        console.log('two', foo);
    }

    Для трех функций расклад немного сложнее, но принцип такой же.
    Есть и более элегантный способ запуска цепочки из трех функций:
    код
    one().then(two, onOneError).then(three, onTwoError);
    
    function one() {
        var dfd = new $.Deferred();
    
        setTimeout(function () {
            console.log('one');
            
            if (Math.round(Math.random() * 10) >= 5)
            {
                dfd.resolve();
            }
            else
            {
                dfd.reject();
            }
        }, 1000);
    
        return dfd.promise();
    }
    
    function two() {
        var dfd = new $.Deferred();
    
        setTimeout(function () {
            console.log('two');
            
            if (Math.round(Math.random() * 10) >= 5)
            {
                dfd.resolve();
            }
            else
            {
                dfd.reject();
            }
        }, 1000);
    
        return dfd.promise();
    }
    
    function three() {
        setTimeout(function () {
            console.log('three');
        }, 1000);
    }
    
    function onTwoError() {
        console.log('twoError', arguments);
    }
    
    function onOneError() {
        console.log('oneError', arguments);
    }

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


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

    Другой вариант - передавать callback, но это прямой путь в callback hell. Для запуска трех и более функций подряд я его не рекомендую - смотрите сами, на что становится похож код:
    one(function () {
        two(three)
    });
    
    function one(callback) {
        console.log('one');
        setTimeout(callback, 1000);
    }
    
    function two(callback) {
        console.log('two');
        setTimeout(callback, 1000);
    }
    
    function three() {
        console.log('three');
    }


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

    Если внутри функций ничего асинхронного нет, то можно просто вызвать их друг за другом - следующая и так запустится после предыдущей (пример).
    Ответ написан
    5 комментариев
  • Почему www еще жив?

    27cm
    @27cm
    TODO: Написать статус
    Ответ написан
    Комментировать
  • Чем отличается RESTful от REST API?

    Creamov
    @Creamov
    Senior Fullstack Software Engineer
    Это об одном и том же. REST — архитектурная парадигма. RESTful — это просто прилагательное, его обычно используют говоря о сервисе, который поддерживает REST.
    Ответ написан
    2 комментария
  • Какова архитектура "стандартный" парсер?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Параллельные потоки загрузки и обработки данных
    2. Управление уровнем ошибок для продолжения или прерывания обработки ресурса.
    3. Обработка и сегментация данных из ошибочных и неверных структурированных данных (например, HTML/XML).
    4. "Решето" (правила) для предотвращения дальнейшей обработки ресурса на основе уже полученных данных (условия алгоритма прописываются в конфиге).
    Например, контент размером более 5 кб со словом "toster" или url содержит "toster.ru" - пропустить и перейти к обработке следующего.
    Ответ написан
    Комментировать
  • Не отрабатывает setter забиндиного свойства, с чем может быть связанно?

    @raincons
    Разумеется, все дело в том, что это структура. А структуры в c# - это value type.
    Ответ написан
    Комментировать
  • Где популярные онлайн тестирования разработчиков?

    @Oxoron
    Шарпер
    Хотя придется регистрироваться, тестов там хоть отбавляй.
    Ответ написан
    7 комментариев
  • Можно ли пользоваться магнитыми отвертками при работе с электроникой?

    Neuroware
    @Neuroware
    Программист в свободное от работы время
    не вращайте вокруг них эту отвертку со скоростью выше 1500 оборотов секунду и проблем не будет.
    Ответ написан
    3 комментария
  • Где в EDGE режим совместимости?

    Они же выпилили все режимы совместимости, чтобы не поддерживать тонны legacy и быстрее развиваться.
    P.S. Поискал пруфы и не смог найти. Но я определенно где-то читал, что они выпилили старую библиотеку рендеринга и написали новую, которая во сколько-то раз меньше как раз потому, что не надо поддерживать все сопли начиная с IE6.
    Ответ написан
    5 комментариев
  • Как правильно распараллелить?

    Neuroware
    @Neuroware
    Программист в свободное от работы время
    в своей программе в аналогичном коде (считывание с диска, подсчет кэшей блоков считанного) пользовался обычным parallel foreach, под капотом там если мне не изменяет как раз threadpool, ибо это эффективней чем постоянно создавать потоки вручную. В таком раскладе как у меня тормозит именно диск, скорость работы кода ограничивается скоростью работы диска, в моем случае под 100мб в сек. шло легко.
    Ответ написан
    2 комментария