В предыдущем посте мы открыли Аппликативный функтор, а если точнее, изобрели функцию apply
. С ее помощью мы решили проблему валидации полей кредитной карты. Функция apply
позволила легко объединить результаты каждой функции, отдельно проверяющей одно поле - номер карты, срок действия и CVV - в объект типа Result<CreditCard>
, который представляет финальный результат проверки всех данных кредитной карты на корректность. Возможно, вы также помните, что в случае если у нас есть несколько ошибок валидации, мы решили пойти простым путем и просто возвращать первую из них.
User
Теория категорий в API для консистентности Apache Cassandra
Для Apache Cassandra проектирование структуры таблиц выполняется для нужд одного конкретного приложения, а перед программистом встают проблемы дублирования данных (один запрос читает одну таблицу, в которой есть все нужные поля) и контроля инициализации значений для колонок, входящих в первичный ключ
В статье предлагается вариант организации клиентского API для решения проблем с консистентностью данных и инициализации требуемых полей на базе комбинации паттернов проектирования Factory Method, Builder и Finite State Machine
TLDR: Если представить паттерн Factory Method как предел в терминах теории категорий, т.е. кортеж с проекциями, и инициализировать фабрику при помощи паттерна Builder, то можно получить удобный API для создания объектов с дублирующимся данными
Архитектура Шредингера и способы с ней бороться
Представьте, что вы работаете в команде над крупным проектом какое-то время. Проект прошел начальный этап и уже работает в продакшн среде. Им пользуются люди, даже можно сказать, что им пользуются много людей и они рассчитывают на ваш продукт, он для них важен. С какого-то момента вдруг вами овладевает беспокойство, что что-то не так. Каждый спринт дается тяжело. Новые задачи вызывают проблемы с внедрением, а после релиза вы ловите один инцидент за другим. Каждый день вы со страхом смотрите в свой месенджер, боясь увидеть очередное сообщение с очередной проблемой, которую нужно срочно решать. Запросы к базе начинают тормозить, важная информация теряться, все валится из рук, контроль над ситуацией утекает как песок сквозь пальцы. Вы начинаете плохо спать, начинают снится кошмары о бесконечных сообщениях в очередях вашего брокера, которые воркеры не способны переварить. Вам снятся сервера, на которых заканчивается CPU и память, потому что сервисы безмерно потребляют ресурсы. Утилизация дисков на серверах с СУБД уже давно под 100%, ведь сервисы что-то постоянно с них читают или пишут. Ошибки, задержки, падения. Вы просыпаетесь.
Полурешётки и законы Мерфи
Программист обязательно ставит на тумбочку у кровати два стакана: один полный, на случай, если он проснётся и захочет пить, а другой пустой — вдруг он не захочет. Так гласит известный анекдот. Но в реальной жизни часто работают законы Мерфи, и предусмотренные планы рушатся. Что же делать программисту на случай, если он проснётся и не поймёт, хочет он пить или нет
Как написать хороший текст о себе, даже если вы не привыкли писать
Вы откликнулись на вакансию, опубликовали пост с рассказом о себе — и вас не поняли, поняли неправильно или вы получили ноль реакций. Бывало? Чтобы не наступать на одни и те же грабли, стоит попробовать другой подход — продуктовый. Этот метод работы позволяет получить необходимый результат оптимальным способом. Произвести хорошее первое впечатление нужно с первых строк, поэтому давайте разберем, как написать текст о себе так, чтобы с вами захотели познакомиться и продолжить разговор.
Кастомный генератор кода API: структура и методы доработки
Всем привет! Меня зовут Юлия Сладковская, я разработчик в МТС Digital, команда BOPS (Backoffice Portal). Эта статья – про структуру генераторов NSwag для кода клиента и сервера на основе схемы API. Также я расскажу о создании кастомного генератора на базе стандартных генераторов Nswag, методах его настройки и расширения.
API для Инвестиций, или Как написать торгового робота
На связи команда Тинькофф Инвестиций. В этой статье разберем, как клиенты с минимальными навыками программирования создают торговых роботов. Базой будет API брокера Тинькофф Инвестиций — Tinkoff Invest API. Добро пожаловать на борт!
Бесплатные системы управления проектами: 15 систем, 70 функций
Привет! Продолжаю стабильно выходить на связь с Хабром раз в несколько лет =) Благо есть повод – пару месяцев назад перешел в новую контору, где снова надо было наладить работу целого отдела сотрудников на удаленке, который раньше как-то справлялся без системы управления задачами.
И потому я решил повторно провести рисерч на эту тему, чтобы посмотреть как изменился рынок и не появилось ли на нем что-то новенькое и интересное.
А изменилось на российском рынке систем управления проектами за минувший год чуть менее, чем всё. И это помимо того, что успело измениться еще раньше. Мы с командой перепробовали десятки новых и старых систем. Искали бесплатные и доступные в РФ. Составили себе подборку из 15 систем, и для особо нетерпеливых – свели в одну таблицу по возможностям бесплатных версий.
CI/CD из GitHub в Яндекс Облако через Docker
Всем привет!
Будем использовать GitHub Actions. Создадим виртуальную машину в Яндексе. И многое другое.
Сегодня настраиваем деплой из GitHub в Яндекс Облако, используя Docker compose.
Немного о WebEngine — low-code IDE для разработки современных веб-приложений
Много лет назад, смотря на крутейшие авторские посты, где творили самую настоящую техно-магию, я твердо решил - больше не писать до тех пор, пока не смогу сделать что-то такое, чем смогу гордиться. К этой статье-анонсу я шел почти 10 лет.
С огромной гордостью, хочу анонсировать WebEngine - IDE и набор технологий для создания современных сайтов на React, а в дальнейшем Angular, Vue, тем для WordPress, приложений на Electron и многое другое.
Эта статья содержит много текста, включая технического, абстрактного, критику устоев мироздания и главное - в ней не будет ссылок на beta-билд. А в конце статьи будут советы как делать не надо. Все атрибуты высорейтинговой и интересной статьи на месте.
Стратегии тестирования микросервисов
От автора: в этой статье я поделюсь своим опытом тестирования микросервисов. В последние годы команды разработчиков программного обеспечения внедряют архитектуру микросервисов, чтобы иметь возможность разрабатывать, тестировать и деплоить сервисы независимо и быстро. Для эффективного тестирования таких систем необходимо хорошо знать их архитектуру.
5 советов по созданию лучших диаграмм архитектуры решения
Я занимаюсь разработкой архитектур решения и учу других создавать лучшие диаграммы архитектуры решения на протяжении десятилетий и всегда придерживался принципа «диаграмма превыше всего». В результате я видел много отличных диаграмм архитектуры решения. Однако также приходилось встречать и не слишком впечатляющие примеры. У меня сформировались твердые убеждения относительно того, какие графические нотации лучше всего подходят для архитектуры решения. Однако в данной статье я воздержусь от навязывания своего мнения и вместо этого дам несколько советов, которые будут полезны вам независимо от того, какой подход вы предпочитаете.
Как перестать велосипедить или 4 self-hosted сервиса для начинающего СТО
Я знаю многое о велосипедах в Enterprise-разработке. Видел издали, катался на них, собирал сам, но наступают моменты, когда типичные задачи пора перевести на типичные решения. В статье расскажу о 4 self-hosted сервисах, которые освобождают уйму времени на действительно важные вещи.
Парсим ГАР БД ФИАС в удобный формат в питоне. Бесплатно, без регистрации и СМС
Если вам зачем-то понадобилась полная адресная база России, то самый простой и дешевый способ ее заполучить — это скачать на сайте налоговой. Да, вот так вот просто все. Ну почти.
Да, это полная официальная адресная база России, просто в открытом доступе, никто ничего не спрашивает, просто раздают. Сделали на наши налоги, и честно всем, как скамейку в парке, отдают в пользование. Прекрасно? Да!
"В чем же подвох?", — спросите вы, прищурившись.
Кратко: формат ужасен, документация очень плоха и должного единообразия данных не наблюдается, чем успешно пользуются коммерческие компании, перепродающие бесплатные данные (иногда пылесосят имейлы). Но такую несправедливость можно исправить.
Децентрализованный поиск для свободного веба
Возможно ли создать поисковую систему, которую тяжело подвергнуть цензуре, влиянию и блокировке?
Говоря техническим языком, возможно ли выполнять полнотекстовый поиск не имея удаленного сервера, удобным для пользователя способом, одновременно храня поисковый индекс в peer-to-peer системе и имея возможность быстро обновлять поисковый индекс?
Да, это возможно!
Под катом описание архитектуры поискового движка Summa на Rust и набора приемов, позволивших ответить утвердительно на все вопрос
Event Storming: что будет, если запереть 10 человек в одной комнате
Меня зовут Александр Донсков и я архитектор в компании REG.RU. Сегодня я расскажу о том, что такое Event Storming и что будет, если запереть 10 человек в одной комнате (в том числе виртуальной). Цель статьи не столько в том, чтобы рассказать, как это работает, сколько показать действенность подхода на реальных кейсах.
Нефункциональные требования: как не пустить систему ко дну
Привет, Хабр! Меня зовут Елена, я ведущий аналитик ИТ-компании SimbirSoft. Сегодня хочу затронуть такую тему, как нефункциональные требования к ИТ-продукту, которым не всегда уделяется должное внимание, а зря. Их несоблюдение может привести к потере прибыли, клиентов, репутации, остановке производственных процессов и большим штрафам, хотя с первого взгляда их влияние на осуществление пользовательского функционала неочевидно.
В статье расскажу, как и почему это может произойти, а главное – что нужно учесть, чтобы избежать негативных последствий. Материал будет полезен аналитикам, командам разработки, а также владельцам продуктов, поскольку они больше всех разбираются в системе и заинтересованы в успехе проекта. Приятным бонусом станут чек-листы, которые помогут сформулировать наиболее важные нефункциональные требования к:
- мощности и производительности
- безопасности, соответствию стандартам и законодательству
- переносимости и совместимости.
Создаем личное файловое облако легко и просто (и дешево)
А сегодня мы с вами быстро и решительно легко и просто поднимем свое личное файловое облако типа Google Drive или Яндекс.Диск, а если повезет, то еще и очень дешево.
Зачем? Ну, например, потому что не хотим зависеть от корпораций с их кабальными лицензионными соглашениями и сменой условий задним числом. Или потому что нам хочется приватности. Или просто потому что можем. А бонусом на нашем сервере вы потом сможете еще установить VPN или прокси для доступа к запрещенным сайтам, или поднять простенький веб-сайтик.
Я специально будут рассказывать все максимально подробно и пошагово, чтобы даже люди без большого опыта системного администрирования смогли все повторить. В наше время, благодаря развитому инструментарию, такому как docker и snap, установить и настроить все что нужно можно очень быстро всего лишь несколькими командами.
Грокаем функторы
Это перевод статьи из целого цикла постов "Грокаем функциональное программирование" Мэта Торнтона. Я позволил себе немного поменять порядок постов. В оригинале, функторы идут после монад, что мне показалось неверным. Всякая монада - это функтор, но не всякий функтор - это монада. Также я убрал дублирование из поста про монады и добавил необходимые пояснения. Мне нравится практическая направленность материала. Он довольно подробно останавливается на базовых вещах, так что скорее предназначен для тех, кто только знакомится с функциональным программированием.
В этом посте мы постараемся разобраться, что такое функтор собственноручно переизобретая его на рабочем примере.
Information
- Rating
- Does not participate
- Location
- London, England - London, Великобритания
- Registered
- Activity