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

Backend Engineer

Send message

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

Микросервисный фреймворк Flogo — собираем систему из кирпичиков

Reading time8 min
Views4.6K

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

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

Кто такой Thread Pool и как его написать своими руками на С++

Level of difficultyEasy
Reading time12 min
Views39K

Thread Pool достаточно популярный паттерн в программировании, с которым рано или поздно сталкивается каждый первый программист. Если вы новичок и не хотите бездумно пользоваться пулом потоков, то эта статья поможет вам разобраться с его устройством и написать наивные реализации с использованием С++ 14 и С++ 17. Так же статья будет полезна всем, кто изучил теорию по многопоточности, но не знает как можно применить свои знания.

Читать далее
Total votes 7: ↑3 and ↓40
Comments9

Разрабатываем приложение на Golang + gRPC + gRPC Gateway

Reading time5 min
Views20K

Сегодня я хотел бы поделиться особенностью разработки сервисов на Golang вместе с протоколом gRPC. В этой статья я не буду рассказывать, что такое gRPC, protobuf и для чего они нужны, вместо этого я сосредоточусь на технической части.

Мы напишем простое приложение на Golang, который в качестве транспортного протокола будет использовать gRPC, а так же с помощью gRPC Gateway мы подключим поддержку RESTful API.

Читать далее
Total votes 3: ↑1 and ↓20
Comments4

О Thread и ThreadPool в .NET подробно (часть 1)

Reading time15 min
Views40K

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

А потому мы пройдёмся в первую очередь по IO-/CPU-bound операциям, стоимости создания потока, базовым основам работы пула потоков (но только основы), а далее -- углубимся в анализ чёрного ящика: от чего зависит производительность пула потоков? Каков объём работы приемлим для того чтобы в него планировать?

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

Также отмечу, что материал постепенно переходит от начального уровня сложности ? через ⚠️ средний уровень к ☠️ высокому, о чём вы сможете узнать по пиктограммам.

Погрузиться в знания
Total votes 25: ↑24 and ↓1+34
Comments11

О Thread и ThreadPool в .NET подробно (часть 2)

Reading time13 min
Views18K

В предыдущей публикации мы рассмотрели некоторые базовые вопросы относительно потоков и пулов потоков и готовы двигаться дальше. Давайте проведём эксперимент и найдём правильный объём работы для пула потоков. Чтобы его издержки не давлели над объёмом полезной работы

⚠️ Материал средней сложности

С другой стороны, показанные примеры доказывают, что на производительность сильно влияет гранулярность элементов работы. Имеется ввиду, конечно же, длительность работы делегатов. Чтобы достичь хороших показателей, гранулярность работы не может быть абы какой: она должна быть правильной. И помимо планирования задач на ThreadPool, планировать их можно также как через TPL так и через какой-либо свой собственный пул потоков. Например, если взять обычный ThreadPool, то можно примерно измерить издержки алгоритмов ThreadPool в тактах Time Stamp Counter счётчика времени (можно, конечно и в чём-то более привычном типа микросекунд, но там на многих сценариях вполне могут быть нули)

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

Создание собственного React с нуля

Reading time22 min
Views10K

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

Хотя многие разработчики успешно применяют такие библиотеки как React или Vue, понимание их точной внутренней работы не слишком широко изучено. В этой статье я расскажу о создании собственной библиотеки реактивного рендеринга, и разъясню, что происходит под капотом.

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

План самостоятельного обучения DDD, CQRS, EventSourcing

Reading time7 min
Views42K

Если вы собрались плотно погрузиться в тему Doman Driven Design (DDD), о том как его применять, как использовать, для чего он нужен, и как с ним связаны Command and Query Responsibility Segregation (CQRS), Event Sourcing и другие термины из мира DDD то можно воспользоваться планом обучения, который последовательно погрузит вас в эти темы и поможет сориентироваться. Часть информации на русском, часть на английском языке, так как русскоязычных аналогов я не смог найти.

Погрузиться в DDD
Total votes 32: ↑31 and ↓1+34
Comments4

Tarantool: ускорение разработки с Rust

Reading time17 min
Views13K

Tarantool, как известно, поддерживает любой язык, который совместим с C и компилируется в машинный код. В том числе есть возможность реализации хранимых функций и модулей на Lua и C. Тем не менее, уже в двух своих проектах мы использовали Rust (в одном полностью перенесли Lua-код на Rust) и получили 5-кратное увеличение производительности по сравнению с Lua и сопоставимый результат, который дает по производительности C.

Читать далее
Total votes 41: ↑39 and ↓2+47
Comments27

Блокчейн на C# (.Net Core 3.1), Часть 0

Reading time5 min
Views17K

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

под кат
Total votes 23: ↑16 and ↓7+11
Comments13

Кошелек с нуля в 2020 году: технологии, вызовы, решения

Reading time16 min
Views8.7K

Большую часть своей рабочей биографии я занимаюсь различными финтех продуктами – Яндекс.Деньги, 1ЦУПИС и так далее. Последние два года я разрабатываю очередное платежное решение и хочу рассказать о некоторых задачах, с которыми мы встретились. Но мне интересно рассказать не только про появившиеся решения, но и, в первую очередь, про то, как вообще можно думать про архитектуру сложных систем.

Читать далее
Total votes 19: ↑17 and ↓2+18
Comments21

Архитектура PlayStation 3, часть 1: Cell

Reading time24 min
Views37K

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

В то же время, их новый "суперпроцессор", Cell Broadband Engine, был разработан в эпоху кризиса инноваций. Он должен будет идти в ногу с развитием тенденций в области мультимедиа.

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

Что должен, но не знает про конкуренцию в PostgreSQL каждый разработчик?

Reading time13 min
Views21K

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

Читать далее
Total votes 37: ↑36 and ↓1+42
Comments6

Автоматическая генерация лога изменений проекта с помощью GitLab

Reading time7 min
Views20K

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

Читать далее
Total votes 21: ↑20 and ↓1+22
Comments7

Блеск и нищета модели предметной области

Reading time28 min
Views51K


Мартин Фаулер в книге «Patterns of Enterprise Application Architecture» описывает «Модель предметной области (Domain Model)» как сложный подход к организации бизнес-логики. Метод заключается в создании классов, соответствующих объектам предметной области из реального мира как с точки зрения структуры данных, так и поведения. При этом технические аспекты, такие как хранение данных, аутентификация и авторизация, управление транзакциями, выносится за пределы слоя бизнес-логики. Паттерн реализуется одним из двух способов:

  1. Богатая (насыщенная) модель — данные и поведение инкапсулируются внутри объектов предметной области.
  2. Анемичная модель — в объектах предметной области инкапсулируются только данные, поведение (методы) выносится в отдельный слой сервисов.

Фаулер и Эванс считают анемичную модель анти-паттерном. Однако многие кодовые базы, с которыми мне доводилось работать, реализованы именно в стиле «анемичной» модели. Под катом расшифровка и видео моего доклада с DotNext 2019 Moscow, посвященного сравнению сильных и слабых сторон обоих подходов и не очевидным деталям реализации модели предметной области в парадигме ООП и в функциональном стиле.
Читать дальше →
Total votes 36: ↑34 and ↓2+45
Comments46

Если крысе не давать спать, она умрёт через 3 недели — как работают мозг и сон

Reading time19 min
Views47K

Посмотрела 2х-часовую лекцию профессора МГУ Вячеслава Дубынина про влияние сна на мозг и мозга на сон. Под катом конспект минут на 20 чтения. Если попытаться сжать до 1 минуты, то получится что-то вроде этого:

  • Сколько нужно спать. Индивидуально, от 6 до 10 часов — для взрослого человека в пределах нормы.
  • Гигиена сна — правила, чтобы нормально засыпать и высыпаться. (Просто якорь на слайд-список).
  • Биологические часы — реальный физиологический процесс, который ориентируется на циркадные ритмы. Смена часовых поясов и работа по сменам «расшатывает» механизмы биологических часов.
  • Спать надо ложиться не позже, чем… — фигня. Просто в одно и то же время.
  • Если вы спите днем, купите себе хорошие шторы. Мелатонин коррелирует с освещением. Если в глаза (даже закрытые) светит солнце, вы не отдыхаете полноценно.
  • Сколько можно не спать. Без необратимых серьезных последствий взрослый человек выдержит до 4-х суток.
  • Сон делится на медленную и парадоксальную фазы.
  • Медленная фаза сна — про очищение организма. Если нет медленной фазы сна, иммунитет, эндокринка, обменные процессы и гомеостаз идут лесом. Экспериментальные крысы умирают на 15-20 день без сна от воспаления, когда кишечные бактерии попадают в кровь.
  • Парадоксальная фаза сна участвует в обработке информации. По уровню электрической активности мозга она близка к состоянию активного решения сложных задач.
  • Когда правильно просыпаться. На переходе от парадоксальной фазы к медленной.
  • Как определить на глаз, когда можно будить. Когда человек лежал спокойно и начал ворочаться, можно будить.
  • Кофеин не позволяет организму получить сигнал об усталости, но не дает дополнительную энергию.
  • Как затормозить перевозбужденную нервную систему нежно. Фенобарбитал в малых дозах — корвалол, валокордин, валосердин. Противогистаминные препараты.

Читать дальше →
Total votes 89: ↑86 and ↓3+104
Comments32

Как сделать пейволл, который пройдёт модерацию Apple

Reading time3 min
Views4.4K

В этой статье расскажу про пейволлы: где в них есть пространство для экспериментов, а где нужно строго придерживаться гайдлайнов Apple, чтобы приложение прошло ревью и попало в App Store.

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

Мониторинг оборудования Eltex по протоколу SNMPv3

Reading time3 min
Views19K

В этой статье речь пойдет про мониторинг оборудования Eltex по протоколу SNMPv3 в Zabbix. Ранее мы рассматривали устройство протокола SNMPv3, теперь же сосредоточимся на прикладной задаче по мониторингу коммутаторов и маршрутизаторов.

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

Websocket API на nodejs по новому

Reading time5 min
Views20K

О чем эта статья?

1. uWebsockets.js - высокопроизводительная реализация http/websocket сервера для nodejs

2. AsyncAPI - спецификация для асинхронного API, с помощью которой можно создать описание Websocket API

3. Простой пример websocket API с использованием библиотеки wsapix:
- создадим websocket сервер, используя uWebsockets.js
- настроим валидацию получаемых и отправляемых сообщений
- добавим генерацию документации из кода

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments9

Information

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