Как стать автором
Обновить
1
0
Александр Гарин @Legion21

R&D

Отправить сообщение

Сервис на языке Dart: введение, инфраструктура бэкэнд

Время на прочтение8 мин
Количество просмотров20K
Оглавление
1. Введение
2. Backend
2.1. Инфраструктура.
2.2. Доменное имя. SSL.
2.3. Серверное приложение на Dart.

3. Web
3.1. Заглушка «Under construction»

4. Mobile


Введение


Меня, Flutter-разработчика, знакомые часто спрашивают: «Что же такое язык Dart?». Качают головой со словами: «А вот Петя серьёзные транспорты на Java пишет, а в Яндексе вообще плюсы в проде...». Ну что ж, пожалуй, действительно, Dart далёк от практик «фабрик для создания фабрик» из Java. Однако если стоит задача реализовать клиентские приложения сразу для нескольких платформ, не утонув в потоке задач по синхронизации разработчиков разных целевых ОС; создать целостный UI, узнаваемый, но специфичный для Android, iOS и веб и в целом уложиться в адекватные бюджет и сроки, — здесь Flutter не имеет конкурентов. И эти вопросы стоят вдвойне если у вас… стартап.

Итак, легенда: некий стартап решил создать новый сервис… ну, например, для
обмена списками покупок
Такая себе идея для стартапа, я знаю, но если я выпущу ещё один ToDo лист в этот мир, мне будет стыдно :)
между пользователями сервиса. Цель стартапа — выпустить MVP за три месяца на трех платформах (плюс четвертая — сервер, конечно).

10 лет назад я бы сказал, что этот кейс не имеет решения и постарался бы держаться от него подальше, 3 года назад решением мог стать стек ReactNative/React/NodeJs, в 2020 году для этого есть Dart. Добро пожаловать в атмосферу разработки альфа версии сервиса, я постараюсь наглядно пройти и объяснить весь процесс разработки. Код всех приложений будет выложен в паблик. Комментарии, включая набросы и холивары, приветствуются. Спросить автора «по существу» или просто посоветоваться можно в Telegram канале нашего отдела.


Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии28

Пишем простой WYSIWYG-редактор с помощью ProseMirror

Время на прочтение7 мин
Количество просмотров8.6K
Когда в Sports.ru понадобился свой WYSIWYG-редактор, мы решили сделать его на основе библиотеки ProseMirror. Одной из ключевых особенностей этого инструмента является модульность и широкие возможности кастомизации, поэтому с его помощью можно очень тонко подогнать редактор под любой проект. В частности, ProseMirror уже используют в The New York Times и The Guardian. В этой статье мы расскажем о том, как с помощью ProseMirror написать свой WYSIWYG-редактор.

Пишем простой WYSIWYG-редактор с помощью ProseMirror
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии3

Определяем подходящий размер для кластера Kafka в Kubernetes

Время на прочтение12 мин
Количество просмотров14K
Прим. перев.: В этой статье компания Banzai Cloud делится примером использования её специальных утилит для облегчения эксплуатации Kafka в рамках Kubernetes. Приводимые инструкции иллюстрируют, как можно определить оптимальный размер инфраструктуры и настроить саму Kafka для достижения требуемой пропускной способности.



Apache Kafka — распределённая стриминговая платформа для создания надёжных, масштабируемых и высокопроизводительных потоковых систем реального времени. Её впечатляющие возможности можно расширить с помощью Kubernetes. Для этого мы разработали Open Source-оператор Kafka и инструмент под названием Supertubes. Они позволяют запускать Kafka в Kubernetes и использовать её различные функции, такие как тонкая настройка конфигурации брокера, масштабирование на основе метрик с ребалансировкой, rack awareness (осведомлённость об аппаратных ресурсах), «мягкое» (graceful) выкатывание обновлений и т.д.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии3

Распознавание символов методом наименьшего расстояния Левенштейна

Время на прочтение3 мин
Количество просмотров8.4K

В последнее время задача распознавания символов в прикладных программах не представляет особой сложности — можно использовать множество готовых OCR-библиотек, многие из которых доведены почти до совершенства. Но все же иногда может возникнуть задача разработать свой алгоритм распознавания без использования сторонних «навороченных» OCR-библиотек.


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

Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии18

Элегантное асинхронное программирование с помощью промисов

Время на прочтение18 мин
Количество просмотров13K
Доброго времени суток, друзья!

Промисы (обещания) — сравнительно новая особенность JavaScript, которая позволяет откладывать выполнение действия до завершения выполнения предыдущего действия или реагировать на неудачное выполнение действия. Это способствует правильному определению последовательности выполнения асинхронных операций. В данной статье рассматривается, как работают обещания, как они используются в Web API, и как можно написать собственное обещание.

Условия: базовая компьютерная грамотность, знание основ JS.
Задача: понять, что такое обещания и как они используются.
Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии54

Как рассчитать финансовую модель программы лояльности

Время на прочтение9 мин
Количество просмотров8.7K
В этом году мы впервые считали финансовую модель программы лояльности. Чтобы программа лояльности действительно работала, к проекту нужно подходить очень скрупулёзно.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии4

20 библиотек для эффектного iOS-приложения

Время на прочтение6 мин
Количество просмотров15K


Из огромного количества iOS-библиотек нет особого смысла составлять какие-то рейтинги. Поэтому просто представляем двадцатку эффектных/полезных инструментов для тех, кто пишет приложения под гаджеты Apple.

Все анимации являются ссылками на свои полноразмерные версии.
Большой траффик - много гиф-анимации
Всего голосов 23: ↑22 и ↓1+21
Комментарии13

Any и AnyObject в Swift. В чем их различие?

Время на прочтение3 мин
Количество просмотров13K
Довольно долгое время в своих проектах при написании когда я использовал тип Any, например при обработке JSON данных. Но также я знал что есть и второй тип — AnyObject. И недавно я задумался о разнице между этими двумя типами.
Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Комментарии2

Обзор WCS 5.2 — WebRTC сервера для веб-разработчиков онлайн трансляций и видеочатов

Время на прочтение13 мин
Количество просмотров11K


Алиса — опытный фулл-стек разработчик и способна за неделю написать каркас SAAS проекта на своем любимом фреймворке с использованием php. На фронтенде предпочитает Vue.js.


В телеграмм стучится заказчик, которому во что бы то ни стало надо разработать веб-сайт, который будет местом встречи работодателя и сотрудника для проведения очного интервью. Очного — означает глаза в глаза, прямого видео контакта в реальном времени с видео и голосом.
«Почему не скайп?» — спросите вы. Так уж повелось, что серьезные проекты, а каждый стартап, несомненно, себя таковым считает, стараются предложить внутренний сервис коммуникаций по самым разным причинам, среди которых:

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

Фальсификация фотогорафий группы Дятлова

Время на прочтение7 мин
Количество просмотров61K
image

Ряд официальных фотографий, сделанных группой Игоря Дятлова, было сфабриковано. В публикации представлены доказательства этого утверждения.
Читать дальше →
Всего голосов 78: ↑21 и ↓57-36
Комментарии148

Говорите о своей зарплате

Время на прочтение4 мин
Количество просмотров47K

Давайте поговорим откровенно, товарищи айтишники.


На фоне кучно опубликованных экономических и политических статей на Хабре, связанными с Nginx и Айхор, призывами объединяться в профсоюзы, самое время напомнить о наших классовых интересах. Поскольку айтишник является наёмным работником, у него существуют вполне определённые требования:


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

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


image

Читать дальше →
Всего голосов 119: ↑76 и ↓43+33
Комментарии667

Понимаем UICollectionViewLayout на примере Photos App

Время на прочтение14 мин
Количество просмотров19K
Здравствуй, Хабр! Меня зовут Никита, я работаю над мобильными SDK в компании ABBYY и в том числе занимаюсь UI-компонентом для сканирования и удобного просмотра многостраничных документов на смартфоне. Этот компонент сокращает время на разработку приложений на базе технологии ABBYY Mobile Capture и состоит из нескольких частей. Во-первых, камера для сканирования документов; во-вторых, экран редактора с результатами захвата (то есть автоматически сделанными фотографиями) и экран исправления границ документа.

Разработчику достаточно вызвать пару методов – и вот в его приложении уже доступна камера, которая автоматически сканирует документы. Но, помимо настроенных камер, нужно предоставить клиентам удобный доступ к результатам сканирования, т.е. автоматически сделанным фотографиям. А если клиент сканирует договор или устав, то таких фотографий может быть очень много.

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



В качестве референсов я часто обращаю внимание на системные приложения Apple. Когда внимательно смотришь на анимации и другие интерфейсные решения их приложений, то начинаешь восхищаться их внимательным отношением к разного рода мелочам. Сейчас мы в качестве референса будем смотреть на приложение Photos (iOS 12). Я обращу ваше внимание на конкретные фичи этого приложения, а дальше мы попробуем их реализовать.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии3

Обнаружение DDoS-атак «на коленке»

Время на прочтение7 мин
Количество просмотров25K
Приветствую, Хабр! Я работаю в небольшом интернет провайдере масштаба области. У нас транзитная сеть (это значит, что мы покупаем интернет у богатых провайдеров и продаем его бедным). Несмотря на небольшое количество клиентов и такое же небольшое количество трафика протекающего по нашей сети, довольно часто приходится иметь дело с весьма внушительными DDoS-атаками по 10-20Гбит/с. (чаще всего конечно это атаки гораздо меньшего калибра). И хотя некоторые из наших клиентов обзавелись уже системами обнаружения таких атак и могут самостоятельно отправить жертву в блек-холл, гораздо чаще обнаружение атаки и бан конкретного IP жертвы ложится на наши плечи (тем более, если атака способна забить наши внешние каналы).



О решении, которое помогает обнаруживать эти самые атаки и которое принято у нас в сети, я и хотел бы рассказать. Оно бесплатно, основывается на анализе данных NetFlow, поэтому просто и весьма эффективно.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии9

Flutter: рисуем текст вдоль окружности

Время на прочтение5 мин
Количество просмотров7.4K

Понадобилось мне тут на днях в одном мини-проекте (проект, можно сказать, экспериментальный, сделан на Flutter Web) реализовать такого вида штуку:


Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии6

Изучить отзывчивый веб-дизайн за 5 минут

Время на прочтение4 мин
Количество просмотров25K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Learn responsive web design in 5 minutes» автора Per.

В этой статье я научу вас многим приёмам отзывчивого дизайна за 5 минут. Этого, очевидно, недостаточно для правильного изучения, но здесь вы найдёте обзор на следующие наиболее важные методы:

  • Относительные единицы измерения CSS
  • Медиа-запросы
  • Flexbox
  • Отзывчивая типографика
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии5

Чеклист по UX из 30 пунктов для мобильных приложений

Время на прочтение7 мин
Количество просмотров30K
image

Эта статья — напминалка о том, что нужно перепроверить в дизайне вашего приложения, прежде чем отсылать его на AppStore/GooglePlay. Список поделен на тематические блоки:

  1. Вход / Регистрация
  2. Первый опыт
  3. Ежедневные взаимодействия
  4. Уведомления
  5. Параметры аккаунта
  6. Лента
  7. Поиск
  8. AppStore/GooglePlay
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии9

Зарплатная вилка. Ты ж у мамы программист

Время на прочтение7 мин
Количество просмотров160K
Думаю что у каждого ИТ-специалиста наступает тот момент, когда он хочет написать подобный текст может и не для себя, а для десятков знакомых, которые не работают в этой сфере и не понимают как и что. Возможно кому-то будет полезно просто дать ссылку на подобную статью, чем в 10 раз объяснять самому.

Дело в том, что ИТ-сфера одновременно бурно развивается (все еще) и в то же время полна множества устоявшихся стереотипов.
Читать дальше →
Всего голосов 249: ↑195 и ↓54+141
Комментарии472

Понимаем Property Wrappers в SwiftUI

Время на прочтение4 мин
Количество просмотров27K
Перевод статьи подготовлен специально для студентов курса «iOS Разработчик. Продвинутый курс v 2.0.»




На прошлой неделе мы начали новую серию постов о фреймворке SwiftUI. Сегодня я хочу продолжить эту тему, рассказав о Property Wrappers в SwiftUI. SwiftUI предоставляет нам обертки свойств @State, @Binding, @ObservedObject, @EnvironmentObject и @Environment. Итак, давайте попытаемся понять разницу между ними и когда, почему и какую из них мы должны использовать.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии4

Как закалялись бойцы ру->нета. Немного реальной истории

Время на прочтение5 мин
Количество просмотров15K
Беседуя сегодня с друзьями, начали вспоминать «как все было» в Рунете — причем не со слов политически ангажированных «Ашмановых и прочих приближенных», но как было реально.

Подбили на написание статьи. Делать было нечего, написал набросок о чем дальше можно ©

По сути — ряд неизвестных историй периода становления IT в РФ, смешных и не очень, плюс описание типичной на тот момент карьеры.

Если будет интересно — то есть много фотографий и историй — все old fashion, снималось еще не на цифровые камеры. Когда еще были черно-белые мониторы :)

image
Читать дальше →
Всего голосов 89: ↑50 и ↓39+11
Комментарии59

То, что нужно знать о проверке чека App Store (App Store receipt)

Время на прочтение4 мин
Количество просмотров19K

В StackOverflow по-прежнему появляется много вопросов о валидации App Store чеков, поэтому мы решили написать статью на эту тему в формате вопросов и ответов.


image

Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии5
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer, Software Architect
Lead
Node.js
React
NextJS
TypeScript
NestJS
React Native
GraphQL
Golang
Docker
Kubernetes