Pull to refresh
2
0
Send message

Google Dorking или используем Гугл на максимум

Reading time21 min
Reach and readers453K

Вступление


Google Dorks или Google Hacking — техника, используемая СМИ, следственными органами, инженерами по безопасности и любыми пользователями для создания запросов в различных поисковых системах для обнаружения скрытой информации и уязвимостях, которые можно обнаружить на общедоступных серверах. Это метод, в котором обычные запросы на поиск веб-сайтов используются в полную меру для определения информации, скрытой на поверхности.
Читать дальше →

Ищем уязвимости в TikTok при помощи OSINT

Reading time16 min
Reach and readers23K


Вступление


TikTok — одно из самых популярных приложений для просмотра мобильного видео. В нём зарегистрировано 800 миллионов пользователей. Пользователи создают контент с помощью фильтров, музыки, эффектов. Видео создаются странные, но захватывающие внимание.

Для столь обширной и популярной платформы развлечения есть очень большой пласт минусов, которые постепенно становятся явными для СМИ. Незащищенный HTTP трафик и спуфинг СМС ссылок — это конкретные примеры уязвимости, которые были обнаружены в приложении за последние 3 месяца. Несмотря на это, люди продолжают публиковать видео. Показывают, в какие школы они ходят, видео внутри и за пределами своих домов и даже раздают телефонные номера и другую личную информацию. Именно с этой темы стоит и начать нашу статью.
Читать дальше →

System.Threading.Channels — высокопроизводительный производитель-потребитель и асинхронность без аллокаций и стэк дайва

Reading time18 min
Reach and readers56K
И снова здравствуй. Какое-то время назад я писал о другом малоизвестном инструменте для любителей высокой производительности — System.IO.Pipelines. По своей сути, рассматриваемый System.Threading.Channels (в дальнейшем «каналы») построен по похожим принципам, что и Пайплайны, решает ту же задачу — Производитель-Потребитель. Однако имеет в разы более простое апи, которое изящно вольется в любого рода enterprise-код. При этом использует асинхронность без аллокаций и без stack-dive даже в асинхронном случае! (Не всегда, но часто).


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

Применение CQRS & Event Sourcing в создании платформы для проведения онлайн-аукционов

Reading time10 min
Reach and readers6.2K
Коллеги, добрый день! Меня зовут Миша, я работаю программистом.

В настоящей статье я хочу рассказать о том, как наша команда решила применить подход CQRS & Event Sourcing в проекте, представляющем собой площадку для проведения онлайн-аукционов. А также о том, что из этого получилось, какие из нашего опыта можно сделать выводы и на какие грабли важно не наступить тем, кто отправится путем CQRS & ES.
image

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

.NET Core: Взаимодействие микросервисов через Web api

Reading time21 min
Reach and readers60K

Введение


Практически все, кто имел дело с микросервисами в .NET Core, наверняка знают книгу Кристиана Хорсдала “Микросервисы на платформе .NET”. Здесь прекрасно описаны подходы к построению приложения на основе микросервисов, подробно рассмотрены вопросы мониторинга, журналирования, управления доступом. Единственное, чего не хватает — это инструмента автоматизации взаимодействия между микросервисами.

При обычном подходе при разработке микросервиса параллельно разрабатывается web-клиент для него. И каждый раз, когда меняется web-интерфейс микросервиса, приходится затрачивать дополнительные усилия для соответствующих изменений web-клиента. Идея генерировать пару web-api/web-клиент с использованием OpenApi тоже достаточно трудоемка, хотелось бы чего-то более прозрачного для разработчика.

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

Функциональность микросервиса разрабатывается исключительно в классе,
реализующим этот интерфейс. Публикация конечных точек микросервиса должна быть автоматической, не требующей сложных настроек.

Web-клиент для микросервиса должен генерироваться автоматически на основе интерфейса и предоставляться через Dependency Injection.

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

.NET: Лечение зависимостей

Reading time23 min
Reach and readers49K
Кто не сталкивался с проблемами из-за assembly redirect? Скорее всего все, кто разрабатывал относительно большое приложение, рано или поздно с этой проблемой столкнется.

Сейчас я работаю в компании JetBrains, в проекте JetBrains Rider, и занимаюсь задачей миграции Rider на .NET Core. Ранее занимался общей инфраструктурой в Контуре, облачной платформой хостинга приложений.



Под катом — расшифровка моего доклада с конференции DotNext 2019 Moscow, где я рассказал о трудностях при работе со сборками в .NET и на практических примерах показал, что бывает и как с этим бороться.

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

Reading time28 min
Reach and readers73K


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

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

Фаулер и Эванс считают анемичную модель анти-паттерном. Однако многие кодовые базы, с которыми мне доводилось работать, реализованы именно в стиле «анемичной» модели. Под катом расшифровка и видео моего доклада с DotNext 2019 Moscow, посвященного сравнению сильных и слабых сторон обоих подходов и не очевидным деталям реализации модели предметной области в парадигме ООП и в функциональном стиле.
Читать дальше →

Классификация документов: 7 практических подходов для небольших наборов данных

Reading time11 min
Reach and readers31K

Классификация документов или текста — это одна из важнейших задач в обработке естественного языка (natural language processing, NLP).


У нее есть множество применений, таких как классификация новостей, фильтрация спама, поиск неприемлемых комментариев и т. д.


У больших компаний нет проблем со сбором больших наборов данных, поэтому обучение модели классификации текста с нуля — вполне осуществимая задача.


Однако, для большинства реальных задач большие наборы данных — редкость, и для построения своей модели приходится проявлять смекалку.


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

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

Лучшие GitHub-репозитории для веб-разработчиков

Reading time5 min
Reach and readers29K
Программист тратит многие часы на разработку некоего функционала и на то, чтобы код соответствовал передовым практическим приёмам, принятым в той или иной среде. В эти часы не должно входить регулярное написание шаблонных конструкций. Программист может сильно помочь себе в деле правильной организации работы, избавив себя от ненужных дел и вложив время в изучение правильных инструментов. Хорошим подспорьем может оказаться и знание о ценных ресурсах, список которых всегда полезно держать под рукой.



Автор материала, перевод которого мы публикуем сегодня, предлагает рассмотреть несколько GitHub-репозиториев, которые, если иногда в них заглядывать, позволят веб-разработчикам улучшить свои знания и навыки, окажут содействие в написании более качественного кода, помогут работать быстрее.
Читать дальше →

Машинное обучение на C#: введение в ML.NET

Reading time22 min
Reach and readers53K


ML.NET претендует на звание самой мощной библиотеки для машинного обучения на платформе .NET. Так ли это на самом деле? На вопрос отвечает Джефф Просайз.

Джефф Просайз — один из создателей компании Wintellect, коллега по цеху знаменитого Джеффри Рихтера, автор более девяти книг и множества статей по разработке приложений, сейчас работает с Azure и разрабатывает различные AI-решения.

Под катом перевод и видео доклада Джеффа с конференции DotNext 2019 Moscow в оригинале.

Повышаем надёжность HttpClient’а в .NET Core или как ошибиться в 3 строках кода 4 раза

Reading time13 min
Reach and readers47K

За несколько недель до 14 февраля системе Dodo IS немного поплохело под нагрузкой. Одной из причин стало то, что в backend’ах мобильного приложения и сайта не совсем корректно работали политики поверх HttpClient’а (Retry, Circuit Breaker, Timeout). В этой статье я хочу поделиться с вами потенциальными проблемами, которые могут возникнуть при неправильном использовании таких политик.


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

Веб-разработка с .NET: Представляем Blazor WebAssembly 3.2.0

Reading time5 min
Reach and readers14K
Привет, Хабр! Я рад сообщить, что Blazor WebAssembly теперь официально выпущена и доступна для всех. Это полнофункциональный и поддерживаемый выпуск Blazor WebAssembly, готовый к использованию в продакшене. Фулл-стак веб-разработка с .NET! Подробности под катом.

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

Как помнить всех в лицо, или эффективный поиск лиц в большой базе

Reading time8 min
Reach and readers9.3K

О себе


Здравствуй, Хабр! Меня зовут Павел, я работаю техническим директором в компании, занимающейся производством IoT устройств. Производим много чего — начиная от контроллеров для умных домов, заканчивая умными приборами учёта на своём запатентованном протоколе сенсорных сетей.


Также исполняют обязанности генерального директора ит-компании. В прошлом полуфиналист ЧМ по программированию ACM ICPC.


Мотивация


Пишу я это статью потому, что наша команда убила около месяца на поиск решения (ещё недели две на реализацию и написание тестов) для хранения и эффективного поиска распознанных лиц в базе данных, с целью сэкономить время вам в ваших проектах. Спойлер: ничего готового вроде классного плагина для существующей СУБД не нашли, а сроки полыхали, по этому написали свою СУБД именно для этой задачи (хранения огромного количества эмбендингов лиц). Моя статья ни в коем случае не претендует на звание исчерпывающего руководства, но, я надеюсь, что она даст точку старта для дальнейшего изучения и развития наших мыслей.


Эмбеддинг – это отображение из дискретного вектора категориальных признаков в непрерывный вектор с заранее заданной размерностью.
Читать дальше →

Browser Fingerprint – анонимная идентификация браузеров

Reading time14 min
Reach and readers236K


Валентин Васильев (Machinio.com)


Что же такое Browser Fingerprint? Или идентификация браузеров. Очень простая формулировка — это присвоение идентификатора браузеру. Формулировка простая, но идея очень сложная и интересная. Для чего она используется? Для чего мы хотим присвоить браузеру идентификатор?


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

Реализации кэша в C# .NET

Reading time8 min
Reach and readers51K
Привет, Хабр! В преддверии старта курса «C# ASP.NET Core разработчик», подготовили перевод интересного материала о реализации кэша в C#. Приятного прочтения.




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

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

Кэширование отлично подходит для данных, которые изменяются нечасто. Или, в идеале, не меняются никогда. Данные, которые изменяются постоянно, например, текущее время, не должны кэшироваться, иначе вы рискуете получить неправильные результаты.
Читать дальше →

Вышел Windows Terminal 1.0

Reading time3 min
Reach and readers62K
Мы невероятно горды тем, что можем объявить о выпуске Windows Terminal 1.0! Windows Terminal прошел долгий путь с момента своего анонса на Microsoft Build 2019. Как и всегда, вы можете загрузить Windows Terminal из Microsoft Store или со страницы выпусков на GitHub. Windows Terminal будет иметь ежемесячные обновления, начиная с июля 2020 года.

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

Публичные контракты, как обеспечить их согласованность

Reading time13 min
Reach and readers9.4K
  • ваша система состоит из множества взаимосвязанных сервисов?
  • всё ещё вручную актуализируете код сервисов при изменении публичного API?
  • изменения в ваших сервисах часто подрывают работу других, а другие разработчики вас за это ненавидят?

Если ответили да хотя бы один раз, то добро пожаловать!
Читать дальше →

Основы Data Vault

Reading time4 min
Reach and readers31K

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


Можно найти интересные статьи о применении DATA VAULT в компаниях, однако основы и методология освещены недостаточно.


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


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

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

OData сервис без написания кода

Reading time4 min
Reach and readers7.4K

Одним из наиболее важных аспектов разработки программного обеспечения является быстрое создание прототипов. Для большинства служб необходимы по крайней мере некоторые операции CRUD, и большинство приложений можно описать как приложения, управляемые данными. API, которые я пишу, в основном берут данные из базы данных и возвращает их клиенту в виде JSON. OdataToEntity — это инструмент, который генерирует API из базы данных и устраняет необходимость в написании отдельного REST API.

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

Roslyn & EF Core: конструируем DbContext в runtime

Reading time8 min
Reach and readers6.8K

Entity Framework Core может генерировать код моделей и DbContext для существующей базы данных с помощью консольной команды dotnet ef dbcontext scaffold. Почему бы нам не попробовать сгенерировать DbContext в runtime?


В статье я расскажу как в runtime в своём приложении:


  1. Сгенерировать код DbContext с помощью EF Core.
  2. Скомпилировать его в памяти с помощью Roslyn.
  3. Загрузить полученную сборку.
  4. Создать экземпляр сгенерированного DbContext.
  5. Работать с базой данных через полученный DbContext.

Пример доступен на github.

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

Information

Rating
Does not participate
Registered
Activity