Search
Write a publication
Pull to refresh
4
0.2
Send message

Организация кода в микросервисах и мой подход применения гексагональной архитектуры и DDD

Reading time7 min
Views15K

Привет, Хабр! В Монолите весь код должен быть в едином стиле, a в разных микросервисах можно использовать разные подходы, языки программирования и фреймворки. Для простых микросервисов с 1 — 2 контроллерами и 1 — 10 действиями особо смысла городить слои абстракций нет. Для сложных микросервисов с различными состояниями и логикой перехода между ними наоборот лучше изначально не лениться. Я хочу рассказать о моем опыте организации кода и использования подходов DDD, Портов и Адаптеров для обоих случаев. Есть кратко суть статьи: Джун — пишет код в контроллере. Мидл — пишет кучу абстракций. Сеньор — знает когда нужно писать код в контроллере, а когда нужны абстракции.
Читать дальше →

Увлекательные сайд-проекты, которыми можно заняться уже сегодня

Reading time5 min
Views7.6K
Это перевод статьи, опубликованной на сайте medium.com. В ней разработчик из Нидерландов Daan советует разные проекты, которые помогут в свободное время прокачать профессиональные навыки: от работы c 3D до создания биткойн-трекера.

Читать дальше →

Async programming in .NET: Best practices

Reading time24 min
Views38K
Появление async/await в C# привело к пересмотру того, как писать простой и корректный параллельный код. Зачастую, используя асинхронное программирование, программисты не только не решают проблемы, которые были с потоками, но и привносят новые. Дедлоки и рейсы никуда не пропадают — их просто становится труднее диагностировать.



Дмитрий Иванов — Software Analysis TeamLead в Huawei, в прошлом техлид JetBrains Rider и разработчик ядра ReSharper: структур данных, кэшей, многопоточности, регулярный спикер конференции DotNext.

Под катом — видеозапись и текстовая расшифровка доклада Дмитрия с конференции DotNext 2019 Piter.

Strict mode in TypeScript: описание флагов, примеры

Reading time4 min
Views13K

--strict флаг включает следующие флаги (и в какой версии добавлены):


--strictNullChecks (2.0)
--alwaysStrict (2.1)
--noImplicitAny
--noImplicitThis (2.0)
--strictBindCallApply (3.2)
--strictFunctionTypes (2.6)
--strictPropertyInitialization (2.7)

Приведем примеры и попытаемся разобраться в одном месте, что все это значит.
Читать дальше →

Как развивать сервис, когда вокруг крутые конкуренты

Reading time11 min
Views8.7K
Когда можно и нужно передирать у лидеров рынка, когда и как создавать добавленную стоимость и что делать, чтобы не впасть в отчаяние, если тебя считают бюджетным клоном другого сервиса.


Под катом — наши размышления выводы. А родились они из того, что нас постоянно сравнивают с TimePad. По крайней мере, припоминают нам его, когда хотят за что-то поругать. И мы с этим живем. Дожили до почти миллиона зарегистрированных участников и можем кое-что об этом рассказать.
Читать дальше →

Полное руководство по HTML-атрибутам data-*

Reading time8 min
Views103K
Представляем вашему вниманию перевод статьи, посвящённой использованию атрибутов data-*. Это — атрибуты, которые можно применять для удобного хранения в стандартных HTML-элементах различной полезной информации. Эта информация, в частности, может применяться в JavaScript и CSS.


Читать дальше →

Создаем интернет-магазин на Nuxt.js 2 пошаговое руководство Часть 2

Reading time13 min
Views18K


Первая часть тут


Продолжаем разработку нашего интернет магазина. В этой части будет:


  • нормальная загрузка картинок по статическим адресам
  • генерация хлебных крошек на клиенте
  • страница товара
  • шапка
  • рабочая кнопка купить с синхронизацией товаров между вкладками (и сессиями)
Читать дальше →

Декларативный шопинг в интернете с помощью Payment Request API и Angular

Reading time5 min
Views5.5K
Как давно вы платили на веб-сайте в один клик с помощью Google Pay, Apple Pay или заранее заданной в браузере картой?

У меня такое получается редко.

Даже наоборот: каждый новый интернет-магазин предлагает мне очередную формочку. А я должен каждый раз покорно искать свою карту, чтобы перепечатать данные с нее на сайт. На следующий день я захочу оплатить что-нибудь в другом магазине и повторю этот процесс.

Это не очень удобно. Особенно когда знаешь об альтернативе: в последние пару лет стандарт Payment Request API позволяет легко решать эту проблему в современных браузерах.

Давайте разберемся, почему его не используют, и попробуем упростить работу с ним.


Читать дальше →

3 способа рендеринга больших списков в Angular

Reading time6 min
Views19K
В 2020 году фронтенд-фреймворки стали лучше, эффективнее и быстрее. Но, даже учитывая это, рендеринг больших списков без «замораживания» браузера всё ещё может оказаться сложной задачей даже для самых быстрых из существующих фреймворков.

Это — один из тех случаев, когда «фреймворк является быстрым, а код — медленным».



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

Автор статьи, перевод которой мы сегодня публикуем, хочет исследовать существующие способы вывода больших списков на веб-страницах и поговорить о сферах их применения.
Читать дальше →

CSS Grid: Верстаем адаптивный журнальный макет в 20 строк

Reading time12 min
Views64K

Недавно я работал над современной реализацией блогролла (перечня внешних полезных/интересных блогов). Замысел был в том, чтобы предоставить читателям подборку из последних постов в этих блогах, упакованную в журнальную вёрстку, а не сухой список ссылок в сайдбаре.

Самая простая часть задачи — получение списка постов и их эксцерптов (эксцерпт — вступительный текст до ката) с наших любимых RSS–фидов. Для этого мы воспользовались WordPress-плагином Feedzy lite, который умеет агрегировать несколько фидов в один список, отсортированный по времени — идеальное решение в нашем случае. Трудная же часть в том, чтобы сделать всё красиво.
Читать дальше →

«Разрабатывая что-то заранее и полностью спроектированное, ты делаешь мертворожденную штуку» — разговор с The Breakfast

Reading time13 min
Views5.7K
image

В условиях пандемии коронавируса, карантинов, закрытых границ и самоизоляций, все в первую очередь хоронят олдскульный бизнес. Как выживать турфирмам, кинотеатрам и ресторанам, если все сидят дома. Цифровой бизнес наоборот потирает руки и борется за внимание засевших дома потребителей.

Но в ИТ может сильно пострадать еще совсем не окрепшая и только о себе заявившая отрасль — сервисы для оффлайновых встреч с незнакомыми людьми. Еще до объявления COVID-19 пандемией и до введения ЧС во многих странах мы поговорили с Елизаветой Орешкиной. Она вместе с Этери Санеблидзе делает приложение The Breakfast, которое сводит незнакомцев для совместных завтраков и напоминает закрытый клуб только для своих.

Мы с Иваном Звягиным (baragol) обсудили, почему люди вдруг снова захотели общаться в оффлайне, и как в современном мире делать стартап, который не гонится за массовой аудиторией и огромными цифрами.

Безопасность через ограничение пользователей или как создать уязвимость

Reading time12 min
Views6.3K
В 2019 году выявили уязвимость CPDoS Cache Poisoned Denial of Service) на сети CDN, которая позволяет отравить HTTP кэш CDN провайдера и вызвать отказ в обслуживании. Много хайпа уязвимость пока не собрала, так как не была замечена в реальных атаках. Но об одном из способов отравления кэша хочется поговорить отдельно. HTTP Method Override.


Если другие варианты эксплуатации уязвимости так или иначе опираются на баги или особенности модификации запросов посредником, то в основе варианта Method Override лежит одноименная тактика, которая не является частью стандарта HTTP, несет вместе с собой дополнительные проблемы, и которая возникла и распространилась из-за небрежного отношения к безопасности. Вот ее мы и рассмотрим.
Читать дальше →

DMCA — соблюдать нельзя игнорировать

Reading time5 min
Views46K

* заголовок обыгрывает фразу «Казнить нельзя помиловать»

Если вы размещаете на своих серверах какой-либо медиа-контент, вы наверняка сталкивались с DMCA-жалобами (в просторечии «абузами»). DMCA — это такой американский закон, на который ссылаются правообладатели, требующие удалить контент, заблокировать или отдать доменное имя, не использовать логотипы, торговые марки и т.д.
Если закон действует только в США, нужно ли выполнять эти требования находясь в России или можно игнорировать? Часто хостинг-провайдеры заставляют своих клиентов выполнять требования правообладателей, даже если в их юрисдикции не действует DMCA.

В статье мы разберем, что такое DMCA, в каких случаях его нужно соблюдать, а когда можно не обращать внимания. Расскажем, как VDSina поступает с таким жалобами. А также: как работают автоматические генераторы жалоб, и как следить за нарушителями на своем сервере, если приходится соблюдать DMCA.
Читать дальше →

Прокачиваем работу с событиями в Angular

Reading time5 min
Views15K

Давным-давно я написал статью о работе с EventManager в Angular. В ней я рассказал, как можно сохранить привычный нам синтаксис подписок на события, при этом избежав лишних запусков проверки изменений на частых и чувствительных событиях.


Однако описанный мною метод громоздкий и сложный для восприятия. Пришло время переписать фильтрацию на декораторы.


Читать дальше →

Как я заработал 1 000 000 $ без опыта и связей, а потом потратил их, чтобы сделать свой переводчик

Reading time20 min
Views137K

Как все начиналось


Эта история началась 15 лет назад. Работая программистом в столице, я накапливал деньги и увольнялся, чтобы потом создавать собственные проекты. Для экономии средств уезжал домой, в небольшой родной город, где работал над сайтом для студентов, программой для торговли, играми для мобильных телефонов. Но из-за отсутствия опыта ведения бизнеса это не приносило дохода, и вскоре проекты закрывались. Приходилось снова ехать в столицу и устраиваться на работу. Эта история повторилась несколько раз.

Когда у меня в очередной раз закончились деньги, наступил кризис. Я не смог найти работу, ситуация стала критической. Пришло время посмотреть на все вещи трезвым взглядом. Нужно было честно признаться себе, что я не знаю, какие ниши выбрать для бизнеса. Создавать проекты, которые просто нравятся, — путь в никуда.
Читать дальше →

Пример SPA «Простые заметки» на Mithril.js

Reading time10 min
Views3.1K
Mithril.js — непопулярный инструмент для создания клиентских веб приложений. На Хабре практически нет публикаций по этой теме. В этой заметке я хочу показать, как можно сделать небольшое приложение на Mithril. Приложение будем делать по мотивам вот этой публикации (перевод)
Читать дальше →

Без управления знаниями больно: 5 основных последствий отсутствия системы

Reading time7 min
Views19K
Toyota — мировой лидер автомобилестроения, один из самых дорогих автомобильных брендов и синоним слова «качество». Toyota известна своей сложной производственной системой, благодаря которой она стала мировым лидером. На её описание потребовалось 10 лет и 20 версий, в итоге появился документ «Философия Toyota 2001». Часть принципов из этой книги — кайдзен и канбан — используются в IT. Но эти принципы лишь часть системы постоянного обучения и непрерывного совершенствования, которая плотно интегрирована во все процессы корпорации.



В системе обучения много разных принципов и техник. Например, перед разработкой новой модели инженеры Toyota изучают передовые разработки поставщиков и технологии конкурентов: разбирают их автомобили, изучают и фиксируют удачные технические решения. При этом обучаются не только инженеры, но и вся компания. Для этого используются контрольные листки, матрицы качества, ретроспективы, таблицы навыков, базы данных стандартов и всех прошлых проектов. Всё это помогают сохранять и систематизировать знания, расти, обучаться и выпускать качественные продукты. Другими словами, в Toyota реализована почти идеальная система управления знаниями. Поэтому они лидеры.

История Toyota — отличный пример управления знаниями. Но что будет, если знаниями не управлять, а систему не выстраивать? Велосипеды, сломанные конвейеры, автобусы, «сжигание» денег на онбординге и legacy — все это случается с компаниями, когда они не задумываются об управлении знаниями.
Читать дальше →

Докеризация приложения, построенного на базе React, Express и MongoDB

Reading time6 min
Views59K
Автор статьи, перевод которой мы публикуем сегодня, хочет рассказать о том, как упаковывать в контейнеры Docker веб-приложения, основанные на React, Express и MongoDB. Здесь будут рассмотрены особенности формирования структуры файлов и папок таких проектов, создание файлов Dockerfile и использование технологии Docker Compose.


Читать дальше →

Дизайн-токены способны на большее: создаем единый источник информации о компонентах UI

Reading time14 min
Views19K

Термином «дизайн-система» в IT давно никого не удивишь. Компании систематизируют дизайн продуктов, придумывая свои или используя чужие инструменты для управления стилями, паттернами и компонентами. 


Badoo не является исключением: с помощью нашей дизайн-системы Cosmos мы поддерживаем общие принципы дизайна для четырёх приложений, работающих на четырёх платформах. 


image


Одна из первых и основных вещей, с которой начинается работа по созданию дизайн-системы, — это токены (или переменные), которые определяют значения разных сущностей системы. 


Как это работает? Например, у вас есть приложение для двух платформ. Вместо того чтобы для каждой заново указывать в CSS-файле размер и стиль шрифтов, вы можете хранить эти значения в JSON-файле, который легко преобразуется в код для любой платформы. В дальнейшем этот файл можно использовать и в других проектах с другими кодовыми базами. 


Несмотря на потенциал дизайн-токенов, во многих компаниях их структура остаётся довольно простой, что сильно ограничивает возможности их применения. 


Я хочу поделиться адаптированным переводом статьи моего коллеги Кристиано Растелли (Cristiano Rastelli), который несколько лет развивает дизайн-систему Cosmos. На примере своего опыта он показывает, как работать с токенами более эффективно: добавлять метаданные и использовать их для описания свойств компонентов. 


Под катом — небольшой рассказ о том, как выглядят дизайн-токены в Badoo и почему они значительно упрощают процесс разработки.

Читать дальше →

Чистый CSS: 4 метода анимирования цвета ссылок

Reading time6 min
Views39K
Автор статьи, перевод которой мы сегодня публикуем, предлагает, пользуясь чистым CSS, создать механизм изменения цвета текста ссылки при наведении на неё мыши. Но это должна быть не обычная смена цвета. Новый цвет должен заполнять ссылку слева направо, заменяя старый.


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

Information

Rating
4,439-th
Registered
Activity