![JPoint, Joker и JUG ru](/img/default-banner.jpg)
- Видео 1 048
- Просмотров 9 478 662
JPoint, Joker и JUG ru
Россия
Добавлен 2 июн 2013
Joker и JPoint - две крупнейшие в России Java-конференции. JUG.ru (Java User Group) - сообщество, проводящее Java-митапы. В докладах на этих мероприятиях - всё, что может быть полезно Java-разработчику: от практической информации по использованию Spring Boot до принципов работы JVM «под капотом».
Ближайшая конференция: JPoint 2024, 17 апреля · Online
24-25 апреля · Москва
Подробности и билеты: cutt.ly/ewDhZNNc
Актуальные для конференции темы:
- VM/Runtime (JVM, JDK, Loom, байткод...)
- Тулинг и фреймворки (Spring, Hibernate, IDE, JUnit...)
- Архитектура (distributed, reactive, event-driven...)
- JVM-языки (Java, Kotlin, Scala...)
- Эксплуатация (CI/CD, Kubernetes, cloud, monitoring...)
Ближайшая конференция: JPoint 2024, 17 апреля · Online
24-25 апреля · Москва
Подробности и билеты: cutt.ly/ewDhZNNc
Актуальные для конференции темы:
- VM/Runtime (JVM, JDK, Loom, байткод...)
- Тулинг и фреймворки (Spring, Hibernate, IDE, JUnit...)
- Архитектура (distributed, reactive, event-driven...)
- JVM-языки (Java, Kotlin, Scala...)
- Эксплуатация (CI/CD, Kubernetes, cloud, monitoring...)
Олег Естехин — Как готовить свой код к виртуальным потокам
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург + трансляция).
Подробности и билеты: jrg.su/Ypf1HW
- -
Виртуальные потоки в релизе с осени прошлого года. Все их очень ждали, а после релиза информации о том, что кто-то на них перешел, не так уж и много. То ли все очень просто, и все (кроме нас) уже давно переключились, и там нечего рассказывать. То ли все очень сложно, и все просто стесняются рассказать о своих фейлах. А нам бы очень не помешали подсказки - что и зачем менять в коде, чтобы он мог работать на виртуальных потоках.
Разобираемся, почему надо что-то менять, с какими проблемами можно столкнуться и как их диагностировать. Подсматриваем, что дел...
Подробности и билеты: jrg.su/Ypf1HW
- -
Виртуальные потоки в релизе с осени прошлого года. Все их очень ждали, а после релиза информации о том, что кто-то на них перешел, не так уж и много. То ли все очень просто, и все (кроме нас) уже давно переключились, и там нечего рассказывать. То ли все очень сложно, и все просто стесняются рассказать о своих фейлах. А нам бы очень не помешали подсказки - что и зачем менять в коде, чтобы он мог работать на виртуальных потоках.
Разобираемся, почему надо что-то менять, с какими проблемами можно столкнуться и как их диагностировать. Подсматриваем, что дел...
Просмотров: 2 831
Видео
Александр Ланцов - Нестандартные расширения модели памяти на практике
Просмотров 1,4 тыс.День назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Продолжение доклада с JPoint 2023 «Не happens-before единым: нестандартные семантики» - ruclips.net/video/UZbPOtEgcoY/видео.html В первой части мы познакомились с существующими в Java семантиками и теми гарантиями, что они предоставляют. Настало время узнат...
Рустам Курамшин - Правильный DevOps для Spring Boot и Java
Просмотров 8 тыс.День назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Доклад о лучших практиках в построении DevOps-процессов для проектов, написанных на Spring Framework и Java/Kotlin. Бывает так, что разработчики не интересуются DevOps-процессами, а DevOps-инженеры не знакомы с традиционными подходами конкретного фреймворка...
Алексей Семихатов - Квантовая революция: через неразбериху к триумфу
Просмотров 75 тыс.14 дней назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Накопление не поддающихся объяснению экспериментальных данных в первой четверти XX века привело к запросу на новое понимание природы с отказом от наглядности. Две независимо придуманные абстрактные схемы сначала выглядели враждебными друг другу, но оказалис...
Максим Морев, Газпромбанк.Тех - Код, которого не должно быть: Vertical Slice Architecture в Пузырьке
Просмотров 2,8 тыс.Месяц назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Сейчас много задач по рефакторингу или импортозамещению, разработчики собирают информацию по частям из хранимых процедур, описаний. Поделюсь своим опытом рефакторинга и переосмысления легаси-систем. Как написал Эрик Эванс в своей книге «Предметно-ориентиров...
Владимир Хростицкий, Мир Plat.Form - Cassandra: путь в продакшен
Просмотров 1,5 тыс.Месяц назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Современная разработка располагает богатым набором инструментов и технологий для решения тех или иных задач. В основном используются популярные и хорошо зарекомендовавшие себя продукты. Но иногда сложные задачи требуют применения новых, не совсем привычных ...
Николай Комраков и Илья Смирнов, Гринатом - Интеграционная шина вместо SAP - при чем тут Java
Просмотров 963Месяц назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Как пришли к необходимости внедрения ESB-системы, а потом к ее импортозамещению (спойлер - уход SAP). Как сделали из open source отраслевое решение: оптимизация настройки потоков с помощью low-code решения, снижение стоимости интеграций; бесшовность - за сч...
Сергей Синдеев, Группа «Рексофт» - Hibernate, OOM и ооочень длинные запросы
Просмотров 2,9 тыс.Месяц назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Как бы мы ни хотели, утечки памяти иногда случаются. Рассматриваем, что же такое OOM, как искать его причину и чем могут помочь средства логирования и мониторинга такими средствами, как Kibana и Grafana. Получаем дамп с помощью Spring Actuator и VisualVM. З...
Александр Дроздов, Axiom JDK - Убираем мусор без следов
Просмотров 780Месяц назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Доклады о сборщиках мусора звучат на Java-конференциях уже более 10 лет. За это время наши коллеги успели рассказать и о способах настройки сборщиков мусора, и о технологиях, которые в них реализованы. Однако в настоящее время появились новые проблемы, треб...
Александр Козлов и Максим Чудновский, СберТех - Java в Service Mesh: Service Discovery для Istio
Просмотров 965Месяц назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Многие из нас, кто сталкивался с микросервисной архитектурой, знают, что одних маленьких сервисов недостаточно. Необходимо обеспечить их надежной средой обитания и информацией о местах расположения остальных сервисов. В докладе рассматриваем, как это можно ...
Открытие офлайн-части JPoint 2024
Просмотров 4692 месяца назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Говорим о расписании, сессиях и делимся информацией. Ведущие: Александр Нозик, Алексей Федоров.
Алексей Чернявский, Платформа Сфера - Как выжать все соки из Jenkins
Просмотров 1,8 тыс.2 месяца назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Спикер рассказывает, как построить CI/CD-продукт, перед которым стоит задача выдерживать 160000 сборок в сутки. В качестве базового продукта Алексей с командой взяли Jenkins с его преимуществами и недостатками. Провели анализ основных узких мест производите...
Александр Казанцев, hh.ru - Scylla vs Cassandra = ?
Просмотров 1,8 тыс.2 месяца назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - На многих проектах используются key-value хранилища, и hh.ru - не исключение. Однажды команда поняла, что Cassandra больше не укладывается в желанные миллисекунды. Попытались поднастроить, покрутить, но чуда не произошло. Попробовали альтернативные варианты...
Никита Шубин, X5 Tech - Проблемы маленьких приложений при увеличении нагрузки по данным
Просмотров 1,3 тыс.2 месяца назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Эволюция приходит в большинство систем. Хорошо, если заранее подготовились к большой пользовательской нагрузке и соответствующему количеству данных: были собраны нефункциональные требования, создано архитектурное решение, проводился контроль над разработкой...
Андрей Зарубин, Росбанк - Между прожаркой и карго-культом
Просмотров 8902 месяца назад
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург трансляция). Подробности и билеты: jrg.su/Ypf1HW - - Спикер раскрывает необходимость процесса код-ревью, ловушки, в которые можно попасть при неправильной реализации, и специфику код-ревью в проектах на Java. Посмотрим на доступные всем инструменты, практики и их комбинации. Каждый найдет для себя то, что мож...
Андрей Околелов, РСХБ-Интех - Средство генерации SQL-запроса для упрощения задач по тестированию
Просмотров 8772 месяца назад
Андрей Околелов, РСХБ-Интех - Средство генерации SQL-запроса для упрощения задач по тестированию
Антон Ромза, ITFB Group - Работа с jsonb, массивами и комплексными типами PostgreSQL для JPA
Просмотров 2,4 тыс.2 месяца назад
Антон Ромза, ITFB Group - Работа с jsonb, массивами и комплексными типами PostgreSQL для JPA
Обсуждение от Сбера - Польза и вред Java-сообществ для инженеров
Просмотров 1,2 тыс.2 месяца назад
Обсуждение от Сбера - Польза и вред Java-сообществ для инженеров
Станислав Страупе - Квантовые вычисления: основные идеи и современное состояние технологии
Просмотров 2,1 тыс.2 месяца назад
Станислав Страупе - Квантовые вычисления: основные идеи и современное состояние технологии
Владимир Красильщик - The show must go on: нагрузка и оптимизация онлайн-конференции
Просмотров 5862 месяца назад
Владимир Красильщик - The show must go on: нагрузка и оптимизация онлайн-конференции
Евгений Ненахов - Потоковая обработка с Kafka в условиях Big Data
Просмотров 2,8 тыс.2 месяца назад
Евгений Ненахов - Потоковая обработка с Kafka в условиях Big Data
Александр Нозик - Карты, схемы и Compose
Просмотров 8182 месяца назад
Александр Нозик - Карты, схемы и Compose
Антон Котов - Reactive для CRUD: фантазии и реальность
Просмотров 3,5 тыс.2 месяца назад
Антон Котов - Reactive для CRUD: фантазии и реальность
Дмитрий Стогов - IR JIT Framework: база для следующего поколения JIT в PHP
Просмотров 3842 месяца назад
Дмитрий Стогов - IR JIT Framework: база для следующего поколения JIT в PHP
Александра Волушкова - OpenAPI и как его можно применить для Kafka
Просмотров 8432 месяца назад
Александра Волушкова - OpenAPI и как его можно применить для Kafka
Павел Кислов - Spring Security: повседневное и неочевидное
Просмотров 3,5 тыс.2 месяца назад
Павел Кислов - Spring Security: повседневное и неочевидное
Александр Козлов, Максим Чудновский - Правда ли, что Dubbo - это как gRPC, но из Китая?
Просмотров 2972 месяца назад
Александр Козлов, Максим Чудновский - Правда ли, что Dubbo - это как gRPC, но из Китая?
Денис Габайдулин - Индексация в поисковой платформе Ozon
Просмотров 7982 месяца назад
Денис Габайдулин - Индексация в поисковой платформе Ozon
Игорь Исаев - Запредельный язык: нелитературный русский, акустика речи и фонетика рэпа
Просмотров 4302 месяца назад
Игорь Исаев - Запредельный язык: нелитературный русский, акустика речи и фонетика рэпа
ппц как буду ждать второй доклад
понравилось. всё по делу. кратко и четко. и главное ПОЛЕЗНО
У Рустама отличные лекции
Ужасно Ужасно Ужасно... 23мин. "...и вот, удивительная вещь, измерительный прибор, странным образом, влияет на волновую функцию...." Тоесть, совокупность материальных тел, собранных в некоторой последовательности, и обладающая вследствии этого и замысла создателя, набором свойств, ВЫЗЫВАЕТ КОЛЛАПС НЕ МАТЕРИАЛЬНОГО ТЕЛА, А НАБОРА СИМВОЛОВ на доске или в тетради. Это" клиника", ребята
Это не для детсада просто лекция. А для людей, которые хотя бы школу закончили. Если ты чего-то не понял - не расстраивайся. Подрастешь - поймёшь.
Вообще ничего не понятно, но так убедительно!... Не пускайте его в политику, иначе будете голосовать за всё, что он предложит то:)
Спикер реально хорош! Читаю его на Хабре.
Я думаю, Семихатову надо вначале научиться писать школьные сочинения а уж потом идти пересдавать свою докторскую или вообще от неё отказаться. Человек абсолютно не способен преподавать и хоть как то раскрыть тему, свей лекции скачки то туда то сюда это не лекция это бред больного. Стыдно В названии хорошо сказано неразбериха, но это запутывает а не просвещает.
Рустам, спасибо!! Было бы здорово увидеть материал, не вошедший в доклад)
Такая себе критика, особенно про статические классы. Код нужно организовывать, если понятие Class использовать как некий namespace то че париться, надо просто правильно обозначать сам класс. Чтобы компилятор не ломал себе голову созданием конструктора/деструктора.
Не помнимаю хейта систем дизайна на интервью - это на порядки проще по трудозатратам чем алгосы, т.к. как минимум там нельзя ничего проверить, а значит, можно лить много воды 😊. Прочитай пару книг по теме по диагонали как художественную литературу. Потом на собесе просто вываливай всю инфу по ключевым словам из головы, рисуй квадратики, стрелочки. Кароче представь себя ChatGPT ...или студентом-экономистом, пишущим диплом 😅.
Смотрите следующую часть доклада Александра - ruclips.net/video/092UL69hQd0/видео.html
Смотрите предыдущую часть доклада Александра - ruclips.net/video/UZbPOtEgcoY/видео.html
Мне кажется, темную энергию надо искать где-то рядом с Алексеем :))) Спасибо за лекцию!
Такой долбоёбнынуй комментатор, что проще на хер послать.
По сути он предлагает процедурное программирование на манер ООП. То, что раньше было статическими функциями, теперь оборачиваем классами и гордо называем ООП.
Аймэдж, как айфон что ли? А ю сириес? Образ (имадж) уже не подходят?
Какой доктор)) не знающие основных законов в физике доктора уже?)) Болтун это)
Хехе, но теперь же надо переписать еще и без synchronized который плохо дружит с виртуальными тредами )
Спасибо! В том числе и за доказательство, что волновая функция не линейна. Мечта Шрёдингера работала бы, если бы конусы из его уравнения все время были симметричными,т е их срезы давали бы строго равнобедренные треугольники
Господь Бог создал абсолютно пустое трехмерное пространство и материю в виде фундаментально элементарных неделимых частиц-неоатомов с определенными свойствами. Все остальное- процесс самоорганизации,в т.ч. и образование физического вакуума,структурными частицами которого также являются неоатомы. Это основа и релятивистской квантовой гравитации.
Квантов не существует иди... Ы! Как и времени
❤❤❤
Что за чушь про AT&T-синтаксис на 16:30, что на армах дефолтный синтаксис аналогичен интеловскому, что у RISC-V даже, Алексей под другими архитектурами что ли PDP-11 понимает
ничего не понятно, но очень интересно
Ну теперь я знаю ответ на вопрос, а есть ли гопники программисты или программисты гопники, в смысле быдло инженеры 😂 вообще конечно ужасно...
Очень полезный доклад, отлично!
8:33 жена Шредингера, то ли с тобой то ли не с тобой, квантовая на всю голову.
Насчёт знаков зодиака вот не понял, нужно смотреть знаки зодиака - разрабов и девопсов ? Апликухи ? Тимлида ? )))
config server - это хорошо, но далеко не всегда все микросервисы нуждаются в одной настройке, которую можно вынести на root level, и из-за этого код либо все равно дублируется либо в каком-то сервисе появятся не используемые проперти. Мы тоже используем эту фичу, но пошли немного дальше и добавили profiles. К примеру, при добавлении профиля kafka подключается application-kafka.yml, а для БД application-db.yml, итд.
Программный комитет удаляет комментарии с конструктивной критикой, как же это низко
идея ясна но 90% советов полная дичь( удачи в разработке по таким советам, ничего больше чем пет проджект с классами типа File не напишешь. интересно, а автор пробовал в энтерпрайз разработку по таким правилам?
Какой же плохой звук, Ну вот серьёзно, можно купить за 5к нормальный микрофон, нормальные наушники, это же ваш рабочий инструмент. Прошу, это такие копейки на фоне тем которые вы обсуждаете.
1. Если конфиг действительно может быть мало связан с релизом, то зачем нам новая верстя DB, без новой версии кода, эти изменения использующих? (за редким исключением). 2. Более сложная проблема - откат изменений в DB при откате релиза совсем не поднята. 3. Продакшин-Конфиг и общем репозитории/общем сервисе?! Далеко не всегда это возможно!
Ведущий очень слабый! Алексей -мега крут!
Докладчик немного газлайтит насчет «нового релиза». Мы просто поправили конфиг, мы просто накатили патч на базу. Разве это новые релизы, вопрошает он? 🤣
"А зачем мне делать релиз, если я просто хотел катануть изменения в БД"
Вижу Семихатова - ставлю лайк! Как всегда - офгигенно!
Спасибо за доклад!
По поводу потенциальных проблем при обновлении пропертей через Spring Cloud Data: В зависимости от того как определён @ConfigurationProperties класс, спринг может использовать один из двух подходов: - Если в @ConfigurationProperties классе нет ни одного final поля, то Spring будет обновлять значения в инстансе напрямую через рефлекшен и сеттеры. Никакого пересоздания бинов в таком случае не будет, запросы продолжат обрабатываться как прежде - Если в @ConfigurationProperties классе есть хотя бы одно final поле, то будет использоваться Constructor Binding. В таком случае единственный способ обновить значения полей - это пересоздать бин с пропертями с нуля. Это в свою очередь триггерит пересоздание всех бинов которые автовайрят эти проперти, и бинов которые автовайрят бины которые были пересозданные на предыдущем шаге и т.д. Насколько мне известно, в таком случае спринг просто прекращает принимать новые запросы пока все затронутые бины не пересоздадутся Но есть потенциальные проблемы когда используется смесь этих подходов. Например, вложенные проперти классы где родительский класс использует Constructor binding, а вложенное проперти - нет. Или когда часть полей в классе устанавливаются через Constructor Binding, а часть - через рефлекшен и сеттеры. В некоторых случаях спринг говорит что проперти обновились, но по факту продолжает использовать старые значения. Приходится долго и муторно отлаживать и искать какой из вложенных проперти классов виноват. С другой стороны, если ситуация обратна (родительский класс НЕ использует Constructor binding, а вложенное проперти - использует), то тогда вложенное проперти будет пересоздано, но родительское проперти - нет. Спринг просто вызовет сеттер у родительского проперти с новым значением. Это можно использовать для атомарного обновления связанных пропертей. Для примера, адрес и порт прокси сервера - эти два значения всегда должны быть консистентны. Мы хотим избежать ситуаций когда мы прочитали адрес старого прокси сервера и порт нового прокси сервера. Если вынести эти два проперти в @NestedProperty и использовать Constructor Binding для них, а при чтении сначала скопировать объект в отдельную переменную (var proxySettings = someProperty.getProxy(); var address = proxySettings.getAddress(); var port = proxySettings.getPort();), то эти два значения всегда будут консистентны друг с другом Потенциальные проблемы вызванные самим фактом изменения пропертей наживую: - Если проперти копируется при создании бина, то его практически не возможно обновить наживую. Например - проперти используется как параметр конструктора бина, или когда мы создаём бин, а потом через сеттер прокидываем значение из проперти. При попытке обновить такое проперти через клауд конфиг Спринг обновит это значение в @ConfigurationProperties классе, но в бине останется старое значение. Нужно как-то вручную пересоздавать этот бин - Неконсистентность данных когда одно и то же проперти читается много раз во время обработки запроса. Например, какой-нибудь коэффициент для расчёта/размер налога/т.д. В таком случае есть вероятность что при первом чтении проперти вернёт одно значение, а при втором чтении при обработке того же самого запроса - другое значение - Насколько мне известно, значения автовайренные через Spring Expression Language (@Value, @Scheduled, etc) обновить таким способом нельзя - Выставление невалидных значений. Например, если над классом стоит аннотация @Validated, и одно из полей проаннотировано как @Min(1). Если мы случайно выставим в проперти "0", то Спринг пересоздаст бин, проавтовайрит его куда нужно, а потом выкинет ошибку что новое значение не прошло валидацию и перестанет обрабатывать запросы В общем, с одной стороны это полезный инструмент, особенно для всяких экстренных операций. Но с другой стороны с ним очень много подводных камней. Если решите использовать его, то советую обмазаться как можно бОльшим количеством проверок, и тщательно следить какие проперти можно обновлять, а какие нет. Возможно даже стоит разделить эти проперти по разным application.yaml файлам
Спасибо за доклад. Побуду бабой-ягой: 1. Изменение настроек в проде - это, по сути, релиз. Если вы не фиксируете изменение в репозитории, то вы забудете о том, что меняли руками, и следующим деплоем затрете эти изменения. Не говоря уже о том, что каждый релиз должен быть протестирован. 2. Насчет 12 factors: там пропагандируется конфигурация через переменные окружения, как не завязанный на стек способ конфигурации. И спринг это поддерживает из коробки. 3. Запускать миграции как шаг запуска спринг-бута безопаснее: каждая версия вашего сервиса знает о том, какие миграции ей нужны, и она никогда не запустится, пока миграции не накатились. Мы используем flyway таким образом успешно много лет. Вынося миграции отдельным шагом вы не только усложняете пайплайн, но и рискуете однажды запустить образ, для которого миграции не накачены. 4. стоило сказать про обратную совместимость миграций как обязательное правило. После накатывания миграций новой версии, старая должна продолжать работать корректно с обновленной БД. Иначе у вас поломается RollingUpdate
32:00 Про liquibase не убедительные примеры вначале. Всё-таки это версионирование БД, а не инструмент запустить какой-то в моменте нужный sql. Если это справочник, то он должен стоять за api для того, кто этим справочником распоряжается.
null - нАл
Разум - ошибка природы. Человек тому подтверждение.
Супер информативно, спасибо большое!!!
От примеров с казино ловлю флешбэки)
Спасибо за крутой материал! Взял на заметку идею оптимизации образа с помощью слоев, которые предоставляет спринг.
Квантовая Механика, как и другие разделы Физики это один из способов описания происходящих процессов. Физика и Квантовая механика ни чего не объясняет и не должна объяснять. Она просто предлагает адекватную описательную модель с помощью математики.
Фундаментальная ошибка докладчика. Он выделяет измерения в некое особенное явление, а измерение это тоже обычное взаимодействие объектов.
Нет ни чего странного и необычного в квантовой модели. Обычная теория вероятностей и дискретная математика.
Нужен огород для выращивания волновых функций. Почем за десяток.
Квантовую механику никто не понимает, поэтому трактует так, чтобы было интересно слушать.