Pull to refresh
1
0
Никита @interlocked

.NET developer

Send message

Обработка исключений ASP.NET при помощи IRO.Mvc.MvcExceptionHandler

Reading time6 min
Views4K


Если вы являетесь c# бекенд разработчиком — наверняка у вас рано или поздно появилась необходимость найти унифицированный способ обработки исключительных ситуаций. Хотя, даже если вы довольствуетесь кодом 500 в ответе, эта статья все равно поможет улучшить ваш способ, при этом не заставляя что-либо переписывать.

Речь пойдет об ASP.NET библиотеке, которая позволяет решить эту проблему максимально изящно. Для тех кому лень читать длинную статью — ридми и сама библиотека тут, пример тут. Доступна на nuget.org и я буду только рад если она принесет кому-то пользу. И так, перейдем к коду. Для начала давайте разберем альтернативы.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments0

Книга «Руководство по архитектуре облачных приложений»

Reading time11 min
Views11K
В этом руководстве структурированы рекомендации по проектированию масштабируемых, отказоустойчивых и высокодоступных облачных приложений. Оно призвано помочь вам в принятии решений об архитектуре, независимо от того, какую облачную платформу вы используете.

Руководство организовано как последовательность шагов — выбор архитектуры → выбор технологий для вычисления и хранения данных → проектирование приложения Azure → выбор шаблонов → проверка архитектуры. Для каждого из них приведены рекомендации, которые помогут вам при разработке архитектуры приложения.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments0

Асинхронный рассинхрон: антипаттерны в работе с async/await в .NET

Reading time9 min
Views51K

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



Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments64

Стоит ли сохранять длину массива в локальную переменную в C#

Reading time6 min
Views45K
Очень часто замечаю, что люди пишут вот так:

var length = array.Length;
for (int i = 0; i < length; i++) {
    //do smth
}

Пишут они это в надежде ускорить цикл, думая что создавая локальную переменную избавляют CLR от необходимости вызывать каждый раз геттер для Array.Length. Я решил раз и навсегда для себя понять стоит так делать или можно сэкономить своё время и написать без временной переменной.
Читать дальше →
Total votes 84: ↑83 and ↓1+82
Comments163

Программист на больничном

Reading time10 min
Views268K
— Куды? – грозно спросила бабка, встав спиной к двери.

— Куды надо. – передразнил неопрятный парень, с красными глазами, взъерошенными волосами и в черной футболке с надписью «Король и Шут».

— Ну-ка, не пущай его! – встала со скамейки другая бабка. – Ишь, вумные, без очереди лезут! Мы тут с шости утра стоим!

— Не стоите, а сидите. – ответил парень. – Дайте пройти, я по делу.

— Знаем мы, по какому ты делу! – вступила симпатичная девушка лет тридцати. – Только спросить?

— Да что с вами такое, а? – возмутился парень. – Работаю я здесь! Я – программист!
Читать дальше →
Total votes 118: ↑95 and ↓23+72
Comments214

Полный гайд по бэкордеру доменов

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

Для чего нужен бэкордер


В популярных доменных зонах (.com, .net, .org) заняты самые короткие и звучные домены.
Существует возможность не пользоваться свободными доменами второго сорта, а перехватить хороший. Часто освобождаются даже трехбуквенные домены, минимальная стоимость которых на вторичном рынке — 17800 $.
Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments22

Как отличить криптовалюту от не криптовалюты

Reading time5 min
Views9.2K
Данный материал является умозаключением, которое, как мы считаем, может быть кому-то полезным. Популярность темы криптовалют привела к тому, что так стали называть даже те цифровые валюты, которые криптовалютами не являются. В этой статье мы постарались выделить основные свойства, которыми должна обладать криптовалюта, а также показать общее положение криптовалюты среди всех цифровых активов. Итак, приступим.
Читать дальше →
Total votes 21: ↑12 and ↓9+3
Comments78

Как приручить жесткий диск в ноутбуке и не дать парковаться за 8 секунд простоя

Reading time4 min
Views81K
Итак, вы приобрели новый ноутбук, начинаете его настраивать, устанавливаете операционную систему, весь нужный софт, игрушки. Ничто не предвещает беды. И вот, наконец со всем разобравшись, можно расслабиться и почитать интересную статью в интернете. Но что-то нарушает ваш покой. Странные щелчки доносятся из недр устройства…
Читать дальше →
Total votes 26: ↑21 and ↓5+16
Comments88

Авторизация с помощью сертификата ssl на nginx + Let's Encrypt

Reading time4 min
Views34K
Добрый день, вечер или ночь, все зависит от времени суток в который вам довелось прочитать мою статью.

В связи с ростом количества корпоративных клиентов, было принято решение дать доступ к учетной системе внешним пользователям. Для самостоятельного оформления заказов и отслеживания их состояний. Реализация была создан web интерфейс с необходимым функционалом и доступом. Тут же стал вопрос безопасности, кроме стандартных пользователь-пароль было решено еще усилить безопасность, для этого применили OpenVPN, но появились клиенты, для которых нельзя применять OpenVPN (политики безопасности, нежелания и.д.), тут на глаза попались статьи про доступ по ssl сертификату.


Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments17

Интересные сюрпризы ConcurrentDictionary (+разбор задачи с DotNext 2017 Moscow)

Reading time5 min
Views29K

Привет всем, кто пишет код для .NET, особенно многопоточный. Редко встретишь потокобезопасный код без потокобезопасных коллекций, а значит, нужно уметь ими пользоваться. Я расскажу о самой популярной из них — ConcurrentDictionary. В ней спрятано на удивление много интересных сюрпризов: как приятных, так и не очень.


Сначала разберём устройство ConcurrentDictionary и вычислительную сложность операций с ним, а затем поговорим об удобных трюках и подводных камнях, связанных с memory traffic и сборкой мусора.


Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments3

Предсказание случайных чисел в умных контрактах Ethereum

Reading time10 min
Views14K


Ethereum приобрёл огромную популярность как платформа для первичного размещения монет (ICO). Однако она используется не только для токенов ERC20. Рулетки, лотереи и карточные игры — всё это можно реализовать на блокчейне Ethereum. Как любая реализация, блокчейн Ethereum не поддаётся подделке, он децентрализован и прозрачен. Ethereum допускает выполнение тьюринг-полных программ, которые обычно пишут на языке программирования Solidity. По словам основателей платформы, это превращает систему во «всемирный суперкомпьютер». Перечисленные характеристики полезны в приложениях для азартных игр, где особенно важно доверие пользователей.

Блокчейн Ethereum является детерминированным и поэтому представляет определённые сложности при написании генератора псевдослучайных чисел (ГПСЧ) — неотъемлемой части любого приложения для азартных игр. Мы решили исследовать смарт-контракты, чтобы оценить безопасность ГПСЧ на Solidity и подчеркнуть характерные ошибки проектирования, которые ведут к появлению уязвимостей и возможности предсказания будущего состояния ГПСЧ.
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments17

Организация виртуальной памяти

Reading time14 min
Views76K
Привет, Хабрахабр!

В предыдущей статье я рассказал про vfork() и пообещал рассказать о реализации вызова fork() как с поддержкой MMU, так и без неё (последняя, само собой, со значительными ограничениями). Но прежде, чем перейти к подробностям, будет логичнее начать с устройства виртуальной памяти.

Конечно, многие слышали про MMU, страничные таблицы и TLB. К сожалению, материалы на эту тему обычно рассматривают аппаратную сторону этого механизма, упоминая механизмы ОС только в общих чертах. Я же хочу разобрать конкретную программную реализацию в проекте Embox. Это лишь один из возможных подходов, и он достаточно лёгок для понимания. Кроме того, это не музейный экспонат, и при желании можно залезть “под капот” ОС и попробовать что-нибудь поменять.
Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments4

Новый год, новые рекорды: найдено 50-е простое число Мерсенна

Reading time7 min
Views20K
2^{77,232,917} - 1

Роли, Северная Каролина, 3 января 2018 года — организация Great Internet Mersenne Prime Search (GIMPS, масштабный Интернет-проект по поиску простых чисел Мерсенна) обнаружила самое большое известное простое число 277232917-1, состоящее из 23 249 425 разрядов. Компьютер волонтёра Джонатана Пейса вычислил его 26 декабря 2017 года. Джонатан — один из тысяч добровольцев, использующих бесплатное ПО GIMPS.

Новое простое число, также известное как M77232917, вычислено перемножением 77 232 917 двоек и вычитанием единицы. Оно примерно на один миллион разрядов больше, чем предыдущее рекордное простое число, в особом классе исключительно редких простых, известных как числа Мерсенна. Это всего пятидесятое открытое простое число Мерсенна; вычисление каждого последующего становится сложнее. Простые числа Мерсенна названы по имени французского монаха Марина Мерсенна, изучавшего эти числа больше 350 лет назад. Основанная в 1996 году GIMPS обнаружила последние 16 простых чисел Мерсенна.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments27

Что такое Хэширование? Под капотом блокчейна

Reading time11 min
Views82K
Очень многие из вас, наверное, уже слышали о технологии блокчейн, однако важно знать о принципе работы хэширования в этой системе. Технология Блокчейн является одним из самых инновационных открытий прошлого века. Мы можем так заявить без преувеличения, так как наблюдаем за влиянием, которое оно оказало на протяжении последних нескольких лет, и влиянием, которое оно будет иметь в будущем. Для того чтобы понять устройство и предназначение самой технологии блокчейн, сначала мы должны понять один из основных принципов создания блокчейна.
Читать дальше →
Total votes 22: ↑13 and ↓9+4
Comments5

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

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

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

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

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


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

Примечание


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




Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments3

Боты на .Net Core для Telegram, Slack и Facebook

Reading time8 min
Views89K
Недавно на одном из проектов банка возникла задача написать бота. Итогом этого опыта стал данный текст, который предназначен, прежде всего, для начинающих разработчиков.



Практически все, кто пользуется современными средствами обмена сообщениями, сталкивались с ботами. Одно из определений бота – это программа, выполняющая автоматически и/или по заданному расписанию какие-либо действия через интерфейсы, предназначенные для людей.

Боты могут использоваться для информирования, для автоматизации процессов (например, автоматической генерации задачи в TFS на основе письма пользователя) и для многих других целей, но т.к. одной статьи не хватит, чтобы рассмотреть все варианты, далее пойдёт рассказ лишь о том, как создать бота для обработки команд.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments14

Как написать свой сваггер и не пожалеть об этом

Reading time12 min
Views23K
image

Как-то раз моему коллеге в беклог упала задача «хотим организовать взаимодействие с внутренним REST-api так, чтобы любое изменение контракта сразу приводило к ошибке компиляции». Что может быть проще? – подумал я, однако работа с получившимся кактусом вынудила заняться многочасовым курениям документации, спуску от привычных концепций оверинжинеринга «налепим побольше интерфейсов, добавим максимум косвенности, и приправим всё это DI» до переезда на .Net Core, ручной кодогенерации промежуточного ассемблера и изучения нового компилятора C#. Лично я для себя открыл много интересного как в рантайме, так и в структуре самого компилятора. Думаю, некоторые вещи хабровчане уже знают, а некоторые станут полезной пищей для размышления.
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments29

To box or not to Box? That is the question

Reading time5 min
Views9.8K
Нашел интересный блог про .NET (C#), который мне очень понравился. Постараюсь время от времени переводить для Вас интереснейшие статьи и будем вместе обсуждать. Спасибо автору за прекрасный материал.

Недавно я заметил, что метод Equals из нашей структуры ValueTuple (*) генерирует значительный memory traffic (~1 ГБ).
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments12

Подробный разбор решения crackme01_x64

Reading time5 min
Views26K
Данная статья рассчитана на начинающих, интересующихся обратной разработкой, и имеющих базовые представления о работе ЦП, языке ассемблера. Этот crackme относительно старый и простой, но при его решении применяются в основном те же приемы, что и при решении более сложных. На просторах Сети можно найти несколько статей с его разбором такие как эта, а еще он здесь упоминается(crackme то с историей), однако те решения не такие подробные как это. В свое время мне сильно не хватало такого построчного разбора, куда можно было бы заглянуть, когда запутался и не понимаешь что делает тот или иной участок кода. Если этот пост окажется полезным хотя бы для одного человека, значит я не зря старался. Все скрины(кроме первого) кликабельны. Приятного прочтения.

Итак, перед нами простой crackme, запустим его и посмотрим как он работает.


Ага, все довольно просто, мы должны ввести правильный серийник. Теперь откроем программу в дизассемблере. Как правило дизассемблерные листинги, даже относительно простых программ, довольно объемны. Для определения той части кода, которая проверяет ввод серийника, найдем где в памяти программы хранится строка с сообщением об ошибке «Fail, Serial is invalid !!!» и какой код к этой строке обращается.
Читать дальше →
Total votes 49: ↑47 and ↓2+45
Comments19

[DotNetBook] Реализация IDisposable: правильное использование

Reading time22 min
Views39K
С этой статьей я начинаю публиковать целую серию статей, результатом которой будет книга по работе .NET CLR, и .NET в целом. Тема IDisposable была выбрана в качестве разгона, пробы пера. Вся книга будет доступна на GitHub: DotNetBook. Так что Issues и Pull Requests приветствуются :)

Disposing (Disposable Design Principle)



Сейчас, наверное, практически любой программист, который разрабатывает на платформе .NET, скажет, что ничего проще этого паттерна нет. Что это известный из известнейших шаблонов, которые применяются на платформе. Однако даже в самой простой и известнейшей проблемной области всегда найдется второе дно, а за ним еще ряд скрытых кармашков, в которые вы никогда не заглядывали. Однако, как для тех, кто смотрит тему впервые, так и для всех прочих (просто для того, чтобы каждый из вас вспомнил основы (не пропускайте эти абзацы (я слежу!))) — опишем все от самого начала и до самого конца.

IDisposable



Если спросить, что такое IDisposable, вы наверняка ответите что это

public interface IDisposable 
{
	void Dispose();
} 


Для чего же создан интерфейс? Ведь если у нас есть умный Garbage Collector, который за нас чистит всю память, делает так, чтобы мы вообще не задумывались о том, как чистить память, то становится не совсем понятно, зачем ее вообще чистить. Однако есть нюансы.

Примечание


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




Читать дальше →
Total votes 45: ↑40 and ↓5+35
Comments66

Information

Rating
Does not participate
Registered
Activity