• Почему не все серверы пишутся на 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 комментариев
  • Что можно написать на Node.js?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js

    Часто применяется для:

    1. Локальные приложения и утилиты командной строки
    • Сборщики и трансляторы
    • Пакетная обработка и сценарии отложенной обработки
    • Скрипты, CLI (интерфейсы командной строки)
    • Генерация документации, отложенное формирование отчетов
    • Сценарии тестирования для других систем

    2. Серверы
    • Серверы веб-приложений и SPA
    • Серверы и API для мобильных приложений
    • Любые другие веб-API (RPC, JSON, REST)
    • Серверы сообщений и трансляция событий (чаты, игры, интерактив)
    • Заплаты на уже готовые системы, написанные на других языках, для реализации вебсокетов, SSE, лонг-пулинга и т.д., т.е. для затыкания дыр, для решения проблем в узких местах уже работающих систем.

    3. Клиенты
    • Оконные приложения (nw.js, node-webkit)
    • Кравлеры, парсеры и сбор данных

    4. Железо
    • Программирование микроконтроллеров (arduino, espruino, tessel)
    • Промышленная автоматизация

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

    И плохо подходит:
    • Вычисления и моделирование, со скоростью математических операций нода и JS, как не типизированный язык, не дают хороших показателей
    • Научные приложения (по тем же причинам)
    Ответ написан
    10 комментариев
  • Путь в быдлокодеры или как стать программистом с 0?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1) Я упорно отказываюсь называть верстальщиков - программистами.
    На 90% это тупая низкооплачиваемая работа, никакого отношения к программированию не имеющая
    Исключения есть, но не много.
    Для того что бы стать web backend программистом - знания верстки нужны самые минимальные (читай - не нужны вообще, но в процессе все равно появятся), зато нужно например sql которого в вашем списке нет почему то.

    2) Если хочется денег и нет отвращения к дресс-коду - можно пойти в java разработчики.
    По деньгам выиграете заметно, но это в 99% enterprise со всеми вытекающими.

    3) Если хочется денег и свободы - можно пойти в разработчики ios/andoid на выбор.
    Самый правильный вариант если с нуля выбирать профессию.
    Кадровый голод в сфере дикий, в dc берут с 0ми знаниями на неплохие деньги.

    Imho самый правильный вариант для Вас - второй или третий.
    Становиться верстальщиком сейчас - явно не самая хорошая идея.

    UPD
    PolzuizYami: Что за enterprise и что за вытекающие? )
    Какой порог входа для разработчика под мобилки и через сколько я смогу показать результат и что то за это начать получать ? Почему вы не любите fronted? ) И почему становится fronted'ом не лучшая затея(на верстке я как бы не собирался останавливаться, но это основа основ для fronted'a)?

    Enterprise - работа или в крупной компании или в аутсорсере который работает на крупную не IT компанию. Вытекает из этого определенный уровень бюрократии, чинопочитания, формализма, дресскода и прочего, что в какой то мере компенсируется кешем и стабильностью™.
    Опять же не всюду, но очень много где.

    Порог входа для мобильной разработки сейчас достаточно низкий, 0-1-2 месяца самостоятельной практики и можно идти на вакансию junior, в dc платят 40-50 на старте, за год-два можно выйти на 150-250+ с учетом фриланса.

    По поводу фронтенда:
    Сразу небольшой дисклеймер:
    a) не хочу никого обидеть, пишу исходя из личного опыта. b) это справедливо не для всех проектов.

    Итак:
    1) В отличии от backend - сложность и объем задач по frontend не зависит от размера аудитории проекта.
    2) В отличии от backend - работы по frontend выполняются быстро и в отсутствии требований по изменениям - доработкам не подвергаются.
    3) В отличии от backend - текущая работа по frontend сильно менее связана с прошлыми этапами работы, либо погружение в проект требует не много времени (не всегда, но часто)
    4) Следствие из 1, 2, 3: Для запуска развития среднестатистического проекта нужны backend разработчики в команду (штат/длительный аутсорс) и не нужны frontend разработчики в команду (проще и дешевле брать фрилансеров под конкретные задачи)
    5) Вывод: Путь верстальщика это в 90% либо короткая дешевая работа на фрилансе, либо работа в штате по поддержке постоянных маркетинговых хотелок (подвиньте банер на 20px в бок, итд), либо в очень редких случаях - действительно сложные, нагруженные с точки зрения frontend проекты.
    Почему в редких случаях? Потому что таких проектов очень мало :) (и кстати многие из них - enterprise)

    UPD-2
    По поводу мобильной разработки:
    Куда пойдет mobile dev через 5 лет - предсказать сложно. На мой взгляд основная масса проектов сейчас достаточно простая и для успешной реализации требует монотонной аккуратной работы (70-80% времени это собирание верстки и анимаций, подключения к внешним апи). Адские зарплаты сейчас обусловлены дикой нехваткой людей. Но есть мнение что пик уже прошел.
    С другой стороны появляются новые мобильные платформы - и разработчики нужны уже под них) Непрерывный процесс саморазвития как он есть)

    UPD-3
    Собственно, почему Веб ,а не мобильная или Java. Ориентировался чисто по вакансиям своего города, к сожалению живу не в DC и да же не в DC2, а наверно DC 666 (Владивосток).
    Вся прелесть бытия IT специалистом - в нашей широкой востребованности. Не нужно ориентироваться на свой город, да и на DC по большому счету не стоит. Перед тобой вся планета.
    да и маме сайт сделаю
    ппц мотивация для выбора жизненного пути.
    Ну а про потолок верстальщика - я расписал ниже.
    Ответ написан
    28 комментариев
  • Можно ли на гитхабе узнать количество проссмотров, загрузок?

    reffy
    @reffy
    Я молодец.
    Заходите в свой проект, справа жмёте «Graphs» и там есть вкладка «Traffic», где вы можете смотреть сколько посещали, откуда приходили, сколько раз клонировали и т.д.
    Ответ написан
    2 комментария
  • Нужно ли использовать CSRF token в Ajax Post запросах без форм и ввода данных?

    sintez
    @sintez
    Я не знаю как конкретно в Laravel, но в принципе CSRF токен должен передаваться при любых POST запросах на сервер.
    UPD:
    Почитал документацию к Laravel, там все доходчиво написано. Получить токен можно с помощью <?php echo csrf_token(); ?>. Т.к. у вас нет форм, то можно сделать следующим образом:
    1. В header добавить тег
    <meta name="_token" content="<?php echo csrf_token(); ?>">

    2. Далее, если вы используете jQuery, то добавление токена в запрос будет выглядеть следующим образом.
    var csrftoken = $('meta[name=_token]').attr('content');
    $.ajaxSetup({
        beforeSend: function (xhr, settings) {
            if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type)) {
                xhr.setRequestHeader("X-CSRFToken", csrftoken)
            }
        }
    });
    Ответ написан
    6 комментариев