Search
Write a publication
Pull to refresh
128
0.3
Evengard @Evengard

Немного: реверсер, администратор, .NET программист

Send message

Обезличенный вызов делегатов в C#

Level of difficultyMedium
Reading time10 min
Views6.1K

Как говорится: сидел, никого не трогал, программировал на C#, и тут родилась «хитрая» нужда. В рамках одного из своих проектов мне понадобился механизм обезличенного вызова делегатов, который бы позволил организовать их универсальные хранение и вызов. Также, главной целью разработки являлся уход от необходимости вызова методов конкретных экземпляров объектов через рефлексию (рефлексия используется только на этапе инициализации), что в конечном счете сильно увеличило производительность.

Обезличенный вызов делегата - вызов делегата с известным количеством параметров, но с неизвестными типами параметров, где каждый тип параметра представлен базовым классом Object. Пример: Action<string, int> преобразуется в Action<object, object>.

Читать далее

Путь стартапа. От идеи до рабочего бизнеса. 18 шагов опыта

Reading time10 min
Views10K

Привет, меня зовут Максим Кульгин. Написал из нашего опыта, как с минимальными вложениями (насчитал прямых затрат на 95 500 руб.) можно сделать ИТ-бизнес в России. В этой статье вы не найдете такие термины, как: 'выгорание', 'питч', 'custdev', 'ментор', 'product market fit', 'k8s', 'mrr/cac/ltv', 'burn rate', 'криптокочевник', 'номад' и т. п. Просто шпаргалка по приземленным этапам, которые проходили мы сами.

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

Подчеркну — речь пойдет про то, как запустить ИТ- бизнес «с нуля» (пусть это будет SAAS, например — сервис транзакционных почтовых рассылок, взамен покинувших наш рынок западных аналогов) до первой выручки. Уже потом надо будет учить упомянутые в заголовке статьи нужные и важные термины.

Итак…попробую расписать по шагам.

1. Идея. Кто-то говорит, что идея имеет решающее значение, а кто-то уверен ровно наоборот — «идея ничего не стоит». Все наши рабочие идеи приходят от запросов клиентов, которые готовы за них платить, а все то, что придумали сами — потерянные деньги и время. Лично мне, например, нравится идея сделать SAAS для транзакционных писем, даже зарегистрировал домен mailcheap.ru (дальше регистрации дело не дошло).

Читать далее

Крякнул софт? Суши сухари

Reading time5 min
Views40K

Именно так считает "товарищ майор", и с подобным утверждением порой соглашается российское правосудие.

С 1997 года в своде законов российских дремлет статья 273 УК РФ (Создание, использование и распространение вредоносных компьютерных программ), карающая не чтившего уголовный закон наказанием вплоть до семи лет лишения свободы.  Судебную практику по данной статье объективно не назовешь обширной, но изучение реальных случаев её применения должно вызывать дрожь и трепет у всякого, возложившего руки на клавиатуру.

Читать далее

Inkscape с 0 до Pro за 5 дней

Reading time17 min
Views60K

Создал мини курс по программе для векторной графики Inkscape в 2022.

Разработал методические материалы для изучения темы «Кодирование и обработка графической и мультимедийной информации» в школьном курсе информатики.

«Векторные графические редакторы позволяют пользователю создавать и редактировать векторные изображения непосредственно на экране компьютера, а также сохранять их в различных векторных форматах, например, CDR, AI, EPS, WMF или SVG». «Inkscape - редактор векторной графики, аналогичный по своим возможностям таким программам, как Adobe Illustrator, Corel Draw и другим».

Читать далее

Немножко кодгена

Reading time5 min
Views11K

В C# давно уже добавили возможность использовать кодогенерацию. Но покопавшись в интернетах не было найдено обширного количество гайдов. Спасибо сайту мс, за наличие информации по данной теме. Но, увы, там она достаточно поверхностна, а подробности можно найти только экспериментальным путем или изучением различных готовых примеров.

Читать далее

Не так страшен Rust, как его излагают

Reading time5 min
Views28K

Последние годы часто хвалят язык программирования Rust. Однако, без изучения синтаксиса и особенностей языка в нём сложно разобраться. Честно говоря, при первом просмотре дальше простых примеров я продвинуться не смог. Вроде догадываешься, что тут указываем тип переменных, амперсанд – это вроде “я только посмотреть”, но всё равно код складывался в некую мешанину иероглифов с кучей скобок и, на первый взгляд, случайно проставленных точек с запятыми. То ли дело Python, минимализм синтаксиса которого так привлекателен для неокрепших душ. Однако, так ли сложен Rust на самом деле или это миф? 

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

Так ли это?

Иммутабельность в C#

Reading time13 min
Views24K

В разработке программного обеспечения иммутабельным (immutable — неизменяемым) называется объект, который после своего создания не может быть изменен. Зачем вам может понадобиться такой объект? Чтобы ответить на этот вопрос, давайте проведем анализ проблем, которые могут возникнуть в результате мутации (изменения) объектов. Вернемся к основам того, что делает каждое приложение: создает, извлекает, обновляет и удаляет данные (CRUD-операции). Ядро любого приложения манипулирует объектами. Ответ на вопрос о том, работает ли приложение в соответствии со своей спецификацией, в первую очередь определяется правильностью обработки данных. Вам необходимо быть уверенными, что код работает правильно, каждый раз, когда он затрагивает какой-либо объект. 

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

Если ваше приложение является многопоточным, иммутабельность должна быть фундаментальной частью вашей архитектуры, поскольку неизменяемые объекты по своей природе являются потокобезопасными и невосприимчивыми к состояниям гонки. Если ваше приложение использует data transport objects (DTO — объекты передачи данных), вам также следует серьезно подойти к иммутабельности ваших объектов. Предметом дискуссий остается лишь то, как наиболее эффективно реализовать и работать с иммутабельными объектами, поскольку C# не предлагает встроенной поддержки таких объектов. Эта статья предлагает ответ на этот вопрос.

Читать далее

Свой Mail Server на Docker за 10 минут

Reading time5 min
Views56K

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

Предпосылки, что и зачем описал тут: статья

Читать далее

RustDesk — self-hosted аналог TeamViewer

Reading time2 min
Views107K

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

Читать далее

Неустаревающие книги?

Reading time6 min
Views37K

Некоторым из этих книг уже очень много лет. Главная книга о паттернах — Design Patterns — увидела свет в 1994-м году, значит, ей уже почти тридцать. По сравнению с ней, Clean Architecture, вышедшая десять лет назад — практически, ребёнок!

Но десять лет для индустрии — гигантский срок. Возможно, эти книги уже устарели и нам они не нужны?

Перечитаем и попробуем разобраться

Собеседование Golang разработчика (теоретические вопросы), Часть II. Что там с конкурентностью?

Reading time20 min
Views91K

Что спрашивают на собеседовании Golang разработчика? Асинхронщина? Контексты? Вторая часть статьи с вопросами и ответами, собранными на собеседованиях.

Читать далее

Пишем свой Credential Provider на C# для авторизации в Windows

Reading time9 min
Views14K

Credential Provider, используется для передачи пользовательских учетных данных в стек безопасности Windows. По умолчанию в системе присутствуют поставщики для входа через пароль, PIN-код, смарт-карту и Windows Hello. Однако что делать если они нам не подходят?

Пишем свой Credential Provider

Windows Chrome: Исправляем задержку звука по Bluetooth

Reading time15 min
Views29K

Когда смотришь youtube на Chrome под Windows с Bluetooth наушниками, аудио отстаёт от видео. А когда на Mac - нет. Как так? Давайте разберёмся и обучим виндовую версию синхронизации звука и видео.

Немного анализа, много реверса и готовое решение, которое слегка обманывает - всё под катом.

Читать далее

«Студенты уговорили угарного профессора из МГУ...»: исследуем новое поколение инвест-гуру в Телеграме

Reading time6 min
Views34K

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

Читать далее

Кошмар самоорганизации в утопии Valve

Reading time11 min
Views44K

В 1884 году Эдвин Эбботт написал рассказ «Равномир» (англ. Flatland, «Флатландия») про двухмерную реальность, населённую квадратами, окружностями и прочими геометрическими фигурами. Однако это общество было жёстко иерархическим, несмотря на кажущуюся «уравномеренность» — чем больше вершин, тем выше твой статус. Вдобавок оно сопротивлялось даже самой мысли о возможности измерений высшего порядка. На этом и выстроена канва рассказа — ведущий повествование Квадрат находится в заключении за проповедь о существовании Трёхмерного Пространства.

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

Читать целиком

«Импортозамещаем» анализ планов PostgreSQL

Reading time4 min
Views11K

Вчера Hubert 'depesz' Lubaczewski закрыл доступ с российских IP ко всем своим сайтам, включая широко известный визуализатор планов PostgreSQL-запросов explain.depesz.com.

Но это не беда, потому что в компании "Тензор" мы разработали сервис explain.tensor.ru, функционал которого гораздо обширнее, и которым можете воспользоваться и вы.

Читать далее

«За границей»: кратко о бюджетных вариантах

Reading time12 min
Views95K

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

Читать далее

Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза

Reading time24 min
Views171K

На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют. 

Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать. 

Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.

Читать далее

Bare-metal kubernetes-кластер на своём локальном компьютере

Reading time8 min
Views33K

Привет, я Кирилл Шаталаев, инженер инфраструктуры и автоматизации в X5 Tech.

Я в курсе, что статей на эту тему достаточно, в том числе и на Habr. И когда у меня возникла задача поднять кластер, я их все перечитал. Где-то очень подробно рассказывается, как ставить виртуалки с убунтой на Windows под virtualbox, и очень скудно про сам кубер. Где-то досконально описано, как это всё круто можно провернуть с terraform в Яндекс.Облаке. Где-то про сам kubespray скупо пару слов, зато куча скриншотов прометея с кибаной.

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

Читать далее

Программируем микроконтроллеры ESP32 и STM32 на C# (nanoFramework)

Reading time31 min
Views61K
dotnet nanoFramework

.NET nanoFramework — это бесплатная платформа с открытым исходным кодом, основанная на .NET и предназначена для малых встраиваемых устройств, микроконтроллеров. С её помощью можно разрабатывать различные устройства для Интернета вещей, носимые устройства, научные приборы, робототехнические устройства, можно создавать прототипы и даже использовать на промышленном оборудовании. В первой части мы познакомились с платформой .NET nanoFramework, её архитектурой, основными возможностями, посмотрели примеры программного кода. Теперь перейдем к практике, установим nanoFramework на микроконтроллеры серии ESP32 и STM32, напишем первый «Hello World!», поработаем с аппаратными интерфейсами, и оценим переносимость кода с «большого» .NET на платформу nanoFramework.
Читать дальше →

Information

Rating
3,349-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Lead
From 500,000 ₽
C#
.NET
PostgreSQL
Docker
Linux
English