Pull to refresh
3
0
Павел @pavel_nv

Java Developer

Send message

Знай сложности алгоритмов

Reading time2 min
Views1M
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →
Total votes 312: ↑296 and ↓16+280
Comments99

Архитектура рекомендаций: как дать пользователю соцсети то, что ему понравится

Level of difficultyMedium
Reading time12 min
Views3.2K

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

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

Всё, что вам нужно — это внимание (часть 1)

Level of difficultyHard
Reading time14 min
Views23K
Источник

Примечание переводчика: Недавно на Хабре мы рассказывали о статьях, которые нужно прочитать, если вы хотите заниматься искусственным интеллектом. Среди них была культовая статья Attention is all you need, выпущенная в 2017 году. С неё началось развитие больших языковых моделей, в том числе всем известного чат-бота ChatGPT. Оказалось, что у такой важной статьи нет перевода на русский язык. Мы решили исправить это. Ниже вы найдёте перевод первой части статьи, вторая часть доступна по ссылке.

Краткое содержание


Наиболее распространённые модели преобразования последовательностей основаны на сложных рекуррентных или свёрточных нейронных сетях, которые включают энкодер и декодер. В самых успешных моделях энкодер и декодер соединяются с помощью механизма внимания. В статье авторы предлагают новую простую архитектуру нейронных сетей — Трансформер. Он основан исключительно на механизмах внимания, без рекуррентности или свёрток. Эксперименты на двух задачах машинного перевода показали лучшее качество, а также больше возможностей к распараллеливанию и меньшие временные затраты на обучение. Модель достигает 28.4 по метрике BLEU на задаче перевода с английского на немецкий на данных WMT 2014, что превосходит предыдущий лучший результат на 2 пункта. На задаче перевода с английского на французский на данных WMT 2014 модель достигла наилучшего результата для решения, основанного на одной модели — 41.8 по метрике BLEU — после всего 3.5 дней обучения на 8 GPU, что составляет совсем небольшую часть тех вычислительных мощностей, которые были затрачены на обучение лучшей модели, известной из имеющихся публикаций. Авторы показывают, что Трансформер может также успешно применяться и в других задачах, таких как, например, синтаксический разбор предложений на английском языке с использованием как больших, так и весьма ограниченных наборов данных для обучения.
Читать дальше →
Total votes 41: ↑40 and ↓1+59
Comments5

SourceBuddy динамически компилирует исходный код Java

Reading time3 min
Views2.9K

Через два месяца после первого коммита в октябре 2022 года Питер Верхас, старший архитектор EPAM Systems, выпустил версию 2.0.0 SourceBuddy, новой утилиты, которая компилирует динамически исходный код Java, заданный в строке или файле, в файл класса. 

Утилит SourceBuddy требует Java 17 и представляет собой упрощенный фасад для компилятора javac, который обеспечивает ту же функциональность.

Версия 2.0.0 поддерживает комбинацию скрытых и нескрытых классов во время компиляции и выполнения. Кроме того, был упрощен API, включая критические изменения, такие как изменение метода loadHidden() на метод hidden(), поэтому и выпущен новый основной релиз. Полный обзор изменений для каждой версии доступен в документации по выпускам на GitHub.

Читать далее
Total votes 4: ↑2 and ↓20
Comments13

Обзор книги «Data Science. Наука о данных с нуля», отличная книга для начинающих

Reading time10 min
Views16K

Всем доброго времени суток! Так как о Data Science мы слышим всё чаще и чаще, предлагаю вам обзор книги, что будет полезна для начинающих.

Публикую обзор книги с моего телеграмм-канала IT-старт t.me/it_begin на книгу "Data Science.Наука о данных для начинающих".

Автор книги Джоэл Грас.

Стоит читать? Да! Почему? Опишу в статье.

Читать далее
Total votes 8: ↑6 and ↓2+6
Comments3

PostgreSQL Antipatterns: Индиана Джонс и максимальное значение ключа, или В поисках «последних» записей

Reading time2 min
Views10K

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

Кажется, что тут и споткнуться-то негде в реализации - но все оказывается совсем не тривиально.

Читать далее
Total votes 18: ↑16 and ↓2+20
Comments42

DI.kt: одна из первых DI библиотек для Kotlin Multiplatform

Reading time5 min
Views3.2K

Прошу приветствовать одну из первых DI библиотек для Kotlin multiplatform — DI.kt

Вы можете спросить: «А зачем нам ещё DI либы?». Долгое время полноценного DI для Kotlin Multiplatform не было. Существующие библиотеки — это сервис-локаторы (Koin, Kodein, Popkorn), которые не валидируют граф зависимостей во время компиляции. А это одна из важнейших фич многих привычных Java и Android сообществам DI библиотек и фреймворков. Чтобы принести эту фичу в Kotlin Multiplatform, я и написал DI.kt. Библиотека намного проще привычного нам Dagger — нет мультибиндингов и прочих концептов, которые делают его таким сложным в освоении (и периодически используются неправильно).

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

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

Reading time10 min
Views24K

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

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

Управление временем в Java приложениях

Reading time8 min
Views13K

В продуктовой Java-разработке часто требуется сохранять дату и время в базу данных. Это может быть фиксация времени создания\последней модификации какого-либо объекта или указание срока действия документа, билета и т.п. Сама по себе эта задача несложная. Трудности возникают, когда мы хотим подобную систему протестировать и оценить, как она будет вести себя, скажем, через полгода или год. В будущем. Ниже я покажу несколько простых и изящных приёмов, которые позволят вам почувствовать себя настоящим доктором Стрэнджем…

Читать далее
Total votes 20: ↑18 and ↓2+21
Comments13

Netflix. Архитектура системы персонализации и рекомендаций

Reading time9 min
Views4.4K

Перевод неточный, некоторые куски пропущены, так как показались мне повторением уже высказанных выше мыслей, некоторые - уточнены и дополнены примерами.

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

Читать далее
Total votes 4: ↑3 and ↓1+4
Comments0

Где быстрее купить жилье айтишнику? Считаем деньги в топ-10 IT-странах

Reading time3 min
Views82K

Поговорим о деньгах в рамках моего мини проекта “Где программисту жить хорошо”. Сначала посчитаем, сколько денег можно накопить среднем разработчику в год после стандартных ежемесячных расходов и налогов, а потом прикинем, как быстро можно будет купить квартиру на накопления.

FYI, это 3-я статья из 6 в цикле. Ниже полный список статей, выпускаю раз в неделю:
Как выбрать, куда иммигрировать. 10 главных критериев.
Одной Долиной сыт не будешь. Где еще реализовать амбиции айтишнику. Топ-10 IT-стран.
Где старость сытнее и дети счастливее. Социальная защищенность в ТОП-10 IT-странах.
Где не стать своим. Интеграция в ТОП-10 IT-стран.
Краткий гайд по визам в ТОП-10 IT-стран.

И последнее – список стран для сравнения: США, Канада, Германия, Нидерланды, Швейцария, Великобритания, Кипр, Польша, Израиль и Австралия.

Финансовые накопления

Прежде всего меня интересовал годовой остаток от зарплаты разработчика при расходах на семью из 4-х человек. Если уж большая семья проживет на 1 зарплату, то одинокому программисту будет куда разгуляться. Для подсчетов я взяла 4 переменных для каждого региона. И это:

Читать далее
Total votes 53: ↑33 and ↓20+20
Comments370

Как проводить 1:1: гайд для разработчиков, а не менеджеров

Reading time3 min
Views7.3K

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

Читать далее
Total votes 6: ↑4 and ↓2+4
Comments7

Избавляемся от boilerplate кода в Protocol Buffers 2

Reading time5 min
Views2.9K
Если вы разрабатываете корпоративные приложения, и не только, вероятно вы уже знакомы с протоколом сериализации Protocol Buffers от Google. В данной статье поговорим о его второй версии. И о том, что он заставляет писать много boilerplate кода, с которым мы и будем бороться.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments0

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity