Flutter на ОС Аврора: Friflex и ОМП представили Манифест развития фреймворка. В нем 9 принципов
Во вторник в Москве прошла первая конференция разработчиков о Flutter на ОС Аврора. Конечно же, команда Friflex была там. Вместе с «Открытой мобильной платформой» @omp_ru создателями ОС Аврора, мы призвали разработчиков объединяться и выступили с Манифестом развития фреймворка Flutter на российской операционной системе 🔥
В Манифесте — девять принципов. Например, открытость: Flutter остается проектом с открытым исходным кодом. Или стабильность: приложения на Flutter должны правильно работать на разных устройствах.
Команда Friflex уже портировала на ОС Аврора три мобильных приложения, создала несколько плагинов и написала много статей о своем опыте в блоге.
Подробнее о Манифесте можно почитать в заметке на Хабре.
#ОСАврора
Во вторник в Москве прошла первая конференция разработчиков о Flutter на ОС Аврора. Конечно же, команда Friflex была там. Вместе с «Открытой мобильной платформой» @omp_ru создателями ОС Аврора, мы призвали разработчиков объединяться и выступили с Манифестом развития фреймворка Flutter на российской операционной системе 🔥
В Манифесте — девять принципов. Например, открытость: Flutter остается проектом с открытым исходным кодом. Или стабильность: приложения на Flutter должны правильно работать на разных устройствах.
Команда Friflex уже портировала на ОС Аврора три мобильных приложения, создала несколько плагинов и написала много статей о своем опыте в блоге.
Подробнее о Манифесте можно почитать в заметке на Хабре.
#ОСАврора
🔥5❤3
Этот колоритный термин произошел от фразы «изобретать велосипед».
Например, команда работает над приложением, которое хранит и обрабатывает данные пользователей. Разработчики решают не использовать системы управления базами данных, такие как MySQL, PostgreSQL или MongoDB, а создать собственную.
Зачем? Мотивация может быть разной:
🚲 Разработчики хотят создать уникальное решение, полностью контролировать код и воплотить все свои задумки
🚲 Разработчики просто не знают, что решение уже есть
🚲 Разработчики не доверяют сторонним библиотекам
🚲 Разработчики относятся к созданию собственного решения как к эксперименту
Велосипедостроение на самом помогает глубже понять принципы работы систем. Но часто оно приводит к излишним сложностям.
Например, собственную систему управления базами данных приходится поддерживать и обновлять даже после запуска проекта. Добавлять к ней новые функции может оказаться сложнее, чем ожидалось. А стоит ли?
#наайтишном
Например, команда работает над приложением, которое хранит и обрабатывает данные пользователей. Разработчики решают не использовать системы управления базами данных, такие как MySQL, PostgreSQL или MongoDB, а создать собственную.
Зачем? Мотивация может быть разной:
🚲 Разработчики хотят создать уникальное решение, полностью контролировать код и воплотить все свои задумки
🚲 Разработчики просто не знают, что решение уже есть
🚲 Разработчики не доверяют сторонним библиотекам
🚲 Разработчики относятся к созданию собственного решения как к эксперименту
Велосипедостроение на самом помогает глубже понять принципы работы систем. Но часто оно приводит к излишним сложностям.
Например, собственную систему управления базами данных приходится поддерживать и обновлять даже после запуска проекта. Добавлять к ней новые функции может оказаться сложнее, чем ожидалось. А стоит ли?
#наайтишном
🔥3
🌳 На деревьях на улице распускаются почки, а у нас в рубрике — бинарные деревья. Это иерархические структуры данных, которые помогают легко находить, вставлять и удалять элементы.
Если дерево сбалансировано, то время поиска, вставки и удаления пропорционально логарифму количества элементов в дереве. Это значит, оно достаточно короткое, даже если наборы данных большие.
Например, у нас есть адресная книга с миллионом контактов. Мы организуем их в сбалансированном бинарном дереве поиска. Каждый контакт будет узлом в дереве, а ключом сделаем фамилию.
Чтобы найти контакт, алгоритм начнет с корня дерева. На каждом шагу он будет переходить либо в правую, либо в левую ветку.
В сбалансированном дереве глубина или максимальное количество уровней от корня до любого листа примерно равна
Вывод: бинарное дерево – полезный инструмент для баз данных и файловых систем.
#наайтишном
Если дерево сбалансировано, то время поиска, вставки и удаления пропорционально логарифму количества элементов в дереве. Это значит, оно достаточно короткое, даже если наборы данных большие.
Например, у нас есть адресная книга с миллионом контактов. Мы организуем их в сбалансированном бинарном дереве поиска. Каждый контакт будет узлом в дереве, а ключом сделаем фамилию.
Чтобы найти контакт, алгоритм начнет с корня дерева. На каждом шагу он будет переходить либо в правую, либо в левую ветку.
В сбалансированном дереве глубина или максимальное количество уровней от корня до любого листа примерно равна
log2(n). Если элементов миллион, всего алгоритму будет достаточно около 20 сравнений, чтобы найти нужный узел или установить, что его нет. Вывод: бинарное дерево – полезный инструмент для баз данных и файловых систем.
#наайтишном
❤5
🤖Создаем своего клиента для Gemini без бэкенда
Помните, в версии Flutter 3.19 появился SDK для работы с генеративным ИИ? Наш Tech Lead Юрий Петров разобрался, какие горизонты этот инструмент открывает перед разработчиками.
Вместе с ним на примере простого Flutter-проекта узнаем:
◾️Как получить API-ключ
◾️Как сгенерировать текст
◾️Как настроить конфигурацию модели
◾️Как гибко отфильтровать контент
◾️Как настроить httpClient
Все подробности — уже на Хабре!
#howto
Помните, в версии Flutter 3.19 появился SDK для работы с генеративным ИИ? Наш Tech Lead Юрий Петров разобрался, какие горизонты этот инструмент открывает перед разработчиками.
Вместе с ним на примере простого Flutter-проекта узнаем:
◾️Как получить API-ключ
◾️Как сгенерировать текст
◾️Как настроить конфигурацию модели
◾️Как гибко отфильтровать контент
◾️Как настроить httpClient
Все подробности — уже на Хабре!
#howto
Хабр
Разбираем генеративный SDK от Google — google_generative_ai. Часть 1
Привет, Хабр! Меня зовут Юрий Петров, я автор ютуб-канала «Мобильный разработчик» и Flutter Tech Lead в компании Friflex . Мы разрабатываем мобильные приложения для бизнеса и специализируемся на...
❤4🔥2
💫 Коварный баг назван в честь принципа неопределенности Гейзенберга из квантовой механики. Этот принцип гласит: невозможно одновременно точно определить положение и импульс микроскопической частицы.
Дело в том, что само наблюдение за квантовой частицей меняет ее состояние. То же самое происходит с гейзенбагом. Стоит попытаться отследить его в коде, он меняет свое поведение или исчезает. Например, сбой может проявляться только через определенное время после запуска программы или в конкретной операционной системе.
Бороться с гейзенбагами сложно. Тут важно быть упорным и настойчивым:
◾️Продолжайте тестировать. Чем больше тестов вы напишете, тем скорее обнаружите гейзенбаг.
◾️Используйте инструменты отладки.
◾️Ведите журнал своих действий, чтобы заметить изменения в поведении ошибки.
◾️Попытайтесь воспроизвести условия, в которых ошибка проявляется, и изучить ее подробнее.
Помните, вы не одиноки — с гейзенбагами сталкиваются многие программисты 🫶
#наайтишном
Дело в том, что само наблюдение за квантовой частицей меняет ее состояние. То же самое происходит с гейзенбагом. Стоит попытаться отследить его в коде, он меняет свое поведение или исчезает. Например, сбой может проявляться только через определенное время после запуска программы или в конкретной операционной системе.
Бороться с гейзенбагами сложно. Тут важно быть упорным и настойчивым:
◾️Продолжайте тестировать. Чем больше тестов вы напишете, тем скорее обнаружите гейзенбаг.
◾️Используйте инструменты отладки.
◾️Ведите журнал своих действий, чтобы заметить изменения в поведении ошибки.
◾️Попытайтесь воспроизвести условия, в которых ошибка проявляется, и изучить ее подробнее.
Помните, вы не одиноки — с гейзенбагами сталкиваются многие программисты 🫶
#наайтишном
❤4👍2
Flutter появился в 2015 году как секретный проект Google под названием Sky. С тех пор вышло множество релизов и он стал настоящим взрослым фреймворком.
Команда Friflex продвигает разработку на Flutter, следит за его развитием и каждый год проводит конференцию о кроссплатформенной разработке — CrossConf @crossconf. Собрали самые важные моменты из истории фреймворка на карточках и подробнее рассказали о ней в нашем блоге. Приятного чтения🌟
Команда Friflex продвигает разработку на Flutter, следит за его развитием и каждый год проводит конференцию о кроссплатформенной разработке — CrossConf @crossconf. Собрали самые важные моменты из истории фреймворка на карточках и подробнее рассказали о ней в нашем блоге. Приятного чтения🌟
❤3
🧑🤝🧑 Если вы думаете, что копировать — это просто, вы не занимались глубоким копированием. Оно помогает создать точную копию объекта вместе со вложенными документами. Получается объект-близнец, совершенно самостоятельный и независимый.
Глубокое копирование отлично подходит:
◾️Чтобы изменения одного объекта не влияли на другой
◾️Чтобы свободно работать с объектом и не бояться испортить оригинал
◾️Чтобы клонировать многоуровневые объекты
Можно создать объект-близнец вручную или с помощью библиотек. Например, в Dart глубокое копирование помогают выполнить copyPackage, deep_copy или json_serializable.
#наайтишном
Глубокое копирование отлично подходит:
◾️Чтобы изменения одного объекта не влияли на другой
◾️Чтобы свободно работать с объектом и не бояться испортить оригинал
◾️Чтобы клонировать многоуровневые объекты
Можно создать объект-близнец вручную или с помощью библиотек. Например, в Dart глубокое копирование помогают выполнить copyPackage, deep_copy или json_serializable.
#наайтишном
👍3🔥1
⚡️Релиз плагина Flutter&Dart для VSCode 3.88.0: что нового
🟣 Во Flutter список эмуляторов больше не содержит выходных данных журнала из Android SDK
🟣 В редакторе перезапуск сервера анализа Dart больше не приводит к дублированию записей Dart DevTools в области состояния языка
🟣 В отладчике исправлена регрессия, которая приводила к повторным глобальным ошибкам («Не удается найти библиотеку»)
🟣 В DevTools устранена проблема, из-за которой боковая панель Flutter не загружалась в предварительных версиях
Наш Flutter Tech Lead Юрий Петров подготовил перевод официального релиза. О разработке на Flutter читайте также в тг-канале Юрия Мобильный разработчик.
Наш Flutter Tech Lead Юрий Петров подготовил перевод официального релиза. О разработке на Flutter читайте также в тг-канале Юрия Мобильный разработчик.
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Вышла новая версия плагина Flutter & Dart для VSCode 3.88.0
Что нового во Flutter #5062 : Ссылки кода "Открыть онлайн интерактивные образцы" больше не ведут к ошибке 404 для миксинов и типов расширений. #5052 : Некоторые эмуляторы не содержали выходных данных...
🔥4
🧮 Каррирование пришло в разработку из комбинаторной логики. Понятие сформулировал американский математик Хаскарл Карри. Он показал, что функцию можно представить в виде одного аргумента, который возвращает функцию, которая принимает другой аргумент.
Как это работает в программировании? Представим, что у нас есть функция
Теперь double — это функция, которая принимает один аргумент и удваивает его. Мы можем использовать ее так:
Результат: компактный код и универсальные функции, которые можно легко комбинировать.
#наайтишном
Как это работает в программировании? Представим, что у нас есть функция
multiply, которая умножает два числа. С помощью каррирования мы можем создать из нее новую — она будет умножать свой аргумент на определенное число. Например, double.
Function(int) double = (int x) => multiply(x, 2);
Теперь double — это функция, которая принимает один аргумент и удваивает его. Мы можем использовать ее так:
print(double(5)); // Выведет: 10
Результат: компактный код и универсальные функции, которые можно легко комбинировать.
#наайтишном
👍2❤1
На GitHub можно самостоятельно после каждого пул-реквеста заносить файл CHANGELOG.MD в основную ветку. А можно автоматизировать этот процесс.
Автоматизация позволит быстро понимать, какие изменения появились в новых версиях проекта, и не погружаться в исходный код.
Как создавать автоматические коммиты, читайте в статье Flutter Tech Lead в Friflex Юрия Петрова на Хабре.
#howto #инструкция
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как автоматизировать заполнение changelog через GitHub Action
Привет, Хабр! Меня зовут Юрий Петров, я автор Youtube-канала «Мобильный разработчик» и Flutter Tech Lead в компании Friflex . Мы разрабатываем мобильные приложения для бизнеса и специализируемся на...
🔥3
📹 Для тех, кто любит смотреть и слушать
Как создавать автоматические коммиты в GitHub, рассказал в новом видео Юрий Петров, Flutter Tech Lead Friflex и автор канала Мобильный разработчик. Из ролика вы узнаете:
✔️ Что такое библиотека git-cliff
✔️ Как настроить GitHub Action
✔️ Зачем нужны соглашения о коммитах
👀 Смотрите на YouTube-канале Friflex:
→ Как быстро добавить автоматическое заполнение changelog с помощью GitHub Action
И подписывайтесь, чтобы не пропустить новые видео 💜
#howto #инструкция
Как создавать автоматические коммиты в GitHub, рассказал в новом видео Юрий Петров, Flutter Tech Lead Friflex и автор канала Мобильный разработчик. Из ролика вы узнаете:
👀 Смотрите на YouTube-канале Friflex:
→ Как быстро добавить автоматическое заполнение changelog с помощью GitHub Action
И подписывайтесь, чтобы не пропустить новые видео 💜
#howto #инструкция
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Как быстро добавить автоматическое заполнение Changelog с помощью GitHub Action
В этом видео Юрий Петров, Flutter Tech Lead в Friflex и автор канала «Мобильный разработчик», рассказывает, как файл CHANGELOG.MD может заполняться автоматически.
Соглашение о коммитах: https://www.conventionalcommits.org/en/v1.0.0/
Библиотека: https://…
Соглашение о коммитах: https://www.conventionalcommits.org/en/v1.0.0/
Библиотека: https://…
❤4
👀 Термин «монада» пришел в программирование из философии. Лейбниц так называл первичные субстанции, которые, как он полагал, лежат в основе нашего мира.
В разработке монады обрабатывают действия и их последствия как единое целое. Это упрощает работу с побочными эффектами и асинхронностью.
Например,
Монады помогают делать код понятнее и лаконичнее. Используйте их, чтобы решать задачи с последовательным выполнением действий элегантно 🕺
#наайтишном
В разработке монады обрабатывают действия и их последствия как единое целое. Это упрощает работу с побочными эффектами и асинхронностью.
Например,
Future проводит вычисления, которые завершатся в будущем, и создает цепочку операций, зависящих от этих результатов.
Future<int> multiplyAsync(int a, int b) {
return Future.delayed(Duration(seconds: 1), () => a * b);
}
void main() {
multiplyAsync(5, 10).then((result) {
print("Результат: $result"); // Результат: 50
});
}
Монады помогают делать код понятнее и лаконичнее. Используйте их, чтобы решать задачи с последовательным выполнением действий элегантно 🕺
#наайтишном
❤5
Релиз Dart 3.4 🎉
🟣 В предварительной версии появился макрос JsonCodebale
🟣 Обновление для WebAssembly
🟣 Исправлены недостатки библиотеки dart:js_interop
🟣 Решено более 50% багов анализатора автодополнения кода
🟣 Из библиотеки dart:cli удалены неполные и противоречивые инструменты
🟣 Улучшено согласование анализа типов условных выражений
Подробнее читайте в переводе официального релиза, который подготовил наш Flutter Tech Lead Юрий Петров.
Подробнее читайте в переводе официального релиза, который подготовил наш Flutter Tech Lead Юрий Петров.
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Вышел Dart 3.4
Вышла новая версия языка Dart — 3.4 . Появились обновления для WebAssembly и предварительная версия макроса JsonCodebale. Исправлено более 50% ошибок анализатора. Читайте первый перевод...
🔥6
⚡️Flutter 3.22: что нового
День богат на релизы — обновление Flutter!
🔹WebAssembly доступен в стабильной версии. Он улучшает производительность, делает анимацию и переходы более плавными
🔹Vulkan для Android оптимизирует эффекты размытия. Интерфейсы стали еще красивее
🔹Коварианты в 2D-API позволяют API автоматически обрабатывать преобразования типов данных
🔹Новый инструмент проверки глубоких ссылок поддерживает проверку веб-конфигурации для приложений на Android
Подробнее об обновлении фреймворка — в первом переводе официального релиза от нашего Flutter Tech Lead Юрия Петрова.
#flutter
День богат на релизы — обновление Flutter!
🔹WebAssembly доступен в стабильной версии. Он улучшает производительность, делает анимацию и переходы более плавными
🔹Vulkan для Android оптимизирует эффекты размытия. Интерфейсы стали еще красивее
🔹Коварианты в 2D-API позволяют API автоматически обрабатывать преобразования типов данных
🔹Новый инструмент проверки глубоких ссылок поддерживает проверку веб-конфигурации для приложений на Android
Подробнее об обновлении фреймворка — в первом переводе официального релиза от нашего Flutter Tech Lead Юрия Петрова.
#flutter
Хабр
Flutter 3.22: что нового
WebAssembly, улучшения рендеринга графики и дополнительные возможности для интеграции ИИ. Я, Юра Петров, Flutter Tech Lead в Friflex , делюсь первым переводом официального релиза Flutter 3.22 от...
🔥5
🤖 Выражение «искусственный интеллект» на презентации Google I/O произнесли более 100 раз. По этому случаю предлагаем разобраться, как обучаются GPT-модели. Это правда интересно.
До обучения GPT-модель похожа на огромную пустую библиотеку. В ней есть множество полок (слоев) и мест для книг (параметров), а самих книг — нет.
Чтобы заполнить пустые места, модель пользуется механизмами внимания.
Самовнимание помогает ей взвесить каждое слово и решить, насколько оно важно именно в этот момент. Многоголовое внимание или multi-head attention позволяет каждому слою нейросети смотреть на предложение по-своему.
Попробовали систематизировать, что мы знаем об обучении GPT в нашем блоге на Хабре.
#AI
До обучения GPT-модель похожа на огромную пустую библиотеку. В ней есть множество полок (слоев) и мест для книг (параметров), а самих книг — нет.
Чтобы заполнить пустые места, модель пользуется механизмами внимания.
Самовнимание помогает ей взвесить каждое слово и решить, насколько оно важно именно в этот момент. Многоголовое внимание или multi-head attention позволяет каждому слою нейросети смотреть на предложение по-своему.
Попробовали систематизировать, что мы знаем об обучении GPT в нашем блоге на Хабре.
#AI
❤4