Рубрика «cats»

Если вы работаете с одной базой данных которая поддерживает транзакции вы даже не задумываетесь о консистентности — база все делает за вас. Если же у вас несколько баз, распределенная система или даже к примеру MongoDB до 4 версии — все не так радужно.

Рассмотрим пример — мы хотим сохранить файл в хранилище и добавить ссылку на него в два документа. Конечно же мы хотим атомарности — либо файл сохранен и добавлен в документы либо ни то ни другое (тут и далее используется cats-effects IO):

saveDataToFile(data) // (1)
  .flatMap { file =>
    addFileRef(documentId, file) // (2)
      .flatMap { result =>
        addFileRef(fileRegistry, file) // (3)
          .flatMap { result =>
            ??? // (4, 5, ...)
          }
          .handleErrorWith { error =>
            // revert (2)
            removeFileRef(documentId, file).attempt >> IO.raiseError(error)
          }
      }
      .handleErrorWith { error =>
        // revert (1)
        removeFile(file).attempt >> IO.raiseError(error)
      }
  }

Уже непросто? Легко представить как количество операций растет и образуется Pyramid of doom.

Но мы же программисты! Давайте обобщим проблему и напишем код, который позволит избежать ненужной сложности и возможных ошибок.

Читать полностью »

Все знают, что кошка всегда приземляется на 4 лапы, как бы ее ни бросили. Этот вопрос давно занимал физиков, и было предложено несколько моделей того, как это кошке удается. Все эти модели достаточно приблизительны и обычно ограничиваются цилиндрами. Однако, команда программы для physics-based анимации Cascadeur попробовала смоделировать переворот кошки на более подробной физической модели.

Раньше физики думали, что кошка может заранее рассчитать свое вращение и в начале падения успевает правильно оттолкнуться, приобретая начальный угловой момент. Но эксперименты показали, что даже если кошку подвесить за лапы на веревки, а потом резко перерезать их, то кошка все равно умудряется перевернуться.
Читать полностью »

Cats Effect стал своего рода «Reactive Streams» для функционального Scala-мира, позволив объединить всю разнообразную экосистему библиотек вместе.

Многие отличные библиотеки: http4s, fs2, doobie — реализуются только на базе тайп классов из Cats Effect. А библиотеки типа ZIO и Monix, уже в свою очередь, предоставляют инстансы этих тайп классов для своих типов эффектов. Несмотря на некоторые проблемы, которые будут исправлены в версии 3.0, Cats Effect помогает многим опенсорс контрибьюторам органично поддерживать всю функциональную экосистему языка Scala. Разработчики, которые используют Cats Effect, сталкиваются с трудным выбором: какую реализацию эффектов использовать для своих приложений.

На сегодня есть три альтернативы:

  • Cats IO, ссылочная реализация;
  • Monix, тип данных Task и связанная с ним реактивность в коде;
  • ZIO, тип данных ZIO и его прицел на многопоточность.

В этом посте я постараюсь доказать вам, что для создания своего приложения с использованием Cats Effect, ZIO — хороший выбор с дизайн решениями и возможностями, довольно сильно отличающимися от ссылочной реализации в Cats IO.
Читать полностью »

Функциональное программирование в Scala может быть нелегко освоить из-за некоторых синтаксических и семантических особенностей языка. В частности, некоторые средства языка и способы реализации задуманного с помощью основных библиотек кажутся очевидными, когда ты с ними знаком — но в самом начале изучения, особенно самостоятельного, узнать их не так просто.
По этой причине я решил, что будет полезно поделиться некоторыми советами по функциональному программированию в Scala. Примеры и наименования соответствуют cats, но синтаксис в scalaz должен быть аналогичным из-за общей теоретической базы.

9 советов по использованию библиотеки Cats в Scala - 1

Читать полностью »

В декабрьском материале «Как выглядит успех альткойна» мы обещали опубликовать пост, в котором принцип работы специальных токенов приложений — Custom Application Tokens (CATs) — описан более подробно. В этой статье речь пойдет именно об этой технологии, позволяющей любому бизнесу выпустить собственную внутреннюю цифровую валюту на блокчейне для оплаты товаров и услуг в рамках своего проекта.

image

Технология блокчейн, лежащая в основе CATs, привлекает внимание представителей самых разных отраслей: от финансов и страхования до шоу-бизнеса и сельского хозяйства. Столь пристальное внимание к этой технологии неслучайно.

Близится третья волна развития блокчейн-решений, заставляющая обратить внимание на технологию CATs. Но для того чтобы лучше понимать тенденции сегодняшнего дня, стоит начать с предыстории.
Читать полностью »

Скрытые возможности Xcode 5Здравствуйте, уважаемые читатели!

Команде Бессвязного Девелопа удалось получить корпоративный аккаунт благодаря чудотворной программе Хабрахабра по поддержке начинающих стартапов без действующей монетизации. Мы — это ребята, которые частенько устраивают трансляции разработки различных приложений за 24 и 48 часов. Сегодня мы взяли курс на создание бесплатных аналогов нужных, но платных или обвешанных рекламой программ.

Чтобы наш приветственный пост не получился «Ни о чем», сегодня я расскажу о некоторых вкусностях работы с Xcode 5, подсмотренных на WWDC 2013. В программе вечера:

  1. Автодополнение кода: печенье, которое еще не все попробовали
  2. Edit in scope: сытный шоколадный тортик
  3. Объекты IB: назовите этот сорт клубничного желе
  4. Двойной статус-бар: подавайте шоколадный шейк охлажденным
  5. Color Blended Layers: вы неправильно наносите ромовый крем
  6. Concurrent Object Enumeration: покройте все сахарной пудрой
  7. Локализация: хватит каждый раз греть духовку

Читать полностью »

Хоть с котиками я временно и завязал, но! но…
Но к Хэллоуину душа почернела и запросилась разродиться хоть чуточкой.

image

Как обычно, можно скачивать и бесплатно использовать, в коммерческих и некоммерческих целях отсюда
(там ссылка на архив и подробные условия использования, во избежание спорных трактовок)

А кто не хочет ходить на страницу — прямая ссылка на архив.

Читать полностью »

В общем, конечно, дело в пятнице.

Предлагаю окунуться в мир непознанного и скрытого от осторожных глаз. Вместе с котиками, разумеется.
Я так думаю, с последней их партией, потому как котики в количестве n штук — это хорошо, а в количестве n+1 — уже настоебе… перебор.

image

Интересный факт: этот сет является в некотором роде редизайном моих картинок десятилетней давности, которых у меня самого-то на диске не осталось. Зато гугл все помнит, и на вопрос «что делает кошка в туалете» заботливо напоминает.

Ах, ну и да, качать можно отсюдаЧитать полностью »

Обязательства, данные ранее и связанные с котиками, заставляют меня вывалить очередную их порцию.
Хотя я, признаться, несколько стремаюсь в том плане, что надо бы подкопить побольше, да и потом сразу кучкой, а не размазывать тонким слоем по паркету.

Но с другой стороны, котики — они же в свободное от работы время, а тут заступает сентябрь, и станет не продохнуть, и не до котиков.
К тому же их накопилась дюжина.
К тому же вроде как пятница.
Поэтому котики.

image

Условия те же, то есть бесплатные для коммерческого и некоммерческого использования. На всякий случай уточняю — коммерческое означает, что их можно использовать в коммерческих проектах, но нельзя продавать/перепродавать и так далее. Котики должны оставаться бесплатными.

Читать полностью »

Рисовать иконки в нон-стоп режиме (как, впрочем и рубить дрова, и переводить старушек через дорогу) — становится утомительно.
Неутомительно только гладить кошку.
Но кошки у меня нету. Боязнь ответственности и сплошные переезды. Но кошку я хочу.
Поэтому, когда руку начинает тошнить от монотонной работы, я спасаюсь тем, что пристрастился рисовать кошек. Это и отдых, и сублимация, и кстати обратно интерес к рисованию вызывает.
В какой-то момент их накопилось на небольшой сет, который не грех и выставить. (Вот и польза образовалась).
image

И продолжают, черти, копиться дальше.

Пока то, что есть, можно скачать отсюда и использовать, как душе угодно. Лучше использовать хорошо, чем плохо.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js