24-25 августа 2019 года в Санкт-Петербурге прошёл IT-фестиваль TechTrain 2019, в котором приняли участие представители Java-сообществ JUG.ru (Санкт-Петербург), JUGNsk (Новосибирск) и JUG.MSK (Москва). Как прошла конференция, что было на совместном стенде JUG — обо всём этом рассказывается дальше.
Привычное место в Питере конференций, проводимых JUG Ru Group, — конгрессно-выставочный центр «Экспофорум». Для подготовки мероприятий на стенде удобнее приехать в предыдущий день, перед днями проведения конференции.
Ночной и утренний вид «Экспофорума» перед конференцией. Вход на TechTrain непосредственно перед началом, утром первого дня.
Стенды компаний и сообществ
В первый день существует некоторый временной промежуток, в который участники выставки (на стендах компаний и сообществ) уже могут попасть на территорию, а обычные участники — ещё нет. Воспользовавшись этой возможностью, мне удалось быстро обойти стенды для первоначального ознакомления.
Слева от входа — стенды компаний, справа — стенды сообществ. Стенд компании КРОК, на территории которой традиционно проходят встречи московского Java-сообщества. Информационный стенд организаторов конференции.
Неожиданная встреча и разговор с Евгением Трифоновым phillennium, неизменно интересные статьи которого читатели Хабра регулярно имеют возможность читать. Стенд сообществ DotNet.Ru.
Стенды сообществ языков программирования C++, JavaScript и Go.
Активности на стенде JUG
В этом году стенд российских Java User Group (JUG) объединил представителей трёх сообществ: Глеб Смирнов и Владимир Ситников (JUG.ru), Иван Углянский (JUGNsk), Андрей Когунь, Иван Пономарёв, Владислав Сенин и автор статьи (JUG.MSK).
Предварительно совместно были подготовлена развлекательно-просветительская программа для участников конференции и выбраны призы для поощрения победителей конкурсов.
Организаторы фестиваля договорились с представителями стендов компаний и сообществ о принятии участия в общем квесте. При посещении каждого стенда, участвующего в квесте, для получения заветного штампика на программку нужно было как-то проявить себя.
Мы подготовили вопросы, связанные с языком программирования Java. За 3 правильных ответа ставился штампик, за 5 — дарился блокнот на выбор, за 10 — деревянный паззл. Суперпризом были 4 билета на предстоящую Java-конференцию Joker (2 оффлайн-билета и 2 онлайн). Об условиях получения суперприза рассказано далее.
В первый день вопросов было 30, мы разбили их на 6 наборов по 5, предлагая из 5-ти правильно ответить хотя бы на 3. Предусмотрительно распечатанные листочки с вопросами быстро были либо разобраны, либо исписаны отвечающими. В качестве временного решения узкие полоски с вопросами были вырезаны из листов и перемешаны на столе.
Перед вторым днём мы пересмотрели вопросы, выкинув часть и дополнив другими, вопросов стало 34. При составлении вопросов учитывали, что мероприятие не является Java-конференцией. Старались быть максимально доброжелательными, разрешая пользоваться интернетом и подробно объясняя ответы на вопросы. Главное же не получение штампика, а приобретение каких-то новых знаний.
Второй попыткой были заранее нарезанные билеты по 1/5 листа формата A4. Дополнительно к ним было 4 экземпляра листов с простым пронумерованным списком вопросов, данный вариант и оказался самым удобным. Разрешалось из общего списка выбрать любые вопросы.
При печати подготовленных файлов в формате PDF удалось почувствовать себя участников квеста — компьютер в отеле представлял из себя урезанный вариант операционной системы с отсутствующей возможностью обзора дисков. В меню присутствовали ярлыки на portable-версии Word, Excel и PowerPoint, но отсутствовала возможность запустить какую-либо программу для открытия PDF. Дополнительной сложностью явилось то, что интерфейс и клавиатура были переключены на китайский язык постояльцами отеля-носителями данного языка. Открытие PDF в Word, увы, не спасло — вёрстка сильно искажалась. При повторном перетыкании флешки удалось поймать момент с возможностью открытия контекстного меню для выбора папки с файлом.
- Какой инструкции не существует в байт-коде Java: а) lookupswitch б) goto в) throw г) return?
- C2, G1, C4, CMS — что лишнее?
- Panama, Valhalla, Amber, Loom — что объединяет эти слова?
- Под какой лицензией выпускается OpenJDK?
- Что такое C2-компилятор?
- Что такое JUG?
- Что такое GraalVM?
- Что такое 0xCAFEBABE?
- Что такое sun.misc.Unsafe?
- Что такое JPoint, Joker, JBreak?
- Сколько на данный момент есть русских Java Champions (и перечислите их)?
- Перечислите три наиболее популярные среды для Java-разработки (IDE) в порядке убывания популярности.
- Существует традиция при наименовании JVM-языков программирования, фреймворков и библиотек использовать названия островов, например, каких?
- Дистрибутивы JRE и JDK (соответственно, для выполнения и разработки приложений на Java) собираются на основе кода OpenJDK. Назовите хотя бы один существующий дистрибутив, кроме Oracle JDK.
- Назовите известные вам JVM-языки программирования (запускающиеся на Java virtual
machine, компилируемые в Java-байткод или JIT-компилируемые при выполнении). - Назовите хотя бы один свободный (open source) и один коммерческий сервер приложений (application server, AS) для Java.
- Сколько лет языку Java? (считать от релиза версии 1.0)
- Что такое JIT и АОТ?
- Расшифровать и объяснить, что такое JEP?
- Расшифровать и объяснить, что такое JMX?
- Расшифровать и объяснить, что такое JNDI?
- Расшифровать и объяснить, что такое JSP?
- Расшифровать и объяснить, что такое JSR?
- Расшифровать и объяснить, что такое JPA?
- Расшифровать и объяснить, что такое TCK?
- Есть ли в Java ручное управление памятью?
- Что такое -Xmx? Что такое -Xss?
- OOM, NPE, IOOBE — что это за аббревиатуры?
- Программы на языке Java интерпретируются, JIT-компилируются или AOT-компилируются?
- Есть ли в языке Java оператор goto или какой-нибудь его аналог?
- Что такое Epsilon GC? Чем он отличается от других GC?
- Что такое слабая ссылка в Java? Какие бывают разновидности слабых ссылок?
- Чем отличается ClassNotFoundException от NoClassDefFoundError?
- Найдите 2 ошибки: class Hello { void main() { System.out.println(“Hello, world”); } }
За время стояния на стенде удалось пообщаться, по крайней мере, с десятками участников конференции, очень часто начиная разговор первым. Посещение стенда не всегда сводилось к ответам для получения призов, многие отвечали на вопросы просто так и задавали интересные вопросы. Например, мне лично были заданы такие вопросы:
- «Знаю ли я ответы на все задаваемые вопросы?» (ответил утвердительно, сказав, что принимал участие в их составлении)
- «Есть ли будущее у Java?» (имелось ввиду, стоит ли учить Java при возрастании популярности языка Kotlin, — пришли к мнению, что даже в этом случае хорошее знание Java является обязательным)
- «Какую первую книгу почитать при изучении Java?» (порекомендовал 4-ю редакцию «Thinking in Java» Брюса Эккеля: или сразу английский вариант, или сначала русский, а потом английский с оставшимися непереведёнными в русском переводе главами)
Игра «Угадай спикера»
Специально для фестиваля TechTrain было написано веб-приложение «Угадай спикера». Код находится в репозитории GitHub: бекенд написан на Java (используется Spring Boot), фронтенд — на TypeScript/JavaScript (используется Angular). Игра всё ещё доступна на сервере jugspeakers.online (в случае недоступности сайта оставлена возможность скачать с GitHub уже собранный дистрибутив для запуска или скомпилировать самостоятельно, см. описание). Приложение было запущено на ноутбуке и транслировалось на плазму. Также участникам квеста и посетителям посетителям стенда предлагалось самостоятельно сыграть в него на своих смартфонах и ноутбуках.
Программа содержит фото докладчиков всех конференций, проведённых JUG Ru Group за все годы, и всех митапов JUG.ru, JUGNsk и JUG.MSK. Игроку предлагается выбрать один или несколько наборов, каждый из которых представляет из себя конференцию. После выбора ниже отображается количество спикеров в выбранных наборах. При объединении разных наборов дубликаты (одни и те же люди могут быть докладчиками разных видов конференций) исключаются. Если выбрать все наборы, общее количество спикеров составит 954.
Первый вид экрана показывает ситуацию, когда выбрана только одна первая конференция. Второй вид экрана — предлагаемые 6 наборов для игры для завоевания призов (3 Java-конференции и 3 вида Java-митапов). Таким образом, максимально возможное количество очков было 285. Возможно два типа игры — угадать имя и фамилию по фото (см. третий скриншот)…
… и, наоборот, — угадать фото по имени и фамилии (см. четвёртый скриншот). В конце игры показываются результаты: количество правильно, ошибочно отвеченных и пропущенных (если игра была прервана) вопросов. Дополнительно предоставляется возможность посмотреть, в каких вопросах были допущены ошибки (см. пятый скриншот). Игра может быть прервана в любой момент выбором ссылки «Cancel» (см. шестой скриншот).
Награждение победителей
Итоги конкурса были подведены в 16:00 второго дня. Шесть человек, набравшие наибольшее количество очков из возможных 285, получили возможность сами выбрать желаемые призы.
Андрей Когунь и Алексей Стукалов (спикеры конференций, присутствующие в наборе фотографий в игре) у плазмы на стенде. Доска с текущими результатами. Андрей начинает подводить итоги, объявляя победителей.
Победитель и занявшие второе и третье места с выбранными призами.
Занявший четвёртое место с зонтом с символикой конференции Joker.
Пятое и шестое место. Иван Углянский, Андрей Когунь и Глеб Смирнов — усталые, но достойно выдержавшие два дня конференции.
Интересные люди на стенде
Алексей Стукалов (Haulmont), Антон Архипов и Юрий Артамонов (JetBrains), Александр Белокрылов (BellSoft), Никита Сальников-Тарновский (Plumbr), Евгений Трифонов, Олег Чирухин и Алексей Фёдоров (JUG Ru Group), Олег Докука (Netifi) — все эти достойные и интересные люди, имеющие прямое отношение к Java, заглянули на стенд и с ними можно было пообщаться.
Доклады
Удалось посмотреть два доклада в первый день (Григорий Бакунов «AI vs. AI», Роман Гордеев «На пути к распределенной системе»)…
… и два доклада во второй (Сергей Абдульманов «Почему не надо идти в малый бизнес», Richard Stallman «Free software and your freedom»).
Обязательно посмотрю в записи, по крайней мере, ещё три доклада: John Romero «Quake Postmortem», Евгений Борисов «Spring Patterns», Кирилл Толкачёв и Максим Гореликов «Getting sh!t done in devops style: разрабатываем так, чтобы коллегам не хотелось вас прищучить».
Нетехнические активности
Кроме докладов и технических викторин было множество и нетехнических событий. Одним из них была возможность поиграть в DOOM c Джоном Ромеро, одним из создателей игры. В первый день в том же холле он раздавал автографы. К сожалению, не догадался сфотографировать очень длинную очередь из желающих автографа.
Спеша на обед, чтобы как можно быстрее вернуться на стенд, невольно остановился, чтобы понаблюдать за игрой. В это время как раз на место справа сел новый соперник Джона.
Было очень интересно посмотреть противостояние — на экране слева отображалось видимое одним игроком, на экране справа — вторым. На самом правом фото приведен cacodemon из DOOM со стенда компьютерных игр конференции.
Игровые автоматы и компьютерные игры
Времени, свободного от стояния на стенде и посещения докладов, осталось только на последние полчаса перед закрытием конференции. Удалось за это время поиграть во все игровые автоматы, в том числе исполнить детскую мечту — впервые пострелять в «Снайпер» (оказалось, что играть достаточно легко).
Кроме автоматов имелись ящички (левый снимок), по надписям на которых нужно было догадаться, что внутри. Предположив ответ, в круглую шторку можно было сунуть руки для осязания, в окошки сверху — посмотреть, нажав кнопку подсветки. В прозрачных кубах (второй снимок) находились разные пахучие раритетные объекты, запах которых можно было почувствовать, приблизив нос к отверстиям. В деревянных кубах (фото справа) находилось что-то, что нужно было угадать по звуку, прижав к уху наушник.
Уголок компьютерных игр, именно здесь находился монстр из DOOM, приводившийся выше с фото Джона Ромеро.
Координаты JUG, участвовавших в конференции
JUG.ru:
- TimePad — подписка на оповещение по почте о встречах
- Хабр — анонсы встреч со ссылкой на регистрацию
- YouTube — видео докладов
- Twitter — анонсы встреч
JUGNsk:
- Meetup — анонсы встреч и регистрация на них, подписка на оповещение по почте о встречах
- YouTube — видео докладов
- Speaker Deck — презентации докладов
- VK — анонсы встреч, фотоотчёты, ссылки на материалы прошедших встреч
- Twitter: учётная запись (анонсы встреч, фотоотчётов, видео) и хэштег (твиты с комментариями о встречах)
- Telegram — анонсы встреч, фотоотчёты, ссылки на материалы прошедших встреч, общение
JUG.MSK:
- TimePad — анонсы встреч и регистрация на них, подписка на оповещение по почте о встречах
- YouTube — видео докладов
- Speaker Deck — презентации докладов
- VK — анонсы встреч, фотоотчёты, ссылки на материалы прошедших встреч
- Twitter: учётная запись (анонсы встреч, фотоотчётов, видео) и хэштег (твиты с комментариями о встречах)
- Хабр — обзоры встреч, найти все обзоры можно по тегу
Автор: dbelob