Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Django: один пользователь для всего

PythonDjangoAPI
Из песочницы

Проблема


Всем привет. При разработке API для очередного веб-портала я взял свой привычный стек:


  • Django
  • django-rest-framework

Но в этот раз стояла довольно непривычная задача — сделать одну User модель, которая может иметь несколько разных профилей (Исполнитель, Заказчик). И наличие каждого из профилей дает разные полномочия на работу с одними и теми же ресурсами.


Такой подход позволяет пользователям не заводить несколько учетных записей для каждой роли, что зачастую было бы невозможно, ввиду ограничений на модель: уникальный email или номер телефона.


Итак, опишем возникшие перед нами проблемы:


  1. Один пользователь – несколько профилей.
  2. Как организовать права каждого из профилей.
  3. Доступ к одним тем же ресурсам от разных профилей.

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

Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры4.9K
Комментарии 11

Alfa Battle — онлайн-чемпионат по прикладному программированию

Блог компании Альфа-БанкJavaХакатоныКарьера в IT-индустрииКонференции
Привет!

Сегодня мы запускаем Alfa Battle, онлайн-чемпионат по прикладному программированию для Java-разработчиков по всей стране. Пройдет чемпионат в режиме онлайн, и побороться за звание лучшего тоже можно будет в прямом эфире.



Мы не стали добавлять в программу какие-то общие задачи по теме, сферические кейсы и прочее — вместо этого будут реальные бизнес-задачи backend-разработки от нас и от партнёров мероприятия (Билайн и X5 Retail Group). Участвовать можно из любого города РФ, главное — желание и интернет-доступ.

Из призов будут деньги (250 000 / 150 000 / 100 000 рублей за первое, второе и третье места соответственно), приглашение на работу для авторов лучших решений (в офис или на удалёнку из своего города) и билет на Joker за самое креативное решение.

Гарантированные призы каждому участнику — набор ALFA BATTLE LIMITED EDITION и экскурсия по Alfa Digital. Под катом этапы чемпионата.
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Просмотры4.2K
Комментарии 1

Backend United #6: Табаско — разработчики о безопасности

Блог компании АвитоИнформационная безопасностьМикросервисы

Привет! 25 июня в 18:00 по Москве пройдёт шестой митап в серии Backend United под кодовым названием «Табаско». Вещаем в онлайн-формате. Тема митапа — безопасность. Будем говорить об обнаружении и предотвращении ошибок при написании и эксплуатации кода, которые могут привести к проблемам с секьюрностью.


Традиционно для Backend United речь пойдёт о технологиях и подходах, не завязанных на конкретный язык программирования. Под катом — тезисы выступлений и ссылка на трансляцию.


Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры1.3K
Комментарии 0

Отправляем магические ссылки с помощью Node.js

Блог компании OTUSJavaScriptNode.JS
Перевод
Перевод статьи подготовлен в преддверии старта курса «Разработчик Node.js».




Самый популярный метод входа в приложение – это предоставление логина и пароля, но пользователи могут найти в этом определенные недостатки. Несмотря на то, что существует множество менеджеров паролей, их использование требует времени. Не сильно много, но все же. Некоторые приложения продвигают сложную и тем самым разочаровывающую политику паролей, поэтому придумать новый пароль бывает совсем непросто. Беспарольная система может стать хорошей альтернативой обычной аутентификации по логину и паролю. Она используется в Slack и FramerX, и выглядит это, как отправка магической ссылки пользователю для включения такой аутентификации в приложении. Беспарольная система работает следующим образом:

  1. Пользователь посещает приложение, где есть форма для ввода адреса электронной почты;
  2. Пользователь вводит адрес электронной почты и нажимает кнопку подтверждения;
  3. Магическая ссылка для входа в систему отправляется на электронную почту пользователя;
  4. Пользователь нажимает на ссылку и его перенаправляют в приложение, где он уже вошел в систему.

После этого магическая ссылка более недействительна.

Ниже мы рассмотрим некоторые основные моменты реализации беспарольной авторизации на Node.js.
Читать дальше →
Всего голосов 10: ↑5 и ↓5 0
Просмотры2.2K
Комментарии 5

Практики хорошего code review, или что такое code review за 15 минут. Доклад Никиты Соболева на DUMP в Казани

Блог компании IT-PeoplePythonJavaScriptУправление разработкойIT-компании

В 2019 году на DUMP в Казани выступал Никита Соболев – технический директор компании wemake.services. И Никита на протяжении почти 40 минут пытался вскипятить мозги слушателей секции Backend, рассуждая о code review. Сегодня хотим привести расшифровку этого «взрывного» доклада, чтобы если уж мозги бурлили, то у всех сразу.


А вот, кстати, и сам Никита Соболев во время своего выступления.



Читать дальше →
Всего голосов 19: ↑16 и ↓3 +13
Просмотры6.7K
Комментарии 3

Как подружить RxJava с VIPER в Android, подходы применения и о структуре планировщиков

Блог компании AurigaJavaРазработка мобильных приложенийРазработка под Android
image

Привет, Хабровчане. Сегодня мы с вами поговорим о RxJava. Я знаю, что о ней написано материала вагон и маленькая тележка, но, как мне кажется, у меня есть пара интересных моментов, которыми стоит поделиться. Сначала расскажу, как мы используем RxJava вместе с архитектурой VIPER для Android приложений, заодно посмотрим на «классический» способ применения. После этого пробежимся по главным особенностям RxJava и остановимся подробнее на том, как устроены планировщики. Если вы уже запаслись вкусняшками, то добро пожаловать под кат.
Читать дальше →
Всего голосов 4: ↑3 и ↓1 +2
Просмотры1.3K
Комментарии 6

PHP Internals News Эпизод #38: предзагрузка и WeakMaps

Блог компании OTUSPHP
Перевод

Перевод транскрипции подкаста подготовлен в преддверии старта курса «Backend-разработчик на PHP»





Описание


В этом эпизоде «PHP Internals News» я беседую с Никитой Поповым (Twitter, GitHub, Сайт) о проблемах предзагрузки PHP 7.4 и его RFC WeakMaps.

Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Просмотры1.5K
Комментарии 0

Пишем full stack монолит с помощью Angular Universal + NestJS + PostgreSQL

PostgreSQLNode.JSЯндекс APIAngularTypeScript
Tutorial
Привет, Хабр!

В этой статье мы создадим готовый шаблон-монолит, который можно брать за основу нового fullstack приложения как скелет для навешивания функционала.


Эта статья будет полезна, если вы:


  • Начинающий  fullstack-разработчик;
  • Стартапер, который пишет MVP чтобы проверить гипотезу.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры6K
Комментарии 3

Архитектура современных корпоративных Node.js-приложений

Блог компании ЯндексБлог компании ЮMoneyРазработка веб-сайтовJavaScriptNode.JS
🔥 Технотекст 2020 🔥 Технотекст 2020
Ох, не зря в названии намёк на нетленку Фаулера. И когда фронтенд-приложения успели стать настолько сложными, что мы начали рассуждать о высоких материях? Node.js… фронтенд… погодите, но Нода же на сервере, это бэкенд, а там ребята и так всё знают!



Давайте по порядку. И сразу небольшой дисклеймер: статья написана по мотивам моего выступления на Я.Субботнике Pro для фронтенд-разработчиков. Если вы занимаетесь бэкендом, то, возможно, ничего нового для себя не откроете. Здесь я попробую обобщить свой опыт фронтендера в крупном энтерпрайзе, объяснить, почему и как мы используем Node.js.
Читать дальше →
Всего голосов 53: ↑52 и ↓1 +51
Просмотры44.8K
Комментарии 64

Как я искал работу в Берлине

JavaScriptПрограммированиеКарьера в IT-индустрии
Recovery mode

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

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

Читать дальше
Всего голосов 13: ↑11 и ↓2 +9
Просмотры5.3K
Комментарии 27

Midmare — свободный от HTTP-Layer модуль Node.js

Блог компании Parimatch TechOpen sourceNode.JSGitHub
Midmare — это минималистичная open-source библиотека. Я написал её в достаточно сжатые сроки с целью оптимизировать конкретные процессы в своей компании. Но в результате удалось прийти к решению, потенциал которого значительно превышает изначальную задумку.

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

Предыстория


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

С учетом этих особенностей необходимо было найти гибкое и универсальное решение, чтобы переписать существующий backend. Таким решением стала библиотека Midmare.

Вводные задачи


У меня была задача сделать так, чтобы библиотеку можно было использовать и с TypeScript, и с JavaScript. При этом команда целилась на то, чтобы полностью переписать код с TS на JS для ускорения разработки.
Читать дальше →
Всего голосов 14: ↑7 и ↓7 0
Просмотры2K
Комментарии 10

Путь к Федеративному GraphQL

Разработка веб-сайтовOpen sourceJavaScriptAPIМикросервисы
Перевод

Программисты любят хорошие истории, поэтому надеюсь что пятилетний путь к композитному API с помощью GraphQL в боевой среде (на пике выдающей 110 запросов в секунду при 100мс задержке) будет интересен.

[Если вы спешите, проскрольте ниже к урокам и гляньте на открытый код graphql-schema-registry]

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Просмотры3.5K
Комментарии 3

Как я умный аквариум делал (backend)

PythonAPIРазработка под Arduino
Из песочницы

image


Пролог


Работая программистом в одной из больших и успешных компаний Москвы, я не переставал совершенствовать свои навыки программирования и проходил различные курсы на платформе Udemy.
Конечно просто смотря курс и повторяя все за автором было скучновато, да и были моменты которые я не понимал ввиду своей некомпетентности на тот момент. Нужно делать свои проекты, основываясь на том, что дает автор курса — подумал я, и был конечно же прав. Только настоящие трудности и их разрешение дает вам бесценный опыт, это и есть настоящая обучение.


Обучался я в основном web программированию, поскольку и работал на том же направлении. Охватывал Full-stack разработку, поскольку решил, что нужно разбираться как в серверной части, так и во фронтовой. Учил JavaScript и различные фреймворки для бека это были Express, Appolo GraphQL (поскольку на работе был именно такой стек, да и в целом хотелось попробовать что-то отличное от REST подхода), на фронте это был все тот же Apollo GQL и Vue.

Читать дальше →
Всего голосов 30: ↑29 и ↓1 +28
Просмотры11.6K
Комментарии 39

Записи онлайн-митапов из глубинки

Блог компании DirectumКонференции

Пандемия испепелила расстояния, и все знания мира оказались на расстоянии клика. Именитыми конференциями в онлайне уже никого не удивишь, пришла пора поискать сокровища в глубинке.

И мы тут как тут. За изоляцию мы сделали 6 онлайн-митапов, сегодня делимся материалами с трёх, организованных при участии коллег из EPAM и Контура:

Бэкенд, Мобильная разработка, Искусственный интеллект

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Просмотры1.1K
Комментарии 0

Таким DevFest еще не был. Встретимся в онлайне 17 октября

Блог компании Google DevelopersУправление сообществомКонференции


Привет, Хабр! Меня зовут Алиса и я развиваю GDG сообщества в Петрозаводске и Калининграде.

Не будем вдаваться в рассуждения о том, как в этом году изменилась жизнь и каким квестом стала организация чего-либо в офлайне. Поговорим о другом — чему мы научились, как объединили силы сообществ GDG России и Минска и что готовим к DevFest Russia & Belarus 2020.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры446
Комментарии 2

TypeScript для бэкенд-разработки

Блог компании Издательский дом «Питер»JavaScriptПрограммированиеJavaTypeScript
Перевод
Язык Java по-прежнему правит бал в backend-разработке. На то немало причин: быстрота, безопасность (если, конечно, закрыть глаза на null-указатели), плюс обширная, хорошо протестированная экосистема. Но в эру микросервисов и гибкой разработки стали важнее и другие факторы. В некоторых системах бывает не обязательно держать пиковую производительность и располагать надежной экосистемой стабильных зависимостей, если речь идет о простеньком сервисе, выполняющем CRUD-операции и преобразование данных. Более того, многие системы приходится оперативно строить и перестраивать, чтобы идти в ногу с быстрой итеративной разработкой фич.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры4.9K
Комментарии 2

Делаем поиск в веб-приложении с нуля

Блог компании JoomРазработка веб-сайтовПоисковые технологииPythonПрограммирование
Tutorial
В статье «Делаем современное веб-приложение с нуля» я рассказал в общих чертах, как выглядит архитектура современных высоконагруженных веб-приложений, и собрал для демонстрации простейшую реализацию такой архитектуры на стеке из нескольких предельно популярных и простых технологий и фреймворков. Мы построили single page application с server side rendering, поддерживающее просмотр неких «карточек», набранных в Markdown, и навигацию между ними.

В этой статье я затрону чуть более сложную и интересную (как минимум мне, разработчику команды поиска) тему: полнотекстовый поиск. Мы добавим в наш контейнерный рай ноду Elasticsearch, научимся строить индекс и делать поиск по контенту, взяв в качестве тестовых данных описания пяти тысяч фильмов из TMDB 5000 Movie Dataset. Также мы научимся делать поисковые фильтры и копнём совсем немножко в сторону ранжирования.

Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры9.5K
Комментарии 1

Собеседование Backend-Java-разработчика: вопросы и где искать ответы. Часть 1

Java

Когда-то я проходил серию собеседований на Backend-Java-разработчика и записывал вопросы себе на будущее, чтобы потом можно было пробежаться и освежить память. Подумалось, что, вероятно, данный сборник будет полезен не только мне, поэтому сдул с него пыль, набросал ответов и делюсь с сообществом. На оригинальность и исключительность не претендую: подобные статьи уже были и на Хабре, и много где ещё — в конце (во второй части) приведу список ссылок, чтобы шпаргалка была максимально полной.


Точно установить сложность всех вопросов не берусь — на разном уровне их потребуется раскрыть с различной степенью подробности. Я написал ответы где-то на плюс-минус middle, щедро приправив ссылками для дальнейших изысканий. На самые популярные вопросы сразу перенаправляю в источники с готовыми ответами. Заодно посмотрим по ссылкам в статье, насколько Хабр может помочь в подготовке к собесам.


Текста получилось много, поэтому пришлось разбить на две части. В первой поговорим про Java и Spring, а обо всём остальном — во второй. Вторая часть тут

Погнали
Всего голосов 17: ↑15 и ↓2 +13
Просмотры21.9K
Комментарии 7

Собеседование Backend-Java-разработчика: вопросы и где искать ответы. Часть 2

Java

Публикую продолжение сборника вопросов-ответов с собеседований на Backend-Java-разработчика. В первой части мы прошлись по Java и Spring. А в этой поговрим о Hibernate, базах данных, паттернах и практиках разработки, об одной популярной библиотеке, поддержке и сопровождении наших приложений, а также посмотрим на альтернативные шпаргалки и подведём итоги.

Потопали
Всего голосов 21: ↑18 и ↓3 +15
Просмотры17.9K
Комментарии 14

kotlinx.coroutines 1.4.0: представляем StateFlow и SharedFlow

Блог компании OTUSПрограммированиеKotlin
Перевод

Сегодня мы с радостью объявляем о выходе версии 1.4.0 библиотеки Kotlin Coroutines. Основными новшествами этого релиза стали StateFlow и SharedFlow, которые теперь являются стабильными API-интерфейсами. StateFlow и SharedFlow предназначены для использования в тех случаях, когда требуется управление состоянием в контексте асинхронного выполнения с применением Kotlin Coroutines.

(Примечание: перевод статьи от 30 октября 2020г.)

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры3.2K
Комментарии 4