Как стать автором
Обновить
20
0
Даниил Васильев @hello_my_name_is_dany

Backend Engineer

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

Docker Swarm для самых маленьких

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

Данная статья посвящена настройке и работе с Docker Swarm.

Swarm это стандартный оркестратор для docker контейнеров, доступный из «коробки», если у вас установлен сам docker.

Что нам потребуется для освоения:

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

Создание процессора с нуля для чайников

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

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

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

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

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

Ruby Telegram Mini App

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

Разрабатываем telegram mini-app используя Ruby on Rails

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

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

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

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

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

Читать далее
Всего голосов 38: ↑37 и ↓1+45
Комментарии32

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

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

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

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

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

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

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

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

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

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

Python для gambling'a. Часть 1 — Сбор данных

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

Предисловие

Простой python-cкрипт для парсинга спортивной статистики по баскетболу с популярного сайта

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

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

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

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

О чем речь?

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

Читать далее
Всего голосов 26: ↑24 и ↓2+25
Комментарии6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 8: ↑6 и ↓2+5
Комментарии18

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

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

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

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

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

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

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

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

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

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

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

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

Что там уже в списке?
Всего голосов 42: ↑41 и ↓1+51
Комментарии23

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

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



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

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

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

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

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

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

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

Алгоритм ECDSA

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

Алгоритм 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).

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

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

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

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

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

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

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

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

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

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

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

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

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

Информация

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