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

Познакомиться поближе: https://mercdev.com
Download Telegram
Случайно обзавелись амбассадором нашего мерча, представляете. Знакомьтесь, это Дима. Он брал бейсболку Мерка во время путешествия в Боснию и даже свозил ее на край света, в самое южную точку Южной Америки! 🏔🐧
9👍1
Код Меркури pinned «Underhood в канале с нашим фронтенд-разработчиком Артемием Кто скучал по формату, лапки вверх! На следующую неделю с понедельника по пятницу Артемий заберет у нас ключи от канала и будет вещать здесь от своего имени о фронтенд-разработке, кроссплатформе,…»
Чат-бот на сайте одной из канадских авиакомпаний страдая галлюцинациями выдал клиенту неверную информацию о возврате билетов. Когда клиент пытался вернуть билет по условиям чат-бота, компания заявила, что ИИ автономен (!) и клиенту надо было перепроверить информацию самостоятельно 🙃

После жалобы в регулятор авиакомпанию все-таки обязали частично вернуть деньги за билет пассажиру. Стоит хорошенько подумать, если вдруг решите ставить себе слишком умных чат-ботов в приложения, а то они правила на ходу изобретают.
😁2
Исчерпывающая статья о том, что из себя представляет Unicode и что здесь стоит знать каждому программисту: https://tonsky.me/blog/unicode/
1
UX-редакторы Apple опубликовали письменный Q&A c сессии ответов на вопросы на WWDC23.
Google выпустила коллекционную виниловую фигурку The Bot — робота с логотипа Android. Мам, купи!
Привет! Торшер на связи.
Шучу, это всего лишь я, Артем. За эту неделю постараюсь снабдить вас интересной, местами, холиварной, информацией из мира фронтенд-разработки. А ещё, расскажу о том, как живется мне и моим товарищам по поприщу. Подготовил для вас расписание постов 👇

Понедельник
Ржавеем: Electron скоро отправится на свалку цивилизации и почему всем нам срочно нужно учить Rust.
Вторник
Старый друг НЕ лучше новых двух: почему Expo будет править миром.
Среда
Вливайся: почему сила местного комьюнити так важна ИЛИ не пропусти свой билет в IT.
Четверг
Красивые пиксели: как сделать мультиплеерный красочный 3D экспириенс в вебе.
Пятница
Кто на новенького. Исповедь — каково это быть одним из самых молодых членов компании. Опыт или возраст.
19💘1
В Мерке, я занимаюсь всякого рода импровизациями. Если нужно построить что-то экспериментальное в короткий срок — это ко мне. Пишу фронт на React, придумываю бэкенд на Node.js, иногда притрагиваюсь к serverless, а по ночам, пока никто не видит, творю на React Native. В свободное время, я борозжу просторы Москвы (+-2500км), играю в игры и глажу кота.

Кота на фото зовут Рикки. Вы можете виртуально его погладить 👋
13🤗6🥰5
А ещё я люблю слушать музыку! (А кто нет?) Оставляю пару треков, чтобы вы смогли почувствовать мой вайб. В комментариях буду ждать ваши любимые :3

https://music.yandex.ru/album/160053/track/516565
https://music.yandex.ru/album/20695975/track/99200279
https://music.yandex.ru/album/16475484/track/85999040
6
Боль, депрессия, разочарование

Это те термины, которыми я бы описал мой опыт использования Electron.

За долгие годы существования Electron, приложения, созданные на нём, получали характеристики “медленный” и “прожорливый”. У разработчиков к нему тоже было немало вопросов.

Если вы не знаете, что такое Electron, кросс-платформа и программирование в целом, не переживайте, нейросеть подготовила для вас аналогию.

Представьте Electron.js как волшебный ящик инструментов, который помогает людям превратить свои рисунки и украшения в особые игрушечные домики для их компьютерных программ.

Electron.js, словно волшебный помощник, позволяет, даже начинающим разработчикам, создавать крутые и интересные компьютерные программы, используя инструменты, которые они уже знают, вместо того, чтобы тратить время на изучение новых, более сложных.
👍51
Боль

Начать проект, если ты новичок в платформе и ещё не освоился в экосистеме, очень трудно. Почему-то Electron выбрал путь комьюнити вместо консолидированного решения.

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

О, дивный старый мир библиотек!


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

Невероятно, но вот, всего лишь спустя день мы начали разрабатывать приложение. Но не переживайте — так продлится недолго. Как только нам понадобиться установить нашу первую нативную зависимость, тут-то мы и столкнемся с нашей первой проблемой. Потому что в 90% случаев установка проходит исключительно с помощью танцев с бубнами 🥁

Скорее-всего вам придется установить еще кучу инструментов, о которых не было сказано ранее. И приведет это к положительному результату только в том случае, если библиотека поддерживает Electron (неподдерживаемое ABI, проблемы на стороне сборщика и т.д.), в ином случае, нас ждет лишь сообщение об ошибке и горесть о потраченном времени.
👍2😭1
IPC и тайна философского камня

Все вызовы к бэкенду изолированы. Electron собственными руками убивает своё главное превосходство «одно приложение — одна платформа — один язык». Подаваясь нам в обертке моноязыкового решения, нас несознательно вводят в заблуждение. Шаткая надежда на работу в единой кодбазе разбивается о скалы изолированности. Каждый раз, добавляя новую функцию в бэкенд, вам придется расширять интерфейс IPC. Также само разделение между фронтендом и бэкендом довольно неосязаемое. Постоянно приходится следить: «а не занёс ли я бэкенд во фронтенд?».
Депрессия

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

Так как мы имеем дело с Node.js, который не очень-то заточен под разработку близкую к системе, то в результате мы получаем недостаток нативных зависимостей, ограниченную поддержку и малое комьюнити в этом направлении.

Вы найдете много хвалебных статей, в которых обязательно будет упомянуто, что Electron полностью покрыл нужды приложения относительно нативной части, но по факту, люди всего лишь использовали API, предоставленный самим Electron (Tray, Menu, Notification). Как только дело доходит до функционала, которого нет в Electron, дела становятся на порядок хуже.
Разочарование

Electron, несомненно, всё ещё одна из самых используемых технологий в мире десктопной кроссплатформы. Но насколько Electron был прорывным инструментом своих лет, настолько же сильно он редуцировал на фоне новых, более современных решений. Зная, что Electron имеет больше слабых сторон, чем сильных, я бы с опаской смотрел на него в качестве ключевой библиотеки для реализации настольного приложения.

− Большой размер бандла даже для самого крохотного приложения выливается в удорожание инфраструктуры для его распространения.

− Простота реверс-инженеринга делает поиск уязвимостей элементарным процессом, что выливается в ряд ключевых уязвимостей.

− Отсутствие возможности компиляции под мобильные платформы лишает разработчика свободы в выборе продакшн-пайплайна, что вынуждает работать команду над отдельным приложением в отдельной экосистеме, подготавливая индивидуальную инфраструктуру. А в случае, если команда не знакома с выбранным мобильным решением — вынуждает тратить лишнее время на подготовку и изучение.

− Отсутствие возможности максимально использовать ресурсы системы из-за особенностей JS делает Electron неповоротливым, монструозным здоровяком, который может не подойти для решения сложной задачи.
👍2
Вишенка на торте

Спустя 9 лет после релиза Electron, на горизонте появился новичок, который однозначно, требует внимания. Tauri — фреймворк, который буквально противопоставляется Electron во всех слабых сторонах последнего.

− В отличие от Electron, Tauri не поставляет движок отрисовки веб-контента, а использует предустановленный системой. Это позволяет сократить размер пакета с сотен мегабайт до всего лишь нескольких единиц.

Конечно же, это накладывает ряд определенных ограничений, но они несущественны относительно получаемой выгоды. Опять же, например, если ваша сфера опыта - это веб-разработка, то вы, наверняка, уже слышали про необходимость кросс-браузерных префиксов, различий в уровне поддержки браузерного API и необходимости учитывать различия в рендеринге.


− Вместо постоянной необходимости расширения интерфейса API бекенда, мы имеем дело со списком разрешенных нативных функций, который достаточно легко и быстро редактируется, а что главное, это не нужно делать абсолютно каждый раз, когда функционал вашего приложения меняется. Это устраняет разрозненность в приложении, возникшую из-за наличия прослойки в виде IPC. Всё наше приложение делится на две логические части: бэкенд на Rust и фронтенд на JavaScript. Нам достаточно вызвать Команду, описанную в Rust через шину. Это очень повышает скорость разработки.

− И наконец, чтобы начать разрабатывать приложение, достаточно одной команды: npm create tauri-app

Все эти сильные стороны делают Tauri мощным оппонентом и хорошей альтернативой Electron. Рекомендую, если и не мигрировать текущее приложение, то хотя бы попробовать использовать Tauri в следующем.
👍81
Старый друг НЕ лучше новых двух

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

Мне предстояло написать мобильное приложение. В тонкости нативной разработки, на тот момент мне погружаться не хотелось. Тем более за плечами у меня уже был кое-какой опыт в JS, поэтому выбор был очевиден — кросс-платформа. Сегодняшний день я целиком посвящу рассказу об этих библиотеках и своем опыте работы с ними.

Дисклеймер: всё написанное проходит через призму моих воспоминаний полученного опыта. Если ваш экспириенс с этими библиотеками разительно отличался, да и если вам просто есть, чем поделиться по теме, пишите всё, что думаете, в комментарии, обязательно всё обсудим.
👍5
Ionic Native (Cordova #1)

В то время состояние Ionic было слишком шатким. Множество изменений за короткий срок. Всё ломалось из-за отсутствия обратной совместимости, каждая новая мажорная версия предлагала новый подход к написанию приложения.

Комьюнити вокруг Ionic только начинало формироваться. То есть, чтобы получить помощь с установкой open-source плагина, нужно было реально постараться. К тому же, хорошие плагины зачастую не были open-source. Они тогда были на вес золота, да и продавались по баснословным ценам. Всё это делали Ionic очень непопулярным выбором для новичка.
Cordova (Cordova #2)

Cordova — нижний слой Ionic того времени. Всё, что нужно было, чтобы начать разрабатывать приложение — знание HTML, CSS и JS. Плагины имели 100% поддержку оболочки. Чем не сказка?

Производительность. Вы получаете довольно медленный, нагруженный дополнительным функционалом браузер, в котором довольно трудно отобразить серьёзный UI с большим количеством FPS. К тому же, Android смартфоны тогда не могли похвастаться ничем внушительным.
Tabris (Cordova #3)

Наверное, вряд ли вы что-то слышали про них. Но если это не так, моё уважение 🎩

Использовал их фреймворк в период его активной разработки (~2018 год). Он нравился мне своей простотой: UI было достаточно удобно и быстро писать, хорошая документация, быстрая поддержка, обратная совместимость со всеми не UI-плагинами от Cordova.

Историческая справка: JSX библиотека тогда не поддерживала (да и на тот момент опыта с React у меня ещё не было), приложение писал на голом JS.


Время шло, на некоторое время я переключился с мобильных приложений на написание бэкенда. Спустя немного времени мне пришлось опять подбирать новый инструмент — Tabris уже начинал умирать, и его функционала стало ощутимо не хватать.
👍2