Обновить
512K+

Java *

Объектно-ориентированный язык программирования

216,43
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Язык определения интентов NlpCraft IDL

Время на прочтение10 мин
Охват и читатели1.2K

Данная статья является продолжением заметки “Проектируем интенты с Apache NlpCraft” и содержит детальное описание возможностей языка определения интентов NlpCraft IDL, созданного для использования в NLP проектах основанных на системе Apache NlpCraft. Поддержка NlpCraft IDL добавлена в систему начиная с версии 0.7.5.   

Новая версия декларативного языка определения интентов, получившая название NlpCraft IDL (NlpCraft Intents Definition Language), значительно упростила процесс работы с интентами в диалоговых и поисковых системах, построенных на базе проекта Apache NlpCraft и вместе с тем расширила возможности системы.  

Читать далее

MastermindCMS – что это такое? Система управления контентом? Фреймворк?

Время на прочтение5 мин
Охват и читатели3.4K

Вот и пришло время подвести итоги нашей разработки. Эта статья станет заключительной в описании истории развития нашего проекта. Я постараюсь подробно рассказать о полученном опыте создания нового инструмента для построения веб-сайтов.

Миллионы web-проектов увидели свет, но изо дня в день программисты все еще пишут тонны исходного кода, решая похожие задачи на разных инструментах. Речь в этой статье пойдет о технологии, которую мы разрабатываем на протяжении 4-х лет. Я уже ранее рассказывал о том, какой была моя задумка и цель в создании данного продукта и чего именно я хотел добиться, программируя инструмент для повседневной рутинной разработки веб-приложений. Мне пришлось пройти свой путь от презентаций моего продукта на стартап-pitch'ах и хакатонах и до получения первого реального проекта в сети, где я смог успешно применить мою разработку.

Все началось в далеком 2017 году, когда мне пришла идея написать для себя сайт. Я, недолго думая, взял Drupal и настроил его как headless-cms. Мне хотелось написать отдельно фронтэнд и не копаться с темами от Drupal. Но что-то пошло не так! Я столкнулся с множеством ограничений в проектировании сущностей в административном интерфейсе. Тогда я решил попробовать это сделать на WordPress. Но я совсем не ожидал, что мне придется создавать отдельные контроллеры под каждый тип сущности. Но честно признаться - меня это расстроило. В Drupal хотя бы есть Views, которые относительно легко сконфигурировать в административной консоли и создать endpoint'ы для доступа через REST API, но тем не менее там есть свои ограничения. После этого я провел небольшой анализ существующих CMS и понял, что придется писать все под себя.

Читать далее

Подробно о PECS

Время на прочтение5 мин
Охват и читатели85K

Всем привет. Сегодня я хочу поговорить о принципе PECS. Понимаю, что сейчас гуру программирования и многоопытные сеньоры в очередной раз впечатали ладонь в лицо, ибо «Java Generics появились в JDK 1.5, которая вышла 30 сентября 2004 года…». Но если есть те, для кого принцип PECS остаётся туманным и непонятным, а упорное гугленье только сгущает «туман», добро пожаловать под кат, будем вместе разбираться до полного духовного просветления. Хочу сразу предупредить, что в данной заметке не рассматривается, что такое дженерики и что такое wildcard. Если вы не знакомы с данными понятиями, то перед чтением необходимо с ними разобраться.

Читать далее

Реализация “чистой архитектуры” в микросервисах

Время на прочтение7 мин
Охват и читатели13K
Привет, Хабр!

Сейчас многие проекты используют микросервисную архитектуру. Мы также не стали исключением и вот уже больше 2х лет мы стараемся строить ДБО для юридических лиц в банке с применением микросервисов.



Авторы статьи: ctimas и Alexey_Salaev
Читать дальше →

Как оптимизировать повседневные backend-задачи: три видео с митапа по Java

Время на прочтение1 мин
Охват и читатели6.9K

20 мая прошел седьмой митап для Java-разработчиков ЮMoney Jam. Смотрите видео от наших докладчиков, которые делятся кейсами:

— Как добавлять в чистовой код на Java тестовое поведение и спать спокойно.

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

— Как не попасть в Jar Hell.

Смотреть видео

Работа с java.time в Kotlin: любовь, боль, страдания

Время на прочтение2 мин
Охват и читатели5.6K

Микоропост о том, как можно себя обмануть при использовании фичи Котлин: возможность работы с операторами сравнения типа Comparable.

Кто юзает Котлин не могли не оценить перегрузку операторов (ну точнее как она сделана), правда я допустим жил в Java и без нее прекрасно, но да тут не об этой фичи языка, а об основанной на ней: Comparison Operations. Это когда можно применять знаки сравнения для классов, реализующих Comparable, что является сахаром, но очень приятным.

Читать далее

Почему Kotlin лучше Java?

Время на прочтение3 мин
Охват и читатели13K

Это ответ на переведенную публикацию «Почему Kotlin хуже, чем Java?». Поскольку исходная аргументация опирается всего на два примера, то не теряя времени пройдем по этим «недостаткам» Kotlin.

Читать далее

«Почему Kotlin хуже, чем Java?»

Время на прочтение6 мин
Охват и читатели80K

Такой провокационный вопрос задал реддитор nenemen в сабреддите Java:

«Я думаю о том, чтобы свой следующий проект сделать на Kotlin + Spring Boot, но мощь всенародной любви к Kotlin и одновременно ненависти к Java заставляют всё это походить на какой-то культ. Поэтому хотел бы услышать аргументы «против».

Мы в FunCorp в своё время сделали именно такой выбор в пользу Kotlin. И сегодня соотношение Java/Kotlin у нас составляет примерно 20 на 80, продолжая уменьшаться при каждом удобном случае. Поэтому ответы на этот вопрос меня заинтересовали, и я стал листать секцию комментариев. Там наткнулся на реплику реддитора rzwitserloot, которая мне показалась настолько взвешенной, многосторонней и рациональной, что я захотел поделиться ей с нашей командой, а заодно и читателями Хабра.

Далее перевод его аргументов.

Читать далее

Как мы пытаемся автоматизировать учет рабочего времени по проектам для простых рабочих

Время на прочтение6 мин
Охват и читатели7.4K

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

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

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

Чтобы понять актуальность проблемы можно рассмотреть весьма условный пример – строительная генподрядная компания строит жилой дом. Для этого есть проектная документация, которая определяет, кроме всего прочего, и объем трудозатрат (одна из основных статей затрат в строительстве) по каждому этапу строительства и каждому виду работ. То есть чтобы построить дом за определенный срок и за определенные деньги нужно иметь инструменты для правильной организации труда, анализа и контроля, которые позволят отслеживать прогресс проекта, контролировать затраты человеко-часов на работы и сравнивать реально затраченные (и, как правило, оплачиваемые) человеко-часы с объемом выполненных работ. Если инструментов нет, то неэффективность организации работы приводит к низкой производительности труда, увеличению сроков строительства и, как следствие, росту стоимости. До поры до времени компании могут свою неэффективность закладывать в себестоимость работ (услуг), но этот процесс не вечен.

Читать далее

Как на самом деле работает auto-commit в Kafka и можем ли мы на него рассчитывать?

Время на прочтение4 мин
Охват и читатели42K

В этой статье я хочу чуть подробнее раскрыть как же устроен механизм auto-commit у слушателей в библиотеке kafka-clients.

Читать далее

9 лучших практик для обработки исключений в Java

Время на прочтение8 мин
Охват и читатели36K

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

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

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

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

Читать далее

Битва Java-разработчиков Tech Monsters Night от «М.Видео-Эльдорадо»

Время на прочтение1 мин
Охват и читатели5K


4 июня состоится Tech Monsters Night. Специалисты уровня middle&senior Java Script, Java 15, Reactive Java, Spring Framework 5, Spring Boot 2, Kafka других и фреймворков эта битва для вас!

5 часов эпичного файта: нетривиальные задачки от лидов «М.Видео-Эльдорадо» и скиловые противники. Сразу после боя — лидерборд, вы увидите рейтинг, ники победителей и призы.

Сравнение современных построителей образов контейнеров: Jib, Buildpacks и Docker

Время на прочтение22 мин
Охват и читатели19K

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

Читать далее

Ближайшие события

Алгоритм нахождения 1000 ферзей на шахматной доске

Время на прочтение2 мин
Охват и читатели9.4K

Недавно разбирался в старых своих наработках/скриптах и наткнулся на скрипт где решалась задача о ферзях. Собственно это послужило написанию статьи о том как проходили этапы написания его алгоритма. Возможно пригодится начинающим программистам для решения похожих задач (код в примерах написан на java).

Читать далее

Отправка электронных писем с помощью Spring

Время на прочтение10 мин
Охват и читатели44K

Отправка электронных писем — одна из базовых функций, которая может понадобиться в любом приложении. Из этой статьи вы узнаете, как отправлять электронные письма с помощью Spring. Для отправки электронных писем вам потребуются данные SMTP-сервера. В качестве примера вы можете использовать SMTP для Gmail (имейте в виду, что у Gmail есть определенные ограничения по отправке электронной почты). Интерфейс JavaMailSender в Spring Framework предлагает простую абстракцию для отправки электронной почты, а Spring Boot производит автоматическую настройку этого интерфейса и стартового модуля.

Читать далее

Производительность Android Runtime vs NDK

Время на прочтение3 мин
Охват и читатели7.1K

Разрабатывая игровой движок для Android, я был уверен, что нативный код C/C++ будет исполняться быстрее чем аналогичный код на Java. Это утверждение справедливо, но не для последних версий Android. Чтобы проверить почему так происходит, решил провести небольшое исследование.

Для теста использовался Android Studio 4.1.3 - для Java Android SDK (API 30), для C/C++ Android NDK (r21, компилятор CLang). Тест довольно тупой, который выполняет арифметические операции над массивом int в двух вложенных циклах. Ничего осмысленного и специфичного.

Читать далее

Apache Camel и Spring Boot

Время на прочтение12 мин
Охват и читатели29K

Apache Camel — это фреймворк для интеграции приложений и эффективного взаимодействия между различными системами, с чем приходится часто сталкиваться в любой корпоративной инфраструктуре. Apache Camel позволяет разработчику сосредоточиться на логике процессов, не переводя данные в канонический формат, так как Camel поддерживает более 80 API для реализации различных протоколов и типов данных. Таким образом, разработчику — то есть вам — достаточно просто знать, как Camel соединяет все вместе. В этой статье мы по шагам рассмотрим, как интегрировать Apache Camel и Spring Boot.

Но прежде чем обратиться к примеру со средой Spring Boot, разберемся с основными понятиями и терминами Camel.

Читать далее

Профилирование с точностью до ассемблерных инструкций

Время на прочтение12 мин
Охват и читатели4.1K

Работая над темой низкоуровневого профилирования, я обнаружил отсутствие подробного руководства по настройке окружения и сбору материала. Всё пришлось делать самому путём проб и ошибок. Итогом стала эта статья, в которой я по шагам описал профилирование кода, горячее место в котором не в силах обнаружить не только какой-нибудь VisualVM, но и титаны вроде async-profiler-а. В качестве примера использован код из ранее упоминавшейся статьи The volatile read surprise.

Читать далее

Keycloak интеграция со Spring Boot и Vue.js для самых маленьких

Время на прочтение22 мин
Охват и читатели41K

Вы больше не можете создать сервер авторизации с помощью @EnableAuthorizationServer, потому что Spring Security OAuth задеприкейтили, а проект Spring Authorization Server всё ещё экспериментальный? Выход есть! Напишем авторизацию своими руками... Что?.. Нет?.. Не хочется? И вообще получаются какие-то костыли и велосипеды? Ну ладно, тогда давайте возьмём уже что-то готовое. Например, Keycloak.

Читать далее

Как мы создали облачный сервис для управления и контроля за маршрутами обходов на предприятиях

Время на прочтение7 мин
Охват и читатели7.7K

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

На предприятиях куча различных механизмов, станков и различного оборудования. На некоторых из них, безусловно, есть электронный учет параметров, однако, как быть, если стоит оборудование постарше или просто без какого-либо электронного учета? Конечно же, идти по заданному маршруту с обычным блокнотом и шариковой ручкой, попутно снимая все показатели. И это хорошо, если сотрудник добросовестно пройдет все контрольные точки, а не просто для вида поставит «галочки» в блокнот, минуя все условности. 

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

Читать далее