Forwarded from PONV Daily (λoλcat)
Очень удобный дебаггер для макросов, печатающий во время компиляции код, отформатированный scalafmt. Печатает только те раскрытия макросов, которые обернуты в
macrolizer.show {...}. Поддержка только скалы 2.13. ⬇️Совсем упустил из виду шикарное нововведение скалы 2.13.1: автоматическая конвертация обычных функций в частичные.
Пусть есть метод, принимающий частичную функцию:
Пример взят из презентации Dale про проблемы частичных функций в скале: https://dwijnand.github.io/talk-fix-partialfunction/, которую я выцепил сегодня в скалачате
Пусть есть метод, принимающий частичную функцию:
Try(42).recover {
case e: IllegalArgumentException => 1
case e: DatabaseError => 2
}
В прошлых версиях языка, даже если мы передаём в такой метод тотальную функцию, всё равно приходилось писать единственный case, который не несёт никакой смысловой нагрузки:Try(42).recover { case e => e.getMessage }
А после PR от Dale Wijnand можно писать гораздо проще:Try(42).recover(_.getMessage)Компилятор сам преобразует обычную лямбду
_.getMessage в частичную функцию с одним case.Пример взят из презентации Dale про проблемы частичных функций в скале: https://dwijnand.github.io/talk-fix-partialfunction/, которую я выцепил сегодня в скалачате
Forwarded from Scala bin
Из-за многочисленных перестановок долго не знал, сложится или нет, но буквально несколько дней назад всё окончательно утвердилось. В эту субботу буду выступать на онлайн-митапе с обзорной презентацией про Scala, ФП и почему это важно.
Презентация рассчитана в основном на незнакомую с вышеозначенными понятиями публику и ставит своей целью обозначить основные направления для самостоятельного знакомства и заинтересовать попробовать новый язык программирования.
Мероприятие будет проходить на английском языке в эту субботу, в 13:30 по Московскому времени. Принять участие можно, зарегистрировавшись по ссылке. (Меня клятвенно заверили, что, несмотря на надпись на сайте, "вместимость" мероприятия - 100 человек)
Презентация рассчитана в основном на незнакомую с вышеозначенными понятиями публику и ставит своей целью обозначить основные направления для самостоятельного знакомства и заинтересовать попробовать новый язык программирования.
Мероприятие будет проходить на английском языке в эту субботу, в 13:30 по Московскому времени. Принять участие можно, зарегистрировавшись по ссылке. (Меня клятвенно заверили, что, несмотря на надпись на сайте, "вместимость" мероприятия - 100 человек)
connpass
WebHack#32 A Gentle Introduction to Scala and FP (2020/04/25 19:30〜)
# WebHack Follow us on @WebHackMeetup for more valuable contents & earlier updates 👨🎓 In light of the uncertainty we all face in our daily lives as the situation with COVID-19 unfolds, the safety of all WebHack friends and our community is the top priority.…
В блоге разработчиков скалы вышел пост о сообщениях компилятора Scala 3 при не найденных имплиситах.
Компилятор будет не просто отображать понятное сообщение об ошибке с полной цепочкой поиска (наконец-то!), но и подсказывать импорт, который надо скопипастить, чтобы нужный имплисит появился в скоупе.
Будет круто, если у этой фичи появится поддержка на уровне IDE, которая будет сама дописывать все импорты.
https://www.scala-lang.org/blog/2020/05/05/scala-3-import-suggestions.html
Компилятор будет не просто отображать понятное сообщение об ошибке с полной цепочкой поиска (наконец-то!), но и подсказывать импорт, который надо скопипастить, чтобы нужный имплисит появился в скоупе.
Будет круто, если у этой фичи появится поддержка на уровне IDE, которая будет сама дописывать все импорты.
https://www.scala-lang.org/blog/2020/05/05/scala-3-import-suggestions.html
У компании Lunatech есть WIP курс на гитхабе по изучению возможностей Scala 3 путём пошагового обновления небольшого проекта на Scala 2. Одна фича — одно упражнение.
https://github.com/lunatech-labs/lunatech-scala-2-to-scala3-course
А ScalaCenter готовит подробный migration guide — https://github.com/scalacenter/scala-3-migration-guide
https://github.com/lunatech-labs/lunatech-scala-2-to-scala3-course
А ScalaCenter готовит подробный migration guide — https://github.com/scalacenter/scala-3-migration-guide
Forwarded from dd if=/dev/stuff of=/dev/tg
Интервью с Олегом Нижниковым о Scala, Haskell и многих других ФП-языках: https://www.youtube.com/watch?v=nII0ralSlRo
YouTube
СИЛА Функционального Программирования / Всё о Scala / Интервью со Scala Developer Олегом Нижниковым
Первый выпуск про функциональное программирование на канале! И не на примере забытого или редкого языка, а на примере Scala. В гостях разработчик из "Тинькофф Банк" и Scala Developer - Олег Нижников. Поговорили про команду разработки из 100 скалистов, про…
Забавный блогпост от SoftwareMill о том, как дефолтные настройки кафки ломают её гарантию сохранения порядка сообщений в одной партиции.
Вроде как все знают, что если нужен порядок, то надо ставить
https://blog.softwaremill.com/does-kafka-really-guarantee-the-order-of-messages-3ca849fd19d2
Вроде как все знают, что если нужен порядок, то надо ставить
max.in.flight.requests.per.connection=1(или отключать ретраи продюсера). Но дефолтный конфиг, нарушающий одну из гарантий системы — это странно.
https://blog.softwaremill.com/does-kafka-really-guarantee-the-order-of-messages-3ca849fd19d2
Forwarded from @yarosh_log
Список побочки у разных уровней изоляции транзакций MySQL InnoDB и PostgreSQL (oracle, mssql тоже есть)
https://github.com/ept/hermitage
https://github.com/ept/hermitage
GitHub
GitHub - ept/hermitage: What are the differences between the transaction isolation levels in databases? This is a suite of test…
What are the differences between the transaction isolation levels in databases? This is a suite of test cases which differentiate isolation levels. - ept/hermitage
Собрал материалы по инъекции зависимостей в скале c ZIO. ZLayer пока совсем свежая технология, поэтому систематических обучающих материалов по ней пока нет. Но уже набралось приличное количество руководств от разных авторов.
Документация
⚡ZLayer
⚡Use modules and layers
⚡Macros
Блогпосты
🛠Adam Warski — Managing dependencies using ZIO
🛠Pavels Sisojevs — From idea to product with ZLayer
🛠aappddeevv — zio layers and framework integration
🛠Tim Pigden — Example of ZLayers being used in combination
🛠Juliano Alves — ZIO + Http4s: a simple API client
Слайды к докладам
👨🎓Adam Fraser — Solving The Dependency Injection Problem With ZIO
👨🎓Pierangelo Cecchetto — Ray tracing with ZIO-ZLayer
Документация
⚡ZLayer
⚡Use modules and layers
⚡Macros
Блогпосты
🛠Adam Warski — Managing dependencies using ZIO
🛠Pavels Sisojevs — From idea to product with ZLayer
🛠aappddeevv — zio layers and framework integration
🛠Tim Pigden — Example of ZLayers being used in combination
🛠Juliano Alves — ZIO + Http4s: a simple API client
Слайды к докладам
👨🎓Adam Fraser — Solving The Dependency Injection Problem With ZIO
👨🎓Pierangelo Cecchetto — Ray tracing with ZIO-ZLayer
Lil Functor
У компании Lunatech есть WIP курс на гитхабе по изучению возможностей Scala 3 путём пошагового обновления небольшого проекта на Scala 2. Одна фича — одно упражнение. https://github.com/lunatech-labs/lunatech-scala-2-to-scala3-course А ScalaCenter готовит…
Кроме курса Lunatech подготовили ещё и большую презентацию новых фич Scala 3
https://github.com/lunatech-labs/lunatech-scala-2-to-scala3-course/releases/download/0.24.0-RC1-v0/Moving.forward.from.Scala.2.to.Scala.3.pdf
https://github.com/lunatech-labs/lunatech-scala-2-to-scala3-course/releases/download/0.24.0-RC1-v0/Moving.forward.from.Scala.2.to.Scala.3.pdf
В последнем письме рассылки Scala Times пришла ссылка на ютуб, где чувак рассказывает про opaque types в скале. Оказалось, что у него куча видео с лекциями на канале. Рассказывает про языковые фичи, функциональное программирование, популярные библиотеки, тулинг.
У него отличная манера говорить, и на всех видео открыт редактор с кодом, где он демонстрирует то, о чём говорит. Канал — настоящая жемчужина для тех, кто вкатывается в скалку.
https://www.youtube.com/channel/UCSBUwLT9zXhUalKfJrc2q2A
У него отличная манера говорить, и на всех видео открыт редактор с кодом, где он демонстрирует то, о чём говорит. Канал — настоящая жемчужина для тех, кто вкатывается в скалку.
https://www.youtube.com/channel/UCSBUwLT9zXhUalKfJrc2q2A
YouTube
#Enumerations in #Scala 2 and 3
In this video we are going to see a lot of different ways to encode enumerations in Scala including a library called enumeratum. We will also see support for enumerations in Scala 3.
The code is here:
https://github.com/devinsideyou/enumerations-playground…
The code is here:
https://github.com/devinsideyou/enumerations-playground…
Хорошая статья с чеклистом для ревью кода внутри распределённых систем.
Обращение к сторонним компонентам
- обрабатываются ли все ошибки, прописано ли восстановление после ошибок?
- закрываются ли ресурсы в случае ошибок, откатываются ли изменения состояния?
- есть ли таймаут на обращение к другому компоненту? обрабатывается ли таймаут отдельно от остальных ошибок?
- есть ли ретраи на таймауты?
- ограничивается ли нагрузка при ретраях (экспоненциальные ретраи, circuit breaker)?
- в случае использования batch API, ограничен ли размер батча?
- кешируются ли ответы?
Разработка API
- идемпотентно ли API?
- ограничено ли время ожидания ответа?
- может ли API работать батчами? ограничен ли размер принимаемого батча?
- собираются ли логи/метрики обращений к API?
- какой статус должен получить клиент в случае отказа отдельных этапов обработки запроса?
- не протекают ли доменные модели между частями системы?
Ещё у автора есть пост по дизайн ревью новых компонентов системы: https://www.kislayverma.com/post/design-review-checklist-for-distributed-systems
Обращение к сторонним компонентам
- обрабатываются ли все ошибки, прописано ли восстановление после ошибок?
- закрываются ли ресурсы в случае ошибок, откатываются ли изменения состояния?
- есть ли таймаут на обращение к другому компоненту? обрабатывается ли таймаут отдельно от остальных ошибок?
- есть ли ретраи на таймауты?
- ограничивается ли нагрузка при ретраях (экспоненциальные ретраи, circuit breaker)?
- в случае использования batch API, ограничен ли размер батча?
- кешируются ли ответы?
Разработка API
- идемпотентно ли API?
- ограничено ли время ожидания ответа?
- может ли API работать батчами? ограничен ли размер принимаемого батча?
- собираются ли логи/метрики обращений к API?
- какой статус должен получить клиент в случае отказа отдельных этапов обработки запроса?
- не протекают ли доменные модели между частями системы?
Ещё у автора есть пост по дизайн ревью новых компонентов системы: https://www.kislayverma.com/post/design-review-checklist-for-distributed-systems
Kislay Verma
Code review checklist for distributed systems | Kislay Verma
A basic checklist for reviewing code in a distributed systems environment
Нередко в айтишных чатах появляются люди, заявляющие о бесполезности хаскеля в промышленной разработке ПО и отсутствии реальных проектов на нём. Это воспринимается как троллинг, но на самом деле всё гораздо сложнее. Весь расчёт идёт на то, что вспыльчивые хаскеллисты в качестве доказательства применимости любимого языка скинут обидчику исходные коды закрытых рабочих проектов. Будьте осторожны и не путайте т.н. «троллинг» с промышленным шпионажем!
Завтра в 20:00 по Москве на шестичасовом воркшопе нас научат делать DI на скале через фреймворк distage. Мне вот по izumi стеку ничего не понятно, но очень интересно. Поэтому жду с нетерпением.
Зарегистрироваться: https://ziverge.zoom.us/meeting/register/tZMucemoqT4iHtaI84z8tJdQfKYl2Wpbnmje?timezone_id=Europe%2FMoscow
Зарегистрироваться: https://ziverge.zoom.us/meeting/register/tZMucemoqT4iHtaI84z8tJdQfKYl2Wpbnmje?timezone_id=Europe%2FMoscow
Forwarded from Scala Nishtyaki Channel
У скалалаза появился теперь свой канал, где можно и посмотреть тлдр о выпуске и даже прослушать его; жойнитесь!
https://t.iss.one/scalalaz_podcast
https://t.iss.one/scalalaz_podcast
Telegram
Scalalaz Podcast audio feed
постим сюда копии аудио - пока в ручную
Кстати говоря у нас есть репа https://github.com/scalalaz-podcast/scalalaz-gen/ так что если есть опечатки или еще какие проблемы, можно и пры делать и ишши создавать
Кстати говоря у нас есть репа https://github.com/scalalaz-podcast/scalalaz-gen/ так что если есть опечатки или еще какие проблемы, можно и пры делать и ишши создавать