Обновить
169.12

Java *

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

Сначала показывать
Порог рейтинга

Привет!

Может кто посоветовать статьи или посты про idempotency для REST API POST-методов и как гарантировать идемпотентность?

Наткнулся на разбор с реализацией через отдельную таблицу idempotency keys в Postgres: https://brandur.org/idempotency-keys. Хотелось бы собрать практики — какими ещё способами достигается идемпотентности для POST (и других эндпоинтов)? Какие у каждого подхода плюсы/минусы и в каких юс-кейсах лучше применять?


Спасибо!

Теги:
0
Комментарии9

Статический анализ OpenIDE

Коллеги из OpenIDE предложили нам проверить их продукт статическим анализатором и написать об этом статью.

Мы отобрали самые интересные ошибки и странные моменты, которые нашёл анализатор в исходном коде используемой ими IntelliJ Platform. Если вам интересно посмотреть на ошибки в Java коде и освежить в памяти некоторые теоретические аспекты этого языка, крайне рекомендуем статью к прочтению.

P.S. Отдельная благодарность OpenIDE. Они рассмотрели приведённые в статье ошибки и поправили их.

Теги:
+1
Комментарии0

Приглашаем на вебинар, на котором поговорим, как защитить сборки, избежать зависимостей от внешних репозиториев и повысить надёжность.

На вебинаре вы узнаете:

  • требования ДИБов и регулятора

  • об атаках на цепочки поставок ПО

  • возможности отключения Maven Cenral

  • про инженерные проблемы при сборке, с которыми столкнулись, а также пути их решения на примере Axiom JDK

  • опыт использования доверенного репозитория в контуре ЕДИНОГО ЦУПИС

  • как встроить еще один репозиторий в стандартный Java‑проект. Покажем демонстрацию в режиме реального времени

Кому будет полезен вебинар:
• Архитекторам
• Инженерам
• Всем, кто интересуется РБПО

Вебинар проведут:
• Максим Максимов, Архитектор решений, ЕДИНЫЙ ЦУПИС
• Сергей Лунегов, Директор по продуктам, Axiom JDK

Когда: 12 ноября 2025 г.

Во сколько: 11:00–12:30 по мск

Формат: Онлайн

Участие: Бесплатное (нужно предварительно зарегистрироваться)

Теги:
0
Комментарии0

Мне только что пришло интересное письмецо от Vaadin :)

Hi everyone,

This message is going out to the whole Vaadin community, as the news comes directly from years of your feedback, ideas, and passion for building better web apps in Java.

Now we’re taking another big step forward and Hilla will be merged into Vaadin Flow and discontinued it as a separate product, and our main focus will move fully toward building web UIs in pure Java.

Read more about this in our blog.

Whether you’ve been with Vaadin since the early days or just joined recently, we need your input to make it useful and helpful in your work, so let us know what you think. Thank you!

on behalf of the Vaadin Team

Sami

Если вкратце, Vaadin Flow - это "классический Vaadin", а Hilla - его React-версия.

Поэтому те, кто сидят на Vaadin Hilla, подумайте о переходе на Vaadin Flow. Ну или на чистый React :)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Ускоряем релизы и улучшаем качество с помощью Unleash

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

В статье «Разбираемся с Feature Toggle на примере Unleash» подробно объясняем ключевые понятия и возможности Unleash — от определения тоглов до сложных стратегий и сегментов. Демонстрируем реальные примеры кода и архитектурных подходов на Java и Spring и рассказываем о практических плюсах Unleash

Статья будет полезна Backend-разработчикам и тимлидам, DevOps и SRE-инженерам, менеджерам продуктов и качества и всем, кто планирует масштабировать систему с десятками и сотнями микросервисов, где требуется централизованный и удобный контроль остаточного риска внедрения новых функций.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Приглашаем на вебинарпосвященный вопросам перехода на отечественную Java-среду исполнения. Обсудим, как указы №166 и №250 и приказ Минцифры №21 задали курс на импортозамещение и определили классы ПО для замены. 

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

Кому будет полезен вебинар:
• Директорам по информационной безопасности
• Техническим директорам
• Директорам по ИТ
• Руководителям отдела программного обеспечения
• Разработчикам информационных систем

Вебинар проведет:
Роман Карпов, Директор по стратегии и развитию технологий Axiom JDK, Руководитель ИБ-комитета АРПП "Отечественный софт", Руководитель технического комитета АНО "Открытый код", Советник Министра цифрового развития по вопросам системного ПО, председатель ЦКР по управлению ИТ-инфраструктурой

Когда: 01 октября 2025 г.

Во сколько: 11:00–12:30 по мск

Формат: Онлайн

Участие: Бесплатное (нужно предварительно зарегистрироваться)

Теги:
Всего голосов 4: ↑3 и ↓1+4
Комментарии0

Игра с огнём, или нулевой байт

В одном проекте заказчик потребовалось различать (и делать поиск) по трем состояниям текстового поля в Lucene индексе:

  1. непустое значение (работает из коробки)

  2. пустая строка "" (не поддерживается люсин)

  3. null (не поддерживается люсин)

Lucene не хранит null и пустые строки "" - значения просто не индексируется. Для бизнес-логики, где нужно различать все три состояния, стандартных механизмов Lucene недостаточно.

Создание "специальных" замен в виде комбинаций типа "_null_" текста и спецсимволов - ломается тестерами которые пропускали различный мусор через индекс.

Был выбран компромиссный подход:

  • "\0" (строка из нулевого байта) используется как маркер null

  • "\0\0" (строка из двух нулевых байтов) используется как маркер ""

Пробило в холодный пот? Правильно, и меня тоже. Тем не менее, это рабочий способ.

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

Плюсы:

  • \0 — это валидный символ в Java-строке, который практически не встречается в реальных данных.

  • Символ \0 невозможно ввести напрямую из внешних систем, редакторов или форм без явного кодирования. Это защищает от случайных коллизий, даже если тестировщики пробуют «мусорные» символы.

  • Таким образом достигается стабильное различие между null, "" и содержимыми строками.

Риски:

  • Утечки наружу. Маркеры \0 могут попасть в API-ответы, логи, сериализацию. В нашем случае lucene был в обертке и поиск напрямую не использовался внешними системами - обработчик вызовов был инкапсулирован в прокси сервис.

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

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии0

Приглашаем на Java Jam — бесплатный митап ЮMoney для Java-разработчиков

Спикеры из ЮMoney и главный эксперт по технологиям Сбера расскажут о своём опыте и пообщаются с аудиторией. Вот какие темы будут на митапе:

🟣 Как мы уменьшали нагрузку на базы данных в очередях задач. Расскажем, как реализовать надёжное асинхронное и отложенное исполнение задач.

🟣 Советы по производительному коду. Поговорим про время выполнения программ, работу со строками и коллекциями, вещественную и битовую арифметику, алгоритмические трюки и многое другое.

🟣 Уязвимости не пройдут. Обсудим, как повысить безопасность разработки с помощью SAST и SCA.

25 сентября, в четверг, в 18:30 (мск) — приходите на митап в Санкт-Петербурге или подключайтесь онлайн!

Подробности — на сайте митапа Java Jam 

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии0

Привет!

Рады поделиться с сообществом отличной новостью: теперь Explyt доступен для скачивания с JetBrains marketplace.

Установить Explyt 4.2 с AI агентом для написания кода, тестирования и дебаггинга можно в один клик из вашей IDE (IntelliJ IDEA 2024.1+, PyCharm 2024.1+, GoLand 2024.1+).

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

Всем отличной пятницы 🖖

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Привет, Хабр!

Всего две недели назад вышла версия Explyt 4.1 с поддержкой Python, MCP серверов, новыми Rules и Workflows, а уже сегодня мы рады поделиться новым релизом Explyt 4.2 с поддержкой Go. Теперь все фичи AI агента доступны в GoLand.

Важное обновление

Начиная с версии Explyt 4.2, мы вводим процедуру регистрации новых пользователей. Этот процесс займёт 30 секунд и позволит: 

  • повысить стабильность и доступность инфраструктуры из любой точки мира 

  • корректно соблюдать правовые требования 

Если вы уже пользуетесь плагином, потребуется пройти авторизацию в своём аккаунте прямо из интерфейса плагина.

Запуская бесплатный 30-дневный триал Personal версии, вы сразу получаете 4000 кредитов, которые можно использовать для запросов к LLM.

Возможность пользоваться своими моделями без регистрации в версии Community по-прежнему остается.

Скачать Explyt 4.2 можно с нашего сайта. Для багрепортов и фичриквестов - GitHub Issues и чат с командой плагина. Будем рады вашей обратной связи и философским вопросам 🖖

Теги:
Всего голосов 6: ↑5 и ↓1+4
Комментарии2

Виртуальные потоки кажутся простым способом ускорить I/O. Но на Java 21 многие сталкивались со стагнацией из‑за пиннинга: когда код входит в synchronized и внутри выполняет блокирующую операцию (I/O, wait(), ожидание монитора), виртуальный поток «прибивается» к carrier‑потоку и не может отмонтироваться. Под нагрузкой это быстро исчерпывает пул carrier‑потоков и «замораживает» обработку. Часто как побочный симптом растет число соединений в CLOSE_WAIT, потому что обработчики не успевают корректно закрывать сокеты.

Что изменилось:

В JDK 24 реализован механизм, благодаря которому виртуальные потоки больше не пиннятся внутри synchronized, включая ожидание монитора и Object.wait()): JVM умеет корректно «размонтировать/перемонтировать» поток. Это почти полностью снимает главный источник проблем с Loom и в большинстве случаев избавляет от необходимости переписывать synchronized на ReentrantLock ради масштабируемости. Редкие источники пиннинга остались вне synchronized, например, JNI — их стоит искать профилированием и наблюдаемостью (JFR‑события).

Дальше — еще удобнее в JDK 25:

Scoped Values становятся финальными — надежная альтернатива ThreadLocal для передачи неизменяемого контекста без накладных расходов и утечек. Structured Concurrency остается в статусе preview и хорошо сочетается с моделью виртуальных потоков.

Что имеет смысл сделать уже сейчас без перелома архитектуры:

  1. Планировать переход на JDK 25, чтобы получить финальные Scoped Values и полный набор улучшений Loom.

  2. Запускать задачи через Executors.newVirtualThreadPerTaskExecutor() или фабрику Thread.ofVirtual() — так вы используете Loom «как задумано».

  3. Проаудировать горячие пути — убрать блокирующие вызовы из‑под synchronized, сузить критические секции. При необходимости оставлять ReentrantLock, но не рассчитывать на него как на универсальное лекарство от пиннинга.

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

  5. Там, где сегодня используются тяжелые ThreadLocal, по возможности переносить на Scoped Values после обновления до JDK 25 и обновлять библиотеки до версий с поддержкой Loom.

Как именно работает исправление пиннинга и как лечить «больные места» рассказали в статье Виртуальные потоки в Java: эволюция, практика, подводные камни.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Если вы сталкиваетесь с задачами оптимизации, но существующие материалы не дают системного понимания — курс «Java Advanced II: высокопроизводительная Java» (JVA-076) для вас. Никакой воды — только лабораторные с разбором реальных инцидентов.

9 сентября на бесплатном вебинаре «Производительность Java под нагрузкой: заглянем под капот» мы детально разберем содержание курса:

➕ Инструменты: JMeter, JMH, JFR, JITWatch — не просто обзор, а решение задач.

➕ JVM: тюнинг GC, анализ JIT, управление флагами.

➕ Hardcore: off-heap память через Unsafe, свои структуры данных.

➕ Архитектура: кэширование и анализ производительности.

Курс для вас, если вы хотите:

✔️ Осознанно подходить к тюнингу JVM.

✔️ Быстро находить и устранять утечки памяти и узкие места

✔️ Принимать архитектурные решения, зная их цену в производительности

✔️ Говорить с эксплуатацией на языке метрик

А вебинар позволит оценить  практическую ценность курса перед принятием решения об обучении.

Дата: 9 сентября

Время: 18:00-19:00 (Мск)

➡️ Регистрация

Теги:
Рейтинг0
Комментарии0

Давно хотел это написать, но как будто не было триггера и вот в пятницу я его поймал. Объясняю. Хочу выразить благодарность, чуть-чуть извиниться перед разработчиками Intellij Idea и простить их. Вот прям от души.

Когда-то в детстве я 3 года отучился игре на фортепиано, но переходный возраст (пиво, футбол и девки) победил и я ушёл из музыкальной школы. К чему я.. я программист уже 8 лет и я не встречал ничего прекрасней чем Intellij Idea.. ты не разрабатываешь - ты играешь на рояле... это автодополнение или как его назвать, подсказки, я просто в шоке. Не всегда угадывает что я хочу, но часто. Триггер я поймал когда добавлял новый объект в enum вида ERROR_INFO("text") и пока строчил название объекта представлял как лезу в переводчик, чтобы точно грамотно написать на английском текст, а Идея предложила мне текст, который я хотел написать, причём не все слова были в названии объекта.. как итог я прям счастлив от такой супер приятной мелочи (не факт что мелочи) и вот спустя два дня строчу этот пост, т.к. я прям обязан это сделать, не знаю почему. Я понимаю, что нейросети, но один и тот же салат Цезарь каждый повар делает по разному.

То, от чего я прям балдею:

  • shift + f6, переименовывает всё и везде - просто песня

  • ctrl + shifr + backspace - показывает всё что я поменял в классе, а не я глазами ищу строчки

  • ctrl + e - показывает классы в порядке убывания по использованию, не ищешь в браузере слева

  • в браузере жмёшь на значок цели вверху и тебе показывается где класс лежит буквально

  • в разделе гита смотришь изменения класса, нажимаешь f4 и тебе открывается этот класс

  • супер поиск ctrl+shift+f или просто два шифта

  • работа с базами данных просто сказка (даже Дата Грип редко открываю, его тоже люблю)

  • офигенные приколы типа ctrl+d с добавлением ниже второй такой же строки, удалить строку со смещением наверх shift+del

  • быстрый переход с ошибки на следующую ошибку с помощью f2

  • ctrl+p показать все ожидаемые параметры в методе

  • ctrl+shift+вверх/вниз гоняет как строку, так и целый кусок :)

  • и ещё дофига всего!!

В общем я счастлив, что моё хобби и работа это одно и то же, а то что есть Идея счастье увеличивает. Извиниться хочу, что я ни разу не покупал подписку. Она мне досталась после прохождения какого-то курса по Java, а сейчас вообще не могу купить, т.к. технически это невозможно из РФ. Здесь я прощаю Jet Brains, без пафоса, понять можно наверное (и на царей жёны давили :) Как смогу - обязательно куплю подписку, потому что это охренеть какой труд и верх перфекционизма для меня как для такого же любителя прекрасного!! И я хотел бы знать - это один такой перфекционист у них всё таки, или целая команда (в плане, что Идея именно такая какая есть). Кто этот "фундамент" образа?

Кто скажет, что пост рекламный - вы не правы! Просто признался в любви IDE :)) и стало легче! Пашем дальше..

Теги:
Всего голосов 6: ↑5 и ↓1+6
Комментарии4

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

В продолжение темы серверного HTML рендеринга на Kotlin.

Если вы не читали статью, кратко напомню о чём речь: я написал небольшой можно сказать фреймворк для генерации HTML на стороне сервера на Kotlin. И поддержку строготипизированных routes для удобного создания ендпоинтов, ссылок на них и форм. Теперь Spring Views можно создавать на Kotlin и по крайней мере в моих проектах (а один из них очень большой - сотни отдельных страниц и десятки виджетов) это дало мне огромное удобство, уверенность, безопасность, рефакторо-пригодность, простое версионирование и переиспользование кода, например, теперь я точно не сделаю опечатку в URI или имени параметра и не смогу передать неверный тип данных на endpoint.

Одна из проблем которые до недавнего времени была в связи с использованием данного фреймворка - это CSS-стили. Приходилось либо инлайнить стили непосредственно для HTML элемента, либо мейнтейнить огромный (или несколько поменьше) CSS файл без возможности внятно следить за старыми более неиспользуемыми классами и селекторами. Кто создавал большие CSS файлы знает о чём я говорю - со временем количество классов накапливается и вычистить их не задев чего-то всё ещё нужного очень сложно. Вот так приходилось работать с CSS стилями раньше:

DIV("css-class-name") {...}
// или
DIV {
  style("color: red;")
  +"Hello World"
}

В принципе жить можно, но хотелось чего-нибудь:

  • что-то на подобии Styled-Components из ReactJS, но так же на Kotlin

  • по возможности поддержку JVM hot-reload в режиме отладки

  • как следствие кода на Kotlin - иметь возможность всегда отслеживать зависимости и удалять более неиспользующиеся CSS-правила.

Долго думал как это получше сделать, и пока что первая версия получила вот такой синтаксис:

@Component // Spring @Component
object MyCssClass : CssClass({
  style = "color: black;"
  hover = """
    color: red;
    text-decoration: underline;
  """
})

...

A(MyCssClass) {
  href(SomeUsefulRoute(param = 1))
  +"Click me"
}

То есть объявляем object который будет нести информацию о CSS свойствах элемента. И далее просто используем его в тех же местах где раньше можно было указать css-class-name. CssClass поддерживает массу "псевдоклассов" типа hover, active, firstOfType, before, after и так далее, так же можно добавлять media брейкпоинты и всякие другие штуки. Вот более насыщенный пример:

@Component
object Container : CssClass({
    style = "padding: 25px;"
    hover = "background: #eee;"

    add(">a", "color: green;")
    add(">a:hover", "text-decoration: underline;")

    media("max-width: 991px") {
        style = "padding: 10px;"
    }
})

Вы наверняка заметили двойные скобочки ({...}) - в конструктор я передаю функцию-инициализатор стилей. Это нужно для того, чтобы в дебаг режиме JVM можно было на лету менять свойства CSS класса без перезапуска приложения: код который генерирует сам css-файл может быть запущен в режиме dev-mode, когда на каждый запрос файла будут выполнены все функции-инициализаторы ещё раз и файл будет собран заново.

Если по какой-то причине вам не нравится object - можно просто объявить class и использовать его:

@Component
class Container : CssClass({...})
...
DIV(Container::class) { ... }

Теперь в проекте порядок с CSS стилями - нет давно умерших, всегда можно найти точки использования, стили лежат рядом с виджетами и т.п.

Смотрите исходники тут. Фидбэк приветствуется, всем хорошего дня.

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии4

Запись вебинара «От кода до запуска: российский стек для Java — Axiom JDK и OpenIDE» доступна для просмотра

Вебинар прошёл, а воспоминания запись осталась.

Если вы не успели на вебинар, но очень хотели, то не переживайте! Мы всё записали, чтобы вы могли посмотреть в любое удобное время.

Что обсуждали на вебинаре:

  • Вызовы отечественной ИТ индустрии.

  • Портфолио Axiom JDK.

  • Регуляторика и соответствие стандартам.

  • РБПО: процесс создания доверенных Java продуктов.

  • Зачем OpenIDE разработчику и бизнесу.

  • В чём проблема собрать Intellij IDEA самостоятельно

  • Как будет развиваться OpenIDE.

Запись уже доступна на площадках.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Вебинар "От кода до запуска: российский стек для Java — Axiom JDK и OpenIDE"

Приглашаем на вебинар, посвященный безопасному стеку базовых технологий для разработки и исполнения Java-приложений и безопасной среде разработке OpenIDE. Вы поймете, что такое OpenIDE, как это всё относится к Intellij IDEA, зачем OpenIDE бизнесу и какие у проекта OpenIDE планы на будущее.

Кому будет полезен вебинар:
• тимлидам
• разработчикам
• DevOps

Вебинар проведут:
• Дмитрий Сапожников, технологический консультант Axiom JDK
• Илья Сазонов, директор по продуктам Axiom JDK, направления Spring и OpenIDE

Когда: 21 августа 2025 г.

Во сколько: 11:00–12:30 по мск

Формат: Онлайн

Участие: Бесплатное (нужно предварительно зарегистрироваться)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Где учиться бэкенду

Привет! Мы на Хабр Карьере собираем сотни онлайн-курсов в IT или digital на маркетплейсе курсов и каждую неделю делаем подборки обучений для тех, кто хочет учиться какой-то специализации с нуля или для тех, кто уже в профессии, но чувствует, что хочет прокачать навыки.

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

Алгоритмы и структуры данных

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

Git

Система контроля версий. Позволяет вести историю изменений, работать с ветками, мержить и откатывать изменения в коде.

Python 

Язык общего назначения, популярен в вебе, автоматизации, ML.

FastAPI

Лёгкий и быстрый фреймворк для создания REST API с поддержкой async/await и автогенерацией схем.

Django

Фреймворк для быстрой разработки web-приложений, включает ORM, авторизацию и админку из коробки.

JavaScript / TypeScript

JavaScript — язык для веб-интерфейсов и серверной логики (через Node.js). TypeScript — его надстройка с типизацией, упрощающая масштабируемую разработку.

Java / Spring

Java — строго типизированный язык. Spring — основной фреймворк для создания REST API, микросервисов и корпоративных приложений.

Go

Компилируемый язык от Google с простым синтаксисом и встроенной поддержкой параллелизма. Используется в highload-системах, DevOps и backend-разработке.

C#

Язык от Microsoft, используется с платформой .NET. Применяется в разработке desktop-, web-, enterprise- и игровых приложений.

PHP

Скриптовый язык, ориентированный на веб. Часто используется с CMS (например, WordPress) и фреймворками (Laravel, Symfony).

Ruby

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

SQL / PostgreSQL

SQL — язык запросов к реляционным БД. PostgreSQL — популярная СУБД, используется в веб-приложениях, аналитике, поддерживает расширения и транзакции.

Docker

Инструмент для упаковки приложений в контейнеры. Обеспечивает воспроизводимую среду разработки и удобное развертывание.

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

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

Смотреть курсы по всем специализациям

Теги:
Всего голосов 6: ↑4 и ↓2+6
Комментарии0

Под пост в телеграм про наш ответ аналог Grafana пришли руководители "Лаборатории Числитель" и конкретно "Пульта", в чью систему входит платформа мониторинга и анализа "Графиня".

Дмитрий Унтила и Владимир Утратенко любезно ответили на ряд вопросов по платформе, и я хотел бы подвести краткое резюме:

  • Запрос на аналог Grafana появился в момент продажи "Пульта", так как "не всем можно брать забугорный опесорс себе в контур. Потому решили делать. А название Графиня просто ради лулзов."

  • Графиня писалась с полного нуля. Хотя предложение взять за основу Grafana было, но команда смогла обосновать геморрой, который на неё упадёт, если взяться за доработку, и объяснила руководству, почему лучше сделать с нуля.

  • Время разработки: 3 месяца - MVP, 6 месяцев - 1 релиз.

  • Технологический стек: фронтенд: TypeScript + React 18, бэкенд: TypeScript + Node.js, база данных: MongoDB, плагины: Java.

  • На мое предложение сделать проект опенсорс Дмитрий Унтила пообещал подумать. Но, понятное дело, если это часть коммерческого продукта, прям сильно думать в лаборатории не будут))

  • Демо-стенда в интернете пока нет, можно только записаться на показ системы через форму обратной связи.

Благодарю парней за такой актив и обратную связь, рад, что у людей есть на это время!

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии3

Многие крупные компании применяют Go, а спрос на опытных инженеров, владеющих Go, высок как никогда. Онбординг проходит действительно быстро, и у нас есть успешные тому примеры. Все благодаря общей простоте языка и отсутствию function coloring. В карточках рассказываем, как это получилось у Кирилла в 2ГИС↓

Теги:
Всего голосов 6: ↑3 и ↓30
Комментарии4

Обновлена информационная база JBook по изучению Java полностью на русском языке. Проект помогает выучить язык с полного нуля и до уровня поиска работы, включая концепции, приёмы, актуальные фреймворки, ООП, основные алгоритмы, паттерны решения задач и видеоразборы. Есть множество упражнений разного уровня сложности к каждой лекции. Проект развивается с 2018 года и постоянно обновляется вместе с версиями Java, документацией и новыми подходами к разработке.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Вклад авторов