Как стать автором
Обновить
1
0
Никита Брагин @BrNikita

Пользователь

Отправить сообщение

Подробно про JWT

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров7.7K

О чем эта статья: мы разберемся, что такое JSON Web Token, как он устроен и для чего используется, рассмотрим такие приемы, как «black-list токенов» и «контроль версий» токенов. Для наглядности, в конце будут блок-схемы клиент-серверных запросов с пояснениями.

Для кого эта статья: для тех, кто хочет детально понять что такое JWT, а так же для тех, кто просто ищет схему реализации.

Читать далее
Всего голосов 17: ↑15 и ↓2+15
Комментарии16

Апи версионирование по-взрослому

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров6.5K

Мы все любим пробовать новые инструменты, но ненавидим их поддерживать и обновлять. Это касается всего: операционных систем, приложений, API, пакетов Linux. Больно, когда наш код перестает работать из-за обновления, и вдвойне больно, когда обновление было инициировано не нами.

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

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

Я расскажу на нашем примере, насколько глубока кроличья нора и как сильно можно упороться на пути к идеальному версионированию.

Читать далее
Всего голосов 10: ↑9 и ↓1+12
Комментарии35

Git Hooks не так страшны, как их малюют

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.1K

Бывает, что в командах тестирования грезят об автоматизации процессов, но почему-то боятся внедрять даже такие простые вещи как хуки: «Они очень усложняют процесс, и писать их тысячу часов». С этим я категорически не согласен, ведь реализовать хуки очень просто.

Меня зовут Денис Федоров, я тестировщик в команде 2ГИС ПРО, сервисе геоаналитики для бизнеса. Рассказываю, что такое гит-хуки, чем они могут быть полезны и как их можно реализовать у себя. 

Читать далее
Всего голосов 13: ↑13 и ↓0+16
Комментарии10

Книга «React быстро. 2-е межд. изд.»

Время на прочтение11 мин
Количество просмотров6.9K
image Привет, Хаброжители!

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

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

Книга предназначена для разработчиков, имеющих опыт создания веб-приложений на базе JavaScript.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии2

Как создавать высокопроизводительные очереди сообщений с различной архитектурой

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров6.4K

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

Рассказываем об основных сложностях развития высоконагруженных ИТ-систем и способах их преодоления с помощью очередей сообщений на примере Tarantool Queue Enterprise.

Материал подготовлен по мотивам вебинара «Как создавать высокопроизводительные очереди сообщений с различной архитектурой». Вы можете посмотреть его здесь.

Читать далее
Всего голосов 32: ↑30 и ↓2+34
Комментарии4

Собеседование по System Design: как запроектировать и не потеряться

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров13K

Привет! Меня зовут Дмитрий. Я архитектор решений в крупной российской компании, более 15 лет проектирую, пишу код и руковожу командами. Сотрудничаю с Практикумом как ревьюер курса по Java и как автор курса «Архитектура программного обеспечения» в Яндекс Практикуме.

Предположим, вы решили развлечься дизайном систем (System design), пусть даже и не добровольно, на собеседовании. Если компания поленилась поделиться рабочим контекстом, то задача может быть в формате «запроектируй Твиттер». Более кандидатоориентированная компания N может попросить «спроектируй поиск на сервисе N».

Хотя статей типа «как запилить Твиттер» довольно много, не все помогут сориентироваться на реальном собеседовании. В этой статье предлагаю покопать вглубь и составить чек-лист, некий алгоритм. Он будет чуть шире, чем принято «для Твиттера», хотя универсальным его сделать не получится. Мне эта схема помогала и помогает, хотя у каждого свои фишки и предпочтения. 

Читать далее
Всего голосов 15: ↑14 и ↓1+16
Комментарии21

Полифилы JavaScript: что это и зачем они нужны?

Время на прочтение4 мин
Количество просмотров17K

Всем привет, я — Кирилл Мыльников, frontend разработчик компании Usetech.

Сегодня хочу рассказать о полифилах JavaScript: что это и зачем они нужны? На практике мы реализуем несколько полифилов: map, forEach, filter, reduce. 

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

Итак, начнём с определения полифила, а затем перейдём к методам.

Читать далее
Всего голосов 10: ↑6 и ↓4+2
Комментарии14

Функторы в языках программирования

Время на прочтение6 мин
Количество просмотров83K
Интересно, что термин "функтор" означает совершенно разные вещи в разных языках программирования. Возьмем, например, C++. Каждый, кто освоил мастерство C++, знает, что класс, который реализует operator(), называется функтором. Теперь возьмём Standard ML. В ML функторы отображают структуры на структуры. Теперь Haskell. В Haskell функторы — это просто гомоморфизм над категориями. А в Prolog функтор означает атом в начале структуры. Все они различаются. Давайте подробнее рассмотрим каждый из них.
Читать дальше →
Всего голосов 44: ↑41 и ↓3+38
Комментарии39

Современный способ глубокого клонирования объектов в JavaScript

Время на прочтение5 мин
Количество просмотров34K

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

Читать далее
Всего голосов 31: ↑31 и ↓0+31
Комментарии11

Примитивно-рекурсивные функции и функция Аккермана

Время на прочтение7 мин
Количество просмотров37K

Функция Аккермана — одна из самых знаменитых функций в Computer Science. С ней связан как минимум один фундаментальный результат и как минимум один просто важный. Фундаментальный результат, говоря аккуратно и непонятно, таков: существует всюду определённая вычислимая функция, не являющаяся примитивно-рекурсивной. Важный результат заключается в том, что лес непересекающихся множеств (также известный как disjoint set union) работает очень быстро.


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


Из текста ниже вы узнаете, что такое примитивно-рекурсивные функции и как выяснить, что функция Аккермана к таковым не относится. И, конечно, этот текст убедит вас в том, что это невероятно красивая конструкция и невероятно красивое рассуждение!

Читать дальше →
Всего голосов 28: ↑27 и ↓1+43
Комментарии12

Отделяем стек от рекурсии

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.9K

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

Читать далее
Всего голосов 4: ↑4 и ↓0+7
Комментарии10

WebAssembly: что и как

Время на прочтение9 мин
Количество просмотров129K


Эта статья основана на моём выступлении на конференции ITSubbotnik, прошедшем 2 ноября 2019 года в Москве.


Вообще я бэкенд программист, но меня заинтересовала эта технология, она позволяет использовать мои знания бэкенда на фронте.


Проблема


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

Читать дальше →
Всего голосов 62: ↑60 и ↓2+58
Комментарии136

GRASP паттерны проектирования

Время на прочтение4 мин
Количество просмотров249K
Почитать описание других паттернов.

GRASP (General Responsibility Assignment Software Patterns) — шаблоны проектирования, используемые для решения общих задач по назначению обязанностей классам и объектам.

Известно девять GRAPS шаблонов, изначально описанных в книге Крейга Лармана «Применение UML и шаблонов проектирования». В отличие от привычных читателю паттернов из Банды Четырех, GRAPS паттерны не имеют выраженной структуры, четкой области применения и конкретной решаемой проблемы, а лишь представляют собой обобщенные подходы/рекомендации/принципы, используемые при проектировании дизайна системы.

Рассмотрим характеристики основных GRASP шаблонов.
Читать дальше →
Всего голосов 57: ↑45 и ↓12+33
Комментарии24

Многопоточность на Node.js. Event Loop

Время на прочтение8 мин
Количество просмотров71K

Инфа будет полезна JS-разработчикам, которые хотят глубоко понимать суть работы с Node.js и Event Loop. Вы сможете осознанно и более гибко управлять потоком выполнения программы (web-сервера).


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


Как устроена Node.js. Возможности асинхрона


Давайте посмотрим на этот код: он отлично демонстрирует синхронность выполнения кода в Node.js. Делается запрос на GitHub, затем записываем данные в файл и выводим результат в консоли. Что понятно из этого синхронного кода?


image

Читать дальше →
Всего голосов 14: ↑13 и ↓1+15
Комментарии16

DTO в Python. Способы реализации

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров12K

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

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

Из основной функциональности хочу выделить валидацию типов и данных, создание объекта и выгрузку в словарь.

Читать далее
Всего голосов 14: ↑13 и ↓1+14
Комментарии5

Как оценить ёмкость сервиса и не упасть под нагрузкой

Время на прочтение7 мин
Количество просмотров29K


Рано или поздно любому растущему сервису приходится оценивать свои технические возможности. Сколько посетителей мы в силах обслужить? Какова ёмкость (она же capacity) системы? Не добрались ли мы до предела и не упадём ли, если привлечём ещё несколько тысяч пользователей? Сколько дополнительных вычислительных ресурсов заложить в бюджет на следующий год, чтобы соответствовать планам роста?

Ответы можно получить аналитическим путём, адресовав вопросы опытному разработчику/DevOps/SRE/админу. Достоверность оценки зависит от огромного числа факторов: начиная с темпов наполнения системы функциональностью и графа взаимосвязей между компонентами и заканчивая временем, которое эксперт с утра провёл в пробке. Чем сложнее система — тем больше сомнений в адекватности аналитической оценки.

Меня зовут Максим Куприянов, вот уже пять лет я работаю в Яндекс.Маркете. Сегодня я расскажу читателям Хабра, как мы учились оценивать ёмкость наших сервисов и что из этого вышло.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+19
Комментарии9

Сверхчеловеческий ИИ на основе открытых систем: Утопия или антиутопия?

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров2.8K

В погоне за созданием сверхчеловеческого интеллекта (ASI) исследователи ИИ все чаще обращаются к концепции открытых систем. Но что делает открытые системы столь многообещающими в контексте достижения ASI, и каковы фундаментальные принципы, лежащие в основе этого подхода?

В этой статье мы погрузимся в техническое определение открытости через призму новизны и обучаемости, рассмотрим примеры существующих открытых систем, таких как AlphaGo, AdA и POET, и исследуем их потенциал на пути к ASI.

Мы также обсудим ключевые подходы и проблемы безопасности и контроля, связанные с развитием открытых систем. Словом, полностью погрузимся в тему. Присоединяйтесь к нам в этом исследовании и рассуждению на тему open-source систем!

Приятного прочтения:)

Читать далее
Всего голосов 12: ↑11 и ↓1+11
Комментарии3

Как дообучать LLM с помощью Supervised Fine-Tuning

Время на прочтение15 мин
Количество просмотров5.6K

Обычно большие языковые модели (large language model, LLM) обучают в несколько этапов, включающих предварительное обучение и множество этапов fine-tuning (см. ниже). Предварительное обучение — это дорогостоящий процесс (например, требующий многих сотен тысяч долларов на вычислительные ресурсы), однако fine-tuning модели LLM (или контекстное обучение) по сравнению с этим гораздо дешевле (например, сотни долларов или даже меньше). Учитывая широкую доступность и бесплатность (даже для коммерческого использования) предварительно обученных LLM (например, MPT, Falcon или LLAMA-2), мы можем создавать большой спектр мощных приложений благодаря fine-tuning моделей под нужные задачи.


Этапы обучения LLM

На текущем этапе исследований ИИ одним из самых широко применяемых видов fine-tuning моделей LLM стал supervised fine-tuning (SFT). При этой методике курируемый датасет высококачественных выходных данных LLM применяется для непосредственного fine-tuning модели. SFT прост и дёшев в использовании, это полезный инструмент выравнивания языковых моделей, ставший популярным даже за пределами исследовательского сообщества опенсорсных LLM. В этой статье мы вкратце расскажем о принципах SFT, рассмотрим исследования по этой теме и приведём примеры того, как практикующие специалисты могут с лёгкостью пользоваться SFT, написав всего несколько строк кода на Python.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+5
Комментарии4

Ахиллесова пята ИИ: простая задача, обнажившая слабости всех языковых моделей

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров54K

Недавнее исследование, проведенное группой экспертов из ведущих институтов, выявило существенные недостатки в логических способностях даже самых продвинутых LLM. Статья «Алиса в Стране чудес» демонстрирует, что при решении элементарных логических задач современные языковые модели демонстрируют неожиданно низкую эффективность.

Читать далее
Всего голосов 80: ↑73 и ↓7+79
Комментарии302

5 книг, которые стоит почитать начинающему ИТ-архитектору

Время на прочтение5 мин
Количество просмотров41K

Привет, Хабр! Меня зовут Александр Бардаш, я главный архитектор интеграционных платформ в МТС. Сегодня расскажу, почему ИТ-архитекторам важно хотя бы иногда всегда читать книги, и поделюсь подборкой для начинающих. Жду вас под катом и в комментариях!

Читать далее
Всего голосов 25: ↑19 и ↓6+19
Комментарии17
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность