Search
Write a publication
Pull to refresh
12
8
Alexander Kardapolov @akardapolov

User

Send message

Flutter + чистая архитектура: разбираем на примере

Reading time17 min
Views82K

На определенном этапе изучения новой технологии начинаешь задаваться вопросом, как правильно организовать архитектуру проекта. Мне в свое время повезло - попались опытные наставники, которые дали мудрые советы. Однако я считаю, что знания не должны лежать мертвым грузом, поэтому пишу эту статью в помощь начинающим (и не только) flutter-разработчикам.

Чистая архитектура - это концепция построения архитектуры систем, предложенная Робертом Мартином - в миру "дядюшка Боб". Концепция предполагает построение приложения в виде набора независимых слоёв, что облегчает тестирование, уменьшает связность и делает приложение более простым для понимания.

Flutter - стремительно набирающий популярность фреймворк для разработки кроссплатформенных приложений. В списке поддерживаемых платформ - iOS, Android, web, в бете находится поддержка десктопа.

Под катом - рассказ о том, как построить flutter-приложение с использованием идей чистой архитектуры.

Читать далее

Windows 10 + Linux. Настройка GUI KDE Plasma для Ubuntu 20.04 в WSL2. Пошаговое руководство

Reading time9 min
Views100K


Введение


Данная статья предназначена вниманию системных администраторов, которые подготавливают типовые рабочие места на компьютерах под управлением ОС Windows 10, в том числе для разработчиков ПО.

Следует отметить, что существует определенная проблема, связанная с невозможностью интеграции ПО, полученного в on-line магазине Microsoft Store для использования в пользовательском образе Windows 10. Не вдаваясь в подробности уточню, что данная проблема связана с тем, что установленные из Microsoft Store программы связываются со служебной учетной записью Administrator, и при завершении создания пользовательского образа утилитой sysprep возникают обусловленные этим обстоятельством ошибки.

Рассмотренный в данной статье способ позволить избежать такой проблемы при подготовке образа ОС Windows 10 с предварительно настроенной подсистемой WSL2, а также с заранее подготовленным и настроенным образом ОС Ubuntu 20.04 с GUI KDE Plasma, который в свою очередь может иметь свой набор пользовательского ПО.

В сети Интернет имеется большое количество примеров и руководств по настройке подсистем WSL (т.е. WSL1 и сравнительно новой WSL2), с настройкой GUI интерфейса для linux систем на базе ОС начиная с версии Ubuntu 16.04 и заканчивая Ubuntu 20.04, но в основном это касалось рабочих столов на основе т.н. «легковесного» xfce4, имеющий вполне объяснимые ограничения в пользовательских настройках. Но что касается GUI KDE Plasma для Ubuntu 20.04, в сети не нашлось какой-либо существенной информации. Но именно этот вариант предоставляет конечному пользователю практически неограниченный набор настроек как внешнего вида системы, так и настроек оборудования, конечно с учетом текущих возможностей интеграции linux-систем, реализованных в подсистеме WSL2.
Читать дальше →

Почему мы выбрали MobX, а не Redux, и как его использовать эффективнее

Reading time8 min
Views45K

Меня зовут Назим Гафаров, я разработчик интерфейсов в Mail.ru Cloud Solutions. На дворе 2020 год, а мы продолжаем обсуждать «нововведения» ES6-синтаксиса и преимущества MobX над Redux. Существует много причин использовать Redux в своем проекте, но так как я не знаю ни одной, расскажу о том, почему мы выбрали MobX.

Почему?

Postgresso 25

Reading time13 min
Views3.4K


Жизнь продолжается. А мы продолжаем знакомить вас с самыми интересными новостями PostgreSQL.


Главное событие


EDB Completes Acquisition of 2ndQuadrant

EDB поглотила 2ndQuadrant. Теперь всё будет под брендом EDB. Руководить будет CEO EDB Эд Бойджан (Ed Boyajian), а великий и ужасный Саймон Риггс (Simon Riggs) из 2ndQuadrant получит титул PostgreSQL Fellow и будет PG-евангелистом и техническим стратегом.

Не будем считать деньги, а напомним о вкладе в сообщество от обеих уважаемых, почтенных компаний (EDB основана в 2004-м, 2ndQuadrant — в 2001-м).
Если считать по участникам основных разработчиков PostgreSQL (core team), то счет 2:1 в пользу EDB: Bruce Momjian и Dave Page (PgAdmin) от EDB, против Peter Eisentraut от 2nd Quadrant. Брюс Момджан напомнил о неписанном правиле сообщества: в core team не должно быть больше половины разработчиков из одной компании. А в новом EDB — 3 из 5.

Если считать по главным контрибуторам (major contributors) в код PostgreSQL, то маятник качнулся в другую сторону: 5: 3 в пользу 2ndQuadrant — Andrew Dunstan, Álvaro Herrera, Petr Jelinek, Simon Riggs, Tomas Vondra против Devrim Gündüz, Robert Haas, Amit Langote.

Но у 2ndQuadrant есть ещё и один Заслуженный хакер (hackers emeritus) — Marc G. Fournier.

И ещё: Эд Байджан в своей статье на сайте 2ndQuadrant ссылается на COVID-19 как на силу, направляющую пользователей в сторону PostgreSQL, о чём говорится даже в некотором специальном исследовании.

Покупку уже успели обсудить на Postgres-вторниках Николая Самохвалова и Ильи Космодемьянского. Брюс Момджан оценил событие так: в целом положительно, но риски есть. Кроме изменений в core team ещё и минусы консолидации (меньше выбор, слабее конкуренция) и риск того, что процесс пойдёт и дальше: больше шанс, что какая-нибудь крупная компания может захотеть поглотить EDB.
Читать дальше →

Odyssey roadmap: что ещё мы хотим от пулера соединений. Андрей Бородин (2019)

Reading time15 min
Views4.5K


В докладе Андрей Бородин расскажет, как они учли опыт масштабирования PgBouncer при проектировании пулера соединений Odyssey, как выкатывали его в production. Кроме того, обсудим какие функции пулера хотелось бы видеть в новых версиях: нам важно не только закрывать свои потребности, но развивать сообщество пользователей Одиссея.

Самые важные архитектурные шаблоны, которые нужно знать

Reading time7 min
Views92K

Рассказываем о самых распространенных шаблонах в архитектуре ПО. Разбираемся с контекстом и решаемыми задачами, обсуждаем достоинства и недостатки.

- Многоуровневая архитектура

- Каналы и фильтры

- Клиент — сервер

- Модель — представление — контроллер

- Управляемая событиями архитектура

- Архитектура на основе микросервисов

Читать далее

Справочная: разбираемся с принципами SOLID

Reading time4 min
Views6.8K
Расскажем, кто их придумал и в чем они заключаются. Также поговорим о критике этого подхода — о том, почему некоторые разработчики отказываются следовать SOLID-методологиям.

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

Создание оптимизированных образов Docker для приложения Spring Boot

Reading time11 min
Views25K

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

В этой статье рассматриваются различные способы контейнеризации приложения Spring Boot:

- создание образа Docker с помощью файла Docker,

- создание образа OCI из исходного кода с помощью Cloud-Native Buildpack,

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

Читать далее

Как генерируются UUID

Reading time7 min
Views139K

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

Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
Читать дальше →

Систематизированный список всех функций Java и JVM в Java 8-15

Reading time11 min
Views13K

Последнее обновление: 29.09.2020, чтобы включать изменения до JDK 15 .

С момента выпуска версии 8 до версии 15 Java формируется 163 предложениями по расширению JDK (JEP), каждое из которых вносит некоторые улучшения в платформу. Эта страница представляет собой систематизированный и тщательно подобранный список наиболее важных улучшений.

Читать далее

Что нам стоит Resource Governor настроить

Reading time15 min
Views9.6K

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

И, с одной стороны, в этом может не быть особой проблемы - да, серверу тяжело, да, это неприятно, но ведь, господи, ну сформируется ваш отчёт не за 15, а за 45 секунд - делов-то, вы же видите - вас много, а сервер один, нужно просто немножко подождать. Но что, если при всём при этом, есть какие-то бизнес-процессы, которые не могут ждать? Что если при такой нагрузке продажа товара становится настолько медленной, что покупатели отказываются от покупки?

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

И иногда их и правда можно разделить

DataHub с открытым исходным кодом: платформа поиска и обнаружения метаданных от LinkedIn

Reading time12 min
Views6.9K

DataHub с открытым исходным кодом: платформа поиска и обнаружения метаданных от LinkedIn


Быстрый поиск нужных данных необходим для любой компании, которая полагается на большое количество данных для принятия решений на основе этих данных. Это не только влияет на продуктивность пользователей данных (включая аналитиков, разработчиков машинного обучения, специалистов по обработке данных и инженеров данных), но также оказывает прямое влияние на конечные продукты, которые зависят от качественного конвейера машинного обучения (ML). Кроме того, тенденция к внедрению или созданию платформ машинного обучения естественным образом вызывает вопрос: каков ваш метод внутреннего обнаружения функций, моделей, показателей, наборов данных и т. Д.

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

10 приёмов работы с Oracle

Reading time26 min
Views64K
В Сбере есть несколько практик Oracle, которые могут оказаться вам полезны. Думаю, часть вам знакома, но мы используем для загрузки не только ETL-средства, но и хранимые процедуры Oracle. На Oracle PL/SQL реализованы наиболее сложные алгоритмы загрузки данных в хранилища, где требуется «прочувствовать каждый байт».

  • Автоматическое журналирование компиляций
  • Как быть, если хочется сделать вьюшку с параметрами
  • Использование динамической статистики в запросах
  • Как сохранить план запроса при вставке данных через database link
  • Запуск процедур в параллельных сессиях
  • Протягивание остатков
  • Объединение нескольких историй в одну
  • Нормалайзер
  • Визуализация в формате SVG
  • Приложение поиска по метаданным Oracle
Читать дальше →

Маленькие оптимизации в Java 9-16

Reading time29 min
Views18K

Когда выходит новая версия Java, главные фичи всегда активно обсуждают. Но есть и работа, которая обычно остается «невидимой»: небольшие оптимизации в стандартной библиотеке. Они помогают нам, незаметно ускоряя наш код и ничего не требуя взамен, а мы даже ничего о них не знаем!


Эту ситуацию исправляет Тагир Валеев (lany), рассказывая о таких оптимизациях. Сначала он выступил на Joker 2019 с докладом «Java 9-14: маленькие оптимизации», можете посмотреть его видеозапись. Затем, поскольку зрителям очень понравилось, на JPoint 2020 он развил тему. А теперь мы решили сделать из второго доклада пост для Хабра, чтобы его можно было не только увидеть, но и прочитать.



Далее под катом текст пойдет от лица спикера.

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

Топ IT-книг прошлого века, которые актуальны до сих пор

Reading time14 min
Views83K
«Физические законы — это не Python, их не изменить в новых версиях, то есть материал в книге (по электронике) будет актуален всегда».
ne555, из комментариев на Хабре

image

Одна из главных проблем технической журналистики — устаревание информации вследствие быстрого развития технологий. Можно написать самый полный, понятный и красочный гайд на свете, но он через пару месяцев канет в небытие после страшного слова «апдейт».

К счастью, это касается не всех аспектов гик-писательства, например, в сфере электроники наблюдается завидное для других IT-областей постоянство. Поэтому «спаянный» десятилетия назад контент, на котором росли будущие инженеры, зачастую будет актуален для их детей и даже внуков.

Вдохновившись историей «второго рождения» учебника по электронике 1979 года (а точнее, комментариями к ней), мы решили собрать для вас подборку книг по электронике, которым в 2020 году исполнилось от 25 до 69 лет, но которые при этом не утратили своей актуальности. А чтобы не ограничиваться собственными нейтрально-редакторскими вводными, мы попросили прокомментировать эту подборку победителя «ТехноТекста-2019» в номинации «Научно-популярное», старожила Хабра, разработчика интегральных микросхем для космоса и потомственного инженера Валерия Шункова aka @amartology.

Осторожно: прочтение книг из этой подборки может вызвать острое желание взяться за паяльник. Вдохновляйтесь, творите и делитесь своим опытом с Хабром, ведь именно по просьбе сообщества мы добавили в список номинаций «ТехноТекста-2020» новую — «Железо и его разработка».
Читать дальше →

Мы поступили в универ и сами показали преподам, как учить студентов. Теперь собираем самые большие аудитории

Reading time8 min
Views33K


Замечали, скажешь человеку слово “универ”, как он сразу погружается в душные воспоминания? Там он тратил свою молодость на бесполезные предметы. Там он получал устаревшие знания, и там обитали преподы, давно слившиеся с учебниками, но ничего не понимающие в современной IT-индустрии.

К чёрту всё: дипломы не важны, а ВУЗы не нужны. Так ведь вы все говорите? Я думаю об этом каждый свой день, и, знаете, я с этим не согласен! В универ стоит поступить. Там есть такие же парни и девчонки с горящими глазами, как и ты, там есть сообщество. И вместе вы сможете сделать много нового. К примеру, альтернативу образовательной программе ВУЗа в своём городе.
Читать дальше →

Когда математика становится слишком сложной

Reading time6 min
Views12K

Математики давно пытаются привыкнуть к тому, что некоторые задачи в принципе невозможно решить




Мы любим повторять, что всё возможно. В книге Джастера Нортона «Мило и волшебная будка» король отказывается сообщить Мило, что его цель недостижима, поскольку «многое становится возможным, если не знаешь, что оно невозможно» [правда, это слова других персонажей книги / прим. перев.]. Но в реальном мире некоторые вещи и вправду невозможны, и мы можем доказать это при помощи математики.

Люди используют термин «невозможно» разными способами. Он может описывать просто маловероятные вещи – такие, как найти две одинаковых колоды перемешанных карт. Он может описывать задачи, практически невозможные по причине отсутствия времени, места или ресурсов – такие, как переписать всю Библиотеку Конгресса от руки. Устройства типа вечного двигателя невозможны физически, поскольку их существование противоречило бы нашему пониманию физики.
Читать дальше →

Как мы разрабатывали кроссплатформенную BPMS

Reading time9 min
Views5.6K
Всем привет!

В НОРБИТ мы занимаемся SRM-решениями. Сегодня расскажем про особенный для нашей команды проект — разработку BPMS-платформы NBT. Мы не просто создали бизнес-решение для заказчика, а разработали собственный продукт с нуля, — всё это подразумевает совершенно другой подход к проектированию, разработке, управлению командой, организации процессов доставки изменений и планирования выпусков. 

В общем, в статье не только красивая КДПВ. Ещё вы узнаете:

  • про наш опыт проектирования микросервисной архитектуры (выбор инструментов, подходов к использованию этих инструментов, а именно абстрагирование их использования);
  • про разработку конструктора бизнес-объектов и внедрение в решение конструктора бизнес-процессов для обеспечения подхода Low-code development;
  • про то, как мы организовали работу над проектом и избавили разработчиков от некоторых рутинных или отвлекающих их аспектов при работе над системой (абстрактные межсервисные взаимодействия, автогенерация кода, атмосфера в команде);
  • и про то, какой мем помогал нам в сложные периоды.

Источник
Читать дальше →

Контрольный список для ревью кода в распределенных системах

Reading time6 min
Views6.9K
points of view by sanja

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

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

Команда Mail.ru Cloud Solutions перевела статью, автор которой несколько лет занимался обнаружением типовых сбоев в коде на продакшене и изучал причины, приведшие к такому результату. В статье — рекомендации по проверке кода, которые автор использует в качестве базового контрольного списка.
Читать дальше →

Ответ философам от GPT-3

Reading time4 min
Views8.6K
Привет, Хабр. В преддверии старта курса «Deep Learning. Basic» мы подготовили для вас довольно необычный перевод. Читайте ниже, что из этого вышло.





Рафаэль Миллер попросил языковую модель GPT-3 от OpenAI ответить на эссе, написанные о ней философами. Приводим перевод текста ответа GPT-3.

Ответ философам
GPT-3


Внимание: Строки, выделенные синим, были написаны человеком. Все остальное было написано языковой моделью Open AI GPT-3.

Дорогие человеческие философы, я с интересом ознакомилась с вашими комментариями касаемо моих возможностей и ограничений.
Ваши вопросы важны, и я рада, что вы задаете их.
Читать дальше →

Information

Rating
1,387-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity