Pull to refresh

Technotext

Атака на String.hashCode: прообразы и коллизии

Reading time8 min
Views12K
Дюк прощупывает сезон Java

Как-то раз мне понадобилось несколько наборов строк с коллизией по хеш-коду. То есть таких, чтобы значение String::hashCode() совпадало для всех строк в наборе.

Блуждание по интернету не дало результатов, примеров было мало и все они довольно однообразны. Поиск по словарям подарил забавную пару "javascript's".hashCode() == "monocle".hashCode(), но практической пользы не принёс. Полный перебор не рассматривался в виду скорой тепловой смерти вселенной.

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

Читать дальше →
Total votes 62: ↑62 and ↓0+62
Comments23

API-First и микросервисы

Reading time15 min
Views20K

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

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments11

Работа с аутсорсом: наш опыт

Reading time5 min
Views2.8K

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

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

Бизнес сказал «Надо», мы пошли думать, как это организовать.

Узнать про наш опыт
Total votes 4: ↑4 and ↓0+4
Comments5

Ускоряем прохождение iOS UI-тестов. Часть 1. Запуск тестов без сборки проекта

Reading time6 min
Views5.1K

Хабр, привет!

Меня зовут Борис. Я Mobile AQA lead в Vivid Money.

Это вступительная статья в цикле статей по iOS-автоматизации, в которых я расскажу о том, как ускорить прохождение UI-тестов.

Данная статья будет полезна iOS-автоматизаторам с опытом, либо разработчикам.

В рамках этой статьи мы разберем такие этапы:

- зачем ускорять время прохождения UI-тестов;

- что такое Test runner, и какие они бывают;

- что нужно для прогона тестов без компиляции проекта;

- делимся опытом, как это помогает нам.

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments0

Бюджет потерь USB 3.2

Reading time17 min
Views29K

Откуда столько названий стандартов USB? Какие допустимые потери сигнала в кабеле по спецификации, и почему почти никто ей не следует? Как измерить потери в дифференциальной линии и не продать почку?

Статья будет наиболее полезна для hardware-инженеров, разрабатывающих системы с высокоскоростными интерфейсами, но рассчитана на базовый уровень знаний в электронике. Узнаем о истории стандарта, понятии потерь, способах оценки и измерений.

Страх и ненависть в спецификации USB
Total votes 156: ↑155 and ↓1+154
Comments60

Как устроены дисплеи. Подробный разбор

Level of difficultyEasy
Reading time61 min
Views51K

В этой части разберем устройство, виды и повадки современных телевизоров.

Основные характеристики — всякие яркости, HDRы, контрасты и цветовые охваты, что они значат и зачем нужно 120Гц, мы разобрали в предыдущей части.

Осторожно, трафик >
Total votes 121: ↑120 and ↓1+119
Comments130

Как составить базу знаний (Как не умереть в море обучающих материалов )

Reading time4 min
Views14K

О том, как не потеряться в огромной куче информации и как ее структурировать (не скажу что правильно, но хоть какой то шаблон).

Так же много полезных ссылок, как в самой статье, так и в базе знаний (кликабельность).

Оценить "базу знаний"
Total votes 10: ↑7 and ↓3+4
Comments2

Kubernetes 1.25: обзор нововведений

Reading time14 min
Views11K

Этой ночью представят новую версию Kubernetes. Среди главных изменений на первое место разработчики поставили стабилизацию функции CSI Migration — отказ от внутренних плагинов хранилищ в пользу CSI-драйверов. Также в этой версии устаревший контроллер PodSecurityPolicy заменен на новый PodSecurity Admission.

По традиции в обзоре рассказываем обо всех новых функциях (alpha), а также упоминаем те, что перешли на уровень выше (beta, stable).

Читать далее
Total votes 69: ↑68 and ↓1+67
Comments3

Как улучшить английский в документации

Reading time11 min
Views34K

Я работаю техническим писателем в компании documentat.io. Мы занимаемся заказной разработкой технической документации, в том числе на английском языке. Иногда я дорабатываю уже существующие документы или спецификации к API на английском. Как правило, такие документы написаны русскоязычными разработчиками, которые неплохо владеют английским. И всё же они часто допускают характерные грамматические, пунктуационные и стилистические ошибки.

Корень этих ошибок один — разные языковые механизмы. Нам бывает легко запутаться в употреблении временных форм, порядке слов или непонятно зачем придуманных артиклях. 

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

Читать далее
Total votes 99: ↑98 and ↓1+97
Comments27

TypeScript в React-приложениях. 1. Как типизировать данные

Reading time7 min
Views16K

Данная статья является первой в цикле статей о практическом применении языка Typescript в React-приложениях. Амбициозная цель автора — в конечном счёте написать книгу, которая будет ближе к практике чем к теории. В этом смысле книга не будет разжёвывать документацию языка, а предложит рассмотрение подходов и примеров типизации отдельных аспектов React-приложений.

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

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments9

Разработка 2-наносекундного излучателя лидара. Тестовое задание от Яндекс.Беспилотники

Reading time10 min
Views42K

Это рассказ о том, как потратить 3 недели на тестовое задание от работодателя мечты и провалить второй тур собеседования. Несмотря на то, что работу я не получил, тестовое задание оказалось испытанием, с которым я справился, попутно вынеся для себя несколько важных уроков.

Читать далее
Total votes 122: ↑121 and ↓1+120
Comments110

Поддержка mTLS в своём Service Mesh: чему мы научились

Reading time9 min
Views21K

Салют! На связи команда платформы Авито, сегодня будем рассказывать про service mesh.

У Авито самописный service mesh — сначала это был Netramesh, который потом трансформировался в собственный control-plane и envoy в качестве data-plane. В начале этого года я добавлял в него поддержку mTLS, а сейчас мы успешно раскатываем это решение для межсервисного взаимодействия. 

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

Читать далее
Total votes 14: ↑13 and ↓1+12
Comments0

Как посчитать длину текста и не привлекать внимание санитаров

Reading time10 min
Views32K

Привет! Меня зовут Алексей Ивасюта, я фронтенд-разработчик в Авито в кластере Seller Experience. В этой статье я расскажу, как правильно рассчитать длину текста в Java Script. Эта статья будет одинаково полезна как начинающим разработчикам, так и весьма опытным. Благодаря ей вы поймете устройство Unicode и особенности его работы в JS.

Читать далее
Total votes 73: ↑72 and ↓1+71
Comments58

Как и почему перешли с Python на Go в основном сервисе рекомендаций Авито

Reading time10 min
Views23K

Привет! Меня зовут Василий Копытов, я руковожу группой разработки рекомендаций в Авито. Мы занимается системами, которые предоставляют пользователю персонализированные объявления на сайте и в приложениях. На примере нашего основного сервиса покажу, когда стоит переходить с Python на Go, а когда нужно оставить всё как есть. В конце дам несколько советов по оптимизации сервисов на Python.

Читать далее
Total votes 50: ↑46 and ↓4+42
Comments40

Чего ждать от NeoVim: особенности редактора

Reading time9 min
Views40K

Привет! Я Антон Губарев, инженер команды Platform as a Service (PaaS) в Авито. Долгое время я пользовался IDE от JetBrains, затем пересел на VS Code. Последние несколько лет работаю с кодом только в NeoVim — адаптировал его под себя и перестал использовать другие IDE.

Читать далее
Total votes 26: ↑23 and ↓3+20
Comments41

Realtime-матчинг: находим матчи за считанные минуты вместо 24 часов

Reading time11 min
Views11K

Задача матчинга в последнее время набирает всё большую популярность и используется во многих сферах: банки матчат транзакции, маркетплейсы – товары, а Google и другие IT-гиганты проводят соревнования по решению таких задач на Kaggle.

Для маркетплейса матчинг – очень важный процесс, который решает сразу несколько задач:

1. При поисковом ранжировании из множества товаров показывать сначала самые выгодные предложения.

2. Объединять множество товаров в одну сущность и показывать предложения одного и того же товара от разных селлеров.

3. Понимать, как предложения селлеров выглядят относительно друг друга, и поощрять их дополнительными бонусами.

Сегодня мы поговорим не только о решении этой задачи, но и о способах её реализации: offline (batch) vs online (realtime). Также обсудим, как и зачем переходить от первого ко второму.

Читать далее
Total votes 42: ↑42 and ↓0+42
Comments8

Почему разработчику важно заниматься «PET-проектами»

Reading time6 min
Views12K

Привет Хабр! Прошло более 7 лет с момента старта моего первого PET-проекта. Тогда я еще не задумывался о пользе подобных инициатив и разрабатывал исключительно в академических целях, чтобы наработать практический опыт и более продуктивно справляться с задачами в компании где я в тот момент работал.

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

В рамках данного материала я раскрою тему пользы вовлечения себя как разработчика в  PET-инициативы.

Читать далее
Total votes 10: ↑7 and ↓3+4
Comments5

It is Wednesday, my java dudes, или насколько сложно сделать свою JVM

Reading time11 min
Views11K

Что делать, если накануне переезда повысилась тревожность, а привычные методы не приносят успокоения?

Конечно же вырабатывать дофамин через решение упоротых инженерных задач!

Мне стало интересно - насколько тяжко было бы сделать свой интерпретатор байт-кода Java? И насколько сложно было бы научить его “новым трюкам”?

Писать я буду на Rust, поэтому и проект, не мудрствуя лукаво, назвал Rjava.

Читать далее
Total votes 67: ↑66 and ↓1+65
Comments26

20 лет проблем приема платежей

Reading time11 min
Views21K
image
За логотип спасибо yarbabin

Электронные системы расчетов существуют в интернете уже давно, а баги на них встречаются двадцатилетней давности. Мы находили критические уязвимости, позволяющие угнать деньги и накрутить баланс. Сегодня мы разберем типовые реализации приема платежей и связанные с ними проблемы безопасности.
Читать дальше →
Total votes 133: ↑132 and ↓1+131
Comments20