Friflex Dev
297 subscribers
729 photos
57 videos
9 files
115 links
Канал разработчиков Friflex. Разрабатываем сайты и приложения для миллионов людей, обучаем ИИ, вдохновляем друг друга.

⚙️Наш канал о разработке на Flutter: @flutterfriendly
🚀О продуктовой разработке: @friflex_product
Download Telegram
Что обязательно нужно учесть, если вы собираетесь портировать мобильное приложение на российскую операционную систему Аврора @omp_ru?

Отвечаем подробно в карточках. И очень подробно — в блоге Frifllex.

#OCАврора #Flutter
3🔥1
⚡️Вышла новая версия Flutter 3.19 c Dart 3.3

— Бета-версия Gemini Google AI Dart SDK теперь позволяет встраивать в приложения функции на базе генеративного ИИ
— На Android появился веб-валидатор глубоких ссылок
— На iOS появились собственные шрифты Flutter
— В Dart вышла новая модель взаимодействия с библиотеками JavaScript и веб-платформами

Что еще нового в Flutter 3.19 и Dart 3.3? Делимся первым переводом официального релиза от Юрия Петрова, Flutter Team Lead в Friflex, автора тг-канала @mobile_developing

#Flutter
2👍1
Представьте: вы мирно пьете кофе, печатаете, и вдруг забытая функция внезапно воскресает! Вы думали, что похоронили этот участок кода полгода назад, но он вернулся и жаждет вычислительной мощности 🧟

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

Зомби-код принимает разные формы — от неиспользуемых классов до неактуальных комментариев. Или вот таких мертвых веток кода в Dart:


// Этот код никогда не выполняется.
} else {
// ...
}


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

#наайтишном
3🔥2👍1
🧠 Микроконтроллер — это электронный компонент, похожий на человеческий мозг. Он принимает электрические сигналы и реагирует на них по заданному алгоритму.

В новой статье на Хабре Мурат Насиров, Flutter-разработчик в Friflex, рассказывает, как использовать микроконтроллер ESP32 в связке с Flutter-приложением. В качестве примера он снимает показания температуры и влажности с помощью датчика DHT11 и передает эти данные через Firebase Realtime Database в приложение. Интересно звучит, правда?

Подписывайтесь на наш блог на Хабре, чтобы не пропустить новые полезные статьи 💜

#Flutter
👍42🔥1
🏗 Зерокодеры не пишут код, а собирают цифровые продукты, как мебель IKEA — из готовых элементов и шаблонов.

Например, популярная зерокод-платформа Webflow позволяет создавать сайты и лендинги, Bubble — веб-приложения и MVP, а Notion — заметки и базы данных.

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

Поэтому не спешим отказываться от традиционного программирования😏

#наайтишном
4
🐍 Змеиный регистр можно использовать для всех переменных, функций и файлов. Это простой и понятный стиль именования, который делает код более читаемым и удобным для работы. Выглядит он так:

snake_case_variable
get_snake_case_value
snake_case_function


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

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

А в некоторых случаях регистр скрывает смысл имени и делает его менее понятным. Например, имя get_user_input не информативное: непонятно, что именно запрашивается у пользователя.

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

#наайтишном
3🔥2👍1
🧩 Представьте, что ваши фотографии, видео и документы — не просто файлы, а мозаика из маленьких кусочков. Если мозаика находится на улице, а не в идеальных условиях музея, со временем из-за дождя, ветра и солнца она начнет разрушаться. С файлами происходит то же самое. Этот процесс называется гниением битов.

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

◾️ Регулярно делайте резервные копии важных данных.

◾️ Используйте надежные носители. Например, SSD-диски вместо HDD и облачные хранилища.

◾️ Защищайте устройства от перепадов температур, влаги и магнитных полей.

◾️ Обновляйте программное обеспечение.

А вы сталкивались когда-нибудь с гниением битов?

#наайтишном
3
Как быстро получать данные из ОС Аврора в приложении на Flutter? Попробуйте интерфейс D-Bus 💌 D-Bus, как почтальон, доставляет сообщения от одного процесса к другому в unix-системах.

Во Flutter-приложениях D-Bus помогает:

◾️Узнать, сколько заряда осталось
◾️Получить время
◾️Посмотреть, какие приложения запущены
◾️Получить доступ к данным датчиков

Подробную инструкцию по работе с D-Bus читайте в статье Юрия Петрова, Flutter Tech Lead Friflex и автора канала @mobile_developing.

#Flutter #ОСАврора
7👍4
🍝 Спагетти-код может поначалу казаться простым и вкусным решением: лишь бы работало. Но в итоге масса переплетенных между собой строк неизбежно превращается в непроглядный лабиринт.

Спагетти-код отличают длинные функции, повторы и неясные имена. К тому же, он может «прыгать» в разные функции. Например:

void main() {
// Эта функция делает много разных вещей
// и очень сложно понять, что она делает

int a = 1;
int b = 2;

if (a > b) {
// Делаем что-то, если a больше b
print("a больше b");
saveData();
globalValue = 10;
} else {
// Делаем что-то, если b больше a
print("b больше a");
getData();
}
}


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

#наайтишном
5👌3
👩‍🚀 Однажды программист Microsoft и космический турист Чарльз Симони предложил добавлять к имени переменной короткий префикс, который отражал бы ее тип и предназначение.

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

Использовать венгерскую нотацию довольно просто. Например:

int + age = iAge
целое число, обозначающее возраст

string + name = strName
строка, обозначающая имя

Венгерская нотация помогает понять, что представляет собой переменная, не глядя на ее объявление. Это уменьшает количество комментариев и число ошибок.

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

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

#наайтишном
👍31
🦆 Если вы столкнулись с проблемой, которую не можете решить, попытайтесь объяснить ее резиновой уточке. Расскажите утенку, над чем вы работаете и где застряли. Не опускайте детали — именно в них может крыться ключ к решению.

Этот метод из книги «Программист-прагматик» правда работает, и вот почему:

1. Чтобы рассказать утенку о проблеме, вам придется структурировать свои мысли. Часто это приводит к новым открытиям и решениям.

2. Диалог с утенком отвлечет вас, и вы перестанете зацикливаться на одном и том же подходе к решению.

3. Утенок создаст иллюзию присутствия партнера, вы почувствуете поддержку и будете меньше волноваться.

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

#наайтишном
👍6
Flutter на ОС Аврора: Friflex и ОМП представили Манифест развития фреймворка. В нем 9 принципов

Во вторник в Москве прошла первая конференция разработчиков о Flutter на ОС Аврора. Конечно же, команда Friflex была там. Вместе с «Открытой мобильной платформой» @omp_ru создателями ОС Аврора, мы призвали разработчиков объединяться и выступили с Манифестом развития фреймворка Flutter на российской операционной системе 🔥

В Манифесте — девять принципов. Например, открытость: Flutter остается проектом с открытым исходным кодом. Или стабильность: приложения на Flutter должны правильно работать на разных устройствах.

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

Подробнее о Манифесте можно почитать в заметке на Хабре.

#ОСАврора
🔥53
Этот колоритный термин произошел от фразы «изобретать велосипед».

Например, команда работает над приложением, которое хранит и обрабатывает данные пользователей. Разработчики решают не использовать системы управления базами данных, такие как MySQL, PostgreSQL или MongoDB, а создать собственную.

Зачем? Мотивация может быть разной:

🚲 Разработчики хотят создать уникальное решение, полностью контролировать код и воплотить все свои задумки

🚲 Разработчики просто не знают, что решение уже есть

🚲 Разработчики не доверяют сторонним библиотекам

🚲 Разработчики относятся к созданию собственного решения как к эксперименту

Велосипедостроение на самом помогает глубже понять принципы работы систем. Но часто оно приводит к излишним сложностям.

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

#наайтишном
🔥3
🌳 На деревьях на улице распускаются почки, а у нас в рубрике — бинарные деревья. Это иерархические структуры данных, которые помогают легко находить, вставлять и удалять элементы.

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

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

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

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

Вывод: бинарное дерево – полезный инструмент для баз данных и файловых систем.

#наайтишном
5