evilmartians | Technologies

Telegram-канал evilmartians - Evil Martians

3496

Канал Злых марсиан (https://evilmartians.com), неофициальный. Твиттер: https://twitter.com/evilmartians_ru Стартапы, веб-разработка, интернет-бизнес, UI дизайн, бэкенд (#ruby #rails #golang #rust), фронтенд (#javascript), #ios, #devops (#kubernetes)

Subscribe to a channel

Evil Martians

Продолжение (и окончание) серии про ViewComponent от GitHab от нашего backend-инженера Александра Байгельдина!

В этой части вы на живых примерах увидите, как ViewComponent используется в Марсианских проектах и, будем надеяться, пополните свой арсенал новыми крутыми техниками для работы с компонентным подходом в Ruby on Rails-приложениях.

https://evilmartians.com/chronicles/viewcomponent-in-the-wild-supercharging-your-components?utm_source=telegram&utm_medium=social&utm_campaign=prodolzhenie-i-okonchanie-serii-pro-view

Читать полностью…

Evil Martians

Новый сайт, новые Марсиане?

Старые добрые Злые марсиане представляют наш новый вебсайт, который подробно расскажет о том, чем мы занимаемся и какие open source проекты создаем. В совершенно новом дизайне, разумеется.

Посмотрите на новый Марс и найдите все пасхалочки. По старому адресу: https://evilmartians.com/

Читать полностью…

Evil Martians

Наша imgproxy-команда — автор Сергей Александрович и продакт-менеджер Марина Наперстак — в гостях у подкаста It Way. Все в деталях о процессинге изображений, применениях продукта и фичах — как в open source, так и в Pro версии.

https://www.youtube.com/watch?v=zVJAgnz1_Eo

Читать полностью…

Evil Martians

Пояснительная бригада в лице марсианского арт-директора Романа Шамина и главного по фронтенду Андрея Ситника прибыла в подкаст IT Way, чтобы рассказать про один из наших свежих опенсорс-проектов для веб-разработчиков — цветовой миксер для OKLCH.

Зачем разработчикам oklch(), как его использовать, какие есть нюансы при работе с этим цветовым пространством

https://www.youtube.com/watch?v=kyzaHLvAG0o

Читать полностью…

Evil Martians

P3 может стать новой ретиной для web. Но поскольку эта область очень новая, в ней не хватает инструментов и гайдов.

Наш фротенд-лидер Андрей Ситник написал руководство по цветам P3 в SVG и объяснил, чем P3 может быть полезен.

http://amp.gs/jBZVk

Читать полностью…

Evil Martians

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

https://www.youtube.com/watch?v=5e2Pma2b2yQ

Читать полностью…

Evil Martians

Наконец-то публикуем в марсианском блоге вторую часть захватывающей истории iOS-инженера Максима Скорынина про Object Detection в экосистеме Apple!

Сможет ли Максим обучить модель? Как он будет анализировать и сравнивать все результаты? Получится ли у него создать демо-приложение, которое распознает объекты на видео в реальном времени? Переживаем за него!

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

http://amp.gs/jZkMh

Читать полностью…

Evil Martians

Продолжаем «мобильную» тему в марсианском блоге: iOS-инженер Максим Скорынин объясняет, как реализовать Object Detection с помощью нативных инструментов Apple.

В первой части этого текстового мастер-класса знакомим с инструментами, рассказываем о сборе данных, их аннотировании для обучения и о том, как лучше всего экспортировать датасет — и все это с нуля!

http://amp.gs/jZIgI

Читать полностью…

Evil Martians

А вы знали, что существует черновик стандарта-RFC для UUID версий 6, 7 и 8?

Большинство людей понимает под UUID его четвёртую версию, генерируемую случайным образом. Но уже давно существует ещё и детерминированные версии — основанные на времени и MAC-адресе UUIDv1 и v2, а также UUIDv3 и v5, основанные на хэшировании.

Тем не менее, на практике в современном распределённом мире у всех этих версий есть проблемы:

1. случайно распределённые значения UUIDv4 плохо сказываются на производительности и размере BTree-индексов в базах данных (см. например, UUIDs are Popular, but Bad for Performance от Percona). Эта же проблема есть у UUID версий 1 и 2, так как…
2. …хоть UUIDv1 и UUIDv2 и основаны на времени, но при кодировании метки времени её компоненты оказываются перемешаны, поэтому идентификаторы нельзя сравнивать друг с другом «в лоб», побайтово, что, как минимум, неудобно.
3. А ещё в UUIDv1 и UUIDv2 должны использоваться реальные MAC-адреса машин, генерирующих идентификаторы, что, с одной стороны, не очень хорошо с точки зрения приватности, а с другой — уже и вовсе странно в век контейнеризации.

При всём этом UUID всё же слишком привлекательны, чтобы их не использовать: возможность генерировать идентификаторы независимо в приложении или распределённой базе данных, большое количество возможных значений (а значит и пренебрежимо малая вероятность коллизий при должной реализации), и всё это помноженное на действительно универсальную поддержку формата.

Сторонних решений, исправляющих эти недочёты, есть уже немало. Из более совместимых c UUID можно выделить ULID, но есть и множество других форматов: например, Snowflake или EID.

Авторы грядущего RFC создавали новые версии UUID с оглядкой на существующие решения (полный список можно посмотреть в черновике), но, конечно же, сохраняя совместимость с существующими UUID (вы же знали, что не все биты в UUIDv4 случайны?)

Что внутри?

• UUIDv6 — максимально похож на UUIDv1 (тот же таймстамп для григорианского календаря), но без переставления частей таймстампа (для сортировки) и со случайными данными вместо MAC-адреса.
• UUIDv7 — использует Unix timestamp (36 бит) с опциональной точностью до милли-, микро- или наносекунд (12, 24 или 38 бит), clock sequence (12, 14 или 8 бит) и произвольные данные.
• UUIDv8 — «свободный» формат, не регламентирующий, какие метки времени использовать. Можно использовать любые до 60 бит, главное условие — монотонное возрастание по времени. Ну, clock sequence (12 или 8 бит) и произвольные данные (62 или 54 бита).

Что же станет стандартом де-факто через несколько лет? Или UUIDv4 не победить? Поживём — увидим!

Читать полностью…

Evil Martians

Один из самых крупных Brainwashing для корпоративных клиентов состоялся на днях: провели трехдневный интенсив по разработке на Ruby on Rails для большой инженерной команды Сбермаркета. Участвовали Марсиане из бэкенда и фронтенда.

Подробнее о наших курсах (которые мы проводим не только для корпоративных клиентов, но и для всех желающих), можно узнать тут: https://brainwashing.pro/

Читать полностью…

Evil Martians

Ирина Назарова, СЕО Злых Марсиан, в подкасте «Экономика на слух» честно рассказывает о том, насколько мы злые, каким проектам мы помогаем, а каким — нет, и как организовать работу в полностью распределенной команде (а мы делали удаленку еще до того, как это стало мейнстримом).

http://amp.gs/jmrVg

Читать полностью…

Evil Martians

Открываем новую для себя вакансию — Android Engineer, чтобы расширить нашу мобильную команду и прокачать Android-скилы (помимо уже привычных нам мобильных проектов на iOS и React Native).

Как и на других вакансиях, продолжаем практику инженеро-центричности и человеческого отношения к Марсианам: помогаем с саморазвитием и вашим опенсорсом, распределяем прибыль между сотрудниками, даем возможность переехать в Европу (скоро!), США, Японию (туда, где у нас офисы) и многое другое.

Эта и другие вакансии (бэкенд, фронтенд): http://amp.gs/jmGe2

Читать полностью…

Evil Martians

В недавно вышедшей Ruby on Rails 7.0 есть множество нововведений: больших и малых, революционных и не очень, полезных и противоречивых.

Сегодня расскажем об одном противоречивом: полезном, но очень опасном при неаккуратном использовании. Знакомьтесь, метод invert\_where в скоупах ActiveRecord.

С одной стороны, это очень удобная штука для быстрого получения обратных условий для выборки данных из базы: Post.published.invert\_where и вуаля.

Но проблема кроется в том, что инвертируются все where-условия, наложенные на скоуп, включая те, что были добавлены при сцеплении скоупов и в default\_scope (который многие считают злом и небезосновательно).

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

Больше страшных примеров можно найти в этом блоге: blog.kiprosh.com/side-effects-of-activerecords-new-feature-invert_where-in-rails-7

А советы по безопасному использованию — в этом: jbhannah.net/articles/rails-7-using-invert-where-safely

И есть предложение написать копа в RuboCop-Rails, который будет помогать отлавливать потенциально небезопасное использование: github.com/rubocop/rubocop-rails/issues/470 (Кто хочет поконтрибьютить в опенсорс? Вот хорошая задача!)

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

Читать полностью…

Evil Martians

Почему запрос к базе данных на одних и тех же данных локально может работать быстро, а на стейджинге (или даже на продакшене) — медленно?

Марсианский инженер Андрей Новиков разбирает один такой случай в короткой статье, из которой можно чуть больше узнать о том, как могут выполняться запросы в системах управления базами данных и что на это влияет (слова-спойлеры: селективность, статистика).

Читайте: habr.com/ru/post/597651.

Читать полностью…

Evil Martians

«Они убили Go», или «Пусть лучше Go прогнется под нас», или… Ну, вы поняли — в Go дженерики подвезли (в на днях вышедшей 1.18.beta1):

http://amp.gs/jt44S

Читать полностью…

Evil Martians

Новая увлекательная серия статей в Марсианском блоге про ViewComponent от GitHub!

В первой части backend-инженер Александр Байгельдин дает общий обзор библиотеки и интересного подхода, который она предлагает для разработки приложений на Ruby on Rails.

https://evilmartians.com/chronicles/viewcomponent-in-the-wild-building-modern-rails-frontends?utm_source=telegram&utm_medium=social&utm_campaign=novaya-uvlekatelnaya-seriya-statey-v-marsi

Читать полностью…

Evil Martians

Browserlist, одна из самых популярных OSS-библиотек зависимостей для фронтенда, с которой работают Autoprefixer, Babel, ESLint, Next.js, PostCSS и Webpack, впервые появилась на Product Hunt! Будем рады вашей поддержке и голосам!

Browserslist определяет и делает доступным список целевых браузеров между разными фронтенд-инструментами для сборки. У этого Марсианского open source проекта уже 30 контрибьюторов и более 11К звезд на GitHub!

https://www.producthunt.com/posts/browserslist

Читать полностью…

Evil Martians

Martian Grotesk — первый коммерческий шрифт Злых Марсиан — наконец-то доступен на MyFonts.

https://www.myfonts.com/collections/martian-grotesk-font-martian-fonts

Это большое семейство шрифтов без засечек, которые мы специально разрабатывали для дизайнеров и веб-разработчиков. В «семье» есть вариативный шрифт с 2 осями вариативности и 63 стиля: от Condensed до Ultra Wide, от Thin до Ultra Black.

Сейчас на покупку Martian Grotesk действует скидка 60% — всего от $5,7 за стиль!

Поделитесь ссылкой с вашей командой дизайнеров.

Читать полностью…

Evil Martians

Шрифт Martian Mono теперь в Homebrew! Спасибо open source-коммьюнити — а именно Джулиену Барбею и Миккалю Мэттьюсу!

Читать полностью…

Evil Martians

Вышел еще один марсианский проект, который поможет дизайнерам и фронтендерам.

Наш фронтенд-лидер Андрей Ситник и арт-директор Роман Шамин представляют OKLCH-миксер — новый проект для веб-разработчиков, который позволяет задавать и конвертировать цвета и заранее подготовиться к будущему с цветовым пространством P3.

Приготовьтесь к крышесносящей цветовой палитре!

Подробности — в Твиттер-треде: https://twitter.com/andrey_sitnik/status/1524378933818449920

Читать полностью…

Evil Martians

Во втором выпуске AnyCasts его ведущий, главный по бэкенду в Злых Марсианах, Владимир Дементьев, подробно рассказывает, как подготовиться к внедрению функции direct messaging в приложение с помощью AnyCable, включая добавление пользователей, процесс аутентификации и отображение профилей пользователей. (Для последнего мы будем использовать небольшие вкрапления Turbo Frames и Stimulus JS)

https://www.youtube.com/watch?v=cBtSjNuJFLE&t=5s

Читать полностью…

Evil Martians

Через неделю, в следующий четверг, 24 числа, в 19:20 марсианин Андрей Новиков выступит в Твери на митапе Трамплин № 8 с докладом про различные нюансы запуска приложений в Kubernetes.

Покупайте билеты в Тверь и регистрируйтесь на митап: trampoline.to/event/trampoline-8

Читать полностью…

Evil Martians

Обновили один из самых популярных постов в блоге — статью про фавиконки от нашего ведущего фронтендера Андрея Ситника.

Потому что в 2022 году они точно так же актуальны, как были в 2021-м.

http://amp.gs/jmQb5

Читать полностью…

Evil Martians

✨ Полностью обновили сайт imgproxy, быстрого и безопасного сервера для обработки изображений — https://imgproxy.net/

Подробно рассказываем обо всех фичах OSS и Pro-версий и тарифных планах, даем возможность попробовать все способы оптимизации картинки прямо на сайте.

Читать полностью…

Evil Martians

Новая марсианская бэкенд-вакансия (нет, не рубисты) — нужен Go Backend Engineer!

И ищем его или ее не на клиентские проекты, а впервые предлагаем в команде Марсиан работать над развитием imgpoxy, быстрого и безопасного сервера для процессинга изображений. Его используют по всему миру — от Photobucket и eBay до тысяч стартапов.

Вакансия тут: http://amp.gs/jmNpK

Продукт здесь: http://amp.gs/jmNp3

Читать полностью…

Evil Martians

AnyCable Pro помог Vito, платформе для проведения онлайн-мероприятий, решить проблемы масштабирования и провести несколько real-time мероприятий, включая конференцию Nuxt Nation. Марсиане разработали инфраструктуру для деплоя AnyCable и помогли команде Vito оптимизировать производительность платформы, чтобы подготовиться к крупным конференциям.

А когда во время Nuxt Nation возникли проблемы, Марсианам удалось все уладить буквально в течение часа благодаря приоритетной поддержке AnyCable Pro.

Описали всю историю тут: http://amp.gs/jm46d

Читать полностью…

Evil Martians

Для начинающих AR-разработчиков подготовили must-read пост в нашем блоге! Марсианский iOS-инженер Расс Сент-Амант описывает 7 ключевых AR-функций, которые нужны разработчику, чтобы сделать эту магию дополненной реальности по-настоящему реальной.

http://amp.gs/jtbbY

Читать полностью…

Evil Martians

По традиции, на католическое Рождество, вышла новая версия Ruby, Ruby 3.1.0:

http://amp.gs/jtN0G

Главное новшество релиза — YJIT, JIT-компилятор, разработку которого спонсирует Shopify, одно из крупнейших (или крупнейшее?) Rails-приложение в мире. YJIT создавался с прицелом на ускорение "real-world" Rails-приложений, и прочитать про него можно здесь:
http://amp.gs/jtN0x

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

Стоит отметить, что Rails 7 пока не работает с Ruby 3.1.0: можно подождать версии Rails 7.0.1, или воспользоваться версией напрямую из git.

Читать полностью…

Evil Martians

У нашего проекта AnyCable пополнение — встречайте скринкасты AnyCasts, посвященные разработке real-time приложений на Ruby и не только.

В открывающем эпизоде Владимир Дементьев пишет с нуля прототип на Rails 7, Hotwire и AnyCable:

http://amp.gs/jtd7F

Читать полностью…

Evil Martians

В преддверии выхода новой версии Руби предлагаем вам посмотреть недавний доклад Владимира Дементьева с тверского митапа Trampoline. О том, чем и как жив Руби (и, внезапно, сколько ему осталось 😮):

https://www.youtube.com/watch?v=7Q51UKZSLwU

Читать полностью…
Subscribe to a channel