Олаф из скаламеты написал отличный пост про этикет в опенсорсе — https://geirsson.com/open-source.html
Особенно хочется отметить пункт про коллабораторов — Олаф не жадничает на мейнтейнерские права, поэтому в скаламетовских проектах автобусный фактор сведён к минимуму, и даже в небольших репозиториях всегда есть кому посмотреть пулл-реквест.
Пункт про вредность good first contribution тоже справедливый: обычно проектам нужны люди, решающие собственные проблемы, либо заинтересованные в долгосрочном вкладе. Такие люди привлекаются не лейблами на задачах. Ещё вспомнилась сиутация, когда я поставил «good first contribution» на задачу, человек отправил пулл-реквест с её решением (первый для него), а потом в ходе дискуссии с другими мейнтейнерами было решено его отклонить. В итоге у человека обломался его первый вклад, и больше от него ничего не было видно. Очень неприятный момент :с
А если кто-то всё-таки хочет поконтрибутить в самый популярный форматировщик кода на скале и не знает, с чего начать, пишите -> @poslegm. Есть много задач разной степени сложности :^)
Особенно хочется отметить пункт про коллабораторов — Олаф не жадничает на мейнтейнерские права, поэтому в скаламетовских проектах автобусный фактор сведён к минимуму, и даже в небольших репозиториях всегда есть кому посмотреть пулл-реквест.
Пункт про вредность good first contribution тоже справедливый: обычно проектам нужны люди, решающие собственные проблемы, либо заинтересованные в долгосрочном вкладе. Такие люди привлекаются не лейблами на задачах. Ещё вспомнилась сиутация, когда я поставил «good first contribution» на задачу, человек отправил пулл-реквест с её решением (первый для него), а потом в ходе дискуссии с другими мейнтейнерами было решено его отклонить. В итоге у человека обломался его первый вклад, и больше от него ничего не было видно. Очень неприятный момент :с
А если кто-то всё-таки хочет поконтрибутить в самый популярный форматировщик кода на скале и не знает, с чего начать, пишите -> @poslegm. Есть много задач разной степени сложности :^)
Geirsson
Dos and don'ts in open source
I remember how careful I was the first time I opened a GitHub pull request. I read, re-read and triple-checked every one my comments before posting. It felt scary publishing my thoughts online because I was afraid people would judge me or misinterpret me.
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