F[Scala] 2024: как это было🔥
Всё видно на фотографиях. 30 ноября в Москве во второй раз провели конференцию по Scala и функциональному программированию от Яндекс Вертикалей (Авто.ру, Яндекс Путешествия, Недвижимость и Аренда. Спасибо, что были с нами в офлайне и онлайне.
Было полезно, весело и вкусно. Послушали спикеров, поучаствовали в круглом столе, забрали наши топовые стикеры, поели попкорн в брендированных упаковках.
Было супер! Увидимся в следующем году 🤝
С завтрашнего дня будем делиться записями выступлений всех спикеров на Youtube и ВК Видео в этом канале — stay tuned📱
@scala_verticals #fscala2024
Всё видно на фотографиях. 30 ноября в Москве во второй раз провели конференцию по Scala и функциональному программированию от Яндекс Вертикалей (Авто.ру, Яндекс Путешествия, Недвижимость и Аренда. Спасибо, что были с нами в офлайне и онлайне.
Было полезно, весело и вкусно. Послушали спикеров, поучаствовали в круглом столе, забрали наши топовые стикеры, поели попкорн в брендированных упаковках.
Было супер! Увидимся в следующем году 🤝
С завтрашнего дня будем делиться записями выступлений всех спикеров на Youtube и ВК Видео в этом канале — stay tuned📱
@scala_verticals #fscala2024
Начинаем делиться с вами записям F[Scala] 2024
Первый спикер — Денис Шевченко из BIOCAD🔴 Изоморфизм Карри-Говарда и Вселенная
Денис рассуждал в своем докладе на тему того, какую роль играет математики в нашей профессии.
Кем был автор лямбда-исчисления и почему математики отстают от философов? Где прячется алгебра в алгебраических типах данных и почему Scala-руководство не говорит всей правды? Как с помощью функции доказать теорему и зачем нужен пустой тип?
Обо всём этом в докладе Дениса. Смотреть:
📱 на Youtube
📱 в ВК Видео
Если у вас будут вопросы к спикеру, пишите их в комментариях. Мы попросим Дениса прийти и ответить здесь же.
Спасибо всем, кто был с нами на конференции офлайн или онлайн. Увидимся в следующем году
@scala_verticals
Первый спикер — Денис Шевченко из BIOCAD
Денис рассуждал в своем докладе на тему того, какую роль играет математики в нашей профессии.
Кем был автор лямбда-исчисления и почему математики отстают от философов? Где прячется алгебра в алгебраических типах данных и почему Scala-руководство не говорит всей правды? Как с помощью функции доказать теорему и зачем нужен пустой тип?
Обо всём этом в докладе Дениса. Смотреть:
Если у вас будут вопросы к спикеру, пишите их в комментариях. Мы попросим Дениса прийти и ответить здесь же.
Спасибо всем, кто был с нами на конференции офлайн или онлайн. Увидимся в следующем году
@scala_verticals
Please open Telegram to view this post
VIEW IN TELEGRAM
Как превратить сложные процессы в понятные и надежные решения?
В докладе Ахтяма Сакаева вы узнаете, как с помощью стримов на Scala моделировать процессы, управлять временем и состоянием, создавая код, который легко поддерживать.
Этот доклад для тех, кто хочет по-новому взглянуть на разработку и раскрыть мощь стримов для решения реальных задач. Готовы увидеть, как код превращается в произведение искусства?
Запись выступления:
📱 на Youtube
📱 в ВК Видео
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
Делитесь с коллегами и друзьями записью и задавайте вопросы в комментариях.
Как вам выступление?
@scala_verticals
В докладе Ахтяма Сакаева вы узнаете, как с помощью стримов на Scala моделировать процессы, управлять временем и состоянием, создавая код, который легко поддерживать.
Этот доклад для тех, кто хочет по-новому взглянуть на разработку и раскрыть мощь стримов для решения реальных задач. Готовы увидеть, как код превращается в произведение искусства?
Запись выступления:
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
Делитесь с коллегами и друзьями записью и задавайте вопросы в комментариях.
Как вам выступление?
@scala_verticals
Please open Telegram to view this post
VIEW IN TELEGRAM
Boxing в Scala: когда это плохо и как бороться?
Read-only база данных — одна из важных частей поиска. На низком уровне мы работаем с множеством данных примитивных типов. В Scala часто происходит автоматическое преобразование, которое несет ненужную нам аллокацию типов-оберток.
Дмитрий Каряев, Техлид поисковой платформы Яндекс Вертикалей, поделился с участниками F[Scala] 2024:
🔵 какими методами находить ненужные автопреобразования и аллокации
🔵 как писать код без них
Смотреть запись выступления
📱 на Youtube
📱 в ВК Видео
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
Вопросы Дмитрию можно написать в комментариях. Как вам доклад? ❤️🔥
@scala_verticals
Read-only база данных — одна из важных частей поиска. На низком уровне мы работаем с множеством данных примитивных типов. В Scala часто происходит автоматическое преобразование, которое несет ненужную нам аллокацию типов-оберток.
Дмитрий Каряев, Техлид поисковой платформы Яндекс Вертикалей, поделился с участниками F[Scala] 2024:
Смотреть запись выступления
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
Вопросы Дмитрию можно написать в комментариях. Как вам доклад? ❤️🔥
@scala_verticals
Please open Telegram to view this post
VIEW IN TELEGRAM
Подношение от типов: отношение подтипов
Великие типы поднесли нам язык программирования, в котором каких только типов нет. В Scala есть и типы высших порядков, и типы, зависимые от путей, и много других.
При этом это всё ещё объектно ориентированный язык, а значит, без отношения подтипирования — никак: наследоваться-то надо.
Алексей Троицкий из Т-Банка F[Scala] 2024 рассказал, как удивительным образом хорошо это отношение работает со всеми видами типов языка и как это используется на практике в скаловых опенсорс-библиотеках.
Смотрим:
📱 на Youtube
📱 в ВК Видео
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
Если у вас будут вопросы к спикеру, пишите их в комментариях🔥 Мы попросим Лешу прийти и ответить здесь же.
@scala_verticals
Великие типы поднесли нам язык программирования, в котором каких только типов нет. В Scala есть и типы высших порядков, и типы, зависимые от путей, и много других.
При этом это всё ещё объектно ориентированный язык, а значит, без отношения подтипирования — никак: наследоваться-то надо.
Алексей Троицкий из Т-Банка F[Scala] 2024 рассказал, как удивительным образом хорошо это отношение работает со всеми видами типов языка и как это используется на практике в скаловых опенсорс-библиотеках.
Смотрим:
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
Если у вас будут вопросы к спикеру, пишите их в комментариях
@scala_verticals
Please open Telegram to view this post
VIEW IN TELEGRAM
Влияет ли первоначальный дизайн на дальнейшую судьбу языка программирования?
Об этом нам рассказал Роман Смирнов из Ecom Tech на F[Scala] 2024. В его докладе подробности, о том:
🔵 Что собой представляет настоящая акторная модель на примере Elixir (BEAM)?
🔵 Почему эту модель невозможно реализовать поверх JVM?
Смотрим:
📱 на Youtube
📱 в ВК Видео
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
Вопросы по традиции пишите в комментариях✏️
@scala_verticals #fscala2024
Об этом нам рассказал Роман Смирнов из Ecom Tech на F[Scala] 2024. В его докладе подробности, о том:
Смотрим:
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
Вопросы по традиции пишите в комментариях
@scala_verticals #fscala2024
Please open Telegram to view this post
VIEW IN TELEGRAM
Как добавить новую функциональность в Apache Spark™, не форкая его
Когда YTsaurus опубликовали в опенсорс, появились новые требования к SPYT — проекту, который помогает интегрировать платформу с Apache Spark™.
Одно из требований — отказ от форкнутой версии Spark. Но как быть, если наши модификации уже просочились в самую глубь и мы не хотим от них отказываться?
Александр Токарев из Яндекс Инфраструктуры на F[Scala] 2024 поделился, как команда разработала способ для патчинга Apache Spark™ в рантайме.
Смотреть:
📱 на Youtube
📱 в ВК Видео
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
@scala_verticals
Когда YTsaurus опубликовали в опенсорс, появились новые требования к SPYT — проекту, который помогает интегрировать платформу с Apache Spark™.
Одно из требований — отказ от форкнутой версии Spark. Но как быть, если наши модификации уже просочились в самую глубь и мы не хотим от них отказываться?
Александр Токарев из Яндекс Инфраструктуры на F[Scala] 2024 поделился, как команда разработала способ для патчинга Apache Spark™ в рантайме.
Смотреть:
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
@scala_verticals
Please open Telegram to view this post
VIEW IN TELEGRAM
Поставка http-интеграций через библиотеки
Если вы работали в компании с несколькими продуктами, то знаете, как порой сложно интегрировать сторонние сервисы.
В такие моменты думаешь: «Вот бы просто подключить библиотеку, где бы уже реализовали эту интеграцию, да ещё и с политиками ретраев, логирования, тайм-аутов и прочего».
В Т-Банке реализовали подход, чтобы просто подключать библиотеку и вызывать метод. А нам об этом рассказал Иван Лягаев на F[Scala] 2024.
Посмотреть можно:
📱 на Youtube
📱 в ВК Видео
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
А у вас были подобные кейсы? Пишите в комментариях. Там же можно задать вопросы спикеру, а мы попросим его ответить 🤝
@scala_verticals
Если вы работали в компании с несколькими продуктами, то знаете, как порой сложно интегрировать сторонние сервисы.
В такие моменты думаешь: «Вот бы просто подключить библиотеку, где бы уже реализовали эту интеграцию, да ещё и с политиками ретраев, логирования, тайм-аутов и прочего».
В Т-Банке реализовали подход, чтобы просто подключать библиотеку и вызывать метод. А нам об этом рассказал Иван Лягаев на F[Scala] 2024.
Посмотреть можно:
Все записи можно найти в плейлисте F[Scala] 2024 в ВК Видео и на Youtube.
А у вас были подобные кейсы? Пишите в комментариях. Там же можно задать вопросы спикеру, а мы попросим его ответить 🤝
@scala_verticals
Please open Telegram to view this post
VIEW IN TELEGRAM
Обновление scalamock с 5.2.0 до 6.0.0
Привет! Это Женя Веретенников, я отвечаю за devtools для скалистов. Мы недавно обновили scalamock в нашем монорепозитории и сделали шажок к Scala 3 :)
Для тех, кто ещё не обновлялся — рассказываем про важный нюанс обновления.
В новой версии инстанс
Например, такая конструкция больше не компилируется:
Эту конструкцию использовали, чтобы создавать отдельные моки под каждый тест.
Изменение API сделано не просто так. Чтобы scalamock проверял в конце теста, вызваны ли моки, как ожидалось, нужно подмешивать MockFactory именно в класс теста. Например, этот тест не падает, несмотря на очевидное отсутствие вызова
На версии scalamock 6.0.0 этот код не компилируется.
Корректно создать по моку на каждый тест можно с помощью
В процессе обновления библиотеки мы заметили, что несколько тестов из-за этой проблемы уже давно были зелёными, но по факту сломанными, так как неверно проверяли моки. Часть тестов удалось пофиксить, на часть пришлось навесить
Возможно, такие сломанные тесты найдутся при обновлении и у вас.
@scala_verticals
Привет! Это Женя Веретенников, я отвечаю за devtools для скалистов. Мы недавно обновили scalamock в нашем монорепозитории и сделали шажок к Scala 3 :)
Для тех, кто ещё не обновлялся — рассказываем про важный нюанс обновления.
В новой версии инстанс
MockFactory
обязан быть инстансом TestSuite
. То есть нужно подмешивать MockFactory
в класс теста, а не куда-либо ещё.Например, такая конструкция больше не компилируется:
trait Mocking extends MockFactory {
val myMock = mock[MyService]
}
class MyServiceSpec extends AnyWordSpec {
"MyService" should {
"do something" in new Mocking { /* ... */ }
}
}
Эту конструкцию использовали, чтобы создавать отдельные моки под каждый тест.
Изменение API сделано не просто так. Чтобы scalamock проверял в конце теста, вызваны ли моки, как ожидалось, нужно подмешивать MockFactory именно в класс теста. Например, этот тест не падает, несмотря на очевидное отсутствие вызова
f(42)
:
class NoMockFactorySpec extends AnyWordSpecLike {
trait Service {
def f(x: Int): String
}
"blabla" should {
"blabla" in new MockFactory {
val service = mock[Service]
(service.f _).expects(42).returning("42")
}
}
}
На версии scalamock 6.0.0 этот код не компилируется.
Корректно создать по моку на каждый тест можно с помощью
OneInstancePerTest
. Избавляться от fixture-трейтов типа Mocking
, как в первом примере, необязательно. Достаточно завернуть его внутрь класса с тестом:
class MyServiceSpec extends AnyWordSpec with MockFactory with OneInstancePerTest {
trait Mocking {
val myMock = mock[MyService]
}
"MyService" should {
"do something" in new Mocking { /* ... */ }
}
}
В процессе обновления библиотеки мы заметили, что несколько тестов из-за этой проблемы уже давно были зелёными, но по факту сломанными, так как неверно проверяли моки. Часть тестов удалось пофиксить, на часть пришлось навесить
@Ignore
Возможно, такие сломанные тесты найдутся при обновлении и у вас.
@scala_verticals
Всем привет! Это Женя Веретенников (@evis_dev). Я отвечаю за devtools для скалистов Вертикалей, а еще веду этот канал.
Здесь я делюсь кейсами команд Scala-разработчиков Вертикалей: рассказываю о сложностях, с которыми мы столкнулись, и решениях. Кстати, подробнее о наших командах и задачах можно узнать на сайте.
Еще в этом канале публикуются анонсы профильных мероприятий. Например, F[Scala] — крупнейшей конференции по Scala и функциональному программированию от Яндекс Вертикалей.
Что ж, настало время поделиться недавним решением одной проблемы :)
Здесь я делюсь кейсами команд Scala-разработчиков Вертикалей: рассказываю о сложностях, с которыми мы столкнулись, и решениях. Кстати, подробнее о наших командах и задачах можно узнать на сайте.
Еще в этом канале публикуются анонсы профильных мероприятий. Например, F[Scala] — крупнейшей конференции по Scala и функциональному программированию от Яндекс Вертикалей.
Что ж, настало время поделиться недавним решением одной проблемы :)
Scala-сообщество Вертикалей pinned «Всем привет! Это Женя Веретенников (@evis_dev). Я отвечаю за devtools для скалистов Вертикалей, а еще веду этот канал. Здесь я делюсь кейсами команд Scala-разработчиков Вертикалей: рассказываю о сложностях, с которыми мы столкнулись, и решениях. Кстати, подробнее…»
Мы организуем митап по Scala в Казани, где выступят классные спикеры с тремя докладами:
Ну и, конечно, не обойдёмся без афтепати 😉
Посмотреть программу и зарегистрироваться можно здесь.
А для тех, кто не сможет прийти, мы опубликуем видеозапись с митапа в наших соцсетях.
До встречи на Scala Meetup 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
Вчера в Казани мы провели Scala-митап — было интересно, уютно и весело! Спасибо всем, кто пришёл, задавал вопросы и делился опытом
Для тех, кто не смог присоединиться, мы скоро выложим записи докладов. Stay tuned 👀
А пока мы ждём профессиональные снимки, делимся нашим мини-фотоотчётом со вчерашнего вечера.
Please open Telegram to view this post
VIEW IN TELEGRAM