Pull to refresh
0
0
Send message

Оптимизация микросервиса на Go на живом примере

Reading time17 min
Views20K

Всем привет. Меня зовут Нещадин Иван, и я расскажу про оптимизацию одного из микросервисов Авито на Go. История построена вокруг различных инструментов, которые доступны в языке, и пойдёт от простых примеров к более сложным.


Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments41

Скамеры против скальперов: как продавцы фотографий топовых видеокарт от Nvidia наказывают спекулянтов на eBay

Reading time4 min
Views42K

В описании и заголовке лота честно указано — продается картинка, а не реальный товар. Но все равно покупатели находятся, и это не люди

Термин «скальперы» в применении к пользователям eBay обозначает спекулянтов, которые в момент появления редких товаров скупают их все, а затем продают втридорога. Например, 5 ноября стартовали продажи процессоров Ryzen 5000. Их почти сразу раскупили в большинстве стран, а затем выставили на продажу уже во второй раз по двойному и даже тройному ценнику. То же самое произошло с видеокартами Nvidia GeForce RTX 30, о которых мы недавно писали. Как бы ничего противозаконного, но страдает обычный покупатель.

Кто такие скамеры, объяснять на Хабре не нужно. Но есть особенная разновидность таких мошенников — те, кто вместо реального товара на eBay выставляет его изображения. Как правило, для этого покупается хороший аккаунт с большим количеством отзывов или при помощи покупок в $1 прокачивается нулевой аккаунт. Далее — дело техники. Механизмы безопасности eBay помогают обнаруживать случаи обмана, но далеко не все и не всегда. Сейчас скамеры направили свои усилия на обман скальперов, и небезуспешно: у многих получается продать фотографию топовой видеокарты за сотни долларов. И здесь «все без обмана», в описании честно указано, что продается картинка. Как и почему это работает? Срываем покровы.
Читать дальше →
Total votes 63: ↑62 and ↓1+61
Comments78

Скрытая цена CSS-in-JS-библиотек в React-приложениях

Reading time11 min
Views17K
В современных фронтенд-приложениях технология CSS-in-JS пользуется определённой популярностью. Всё дело в том, что она даёт разработчикам механизм работы со стилями, который удобнее обычного CSS. Не поймите меня неправильно. Мне очень нравится CSS, но создание хорошей CSS-архитектуры — задача не из простых. Технология CSS-in-JS может похвастаться некоторыми серьёзными преимуществами перед обычными CSS-стилями. Но, к сожалению, применение CSS-in-JS способно, в определённых приложениях, привести к проблемам с производительностью. В этом материале я попытаюсь разобрать высокоуровневые особенности наиболее популярных CSS-in-JS-библиотек, расскажу о некоторых проблемах, которые иногда возникают при их использовании, и предложу способы смягчения этих проблем.


Читать дальше →
Total votes 40: ↑39 and ↓1+38
Comments5

Рекомендации по дизайну UX мобильных игр

Reading time9 min
Views23K
image

Уже более 10 лет я работаю гейм-дизайнером в очень успешных компаниях (старшим гейм-дизайнером в Matific, ведущим гейм-дизайнером в TabTale, владельцем Lookandfeel Games), и всё это время обладал привилегией и возможностью использования данных, полученных от сотен миллионов пользователей со всего света. Настало время поделиться моими знаниями с миром.

Долгое время гейм-дизайнеры использовали данные, полученные при плейтестинге, сеансах тестирования usability и в отчётах, чтобы обеспечить максимальное удобство пользования своим игрокам и продуктам. Работа в больших игровых компаниях хороша тем, что у тебя есть специализированный отдел анализа данных игр, сообщающий о плюсах и минусах, дающий советы и знакомящий с тенденциями.

«Жаль вас разочаровывать, но ваша идея не сработала».


Разочаровывать? С какой стати! Спасибо за то, что дали мне возможность переосмыслить свой дизайн, чтобы я не заблуждался в его правильности. Как иначе бы я мог совершенствоваться? Как иначе достигнуть мастерства? Благодаря анализу данных хорошие идеи дублируются и применяются в моих следующих проектах, а «пробные шары» в соответствии с ним улучшаются или отбрасываются. Вот «библи»я моих рекомендаций с уроками, почерпнутыми из 250 с лишним игр. Данные подтвердили, что они повышают монетизацию, удерживание игроков (retention), игровой процесс и вовлечённость (engagement).
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments5

Революция или боль? Доклад Яндекса о React Hooks

Reading time16 min
Views28K
Меня зовут Артём Березин, я разработчик нескольких внутренних сервисов Яндекса. Последние полгода я активно работал с React Hooks. По ходу дела возникали некоторые сложности, с которыми приходилось бороться. Теперь хочу поделиться этим опытом с вами. В докладе я разобрал React Hook API с практической точки зрения — зачем нужны хуки, стоит ли переходить, что лучше учитывать при портировании. В процессе перехода легко наделать ошибок, но избежать их тоже не так сложно.



— Хуки — это просто еще один способ описывать логику ваших компонентов. Он позволяет добавить к функциональным компонентам некоторые возможности, ранее присущие только компонентам на классах.

Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments72

TCP против UDP или будущее сетевых протоколов

Reading time27 min
Views170K
Перед каждым сервисом, генерирующим хотя бы 1 Мбит/сек трафика в интернете возникает вопрос: «Как? по TCP или по UDP?» В прикладных областях, в том числе и платформах доставки уже сложились предпочтения и традиции принятия подобных решений.

По идее, если бы, к примеру, однажды один ленивый разработчик не попробовал развернуть свой ML на Python (потому что только его и знал), мир скорее всего никогда не проникся бы такой любовью к презренному «супер-джава-кодерами» языку. А сегодня слабости этого языка в прошлом контексте применения безоговорочно обеспечивают ему первенство в развертывании и запуске многочисленных майнерских А/Б.

Сравнивать можно многое: ARM с Intel, iOS и Android, а Mortal Kombat с Injustice. И нарваться на космический холивар, поэтому вернемся к теме доставки огромных объемов разноформатного контента.

Десять лет назад все были абсолютно уверены, UDP — это что-то про негарантированную доставку. Если нужен надежный протокол — это TCP. И вопреки традициям в этой статье мы будем сравнивать такие, кажущиеся несравнимыми вещи, как TCP и UDP.


Осторожно, под катом 99 иллюстраций и схем и все важные.
Total votes 162: ↑159 and ↓3+156
Comments75

HolyJS 2019: Разбор задач от компании SEMrush (Часть 2)

Reading time7 min
Views2K


Это вторая часть разбора задач от нашего стенда на конференции HolyJS, прошедшей в Санкт-Петербурге 24-25 мая. Для большего контекста рекомендуется сначала ознакомиться с первой частью настоящего материала. А если Countdown Expression уже пройден, то добро пожаловать на следующий этап.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments0

Полное руководство по useEffect

Reading time45 min
Views249K
Вы написали несколько компонентов с использованием хуков. Возможно — даже создали небольшое приложение. В целом результат вас вполне устраивает. Вы привыкли к API и в процессе работы обнаружили несколько неочевидных полезных приёмов. Вы даже создали несколько собственных хуков и сократили свой код на 300 строк, поместив в них то, что раньше было представлено повторяющимися фрагментами программы. То, что вы сделали, вы показали коллегам. «Отлично получилось», — сказали они о вашем проекте.


Но иногда, когда вы используете useEffect, составные части программных механизмов не особенно хорошо стыкуются друг с другом. Вам кажется, что вы что-то упускаете. Всё это похоже на работу с событиями жизненного цикла компонентов, основанных на классах… но так ли это на самом деле?
Читать дальше →
Total votes 30: ↑29 and ↓1+28
Comments6

Отчёт с митапа «Go в продакшене»: видео, фото, презентации

Reading time2 min
Views8.8K


Всем привет! 23 сентября мы отлично провели время в московском офисе Mail.Ru Group на митапе сообщества Go в продакшене. Собрали для вас фото, видео и презентации.
Total votes 30: ↑28 and ↓2+26
Comments10

Легенды IT: Почему провалился Newton и виновата ли в этом русская технология распознавания

Reading time6 min
Views8.2K
Есть в истории «Параграфа» — первого стартапа из России, покорившего мир — один парадокс.

Мировой успех российской фирме принесла инновационная технология распознавания, которую купила Apple, чтобы использовать в своем легендарном девайсе Newton. При этом Newton в итоге провалился, и многие обвиняли в неудаче именно технологию распознавания, созданную русскими учеными.



Основателю компании Степану Пачикову до сих пор припоминают работу Newton, далекую от совершенства. Ну и когда я рассказал на «Хабре» о том, что пишу о «Параграфе» книгу, эта тема конечно тут же всплыла.

Как может передовая разработка так разочаровать пользователей? Почему на самом деле Newton не взлетел? И, главное, виновата ли на самом деле команда российских ученых в его провале?

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

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

Не одна и не две ошибки привели проект к провалу. И мне представляется, что их каталог станет отличным руководством к действию «от противного» для всех, кто и сегодня пытается изобрести что-то действительно стоящее и революционное.

Так что я решил такой каталог ошибок составить. И вот что получилось.
Total votes 18: ↑15 and ↓3+12
Comments7

Keys in React. Готовим правильно

Reading time15 min
Views77K

Сегодня поговорим об атрибуте key в React. Часто разработчики, которые только начинают использовать React, не придают большого значения атрибуту key. А зря…


image
Что говорит уточка, когда узнала, что ты не используешь key


Чтобы представить работу ключей полностью и с различными кейсами, рассмотрим план:


  1. Reconciliation
  2. Реиспользование ключей и нормализация
  3. Использование key при рендере одного элемента
  4. Работа с ключами при передаче компоненту children
Total votes 33: ↑33 and ↓0+33
Comments1

TOП-10: разбор лучших докладов HolyJS 2017 Moscow

Reading time19 min
Views17K

Действуем по старой схеме: я для вас отсматриваю подряд 10 докладов (бесплатно доступных на YouTube), делаю короткое описание содержимого, чтобы неинтересное можно было выбросить. Кроме того, с сайтов собираю ссылки на слайды и описания. Полученное сортирую и выдаю в порядке увеличения рейтинга — то есть в самом низу будет самый крутой доклад. Оценки — это не лайки на YouTube, а собственная оценочная система, она круче лайков.


Предыдущие части:



На этот раз объектом изысканий будет HolyJS 2017 Moscow — известная JavaScript-конференция, четвёртая по счёту. Более 600 JS-разработчиков собрались под одной крышей для того, чтобы обсудить настоящее и будущее JavaScript-сообщества с мировыми экспертами: Douglas Crockford, Lea Verou, Martin Splitt и так далее.


Осторожно, трафик! В этом посте присутствует огромное количество картинок — слайдов и скриншотов с видео в формате 720p.

Disclaimer: Все описания являются моим личным мнением. Всё написанное — плод моего больного воображения, а не искажённые цитаты докладчиков (это предостережение написано для того, чтобы докладчики меня не побили).

Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments11

Построение процесса бизнес-анализа в проектах по разработке BI-приложений с продвинутой визуализацией

Reading time8 min
Views10K

Disclaimer


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



Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments2

Готовим сборку Go-приложения в продакшн

Reading time6 min
Views27K
В июне на конференции РИТ++ мы с коллегой Игорем Должиковым делились опытом автоматизации процесса разработки сервисов на Go — от первого коммита и до релиза в продакшн-окружение Kubernetes (да-да, видео начинается с 07:16, и нам тоже это не нравится). С момента публикации мастер-класса время от времени я получаю вопросы по тем или иным темам, затронутым в нем. Пожалуй, самые горячие вопросы достойны отдельного рассмотрения, и сегодня я хотела бы поговорить о процессе сборки приложения. Затрагиваемые темы актуальны не только при подготовке сервисов, но и вообще для любых приложений, написанных на Go.

Всё, что описано в этой статье, актуально для текущей версии Go — 1.9.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments24

Information

Rating
Does not participate
Registered
Activity