ru
Feedback
Мир Plat.Form

Мир Plat.Form

Открыть в Telegram

Привет! Это официальная страница Мир Plat.Form в Telegram. И ты тут наверняка не просто так, а чтобы узнать последние новости, послушать экспертов, чему-то научиться или стать частью нашей ИТ-команды.

Больше
2 665
Подписчики
-124 часа
-27 дней
+3330 дней
Архив постов
Проводим тест на моторику и фантазию 🔍 Лапки панды уже готовы к эксперименту — осталось определить их содержимое. 🎨🎨🎨🎨🎨 💳🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 Твоя задача: 1. Выделить картинку. 2. Скопировать и вставить её в комментарии. 3. Заменить 💳 на любой эмодзи (лучше тот, который переживёт модерацию 😉) Скорее отправляй свои версии 👇

Просто ли на самом деле вызвать Java из браузера? 👍 В новой статье наш fullstack-разработчик Зураб Гостохов продолжает собир
Просто ли на самом деле вызвать Java из браузера? 👍 В новой статье наш fullstack-разработчик Зураб Гостохов продолжает собирать цепочку между веб-страницей и локальной Java-программой.
Во второй части разбираемся, как перейти от разового вызова к полноценному двустороннему каналу: наладить обмен между браузером и Java-хостом, передавать прогресс, отменять задачи и переживать обрывы соединения 😄
Как всё это связать и заставить стабильно работать ➡️ читай на Хабре

+3
Как распознать QA-инженера вне рабочего чата? 👀 На прошедшем митапе Мир Plat.Form × Moscow QA искали ответ на этот и другие важные вопросы: сравнивали запуск релиза с событиями из жизни и выясняли, при чём здесь прыжок в море. 😄 Смотри видео и ищи себя на кадрах в альбоме ВК 👇 Мы в MAX

Сбор на подарок коллеге вышел на новый технологический уровень 🤝 Вместо «скинь номер», «а какой банк?» и лишних уточнений —
Сбор на подарок коллеге вышел на новый технологический уровень 🤝 Вместо «скинь номер», «а какой банк?» и лишних уточнений — C2C-ссылка или QR-код. Для сбора можно даже задать срок действия ссылки и заранее указать сумму — одним словом ✨текнолоджия ✨ А что происходит после сканирования QR и как несколько веков переводов привели нас к этому сценарию — рассказываем в спецпроекте. ➡️ Читать статью на Хабре

Золото в теннисе, бадминтоне и паделе 🥇 Ворвались командой на V Международные летние корпоративные игры — в этом году Mir Pl
+3
Золото в теннисе, бадминтоне и паделе 🥇 Ворвались командой на V Международные летние корпоративные игры — в этом году Mir Plat.Form представляли 27 коллег. Соревновались в пяти дисциплинах, а особенно эффектным получился дебют в паделе: впервые вышли на турнир — и сразу забрали первое место. Ну что сказать — команда мечты! ❤️

Уже, уже:)
Уже, уже:)

Видеосообщение00:12

В нашем офисе наступило бабье лето 🌽 Продлеваем сезон и угощаемся с коллегами сладкой кукурузой — делимся настроением в кружочке 👇

Все когда-то были джунами 🎒 Даже те, кто сегодня проектирует системы, руководит командами и разбирается с задачами любой сло
+8
Все когда-то были джунами 🎒 Даже те, кто сегодня проектирует системы, руководит командами и разбирается с задачами любой сложности, когда-то начинали с чистой тетради в клеточку. К 1 сентября заглянули в школьные архивы команды Мир Plat.Form. Листай картинки и знакомься с теми, кого теперь привычнее видеть с ноутбуком, чем с портфелем ❤️ А как ты встречаешь 1 сентября сегодня? 🤓 — уроки сменились парами в вузе ❤️ — собираю в школу своих детей 😎 — наблюдаю за школьной суетой со стороны

Выбери таблетку: 🎨🎨🎨🎨🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨🎨🎨🎨🎨 Красная — Синяя — новые новые зн
+6
Выбери таблетку: 🎨🎨🎨🎨🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨🎨🎨🎨🎨 Красная — Синяя — новые новые знания🎨 знакомства 20 августа мы выбрали обе и на день погрузились в «Мир Plat.Form: перезагрузка» — шестую внутреннюю ИТ-конференцию. 👇 На сцене — 18 докладов и 27 спикеров: говорили про backend, QA, AI и ML, надёжность систем и делились кейсами, которые обычно остаются внутри команд.
А между выступлениями выходили из Матрицы по-своему: проходили антикапчу, собирали работающий платёжный QR-код, общались и встречались с теми, кого чаще видишь только в рабочих чатах.
Перезагрузка завершена — листай фотографии и смотри, как это было ❤️

$ happy_birthday_linux 🎉👍 В честь дня рождения Linux собрали команды терминала, без которых наши разработчики уже не предст
+4
$ happy_birthday_linux 🎉👍 В честь дня рождения Linux собрали команды терминала, без которых наши разработчики уже не представляют рабочий день. Что вошло в их личный топ — смотри в карточках. Делись своей любимой командой в комментариях 👇

Что происходит с Java после Loom? 🤔 Разбираться будем на JVM Day — конференции для тех, кому интересно не только писать код,
Что происходит с Java после Loom? 🤔 Разбираться будем на JVM Day — конференции для тех, кому интересно не только писать код, но и знать, что происходит с ним под капотом. 👇 В программе — выступление Александра Ланцова, эксперта отдела расчётных систем Мир Plat.Form, с докладом «Java после Loom: альтернативные модели конкурентности». Александр разберёт, что изменилось после появления Virtual Threads, и покажет, как теперь можно работать с моделями CSP и actors без лишней тяжеловесности. ✍️ Когда? 29 августа, доклад Александра с 11:40 до 12:30 ✍️ Где? T-Space, Москва, ул. Грузинский Вал, д. 7 Если Java и устройство бэкенда — твоя тема, приходи послушать 🙌 ➡️ Подробнее о докладе и конференции

10 лет на одном месте ≠ 10 лет в одной роли 😄 В 2016 году Саша пришёл в НСПК на позицию консультанта. Сегодня он — директор
+7
10 лет на одном месте ≠ 10 лет в одной роли 😄 В 2016 году Саша пришёл в НСПК на позицию консультанта. Сегодня он — директор направления в Департаменте разработки. Собрали его историю — о карьерных поворотах, задачах и о том, почему иногда для следующего шага не нужно никуда уходить. 👇 А тем, кто думает о смене работы, но пока сомневается, Саша советует:
«Главное — не где расти, а хотеть развиваться через новые вызовы. Если внутри компании есть и вызовы, и возможность на них ответить — значит, вы на верном пути».
Кажется, 10+ лет — вполне убедительный аргумент 😉 👇 Мы в MAX

Выяснили, где Пётр подхватил Stream’лянку? 😄 Ошибка спряталась в инверсии: в текущей реализации I просто меняет накопленный результат внутри reduce.
Такая логика сработает корректно только если I попадёт в стрим последним. Но stringSet — это HashSet, а у него нет гарантированного порядка обхода элементов. Петру просто повезло: во всех тестах с инверсией I обрабатывался в нужный момент, поэтому тесты прошли.
📌 Например, этот кейс уже помог бы поймать ошибку:
assertFalse(new StringSet("I;a;z;c;ALL").isEntityInSet("z"))
Чтобы не зависеть от порядка элементов, перепишем проверку через обычные логические выражения:
var result = stringSet.contains(ALL) || stringSet.contains(entity);
return stringSet.contains(INVERTED) != result;
➡️ Так код становится проще, предсказуемее и быстрее: вместо линейного обхода получаем проверки по HashSet, которые в среднем выполняются за константное время. Ставь ❤️, чтобы пожелать Петру скорейшего выздоровления от Stream’лянки

Руки так и тянутся переписать код 😁 Как справляешься с такой ситуацией? 😄 — работает? не трогаю ❤️ — аккуратно провожу рефа
Руки так и тянутся переписать код 😁 Как справляешься с такой ситуацией? 😄 — работает? не трогаю ❤️ — аккуратно провожу рефакторинг 🔥 — никакие верёвки меня не удержат

А задачки заразные?... Ещё как 😄 Поэтому возвращаемся с новой разминкой для бэкенд-разработчиков ⬇️ При внедрении новых фич в СБП изменения часто раскатывают постепенно: сначала для одних банков, потом для других. Их идентификаторы передаются строкой через разделитель: bankId1;bankId2 Иногда нужно включить фичу сразу для всех банков или, наоборот, для всех, кроме указанных. Для этого Пётр добавил специальные значения: ALL — фича включена для всех I — при добавлении этого значения (в любом количестве) список начинает работать в режиме инверсии. 👍 К сожалению, Пётр заболел Stream'лянкой поэтому реализацию он написал так:
static class StringSet {
    private static final String DELIMITER = ";";
    private static final String ALL = "ALL";
    private static final String INVERTED = "I";

    private Set<String> stringSet;

    public StringSet(@Nonnull String s) {
        stringSet = new HashSet<>(Arrays.asList(s.split(DELIMITER)));
    }

    public boolean isEntityInSet(String entity) {
        return stringSet.stream()
            .reduce(false,
                (acc, item) -> {
                    if (item.equals(entity)) return true;
                    else if (item.equals(ALL)) return true;
                    else if (item.equals(INVERTED)) return !acc;
                    else return acc;
                },
                (a1, a2) -> a1 || a2
            );
    }
}
Пётр проверил код тестами — и все они успешно прошли:
@Test
void stringSetTest() {
    assertTrue(new StringSet("a").isEntityInSet("a"));
    assertFalse(new StringSet("a").isEntityInSet("b"));
    assertTrue(new StringSet("a;b").isEntityInSet("b"));
    assertTrue(new StringSet("a;b").isEntityInSet("a"));
    assertTrue(new StringSet("ALL").isEntityInSet("a"));
    assertFalse(new StringSet("I;a").isEntityInSet("a"));
    assertFalse(new StringSet("a;I").isEntityInSet("a"));
    assertFalse(new StringSet("I;I;a").isEntityInSet("a"));
    assertFalse(new StringSet("I;ALL;a").isEntityInSet("a"));
}
🏃‍♀️ Задача: найти ошибку, объяснить, почему тесты успешно проходили, и предложить вариант, при котором проверка будет работать корректно. ➡️ Пиши свою версию в комментариях и не забывай спрятать ответ под спойлер 😄 С правильным ответом вернемся в конце недели 🤝