• DevOps в Сбербанк-Технологиях. Инструментальный стандарт

      В этой статье пойдет речь об организации инструментального стека DevOps на примере Сбербанк-Технологий и ППРБ. Статья предназначена для инженеров по автоматизации инфраструктуры, которым необходима объективная оценка структуры работ по внедрению DevOps — и для всех, кто хочет ознакомиться с их работой.

      Читать дальше →
    • Практическое руководство по анализу производительности приложений

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

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



        В основе статьи — выступление Саши на конференции DotNext 2017 Piter. Саша работает техническим директором израильской тренинговой и консалтинговой компании Sela и не понаслышке знает, как проводить анализ производительности. Как его лучше начинать, чем завершать, какие инструменты стоит использовать, а каких избегать, читайте под катом.
        Читать дальше →
      • Моноиды, полугруппы и все-все-все

        • Перевод

        Если ты на практике используешь ООП, то хорошо разбираешься в таких вещах, как «паттерны проектирования». А знаешь ли ты, что есть множество полезных паттернов, которые не укладываются в этот стандартный список? К сожалению, многие из них связаны с «функциональным программированием», которое, согласно легенде, сложное и заумное. Если десять раз сказать слово «моноид», можно вызвать Дьявола.


        Mark Seeman расскажет о функциональном программировании просто и быстро. Для этого он начал писать цикл статей, посвященных связи между паттернами проектирования и теорией категорий. Любой ООПшник, у которого есть 15 минут свободного времени, сможет заполучить в свои руки принципиально новый набор идей и инсайтов, касающихся не только функциональщины, но и правильного объектно-ориентированного дизайна. Решающим фактором является то, что все примеры — это реальный код на C#, F# и Haskell. Этот хабрапост — перевод самого начала цикла, первых трех статей, слитых воедино для удобства понимания.


        Кроме того, с Марком можно пообщаться вживую, посетив конференцию DotNext 2017 Moscow, которая состоится 12-13 ноября 2017 г. в Москве, в «Славянская Рэдиссон». Марк прочитает доклад на тему «From dependency injection to dependency rejection». Билеты можно взять здесь.

        Читать дальше →
      • Мультиплеер в быстрых играх (Часть III: появление врага)

        • Перевод


        1. Части I, II (синглплеер с авторитарным сервером)
        2. Часть III (Появление врага)
        3. Часть IV (Хэдшот!)

        Введение


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

        В этой статье мы рассмотрим последствия одновременного подключения нескольких игроков к одному серверу.
        Читать дальше →
      • Мультиплеер в быстрых играх (части I, II)



        1. Части I, II (синглплеер с авторитарным сервером)
        2. Часть III (Появление врага)
        3. Часть IV (Хэдшот!)


        Предлагаю вашему вниманию перевод статьи Fast-Paced Multiplayer (Part I): Introduction.

        Разработка игры — само по себе непростое занятие. Но мультиплеерные игры создают совершенно новые проблемы, требующие разрешения. Забавно, что у наших проблем всего две причины: человеческая натура и законы физики. Законы физики привнесут проблемы из области теории относительности, а человеческая натура не даст нам доверять сообщениям с клиента.
        Читать дальше →
      • О чем болит голова Android DevOps-инженера


          Так получилось, что инструменты DevOps обычно иллюстрируются на примере CI/CD какого-то масштабного веб-сервиса. Отчасти так получилось по историческим причинам, отчасти свою роль сыграли замечательные книги типа Google SRE Book.


          К черту, давайте посмотрим на что-нибудь действительно новое. На Mobius 2017 к нам приезжает Jing Li из Viacom, с докладом «Android meets Docker».


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

          Читать дальше →
        • Перформанс: что в имени тебе моём? — Алексей Шипилёв об оптимизации в крупных проектах

            Оптимизация производительности издавна не даёт покоя разработчикам, представляясь своеобразным «золотым ключиком» к интересным решениям и хорошему послужном списку. Большую обзорную экскурсию по ключевым вехам оптимизации больших проектов  – от общих принципов до ловушек и противоречий —  на прошедшем JPoint 2017 провёл Алексей Шипилёв, эксперт по производительности.



            Под катом — расшифровка его доклада.
            Читать дальше →
          • Библиотека быстрого поиска путей на графе

              Привет, Друзья!


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


              Пример использования на огромном графе:



              Поиграться с демо можно здесь


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


              Описание разных вариантов A* уже не раз встречалось на хабре. Мне очень понравилось вот это, потому повторяться в этой статье я не буду. Под катом расскажу подробнее почему библиотека работает быстро и о том, как было сделано демо.

              Читать дальше →
            • Запретный плод GOTO сладок!

                Доброго времени суток!

                Какое Ваше отношение к оператору goto в языках С/С++? Скорее всего, когда Вы учились программировать, Вы его использовали. Потом Вы узнали, что это плохо, и Вы о нем позабыли. Хотя иногда при сложной обработке ошибок… нет-нет, там try … throw … catch. Или же для выхода из вложенных циклов … не-ет, там флаги и куча сложностей. Или когда вложенные switch … нет-нет-нет, там те же флаги.
                И все-таки, иногда в ночной тиши Вы допускали в свое подсознание грешную мысль – «а почему бы не использовать вот тут goto? И программа вроде как стройней будет, и оптимально выходит. Да-а, было бы хорошо… Но нет – нельзя, забыли!».
                А почему так оно?
                Под катом – небольшое расследование и мое, основанное на многолетней практике и разных платформах, отношение к этому вопросу
                UPD: тут статья рассматривает С и С++, программирование для PC и слегка для микроконтроллеров. Конкретно о микроконтроллерах есть другая статья.
                Интересно? - тогда читаем!
              • «Паттерны» функционального программирования

                • Перевод
                • Tutorial

                Многие люди представляют функциональное программирование как нечто очень сложное и «наукоемкое», а представителей ФП-сообщества – эстетствующими философами, живущими в башне из слоновой кости.

                До недавнего времени такой взгляд на вещи действительно был недалек от истины: говорим ФП, подразумеваем Хаскель и теорию категорий. В последнее время ситуация изменилась и функциональная парадигма набирает обороты в web-разработке, не без помощи F#, Scala и React. Попробуем взглянуть на «паттерны» функционального программирования, полезные для решения повседневных задач с точки зрения ООП – парадигмы.

                ООП широко распространено в разработке прикладного ПО не одно десятилетие. Все мы знакомы с SOLID и GOF. Что будет их функциональным эквивалентом?.. Функции! Функциональное программирование просто «другое» и предлагает другие решения.


                Читать дальше →
              • Просто о Хиндли-Милнере

                • Перевод

                Введение


                Robert MilnerЕсли вы когда-нибудь интересовались не слишком популярными языками, то должно быть слышали о «Хиндли-Милнере». Этот алгоритм вывода типов используются в F# и Haskell и OCaml, как и в их предшественнике ML. Некоторые исследователи даже пытаются использовать ХМ для оптимизации динамических языков вроде Ruby, JavaScript и Clojure.

                И не смотря на его распространенность, до сих пор не было простого и понятного объяснения, что же это такое. Как же эта магия работает? Всегда ли выводимые типы будут верными? Или чем Хиндли-Милнер лучше, скажем, Java? И пока те, кто действительно знает что такое ХМ будут восстанавливаться от очередного умственного перенапряжения, мы попробуем разобраться в этом сами.
                Читать дальше →
              • Как мы проводим собеседования в Pivotal

                • Перевод
                От переводчика: За последние несколько дней тема использования головоломок и решения задач на доске при собеседовании программистов в очередной раз попала в тренд. Началось все с поста Егора Бугаенко Why I Don’t Talk to Google Recruiters, потом ссылка на запись появилась на Hacker News и Reddit, а затем получила реакцию в Твиттере. Твит David Heinemeir Hannson-а, создателя Ruby On Rails, запустил целую цепочку ответов в стиле “Hello, I’m … ” где люди высказывались, какого рода алгоритмические задачи они не в состоянии решить, несмотря на большой опыт и успешные проекты за плечами.



                Мне показалось, что будет интересно узнать и про альтернативный подход к собеседованию. Подход, который не включает решение сложных алгоритмических задач у доски или знание тонкостей языка программирования. Ниже — перевод статьи из официального блога компании Pivotal. Проектами компании являются такие программные продукты как: фреймворк для разработки приложений на Java Spring Framework, облачная PaaS платформа Pivotal Cloud Foundry, система обмена сообщениями RabbitMQ. А подразделение Pivotal Labs занимается внедрением гибких практик в разработке ПО.
                Читать дальше →
              • Готовимся к Java 9. Обзор самых интересных улучшений

                • Перевод


                В эту среду, 30 августа, в офисе компании Oracle состоялась встреча JUG.ru с Олегом Шелаевым, Developer Advocate в компании ZeroTurnaround, которая делает JRebel и XRebel. Тема встречи — инструменты создания многопоточных программ на Java (от конструирования велосипедов и запуска потоков ручками, до ForkJoinPool-ов, зеленых потоков и транзакционной памяти).


                Конечно, мы поинтересовались, какие фишки Java 9 считают в ZeroTurnaround наиболее полезными. В результате, разжились статьей, которую вы сейчас читаете. Оригинал статьи Олег опубликовал в блоге RebelLabs, там есть еще много интересного.

                Читать дальше →
              • JEP 181: контроль доступа ко вложенным классам

                • Перевод


                Продолжаем знакомиться с не слишком известными JEPами. На этот раз, у нас еще один подпроект из Valhalla, который так и называется — nestmates. Эта фича позволяет вложенным классам иметь неограниченный доступ друг к другу. Как именно — описано ниже. По сути, эта статья — формальный перевод JEP 181, ибо он весьма внятно описывает суть вопроса для новичка.

                Читать дальше →
              • Разработка на скорости 450 слов в минуту

                • Перевод
                «Чего-то здесь не хватает». Спорим, такая мысль первой придёт в вашу голову, если увидите моё рабочее место в офисе. Здесь нет монитора и мыши. Есть только парень, который молотит по клавиатуре, глядя словно в пустоту.



                Это всего лишь я, и мои коллеги гарантируют вам, что я обычно не опасен. Я программист в офисе компании Vincit в Тампере (Финляндия). И ещё я слепой. В этой статье хочу немного рассказать, как я работаю.
                Читать дальше →
              • Эволюция DevOps

                  Эта статья посвящена эволюции разработки и администрирования, и определению собственной позиции во всеобщей картине всего. Статья вдохновлена слайдами Marc Hornbeek, но имеет к ним опосредованное отношение. Для широкого круга хаброжителей (опсов, девов и девопсов).

                  Читать дальше →
                • Minimal Value Types

                  • Перевод

                  Эта статья — перевод спецификации, посвященной описанию минимальной реализации типов-значений в Java, которую с нетерпением ждут уже несколько лет. Добро пожаловать в MVT!


                  Замечания к переводу


                  Этот текст предназначен, в первую очередь, для разработчиков платформы Java. Мы даже немного поспорили с разработчиками: насколько может быть интересен такой текст широкой общественности? В нем слишком много посторонних, очень точных деталей про внутреннюю магию.

                  Читать дальше →
                  • +47
                  • 12,4k
                  • 6
                • Google: корпорация так добра, что решила «можем повторить» — с Quote Selected Text

                    Суть Quote Selected Text крайне проста: пользователь этой «фичи» из Google Mail Labs, при ответе на письмо, мог, выделив текст полученного письма, после нажатия на [Reply], оставить процитированным только выбранный фрагмент — вместо того, чтобы гонять туда-сюда нарастающий «снежный ком» (явление, некогда получившее название «оверквотинг»).

                    Теперь этой «фичи» нет — в Google решили, что она не нужна. Как ни странно — опять.

                    Пользователи, ясное дело, активно впечатлены добротой известной IT-компании. В шутку (в которой, как известно, не без доли шутки) остаётся только предположить, что Google решили отвлечь внимание от скандала с увольнением своего сотрудника, который привёл к тому, что кое-кто всерьёз ожидает ухода в отставку CEO Google.

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

                    Ваше отношение?
                  • [Археология Live] Стыдный разговор о синглтонах

                      Аудитория: Java Junior, любители холиворов, профессиональные написатели синглтонов



                      Любые замечания и предложения — очень приветствуются. Это мое первое видео, и не совсем понятно, нужен ли тут вообще такой контент. Считайте это закрытым альфа-тестом, только для посетителей хаба Java :)


                      Ниже дана полная текстовая расшифровка, кому не хочется тратить время на просмотр.

                      Читать дальше →
                    • Качество и тестирование: Руководство Gov.uk

                      • Перевод
                      Тестирование программ с помощью agile-методов.



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