Pull to refresh
3
0
Алексей @ParaPilot

User

Send message

[DotNetBook] Структура экземпляров типов и VMT

Reading time14 min
Views14K
С этой статьей я продолжаю публиковать целую серию статей, результатом которой будет книга по работе .NET CLR, и .NET в целом.

Вся книга будет доступна на GitHub: CLR Book. Так что Issues и Pull Requests приветствуются :)

Это — выжимка из главы про структуру типов и их VMT.

Структура объектов в памяти


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

Примечание


Глава, опубликованная на Хабре не обновляется и возможно, уже несколько устарела. А потому, прошу обратиться за более свежим текстом к оригиналу:




Читать дальше →

Мой первый контейнер без Docker

Level of difficultyMedium
Reading time6 min
Views42K

Технологии контейнеризации, возможно, как и у большинства из нас, плотно засели в моей голове. И казалось бы, просто пиши Dockerfile и не выпендривайся. Но всегда же хочется узнавать что‑то новое и углубляться в уже освоенные темы. По этой причине я решил разобраться в реализации контейнеров в ОС на базе ядра linux и в последствие создать свой «контейнер» через cmd.

Читать далее

SOLID на котиках: коротко и по делу

Level of difficultyEasy
Reading time5 min
Views16K

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

В этой статье рассмотрим, как внедрять эти принципы с умом, и да, будет немного котиков — куда без них.

Читать далее

Надоело постоянно пользоваться телефоном, поэтому написал замену Google Authenticator в виде TUI

Level of difficultyEasy
Reading time7 min
Views34K

Мне надоело постоянно использовать Google Authenticator и переключаться между ПК и телефоном для подтверждения двухфакторной (мультифакторной) аутентификации. Красивых и функциональных TOTP (Time-based one-time password) хранилок в терминале я не нашел, поэтому сделал эту TUI, которая позволит хранить, управлять, просматривать, копировать 2FA ключ в пару нажатий с поддержкой VIM управления. Ну и просто мне было интересно, какого это создавать свои TUI приложения.

Читать далее

Как сделать из iPhone dumb phone и начать жить осознаннее

Level of difficultyEasy
Reading time2 min
Views13K

В этой статье я расскажу, что такое dumb phone, кому он нужен и как превратить свой iPhone в минималистичный гаджет. А если это вам не нужно, то, как минимум, вы сможете красиво настроить телефон :b

Читать далее

Мозг под микроскопом: как стареют наши клетки и что с этим делать?

Level of difficultyMedium
Reading time6 min
Views3.2K

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

Читать далее

Можно ли уместить игру Minecraft всего в один QR-код?

Reading time15 min
Views24K

Ответ: да! И вот же он:

Игра запускается, и вы можете перемещаться по миру 64x64x64 при помощи клавиш WASD. Пробелом прыгаем, мышью осматриваемся. Щёлкнув левой кнопкой мыши, можно разрушить блок, а правой — установить землю.

Можно просмотреть QR-код при помощи следующей команды под Linux:

zbarcam -1 --raw -Sbinary> /tmp/m4k &&chmod +x /tmp/m4k  && /tmp/m4k

-1: выйти после того, как код будет просканирован

--raw: не обрабатывать его как текст

--Sbinary: воспользоваться двоичной конфигурацией

Проект выложен на GitHub здесь:TheSunCat/Minecraft4k

Читать далее

Сортировка «Милосердный Сталин»

Level of difficultyMedium
Reading time7 min
Views26K

Merciful Stalin Sort (сортировка «Милосердный Сталин») — это новый алгоритм сортировки, вдохновлённый пресловутым Stalin Sort (сталинской сортировкой). В ходе развлекательного эксперимента со сталинской сортировкой возникла интригующая идея: что, если вместо удаления выбивающихся элементов, сохранить те, которые идут по порядку, и рекурсивно упорядочить остальные? Логика заключалась в том, чтобы добиться повышения производительности за счёт уменьшения массива, требующего сортировки, особенно в случае частично упорядоченных массивов. Это и привело к разработке сортировки «Милосердный Сталин».
Читать дальше →

MassTransit и очередь в базе данных

Level of difficultyMedium
Reading time6 min
Views2.8K

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

Недавно в новой версии MassTransit вышла относительно свежая фича, SQL Transport, которая позволяет использовать базу данных вместо традиционных брокеров сообщений, при этом оставляя доступными тонну фичей работающих на традиционных брокерах. Ретраи, ределивери, роутинг, все продолжает работать. Такая обратная совместимость в теории позволяет легко заменять несложные конфигурации RabbitMQ на SQL Transport и обратно.

Я попробовал эту фичу, посмотрел на нее с разных сторон и сегодня хочу поделиться своими впечатлениями.

Читать далее

Как спроектировать игровую математическую модель, забалансить её и не сдуреть. Разбор на практических кейсах

Level of difficultyEasy
Reading time17 min
Views19K

Мы идём от общего к частному. Задаём системе вопросы на самом общем уровне и постепенно углубляемся в детализацию. Если на какой-то вопрос мы не смогли ответить, значит, скорее всего, мы пропустили какой-то более общий вопрос, от которого зависит рассматривая ступень детализации, в этом случае не стесняемся вернуться на один или несколько уровней абстракции назад.

Читать далее

Ускоряем кэш серверы YouTube. Не VPN

Reading time4 min
Views112K

Недавно попалась статья на Хабре — «Решаем проблему устаревания кэширующих серверов. Смотрим на телевизоре. Не VPN» от автора @CyberexTech проделал все шаги по ней, но с моим провайдером YouTube не заработал. Соответственно решил опробовать другие решения, одно из которых в итоге сработало, настроил его также через Raspberry Pi. В этой статье делюсь опытом настройки на случай, если решение от @CyberexTech у вас не сработало.

Читать далее

CSS Grid Layout: Асимметричная резиновая сетка

Reading time2 min
Views11K

В веб-дизайны сетки, как в Pinterest уже давно не являются чем-то новым. Но что, если нужно сделать блоки различной высоты, при этом сохранив адаптивность. Оказывается, это можно сделать, используя только стандартные возможности CSS Grid Layout.

Читать далее

Разбираемся в проектировании микросервисов. Основные паттерны (Часть 1)

Reading time6 min
Views30K

Привет, Хабр!

Меня зовут Сергей Громов, я работаю в IT уже 30 лет. Прошел путь от программиста на Assembler и преподавателя до ведущего системного аналитика.

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

Читать далее

Мне 34, я был в 65 странах, и у меня есть для вас лайфхак

Level of difficultyEasy
Reading time4 min
Views101K

Вы же попались на этот кликбейт?

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

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

Читать далее

Tree Structure in EF Core: How to configure a self-referencing table and use it

Reading time4 min
Views30K

One of the very common questions I am getting from .NET community is how to configure and use the tree structures in EF Core. This story is one of the possible ways to do it.


The common tree structures are file tree, categories hierarchy, and so on. Let it be folders tree for example. The entity class will be a Folder:


public class Folder
{
    public Guid Id { get; set; }
    public string Name { get; set; }      
    public Folder Parent { get; set; }
    public Guid? ParentId { get; set; }
    public ICollection<Folder> SubFolders { get; } = new List<Folder>();
}
Read more →

IdentityServer4. Основные понятия. OpenID Connect, OAuth 2.0 и JWT

Reading time5 min
Views41K

Этим постом я хочу открыть ветку статей посвященную IdentityServer4. Начнем мы с основных понятий.


Самым перспективным на текущий момент протоколом аутентификации является OpenID Connect, а протоколом авторизации (предоставления доступа) является OAuth 2.0. IdentityServer4 реализует эти два протокола. Он оптимизирован для решения типичных проблем безопасности.

Читать дальше →

Ory Kratos — коробочный SSO

Level of difficultyMedium
Reading time9 min
Views11K

Ory Kratos - современный cloud native сервер идентификации с поддержкой PassKeys, MFA, FIDO2, TOTP, WebAuthn, с возможностью управления профилями, схемами пользователей, входом через внешние сервисы, регистрацией, восстановлением аккаунта, с поддержкой passwordless входа. Написан на Go, headless, API-first.

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

Читать далее

Нужна ли айтишнику вышка? Инфоцыганство от государства

Level of difficultyEasy
Reading time7 min
Views74K

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

Читать далее

Что нужно знать и уметь начинающему специалисту по ремонту ноутбуков? Часть 1

Reading time4 min
Views23K

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

Все, о чем говорится в статье, — лишь основа по ремонту ноутбуков и других девайсов. Если у вас есть свои мысли по этому поводу — оставляйте их в комментариях.
Читать дальше →

Оцениваем сложность алгоритмов на C# по памяти и времени с примерами

Level of difficultyHard
Reading time10 min
Views12K

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

Читать далее
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity