Flutter Tech-Lead Notes
321 subscribers
136 photos
9 videos
82 links
Download Telegram
Продолжаем неделю записей выступлений (на самом деле там их как раз 7). Сегодня видео для тех, кто хочет узнать мое мнение о различных менеджерах состояний https://www.youtube.com/watch?v=NVo5pLd0xvw
И заключительной записью будет митап, на котором я рассказывал про фреймворки на дарте, прошло уже полтора года и информация про бекенд уже не так актуальна, так как появились serverpod и data-frog. Скоро анонсирую про них митап
https://www.youtube.com/watch?v=fcpQ5kZG3r8
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 бот, которому можно кидать файлы и название канала и он зальет этот файл, очень удобно.
👍1🔥1
Сегодня залез на внутренний проект, который разрабатывается моей командой, пока они не заняты на коммерческих проектах. Было 2 задачи: запустить в iOS симуляторе, настроить CI/CD для Android.
1) Была ошибка, мол Flutter.h найти не может. Сделал за 5 минут, просто перегенерив папку iOS на проекте. Почему миддл разраб этого не смог сделать - большой вопрос.
2) Думал, что настройка CI/CD будет легкой прогулкой, но из-за того, что 2 других разработчика (сам я редко заглядываю на огонек в этот проект, им рулит миддл) забили на обновление библиотек, делалось это около часа, если не больше. Ииииии..... в итоге сломалась сборка под iOS. Придется ее сначала чинить, чтобы настроить CI/CD для iOS части приложения
🤔2
Тут отличные новости! Не терпится попробовать
Introducing Realm for Dart & Flutter: Michael Thomsen рассказывает про Realm который представили MongoDB.
https://medium.com/dartlang/introducing-realm-for-dart-flutter-e30cb05eb313
👍2
Давно не писал ничего, поэтому начинаю ежедневную серию постов - про рабочее место и технику. Расскажу, чем я пользуюсь и пользовался.
Сегодня начнем с малого - web-камера.

Для чего?
Вебка мне нужна не только как камера для созвонов в Zoom и Google Meet, но и как микрофон.

Чем пользуюсь?
Сейчас использую 2 вебки - встроенную в ноут из офиса, а дома у меня стоит Anker PowerConf C200. Иногда могу использовать камеру iPad и если есть крайняя небходимость, свой iPhone в режиме Continuty Camera (вроде так оно называется).
Немного про Anker. Это отличная 2K камера, стоит около 100$ (можно и дешевле найти, например, я за примерно 50 брал), за эти деньги конкурентов у нее нет. Также радует ПО с большим количеством настроек - от разрешения камеры до настроек цвета и света.
👍1
Вчера пропустил пост, поэтому сегодня их будет 2. Оба будут посвящены устройствам ввода. Начнем мы с клавиатуры.

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

Как подобрать под себя?
- Определиться со способом подключения клавиатуры. Тут 3 варианта: по проводу, 2.4 GHz и Bluetooth. Как мне кажется, самый удобный из них это блютуз, но не все компьютеры имеют его поддержку.
- Определиться с размером клавиатуры. Тут нужно решить, пользуетесь ли вы NumPad, нужны ли функциональные клавиши отдельно.
- Определиться с раскладкой. Начнем с раскладок под ОС. Есть 2 основных варианта - под Windows и под macOS. А также с длинной клавиш shift и enter.
- Определиться с уровнем шума, высотой клавиш и, возможно, свитчами у механической клавиатуры.

Чем пользуюсь?
Раньше я пользовался только дешевыми мембранными клавиатурами, что не всегда подходило под мои цели. Но после появления у меня моего первого MacBook я просто влюбился в клавиатуру с механизмом "ножницы" и долгое время использовал только клавиатуру ноутбука. Сейчас у меня 2 клавиатуры - одна основная, вторая для игр.
Основная - Apple Magic Keyboard с TouchID. Как по мне, для человека использующего мак, нет ничего лучше, но многие со мной не согласятся. TouchID работает корректно, подключение сразу, даже если мак спит.
Дополнительная - механическая со свичами Cherry MX Red. Главный минус для меня - раскладка под Windows. Высокие клавиши тоже играют свою роль, и моя привычка печатать на клавиатуре ноутбука не дала мне перейти на нее полностью.

Что могу посоветовать?
Однозначно Apple Magic Keyboard 2ого или 3его поколения в любой комплектации.
Из низких Logitech MX Keys в любой комплектации. Хорошая клавиатура, сочитающая несколько раскладок и работающая с несколькими компьютерами одновременно.
Из механики - продукцию KeyChron. Хотя это все вкусовщина
🔥1
Продолжим. В данном посте я решил объединить 2 устройства ввода - мышь и трекпад.

Как подобрать под себя?
- Понять, что больше подходит. Есть люди, которые полностью отвергают трекпады, особенно пользователи Windows (некоторые производители только только научились встраивать жесты). Поэтому брать трекпад стоит, если он действительно нужен.
- Определиться со способом подключения. Тоже самое, как и с клавиатурами (см. выше)
- Подобрать под себя форм-фактор. Тут следует учесть привычки. У меня лежит кисть прямо на мыши, у кого-то могут только подушечки пальцев касаться кнопок. Сюда относим размеры и вес манипулятора.

Чем пользуюсь?
- Трекпад MacBook. Очень удобно, если кроме ноутбука ничего под рукой нет. Лучшее скольжение, много жестов для управления системой. По моему личному мнению - Apple делают лучшие трекпады.
- Apple Magic Trackpad. Standalone версия того трекпада, что описан выше, но немного большего размера. Что-то дополнительно писать нет смысла.
- Apple Magic Mouse. Мышь и трекпад в одном. Есть свои минусы, например, отличие колесика для прокрутки, которое заменено на жесты. Пользовался раньше первым поколением, там была проблема с заменой батареек, садились раз в месяц. Сейчас второе и его проблема с зарядкой (кто не в курсе, у него порт находится на дне), но у меня проблема решена при помощи трекпада (обычно он вспомогательный, а в случае зарядки мыши, используется как основной).
- Дешевая мышь от Dexp. Куплена лет 5 назад на замену умершей игровой мыши из Китая. Использую только для игр, так как есть и колесико, и отдельные клавиши)

Что могу посоветовать?
Для пользователей macOS обязательно иметь что-то поддерживающее жесты, без этого никак - Magic Mouse или Magic Trackpad.
Далее дело вкуса, но я бы смотрел в сторону Logitech.
👍2
Сегодня не менее холиварная тема про устройства на рабочем месте - монитор.

Как подобрать под себя?
Определиться с размером. Сейчас меньше 24 дюймов лучше не брать, лучше всего, если монитор будет около 27 дюймов. Но если хочется широкий, то не менее эквивалента 27 дюймов с соотношением 16:9
Определиться с разрешением. Сейчас разброс идет от HD (1280x720) до 8K. Разрешение не просто влияет на восприятие картинки, но и на здоровье человека, поэтому для программирования я бы не стал рассматривать все, что ниже 2160x1440 (для широких аналогично).
Определиться с герцовкой (частотой экрана). Тут все зависит только от того, будете ли вы играть и нужна ли вам отрисовка более, чем 60 кадров в секунду.
Определиться с технологией изготовления матрицы. По моему личному мнению, лучше выбрать IPS, VA или OLED монитор.

Что использую?
Сейчас моим спутником в работе является LG Ultrafine 27UP850-W. Это уже третье поколение этих мониторов, радует наличие не только колонок (хотя звук из них не очень), но и порта USB-C, он же Thunderbolt 3 (или 4, кто его знает). То, что этот порт есть, означает, что я могу по одному кабелю передавать картинку на монитор, звук на колонки, заряжать ноутбук (до 96W) и дополнительно использовать USB-хаб на задней панели (главный минус - оба порта USB-A 2.0).
А теперь к минусам, хоть картинка и 4k, и IPS матрица, macOS делает все слишком мелким, что мне пришлось понизить разрешение до 3k (3008 на 1692) при использовании MacBook Pro на M1, после смены ноутбука можно было выставить уже 3360 на 1890. Это происходит из-за того, что на 2 модели ставится одна и та же прошивка, поэтому монитор определяется системой, как 32 дюйма. Еще один минус, что после обновления на macOS Ventura стало невозможно включить HDR, хотя с Monterey все прекрасно работало).

Что использовал?
В первый раз за этот цикл появляется обзор на технику, которая была раньше. Экраны ноутбуков и моноблока сюда не попадут, о них расскажу, когда перейдем к компьютерам.
Перед покупкой монитора от LG, я пользовался изогнутым Samsung на 24 дюйма с FullHD разрешением. Он и был причиной замены. Когда я работал на старых компах, все было нормально, но с M1 он законфликтовал и даже при выставленном максимуме, он выдавал расплывчивую картинку, из-за чего через пару-тройку часов начинали болеть глаза.
👍4
Так как я пропустил вчера пост, сегодня их будет больше. Начну я с небольшого открытия.
Команда, работающая над flutter_bloc все больше меня радует - сегодня случайно нашел виджет MultiBlocListener. Работает также, как и MultiBlocProvider, - мы даем ему инстансы BlocListener, но без child. Считаю это крутым нововведением, чтобы дерево элементов не росло
🤩3
Пришло время анонсов.
21 апреля мы встретимся на DUMP 2023 в прекрасном уральском городе Екатеринбург.
Там я расскажу про многомодульность на Flutter на примере реального проекта с разбором ошибок, которые я совершил при проектировании архитектуры.

Что? DUMP-2023 в Екб
Когда? 21 апреля 2023
Спикер: Гершевич Павел
Тема: Многомодульность на Flutter или Как не выстрелить себе в ногу
https://dump-ekb.ru/mnogomodulnost-v-flutter-ili-kak-ne-vystrelit-sebe-v-nogu
🔥3
На этой неделе встретил странный баг в приложении.
Дело в том, что размер текста в эмуляторе в 2 виджетах был одинаковым, а на реальном устройстве тестировщика был разным, несколько костылей не срабатывает.
Буквально сейчас наткнулся на свежую статью от Surf, в которой про это рассказывается.

P.S. Для ленивых - всегда передавайте textScaleFactor в RichText
На этой неделе начали стажировку в компании. Ее цель - выбрать себе новых сотрудников.
Так как я руковожу отделом мобильной разработки, меня сделали одним из наставников.

Расскажу немного про отбор кандидатов.
Всего к нам пришло более 100 заявок, из которых 20 было мобильных разработчиков. По результатам 2 стадий отбора (выбор кому давать тестовое и собственно само тестовое), ко мне на разработку попало 3 человека:
- Студент последних курсов, который делал что-то на Flutter
- Студент младших курсов, уже успевший поработать Flutter Junior
- Парень, работающий с Android, но познакомившийся с Flutter во время выполнения тестового задания

Сейчас ребята делают приложение, у которого есть потенциал стать полноценным внутренним проектом или частью уже существующей ERP системы, которую мы используем у себя
🔥1
Продолжим покинутую тему - рабочее место. В этот раз разберем то, на что часто забивают - свет.

Для чего?
Хорошее освещение рабочего места поможет сберечь зрение и меньше уставать.

Что использую?
В первую очередь, я работаю днем, поэтому естественный свет из окна - лучший выбор, так как экономит электроэнергию и просто удобно.
Для замены ему в темное время суток или если нужно закрыть шторы (яркое солнце, просто жара на улице) я использую намониторную лампу от Yeelight - Screen Bar Pro (или как-то так).
Плюс первый - никаких бликов на мониторе, даже с естественным светом они есть.
Плюс второй - свет всегда падает сверху, что нельзя перекрыть поставив что-то около себя.
Плюс третий - есть подсветка на стену за монитором, что также помогает глазам в темное время суток.

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

Как подобрать под себя?
Температура света, его яркость и расположение - субъективные вещи, поэтому для организации хорошего рабочего места нужно понимать, как и что вы хотите осветить.
👍3
Перед заключительными и самыми важными постами про рабочее место, пройдемся по различным мелочам.

Коврик для мыши.

Что использую?
Я не приверженец использования ковриков, но из-за того, что мой стол не воспринимается Apple Magic Mouse, в январе 2022 я прикупил себе длинный коврик из кожзама от Satechi. Плюс в том, что на нем сейчас стоят и мышь, и клавиатура, и трекпад. В мечтах заменить его на шерстяной коврик.

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

Сетевой фильтр.

Что использую?
Башню на 12 розеток и 5 USB портов от Qumo. Удобная штука, когда у тебя возле рабочего места всего 1 розетка.

Что использовал?
Дешевый тройник, в который дополнительно был подключен дешевый сетевой фильтр от Defender. Этот сетевой фильтр прожил у меня чуть больше 5 лет, он успел побывать со мной заграницей (для чего и покупался), переехать обратно в Красноярск и переехать уже на свою квартиру. Уже на последнем месте у него начали отваливаться розетки, в итоге, из 5 розеток осталось только 3 рабочих, пришлось искать ему замену.

Как подобрать?
Определиться с количеством розеток, лучше, если возьмете с запасов +2-3 штуки, ну и без USB не обойтись. В идеале, если вы постепенно переходите на девайсы с USB-C, он тоже должен присутствовать.
Продолжим про важные мелочи

Подставки для ноутбука / планшета.

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

Как подобрать?
Зависит от целей. Если нужна подставка, чтобы увеличить пространство - только подставка для закрытого ноутбука. Если для того, чтобы было удобно использовать - можно смотреть различные. Если для охлаждения - смотрим на шум и возможности.

Wi-Fi роутер.

Что использую?
Сейчас возле меня стоит Xiaomi с Wi-Fi 6. Отличный вариант для пользователей с быстрым интернетом (у меня, например, гигабит). Подбирал я его долго, смотрел, чтобы не было перегрева и были хорошие скорости. Более того, у меня все устройства поддерживают Wi-Fi 6, что является еще одним преимуществом.

Что использовал?
Пока жил у родителей, использовал Asus AC51U - отличный роутер за свои деньги, родителям его до сих пор хватает (хотя прошло уже лет 8 наверное). После переезда на свою квартиру взял себе дешевый Xiaomi 4A (не гигабитный), в какой-то момент он мне надоел тем, что приходилось его постоянно перезагружать, поэтому пришлось поменять.

Как подобрать?
Я бы не рассматривал сейчас к покупки роутеры без поддержки Wi-Fi 5 (802.11AC) и стоимостью ниже 2000 рублей. В идеале брать что-то, что будет работать на Wi-Fi 6 или 6E. Также отмечу несколько производителей: Asus, Xiaomi, Zyxel и TP-Link.
Вот мы и подобрались к разговорам о самой важной технике за рабочим столом - компьютерам. Это будет небольшая серия постов, чуть более филосовская, чем прошлые.
Начну я с рассказа, чем я пользовался и пользуюсь сейчас.

до 2016 Стационарный ПК
Когда я еще только начинал изучать программирование, я сидел и писал код за маломощным ПК. Это был довольно слабый Pentium на 775 сокете с 2 гигами ОЗУ и GT 240. Работать на нем можно было, но ждать компиляции было очень долго.
Это и стало одной из причин, по которой, занявшись разработкой под Android, я собрал себе уже бюджетный компьютер, которого должно было хватать - i3 4340, GTX 750, 8 Гб ОЗУ и впервые у меня появился SSD. Работать стало намного лучше и приятнее.

2014-2015 Учебный ноутбук от Samsung
В самом начале я учился в IT школе Samsung, где мы работали на специально подготовленных под нас ноутбуках. Если правильно помню это были ультрабуки с i3 и 4 гигами оперативы на борту. Медленные, но для обучения подходили.

2016-2019 MacBook Air
После окончания школы, мне нужно было уезжать заграницу, но компьютер мне 100% нужен был. Так как я хотел начать разрабатывать не только под Android, но и под iOS, был необходим Mac. Выбор пал на самую дешевую комплектацию MacBook Air 2015 с 13 дюймами - 4 ГБ ОЗУ и 128 Гб SSD. Довольно слабая печатная машинка, но мне ее хватало и для разработки, и немного поиграть в игры.

2018-2019 Рабочий ноутбук
Когда я занимался разработкой на React (об этом я расскажу в одном из дальнейших постов), моего мака стало дико не хватать и мне выдали ноут от Asus. Иногда приходилось таскать с собой 2 ноутбука. На самом деле, это был не первый ноутбук, выданный мне в Aspirity, первым был ноутбук от Lenovo, который я получил в первые дни работы в компании и который оказался бракованным.

Завтра разберем оставшиеся 4 компьютера на которых я работал и работаю.
👍1