• Секреты JavaScript-кухни: специи

    • Перевод
    Взгляните на следующие фрагменты кода, решающие одну и ту же задачу, и подумайте о том, какой из них вам больше нравится.
    Вот первый: Вот второй:
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
     .filter(int => isEven(int))
     .filter(int => isBiggerThan(3, int))
     .map(int => int + 1)
     .map(int => toChar(int))
     .filter(char => !isVowel(char))
     .join('')
    // 'fhjl'
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
     .filter(isEven)
     .filter(isBiggerThan(3))
     .map(plus(1))
     .map(toChar)
     .filter(not(isVowel))
     .join('')
    // 'fhjl'
    «Готов поспорить, что второй вариант отличается гораздо лучшей читабельностью, чем первый», — говорит автор материала, перевод которого мы сегодня публикуем. По его словам — всё дело в аргументах методов filter() и map().



    Сегодня мы поговорим о том, как перерабатывать код, подобный первому примеру, так, чтобы он выглядел как код из второго. Автор статьи обещает, что после того, как вы поймёте, как это работает, вы будете относиться к своим программам по-новому и не сможете не обращать внимания на то, что раньше могло показаться вполне нормальным и не требующим улучшения.
    Читать дальше →
  • Практика применения прокси-объектов в JavaScript

    • Перевод
    Возможно, вы слышали о том, что в JavaScript ES6 появились новые объекты — так называемые прокси. Тем, кто знает о том, что такое прокси-объекты, и умеет с ними работать, они могут принести немалую пользу. Сегодня мы публикуем перевод материала, который направлен на то, чтобы объяснить всем желающим особенности работы с прокси-объектами JS на множестве примеров.

    image

    Также откройте в новой вкладке наш предыдущий пост: JavaScript-прокси: и красиво, и полезно
    Читать дальше →
  • Многозадачность или марихуана?

    • Перевод


    Взгляните на эту картинку. Персонаж справа — медведь. Так случилось, что он курит марихуану (не спрашивайте, где он её взял. Знать не хочу). Женщину слева я назвал Салли. За исключением того, что у неё пять рук, Салли совершенно обыкновенная, непримечательная деловая женщина. Салли, как и многие другие обыкновенные деловые женщины, ещё и завзятая многозадачница. На картинке она держит свой ноутбук, готовит какой-то десерт, да ещё и балансирует миской с какой-то обжигающе горячей похлёбкой, наверное, из морепродуктов. А теперь главный вопрос. Допустим, у Салли и медведя одинаковый уровень интеллекта (это очень умный медведь), тогда кто из них покажет лучший результат при тестировании когнитивной деятельности? Иными словами, если бы меня интересовала умственная деятельность, что для меня хуже: быть многозадачным или забивать косяк?
    Читать дальше →
  • 9 полезных приёмов для тех, кто программирует на JavaScript

    • Перевод
    Автор материала, перевод которого мы сегодня публикуем, рассказывает о девяти полезных приёмах работы, которые могут пригодиться JavaScript-программисту. Он говорит о том, что эти приёмы позволяют экономить время, и о том, что ими пользуются профессионалы.


    Читать дальше →
  • SSL. Безопасность передачи данных

      Как давно вы проверяли надежность своего SSL? Мало просто купить SSL сертификат и его установить, нужно его и настроить.

      Почему это важно. Внешний анализ безопасности (ручной или автоматический) обычно начинается с проверки SSL-конфигурации. SSL конфигурация обычно показывает общий уровень защищенности всей системы защиты данных. Поэтому продвинутые пользователи начинают слать запросы типа “как вы можете защитить мои персональные данные, если у вас ещё SSL v3 включён”. В рамках GDPR надежная настройка SSL относится к техническим мерам по защите персональных данных.

      Тестирование конфигурации SSL

      Проблемы связанные с версиями SSL протоколов:

      • SSL v2 небезопасен, устарел и не рекомендуется для использования. См. атаку DROWN по этому протоколу.
      • SSL v3 небезопасен и устаревший инструмент. См. атаку POODLE.
      • TLS v1.0 также является устаревшим протоколом, но на практике он все же оказывается необходим. Его основная слабость (BEAST) была смягчена в современных браузерах.
      • TLS v1.1 и TLS v1.2 оба не имеют известных проблем с безопасностью, но только v1.2 предоставляет современные криптографические алгоритмы.


      SSL 2.0, SSL 3.0 и TLS 1.0 настоятельно рекомендуется отключить, так как большинство стандартов безопасности их уже давно не поддерживают (например, PCI DSS 3.1).

      Рекомендуемые протоколы TLS v1.1 и TLS v1.2 с актуальными алгоритмами шифрование и снятия хэшей.
      Читать дальше →
      • +13
      • 8,2k
      • 1
    • Полезные фичи VPN

        Не хотелось писать статью про настройку впн, потому что их и без меня в интернете тысячи — выбирай на вкус и цвет.

        Просто хотел напомнить просто несколько простых вещей, которые вызывают много недоразумений и вопросов. Понимаю, что на статью не тянет, но очень хочется до вас достучаться, а других способов в рунете особо и нет.
        Читать дальше →
      • Программируй меньше, думай больше… инкрементально

        • Перевод
        К сожалению, примеры проектов, на которые разработчики потратили много времени, скажем более полугода, но так никогда и не выпустили в свет, нередки.

        Фагнер Брек считает, что такое происходит потому, что эти проекты не реализовывали принципы непрерывной интеграции. В своей заметке, перевод которой перед вами, он пишет, что в известном ему случае кое-что нужно делать по-другому с самого начала:

        • Интегрируйте ваши изменения кода в работу всех остальных как можно скорее, желательно по несколько раз в день.
        • Программируй меньше, думай больше.

        Но как это сделать? Это фундаментальный вопрос, с которым каждому приходится столкнуть в программном проекте: всё изменится.

        Как можно непрерывно интегрировать проект каждый день, если для его завершения требуются месяцы, а не дни?


        Читать дальше →
      • Для чего программисту Continuous Integration и с чего начинать

          Представьте что в Роскосмосе решили собрать новую ракету не имея при этом чертежей и четкого понимания как ракета должна быть устроена. Отдельный завод занимается корпусом ракеты, отдельный выпускает двигатели, еще один — сопла. Главный менеджер Роскосмоса сказал что он доверяет профессионалам, и мастерски сделегировал всю работу заводам.



          Через год все составные части доставляются в главный сборочный цех, и выясняется, что двигатель не входит в корпус, а сопла начинают плавиться даже при тестовых запусках двигателя.

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

          При разработке ПО мы не можем себе позволить долгий этап проектирования, т.к. за это время потеряется бизнес-ценность того что мы пытаемся разработать — нас тупо обойдут конкуренты.

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

          Как и в случае с ракетой, при попытке выпустить новый релиз приложения, разрабатываемого по частям несколькими командами, может выясниться что какие-то из модулей не совместимы.

          В 1991 году Гради Буч, видимо, устал от такого безобразия, и предложил делать сборку всего проекта каждый день, чтобы выяснять несовместимости не в день релиза, а пораньше — и назвал этот подход Continuous Integration.
          Читать дальше →
        • Как избежать проблем с производительностью при создании React-приложений


            О производительности react


            React не зря считается очень производительным фреймворком. Он позволяет создавать быстрые динамические страницы с большим количеством элементов.


            Но бывают ситуации, когда элементов на странице становится очень много и встроенной производительности react не хватает. Тогда приходится применять различные приемы для оптимизации.

            Читать дальше →
          • 20+ ресурсов, чтобы начать фрилансить

              Чувствуете, что готовы уйти с работы, самостоятельно контролировать свой день, биться за клиента и работать только над интересными задачами? Пришло время попробовать себя во фрилансе. Это совсем нелегко, а чаще труднее, чем офисная рутина. Чтобы не разочароваться в выборе формата работы, устройте себе тест-драйв — на праздниках или в выходные. Собрали площадки, где найдете задачи по душе.


              Читать дальше →
            • Частые трудности работы с React.js

              Привет, Хабр! Представляю вашему вниманию перевод статьи Samer Buna «React.js Frequently Faced Problems».
              Не паникуйте. Вы правы: существуют мириады веб-технологий, архитектур и фреймворков, и множество разрабатывается прямо сейчас. Помните: каждый, кто стал профессиональным веб-разработчиком начинал как и вы. Они изучали языки, библиотеки по одному, раз за разом, пока не прокачали свои навыки и механизмы работы

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

              На самом деле, если вы сконцентрируетесь на одной вещи, например на создании сайта на простейшем HTML/CSS/JavaScript без библиотек, а потом добавите фреймворк по типу React’а, ваш путь от новичка до профессионала пройдет гораздо удобнее и приятнее.
              И правда, новичкам бывает сложно разобраться с простыми вещами, на которые опытный разработчик даже не обращает внимание. Эта статья призвана разобрать популярные ошибки и затруднения, с которыми сталкиваются большинство изучающих React.
              Читать дальше →
            • Как правильно чистить лук, или Почему разработка ПО выходит из-под контроля

              • Перевод


              Вы придумали стартап и с самыми лучшими намерениями нанимаете разработчика для реализации своей идеи. Но идет неделя за неделей, а приложение по-прежнему нуждается в доработке. Как-то незаметно появляются новые функции, и масштаб задачи понемногу расширяется.

              Складывается ощущение, что проект зажил собственной жизнью и пытается сожрать вас.



              Как так случилось? Может, наняли плохого разработчика? Кто-то ошибся в планировании проекта? А вдруг сама идея проекта была ужасной?

              Возможно. Но часто проект бывает с самого начала обречен на провал из-за недопонимания одного важного момента.

              Мы предполагаем, что продукт определяется набором функций, записанных на листочке бумаги: иногда что-то добавляется, иногда убирается — но масштаб проекта всегда будто бы можно понять с одного взгляда.

              Это предположение — неверно.

              Проект — это не лист бумаги, не двумерный объект — у него есть глубина.

              Каждую функцию на поверхности можно раскрыть — и так слой за слоем. Будь у меня склонность к громким заголовкам, я бы сказал, что всякое приложение — это лук, и нужно уметь правильно его чистить. Не очень понятно? Тогда давайте я поясню, что имеется в виду, и расскажу, почему не получается раскрывать слои приложения без слёз.

              Переведено в Alconost
              Читать дальше →
            • Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

                Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

                Существует два распространенных типа подключения DPI: пассивный и активный.

                Пассивный DPI

                Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
                Читать дальше →
              • Где бесплатно пообщаться на английском с носителем

                • Tutorial

                Часто так бывает, что у нас нет проблем с грамматикой или лексикой, а говорить на английском пока не очень удается. Причина проста — нехватка разговорной практики.
                Всем тем, кто хочет получить побольше практики общения с носителями, предлагаем список сайтов, где это можно сделать абсолютно бесплатно.


                На случай, если не хочется читать всю статью, вот:

                howdoyou.do, lingoglobe, coffeestrap, wespeke, speaky, conversationexchange, easylanguageexchange, speaking24.com.

                А если хотите детальнее узнать, что полезного можно найти на этих сайтах, добро пожаловать в статью.
                Читать дальше →
              • Взламываем собеседования: по алгоритмам, по архитектуре, поведенческие и прочее

                • Перевод
                image

                Я только что закончил семь собеседований в компаниях Кремниевой долины. В конечном итоге я принял предложение разработки программного обеспечения в Facebook.

                Вот как я готовился к этим собеседованию и чему я научился на этом пути.

                Мой многолетний путь в Кремниевую долину


                Когда я изучал компьютерные науки в своем университете в Австралии, я всегда представлял свое будущее в качестве инженера-программиста в Кремниевой долине.

                Мне понравилась идея быть в центре всех инноваций в технической индустрии, а также ее промахов. Эта цель мотивировала меня. Это помогло мне сосредоточиться.

                Я оставил свое место в качестве ведущего инженера iOS в чудесной компании в Мельбурне и я вернулся обратно в мой родной город Перт, чтобы учиться. Тут я буду готовиться к переговорному процессу которое ждет меня в Кремниевой долине. Я знал, что это будет невероятно сложно и тяжело.

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

                Ради этой статьи я не буду вступать в эту дискуссию. Вместо этого я рассмотрю различные типы методов интервью с точки зрения кандидата. Я также сосредоточу внимание на том, что я узнал из этого процесса.
                Читать дальше →
              • 8 учебных проектов

                • Перевод
                «Мастер совершает больше ошибок, чем новичок — попыток»

                Предлагаем 8 вариантов проектов, которые можно сделать «по фану», дабы получить реальный опыт разработки.

                Проект 1. Клон Trello


                image


                Клон Trello от Indrek Lasn .

                Что вы освоите:

                • Организация маршрутов обработки запросов (Routing).
                • Drag and drop.
                • Как создавать новые объекты (доски, списки, карточки).
                • Обработка и проверка входных данных.
                • Со стороны клиента: как использовать локальное хранилище, как сохранять данные в локальном хранилище, как читать данные из локального хранилища.
                • Со стороны сервера: как использовать базы данных, как сохранять данных в базе, как читать данные из базы.

                Тут пример репозитория, сделанного на React+Redux.
                Читать дальше →
              • История переезда системного администратора в Германию. Часть первая: поиск работы и виза

                  Всем привет.

                  Я решил опубликовать историю своего переезда на работу в Германию, максимально подробно описав все стадии оного — от принятия решения начать поиск работы за рубежом до собственно переезда, поиска жилья и решения многочисленных вопросов на месте. Побудило меня к этому, во-первых, очень малое количество историй успешного поиска работы в Германии именно сисадмином (а в этой области своя специфика, отличная от программирования), а во-вторых — некоторая нестандартность моего случая. Обычно за границу уезжают либо в одиночку, либо с женой-детьми, я же уезжал вместе с сестрой, что добавило очень много нюансов к визовым вопросам.

                  Это будет длинная история в трех частях, где я постараюсь максимально осветить все грабли, по которым пришлось пройти.
                  Читать дальше →
                • Настройка системы WEB — тестирования на основе headless chromium-browser, chromedriver, nightwatch и node.js на Ubuntu

                    image

                    Предисловие


                    Привет, Хабр! Данная задача возникла у меня с проблемой, которая заключалась в создании робота для авторизации в Instagram, который бы делал за меня лайки. Всю задачу не напишу, напишу только часть реализации в виде настройки необходимого инструментария на удаленном сервере.

                    WEB — тестирование — это объемная и неоднозначная сфера, которая может заключаться в решении задач не только в плане тестирования WEB — приложений, но и, к примеру, в плане построения парсеров, роботов IoT и ботов работы с социальными сетями и все это используя только JavaScript!

                    Возможно, что вам не нравится словосочетание «тестирование», возможно, отчасти, из-за того, что это словосочетание заключает в себе более интересные вещи, которые, к примеру, позволят нам написать бота, способного авторизироваться в Instagram, Facebook и совершать там ряд действий от нашего лица и в одно и то же время нудно заниматься наблюдением, как выполняется наш фронтенд, но тестирование имеет смысл и уже стандартизировано сообществом W3C и продолжает развиваться.
                    Читать дальше →
                  • 27 бесплатных сервисов для создания визуального контента без дизайнера

                    • Перевод
                    Лера Матвиишина, маркетолог хостинговой компании HOSTiQ, специально для блога Нетологии адаптировала статью Andrew Tate c ресурса AdEspresso и выбрала из подборки 27 бесплатных инструментов, которые помогут создавать визуальный контент без помощи дизайнера.

                    К 2018 году 84% маркетинговых материалов будут визуальными. Благодаря визуальному контенту любая компания сможет интересно общаться с пользователями и отстроиться от конкурентов.
                    Читать дальше →
                    • +14
                    • 19,1k
                    • 6
                  • Как искать IT вакансии в ЕС

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

                      У меня была такая мысль — “Вот сейчас я сделаю так, как должно быть”. Так появился мой проект. Так появляются тысячи проектов, созданных программистами.

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

                      А главная задача — это сделать поиск работы простым и полезным занятием.
                      Читать дальше →