Pull to refresh
17
0

Об одном способе реализации архитектуры крупного Flutter-приложения

Level of difficulty Medium
Reading time 8 min
Views 4.2K

Привет! Меня зовут Олег Скирюк, я лидирую контент-разработку в одной из команд билайна. Сам я перешёл в мобильную разработку из веба три года назад, после чего собрал и обучил одну из первых Flutter-команд в компании. Вместе с этой командой мы постоянно экспериментируем и пробуем различные решения, чтобы совершенствовать наши приложения.

В этом посте я хочу рассказать про архитектуру Flutter-приложений, о том, как мы в билайне это делаем, чего мы достигли и как это у нас работает. Поговорим о создании архитектуры, организации управления состояниями и зависимостями, о привычных и не очень методах и концепциях, затронем Mobx, GetX и Flutter modular, а также разберём всё это на живом примере — на нашем мобильном приложении для дилеров.

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

Читать далее
Total votes 16: ↑16 and ↓0 +16
Comments 14

Точка доступа Wi-Fi из камеры видеонаблюдения на OpenIPC

Level of difficulty Medium
Reading time 17 min
Views 7.2K


Пару десятков лет назад меня впечатлила новость, что какая-то корпорация смогла использовать настолько крутые технологии, что впихнули веб-сервер в коннектор RJ45. Для чего это нужно было уже и не вспомню, но сейчас, ковыряясь со своими камерами видеонаблюдения, меня осенила мысль, что плата камеры 38x38 мм не намного больше. Веб-сервер на ней и так есть. Это уже бытовуха. Скукота-скукотища. А вот сделать из ненужной камеры Wi-Fi-точку доступа — тут уже и польза будет. Вместо того, чтобы бороться одним роутером за дальность сигнала, можно просто использовать ещё один, чтобы «вафля» подключалась в самых недосягаемых уголках дома, таких как подвал или шубохранилище. Подобные устройства продаются совсем недорого. Но если имеется плата камеры с мусорки, то мы можем получить на халяву такой гаджет и в нагрузку получить бесценный опыт по тюнингу и сборке OpenIPC. Да и по сути, цель поста — не получение девайса ради экономии трёх копеек, а использование примера для понимания, как может быть полезна OpenIPC. Возможно, вы хотите собрать для одного из своих проектов камеру, которая в дополнение работает как Wi-Fi-точка доступа. Возможно, ещё миллион идей вас посетят в процессе чтения.
Читать дальше →
Total votes 74: ↑74 and ↓0 +74
Comments 23

«Хватит программировать в YAML и JSON!»: неочевидные проблемы шаблонизирования

Reading time 10 min
Views 14K

Часто в IT-компаниях разработчики используют шаблонизаторы в YAML, JSON и Terraform, управляя параметрами конфигураций, ACL-списками и другими сущностями. Но у такого подхода много подводных камней: шаблоны не всегда корректно отрабатывают и превращают код в спагетти. Особенно если приспичило добавить десятки вложенных условий.

В этой статье рассказываем, откуда соблазн «программировать» в YAML и JSON и почему этого лучше не делать. А еще делимся полезными инструментами, которые помогут избавиться от зловредной привычки. Подробности под катом!
Читать дальше →
Total votes 43: ↑41 and ↓2 +39
Comments 15

Есть проблема? Нет проблем. Инструменты принятия решений

Level of difficulty Easy
Reading time 7 min
Views 8.1K

Привет, Хабр! Меня зовут Ирина Ремизова, я куратор департамента системного анализа Sportmaster Lab, где, собственно, и курирую системных аналитиков, развивая их и рассказывая про инструменты принятия решений.

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

Начнём мы с ББМ. Это аббревиатура из трех слов, которая представляет собой три реакции человека при принятии решения. Боль (приобретение или потеря), боязнь сделать неправильное решение (верно или неверно) и муки (а что было бы, если…).

Почему бывает так трудно? 

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

Ещё есть межличностные проблемы. Вы приняли какое-то решение, которое повлияло на кого-то другого. Реакция этого человека тоже влияет на вас, поэтому при принятии решения можно сохранить отношения (или потерять их). 

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

Читать далее
Total votes 36: ↑31 and ↓5 +26
Comments 9

Управляем навигацией во Flutter с помощью библиотеки auto_route: часть 2. Guards, Wrappers и миграция

Level of difficulty Easy
Reading time 7 min
Views 1.6K

Привет, Хабр! Меня зовут Юрий Петров, я Flutter Team Lead в Friflex. Это продолжение моей статьи про библиотеку auto_route. В этой статье, я попробую пояснить, что такое охранники(guards), обертки (wrappers) и с чем вам придется столкнуться в легаси проектах при миграции на auto_routе_7.

Читать далее
Total votes 6: ↑6 and ↓0 +6
Comments 5

Что новые стабильные материалы GNoME означают для химии?

Reading time 4 min
Views 3K

В конце ноября Google DeepMind сообщила об открытии сотен тысяч новых стабильных материалов с помощью нейросети Graph Networks for Materials Exploration (GNoME) ― сервиса для предсказания неорганических кристаллических структур. Сами разработчики в статье в Nature говорят об экономии 800 лет научных исследований.

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

Читать далее
Total votes 10: ↑10 and ↓0 +10
Comments 5

Единое хранилище данных и плюсы, которые оно несёт. Опыт НМГ

Reading time 5 min
Views 2.2K

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

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

В этом (спойлер — и не только в этом) нам сильно помогает единое хранилище данных, далее просто ЕХД.

Читать далее
Total votes 13: ↑11 and ↓2 +9
Comments 1

Отрицание, принятие… настольные игры

Level of difficulty Easy
Reading time 4 min
Views 10K

Эта история началась давно, еще в «доковидные» времена. Тогда я считала, что весь мир настолок состоит из монополии, манчкина, элиаса и уно. Для меня настольная игра была дополнением к вечеринке, но никак не причиной для встречи. Это хобби вызывало во мне бурю эмоций и непонимания.

- Сколько вы играли? ПЯТЬ ЧАСОВ?!
- Сколько стоит эта игра? Так много за картон?!

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

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

Так с чего же начать, если никогда раньше не играл в настолки, но хочется попробовать? Сейчас разберемся! Держите мой топ для старта настольного хобби.

Читать далее
Total votes 30: ↑28 and ↓2 +26
Comments 18

PowerShell и его возможности в уходящем году

Level of difficulty Medium
Reading time 7 min
Views 9.3K

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

Буквально два года назад, имея базовые знания навигации в консоли Linux, написание несложных batch-файлов и небольшой опыт VBScript открыл для себя PowerShell, и после этого я уже в прямом смысле этого слова, не мог остановиться реализовывать свои идеи, правда, такое дело очень затягивает. В один момент решился завести канал на GitHub и там же по сей день виду работу с заметками, где за это время накопилось более 6 тысяч строк из описания работы cmdlet (PowerShell-команд) и утилит для Системного Администратора (AD, Exchange, VMWare, MSSQL и т.д.) с примерами, ведь далеко не все получалось найти в интернете, порой, только изучая на практике свойства и методы объектов, можно получить желаемый результат. Так же набралась небольшая коллекция модулей и тестовый стенд WinForms с примерами работы различных методов, на котором я в дальнейшем базировался для написания приложений с графическим интерфейсом. Все работы писал по большей части для себя с целью автоматизировать и разгрузить текущий рабочий процесс, иногда помочь коллегам, именно по этому мне хочется поделиться своими наработками, возможно кому-то это еще сможет пригодиться.

Читать далее
Total votes 18: ↑17 and ↓1 +16
Comments 15

NORVI Arita: добавляем SD картридер и веб-интерфейс (почти контроллер мечты)

Level of difficulty Medium
Reading time 8 min
Views 2.9K


Итак, это уже третья статья (0, 1, 2) по модернизации NORVI Arita Model 5, контроллера который имеется в моём распоряжении. Арита изначально была интересным решением, а после добавления нами на прошлых этапах Ethernet интерфейса и OLED дисплея SSD1306 стала ещё интереснее.

Но до завершения первого цикла модернизации и выполнения «программы минимум» не хватает ещё одного элемента — картридера для microSD карт памяти. После добавления поддержки работы с SD картами памяти, контроллер получает возможность работы с полноценным веб-интерфейсом, значение чего трудно переоценить — появляется возможность удобно изменять настройки контроллера, создавать неограниченное количество веб-страниц, выводить на них нужную информацию и т. д.

Фактически, контроллер превращается в полностью самодостаточную вещь: он может управлять подключённым оборудованием (как собственно контроллер), общаться по сети с другими устройствами, выводить нужную информацию на веб-страницы, управлять другими контроллерами по проводным и беспроводным интерфейсам и т. д.
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Comments 13

Я счастлив, что больше не веб-разработчик

Reading time 5 min
Views 67K

Я написал своё первое одностраничное веб-приложение на Javascript в 2005 году, сразу после того, как узнал о XMLHttpRequest и до появления серьёзных фреймворков. Я оставил профессиональную веб-разработку примерно в 2009 году (а начал её в 1997 году с WebObjects), а последний десяток лет своей карьеры занимался мобильными.

Сегодня я смотрю на мир веб-разработки, и меня поражает его безумие. Существует так много фреймворков для веба, и каждый день появляются новые. Для создания веб-приложения (в отличие от веб-сайта, например, моего сайта про искусство, который сгенерирован статически и содержит лишь немного Javascript), часто требуются кучи инструментов и технологий, часто меняющихся с большой частотой и содержащих бесконечные объёмы других технологий, о существовании которых мы и не подозреваем (о, смотрите-ка, в папке пакета две тысячи файлов).

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

Читать далее
Total votes 105: ↑90 and ↓15 +75
Comments 183

Яндекс Браузер для организаций. Опыт QIWI

Reading time 7 min
Views 4.9K

Привет! Меня зовут Сергей, я ведущий системный администратор службы эксплуатации в QIWI. Так сложилось, что в нашей компании довольно большое число сотрудников, и часть из них работает в специфических системах.

Например, есть люди, которые в своей работе часто взаимодействуют с бухгалтерией, финансами, единой биометрической системой, Госуслугами, Контуром и прочим добром. Причём от того, насколько комфортно им это делать, на самом деле зависит выполнение их рабочих обязанностей. А вы знаете, что сейчас для многих (если не для большинства) окологосударственных сайтов нужны сертификаты. И чтобы сделать из дефолтного Chrome или Firefox подходящий инструмент для такого сотрудника, приходилось немного костылить — обвешиваться плагинами, настраивать их, потом по отдельности помогать каждому человеку, если что-то вдруг тупило. В общем, так себе история.

Но работать-то надо. И желательно — без заморочек, в централизованном формате «Включил — работаешь». Поэтому мы решили, что хватит это терпеть, и попробовали Яндекс Браузер для организаций.

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

Читать далее
Total votes 27: ↑24 and ↓3 +21
Comments 26

Nintendo Game Processor — компьютер для создания игр, который не выпустила Nintendo

Level of difficulty Easy
Reading time 3 min
Views 4.9K
В 1994 году Nintendo подала в США заявку на крайне примечательный патент.

Патент US6115036A — «Оборудование для редактирования программ видеоигр/видеографики с функциями остановки программ и передачи данных»

Иными словами:

Nintendo Game Processor — это специализированный компьютер с клавиатурой и мышью, созданный с одной конкретной целью: для визуального создания собственных игр Super Nintendo при помощи drag and drop и записи этих игр на настоящие картриджи SNES.

Вот как мог выглядеть Game Processor:


Обратите внимание на четыре разъёма сбоку в стиле SNES / Super Famicom. Один для клавиатуры, один для мыши и два для контроллеров SNES.
Читать дальше →
Total votes 27: ↑27 and ↓0 +27
Comments 5

Эффективное управление отношениями со стейкхолдерами

Level of difficulty Medium
Reading time 9 min
Views 6K

Без выстраивания хороших отношений со стейкхолдерами (или заинтересованными сторонами) на проекте далеко не уедешь. О том, как это делать like a boss, годная статья автора Кэт Бугард в блоге Miro.

Все картинки из Miro.

Читать далее
Total votes 26: ↑24 and ↓2 +22
Comments 2

Как мы в SM Lab локализацией занимаемся

Reading time 9 min
Views 832

Всем привет! Мы (Никита Звонилкин и Дмитрий Ёжиков) работаем в отделе локализации в SM Lab. Мы провели презентацию по теме интеграции локализации в процесс тестирования ПО на конференции SQA Days. Для этой статьи мы адаптировали эту презентацию, чтобы показать, чем локализация отличается от перевода. А ещё расскажем про основные этапы локализации, поговорим о подборе команды для проведения тестирования и о полезном софте.

Немного цифр. Спортмастер — большая компания, торговые сети представлены в 6 разных странах, а в 11 есть дополнительные офисы, в которых работают более 45 000 сотрудников. SM Lab — отдельно IT-подразделение, которое занимается разработкой софта и, собственно, его локализацией для стран нашего присутствия.

Тонкости локализации

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

Например, белый цвет, который в принципе везде считается нейтральным, в Японии могут расценить как траурный, так что не всегда будет уместно его использовать. В разных странах по-разному могут воспринимать ещё и жесты с символами, которые вам кажутся привычными и стандартными. Скажем, значок мира, который у нас так и воспринимается, в Великобритании лучше не показывать, он считается оскорбительным жестом. Большой палец вверх тоже у нас считается вполне себе адекватным, а вот жестовое обозначение “ОК” в той же Бразилии расценивается совсем иначе.

Если кто-то смотрел фильм Квентина Тарантино «Бесславные ублюдки», то вы явно помните сцену, в которой офицер под прикрытием (персонаж Майкла Фассбендера) заказывает жестом три пива, чем и выдает себя. 

Читать далее
Total votes 17: ↑17 and ↓0 +17
Comments 2

10+ причин посещать некоторые конференции

Level of difficulty Easy
Reading time 6 min
Views 2K

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

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

Сегодня же хотим рассказать о том, почему стоит посещать некоторые IT-конференции. Под катом — 10 причин продолжать это делать.

Читать далее
Total votes 24: ↑22 and ↓2 +20
Comments 2

Как понять, есть ли в тебе искра программиста

Reading time 6 min
Views 33K

Я думаю начать учиться писать код. Какой ноутбук мне купить? Нужно ли участвовать в буткемпе? Нужны ли моему ребёнку особые курсы или подготовка, чтобы поступить на computer science?

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

Приведу свой совет вкратце


Прежде чем думать обо всём этом: специальности, вузе, в который будет поступать ребёнок, покупке ноутбука, вам нужно понять, есть ли у вас (или у ребёнка) «искра программирования».

Это потребует от вас немного времени и усилий, но здорово то, что онлайн есть куча высококачественных и бесплатных ресурсов, позволяющих вам ощутить, что же такое кодинг и разработка, чтобы вы приняли решение, стоит ли выбрать это в качестве карьеры или хобби. Некоторые из них я приведу в этом посте.
Читать дальше →
Total votes 42: ↑39 and ↓3 +36
Comments 22

Как мы создали нейросеть, которая составила рейтинг компаний, занимающихся ИИ в России

Reading time 8 min
Views 2.5K

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

Идея проекта

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

Читать далее
Total votes 10: ↑9 and ↓1 +8
Comments 3

Форматы ORC и Parquet на базе HDFS

Level of difficulty Easy
Reading time 10 min
Views 2.9K

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

У нас получилось! Мы снизили количество данных на диске в 3 раза, при этом ускорив их обработку. И сейчас расскажу как. Меня зовут Александр Маркачев, я Data Engineer команды Голосовой Антифрод в beeline. В статье затронем тему форматов ORC и Parquet, как их правильно использовать и хранить, чтобы всем было хорошо.

Читать далее
Total votes 9: ↑8 and ↓1 +7
Comments 13

Как сделать UI тестируемым и легкоизменяемым?

Reading time 14 min
Views 6.5K

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

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

Читать далее
Total votes 20: ↑20 and ↓0 +20
Comments 4

Information

Rating
Does not participate
Registered
Activity