Pull to refresh
19
0
Даниил Васильев @hello_my_name_is_dany

Backend Engineer

Send message

Отправляем GC в отпуск и создаем эксзепляры классов .NET сами

Level of difficultyMedium
Reading time6 min
Views6.8K

Придерживаясь великой цитаты "правила созданы для того, чтобы их нарушать", давайте нарушим какие-то основополагающие правила CLR. Как на счет того, чтобы послать GC с его работой в отставку и самим заняться размещением в памяти экземпляров классов? Заодно разберемся, как все это работает где-то там под капотом CLR.

Читать далее
Total votes 38: ↑37 and ↓1+45
Comments32

Представляем планировщик Go: Вы никогда не смотрели на горутины с этой стороны

Level of difficultyMedium
Reading time7 min
Views12K

Вероятно, вы слышали о планировщике Go раньше, но насколько хорошо мы знает о том как он работает? Как он связывает горутины с потоками?

Разберем по очереди операции, которые выполняет планировщик.

Читать далее
Total votes 30: ↑27 and ↓3+30
Comments1

Пишу Minecraft сервера с нуля. Часть 1. Пинг

Reading time6 min
Views9.4K

Этот цикл статей о разработке серверного ПО совместимого с протоколом Minecraft: Java Edition.

В этой части я акцентирую внимание на основных вещах: типы данных, структура пакетов и как клиент получает информацию о сервере.

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

Цикл постов про Keycloak. Часть первая: Внедрение

Reading time18 min
Views56K

Цикл постов про Keycloak (часть 1): Внедрение.

О чем речь?

Это первая часть серии статей о переходе на Keycloak в качестве SSO в условиях кровавого enterprise.

Читать далее
Total votes 26: ↑24 and ↓2+25
Comments6

Внутреннее представление и оптимизации строк в JavaScript-движке V8: «отмываем» строки, «обгоняем» C++

Level of difficultyMedium
Reading time8 min
Views11K

С самого рождения JavaScript в каком-то смысле был языком для манипулирования текстом — от веб-страничек в самом начале до полноценных компиляторов сейчас. Неудивительно, что в современных JS-движках достаточно много сил уделено оптимизации внутреннего представления строк и операций над ними.

В этой статье я хочу рассмотреть, как могут быть представлены строки в движке V8. Попытаюсь продемонстрировать их эффект, обогнав C++ в очень честном бенчмарке. А также покажу, в каких случаях они могут, наоборот, привести к проблемам с производительностью, и что в таких случаях можно сделать.
Читать дальше →
Total votes 59: ↑58 and ↓1+82
Comments16

Как избежать конкуренции на глобальном рынке и не только

Level of difficultyMedium
Reading time6 min
Views1.4K

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

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

Короче, Proxyman: краткий обзор самого яблочного сниффера

Level of difficultyMedium
Reading time9 min
Views19K

Всем привет, я Света, тимлид команды тестирования мобильных приложений в Emerging Travel Group :) В своей предыдущей статье я рассказала про любимый и родной Charles, а в этой я решила немного выйти из зоны комфорта и рассказать про один из главных его конкурентов — Proxyman. Будем играть по-честному, и рассмотрим на реальных примерах те же, на мой взгляд, основные и самые ходовые функции сниффера, которые используют QA и разработчики на почти ежедневной основе. Поехали!

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

Архитектура на Unity без Zenject. Часть 3

Level of difficultyEasy
Reading time11 min
Views5.9K

Всем привет! 👋

Меня зовут Игорь Гулькин, и я Unity разработчик. За свои 5 лет накопилось много опыта, поэтому в этой статье хотел бы поделиться принципами и подходами, с помощью которых можно реализовать архитектуру игры просто и гибко без фреймворка. Цель доклада, дать не просто готовое решение, а показать ход мыслей и паттерны, с помощью которых ее можно выстроить. Если вы не читали первую и вторую части, то рекомендую начать с них :).

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

StbSharp: история ненужного проекта

Reading time6 min
Views6.9K

В этой статье я бы хотел рассказать о своем хобби проекте под названием StbSharp.

Итак, в 2016 году мне пришла в голову весьма банальная идея - сделать собственный игровой кросс-платформенный движок на C#. И я озаботился поиском кросс-платформенной же библиотеки для загрузки картинок. Внезапно выяснилось, что подходящей просто не существовало. Было множество платформо-зависимых решений(напр. System.Drawing). А так же имелась SixLabors.ImageSharp. Но она была в состоянии ранней альфы. Мне же хотелось работать с решением, проверенным временем. Так я пришёл к идее портировать stb_image.h (очень популярной в геймдеве single-header библиотеки для загрузки картинок) на C#.

"А разве не легче было написать биндинги для нативной библиотеки? Хоть для той же stb_image?",- задаст справедливый вопрос читатель. Да, легче. И правильнее. О чём, собственно, и говорит заголовок этой статьи. Конечно, использование биндингов доставляет некоторые неудобства в плане того, что необходимо доставить соответствующий нативный бинарник на устройство конечного пользователя. Однако эти неудобства с лихвой окупаются достоинствами. А именно лучшим перформансом и портируемостью.

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

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

Памятка архитектору

Reading time8 min
Views21K

Я работаю архитектором (Solution Architect если быть точным) в аутсорсинговой компании. В ходе работы я занимаюсь такими активностями как: дизайн и внедрение архитектурных решений, аудит систем заказчика и разного рода консультации вокруг архитектуры систем.

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

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

Что там уже в списке?
Total votes 42: ↑41 and ↓1+51
Comments23

Яндекс выложил в опенсорс бету фреймворка userver

Reading time10 min
Views75K
Сегодня мы анонсируем выход в опенсорс фреймворка userver для создания высоконагруженных приложений. Для нас это важный способ поделиться опытом в разработке микросервисов, который мы накопили. Вот ссылка на Гитхаб-репозиторий c исходным кодом, документацией, примерами, шаблоном для создания своих сервисов (с настроенным CI, сборкой и тестовым окружением) и сервисом динамических конфигов. Всё это опубликовано под лицензией Apache 2.0.



🐙userver позволяет быстро создавать эффективные микросервисы на языке C++ и уже много лет активно используется в Яндекс Go, Еде, Лавке, Доставке, Маркете, финтехе и других проектах. Вот из каких требований мы исходили в процессе разработки:

  • Простота. Стажёр или студент, приходя к нам, может уже через неделю написать и отправить в продакшен новый микросервис.
  • Надёжность. Многие ошибки, в том числе и связанные с многопоточностью, можно поймать на этапе компиляции. Кроме того, фреймворк даёт подсказки по исправлению проблем.
  • Полнота. В userver есть всё необходимое для тестирования, работы с разными базами данных, кеширования, логирования, трейсинга, распределённых блокировок, работы с JSON, BSON, YAML, изменения параметров сервиса на лету и так далее.

Сейчас я расскажу о том, как возникла идея userver, как фреймворк развивался, в каких задачах его сейчас используют и почему именно выход в опенсорс был логичным следующим шагом. А затем приведу пример написания нового микросервиса.
Читать дальше →
Total votes 141: ↑137 and ↓4+169
Comments142

Возможен ли быстрый Garbage collector на С++?

Reading time20 min
Views10K

Не буду долго рассусоливать о том, что такое сборщик мусора и для чего он нужен (на эту тему уже есть достаточно статей). Но хочу отметить несколько важных деталей.

Читать далее
Total votes 15: ↑12 and ↓3+14
Comments74

Муравьи

Reading time10 min
Views46K

Муравьи

Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи Муравьи М

Муравьи
Total votes 95: ↑46 and ↓49+24
Comments319

Алгоритм ECDSA

Reading time5 min
Views14K

Алгоритм ECDSA (Elliptic Curve Digital Signature Algorithm) — это реализация схемы цифровой подписи, основанная на использовании эллиптических кривых и модульной арифметики.

Мы оставим подробный разбор всех тонкостей этого алгоритма и соответствующей математической теории для будущих статей. Здесь же просто покажем основные идеи, за счет которых в ECDSA реализуются алгоритмы KeyGen, Sig и Ver.

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

Эллиптическая кривая в ECDSA — это линия на плоскости, задаваемая уравнением y²=x³+a∙x+b, где a и b — такие числа, что 4∙a³+27∙b²≠0. Например, Bitcoin и Ethereum используют кривую y²=x³+7 (рис. 1).

Читать далее
Total votes 11: ↑7 and ↓4+7
Comments4

Необычный дуалбут: ноутбук с «двойным дном»

Reading time15 min
Views81K

Не так давно на Habr Q&A я наткнулся на интересный вопрос — как сделать, чтобы два жестких диска не видели друг друга? Чтобы вирус, попав на одну систему, никоим образом не мог заразить другую. В ответах предлагали достаточно стандартные способы — использовать полнодисковое шифрование, отключить диск в диспетчере устройств и даже поставить переключатель на питание. Но что если взглянуть на задачу совершенно с другого угла и сделать всё средствами самого HDD? Да-да, сегодня мы снова погружаемся в пучины модификации прошивок и реверс-инжиниринга!
Узнать подробности
Total votes 274: ↑270 and ↓4+353
Comments122

ПО для разработчиков 2022: лучшие продукты года

Reading time10 min
Views9.8K

Иностранные рейтинги ПО – хороший способ найти что-то новое и полезное. Старый  добрый американский IT-портал Infoworld каждый год публикует подборку «лучших продуктов года» в сфере разработки ПО, облачных решений, ML и обработки данных. Наверняка в него затесались «засланные казачки», проплатившие свое размещение, но есть и по-настоящему перспективные решения, о которых в Рунете еще не известно. 

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

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

Domain Driven Design на практике

Reading time12 min
Views271K
Эванс написал хорошую книжку с хорошими идеями. Но этим идеям не хватает методологической основы. Опытным разработчикам и архитекторам на интуитивном уровне понятно, что надо быть как можно ближе к предметной области заказчика, что с заказчиком надо разговаривать. Но не понятно как оценить проект на соответствие Ubiquitous Language и реального языка заказчика? Как понять, что домен разделен на Bounded Context правильно? Как вообще определить используется DDD в проекте или нет?

Последний пункт особенно актуален. На одном из своих выступлений Грег Янг попросил поднять руки тех, кто практиукует DDD. А потом попросил опустить тех, кто создает классы с набором публичных геттеров и сеттеров, располагает логику в «сервисах» и «хелперах» и называет это DDD. По залу прошел смешок:)

Как же правильно структурировать бизнес-логику в DDD-стиле? Где хранить «поведение»: в сервисах, сущностях, extension-методах или везде по чуть-чуть? В статье я расскажу о том, как проектирую предметную область и какими правилами пользуюсь.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments18

5 отличных мини-ПК начала мая: офисные, корпоративные и чисто для гиков

Reading time3 min
Views20K

Мини-ПК продолжают поступать на рынок — их производят как крупные корпорации, так и мало кому известные компании, которые начали работу совсем недавно. Тем не менее, интересных проектов огромное количество. Среди них мы выбрали 5, которые нам показались наиболее интересными. Подробнее — под катом.
Читать дальше →
Total votes 37: ↑34 and ↓3+45
Comments19

ViennaNET: набор библиотек для backend’а. Часть 2

Reading time6 min
Views5.2K
Сообщество .NET-разработчиков Райффайзенбанка продолжает краткий разбор содержимого ViennaNET. О том, как и зачем мы к этому пришли, можно почитать в первой части.

В этой статье пройдемся по еще не рассмотренным библиотекам для работы с распределенными транзакциями, очередями и БД, которые можно найти в нашем репозитории на GitHub (исходники лежат здесь), а Nuget-пакеты здесь.


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

Information

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