Данный пост должен был выйти вчера, но тяжело подобрать слова...
Уходить с проекта, в который вложил свою душу и много сил, всегда тяжело. Поэтому хочется выразить большую благодарность всей команде (я знаю, что некоторые из вас это читают).
Началось все этой весной, когда мне предложили стартовать такой проект как TeamLead. И пошла череда собеседований, растянувшаяся аж на полтора месяца. Но я рад, что у меня получилось собрать настоящую сильную команду из еще 3 разработчиков. Летом мы стартанули. Архитектура, первые фичи... Я, как человек с практически нулевым, на тот момент, опытом управления командой, причем такой сильной, все-таки смог организовать первичные процессы.
Осенью, в команду пришел еще один разраб моего уровня. Мы учились друг у друга, мы советовались друг с другом, помогали друг другу эти 4 месяца. В какой-то момент, он стал Team-Lead, а я сохранил за собой технические вещи и стал и там Tech-Lead (если нужен пост про отличия, пинганите в ЛС).
Всем спасибо за работу! Было очень круто с вами поработать над таким большим и сложным проектом!
R.S. Я не прощаюсь, я говорю до встречи!
Уходить с проекта, в который вложил свою душу и много сил, всегда тяжело. Поэтому хочется выразить большую благодарность всей команде (я знаю, что некоторые из вас это читают).
Началось все этой весной, когда мне предложили стартовать такой проект как TeamLead. И пошла череда собеседований, растянувшаяся аж на полтора месяца. Но я рад, что у меня получилось собрать настоящую сильную команду из еще 3 разработчиков. Летом мы стартанули. Архитектура, первые фичи... Я, как человек с практически нулевым, на тот момент, опытом управления командой, причем такой сильной, все-таки смог организовать первичные процессы.
Осенью, в команду пришел еще один разраб моего уровня. Мы учились друг у друга, мы советовались друг с другом, помогали друг другу эти 4 месяца. В какой-то момент, он стал Team-Lead, а я сохранил за собой технические вещи и стал и там Tech-Lead (если нужен пост про отличия, пинганите в ЛС).
Всем спасибо за работу! Было очень круто с вами поработать над таким большим и сложным проектом!
R.S. Я не прощаюсь, я говорю до встречи!
🤝3👍1🔥1🙏1
Подведем итоги. Хотя 2022 год был тяжелым, но все-таки в нем были и хорошие моменты.
Для Flutter этим моментом стал выход третьей версии фреймворка. Также было много релизов крупных мобильных приложений на нем.
Для меня это был год роста и новых полезных знакомств. Первое руководство командрй, первый за несколько лет крупный проект, первые поездки на конференции в другие города, первое выступление на конфе... Этот список можно продолжать еще долго.
А главное тут одно - каким бы ни был год, что бы не случилось, нужно стараться оставаться позитивным и развиваться несмотря ни на что. Такой вывод я сделал для себя.
Для Flutter этим моментом стал выход третьей версии фреймворка. Также было много релизов крупных мобильных приложений на нем.
Для меня это был год роста и новых полезных знакомств. Первое руководство командрй, первый за несколько лет крупный проект, первые поездки на конференции в другие города, первое выступление на конфе... Этот список можно продолжать еще долго.
А главное тут одно - каким бы ни был год, что бы не случилось, нужно стараться оставаться позитивным и развиваться несмотря ни на что. Такой вывод я сделал для себя.
🔥4
Ну и про 2023.
В беспросветной череде плохих новостей остается только надежда на лучшее. Но планы какие-то можно начать строить:
- Выступить на крупной конференции
- Найти крутой проект
- Вырастить отдел
- Съездить за границу.
По Flutter можно сказать одно - нас ждет крутой год по обновлениям, Dart 3 принесет много интересного. Надеюсь, не будет таких проблем с миграцией, как с Flutter 2 и Dart 2.12.
Всех с Новым 2023 Годом! Чтобы было мирное небо над головой и близкие рядом!
В беспросветной череде плохих новостей остается только надежда на лучшее. Но планы какие-то можно начать строить:
- Выступить на крупной конференции
- Найти крутой проект
- Вырастить отдел
- Съездить за границу.
По Flutter можно сказать одно - нас ждет крутой год по обновлениям, Dart 3 принесет много интересного. Надеюсь, не будет таких проблем с миграцией, как с Flutter 2 и Dart 2.12.
Всех с Новым 2023 Годом! Чтобы было мирное небо над головой и близкие рядом!
🎉4
Долго искал хорошую библиотеку для работы с биометрией и защищенным хранилищем для Flutter. Да, можно было написать самому, можно было костыльно объединить LocalAuth и SecuredStorage.
Но вот достаточно правильное решение - https://pub.dev/packages/biometric_storage
Но вот достаточно правильное решение - https://pub.dev/packages/biometric_storage
Dart packages
biometric_storage | Flutter package
Secure Storage: Encrypted data store optionally secured by biometric lock with support
for iOS, Android, MacOS. Partial support for Linux, Windows and web (localStorage).
for iOS, Android, MacOS. Partial support for Linux, Windows and web (localStorage).
👍1
Вчера Apple представили очередное обновление линейки Mac и новые процессоры M2 Pro и M2 Max
Уже привычно, что они делают свои компьютеры все быстрее и мощнее, но при этом более энергоэффективными. НО! Удивило то, что это произошло как будто это какое-то минорное обновление - через видео и обновление сайта, а не через презентацию.
Хотя презентацию им стоило сделать, так как сегодня они выпустили еще 1 обновление - второе поколение больших HomePod.
P.S. Мысли по поводу нового железа опишу в следующем посте
Уже привычно, что они делают свои компьютеры все быстрее и мощнее, но при этом более энергоэффективными. НО! Удивило то, что это произошло как будто это какое-то минорное обновление - через видео и обновление сайта, а не через презентацию.
Хотя презентацию им стоило сделать, так как сегодня они выпустили еще 1 обновление - второе поколение больших HomePod.
P.S. Мысли по поводу нового железа опишу в следующем посте
👍4
Кажется, что скоро в РФ блоканут Google. Уже второй день наблюдаю, что некоторые сайты гугловские не открываются либо не грузят некоторые файлы.
Вчера DartPub (pub.dev) только HTML отдавал либо не грузился совсем. Сегодня проблемы с Google Play (причем не только с маркетом, но и с консолью разработчика)
Вчера DartPub (pub.dev) только HTML отдавал либо не грузился совсем. Сегодня проблемы с Google Play (причем не только с маркетом, но и с консолью разработчика)
🤯1
Safari в последней версии macOS - это какой-то кошмар.
Я выше уже писал, что у меня DartPub отдавал только HTML. Так вот, это повторяется спустя несколько дней. Но вчера появилась еще одна проблема, которая мешает работать - до конца не прогружается Bitbucket, не грузит некоторые запросы и шрифт. Причем, когда я пробую через другой браузер, то все нормально.
Стоит переходить на Google Chrome?
Я выше уже писал, что у меня DartPub отдавал только HTML. Так вот, это повторяется спустя несколько дней. Но вчера появилась еще одна проблема, которая мешает работать - до конца не прогружается Bitbucket, не грузит некоторые запросы и шрифт. Причем, когда я пробую через другой браузер, то все нормально.
Стоит переходить на Google Chrome?
🤔2
В итоге, обошлось малой кровью. Почистил кеш Safari, прописал гугловские DNS сервера (8.8.8.8 и 8.8.4.4 если кому тоже надо) и отключил поддержку IPv6 (перевел в ручной режим из автоматического). Сначала думал, что не сработает, а в итоге, заработало. Но есть один минус - вышло со всех сайтов.
По блокировке Google я оказался не прав. Почему-то в macOS и iOS не работает SSL для него, на компьютерах с Windows все нормально. Скорее всего в новом обновлении заработает, на что и остается надеяться.
По блокировке Google я оказался не прав. Почему-то в macOS и iOS не работает SSL для него, на компьютерах с Windows все нормально. Скорее всего в новом обновлении заработает, на что и остается надеяться.
Вчера ночью прошел Flutter Forward и хочется поделиться своими впечатлениями от планируемых к запуску фичах Dart и Flutter.
Как я и думал, обновление Dart 3 будет очень масштабным:
- Новые фишки языка, что-то из этого синтаксический сахар, что-то будет очень полезно в работе. Например, sealed классы уменьшат использование кодогенерации в множестве проектов (сейчас для это используется freezed), или новое написание switch case (и использование case внутри if) - очень полезная вещь, чтобы не загружать свой код лишним
- Поддержка компиляции в WASM. Flutter Web станет еще более производительным, что позволит выводить в прод по-настоящему крутые проекты
- Поддержка RISC-V. Для меня, как для разработчика приложений для iOS и Android это спорная вещь, так как не известно, как будет применяться
Как я и думал, обновление Dart 3 будет очень масштабным:
- Новые фишки языка, что-то из этого синтаксический сахар, что-то будет очень полезно в работе. Например, sealed классы уменьшат использование кодогенерации в множестве проектов (сейчас для это используется freezed), или новое написание switch case (и использование case внутри if) - очень полезная вещь, чтобы не загружать свой код лишним
- Поддержка компиляции в WASM. Flutter Web станет еще более производительным, что позволит выводить в прод по-настоящему крутые проекты
- Поддержка RISC-V. Для меня, как для разработчика приложений для iOS и Android это спорная вещь, так как не известно, как будет применяться
👍3
По функциям Flutter, их можно разделить на 2 категории - хорошие и максимально крутые. Начнем, с хороших:
- Адаптивность. Ее наконец встраивают в сам Flutter, будет чуть удобнее, чем раньше
- Шейдеры на Web. Спорно, но на самом деле очень интересно было бы с ними поработать, так как на мобилке и для десктопа они уже есть
- Встраивание элемента в JS. Интересная функция, можно сказать прорывная, особенно с примером, который показали. Но как по мне, использоваться будет крайне редко
- Google News Toolkit - штука для крайне малого количества человек, непонятно, как там написан бэк и как это дело кастомизируется
А теперь крутые:
- Обновление Impeller. Скоро можно будет не заморачиваться с запеканием шейдеров. Для iOS сделают включенным по умолчанию
- Поддержка 3D даст дизайнерам очень большой простор для творчества. Если все будет хорошо, то можно будет делать то, что делают сейчас с некоторыми сайтами, используя three.js
- JNIgen и FFIgen. По моему мнению, это лучшее, что случалось с Flutter. А если потом добавят еще и под Swift, то будет идеально. Хотелось бы еще увидеть конечно, что это будет с библиотеками работать, но пока и с системными API операционок сойдет
Ну а общее впечатление от keynote такое - впервые за долгое время проходил оффлайн event, но особый фокус на месте его проведения для всего мира не так сильно полезен. Теперь ждем Google I/O, чтобы представили как эти функции будут работать на самом деле.
- Адаптивность. Ее наконец встраивают в сам Flutter, будет чуть удобнее, чем раньше
- Шейдеры на Web. Спорно, но на самом деле очень интересно было бы с ними поработать, так как на мобилке и для десктопа они уже есть
- Встраивание элемента в JS. Интересная функция, можно сказать прорывная, особенно с примером, который показали. Но как по мне, использоваться будет крайне редко
- Google News Toolkit - штука для крайне малого количества человек, непонятно, как там написан бэк и как это дело кастомизируется
А теперь крутые:
- Обновление Impeller. Скоро можно будет не заморачиваться с запеканием шейдеров. Для iOS сделают включенным по умолчанию
- Поддержка 3D даст дизайнерам очень большой простор для творчества. Если все будет хорошо, то можно будет делать то, что делают сейчас с некоторыми сайтами, используя three.js
- JNIgen и FFIgen. По моему мнению, это лучшее, что случалось с Flutter. А если потом добавят еще и под Swift, то будет идеально. Хотелось бы еще увидеть конечно, что это будет с библиотеками работать, но пока и с системными API операционок сойдет
Ну а общее впечатление от keynote такое - впервые за долгое время проходил оффлайн event, но особый фокус на месте его проведения для всего мира не так сильно полезен. Теперь ждем Google I/O, чтобы представили как эти функции будут работать на самом деле.
👍5
Возникла на этой неделе нестандартная задачка. Есть Mac Mini M1 (16, 512), на котором надо:
- Запустить CI/CD для мобильных приложений
- Сделать возможным удаленное подключение нескольких пользователей одновременно для тестирования web-приложений и настроек мобильного CI/CD
- Чтобы все это не мешало человеку, который за ним сидит
Раньше существовала только вторая задача и мы использовали RealVNC. Но тут есть проблема - для того, чтобы было 2 пользователя одновременно, нужно покупать дорогую лицензию + для каждого пользователя надо по своему монитору подключать.
Сейчас я использовал бесплатный Vine VNC Server, запустив по серверу на каждом пользователе, но на разных портах. Для подключения использую Remote Ripple (если кто подскажет другой хороший клиент для VNC, буду рад). В итоге имеем:
- Удаленный доступ работает в локальной сети, нужно теперь внешнее подсоединение настроить (прокинуть порты в роутере или настроить DDNS)
- Нужен один монитор на все, не надо тратиться на переходники и заглушки
- Мощности хватает на 3 одновременно работающих пользователя
- Запустить CI/CD для мобильных приложений
- Сделать возможным удаленное подключение нескольких пользователей одновременно для тестирования web-приложений и настроек мобильного CI/CD
- Чтобы все это не мешало человеку, который за ним сидит
Раньше существовала только вторая задача и мы использовали RealVNC. Но тут есть проблема - для того, чтобы было 2 пользователя одновременно, нужно покупать дорогую лицензию + для каждого пользователя надо по своему монитору подключать.
Сейчас я использовал бесплатный Vine VNC Server, запустив по серверу на каждом пользователе, но на разных портах. Для подключения использую Remote Ripple (если кто подскажет другой хороший клиент для VNC, буду рад). В итоге имеем:
- Удаленный доступ работает в локальной сети, нужно теперь внешнее подсоединение настроить (прокинуть порты в роутере или настроить DDNS)
- Нужен один монитор на все, не надо тратиться на переходники и заглушки
- Мощности хватает на 3 одновременно работающих пользователя
👍2
Закидывал сегодня заявки на выступления на IT конференциях с новым докладом (Привет организаторам, которые проверяют соцсети!). Было прикольно пересматривать свои старые выступления и митапы. Думаю, на этой неделе поскидываю лучшее сюда
А начнем мы с самого свежего. В ноябре в моем родном Красноярске проходил Dev2Dev Chipec, на который меня пригласили выступить.
https://www.youtube.com/watch?v=RTgor7jZm2A
https://www.youtube.com/watch?v=RTgor7jZm2A
YouTube
Павел Гершевич Dev2Dev Chipec - Flutter best practices для высокого FPS
Тема:
Flutter best practices для высокого FPS.
Тезисы:
- Посмотрим как измерять производительность мобильных и не только приложений на Flutter;
- Разберем как и почему мы можем получить низкий FPS
- Рассмотрим best practices, которые используются в Aspirity…
Flutter best practices для высокого FPS.
Тезисы:
- Посмотрим как измерять производительность мобильных и не только приложений на Flutter;
- Разберем как и почему мы можем получить низкий FPS
- Рассмотрим best practices, которые используются в Aspirity…
🔥3
Продолжаем неделю записей моих выступлений. Сегодня самый популярный ролик с моим участием с канала Aspirity - обзор Firebase, уже немного устаревший, но не потерявший свою актуальность.
https://www.youtube.com/watch?v=og-Gv2jaM0M
https://www.youtube.com/watch?v=og-Gv2jaM0M
YouTube
Обзор возможностей Firebase
Запись митапа "Что такое Firebase и как его использовать". Спикер: Гершевич Павел, мобильный разработчик Аспирити
00:00 Введение
00:54 О чем поговорим?
01:15 Что такое Firebase и что в него входит
02:21 Build with Firebase
04:02 Firebase Auth
06:25 Firestore…
00:00 Введение
00:54 О чем поговорим?
01:15 Что такое Firebase и что в него входит
02:21 Build with Firebase
04:02 Firebase Auth
06:25 Firestore…
🔥3👏1
Сегодня закину один из самых первых своих митапов. Да, информация в нем уже немного устарела, но все еще может быть полезной для тех, кто только решает вкатываться в кросс-платформу.
Этот митап я проводил 3 с лишним года назад и в завтрашнем посте будет его вторая часть. Стоит ли делать третью?
https://www.youtube.com/watch?v=MYdPREb2nzE
Этот митап я проводил 3 с лишним года назад и в завтрашнем посте будет его вторая часть. Стоит ли делать третью?
https://www.youtube.com/watch?v=MYdPREb2nzE
YouTube
Подводные камни Flutter и React Native
Разработчик Аспирити Павел Гершевич расскажет о своим опыте разработки на Flutter и React Native:
1. Опыт и грабли разработки на Flutter.
2. Опыт и грабли разработки на React Native.
3. Сравнение: что же все-таки использовать.
Для кого:
1. Нативных…
1. Опыт и грабли разработки на Flutter.
2. Опыт и грабли разработки на React Native.
3. Сравнение: что же все-таки использовать.
Для кого:
1. Нативных…
🔥2👍1
А вот и обещанная вчера вторая часть сравнения Flutter и RN
https://www.youtube.com/watch?v=oSsrQkpUGkI
https://www.youtube.com/watch?v=oSsrQkpUGkI
Сегодня разбирался с автотестами. Попробовал наконец mocktail. Нашел сразу и плюсы и минусы, в сравнении с mockito.
Плюсы:
- Быстро описать какой мок тебе надо
- Нет кодогенерации и из-за этого легче поддерживать
Минусы:
- Вместо when(myMock.myFunc()), нужно писать when(() => myMock.myFunc()). Возможно путает на первом этапе.
- Не нашел альтернативы any, возможно я недостаточно хорошо искал
Плюсы:
- Быстро описать какой мок тебе надо
- Нет кодогенерации и из-за этого легче поддерживать
Минусы:
- Вместо when(myMock.myFunc()), нужно писать when(() => myMock.myFunc()). Возможно путает на первом этапе.
- Не нашел альтернативы any, возможно я недостаточно хорошо искал
🤔1
Продолжаем неделю записей выступлений (на самом деле там их как раз 7). Сегодня видео для тех, кто хочет узнать мое мнение о различных менеджерах состояний https://www.youtube.com/watch?v=NVo5pLd0xvw
YouTube
State management в Flutter: от Redux до GetX
00:00 - Вступление
01:24 - setState
03:25 - Inherited Widget
06:47 - Provider
07:37 - Change Notifier
08:13 - BLoC
09:46 - BLoC library
14:26 - Redux
16:12 - MobX
16:53 - GetIt
18:20 - Riverpod
19:31 - GetX
21:03 - Что используется в Aspirity
23:40 - Ответы…
01:24 - setState
03:25 - Inherited Widget
06:47 - Provider
07:37 - Change Notifier
08:13 - BLoC
09:46 - BLoC library
14:26 - Redux
16:12 - MobX
16:53 - GetIt
18:20 - Riverpod
19:31 - GetX
21:03 - Что используется в Aspirity
23:40 - Ответы…
В 2021. я делал обзорную презентацию про кодогенерацию в Dart и Flutter. https://www.youtube.com/watch?v=jFK0VBkLtCA
YouTube
Кодогенерация в Dart и Flutter
Митап от мобильного разработчика Aspirity Павла Гершевича.
00:00 Вступление
00:37 Что такое кодогенерация?
04:27 Кодогенерация в Dart
06:13 injectable
08:53 Moor
10:19 Chopper и Retrofit
12:17 auto_route
13:32 json_serializable
14:35 Mockito
15:55 freezed…
00:00 Вступление
00:37 Что такое кодогенерация?
04:27 Кодогенерация в Dart
06:13 injectable
08:53 Moor
10:19 Chopper и Retrofit
12:17 auto_route
13:32 json_serializable
14:35 Mockito
15:55 freezed…
И заключительной записью будет митап, на котором я рассказывал про фреймворки на дарте, прошло уже полтора года и информация про бекенд уже не так актуальна, так как появились serverpod и data-frog. Скоро анонсирую про них митап
https://www.youtube.com/watch?v=fcpQ5kZG3r8
https://www.youtube.com/watch?v=fcpQ5kZG3r8
YouTube
Dart и его фреймворки
00:00 Вступление
01:55 История Dart
08:17 Dart в рейтингах языков
09:18 Dart stdlib
11:50 Использование JS в коде на Dart
13:27 Angular, React и Vue
15:05 Другие фреймворки для frontend
18:01 Фреймворки для backend
20:29 А что дальше?
01:55 История Dart
08:17 Dart в рейтингах языков
09:18 Dart stdlib
11:50 Использование JS в коде на Dart
13:27 Angular, React и Vue
15:05 Другие фреймворки для frontend
18:01 Фреймворки для backend
20:29 А что дальше?
Flutter Tech-Lead Notes
Сегодня разбирался с автотестами. Попробовал наконец mocktail. Нашел сразу и плюсы и минусы, в сравнении с mockito. Плюсы: - Быстро описать какой мок тебе надо - Нет кодогенерации и из-за этого легче поддерживать Минусы: - Вместо when(myMock.myFunc()), нужно…
История продолжается. Теперь уже настройкой CI/CD.
Сначала стоял вопрос, что выбрать - Bitbucket Pipelines, fastlane или перенести репу на GitHub и заюзать Actions. В итоге, был выбран первый вариант, как самый простой.
Изначально казалось, что нужно просто поставить docker и все, что необходимо для runner, и заработает, но нет, docker не понадобился и пришлось настраивать сборку локально на удаленном маке. Но это полдела.
Сборки под Android было решено закидывать в Slack, так как Firebase Distribution очень криво работает с российских IP адресов. Долгие поиски что не так, показали очень тупую ошибку, но файлы теперь закидываются и тестировщики могут их забирать. И да, в Aspirity теперь есть Slack бот, которому можно кидать файлы и название канала и он зальет этот файл, очень удобно.
Сначала стоял вопрос, что выбрать - Bitbucket Pipelines, fastlane или перенести репу на GitHub и заюзать Actions. В итоге, был выбран первый вариант, как самый простой.
Изначально казалось, что нужно просто поставить docker и все, что необходимо для runner, и заработает, но нет, docker не понадобился и пришлось настраивать сборку локально на удаленном маке. Но это полдела.
Сборки под Android было решено закидывать в Slack, так как Firebase Distribution очень криво работает с российских IP адресов. Долгие поиски что не так, показали очень тупую ошибку, но файлы теперь закидываются и тестировщики могут их забирать. И да, в Aspirity теперь есть Slack бот, которому можно кидать файлы и название канала и он зальет этот файл, очень удобно.
👍1🔥1