• Что находится под капотом [].forEach()?

    Xuxicheta
    @Xuxicheta
    инженер
    1. Не хочешь - не передавай. Он вообще не нужен, для передачи this можно использовать bind https://jsfiddle.net/eyc8cmqu/1/
    2. Всмысле откуда? Колбек вызываается в том же контексте, где вызывается forEach
    3. Это та же самая функция. . Если ты про передаваемый аргумент, то это в функцию первым аргументом передается элемент массива, если он является примитивом, то копируется в функцию по значению.
    4. Выполняется цикл от 0 до изначальной длины массива и выполняет колбек на каждом существующем элементе.
    Все ж написано https://developer.mozilla.org/ru/docs/Web/JavaScri...

    upd исправил ответ после критики пользователя Антон Спирин
    Ответ написан
    1 комментарий
  • Nodejs npm: как победить ошибку при попытке установить модуль pg-native?

    @linqu Автор вопроса
    Разобрался, просто внимательно нужно читать:
    You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
    Ответ написан
    Комментировать
  • Как сделать интерактивную карту?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    svg. Дизайнер рисует тебе карту России в векторе и отмечает на ней точки, а дальше сам. Иначе ищешь векторную карту в интернете. Если на ней нет нужных точек, то открываешь карту в илюстраторе, рисуешь кружки в нужных местах,. Делов то!!

    Есть например такой сервис. Там есть разные карты. Я скинул карту РФ. Но она какая-то не полная, хотя я в географии не силён. Сам часто использовал эту карту
    Ответ написан
    Комментировать
  • Есть ли такой модуль для Angular 2?

    Young_khv
    @Young_khv
    ASP.NET Developer
    Ответ написан
    Комментировать
  • Как избавиться от index.html в проекте созданном с помощью @angular/cli?

    никак
    Ответ написан
    Комментировать
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я понимаю, о чем вы пишите и почему. Ваш код работает, т.к. решает поставленные задачи и удовлетворяет потребности ваших клиентов. Имеет ли он право на жизнь? Да, но только в вашем отдельно взятом случае.

    Дело в том, что ваш код не гибок, в нем отсутствует масштабируемость, его невозможно поддерживать.

    Что если вам потребуется сделать блог, в котором нужно иметь комментарии, которые обновляются в режиме реального времени? И комментарии могут содержать HTML, но такой, чтобы ваш сайт не могли взломать?
    А еще комментарии короче 2000 символов по воскресеньям платные. Оплата через Яндекс.Деньги.
    Вы все это делаете, все работает.
    Затем заказчик вам говорит, я хочу запустить такую же систему другу, но с оплатой по понедельникам через WebMoney.
    Вы копируете сайт, переписываете функцию оплаты.
    Дальше ваш заказчик видит, что у друга больше денег, он просит добавить WebMoney к себе.
    Вы опять переписываете код. Добавляете условия.
    Потом к вам приходит друг заказчика и хочет другое оформление. Вы переписываете его функции.
    Затем он просит добавить поиск по названиям записей к себе на сайт. Вы делаете. Буквально на следующий день к вам приходит заказчик и тоже просит поиск, но не только по названиями, но и по телу статей и по комментариям. Вы делаете.
    Затем ваш заказчик видит, что дела у него идут в гору и он просит отменить платные комментарии и сделать просто платные аккаунты для всех. Вы переписываете.
    Тем временем друг просит вас сделать все тоже самое, но с его оформлением.
    Дела у заказчика идут в гору и сайт начинает тормозить. Вы делаете кэширование.
    Внезапно сайт заказчика попадает в топ и нагрузка резко увеличиваете настолько, что один сервер уже не справляется. Вы переносите все на самый мощный, но он его тоже мало.
    Нужно делать горизонтальное масштабирование.
    Для этого нужно переписать все функции, которые работают с базой данных. А их уже больше двухсот. И просто замена не подходит.
    Сайт открывается через раз, заказчик звонит вам каждые 2 часа и спрашивает, как там прогресс.
    И тут вам присылает письмо друг заказчика и говорит, что хочет перейти с MySQL на PostgreSQL.
    И вы понимаете, что вам надо будет переписать еще 300 функций, но на другом сайте. Вы его посылаете, поскольку вы и так в мыле.
    Друг жалуется на вас заказчику. Заказчик, не ставя вас в известность, нанимает другого исполнителя, у которого отваливается челюсть от того, что творится в системе. Он объясняет, что ему нужно будет потратить полгода, чтобы вникнуть в то, чтобы понять ваш код, но он может сделать все тоже самое за 4 месяца, причем для заказчика и его друга так, что это будет расширяемо и поддерживаемо не только им.
    Тем временем, спустя двое суток жизни на кофеине вы героически переписываете все функции заказчика и идете отсыпаться. После суток сна вы обнаруживаете на автоответчике сообщение, что вы уволены. А все потому, что забыли проверить функцию логина.

    А теперь разберем эту историю по частям. Почему же вас уволили?

    Незнание абстракций и шаблонов проектирования привело к тому, что вы вынуждены были поддерживать 2 разных проекта с практически одинаковой логикой.
    Например ORM смог вам помочь поддерживать 2 разные базы данных без каких-либо усилий. Сменить одну базу на другую стоило бы исправления конфигурации, а не переписывания 300 функций.
    Использование фреймворков позволило бы сократить время на реализацию подключений платежных систем. Многие из них имеют готовые реализации.
    Опять же в современных фреймворках, например в той же Doctrine реализован шардинг. В большинстве случаев ваши проблемы свелись к изменению настроек.
    Но даже если бы вы накосячили, то интеграционные тесты не позволили бы попасть говну в продакшен. А если бы оно и попало, ну накосячили вы с тестами тоже, то проблема была бы обнаружена на раннем этапе благодаря "сине-зеленому" развертыванию и она бы не затронула всех пользователей.
    И да, ваш код не прошел внешний аудит.

    Чтобы быть настоящим профессионалом, нужно не только знать, но и уметь применять на практике ООП, популярные фреймворки, шаблоны проектирования, тестирование и средства непрерывной интеграции, а еще пользоваться нормальными IDE и нести ответственность за сделанную работу.

    Когда пишете свой код, почаще задавайте себе вопрос: А если бы это был код для моего кардиостимулятора? Это поможет.
    Это вам для общего развития.
    Ответ написан
    5 комментариев
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    @Plus3x
    c10c573f52694badb316d1aa222bc323.png
    Ответ написан
    Комментировать
  • Как сделать интерактивную карту?

    dummyman
    @dummyman
    диссидент-схизматик
    Есть такой фреймворк openlayers
    Вот ссылка на пример openlayers.org/en/latest/examples/select-features.html
    там разделение по государствам, нужно будет вместо https://openlayers.org/.../geojson/countries.geojson составить свой файл geojson по областям
    Данные берем отсюда gis-lab.info/qa/osm-adm.html
    Стили карт берем тут https://www.mapbox.com/maps/
    15-30 минут на все и карта готова.
    Ответ написан
    2 комментария
  • Как применять знания javascript?

    EreminD
    @EreminD
    Кое-что умею
    Общая идея всегда в том, что нужно делать какой-то проект
    Я советую такой путь:
    1. Регистрируешься на www.freecodecamp.com/
    2. Проходишь простые задачи - изучаешь приемы JS (не основы, а приемы)
    3. Там же дальше делаешь проекты по заданию. Есть для фронтэнда. Например,
      сделать с нуля такую штуку
    4. Потом задачи для бэкэнда на JS. например, онлайн-голосовалку и еще куча проектов
    Ответ написан
    7 комментариев
  • Как углубленно изучить Javascript?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Изучайте не конкретный язык, а программирование в общем, как часть CS, тогда не будете париться о том что через пару недель все забылось. Вот уверен что вы читали учебник, но вообще практически не понимали что для чего и почему. А также уделяйте практике не меньше времени чем теории. Простое перечитывание одного и того же
    и прохождение очередного курса вас ни к чему не приведет, если не будете практиковаться.
    Ответ написан
    Комментировать
  • Как вы работате с гитом?

    На самом деле, вы задали достаточно религиозный вопрос.
    Я для себя (и команды)
    1. Делаю коммит, когда хочу зафиксировать какое-то состояние кода, причём, иногда, это даже состояние типа "WTF".
    2. Намного более важно не когда вы делаете коммит, а как вы ветвитесть.
    В частности, рекомендуемая практика:
    2.0. Коммиты в процессе разработки никогда не делаются в master (хотя бы в develop, чаще нужно больше веток)
    2.1. в master-е каждый коммит = релиз (условно стабильный), появляется merge-м из веток разработки.
    2.2. На каждую "большую" (это субъективно) фичу делаете новую ветку.
    2.3. Таки интенсивная разработка первой (или 0-й) версии и дальнейшей разработки, после первого релиза, скорее всего, будет очень сильно отличаться.
    Тут некий шаблон (к сожалению, не "однозначно верно")
    https://habrahabr.ru/post/106912/
    Ответ написан
    Комментировать
  • Как вы работате с гитом?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Я почти всегда при работе с Git пользуюсь IDE, соответственно все действия с git (почти все, иногда лезу в консоль) делаю через неё.
    Обычно коммиты делаются после завершения некоторого логического куска работы (новая фича, исправление бага, добавленный тест или группа тестов, некоторые достаточно существенные промежуточные состояния и так далее), смотрите на GitHub примеры как это делают другие.

    То есть кратко:
    1) нет
    2) нет
    3) да
    Ответ написан
    3 комментария
  • Как правильно составлять ajax запрос?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    В любом случае на сервере должен быть обработчик вашей формы. Чаще всего это php, ввиду его широкой распространенности.

    Валидацию формы можно (и нужно!) делать на клиенте. И лишь дублировать ее на сервере. Для валидации очень хорош плагин www.formvalidator.net
    Подключаете и настраиваете плагин. Он не даст вам отправить форму с ошибками. И когда все поля заполнены правильно вы уже можете аяксом отправить свою форму на сервер.
    Так можно отправить любую форму, кроме enctype=multipart/formdata
    $('[data-toggle="ajax"]').on('submit', function (e) {
            e.preventDefault();
            var $form    = $(this);
            var data     = $form.serialize();
            var action   = $form.attr('action');
            var method   = $form.attr('method');
    
            $.ajax({
                url     : action,
                type    : method,
                data    : data,
                dataType: 'html' // или 'json' смотря какой ответ будете возвращать
            }).then(function (data) {
                console.log('Форма отправлена', data);
            }).fail(function () {
                console.log('Ошибка отправки');
            });
        });


    Поясняю.
    К формам, которые желаем отправлять аяксом, мы приписываем атрибут data-toggle="ajax".
    Обработчик, куда будет отправляться форма, мы берем из атрибута action="" формы. Метод отправки (post/get) также берем из формы. Это дает определенную гибкость в использовании кода, когда значения не захардкоржены в скрипте. Если форма отправилась, то в методе then мы получим то, что вернет нам обработчик на сервере. Для большей гибкости предпочтительно использовать dataType: 'json'. Тогда вы сможете отправить с сервера объект с подробным статусом ответа, например результаты валидации каждого поля.
    Если форма не отправилась сработает метод fail() Например, сервер вернул ответ не равный 200 или данные не соответствующие запрошенному типу (вы просили json, а пришел html).

    C отправкой файлов чуть сложнее, но вы сначала с этим разберитесь.
    Ответ написан
    1 комментарий
  • Как задать выполнение анимации последовательно?

    @Nwton
    dom.classList.add('anim-class-name');
    dom.addEventListener('animationend', isAnimEnd);
    
    function isAnimEnd(){
    	dom.removeEventListener('animationend', isAnimEnd);
    	dom.classList.remove('anim-class-name');
    	//запускаем другую анимацию
    }

    p.s. вместо isAnimEnd может быть любая фк., но только не анонимная
    Ответ написан
    Комментировать
  • Как повысить уровень программирования?

    tiabc
    @tiabc
    Бизнес-партнер и консультант по технологиям
    Хорошие разработчики постоянно развиваются и никогда не стоят на месте. Любое развитие состоит в делании дел, в решении конкретных задач и в обратной связи, которую ты получаешь от других или в результате рефлексии.

    TL;DR: Читайте книжки, делайте дела, читайте чужой код.

    Что можно начать делать прямо сейчас, чтобы стать программистом лучше?

    1. Изучайте базу. Алгоритмы, сети, криптографию, архитектуру, ос, устройство браузеров, компиляторы и т.д. Изучение подобных вещей дает понимание какие задачи бывают в реальном мире и как "большие дядьки" решают возникающие проблемы. Это кладезь инсайтов.

    2. Устройтесь на фултайм-работу с сильной командой даже если джуниором. Я считаю, что есть только один способ расти как разработчик: работать фултайм над одним бизнес-продуктом. Такой подход учит решать проблемы масштабируемости, думать заранее, работать над процессом, которому вы следуете в разработке, решать задачи, возникающие с длительной эксплуатацией, решать проблемы с удобными окружениями и вообще учиться планировать свою работу в связи с нуждами бизнеса.

    3. Написание кода - не самая большая часть работы сеньор-девелоперов, я бы сказал. Но когда речь заходит о самом коде, нужно понимать что ты пишешь и зачем. Есть классические книжки, которые можно найти, например, в матрице компетентности программиста, есть современные, но полезные типа The Art of Readable Code, которую я очень рекомендую. Нужно читать книжки. На собеседовании я всегда спрашиваю какие книжки читал или читает соискатель и если ответ отрицательный, то это большой минус.

    4. Участвуйте в опенсорс. Там вам всегда приходится сталкиваться с образом мысли самых разных людей и кодом, который они пишут. Это учит вас читать чужой код, находить в нем ошибки и критически и аргументированно к нему относиться, предлагая свои решения. Опенсорс-разработка, так же как и книжки, дает вам тот чужой опыт, который бы вы никогда сами не получили от людей, которые часто умнее или опытнее вас в чем-то. В опенсорсе, кстати, в отличие от бизнесовой разработки, есть шанс в удовольствие писать очень качественный код, в котором в бизнесе далеко не всегда есть необходимость.

    5. Наберитесь терпения. Это не случится за один день. Думайте над именованием, разделяйте обязанности, изучайте алгоритмы и экосистему, оптимизируйте ваше рабочее место, изучайте новые технологии, читайте статьи и в течение ближайших лет регулярных усилий вы обретете новый способ мышления и будете разрабатывать поддерживаемое и надежное ПО. Легкого пути, к сожалению, нет.
    Ответ написан
    2 комментария
  • Сортировка данных в react + redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Можно нормализовать данные. По этому поводу, я думаю вам будет крайне полезно посмотреть второй курс[EN] от создателя redux.

    p.s. урок про нормализацию, где рассказывается, как можно решить вашу проблему, но мне кажется, чтобы понять, потребуется посмотреть весь курс.

    p.p.s. полезные ссылки:
    1) https://rajdee.gitbooks.io/redux-in-russian/conten... (может переведут, когда-нибудь)
    2) https://habrahabr.ru/company/hh/blog/310524/ (RU)
    Ответ написан
    1 комментарий
  • Где найти интерактивное изучение js?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Посмотрите наши курсы https://hexlet.io На сайте много практики и большое комьюнити
    Ответ написан
    Комментировать
  • Как новичку влиться в мир современного фронт-енда?

    @rinatoptimus
    Соглашусь, что надо учить нативный JS. После этого фреймворки будете усваивать проще. При появлении любой новинки будете пробегаться по документации и уже иметь представление как все это реализовано и где лучше всего это применить.
    Ответ написан
    Комментировать
  • Как новичку влиться в мир современного фронт-енда?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    с мнениями, что знания ангуляр1 "вредны".


    тут проблема в том, что если мы берем среднестатистического ангулярщика, он пишет в стиле angular1.0, во всю использует скоупы в контроллере и т.д. Причина этому - отсутствие обновления документации к ангуляру. Ну то есть в пул реквестах на гитхабе валяются исправленные доки но они почему-то до сих пор там висят не принятыми по каким-то странным причинам.

    Например вот то как я готовлю ангуляр, а вот как другие. Последнее считается вредным. Скажем если вы используете $scope в ангуляр приложении версии 1.5+ то вы уже готовите ангуляр не правильно. Если у вас бизнес логика вытекает в компоненты - тоже что-то странное и тд. Но последнее уже никак к ангуляру не привязано.

    Стоит ли тратить время дальше на jQuery?

    Учите javascript. и так и так понадобится. Причем серьезно учите. И не только основы, надо еще общие вещи, не привязанные к js знать. Типа ооп, функциональное программирование, принципы solid, grasp, dry и другие аббривиатуры. Короче именно серьезно так подойти к этим вопросам. Паралельно разобраться с HTTP, уметь не только пользоваться API но и проектировать их и т.д. Короче это огромный пласт знаний который формируется не один год.

    Стоит ли тратить время сейчас на Backbone?

    Нет, не стоит. Backbone это низкоуровневая библиотека для тех кто знает как все делать. Человеку который не отличает MVC от MVVM оно только навредит (у меня есть парочка проектов доставшихся от других разработчиков которые демонстрируют проблему).

    На сколько экосистема ReactJS стремительно изменяющаяся по сравнению с angular1-> angular2 ?


    С учетом того что с моммента выхода angular 1.x до момента выхода angular2 (а он еще в бэте) прошло 4 года... мегабыстро.

    Всё упирается в то, что времени/сил после работы на учебу не много остается и не хочется тратить их на то, что в последствии окажется "вредным".


    Просто учить нужно не фреймворк, а принципы на которых все это основано. Понимать идею. И тогда ничего не будет вредно. Большинство же разработчиков втупую копипастит код и радуется этому.
    Ответ написан
    1 комментарий