Код Меркури – Telegram
Код Меркури
2.15K subscribers
3.45K photos
487 videos
2 files
3.59K links
Микромедиа об IT для айтишников-релокантов и удаленщиков по всему миру 🪐

Познакомиться поближе: https://mercdev.com
Download Telegram
Рубрика «мемы из нашего слака»
👍11😁4
Ученые открыли планету-океан

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

В любом случае, ученым интересно как выглядит этот Солярис, поэтому дальше наблюдать планету будут с помощью «Джеймса Уэбба». А на картинке фантазия ученых о том, как могла бы выглядеть ее поверхность.

#space
👍2🥰1
Два бесплатных курса по разработке под Android с помощью Kotlin от Google

Developing Android Apps with Kotlin — основы для начинающих.

Advanced Android with Kotlin — продолжение предыдущего курса для более продвинутых.

#android
🤩7
Комплект разработчика с документацией продукта Microsoft весил 18 кг

В эпоху, когда девкит включал себя дискеты, компакт-диски и кучу бумажных инструкций, один из комплектов компилятора Microsoft C/C++ 7.0 с Windows SDK весил как олимпийский гриф. Об этом рассказала архивариус Microsoft, когда ее спросили какой программный продукт компании был самым большим.

#фанфакт
😱1
TSMC начнет производство 3-нанометровых чипов в сентябре

Журналисты пишут, что Apple может стать первой компанией на рынке, массово выпускающей устройства на новом техпроцессе.
🔥1
Forwarded from Silero TTS
😁8
Всем привет! Меня зовут Сергей, я разработчик в команде Мерка, занимаюсь созданием мобильных приложений на Flutter. А с недавних пор меня приютили на пол-доклада на митапе по мобильной разработке, так что теперь ко всему этому можно скромно добавлять, что я еще и уважаемый спикер 😅

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

По традиции, сегодня я расскажу немного о себе и своём опыте, а дальше будем придерживаться следующего плана:

30 августа
Признаюсь в любви Flutter, проедусь по React Native, расскажу, почему я сбежал от этой технологии, и почему вам, возможно, тоже стоит собирать котомочку.

31 августа
Обсудим, почему нативные разработчики не любят Flutter и почему они не всегда неправы, высказываясь против моей любимой кроссплатформы. Заодно и сам закину пару камней в огород Flutter. Не только ж хвалить мою любимую технологию.
Еще, внезапно, хочу затронуть тему тестирования. Да, вот так просто.

1 сентября
Расскажу про наши митапы Merk/pro и немного проспойлерю доклад, который мы с Алёной будем читать 4 сентября в Ереване. И да, если вы сейчас находитесь в том самом Ереване, айда к нам на митап, ссылка на регистрацию тут: https://mercdev.timepad.ru/event/2143226/

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

#underhood
🔥137👍5👎1
Ах да, чуть не забыл. Надо бы добавить дисклеймер, что всё, что я тут собираюсь написать, никак не отражает позицию Мерка
Теперь точно всё)

#underhood
👍16
В команде Мерка я уже чуть больше года, а вообще у меня порядка 6 лет опыта коммерческой разработки. Начинал я с Python и React Native, потом перекатился во Flutter — и ни о чем не жалею. Окончил бакалавриат ИТМО по прикладной информатике, после чего там же поступил на магистратуру по геймдеву и благополучно отчислился с нее (но это не значит что она плохая, всем у кого душа лежит к играм — строго рекомендую подумать над поступлением). Сейчас занимаюсь разработкой проекта на Flutter, где помимо Dart также часто приходится делать платформенные интеграции со стороны iOS.

Это было вкратце. Дальше будет не вкратце 😁

#underhood
👍6🔥1🤔1
Мой путь в разработку мобильных приложений начался еще в старших классах, благодаря IT-школе Samsung, где нас в течение года обучали разработке под Android. Тогда еще на языке Java.

Тогда я понял, что нативный Андроид — это какая-то дичь, а мобилками я заниматься ни в жизни не буду. Все эти XML’ки и манифесты показались молодому школьнику настолько душными, что для того, чтобы хоть как-то сдать выпускной проект, я освоил игровой движок, с горем пополам написал небольшую игрулю и успешно защитился. В общем чо угодно, лишь бы не сталкиваться с нативной Android разработкой. Да я и сейчас нахожу её довольно унылой, и если где-то требуется интеграция со стороны Android – стараюсь обтекать такие задачи.

Дальше последовал универ и первый курс, где мы с кайфом кодили на Python и писали запросики на SQL. Казалось бы, есть негативный опыт мобильной разработки, есть базовые навыки серверной разработки, идти бы в бекенд и не париться. Но в ходе одной из лекций по проге препод случайно обронил слова, что если вы знаете Angular — то у вас есть работа, и я почему-то решил, что мне пора во фронтенд.

Хз почему именно эти слова засели на моей подкорке, но этим же летом я сел плотно изучать веб, работу под линухом, и конечно же JavaScript с Angular (тогда еще первым). Молодой задор, набитый энергосами холодос, и мечта о своей первой работе в IT. Красота, в общем. Апофеозом этой истории стал мой первый собес, где мне предложили работу на React Native, ибо вакансий по Angular у них не оказалось. То, что я об этой технологии слышал впервые, никого не смутило, поэтому мы ударили по руками и я поехал домой читать что это вообще такое. Когда я увидел, что это снова мобильная разработка, сюрприз был мягко говоря неприятным. Но ёма, это была моя первая работа! А значит надо было поскрежетать зубами и сесть читать документацию. Так началось моё знакомство с React Native.

#underhood
😁6👍5🔥2👎1
А, ребята, квик фикс, накатываю на прод как есть. Я, оказывается, не умею считать)
2022 - 2017 = 5. 5 лет опыта 😄
😁12
Следующие 2-3 года я занимался разработкой на React Native, сначала в одной месте, потом в другом. Принял участие в куче разных проектов, были и такие, которые провел от старта до релиза самостоятельно, будучи околоджуном. Не сказать, что это были какие-то выдающиеся проекты, особенно в техническом плане, но они работали и попали в сторы.

Были и проекты с дедлайном «вчера», разработанные по сути за выходные. Самое удивительное, что один такой проект до сих пор жив, поддерживался какое-то время после залива и всё еще может быть скачан из стора.

Параллельно рос и скилл, а хотелки от «штоб работало» росли до «чтоб было плавненько, анимашки там, жесты всякие и боси-тоси». Так я прожил с React Native пару добрых лет, пока Google не внес в наши отношения разлад, релизнув в декабре 18-го года свой Flutter.

Первой реакцией было «да кто такой этот ваш Flutter?!». Но постепенно, шумиха сделала своё дело, и я посмотрел релизную презентацию, где в том числе представили приложение The History of Everything — оно и сейчас есть в сторе, советую скачать. Это был отвал башки. Сложно было представить, как такое может быть разработано на том же React Native. Это было то, что продало мне Flutter. Скачав это приложение сейчас, я вижу некоторые огрехи по перфомансу, но блин, это было почти 4 года назад! Держите в голове, что это было на самом релизе, а с тех пор была проделана титаническая работа. Возможностей стало еще больше, и работать это стало сильно лучше.

#underhood
🔥5
Где-то тогда же в начале 19-го года я начал эксперименты с Dart & Flutter. Именно там по случайному стечению обстоятельств появился проект, где были интересные хотелки касаемо визуала, и я рискнул предложить затащить этот проект на Flutter. Почему-то руководству эта идея показалась удачной, и мы начали разработку.

Не скажу, что получилось хорошо, скорее первый блин комом, тем более первый год после релиза Flutter страдал от мерзких болячек и постоянно подталкивал меня вернуться на RN, но это был полезный опыт. С тех пор на том месте мы реализовали еще несколько проектов на Flutter, уже не испытывая желания вернуться к RN, а летом прошлого года я перекатился в команду Мерка, где оказался на проекте Tonal.

#underhood
👍1
Tonal — это дофига умный тренажер с ИИ, + у него есть чуть менее умное приложение-компаньон. Мне безумно нравится эта штука. Настолько, что если вы чисто случайно окажетесь в каком-нибудь из офисов Мерка – то я прям настоятельно рекомендую попробовать её на практике. А заодно и мобильное приложение поклацать, чо, зря пишем что ли.

В общем, как можно было догадаться, мобильное приложение Tonal’а написано на Flutter, а я один из Flutter разработчиков, которые на данный момент над ним трудятся. Главный плюс данного проекта для меня состоит в том, что он уже давно в релизе, все главные фичи запилены, а новые AAA фичи придумываются не каждый день, поэтому у нас остается пространство для интересных задач, которые редко встретишь на каком-нибудь заказном проекте, со сроком разработки полгода. Если раньше главным скиллом было поднять приложение с предсказуемым функционалом за минимальный срок, то теперь сроки не жмут, а задачи стали сильно разнообразнее. В том числе я занимаюсь задачами, требующими интеграцию со стороны iOS. Это мои любимые ❤️

И на самом деле я даже не знаю, что еще можно рассказать в рамках такого вот вводного дня. Если у вас есть вопросы, милости прошу в комментарии. Если же нет, то я наверное дальше я начну писать вещи поинтереснее, и немного затрону тему завтрашнего дня. Что думаете?

#underhood
8👍2
Смотрим в завтрашний день сегодня?
Anonymous Poll
38%
Давай
42%
Не трогай, это на завтра!
20%
Всё равно, я мимо проходил
По итогам нашего с вами небольшого голосования кворум не набрался, поэтому на данном этапе предлагаю поставить запятую и продолжить завтра. Если что, я тут до конца дня, не стесняйтесь писать в комменты. А с постами на сегодня всё)
Stay tuned, всех обнял
🔥8👎1
И снова здравствуйте. С места в карьер, сегодня у нас по плану идут оды Flutter’у. Но мне кажется, что просто рассказать, какой он хороший, как-то недостаточно. Лучше это будет чувствоваться на контрасте, поэтому сначала расскажу вам, какие проблемы у меня были с React Native 😈

Сходу обозначу, что если вы любите JS, вам нравится складывать мапу с массивом и получать 0, а основное направление — это веб, то можете игнорировать моё дальнейшее брюзжание. Без шуток, мне лично нравится кодить на Swift и копаться в XCode, не мне вас судить. Так вот, если вы балдеете с JS, пишите фронтенд на своём уютном React’е, но однажды к вам пришли и сказали: «айда писать мобилку», а вы сказали: «а чо бы и нет», — то это прекрасно. Возможность написать мобильное приложение, вообще не погружаясь в мобильную специфику и почти не изучая ничего нового — это то, за что мы должны быть благодарны Facebook*.

Вопросы начинаются, когда RN становится основным инструментом разработчика, а написание мобилок занимает 100% рабочего времени. Не потому, что приложения, написанные на RN, плохие. Вообще нет, на RN можно написать ультра-крутые штуки. Прост как по мне, это бессмысленно. Если вы хотите развиваться в мобилках, готовы вкладывать в это время и силы, то зачем оставаться с технологией, которая при сравнимом результате предоставляет куда менее приятный DX, а местами ограничивает в возможностях? У меня лично сложилось впечатление, что React Native меня просто не уважает)

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

Ладно, хватит полемики, дальше приведу конкретные примеры, почему мне с RN было не по пути.

#underhood

*принадлежит Meta, признанной в РФ экстремистской организацией.
👍8
Итак, пункт первый. Сам по себе React Native достаточно ограниченный. Я понимаю, когда чтобы отрисовать географическую карту, или показать вебвью, нужно подтянуть библиотеку, это ок. Но в RN библиотеками нужно дотягивать и какие-то совсем базовые вещи, вроде анимаций.

Чтобы делать крутые, кастомные анимации в React Native, да еще и завязанные на жестах, вам необходимы дополнительные библиотеки: react-native-reanimated и react-native-gesture-handler. У RN есть и собственная система для создания анимаций и работы с жестами, но она не тащит. Коробочные подходы опираются на бридж, и гоняют по нему данные каждый кадр, что приводит к заметным просадкам. Есть конечно оптимизация в виде флага useNativeDriver, но его использование весьма ограничено. Я не могу с его помощью анимировать ширину и высоту, цвет, и многие другие параметры. «Мы позволим вам делать анимации в 60 фпс, но не везде и не всегда». Ну что ж, спасибо конечно, но небольшое.

Чтобы решить эту проблему, гениальные ребята запилили пару либ, упомянутых выше. Эти либы умеют трекать жесты и делать анимации полностью на стороне платформы (кажется, в среде RN принято говорить «в UI треде»). Когда я увидел такое волшебство в 18-ом году, это был подарок судьбы. Как говорится, технология, неотличимая от магии, особенно после превозмогания с Animated и попытками подгонять анимации под те, что позволяют использовать useNativeDriver.
Но то было тогда, а сейчас меня не покидает один вопрос: почему это сделали крутые ребята из опенсорса, а не Facebook*, и почему сам React Native всё еще не умеет также? Я могу понять, почему у RN нет встроенной навигации, философия у React такая, мол мы только рисуем, а дальше вы сами. Но анимации и жесты, как по мне, это настолько ультра-важные штуки для мобильной разработки, что без нормальной их поддержки как-то даже неуютно.

Также React Native не предоставляет из коробки возможности нарисовать что-то своё. Только композиция заранее прописанных нативных компонентов. Если вы хотите не просто вьюшки перемещать, но и кастомную красоту рисовать и морфить, то нужна еще какая-нибудь react-native-noscript или react-native-skia (А skia, на секунду, это графический движок в основе Flutter, смешно же).

#underhood

*принадлежит Meta, признанной в РФ экстремистской организацией.
👍4🤔1
Вас еще, кстати, не задолбала ремарка про экстремистскую организацию? Понимаю, меня тоже. А вот Google, между прочим, не экстремисты. Писали бы мы все на Flutter, и проблем бы таких не было. Подумайте об этом.

#underhood
😁9👍4
На счет списков. Когда я писал на RN в последний раз, ванильными средствами нельзя было сделать бесконечный список с разновысотными элементами, который бы при этом справлялся с отрисовкой при очень быстром скролле. Как я понимаю, за это время кардинально ничего не поменялось (поправьте, если ошибаюсь), зато появились библиотеки, решающие эту проблему, например https://shopify.github.io/flash-list/

Бенчмарк, кстати, выглядит многообещающе. Разумеется, если это правда)

#underhood
🔥1
Learn Once, write anywhere

Мне нравится этот слоган React Native. Он честный и ни на что не претендует. Никаких тебе “Write once, run anywhere”. И в общем-то это справедливо. Поскольку в RN за одним интерфейсом прячутся 2 совершенно разные реализации, никогда нельзя долго разрабатывать и дебажить лишь на одной оси, потому что когда вы запустите сборку под другую ось, вас будут ждать очень неприятные сюрпризы. Поехавшая верстка, неожиданное поведение, краши, что угодно.

Это, к слову, касается не только кода, за которым стоит какая-то нативная реализация. К JS у меня тоже есть вопросы. На разных платформах и в разных окружениях, приложение исполняется на различных JS движках, которые могут по-разному интерпретировать код. Понятно, что есть стандарты и каждый день вы такие сюрпризы находить не будете, но когда найдете – они будут незабываемы. Проблема воспроизводится только на iOS и только в релизе? Удачи с дебагом)

#underhood
👍1😱1