Pull to refresh
0
0

asdf

Send message

X.509 своми силами в .Net Core

Reading time6 min
Views17K

image


Некоторое время назад я задался вопросом, можно ли наладить фабрику сертификатов, не прибегая к утилите openssl. Как подвести «под кнопку» весь процесс от генерации ключей до проверки подлинности. Забегая вперед, скажу, что пространство System.Security.Cryptography в этом плане является вполне самодостаточным. В статье я рассмотрю этапы создания сертификатов, экспорт в форматы pem и pkcs12, хранение сертификатов в файловой системе, а также проверку подлинности, используя только классы из System.Security.Cryptography.

Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments4

Основы компьютерной геометрии. Написание простого 3D-рендера

Reading time30 min
Views50K
Привет меня зовут Давид, а вот я собственной персоной отрендеренный своим самописным рендером:

image

К сожалению я не смог найти более качественную бесплатную модель, но все равно выражаю благодарность заморскому скульптору запечатлевшему меня в цифре! И как вы уже догадались, речь пойдет о написании CPU — рендера.
Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments21

A* pathfinding на C#: двоичные кучи и борьба с аллокациями

Reading time20 min
Views14K
Сегодня мы разбираем один из популярнейших алгоритмов поиска пути. Работать будем с двумерным массивом целочисленных координат.

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

Я был изумлен, когда поверхностный поиск не выдал мне ни одной качественной реализации алгоритма A* на C# без использования сторонних библиотек (это не значит, что их нет). А значит самое время размять пальцы!

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

Приступим!
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments15

Как расшифровать прошивку автомобиля в неизвестном формате

Reading time8 min
Views25K

Toyota распространяет свои прошивки в недокументированном формате. Мой заказчик, у которого автомобиль этой марки, показал мне файл прошивки, который начинается так:

CALIBRATIONêXi º
attach.att
ÓÏ[Format]
Version=4

[Vehicle]
Number=0
DateOfIssue=2019-08-26
VehicleType=GUN1**
EngineType=1GD-FTV,2GD-FTV
VehicleName=IMV
ModelYear=15-
ContactType=CAN
KindOfECU=0
NumberOfCalibration=1

[CPU01]
CPUImageName=3F0S7300.xxz
FlashCodeName=
NewCID=3F0S7300
LocationID=0002000100070720
CPUType=87
NumberOfTargets=3
01_TargetCalibration=3F0S7200
01_TargetData=3531464734383B3A
02_TargetCalibration=3F0S7100
02_TargetData=3747354537494A39
03_TargetCalibration=3F0S7000
03_TargetData=3732463737463B4A

3F0S7300forIMV.txt ¸Ni¶m5A56001000820EE13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E2030133E2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E2030133E2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E20911381959FAB0EE9000
81C9E03ADE35CEEEEFC5CF8DE9AC0910
38C2E031DE35CEEEEFC8CF87E95C0920
...

Дальше идут строки по 32 шестнадцатеричные цифры.

Хозяину и прочим умельцам хотелось бы перед установкой прошивки иметь возможность проверить, что там внутри: засунуть ее в дизассемблер и посмотреть, что она делает.
Читать дальше →
Total votes 64: ↑62 and ↓2+60
Comments33

10 отличных Github репозиториев для разработчиков (часть 2)

Reading time4 min
Views16K

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



Как и в прошлом случае, перевод будет довольно вольным: я опустил предисловие и эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, поехали.
Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments5

10 отличных Github репозиториев, которые должен знать каждый веб-разработчик

Reading time3 min
Views97K

Кроме огромных репозиториев с источниками для подготовки к интервью, здесь много чего интересного


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


image


А я его перевел, т.к. показалось, что пост многим будет интересен. Перевод очень вольный: я опустил нерелевантные промо-ссылки и гипер эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, перейдем к списку.
Читать дальше →
Total votes 76: ↑69 and ↓7+62
Comments8

Драйвер-фильтр операций в реестре. Практика

Reading time6 min
Views4.7K
Привет, Хабр!

Когда передо мной встала задача написать свой драйвер, осуществляющий мониторинг операций в реестре, я, конечно же, полезла искать на просторах интернета хоть какую-то информацию по этому поводу. Но единственное, что вылезало по запросу «Драйвер-фильтр реестра» — поток статей по написанию драйвера-фильтра (ура), НО все эти статьи касались только фильтра файловой системы (печаль).

К сожалению, единственное, что удалось найти — статью 2003 года, код из которой вы никогда не соберете в своей новенькой VS19.

К счастью же, есть прекрасный пример от Microsoft на GitHub (сразу кидаю ссылочку), на котором и будет строиться бОльшая часть этого разбора.

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

Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments4

Перехватываем запуск любого приложения в Windows и пытаемся ничего не сломать

Reading time14 min
Views51K

Если вы много занимаетесь отладкой приложений под Windows — вы, возможно, слышали о таком замечательном механизме, как Image File Execution Options (IFEO). Одна из предоставляемых им возможностей позволяет отлаживать приложение в условиях, более приближенных к боевым. Записав в нужное место в реестре специальный ключик, мы можем вместо программы автоматически запускать её отладчик, позволяя ему делать свои отладочные дела. Однако кто сказал, что этот механизм (фактически — перехвата запуска чего угодно) можно использовать только в подобных целях? Эта статья вовсе не об использовании вещей по назначению.


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

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

Бот для мониторинга веб-сервисов за полчаса: telegram + bash + cron

Reading time8 min
Views41K


Иногда нужно быстро сделать мониторинг для нового сервиса, а готовой инфраструктуры/экспертизы под рукой нет. В этом гайде мы за полчаса реализуем инструмент для мониторинга любых веб-сервисов, используя только встроенные средства ubuntu: bash, cron и curl. Для доставки оповещений будем использовать telegram.

«Вишенкой на торте» будет эмоциональное вовлечение пользователей. Проверено на людях — работает.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments15

Rhasspy — опенсорсный и полностью офлайновый речевой тулкит. Распознавание русского языка. Никаких утечек в облако

Reading time3 min
Views35K

Фото из сравнения микрофонных массивов для DIY-устройств типа самодельной умной колонки

Системы вроде Amazon Echo передают в облако для хранения ваши конфиденциальные разговоры (даже записанные случайно). В некоторых случаях записи прослушиваются живыми операторами. Это не просто потеря конфиденциальности. Это как добровольно впустить в свою квартиру «товарища майора», который стоит рядом 24 часа в сутки, слушает и внимательно записывает, притворяясь услужливым ассистентом.

Вместо покупки коммерческой системы у корпораций типа Google, Amazon или «Яндекс», вы можете собрать аналогичную опенсорсную систему на базе Raspberry Pi 2-3 B/B+, персонального компьютера или ноутбука.

Rhasspy — безопасный голосовой помощник, который работает автономно. Он ничего не передаёт на удалённые сервисы, при этом успешно справлятся с распознаванием речи и голосовых команд.
Читать дальше →
Total votes 48: ↑44 and ↓4+40
Comments51

ConfigureAwait: часто задаваемые вопросы

Reading time20 min
Views130K
Привет, Хабр! Представляю вашему вниманию перевод статьи «ConfigureAwait FAQ» автора Стивен Тауб.

image

Async/await добавили в .NET более семи лет назад. Это решение оказало существенное влияние не только на экосистему .NET — оно также находит отражение во многих других языках и фреймворках. На данный момент реализовано множество усовершенствований в .NET с точки зрения дополнительных языковых конструкций, использующих асинхронность, реализованы API-интерфейсы с поддержкой асинхронности, произошли фундаментальные улучшения в инфраструктуре, благодаря которым async/await работает как часы (в особенности, улучшены возможности производительности и диагностики в .NET Core).

ConfigureAwait — один из аспектов async/await, который продолжает вызывать вопросы. Надеюсь, у меня получится ответить на многие из них. Я постараюсь сделать эту статью читаемой от начала до конца, и вместе с тем выполнить ее в стиле ответов на часто задаваемые вопросы (FAQ), чтобы на нее можно было ссылаться в последующем.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments18

Делаем один проект плагина с компиляцией под разные версии Revit/AutoCAD

Reading time13 min
Views10K


При разработке плагинов для САПР приложений (в моем случае это AutoCAD, Revit и Renga) со временем появляется одна проблема – выходят новые версии программ, меняется их API и нужно делать новые версии плагинов.


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


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

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

Делаем интерактивный план местности за 15 минут

Reading time10 min
Views18K


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

Total votes 16: ↑15 and ↓1+14
Comments2

DeepFake своими руками [часть 1]

Reading time4 min
Views37K
Не смотря на все прелести интернета, у него есть много минусов, и один из самых ужасных – это введения людей в заблуждение. Кликбейт, монтаж фотографий, ложные новости – все эти инструменты активно используются для обмана обычных пользователей в мировой сети, но в последние годы набирает обороты новый потенциально опасный инструмент, известный как DeepFake.

Меня данная технология заинтересовала недавно. Впервые о ней я узнал из доклада одного из спикеров на “AI Conference 2018”. Там демонстрировалось видео, в котором по аудиозаписи алгоритм сгенерировал видео с обращением Барака Обамы. Ссылка на подборку видео созданных с помощью этой технологии. Результаты меня сильно вдохновили, и мною было принято решение лучше разобраться с данной технологией, чтобы в будущем противодействовать ей. Для этого я решил написать DeepFake на языке C#. В итоге получил такой результат.

image

Приятного чтения!
Total votes 39: ↑35 and ↓4+31
Comments16

SQL. Занимательные задачки

Reading time13 min
Views304K
Здравствуй, Хабр!

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

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



SQL (ˈɛsˈkjuˈɛl; англ. structured query language — «язык структурированных запросов») — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных. Подробнее…

Почитать об SQL можно из разных источников.
Данная статья не преследует цели обучить вас SQL с нуля.
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments63

.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1

Reading time18 min
Views67K
Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.
Вторая часть доступна здесь

Необходимость делать что-то асинхронно, не дожидаясь результат здесь и сейчас, или разделять большую работу между несколькими выполняющими ее единицами была и до появления компьютеров. С их появлением такая необходимость стала очень ощутимой. Сейчас, в 2019, набирая эту статью на ноутбуке с 8 ядерным процессором Intel Core, на котором параллельно этому работает не одна сотня процессов, а потоков и того больше. Рядом, лежит уже немного потрепанный, купленный пару лет назад телефон, у него на борту 8 ядерный процессор. На тематических ресурсах полно статей и видео, где их авторы восхищаются флагманскими смартфонами этого года куда ставят 16ти-ядерные процессоры. MS Azure предоставляет менее чем за 20$/час виртуальную машину со 128 ядерным процессором и 2 TB RAM. К сожалению невозможно извлечь максимум и обуздать эту мощь не умея управлять взаимодействием потоков.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments5

Умный парсер числа, записанного прописью

Reading time10 min
Views29K


Пролог


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


Умным данный парсер делает возможность извлечения чисел из текста с ошибками, допущенными в результате некорректного ввода или в результате оптического распознавания текста из изображения (OCR).


Для ленивых:
Ссылка на проект github: ссылка.


Читать дальше →
Total votes 137: ↑136 and ↓1+135
Comments59

20 игр, чтобы научить ребёнка программированию

Reading time5 min
Views301K
Привет Хабр! Меня зовут Оксана Селендеева. Я считаю, что лучше начинать программировать с юного возраста — 4-5 лет, потому что кодинг активно развивает у детей когнитивные функции мозга, и это впоследствии помогает им отлично усваивать точные науки. А попробовать себя в программированию можно через обучающие игры. Мы с преподавателями школы программирования для детей CODDY составили такую подборку.

Для дошкольников


Box Island — мобильная 3D-игра, которая обучает основам кодирования через увлекательное приключение. Игроки путешествуют по острову Box и помогают персонажу собирать звезды, разбросанные по пустыне. Через игровой квест дети изучают основы алгоритмов, последовательностей, циклов и условных выражений, а ещё игра развивает алгоритмическое мышление и распознавание образов.
Total votes 59: ↑53 and ↓6+47
Comments91

Согласие на обработку данных по GDPR: подробный разбор

Reading time17 min
Views19K


GDPR (или «Регламент») содержит несколько оснований для обработки персональных данных. Эти основания можно условно разделить на две большие группы. Это обработка на основании личного согласия носителя (владельца) персональных данных, и обработка на иных основаниях. В данной статье рассматриваются условия правильного оформления согласия на обработку персональных данных, и не затрагиваются особенности обработки по иным основаниям.

Статья представляет собой краткую выжимку и мою интерпретацию Руководства по согласию в соответствии с Регламентом 2016/679 (Guidelines on consent under Regulation 2016/679) («Руководство») и некоторых документов, на которые есть ссылки в Руководстве.
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments8

Книга «Машинное обучение и TensorFlow»

Reading time7 min
Views16K
image Знакомство с машинным обучением и библиотекой TensorFlow похоже на первые уроки в автошколе, когда вы мучаетесь с параллельной парковкой, пытаетесь переключить передачу в нужный момент и не перепутать зеркала, лихорадочно вспоминая последовательность действий, в то время как ваша нога нервно подрагивает на педали газа. Это сложное, но необходимое упражнение. Так и в машинном обучении: прежде чем использовать современные системы распознавания лиц или алгоритмы прогнозирования на фондовом рынке, вам придется разобраться с соответствующим инструментарием и набором инструкций, чтобы затем без проблем создавать собственные системы.

Новички в машинном обучении оценят прикладную направленность этой книги, ведь ее цель — познакомить с основами, чтобы затем быстро приступить к решению реальных задач. От обзора концепций машинного обучения и принципов работы с TensorFlow, вы перейдете к базовым алгоритмам, изучите нейронные сети и сможете самостоятельно решать задачи классификации, кластеризации, регрессии и прогнозирования.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments4
1
23 ...

Information

Rating
Does not participate
Registered
Activity