• Из авиаконструктора в программисты за один год, или как стать джедаем

      Йода: Мастер Квай-Гон, есть что еще сказать тебе?
      Квай-Гон Джин: С вашего позволения, магистр. Я обнаружил точку сосредоточия Великой Силы.
      Йода: Сосредоточия, сказал ты?
      Мэйс Винду: Внутри живого существа?
      Квай-Гон Джин: В мальчике. Его клетки содержат высочайший уровень мидихлориан из всех, что я видел. Вероятно, он был зачат мидихлорианами.
      Мэйс Винду: Ты намекаешь на пророчество об Избранном, который привнесет баланс в Силу. Ты веришь, что это тот мальчик?
      Звёздные войны. Эпизод I. Скрытая угроза.

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

      Темная сторона Силы скрывает все. Предвидеть невозможно наше будущее...


      Защитил я свой красный диплом на тему беспилотной авиации и решил внедрить свой беспилотник, который я же сам и «надипломил». К тому времени я уже полтора года работал инженером-конструктором в отделе аэродинамики ОКБ (опытно-конструкторского бюро). Эх, знал бы я заранее, как быстро меня «приземлят» вместе со всеми моими амбициями и хотелками… В общем, осознал я суровую реальность и продолжил тихо работать в тряпочку.

      Романтика работы рядового инженера обычно заключается в расчетах, отчетах, перерасчетах, в вечном переделывании, вплоть до потери связи с реальностью. У нас даже у начальника была забавная печать «Все *ня. Переделать!» И все бы ничего, но меня стал дико угнетать тот факт, что вот ты колдуешь-колдуешь годами, а результата-то нема! Нет четкого группового мозгового взаимодействия — половина работы, которую мы делаем, оказывается ненужной. Отсюда и вечные переработки, и выходы в выходные. Ну и как-то нет той «советской», общей идеи и желания руководства обогнать «клятые штаты». А ведь главный мотиватор в опытном проектировании — общая идея.
      Читать дальше →
    • Исходный код OpenJDK содержит слишком много бранных слов

        Именно с таким заголовком был создан тикет в багтрекере исходников Java:

        https://bugs.openjdk.java.net/browse/JDK-8215217

        Автор считает, что наличие разнообразной бранной лексики в OpenJDK/JDK исходниках мешает профессиональному сообществу, если не в целом, то как минимум некоторым индивидуумам. Всего автор насчитал 12 экземпляров подобного рода «багов».

        Цитата:
        There are many instances of swear words inside OpenJDK jdk/jdk source, scattered all over the place.

        As OpenJDK is used in a professional context, it seems inappropriate to leave these 12 instances in there, so here's a changeset to remove them.

        Автор приложил changeset с заменой нецензурной брани на цензурную. Список привожу целиком:
        Читать дальше →
      • Радость Haxe. Роман с обделенным вниманием языком программирования

        Привет, Хабр! Представляю вашему вниманию перевод статьи The Joy of Haxe. FontStruct’s love affair with a neglected programming language.

        Логотип Haxe в редакторе шрифтов FontStruct

        Довольно грубая попытка воспроизвести логотип Haxe в редакторе шрифтов FontStruct

        Недавно мы открыли исходный код наиболее важной части нашего модуля для создания шрифтов. Это библиотека fonthx для создания TrueType-шрифтов, и написана она на Haxe.
        В данной статье практически нет кода. Если же вас интересует только код, то ознакомиться с ним можно на github, а его работа показана на примере простейшего редактора пиксельных шрифтов, построенного с использованием библиотеки fonthx.
        Читать дальше →
      • Разбираем лямбда-выражения в Java

        • Перевод

        image


        От переводчика: LambdaMetafactory, пожалуй, один из самых недооценённых механизмов Java 8. Мы открыли его для себя совсем недавно, но уже по достоинству оценили его возможности. В версии 7.0 фреймворка CUBA улучшена производительность за счет отказа от рефлективных вызовов в пользу генерации лямбда выражений. Одно из применений этого механизма в нашем фреймворке — привязка обработчиков событий приложения по аннотациям, часто встречающаяся задача, аналог EventListener из Spring. Мы считаем, что знание принципов работы LambdaFactory может быть полезно во многих Java приложениях, и спешим поделиться с вами этим переводом.


        В этой статье мы покажем несколько малоизвестных хитростей при работе с лямбда-выражениями в Java 8 и ограничения этих выражений. Целевая аудитория статьи — senior Java разработчики, исследователи и разработчики инструментария. Будет использоваться только публичный Java API без com.sun.* и других внутренних классов, поэтому код переносим между разными реализациями JVM.

        Читать дальше →
      • Devops, JUnit5 и тестирование микросервисов: субъективный взгляд на московский “Гейзенбаг”



          6-7 декабря в Москве состоялась пятая по счёту конференция «Гейзенбаг».
          Её слоган — «Тестирование. Не только для тестировщиков!», и за два года регулярного посещения «Гейзенбагов» мне (прежде Java-разработчику, ныне — техническому лиду в маленькой компании, никогда не работавшему в QA) удалось многому научиться в области тестирования и многое внедрить в нашей команде. Я хочу поделиться субъективным обзором запомнившихся мне на этот раз докладов.
          Читать дальше →
          • +25
          • 2,2k
          • 4
        • Пример использования Java-библиотеки для создания Telegram-бота

          Каждый разработчик (и не только), который использует Telegram в повседневной жизни, хотя бы раз задумывался о том, каково это — создать своего бота, на сколько это сложно и какой язык программирования лучше использовать.

          Читать дальше →
        • Java Challengers #3: Полиморфизм и наследование

          • Перевод

          Java Challengers #3: Полиморфизм и наследование


          Мы продолжаем перевод серии статей с задачками по Java. Прошлый пост про строки вызвал на удивление бурную дискуссию. Надеемся, что мимо этой статьи вы тоже не пройдете мимо. И да — мы приглашаем теперь на юбилейный десятый поток нашего курса "Разработчик Java".


          Согласно легендарному Венкату Субраманиам (Venkat Subramaniam) полиморфизм является самым важным понятием в объектно — ориентированном программировании. Полиморфизм — или способность объекта выполнять специализированные действия на основе его типа — это то, что делает Java — код гибким. Шаблоны проектирования, такие как Команда (Command), Наблюдатель (Observer), Декоратор (Decorator), Стратегия (Strategy), и многие другие, созданные бандой четырех (Gang Of Four), все используют ту или иную форму полиморфизма. Освоение этой концепции значительно улучшит вашу способность продумывать программные решения.


          Читать дальше →
        • Camunda BPM Meetup Raiffeisenbank

            18 декабря приглашаем на первый открытый митап Camunda BPM, который пройдет на площадке Райффайзенбанка в Нагатино.

            Для нас очень важно формировать сообщества и делиться знаниями и опытом как внутри компании, так и во вне. Именно поэтому на регулярной основе мы проводим открытые митапы по разным направлениям. В этот раз мы открываем двери и приглашаем вас на первый митап Camunda BPM. В рамках митапа мы также хотим создать и чат Camunda BPM User Group, с чатом жить гораздо проще, ведь тогда появляется возможность что-то быстро спросить у коллег или просто скинуть интересную статью или мем. Хотите в чат? Тогда вам сюда
            Читать дальше →
            • +11
            • 1,7k
            • 2
          • Как обрабатывать ошибки на JVM быстрее

              Существуют различные способы обработки ошибок в языках программирования:


              • стандартные для многих языков исключения (Java, Scala и прочий JVM, python и многие другие)
              • коды статуса или флаги (Go, bash)
              • различные алгебраические структуры данных, значениями которых могут быть как успешные результаты так и описания ошибок (Scala, haskell и другие функциональные языки)

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


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


              Сразу отбросим использование кодов и флагов, так как этот подход не принят в JVM языках и по моему мнению слишком подвержен ошибкам (прошу прощения за каламбур). Поэтому будем сравнивать исключения и разные виды АТД. Кроме того АТД можно рассматривать как использование кодов ошибок в функциональном стиле.


              UPDATE: к сравнению добавлены исключения без стек-трейсов

              Читать дальше →
            • Spring Boot решение задачи с ManyToMany



              Статья адресуется тебе, бредущему во мраке ночи. Тебе, чей путь освещают лишь одинокие светлячки. В общем, программисту, изучающему Spring Boot и отношение ManyToMany в Hibernate.

              Делал тестовое задание на отвлеченную музыкальную тему: написать сервис для хранения данных о музыкантах, песнях, альбомах, используя Java, Spring, Hibernate. Частью задания было создание классов «Композиции» и «Исполнители». Композицию могут исполнять многие исполнители, и исполнитель может исполнять многие композиции. Типичное bidirectional отношение ManyToMany.

              На курсах Khasang рассказывали, как избежать зацикливания rest запросов на Spring с помощью DTO класса, но Spring Boot это другая история. На русскоязычных сайтах видел ответы типа «Да это все элементарно», но без конкретных пояснений. Приведу пример решения этой задачи. Полный код размещен на гитхабе, ссылка внизу.
              Читать дальше →

            Самое читаемое