Чему я научился делая игры на LibGDX
В этом топике хочу поговорить о незаслуженно забытом, бесплатном фреймворке для разработки кросс-платформенных игр - LibGDX. Поделится секретами своей кухни и решениями, которые я использую при разработке своих игр-головоломок. Ворнинг! Много кода под катом.
Читать: https://habr.com/ru/post/578884/?utm_campaign=578884
В этом топике хочу поговорить о незаслуженно забытом, бесплатном фреймворке для разработки кросс-платформенных игр - LibGDX. Поделится секретами своей кухни и решениями, которые я использую при разработке своих игр-головоломок. Ворнинг! Много кода под катом.
Читать: https://habr.com/ru/post/578884/?utm_campaign=578884
Java. The composite pattern on Game Server
Паттерн Компоновщик - так же известен как Дерево, Composite.
Суть паттерна
Компоновщик - это шаблон структурного проектирования, который позволяет объединять объекты в древовидные структуры, а затем работать с этими структурами, как если бы они были отдельными объектами.
Проблема
Использование шаблона Composite имеет смысл только тогда, когда базовая модель вашего приложения может быть представлена в виде дерева.
Например, представьте, что у вас есть два типа объектов: конфигурация награды и конфигурация сундука. Сундук может содержать несколько Наград, а также несколько Сундуков меньшего размера. Эти маленькие сундуки также могут содержать некоторые награды или даже сундуки меньшего размера и т. Д.
Допустим, вы решили создать систему выдачи наград, в которой используются эти классы. Конфигурация Награды может содержать простые награды без упаковки в сундук, а также сундуки с наградами ... и другие сундуки. Как бы вы рассчитали все награды основываясь на такой конфигурации?
Вы можете попробовать прямой подход: развернуть все сундуки, просмотреть все награды и затем рассчитать награды по их типам. Это было бы осуществимо в реальном мире; но в программе это не так просто, как запустить цикл. Вы должны заранее знать классы наград и сундуков, которые вы проходите, уровень вложенности сундуков и другие неприятные детали. Все это делает прямой подход либо слишком неудобным, либо даже невозможным.
Читать: https://habr.com/ru/post/577472/?utm_campaign=577472
Паттерн Компоновщик - так же известен как Дерево, Composite.
Суть паттерна
Компоновщик - это шаблон структурного проектирования, который позволяет объединять объекты в древовидные структуры, а затем работать с этими структурами, как если бы они были отдельными объектами.
Проблема
Использование шаблона Composite имеет смысл только тогда, когда базовая модель вашего приложения может быть представлена в виде дерева.
Например, представьте, что у вас есть два типа объектов: конфигурация награды и конфигурация сундука. Сундук может содержать несколько Наград, а также несколько Сундуков меньшего размера. Эти маленькие сундуки также могут содержать некоторые награды или даже сундуки меньшего размера и т. Д.
Допустим, вы решили создать систему выдачи наград, в которой используются эти классы. Конфигурация Награды может содержать простые награды без упаковки в сундук, а также сундуки с наградами ... и другие сундуки. Как бы вы рассчитали все награды основываясь на такой конфигурации?
Вы можете попробовать прямой подход: развернуть все сундуки, просмотреть все награды и затем рассчитать награды по их типам. Это было бы осуществимо в реальном мире; но в программе это не так просто, как запустить цикл. Вы должны заранее знать классы наград и сундуков, которые вы проходите, уровень вложенности сундуков и другие неприятные детали. Все это делает прямой подход либо слишком неудобным, либо даже невозможным.
Читать: https://habr.com/ru/post/577472/?utm_campaign=577472
What is Variable and Function Hoisting in JavaScript? Example Tutorial
Hoisting is a complex concept in JavaScript. Like other major programming languages, variables and functions are an important part of JavaScript. Being a dynamically typed programming...
Read: http://www.java67.com/2021/09/variable-and-function-hoisting.html
Hoisting is a complex concept in JavaScript. Like other major programming languages, variables and functions are an important part of JavaScript. Being a dynamically typed programming...
Read: http://www.java67.com/2021/09/variable-and-function-hoisting.html
Современные требования к Java-разработчику: о чём вас спросят на собеседовании
Требования к Java-разработчику не ограничиваются Java Core, особенно на ведущих позициях. О чём еще вас могут спросить на собеседовании?
Читать: «Современные требования к Java-разработчику: о чём вас спросят на собеседовании»
Требования к Java-разработчику не ограничиваются Java Core, особенно на ведущих позициях. О чём еще вас могут спросить на собеседовании?
Читать: «Современные требования к Java-разработчику: о чём вас спросят на собеседовании»
Собеседование наоборот: Usetech и Weigandt Consulting отвечают на вопросы о работе
По следам Java-недели на Хабр Карьере было так много вопросов от участников, что они не уместились в полтора часа нашего итогового круглого стола с компаниями. Поэтому мы решили выпустить их в формате статьи здесь на Хабре и попросили компании ответить на те вопросы, которые показались им самыми интересными. Отозвались ребята из Weigandt Consulting и Usetech, и сегодня мы делимся их комментариями о работе джавистов, найме джунов и старте карьеры в Java-разработке, мнением о технологиях и карьерными советами.
Читать: https://habr.com/ru/post/578928/?utm_campaign=578928
По следам Java-недели на Хабр Карьере было так много вопросов от участников, что они не уместились в полтора часа нашего итогового круглого стола с компаниями. Поэтому мы решили выпустить их в формате статьи здесь на Хабре и попросили компании ответить на те вопросы, которые показались им самыми интересными. Отозвались ребята из Weigandt Consulting и Usetech, и сегодня мы делимся их комментариями о работе джавистов, найме джунов и старте карьеры в Java-разработке, мнением о технологиях и карьерными советами.
Читать: https://habr.com/ru/post/578928/?utm_campaign=578928
Hibernate Proxy — для чего используются и как получить исходный объект
Hibernate использует прокси-объекты для реализации ленивой загрузки (lazy load) связей "к-одному". Их также можно использовать для улучшения производительности некоторых операций записи.
Упоминания прокси-объектов вы могли встречать при отладке или в логах. Имя класса прокси состоит из имени класса сущности и суффикса, который зависит от версии Hibernate и библиотеки для работы с байт-кодом, которую использует Hibernate.
Читать: https://habr.com/ru/post/578950/?utm_campaign=578950
Hibernate использует прокси-объекты для реализации ленивой загрузки (lazy load) связей "к-одному". Их также можно использовать для улучшения производительности некоторых операций записи.
Упоминания прокси-объектов вы могли встречать при отладке или в логах. Имя класса прокси состоит из имени класса сущности и суффикса, который зависит от версии Hibernate и библиотеки для работы с байт-кодом, которую использует Hibernate.
Читать: https://habr.com/ru/post/578950/?utm_campaign=578950
30 сентября — MeetUp Backend Stories
Привет!
В следующий четверг, 30 сентября, мы проведем митап для бэкенд-разработчиков.
Начало в 19:00 МСК, участие бесплатное, главное заранее зарегистрироваться, чтобы получить ссылку на трансляцию за час до её начала. Вести митап будет руководитель центра компетенций Java в Альфа-Банке — Павел Дерендяев.
А докладов будет три. Два от спикеров нашего банка, третий — от приглашённого эксперта из экосистемы недвижимости «Метр квадратный». Примерная продолжительность митапа — два часа.
Под катом — расписание и названия докладов.
Читать: https://habr.com/ru/post/578962/?utm_campaign=578962
Привет!
В следующий четверг, 30 сентября, мы проведем митап для бэкенд-разработчиков.
Начало в 19:00 МСК, участие бесплатное, главное заранее зарегистрироваться, чтобы получить ссылку на трансляцию за час до её начала. Вести митап будет руководитель центра компетенций Java в Альфа-Банке — Павел Дерендяев.
А докладов будет три. Два от спикеров нашего банка, третий — от приглашённого эксперта из экосистемы недвижимости «Метр квадратный». Примерная продолжительность митапа — два часа.
Под катом — расписание и названия докладов.
Читать: https://habr.com/ru/post/578962/?utm_campaign=578962
Presentation: What Does the Future Hold for Java?
The panelists discuss new features in Java including Records, Local Variable Type Inference, and performance improvements, the various ‘free’ builds of OpenJDK, and the development of Foojay.io.
By Charles Humble, Simon Ritter, Ron Pressler, Emily Jiang, Trisha Gee
Read: https://www.infoq.com/presentations/java-16-17-future/
The panelists discuss new features in Java including Records, Local Variable Type Inference, and performance improvements, the various ‘free’ builds of OpenJDK, and the development of Foojay.io.
By Charles Humble, Simon Ritter, Ron Pressler, Emily Jiang, Trisha Gee
Read: https://www.infoq.com/presentations/java-16-17-future/
Наиболее частые исключения Java
На платформе Samebug мы собрали обширную коллекцию сообщений о сбоях, опубликованных на различных веб-ресурсах. Каждое сообщение представляет собой трассировку стека с указанием веб-страницы, на которой оно было обнаружено. Мы сгруппировали эти сбои по ряду критериев: тип исключения, программный компонент, сгенерировавший исключение, основные ресурсы, на которых были опубликованы сообщения, и т. д. Мы также выявили типовые шаблоны ошибок, часто доставляющих проблемы разработчикам. Под шаблоном ошибки мы понимаем общую часть, совпадающую в нескольких разных трассировках стека.
Читать: https://habr.com/ru/post/579026/?utm_campaign=579026
На платформе Samebug мы собрали обширную коллекцию сообщений о сбоях, опубликованных на различных веб-ресурсах. Каждое сообщение представляет собой трассировку стека с указанием веб-страницы, на которой оно было обнаружено. Мы сгруппировали эти сбои по ряду критериев: тип исключения, программный компонент, сгенерировавший исключение, основные ресурсы, на которых были опубликованы сообщения, и т. д. Мы также выявили типовые шаблоны ошибок, часто доставляющих проблемы разработчикам. Под шаблоном ошибки мы понимаем общую часть, совпадающую в нескольких разных трассировках стека.
Читать: https://habr.com/ru/post/579026/?utm_campaign=579026
Java News Roundup: JDK LTS Release Cadence, OpenJDK, Spring Updates, Helidon, Payara Platform
This week's Java roundup for September 13th, 2021, features news from OpenJDK, a proposal to accelerate the JDK LTS release cadence from three years to two years, JDK 18, Liberica JDK 17, updates to Spring Framework, Spring Data and Spring Tools 4, Payara Platform, Helidon, JDK 17 dev builds of GraalVM, Hibernate, Piranha, Apache Camel, JobRunr 4.0 and the 2021 Jakarta EE Developer survey.
By Michael Redlich
Read: https://www.infoq.com/news/2021/09/java-news-roundup-sep13-2021/
This week's Java roundup for September 13th, 2021, features news from OpenJDK, a proposal to accelerate the JDK LTS release cadence from three years to two years, JDK 18, Liberica JDK 17, updates to Spring Framework, Spring Data and Spring Tools 4, Payara Platform, Helidon, JDK 17 dev builds of GraalVM, Hibernate, Piranha, Apache Camel, JobRunr 4.0 and the 2021 Jakarta EE Developer survey.
By Michael Redlich
Read: https://www.infoq.com/news/2021/09/java-news-roundup-sep13-2021/
10 Examples of Collectors + Stream in Java 8 | Grouping By, Partition By, Joining, and Counting
As the name suggests, the Collectors class is used to collect elements of a Stream into Collection. It acts as a bridge between Stream and Collection, and you can use it to convert a Stream into...
Read: http://www.java67.com/2018/11/10-examples-of-collectors-in-java-8.html
As the name suggests, the Collectors class is used to collect elements of a Stream into Collection. It acts as a bridge between Stream and Collection, and you can use it to convert a Stream into...
Read: http://www.java67.com/2018/11/10-examples-of-collectors-in-java-8.html
Java 17: Pattern Matching for switch
14-го сентября состоялась презентация Apple, в этот же день произошло не менее важное событие - релиз Java 17.
Среди новых фич подъехал паттерн матчинг для
История началась с того, что в jdk 16 расширили
Читать: https://habr.com/ru/post/579178/?utm_campaign=579178
14-го сентября состоялась презентация Apple, в этот же день произошло не менее важное событие - релиз Java 17.
Среди новых фич подъехал паттерн матчинг для
switchв preview моде.История началась с того, что в jdk 16 расширили
instanceofоператор, который теперь может принимать type pattern и выполнять матчинг по паттерну. Это маленькое изменение позволило упростить типичную конструкцию с проверкой на тип и последующее приведение.Читать: https://habr.com/ru/post/579178/?utm_campaign=579178
Top 5 FREE Personal Development and Leadership Courses in 2021 - Best of Lot
If you want to improve yourself and look for the best personal development courses, you have come to the right place. Earlier, I have shared the best coding courses for people with no programming...
Read: http://www.java67.com/2021/02/5-free-personal-development-and-leadership-courses-for-programmers.html
If you want to improve yourself and look for the best personal development courses, you have come to the right place. Earlier, I have shared the best coding courses for people with no programming...
Read: http://www.java67.com/2021/02/5-free-personal-development-and-leadership-courses-for-programmers.html
Micronaut 3.0 Delivers Significant Changes Adaptable for Future Development
Object Computing, Inc. has released Micronaut 3.0 featuring the removal of a default reactive streams implementation, a change in annotation inheritance and HTTP compile-time validation. This release was a culmination of work to resolve design faults of the past to make the framework more intuitive and adaptable to future requirements.
By Olimpiu Pop
Read: https://www.infoq.com/news/2021/09/micronaut-3-0-release/
Object Computing, Inc. has released Micronaut 3.0 featuring the removal of a default reactive streams implementation, a change in annotation inheritance and HTTP compile-time validation. This release was a culmination of work to resolve design faults of the past to make the framework more intuitive and adaptable to future requirements.
By Olimpiu Pop
Read: https://www.infoq.com/news/2021/09/micronaut-3-0-release/
Top 10 Books Every Programmer Should Read
There is a saying that if you learn from your mistakes, you will only going to learn few things, but if you learn from other's mistakes, you can learn a lot of things in a short time, and what...
Read: http://www.java67.com/2015/03/10-books-every-programmer-and-software-engineer-read.html
There is a saying that if you learn from your mistakes, you will only going to learn few things, but if you learn from other's mistakes, you can learn a lot of things in a short time, and what...
Read: http://www.java67.com/2015/03/10-books-every-programmer-and-software-engineer-read.html
How to declare and Initialize two dimensional Array in Java with Example
An array of more than one dimension is known as a multi-dimensional array. Two of the most common examples of multi-dimensional arrays are two and three-dimensional arrays, known as 2D and 3D arrays,...
Read: http://www.java67.com/2014/10/how-to-create-and-initialize-two-dimensional-array-java-example.html
An array of more than one dimension is known as a multi-dimensional array. Two of the most common examples of multi-dimensional arrays are two and three-dimensional arrays, known as 2D and 3D arrays,...
Read: http://www.java67.com/2014/10/how-to-create-and-initialize-two-dimensional-array-java-example.html
10 Examples to DateTimeFormatter in Java 8 to Parse, Format LocalDate and LocalTime
Parsing and formatting dates are other essential topics while working with date and time in Java. Even though the old Date API had the SimpleDateFormat and DateFormat class to support the formatting...
Read: http://www.java67.com/2019/01/10-examples-of-format-and-parse-dates-in-java.html
Parsing and formatting dates are other essential topics while working with date and time in Java. Even though the old Date API had the SimpleDateFormat and DateFormat class to support the formatting...
Read: http://www.java67.com/2019/01/10-examples-of-format-and-parse-dates-in-java.html
Создание реалистичных тестовых данных для Java приложений
Чем ближе ваши тестовые или демонстрационные данные к реальному миру, тем лучше вы сможете протестировать приложение на UX, улучшить и отловить крайние случаи в процессе разработки.
В этой статье я покажу вам, как использовать пример генератора данных Vaadin для создания демонстрационных данных для простой базы данных SQL. В статье показано, как создать полное приложение, используя Spring Boot, JPA, Project Lombok, Vaadin и MariaDB.
Читать: https://habr.com/ru/post/579122/?utm_campaign=579122
Чем ближе ваши тестовые или демонстрационные данные к реальному миру, тем лучше вы сможете протестировать приложение на UX, улучшить и отловить крайние случаи в процессе разработки.
В этой статье я покажу вам, как использовать пример генератора данных Vaadin для создания демонстрационных данных для простой базы данных SQL. В статье показано, как создать полное приложение, используя Spring Boot, JPA, Project Lombok, Vaadin и MariaDB.
Читать: https://habr.com/ru/post/579122/?utm_campaign=579122
Мягкое удаление в Hibernate: неочевидные факты
Мягкое удаление (soft deletion) — это популярная в энтерпрайз разработке стратегия удаления, когда вместо физического стирания та или иная запись помечается как удаленная, а потом фильтруется во всех запросах на чтение. Применение мягкого удаления может быть оправдано целым набором требований: аудит, возможность восстановления удаленных записей, а иногда необходимо уметь удалять данные, при этом сохраняя на них ссылки из других записей…
Вообщем, нам, как авторам JPA Buddy (плагина для IntelliJ), пришлось с этим плотно разбираться. В этой статье мы рассмотрим детали, которые зачастую не упоминаются в большинстве публикаций по этой теме, хотя крайне важны для принятия решения о способе реализации мягкого удаления в вашем приложении. Давайте посмотрим, с чем вы, вероятно, намучаетесь.
Читать: https://habr.com/ru/post/579386/?utm_campaign=579386
Мягкое удаление (soft deletion) — это популярная в энтерпрайз разработке стратегия удаления, когда вместо физического стирания та или иная запись помечается как удаленная, а потом фильтруется во всех запросах на чтение. Применение мягкого удаления может быть оправдано целым набором требований: аудит, возможность восстановления удаленных записей, а иногда необходимо уметь удалять данные, при этом сохраняя на них ссылки из других записей…
Вообщем, нам, как авторам JPA Buddy (плагина для IntelliJ), пришлось с этим плотно разбираться. В этой статье мы рассмотрим детали, которые зачастую не упоминаются в большинстве публикаций по этой теме, хотя крайне важны для принятия решения о способе реализации мягкого удаления в вашем приложении. Давайте посмотрим, с чем вы, вероятно, намучаетесь.
Читать: https://habr.com/ru/post/579386/?utm_campaign=579386
Разработка мультиагентной системы для рынка электроэнергии
Пока я пишу статью, я еду в поезде и рядом со мной 79 ребят со всей России, которые 18 предыдущих дней занимались проектами в области энергетики, и среди них едут 9 победителей этой смены, среди которых и я. Ну a здесь я хочу рассказать про то, какую лепту я внес в наш проект.
Читать: https://habr.com/ru/post/579430/?utm_campaign=579430
Пока я пишу статью, я еду в поезде и рядом со мной 79 ребят со всей России, которые 18 предыдущих дней занимались проектами в области энергетики, и среди них едут 9 победителей этой смены, среди которых и я. Ну a здесь я хочу рассказать про то, какую лепту я внес в наш проект.
Читать: https://habr.com/ru/post/579430/?utm_campaign=579430
Top 5 Courses to learn System Design and Software Architecture in 2021 - Best of Lot
Software design or System design is one of the tricky concepts to master. You can quickly learn a programming language like Java or Python, but creating software using that programming language is a...
Read: http://www.java67.com/2019/09/top-5-courses-to-learn-system-design.html
Software design or System design is one of the tricky concepts to master. You can quickly learn a programming language like Java or Python, but creating software using that programming language is a...
Read: http://www.java67.com/2019/09/top-5-courses-to-learn-system-design.html