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

⚙️Наш канал о разработке на Flutter: @flutterfriendly
🚀О продуктовой разработке: @friflex_product
Download Telegram
🌳 На деревьях на улице распускаются почки, а у нас в рубрике — бинарные деревья. Это иерархические структуры данных, которые помогают легко находить, вставлять и удалять элементы.

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

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

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

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

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

#наайтишном
5
🤖Создаем своего клиента для Gemini без бэкенда

Помните, в версии Flutter 3.19 появился SDK для работы с генеративным ИИ? Наш Tech Lead Юрий Петров разобрался, какие горизонты этот инструмент открывает перед разработчиками.

Вместе с ним на примере простого Flutter-проекта узнаем:

◾️Как получить API-ключ
◾️Как сгенерировать текст
◾️Как настроить конфигурацию модели
◾️Как гибко отфильтровать контент
◾️Как настроить httpClient

Все подробности — уже на Хабре!

#howto
4🔥2
💫 Коварный баг назван в честь принципа неопределенности Гейзенберга из квантовой механики. Этот принцип гласит: невозможно одновременно точно определить положение и импульс микроскопической частицы.

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

Бороться с гейзенбагами сложно. Тут важно быть упорным и настойчивым:

◾️Продолжайте тестировать. Чем больше тестов вы напишете, тем скорее обнаружите гейзенбаг.

◾️Используйте инструменты отладки.

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

◾️Попытайтесь воспроизвести условия, в которых ошибка проявляется, и изучить ее подробнее.

Помните, вы не одиноки — с гейзенбагами сталкиваются многие программисты 🫶

#наайтишном
4👍2
Flutter появился в 2015 году как секретный проект Google под названием Sky. С тех пор вышло множество релизов и он стал настоящим взрослым фреймворком.

Команда Friflex продвигает разработку на Flutter, следит за его развитием и каждый год проводит конференцию о кроссплатформенной разработке — CrossConf @crossconf. Собрали самые важные моменты из истории фреймворка на карточках и подробнее рассказали о ней в нашем блоге. Приятного чтения🌟
3
🧑‍🤝‍🧑 Если вы думаете, что копировать — это просто, вы не занимались глубоким копированием. Оно помогает создать точную копию объекта вместе со вложенными документами. Получается объект-близнец, совершенно самостоятельный и независимый.

Глубокое копирование отлично подходит:

◾️Чтобы изменения одного объекта не влияли на другой

◾️Чтобы свободно работать с объектом и не бояться испортить оригинал

◾️Чтобы клонировать многоуровневые объекты

Можно создать объект-близнец вручную или с помощью библиотек. Например, в 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 читайте также в тг-канале Юрия Мобильный разработчик.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
🧮 Каррирование пришло в разработку из комбинаторной логики. Понятие сформулировал американский математик Хаскарл Карри. Он показал, что функцию можно представить в виде одного аргумента, который возвращает функцию, которая принимает другой аргумент.

Как это работает в программировании? Представим, что у нас есть функция multiply, которая умножает два числа. С помощью каррирования мы можем создать из нее новую — она будет умножать свой аргумент на определенное число. Например, double.


Function(int) double = (int x) => multiply(x, 2);


Теперь double — это функция, которая принимает один аргумент и удваивает его. Мы можем использовать ее так:

print(double(5)); // Выведет: 10


Результат: компактный код и универсальные функции, которые можно легко комбинировать.

#наайтишном
👍21
📝 Разработчики знают, как важно сохранять историю изменений в проекте.
На GitHub можно самостоятельно после каждого пул-реквеста заносить файл CHANGELOG.MD в основную ветку. А можно автоматизировать этот процесс.

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

Как создавать автоматические коммиты, читайте в статье Flutter Tech Lead в Friflex Юрия Петрова на Хабре.

#howto #инструкция
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
📹 Для тех, кто любит смотреть и слушать

Как создавать автоматические коммиты в GitHub, рассказал в новом видео Юрий Петров, Flutter Tech Lead Friflex и автор канала Мобильный разработчик. Из ролика вы узнаете:

✔️Что такое библиотека git-cliff
✔️Как настроить GitHub Action
✔️Зачем нужны соглашения о коммитах

👀 Смотрите на YouTube-канале Friflex:
Как быстро добавить автоматическое заполнение changelog с помощью GitHub Action

И подписывайтесь, чтобы не пропустить новые видео 💜
#howto #инструкция
Please open Telegram to view this post
VIEW IN TELEGRAM
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 Юрий Петров.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
⚡️Flutter 3.22: что нового

День богат на релизы — обновление Flutter!

🔹WebAssembly доступен в стабильной версии. Он улучшает производительность, делает анимацию и переходы более плавными
🔹Vulkan для Android оптимизирует эффекты размытия. Интерфейсы стали еще красивее
🔹Коварианты в 2D-API позволяют API автоматически обрабатывать преобразования типов данных
🔹Новый инструмент проверки глубоких ссылок поддерживает проверку веб-конфигурации для приложений на Android

Подробнее об обновлении фреймворка — в первом переводе официального релиза от нашего Flutter Tech Lead Юрия Петрова.

#flutter
🔥5
🤖 Выражение «искусственный интеллект» на презентации Google I/O произнесли более 100 раз. По этому случаю предлагаем разобраться, как обучаются GPT-модели. Это правда интересно.

До обучения GPT-модель похожа на огромную пустую библиотеку. В ней есть множество полок (слоев) и мест для книг (параметров), а самих книг — нет.

Чтобы заполнить пустые места, модель пользуется механизмами внимания.

Самовнимание помогает ей взвесить каждое слово и решить, насколько оно важно именно в этот момент. Многоголовое внимание или multi-head attention позволяет каждому слою нейросети смотреть на предложение по-своему.

Попробовали систематизировать, что мы знаем об обучении GPT в нашем блоге на Хабре.

#AI
4