Задать вопрос
  • В какой последовательности читать книги по JS?

    devspec
    @devspec
    Помогло? Отметь решением
    Начинайте с любой.
    Заканчивайте этой.
    После неё - только фреймворки )
    Ответ написан
    4 комментария
  • Как сделать эффекты как на сайте примере?

    Есть такой канал Юрий Артюх, он проводит стримы как раз на тему анимации.
    Думаю у него вы найдете много чего полезного для выполнения этой задачи
    Ответ написан
    4 комментария
  • Meteor.js расцветает или чахнет?

    PQR
    @PQR
    Не согласен с предыдущим оратором (@geeek), в частности с утверждением
    В общем если хочешь быть в тренде - бери
    - Meteor совсем не в тренде.

    Если дать краткий и резкий ответ на вопрос "расцветает или чахнет?" - отвечу: интерес к Meteor чахнет, не смотря на все усилия команды разработки.

    Компания MDG (Meteor Development Group) подняла $31M инвестиций (https://www.crunchbase.com/organization/meteor) и хотела всё сделать круто, стать мейнстримом, а потом зарабатывать на хостинге Meteor проектов - такой план монетизации. Хостинг они, кстати, сделали. И в какой-то момент было много хайпа вокруг Meteor, казалось, что всё идёт по плану. Полтора года назад вышел Meteor 1.0 (октябрь 2014), потом была пара хороших релизов, которые убрали всю "сырость": Meteor 1.1 и 1.2.

    Но в середине 2015 стало понятно, что никаким мейнстримом они не стали, мейнстрим нынче React!
    Не смотря на простоту старта и скорость разработки с Meteor, были очевидны следующие минусы:

    1. Собственная система пакетов со своим центральным репозиторием https://atmospherejs.com - посмотрите на счётчики скачивания пакетов, это крохи по сравнению с npm. Посмотрите на активность разработки основных пакетов - всё очень тухленько.

    2. Собственная система сборки. С одной стороны всё работает из коробки, с другой стороны в неё не вклинишься (это сложно). Плюс всякие странные условности, что всё в глобальном пространстве имён и ваши js файлы загружаются в алфавитном порядке. В Meteor 1.3 частично решили проблему, ходят слухи, что в будущем будут использовать webpack.

    3. Собственный шаблонизатор blaze (похож на handlebars). В начале blaze выглядел хорошо, но теперь все внезапно пишут на React и многие потирают руки в ожидании Angular 2, в итоге blaze оказался ещё один велосипедом, с которым не понятно что делать.

    4. На бекенде всё ещё Node 0.10. Даже с Node 0.12 Meteor уже не работает из-за некоторых бинарных зависимостей! Обещали в будущих версиях обновиться с поддержкой Node 4.

    5. Метеор сильно завязан на MongoDb. Чтобы реактивно доставлять новые/изменившиеся данные от сервера в бразуер они парсят логи Mongo. Были попытки сделать аналогичное для SQL баз, но не увенчались успехом. В итоге встречайте их новый проект Apollo, который поверх GraphQL и не привязан к конкретной реализации бекенда www.apollostack.com А что теперь будет со старым добрым DDP?

    6. Ваше Meteor приложение одной командой можно упаковать в мобильное приложение Cordova - выглядит круто, но сейчас время ReactNative и вот мы читаем обсуждения на форумах, что возможно, они таки интегрируются с ReactNative, но когда?

    Подводя итог: ребята из MDG подняли кучу денег и хотели сделать всё сами: свои пакеты, свою сборку, свой шаблонизатор, свой реактивный протокол (DDP) и чтобы всё работало из коробки. И они сделали это!

    Только это оказалось никому не нужно, т.к. для пакетов все сидят на npm, сборка должна быть гибкой (и поэтому у нас есть gulp и webpack), самый модный шаблонизатор нынче - это React, реактивный протокол GraphQL и базы на сервере люди любят разные, а не только MongoDb. А Meteor, по сути, остался на обочине всей экосистемы и движухи вокруг JavaScript. Поняв это, MDG начали двигаться в сторону JS комьюнити и первый шаг сделан: Meteor 1.3 поддерживает нормальные модули ES2015, npm пакеты, рендринг через React и Angular. Но Meteor 1.3 - это куча костылей поверх старого велосипедного Meteor. Почитайте их планы на будущее в официальном блоге, хотя бы в этом посте: info.meteor.com/blog/announcing-meteor-1.3 - им по сути предстоит переписать всё заново! И первые ласточки такого "переписывания" - это выделение проекта Apollo.

    Возможно, со второй попытки они всё сделают правильно и Meteor 2.0 действительно выстрелит. Если только у них деньги не закончатся раньше.

    Сейчас можно взять Meteor и эффективно зарабатывать на маленьких/средних фриланс проектах, когда нужно сделать быстро и не думать о долгосрочной поддержке.
    Если же вы делаете большой продукт, то вас ждут большие потрясения и изменения в экосистеме Meteor.
    Ответ написан
    4 комментария
  • Кинула веб-студия, агентский договор?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg

    Что можно сделать в такой ситуации?

    Принять во внимание, не допускать подобное в дальнейшем. Выпить пивка, пожарить мяса, посмотреть на закат, поднять руку вверх, махнуть и сказать "да ну и ... с ним".
    Ответ написан
    1 комментарий
  • Как работать в фотошопе на ретина?

    mixail_fet
    @mixail_fet
    Дизайнер веб-интерфейсов
    Очень хорошо об этом написано на официальном сайте Adobe

    Однако кроме этого, хотелось бы отметить, что даже пользователям Windows нужно учитывать размер макета 2x, так как макет все равно будет верстаться под ретина дисплеи. В этом случае, крайне не рекомендую для разработки web макетов использовать фотошоп. Если у вас Mac, то лучше использовать Скетч, если сразу Mac и Windows - используйте Figma. Там поумолчанию предусмотрена возможность, экспорта всех деталей в разрешение 2x.
    Ответ написан
  • Выбор фреймворка для нового проекта - Angular? React? Vue?

    dom1n1k
    @dom1n1k
    Лично для меня Vue - это такой "фреймворк с человеческим лицом".
    В целом JS-мир похож на поле боевых действий, где постоянно то налеты авиации, то кононада гремит, то хипстерская конница с новым логотипом на знамёнах проскачет.
    А "обычный" человек сидит в подвале, обхватив голову руками, и думает - мама дорогая, куда я попал, и чё ваще вокруг происходит?
    Какие-то новые паттерны, подходы, языки... Раньше, чтобы начать, достаточно было блокнота и браузера. Пишешь hello world и сразу его видишь. Теперь нужно поставить ноду, овер 9000 пакетов, десять транспиляторов, таск-менеджеров и бандлеров. Пока увидишь рабочий результат - поседеешь.
    И вдруг какая-то добрая душа взяла у хипстоты всё самое лучшее и разумное, что та родила, но очистив от лишних абстракций и усложнений - и выкатила велосипед в виде велосипеда, а не турбо-космолета с инструкцией толщиной как "Капитал". И снова можно писать в блокноте и смотреть в браузере. При этом почти не проигрывая в возможностях.
    Ответ написан
    1 комментарий
  • Почему var name=null определяется как тип string?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Потому что объявляемая вами переменная name - глобальная, применительно к клиентскому javascript'у это означает, что она окажется свойством объекта window, у которого свойство name уже есть, и, как нам тут подсказывают, его значения могут быть только строками:

    window.name converts all stored values to their string representations using the toString method
    Ответ написан
    1 комментарий
  • Почему var name=null определяется как тип string?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Вы пытаете переопределить свойство window.name, т.к. в данном коде контекст выполнения это window, а значит name это window.name. Данное свойство если я не ошибаюсь, имеет встроенный геттер и сеттер, которые при присвоении ему значения, переводят его в строку (или может при получении через getter, не важно). Попробуйте написать name={}; console.warn(name);, и получите [object Object]. т.е. получается, что в этом свойстве всегда строка, поэтому typeof возвращает строку. Даже null переводится в "null". Если вы в теле функции определите имя name, то оно будет взято из лексического объекта этой функции, а не window, и такой проблемы не будет. Или же пишите
    let name = 20;
    Ответ написан
    Комментировать
  • Как перерасти из кодера в программиста?

    @AlexSer
    Думаю хорошие программисты все идеалисты. Именно поэтому им все время не нравиться то, что они делают. Сегодня тебе кажется, что ты пишешь красивый код. А через месяц смотришь на свой тот же код, и думаешь: - "блин что за урод это писал, ну как так можно".))
    Ответ написан
    2 комментария
  • Как работать с очень длинными списками в JavaScript (angular, react, vuejs)?

    alvvi
    @alvvi
    export default apathy;
    (angular не использует vdom, для него история другая)
    перерисует целиком свой виртуальный dom

    Давайте немного проясним: виртуальный DOM - это грубо говоря js объект содержащий другие объекты.
    При добавлении нового сообщения туда добавится новый объект и весь DOM сравнится со старой версией с помощью diff-алгоритма специфичного для конкретного фреймворка.
    И только результат этого сравнения добавится в реальный DOM.
    Работа с объектом значительно быстрее работы с самим DOM-ом, поэтому чтобы оно начало работать заметно медленее у вас должен быть дикий уровень вложенности или очень большой DOM.

    100 сообщений и 50 контактов - это небольшие цифры, с таким любой из упомянутых фреймворков справится без просадок.

    Вот пример бенчмарков с большим количеством объектов(1000+) для многих фреймворков на примере незамысловатой таблицы:
    www.stefankrause.net/js-frameworks-benchmark6/webd...
    (там же есть ссылка на репо чтобы увидеть как она выглядит)
    Как видите, там в таблицу уже содержащую 10 000 добавляется еще 1000(!) объектов, и многие фреймворки впонле с этим справляются.

    В реальности же, вам вряд-ли придется добавлять такие цифры, потому что подгружают изначально обычно меньшее количество: такое, которое пользователь сможет увидеть в одном экране, все остальное догружается постепенно по мере надобности. То же самое касается вашей истории чата, ее стоит подгружать только за тот период, за который она необходима пользвателю.
    Ответ написан
    1 комментарий
  • Как узнать какая часть PHP кода нагружает CPU на сервере?

    @Yan-s
    Гуглите "PHP профилирование"
    XDebug, XHprof, Blackfire ...

    А так же "нагрузочное тестирование"
    jmeter ...

    Для быстрой проверки коротких сценариев: делаем замеры, вырезаем кусок, повторяем замеры.
    Ответ написан
    8 комментариев
  • Как вставить числа в массив по порядку?

    @Cr2ed
    /* пишем функцию сортировки по возрастанию*/
    function sortAsc( a, b ) {
        return a - b;
    }
    const arr = [2, 4, 7, 10];
    arr.push(5);
    /* применяем функцию сортировки по возрастанию*/
    arr.sort(sortAsc);
    Ответ написан
    Комментировать
  • Доменная зона .io — что я пропустил?

    vosi
    @vosi
    input/output?
    это ж как-бы основа всех основ )))
    Ответ написан
    5 комментариев
  • Как изменить стиль карты для применения в навигации?

    @Codebaker
    Всё умею, всё могу!
    А вы уже получили письменное разрешение от Google? Заказчик этой работы вряд ли будет рад вашему решению использовать карты Гугл.
    Ответ написан
    1 комментарий
  • Как прописать ответственность ИТ-исполнителя за ошибки?

    DMGarikk
    @DMGarikk
    Lead Software Developer
    Для начала надо понять что вешая на исполнителя денежную ответственность за потерю прибыли по вине косяков внедрения - это путь в тупик, вы распугаете всех подрядчиков и с вами никто не будет работать

    В "старой" версии платформы расчет скидки на стороне сайта был выключен в ручном режиме Подрядчиком. При обновлении это, видимо, ими забылось.

    Это ВЫ не проверили работоспособность системы, а не подрядчик накосячил, поймите что ЭТО главное
    Ответ написан
    5 комментариев
  • Хотите задать вопрос администрации Тостера?

    devspec
    @devspec
    Помогло? Отметь решением
    Вот тоже не нравится удаление вопросов с пометкой "нельзя дать однозначный ответ".
    Бывает, напишешь текста пару килобайт в попытке помочь человеку, постишь - а вопроса-то уже нет.
    Может, создать отдельный раздел и переносить такие вопросы туда?
    Ответ написан
    1 комментарий
  • Хотите задать вопрос администрации Тостера?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Было бы хорошо иметь возможность закреплять у себя в профиле не самые залайканные ответы, а те, которые сам выбрал. Чтобы там были серьезные ответы на сложные вопросы (которые не так много людей могут заценить), а не философские размышления и удачно подобранные ссылки.
    Ответ написан
    6 комментариев
  • Какие проблемы решает качественный дизайн сайта?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Основная решаемая задача - пропитание дизайнера.
    Ответ написан
    Комментировать