• Почему перенос строки после return игнорирует следующую строку?

    rim89
    @rim89
    программист-велосипедист
    Можно + добавить после return и заработает, но это не по ГОСТу
    Ответ написан
    6 комментариев
  • Почему перенос строки после return игнорирует следующую строку?

    AppFA
    @AppFA
    Frontend developer at Yandex
    Потому что выражение 123 находится не на той же строке поэтому интерпретатор автоматически подставляет в конце выражения return точку с запятой и функция прерывается.
    Ответ написан
    Комментировать
  • Выделяется не тот чекбокс в vue.js?

    @lega
    Похоже ui-checkbox ловит несколько событий и mouseup прилетает уже во второй таск. Делайте issue в ui-checkbox
    Ответ написан
    1 комментарий
  • Как быстро и эффективно освоить Node.js+Express?

    @artemt
    Full-stack developer
    При такой постановке вопроса лучше всего начать с прочтения и реализации примеров, естественно, книги Веб-разработка с применением Node и Express. А дальше раберёшься, тем более что советов уже накидали.
    Ответ написан
    3 комментария
  • Как быстро и эффективно освоить Node.js+Express?

    @Elizavetta
    Matroid: gamedev/js-разработка
    Ваша проблема не в ноде, а в недостатке опыта в бекенде и проектировании как таковых. Язык, базовый сервер не так важны, и на данном этапе, возможно зря отказались от django.

    Доки MDN, React,Vue,Django обожаю, с ними действительно не нужны особо другие источники. Совсем другая ситуация с нодой.

    В django уже реализовано многое из коробки, а на express вы сами должны писать/собирать свое django, отсюда разница в документации. Т.е. это более низкоуровневый инструмент, отсюда ваши сложности. Берите более "жирный" фреймворк поверх экспресса, или сначала реализуйте достаточно большой бекенд на django.
    Ответ написан
    Комментировать
  • Как быстро и эффективно освоить Node.js+Express?

    @wdeveloper
    Лично я, изучал по скринкастам Кантора+гугл+стек. Дальше как-то само по себе "изучалось".
    Ответ написан
    2 комментария
  • Как в GIT найти начиная с какой ревизии в тексте файла появился (или исчез) заданный кусок текста?

    @aol-nnov
    придется попыхтеть с переводом моего ответа, но он заслуживает зеленой галки, это 146%.
    If you know the contents of the line, this is an ideal use case for:

    git log -S <search_string> -- path/to/file
    which shows you commits which introduce or remove an instance of that string.
    Ответ написан
    7 комментариев
  • Как в GIT найти начиная с какой ревизии в тексте файла появился (или исчез) заданный кусок текста?

    git blame - показывает в каком коммите была добавлена каждая строка. Для удалённых строк придётся смотреть всю историю.
    Ответ написан
    3 комментария
  • Как называется, когда JSON REST API принимает список idов и возвращает его же, но отмечает, какие есть в БД сервера, а каких нет?

    al_gon
    @al_gon
    Это называется, что это не REST API

    У вас есть Id's от каких-то сущностей. Представим, что от collection1
    Что бы проиграть ваш сценарий и остоваться в REST. Вам нужно послать GET запрос с параметрами Id.
    Сущности, которые вернутся есть в DB, иначе отсутствуют. Если вам нужны только Id's, то добавте к запросам параметр fields и значение id. И это уже начинает отходить от "классического", и становится объектом споров и философским умозаключений.

    Примеры:
    1)
    {host}/{restapi}/collection1?id="id1"&id="id2"&id="id3"

    2)
    {host}/{restapi}/collection1?id="id1"&id="id2"&id="id3"&fields=id

    3)
    {host}/{restapi}/collection1?id=["id1","id2","id3"]&fields=id


    Пример 1) правильный, 2) хороший, пример 3) плохой
    Ответ написан
    1 комментарий
  • Возможен ли серверный рендеринг Vue.js без node.js, а на обычном PHP-бэкенде?

    AppFA
    @AppFA
    Frontend developer at Yandex
    У vue2 насколько я знаю есть SSR, только вам все равно нужен будет front-end сервер в виде ноды для этого, но php насколько я знаю тоже может работать с JS через либу v8php или как-то так.
    https://vuejs.org/v2/guide/ssr.html
    Ответ написан
    5 комментариев
  • Когда нужно использовать computed, а когда methods во Vue.js? И в чем их разница?

    Decadal
    @Decadal
    Если результат вашей функции не опирается на внутренние данные, используйте methods.
    Например, у вас есть внутри vue некая range, которая служит верхней границей для Math.random. Если реализовать при помощи метода, то каждый раз он будет возвращать новое значение Math.random.
    Реализация через computed будет ожидать изменений вашего range, а иначе вернет то же число, которое сгенерилось первый раз
    js:
    var app = new Vue({
            el: '#content',
            data: {
                range: 1
            },
            computed: {
                rand: function () {
                    return Math.random() * this.range ; //ожидалось что app.rand будет давать случайное число
                }
            },
            methods: {
                show: function (event) {
                    alert('Случайное число: ' + this.rand); // но нет, число одно и то же
                },
           }
    });

    html:
    <div id="content">
    <button v-on:click="show">показать число</button>
    </div>


    В итоге оно сгенерирует число один раз и будет выводить его постоянно при клике на кнопку. Если вы введете в консоли app.range = 2; то генерируемое число разово изменится.

    Пример для лайков, упомянутый в комментарии:
    new Vue({
       el: '#content',
       data: {
          likes: 0,
       },
    });

    <div id="content"><button v-on:click="likes += 1">+1</button></div>
    Ответ написан
    9 комментариев
  • Объясните простыми словами для чего эти фреймворки Vue.js, React.js, KnockoutJS, riot.js,?

    @ewars
    Сам долго разбирался в этом вопросе и более-менее понял суть.
    Эти фреймворки используются для шаблонизации фронтенда и оптимизации работы сложных одностраничных приложений (таких как личные кабинеты, админ-панели и тд).

    Основные преимущества:
    1. Возможность создания сложного сайта без перезагрузки страницы. Пример - соцсети. Причем можно сделать и чпу-ссылки и хлебные крошки, все как полагается.
    2. Скорость работы с DOM в разы выше, чем с jq. Плюс в них оптимизирована работа с оперативной памятью. По идее можно не думать об утечках.
    3. Использование компонентов.
    К примеру, создал компонент "Кнопка" (<app-btn></app-btn>), в отдельном файле прописал его свойства, html-структуру, css и javascript-поведение. И теперь можно его использовать, просто прописав этот тег. Причем в него сразу же можно передавать свойства, к примеру текст кнопки <app-btn text="Заказать"></app-btn>.

    На счет поисковиков - можно поставить серверный рендеринг на компоненты, которые важны для индексации (например Vue.js + vue-server.js). И на выходе получишь крутое, быстрое, индексируемое приложение.
    Посмотри, например сайт тинькофф. Там используются все эти новомодные вещи. Сайт реально быстрый. А на него заходит около 10 млн человек в месяц
    Ответ написан
    3 комментария
  • Почему разные имена сетевого интерфейса в конфиге и при выводе ifconfig?

    @Erelecano
    Админю сервера, починяю примуса.
    ethX — старая нотация
    ens — новая нотация
    Подробности https://www.freedesktop.org/wiki/Software/systemd/...
    там же способ вернуться к старой нотации.
    Ответ написан
    Комментировать
  • Объясните простыми словами для чего эти фреймворки Vue.js, React.js, KnockoutJS, riot.js,?

    @Kostik_1993
    Web Developer
    Просто посмотрите видео и все станет понятно.
    Vue Введение
    Ответ написан
    Комментировать
  • Как перенести строку в text javascript?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    $("#modal1Title").html('Ваша заявка отправлена.<br>С Вами свяжутся в течении 5 минут.');
    Ответ написан
    1 комментарий
  • 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 комментария
  • Html to pdf js?

    @GrizliK1988
    https://www.npmjs.com/package/wkhtmltopdf-nodejs-pdfapi - у wkhtmltopdf проблем с кодировками быть не должно.
    Ответ написан
    Комментировать
  • Html to pdf js?

    @nikfakel
    Веб-разработчик
    https://github.com/MrRio/jsPDF, с кириллицей все нормально
    Ответ написан
    9 комментариев
  • Какие задачи решает реактивное программирование?

    @kttotto
    пофиг на чем писать
    Есть два варианта получить данные. Можно пассивным способом, это когда мы сами делаем запрос на получение и нам приходит ответ (вариант pull). И есть второй вариант, когда данные сами нас уведомляют об изменениях и выталкивают данные нам (вариант push). Реактивное приложение, это когда приложение само извещает нас об изменении своего состояния. Не мы делаем запрос и проверяем, а не изменилось ли там что-то, а приложение само нам сигнализирует. Ну и конечно эти события, эти сигналы мы соответственно можем обрабатывать.

    Реактивность дает слабую связанность в первую очередь. Во-вторых, в некоторых случая это дает возможность писать более простой и понятный код. Например мы можем взять обычную коллекцию, преобразовать ее к реактивной коллекции и тогда мы будем иметь коллекцию событий об изменении данных в ней. Мы очень просто получаем только те данные, которые изменились. По этой коллекции мы можем делать выборку, фильтровать и т.д. Если бы мы это делали традиционным способом, то нам нужно было бы закэшировать текущие данные, потом делать запрос получить новые данные, потом их сравнить с кэшем и разница и будет те самые изменения.
    Ответ написан
    2 комментария
  • Какие задачи решает реактивное программирование?

    @Hydro
    C#/.NET Developer
    Надеюсь, что правильно понял Ваш вопрос.

    Пример

    Храню в БД фото с марса в формате HD, делаю запрос на 100 фотографии, задача - показать 100 фоток последовательно на экране.

    Стандартный поход: делаю запрос к базе на 100 фотографии, жду 2 секунды, получаю массив из 100 фотографии,
    итератором бегаю по коллекции и показываю картинки на экране
    псевдокод:

    pics = GetPicsFromDatabase();
    foreach(var pic in pics)
      ShowPic(pic)


    Реактивный подход: делаю запрос к базе на 100 фотографии и обработчику запроса задаю коллбек, обрабатывающий следующий элемент коллекции

    псевдокод:
    // somecode
    GetPicsFromDatabaseReactive(NextPictureHandler);
    // somecode
    NextPictureHandler(Image pic)
    {
      ShowPic(pic)
    }

    В первом случае мы сами явно вытягивали следующий элемент списка (pull), а во втором случае - источник данных сам вкидывал нам следующий элемент, когда он был готов (push).
    В первом случае мы ждем, пока сформируется источник данных (как правило занимаем тред) и после этого сами ручками просматриваем результат, во втором случае источник данных сам нас уведомит, когда будет готов.

    Что это нам дает?
    Асинхронность - в UI например это дает отзывчивость)
    Масштабируемость - источник данных (коллекция картинок) и приемник (наш псевдкод, показывающий картинки) не связаны, отсутствие связи дает нам возможность подключить хоть 10 обработчиков картинок (пример один в черно-белом выводит, другой сепию накладывает и т.п.)
    Отказоустойчивость достигается тем, что если сдох первый обработчик, например в его треде вылетел эксепшн, который повалил тред (прошу прощения за грубый пример), то действие выполнится резервным обработчиком (мы же их можем навешивать хоть 10, правда?)
    Ответ написан
    3 комментария