• Принципы SOLID, о которых должен знать каждый разработчик

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



    Материал, перевод которого мы сегодня публикуем, посвящён основам SOLID и предназначен для начинающих разработчиков.
    Читать дальше →
  • Что нужно запомнить программисту, переходящему на Python

    • Tutorial

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


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


    • Билл Любанович «Простой Python. Современный стиль программирования»
    • Дэн Бейдер «Чистый Python. Тонкости программирования для профи»
    • Бретт Слаткин «Секреты Python: 59 рекомендаций по написанию эффективного кода»

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


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

    Читать дальше →
  • 9 учебных проектов для бэкендера

    image
    источник КДПВ

    Ранее на Хабре публиковался перевод статьи с Medium'а с подборкой из 8 проектов, которые можно реализовать, изучая новый язык или фреймворк. На мой взгляд, подборка очень неплохая. Проблема в том, что рассчитана она только на фронтендеров и мобильных разработчиков. А я из другого лагеря.

    Покопавшись в своих заметках, я собрал для вас подборку идей на тот случай, если чешутся руки сделать что-нибудь своё. Все эти «проекты» уже существуют в том или ином виде, но, иногда интересно написать свой бэкенд-велосипед и проехать на нем по граблям.
    Читать дальше →
  • Подходы к контролю доступа: RBAC vs. ABAC

      В этой теме хотелось бы познакомить читателей с относительно новым подходом к контролю доступа под названием Attribute-based access control. Знакомство будет происходить на примере сравнения с популярным нынче Role-based access control.
      Читать дальше →
    • 10 отличных книг на английском для новичков

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

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

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

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

        Забирайте и читайте!
        Читать дальше →
      • 10 библиотек, о которых должен знать каждый Android-разработчик

        • Перевод

        10 библиотек, о которых должен знать каждый Android-разработчик


        В 2015 году мы уже публиковали статью о пяти лучших библиотеках, которые мы использовали в то время. Однако платформа Android значительно выросла с тех пор. Как вы знаете, в такой быстро развивающейся области, как разработка программного обеспечения, всё меняется и развивается с молниеносной скоростью. Именно поэтому мы решили, что пришло время обновить список наиболее эффективных Android-библиотек.

        Читать дальше →
        • +12
        • 4,3k
        • 8
      • Настройка Jira под ваши нужды. Cовершенный флоу и идеальный тикет


          Если вы работаете в IT-компании, то, скорее всего, ваши процессы построены вокруг известного продукта Atlassian — Jira. На рынке есть множество таск-трекеров для решения тех же задач, в том числе open-source-решения (Trac, Redmine, Bugzilla), но, пожалуй, именно Jira имеет сегодня самое широкое распространение.

          Меня зовут Дмитрий Семенихин, я тимлид в компании Badoo. В небольшом цикле статей я расскажу, как именно мы используем Jira, как настраивали её под свои процессы, что хорошего «прикрутили» сверху и как тем самым превратили issue-трекер в единый центр коммуникаций по задаче и упростили себе жизнь. В этой статье вы увидите наш флоу изнутри, узнаете, как можно «докрутить» свою Jira, и прочтёте о дополнительных возможностях инструмента, о которых могли не знать.

          Статья ориентирована прежде всего на тех, кто уже использует Jira, но, возможно, испытывает сложности с интеграцией её стандартных возможностей в существующие в компании процессы. Также статья может быть полезна компаниям, которые используют другие таск-трекеры, но столкнулись с некоторыми ограничениями и подумывают о смене решения. Статья построена не по принципу «проблема — решение», в ней я описываю сложившийся инструментарий и фичи, построенные нами вокруг Jira, а также технологии, которые мы использовали для их реализации.
          Читать дальше →
        • Как украсть деньги с бесконтактной карты и Apple Pay

            Как украсть деньги с бесконтактной карты из кармана? Насколько безопасен PayPass и Apple Pay?

            В статье разбираются популярные мифы и сценарии мошенничества с бесконтактными системами оплаты на примере настоящего POS-терминала, карт PayPass/payWave и телефонов с функцией Google Pay/Apple Pay.

            Рассматриваемые темы:

            • Можно ли НА САМОМ ДЕЛЕ украсть деньги, прислонившись POS-терминалом к карману? — мы попытаемся полностью воспроизвести этот сценарий мошенничества от начала до конца, с использованием настоящего POS-терминала и платежных карт в реальных условиях.
            • В чем разница между физическими и виртуальными картами Apple Pay? — как происходит связывание физической карты и токена Apple Pay, и почему Apple Pay во много раз безопаснее обычной карты.
            • Используем аппаратный NFC-сниффер (ISO 14443A) — воспользуемся устройством HydraNFC для перехвата данных между POS-терминалом и картой. Рассмотрим, какие конфиденциальные данные можно извлечь из перехваченного трафика.
            • Разбираем протокол EMV — какими данными обменивается карта с POS-терминалом, используемый формат запросов, механизмы защиты от мошенничества и replay-атак.
            • Исследуем операции без карты (CNP, MO/TO) — в каких случаях на самом деле(!) можно украсть деньги с карты, имея только реквизиты, считанные бесконтактно, а в каких нельзя.

            Внимание!

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

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

              Недавно читал один малоизвестный сайт и возникло два вопроса – что еще читать каждый день, и что из этого обновляется.

              С первый вопросом я справился легко – выбор русских (точнее, русскоязычных) ресурсов «про ИТ» не так чтобы широк. Есть ixbt, есть зеленая конфа про ИТ (есть еще одна другая зеленая конфа), есть overclockers и – и наверное все из крупных(1).

              Есть далеко пошедший LinkMeUp — там кстати завтра покажут широко известно в узких кругах товарища Олдманна!

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

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

              TL/DR Бложики на русском и не только — чего осталось в рунете из актуального по ИТ
              Читать дальше →
            • Как расширять Kubernetes

                Сегодня разговор пойдет о DevOps, а точнее — в основном об Ops. Говорят, что существует очень мало людей, которые довольны уровнем автоматизации своего operations. Но, кажется, ситуация исправима. В этой статье Николай Рыжиков расскажет о своем опыте расширения Kubernetes.



                Материал подготовлен на основе выступления Николая на осенней конференции DevOops 2017. Под катом — видео и текстовая расшифровка доклада.
                Читать дальше →
                • +21
                • 2,7k
                • 6
              • Модернизация IDA Pro. Учимся писать загрузчики на Python

                • Tutorial


                Привет всем,


                цикл статей по написанию разных полезных штук для IDA Pro продолжается. В прошлый раз мы исправляли процессорный модуль, а сегодня речь пойдёт о написании модуля-загрузчика (лоадера) для одной винтажной операционной системы, а именно — для AmigaOS. Писать будем на Python. Также я постараюсь раскрыть некоторые тонкости при работе с релоками (они же relocations), которые встречаются во многих исполняемых файлах (PE, ELF, MS-DOS и т.п.).

                Читать дальше →
                • +23
                • 3,7k
                • 3
              • Борьба за ресурсы, часть 2: Играемся с настройками Cgroups

                  Мы начали изучать Control Groups (Cgroups) в Red Hat Enterprise Linux 7 – механизм уровня ядра, позволяющий управлять использованием системных ресурсов, кратко рассмотрели теоретические основы и теперь переходим к практике управления ресурсами CPU, памяти и ввода-вывода.


                  Однако, прежде чем что-то менять, всегда полезно узнать, как все устроено сейчас.
                  Читать дальше: Играемся с настройками Cgroups
                • Погружение в AD: разбираем продвинутые атаки на Microsoft Active Directory и способы их детекта



                    Изображение: Pexels

                    За последние четыре года ни один Black Hat или DEF CON не обошелся без докладов на тему атак на Microsoft Active Directory. Участники рассказывают о новых векторах и своих изобретениях, но не забывают и о советах, как можно их обнаружить и предотвратить. В этой статье мы рассмотрим популярные способы атак на AD и приведем рекомендации, которые помогут от них защититься.
                    Читать дальше →
                    • +22
                    • 6,4k
                    • 4
                  • Книга «Kali Linux от разработчиков»

                      image Привет, Хаброжители! Авторы шаг за шагом познакомят вас с основами и возможностями Kali Linux. В книге предложен краткий курс работы с командной строкой Linux и ее концепциями, описаны типичные сценарии установки Kali Linux. Прочитав эту книгу, вы научитесь конфигурировать, отлаживать и защищать Kali Linux, а также работать с мощным менеджером пакетов дистрибутива Debian. Научитесь правильно устанавливать Kali Linux в любых окружениях, в том числе в крупных корпоративных сетях. Наконец, вам предстоит познакомиться и со сложными темами: компиляцией ядра, созданием собственных образов ISO, промышленным шифрованием и профессиональной защитой конфиденциальной информации.
                      Читать дальше →
                      • +10
                      • 10,8k
                      • 8
                    • Слишком много поваров, или взлом Интернета с помощью TR-069

                      • Перевод
                      Шахар Тал: проведём быстрое голосование – кто из вас видел сериал «Слишком много поваров?». Достаточно хороший процентаж для такой аудитории. Итак, начнём.



                      На экране демонстрируется заставка к фильму, затем появляются портреты докладчиков.



                      Далее в титрах указаны:

                      Дени ДеВито – в роли доступного тостера IPv4, Арнольд Шварценеггер – в роли роутера TP- Link TD-W8961NDи другие…


                      Итак, тем из вас, кто не видел фильм «Слишком много поваров», который демонстрировался несколько месяцев назад, советуем его посмотреть, нам он очень понравился. Если вы его смотрели, то смогли оценить наши «весёлые картинки», которые мы использовали для презентации.

                      Итак, мы являемся исследователями вредоносного ПО и уязвимостей и работаем в компании – разработчика программ в сфере IT-безопасности CheckPoint, расположенной в Тель-Авиве. Слоган нашей компании – «Мы защищаем Интернет». Наша задача состоит в том, чтобы найти уязвимость оборудования, рассказать об этом его производителю и поделиться информацией с обществом.

                      Сегодня мы поговорим о следующем:

                      • проведём быстрый обзор спецификации протокола CWMP TR-069, своеобразную выжимку из нашего выступления на конференции DEFCON;
                      • о мотивации проведения нашего исследования;
                      • о последней редакции TR-069 от 2014 года, которая предоставит вам интересную информацию о наших исследованиях и его технических деталях;
                      • собственно о наших исследованиях;
                      • о массовых пользователях;
                      • о пессимистическом взгляде на вещи.
                      Читать дальше →
                      • +17
                      • 10,6k
                      • 9
                    • 10 самых распространенных ошибок безопасности в Python и как их избежать

                      • Перевод
                      Всем привет!

                      Наша очередная группа по Python успешно запустилась в понедельник, но у нас остался ещё один материальчик, который мы не успели разместить до старта. Исправляем нашу оплошность и надеемся, что он вам понравится.

                      Поехали!

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

                      Читать дальше →
                      • +29
                      • 11,6k
                      • 6
                    • Имитация естественного движения: Steering Behaviors

                      • Перевод
                      image

                      Steering behaviors помогают автономным персонажам реалистично двигаться благодаря применению простых сил, сочетание которых создаёт естественно выглядящее и импровизированное движение по окружению. В этом туториале я расскажу об основах теории steering behaviors, а также об их реализации.

                      Идеи, на которых построены такие поведения, предложены Крейгом Рейндольдсом; они не основаны на сложных стратегиях с использованием планирования пути или глобальных вычислений, а применяют локальную информацию, например, силы соседних объектов. Благодаря этому они просты в понимании и реализации, но в то же время способны создавать очень сложные паттерны движения.
                      Читать дальше →
                      • +39
                      • 7,8k
                      • 7
                    • Правостороннее присваивание и другие необычные приёмы программирования в C#

                        В этой статье будут рассмотрены с нового ракурса такие привычные и фундаментальные вещи, как присваивание и передача параметров в методы.

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

                        Будет много нового и интересного, возможно, даже полезного. А после прочтения каждый сам сможет решить, стоит ли ему применять описанные техники в дальнейшей повседневной практике.

                        За дело!

                        image
                        Читать дальше →
                      • Авторизация пользователя на вашем сайте через Telegram для Django

                        • Tutorial

                        Привет! 6 февраля Telegram ввел возможность добавлять на свой сайт виджет для авторизации пользователя через его аккаунт в Telegram. Виджеты по виду реализации на сервере делятся на два вида — обработать данные пользователя «здесь и сейчас» в JavaScript или же перенаправить данные в параметрах URL на указанный адрес. Также саму кнопку можно настроить внешне: изменять размер, закругление углов, отключать и включать фотографию.

                        Материал — руководство по настройке авторизации пользователя через Telegram-аккаунт на вашем сайте с помощью пакета django-telegram-login.
                        Читать дальше →
                      • Расширения для Google Chrome. Часть первая. Getting started

                          Добрый день, Хабр.

                          Я хочу написать цикл статей о создании расширений для Google Chrome. К этому меня побуждает, во-первых, практическая польза самого процесса разработки и последующего использования: вы сами определяете, какие ещё задачи хотите решить не выходя из браузера и, во-вторых, отсутствие каких-либо внятных гайдов, туториалов и справочников на русском языке, за исключением, пожалуй, этой и вот этой статей на Хабре. Основная цель цикла — систематизировать разрозненную информацию и облегчить поиск потенциальным разработчикам, благо индексируется Хабр хорошо :)

                          В первой (этой, то бишь) статье, на примере простейшего расширения, будут рассмотрены все основные моменты, связанные с разработкой, отладкой и использованием расширения, конфигурационный файл manifest.json и начала chrome.* API. Первая же статья, думаю, будет не очень полезна опытным разработчикам (это дисклеймер).
                          Читать дальше →