• Почему Yii/Yii2 не подходит для крупных проектов?

    @karminski
    Senior React.JS Developer
    У нас в компании 4 энтерпрайзных проекта на Yii2. В том числе CRM. В том числе и связь с телефонией, 1С, баг-трекером. Всё работает отлично, без нареканий. О каких "слабых" местах вы говорите? Прекратите читать - начните делать!
    Ответ написан
    7 комментариев
  • Почему не все серверы пишутся на 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 комментариев
  • Как навесить событие на элемент если он выводиться динамически?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Если элемент #listClients у вас является родителем, в который вставляются новые элементы, то нужно делать так:

    $('#listClients').on(
        'click',
        'button',
        function(){
            event.preventDefault();
            console.log('1');
        }
    );


    Это называется делегированием событий - вы вешаете обработчик на #listClients, который со страницы не исчезает и при каждом клике внутри себя он проверяет не был ли клик в действительности на button и если так - выполняет обработчик в нужном контексте.

    Пример.
    Ответ написан
    Комментировать
  • Динамическая генерация изображений в yii2 - какой экстеншн выбрать?

    @Mylistryx
    Может я не совсем правильно понял вопрос, но я бы создал правило для Apache/nginx, что если файл не существует на уровне FS, то запросить этот файл через скрипт с параметрами.
    Пример
    Запрошен файл '/assets/posts/thumb/345345223ab7f8c0eab.jpg'
    nginx проверяет, есть ли файл и если есть, то отдает его напрямую, если же нет, то:
    Проверяем, есть ли у нас в папке загрузок (я обычно делаю эту папку выше папки DOCUMENT_ROOT)
    Если есть, то ресайзим его под профиль thumb, при необходимости накладываем ватермарк, кладем в /assets/post/thumb, отдаем пользователю.
    В противном случае отдаем 404.
    Ответ написан
    1 комментарий
  • Как совместить AR с DAO в Yii2?

    Если хотите использовать транзакции при сохранении модели то вам нужно переопределить в классе модели метод transaction
    Ответ написан
    Комментировать
  • Как вы жили до «бума» социальных сетей?

    @kaladhara
    Ну как жили…
    В кабаке, бывало — «Человек! А подай прибор и бумаги, да снеси затем письмо на почту!»
    Голубиная почта, опять же.
    Ответ написан
    Комментировать
  • Что случилось с хабрапользователем roman_tik?

    Paul
    @Paul
    Бред вообще с этими банами. Добавляешь в избранное статьи, добавляешь, а там в итоге сплошное НЛО. Я в последнее время стал сохранять толковые статьи на диск (2011 год блин), ибо уже нельзя быть уверенным, что статья человека с огромной кармой и кучей почётных бэджиков будет доступна через несколько месяцев :(
    Ответ написан
    5 комментариев