• «Сгоревшие» сотрудники: есть ли выход?

      Ты работаешь в хорошей компании. Вокруг тебя крутые профессионалы, получаешь достойную зарплату, каждый день делаешь важные и нужные вещи. Илон Маск запускает спутники, Сергей Семёнович улучшает и без того лучший город Земли. Погода отличная, солнце светит, деревья цветут — живи да радуйся!

      Но в твоём коллективе есть Грустный Игнат. Игнат всегда мрачный, циничный и уставший. Он отличный специалист, давно работает в компании и знает, как всё устроено. Игнату все хотят помочь. Особенно ты, ведь ты его менеджер. Но, поговорив с Игнатом, ты и сам начинаешь чувствовать, как много вокруг несправедливости. И тоже начинаешь грустить. Но особенно страшно, если грустный Игнат — это ты.

      Что же делать? Как работать с Игнатом? Добро пожаловать под кат!


      Читать дальше →
    • HTTP Request smuggling — новые подходы

        7 октября 2019 года директор отдела исследований PortSwigger (производителя BurpSuite) опубликовал исследование о новых подходах к HTTP Request smuggling. С их помощью он заработал на bugbounty около $70000. В этой заметке мы коротко выясним суть атаки, инструментарий, а также методики исследования веб серверов, подверженных этой уязвимости.

        Читать дальше →
        • +16
        • 5,1k
        • 1
      • Написание змейки для Android на Kivy, Python

        • Перевод
        • Tutorial
        Привет!

        Много людей хотели бы начать программировать на андроид, но Android Studio и Java их отпугивают. Почему? Потому, что это в некотором смысле из пушки по воробьям. «Я лишь хочу сделать змейку, и все!»



        Начнем! (бонус в конце)
        Читать дальше →
      • Когда 'a' не равно 'а'. По следам одного взлома

          Пренеприятнейшая история случилась с одним моим знакомым. Но насколько она оказалась неприятной для Михаила, настолько же занимательной для меня.

          Надо сказать, что приятель мой вполне себе UNIX-пользователь: может сам поставить систему, установить mysql, php и сделать простейшие настройки nginx.
          И есть у него десяток-полтора сайтов посвященных строительным инструментам.

          Один из таких сайтов, посвященный бензопилам, плотненько сидит в ТОПe поисковиков. Сайт этот — некоммерческий обзорник, но кому-то поперек горла и повадились его атаковать. То DDoS, то брутфорс, то комменты напишут непотребные и шлют абузы на хостинг и в РКН.
          Неожиданно всё стихло и это затишье оказалось не к добру, а сайт начал постепенно покидать верхние строчки выдачи.

          image

          То была присказка, дальше сама админская байка.

          Время близилось ко сну когда раздался звонок телефона: «Сань, ты не глянешь мой сервер? Мне кажется меня хакнули, доказать не могу, но ощущение не покидает уже третью неделю. Может мне просто пора лечиться от паранойи?»
          Читать дальше →
        • AirTest IDE и Image Recognition — автоматизация тестирования мобильных игр на основе распознавания изображений

          • Tutorial

          В предыдущей статье мы познакомились с AirTest IDE, но, на всякий случай, давайте повторим: AirTest IDE разработан компанией NetEase и предназначен для "hard-to-automate" приложений, таких как, например, игр. Собственно на них и делается основной упор разработчиками, хотя это не мешает использовать AirTest и для любых других приложений.


          Данная работа является второй в цикле, посвящённому AirTest IDE. Первую, обзорную, статью про AirTest IDE вы можете найти здесь, а третью и последнюю, которая посвящена фреймворку UI автоматизации Poco — по данной ссылке.


          Сегодня же я расскажу вам об одном из 2х основных фреймворков — AirTest. AirTest — это кросс-платформенный фреймворк для автоматизации UI, основанный на принципах распознавания изображений (Image Recognition), который, как заявляют разработчики, подходит для игр и приложений. AirTest Project на GitHub содержит 4 проекта: Airtest, Poco, iOS-Tangent, multi-device-runner.


          А теперь давайте перейдём к самому интересному!


          image

          Читать дальше →
        • Линейная алгебра для разработчиков игр

          • Перевод
          • Tutorial
          Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
          Читать дальше →
        • Чем искать уязвимости веб-приложений: сравниваем восемь популярных сканеров

            Сканеры веб-приложений — довольно популярная сегодня категория софта. Есть платные сканеры, есть бесплатные. У каждого из них свой набор параметров и уязвимостей, возможных для обнаружения. Некоторые ограничиваются только теми, что публикуются в OWASP Top Ten (Open Web Application Security Project), некоторые идут в своем black-box тестировании гораздо дальше.



            В этом посте мы собрали восемь популярных сканеров, рассмотрели их подробнее и попробовали в деле. В качестве тренировочных мишеней выбрали независимые точки на двух платформах (.NET и php): premium.pgabank.com и php.testsparker.com.
            Читать дальше →
          • Возможно, вам не нужен Kubernetes

            • Перевод

            Девушка на скутере. Иллюстрация freepik, логотип Nomad от HashiCorp

            Kubernetes — это 300-килограммовая горилла для оркестровки контейнеров. Она работает в некоторых самых крупных контейнерных системах в мире, но дорого обходится.

            Особенно дорого для небольших команд, которым придётся потратить много времени на поддержку и крутую кривую обучения. Для нашей команды из четырёх человек это слишком много накладных расходов. Поэтому мы стали искать альтернативы — и влюбились в Nomad.
            Читать дальше →
            • +48
            • 20,7k
            • 7
          • Бесшовная (почти) миграция между мажорными релизами PostgreSQL с помощью логической репликации

            • Tutorial
            У нас в True Engineering на одном проекте назрела необходимость в смене версии PostgreSQL с 9.6 на 11.1.

            Зачем? База данных на проекте уже объемом 1,5 Tb и растет. Перформанс – одно из основных требований к системе. А сама структура данных эволюционирует: добавляются новые колонки, меняются существующие. Новая версия Postgres научилась эффективно работать с добавлением новых колонок с дефолтным значением, так что не нужно городить кастомных костылей на уровне приложения. Ещё в новой версии добавили несколько новых способов партиционирования таблиц, что тоже крайне полезно в условиях большого объема данных.

            Итак, решено, мигрируем. Конечно, можно поднять параллельно со старой новую версию сервера PostgreSQL, остановить приложение, через dump/restore (или pg_upgrade) переместить базу и снова запустить приложение. Нам это решение не подошло из-за большого размера базы, к тому же, приложение работает в боевом режиме, и на даунтайм есть считанные минуты.

            Поэтому мы решили попробовать миграцию с помощью логической репликации в PostgreSQL с использованием стороннего плагина под названием pglogical.

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



            TL;DR

            • Всё получилось (не без костылей, о них и статья).
            • Мигрировать можно в рамках PostgreSQL версии от 9.4 до 11.x, с любой версии на любую, вниз или вверх.
            • Даунтайм равен времени, которое требуется вашему приложению, чтобы переподключиться к новому серверу БД (в нашем случае это был перезапуск всего приложения, но в дикой природе, очевидно, «возможны варианты»).
            Читать дальше →
          • Изучаем Adversarial Tactics, Techniques & Common Knowledge (ATT@CK). Enterprise Tactics. Часть 1

            Ссылки на все части:
            Часть 1. Получение первоначального доступа (Initial Access)
            Часть 2. Выполнение (Execution)
            Часть 3. Закрепление (Persistence)
            Часть 4. Повышение привилегий (Privilege Escalation)
            Часть 5. Обход защиты (Defense Evasion)
            Часть 6. Получение учетных данных (Credential Access)
            Часть 7. Обнаружение (Discovery)
            Часть 8. Боковое перемещение (Lateral Movement)
            Часть 9. Сбор данных (Collection)
            Часть 10 Эксфильтрация или утечка данных (Exfiltration)
            Часть 11. Командование и управление (Command and Control)

            Получение первоначального доступа


            Данной публикацией начинаю цикл постов, посвященных описанию основных техник, применяемых злоумышленниками на различных этапах осуществления хакерских атак.
            Излагаемый материал будет свободным пересказом содержания матриц Adversarial Tactics, Techniques & Common Knowledge (ATT@CK) от компании The Mitre:


            Читать дальше →
          • Как стать разработчиком игр, если ты риелтор

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

              Два года и несколько месяцев назад, я написал здесь свой первый и единственный пост, как, не имея никакого опыта разработки игр, я создал свое первое android-приложение. Пусть и потратил на это весь свой тогдашний отпуск. Хотя игрой это было и сложно назвать, хе-хе.

              image

              Вы тепло приняли этот пост и это дало мне хороший толчок в нужном направлении. За эти два года я попробовал и научился многому: работал с 3D моделями, знакомился с C++, рисовал текстуры, записывал звуки, писал тексты и диз-доки, но самое главное – я нашел для себя подходящую среду разработки, а именно — божественный Unreal Engine 4.

              Я не решался ничего писать до тех пор, пока не смогу сделать что-то, что сможет порадовать хотя бы меня. И, думаю, мне это удалось. Довольно приятно видеть тот большой и тернистый путь, который был пройден, чтобы, начав с картинки в начале статьи, дойти до того, что под катом ;)
              Читать дальше →
            • От сисадмина к человеку



                На DevOps есть по крайней мере два устоявшихся взгляда — со стороны системных администраторов и со стороны разработчиков. Первые обычно хвастаются тем, что используют Chef/Puppet/Ansible/Docker c 200X года, вторые считают, что DevOps либо изжил себя и ведет к NoOps, либо что «я завернул всё в контейнер, а дальше как пойдёт».

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

                Эта статья — про DevOps как систему. Как он помогает бизнесу, какие компетенции со стороны инженеров должны появиться для DevOps, какие бизнес-задачи можно решать DevOps-методом производства программного обеспечения, а также какие ошибки возможны на пути к DevOps-производству и как их избежать или купировать. Как, в конце концов, инженеру стать Человеком и быть в этом мире творцом, как для этого построить карьерный путь и как начать смотреть на технологии по-человечески.

                В основе материала — расшифровка доклада Александра osminog Титова с нашей октябрьской конференции DevOops 2017.

                Читать дальше →
              • 24-ядерный CPU, а я не могу набрать электронное письмо

                • Перевод
                Я не искал неприятностей. Не запускал процесс сборки Chrome тысячу раз за выходные, а только занимался самыми обычными задачами 21-го века — просто писал электронное письмо в 10:30 утра. И вдруг Gmail подвис. Я продолжал печатать несколько секунд, но на экране не появлялось никаких символов. Затем внезапно Gmail отвис — и я вернулся к своему очень важному письму. Но впоследствии всё повторилось, только на этот раз Gmail ещё дольше не отвечал запросы. Это странно

                Трудно устоять перед возможностью провести хорошее расследование, но в данном случае вызов особенно силён. Ведь я в Google работаю над улучшением производительности Chrome для Windows. Обнаружить причину зависания — моя работа. И после множества фальстартов и тяжёлых усилий мне всё-таки удалось выяснить, как Chrome, Gmail, Windows и наш IT-отдел вместе помешали мне набрать электронное письмо. По ходу дела нашёлся способ сэкономить значительное количество памяти для некоторых веб-страниц в Chrome.

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

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

                Для чего нужен бэкордер


                В популярных доменных зонах (.com, .net, .org) заняты самые короткие и звучные домены.
                Существует возможность не пользоваться свободными доменами второго сорта, а перехватить хороший. Часто освобождаются даже трехбуквенные домены, минимальная стоимость которых на вторичном рынке — 17800 $.
                Читать дальше →
              • DIY автономный дрон с управлением через интернет

                image

                Сначала я написал длинное предисловие откуда взялась такая задача, а потом оно мне показалось скучным и я его удалил.

                Итак, задача: создание автономного БПЛА для мониторинга состояния линий электропередач (ЛЭП).
                Читать дальше →
              • Рельсотрон на 27 килоджоулей

                  Самый мощный любительский рельсотрон


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

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

                  Рельсотрон — это две рельсы, снаряд и источник тока. Общая простота конструкции привлекает любителей. Некто Xtamared собрал свой носимый образец. Энергия выстрела составляет 1,8 килоджоулей энергии. (Это цифра энергии заряда в конденсаторах. Потери огромны, и сравнивать с энергией выстрела патрона АК-74 калибра 5,45×39 мм — около 1,3 кДж — не стоит.) Группа других умельцев собрала свой рельсотрон, и его мощность куда выше — в конденсаторах находится до 27 кДж энергии. Как показали тесты, выстрел из этого рельсотрона уже смертелен.
                  Impressive
                • Составляем DNS-запрос вручную

                  • Перевод
                  • Tutorial
                  Об авторе. Джеймс Рутли — бэкенд-разработчик в компании Monzo.

                  В этой статье мы изучим двочиный формат сообщений Domain Name Service (DNS) и напишем вручную одно сообщение. Это больше, чем вам нужно для использования DNS, но я подумал, что для развлечения и в образовательных целях интересно посмотреть, что находится под капотом.

                  Мы узнаем, как:

                  • Написать запросы DNS в двоичном формате
                  • Отправить сообщение в теле датаграммы UDP с помощью Python
                  • Прочитать ответ от DNS-сервера

                  Писать в двоичном формате кажется сложным, но в реальности я обнаружил, что это вполне доступно. Документация DNS хорошо написана и понятна, а писать мы будем маленькое сообщение — всего 29 байт.
                  Читать дальше →
                  • +21
                  • 25,2k
                  • 8
                • Современная Android разработка на Kotlin. Часть 1

                  • Перевод
                  Данная статья является перевом статьи от Mladen Rakonjac

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



                  1. Android Studio 3
                  2. Язык программирования Kotlin
                  3. Варианты сборки
                  4. ConstraintLayout
                  5. Библиотека привязки данных Data Binding
                  6. Архитектура MVVM + паттерн repository (с mapper'ами) + Android Manager Wrappers
                  7. RxJava2 и как это помогает нам в архитектуре
                  8. Dagger 2.11, что такое внедрение зависимости, почему вы должны использовать это.
                  9. Retrofit (Rx Java2)
                  10. Room (Rx Java2)

                  Каким будет наше приложение?


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

                  Я попытаюсь объяснить как можно больше строк кода. Вы всегда можете посмотреть код, который я опубликовал на GitHub.
                  Читать дальше →
                  • +6
                  • 43,5k
                  • 7
                • Программирование и обмен данными с «ARDUINO» по WI-FI посредством ESP8266 Часть Первая

                    Как и многие другие самоделкины, я регулярно использую микроконтроллеры AVR для всяких разных любительских поделок. А благодаря концепции «Arduino» эти поделки теперь приобретают еще и элегантный вид. Действительно, за какие-то 300-400 рублей мы получаем миниатюрную многослойную плату с маской, шелкографией и с полностью разведенной на ней периферией для микроконтроллера (причем в SMD исполнении!). Я уже не говорю о всевозможных подключаемых модулях этой же «Arduino» серии: датчиках, контролерах, дисплеях и целых наборов, так нужной нам дополнительной периферии. И опять же всё также недорогих и в прекрасном исполнении. Практически уже нет необходимости, что-то разводить и допаивать на «коленке».­­­­­­­­­


                    Но все эти разнообразные любительские поделки, требуют естественно, предварительного программирования. Да и в последующем при разных усовершенствованиях, постоянно приходится эти поделки перепрошивать. Понятное дело, что удобнее делать это дистанционно, чем постоянно таскать их к обычному программатору. Вообще, благодаря той же платформе «Arduino», вариантов и здесь много: Bluetooth, ZigBee, радиоканал с вашим личным протоколом, IR, и даже Wi-Fi. Все они позволяют наладить беспроводной контакт с вашим микроконтроллером. Но мы же остановимся на последнем варианте. Основных причин здесь четыре:

                    1: современно, интернет вещей же!

                    2: беспроводной роутер есть в каждой квартире, регистрируй в домашней сети свои устройства и вуаля!

                    3: ваши поделки осуществляют революционный скачок в своём развитии; мало того, что их можно программировать на расстоянии, они теперь ещё и сами могут общаться с окружающим их миром: электронные часы самостоятельно берут точное время с часовых NTP-серверов, исполнительные устройства управляются с другого конца города или страны, регистрирующие девайсы сохраняют накопленные данные в облако и т.д. и т.п.

                    4: есть замечательная серия микросхем ESP8266 на которой не очень легко всё это реализовать.
                    Читать дальше →