Search
Write a publication
Pull to refresh
4
0
Bronx @Bronx

User

Send message

Почему вам не нужна версия для слабовидящих

Reading time12 min
Views15K

Представьте, что в кафе на застолье пришел веган. Его друзья, зная это, специально выбрали кафе с отдельным меню для веганов. Но в нем только макароны с кабачками и вишневый компот, а в обычном меню есть и картошка, и салаты и другая еда, в которой достаточно заменить пару ингредиентов, чтобы веган мог это есть. Естественно, гость в недоумении? Почему макароны с кабачками? Для чего вообще отдельное веганское меню?

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

Читать далее

Source Generators в действии

Reading time38 min
Views20K

C# 9 дал долгожданную возможность кодогенерации, интегрированную с компилятором. Тем, кто мечтал избавиться от тысяч строк шаблонного кода или попробовать метапрограммирование, стало проще это сделать.


Ранее Андрей Дятлов TessenR выступил на конференции DotNext с докладом «Source Generators в действии». А теперь, пока мы готовим следующий DotNext, сделали для Хабра текстовую расшифровку его доклада.



Что вообще такое эти Source Generators? Как их использовать? Как предоставить пользователю вашего генератора необходимую гибкость конфигурации и понятные сообщения о возникающих проблемах? Как разобраться, когда что-то пошло не так?


Ответы на все эти и другие вопросы — в тексте.

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

TypeScript в деталях. Часть 2

Reading time11 min
Views15K


Привет, друзья!


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


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

Поиск лучшего места в мире для ветряка

Reading time9 min
Views27K
История о том, как NASA, ESA, Датский Технологический Университет, нейронные сети, деревья решений и прочие хорошие люди помогли найти мне лучший бесплатный гектар на Дальнем Востоке, а также в Африке, Южной Америке и других “так себе” местах.


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

TypeScript в деталях. Часть 1

Reading time6 min
Views31K


Привет, друзья!


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


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

Three.js, квантовый спин, сфера Блоха и квантовые вращения

Reading time5 min
Views3.8K

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

Читать далее

Как мы с женой повышали ее качество жизни с диабетом при помощи ИТ

Reading time13 min
Views13K

Всем привет! Меня зовут Андрей. Сегодня я расскажу о проекте, который делал для своей жены и при активном ее участии. Это устройство на Raspberry Pi с опенсорсным софтом для контроля сахара в крови с помощью данных мониторинга и команд, отдаваемых инсулиновой помпе.

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

Читать далее

Низко висящие фрукты Active Directory

Reading time7 min
Views15K

В данной статье рассмотрим уязвимости, которые легко проэксплуатировать в Active Directory — так называемые «низко висящие фрукты». Они часто встречаются и в результате дают возможность атакующему продвинуться вглубь инфраструктуры или получить дополнительную информацию.

Комбинация таких участков часто позволяет достичь полного контроля над средой Active Directory с правами администратора домена или расширить исходные привилегии.

Не углубляясь в технические дебри, я хочу показать, какие типовые проблемы существуют в домене Active Directory, что они из себя представляют и какие меры защиты стоит применить либо принять во внимание.

Подробнее — под катом.

Читать далее

Руководство по CMake для разработчиков C++ библиотек

Reading time18 min
Views109K

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

Читать далее

Делегируй меня полностью, или Новый взгляд на RBCD-атаки в AD

Reading time15 min
Views16K

«Злоупотребление ограниченным делегированием Kerberos на основе ресурсов» — как много в этом звуке!

Точнее уже не просто звуке и даже не словосочетании, а целом классе наступательных техник в доменной среде Active Directory. Вот уже как больше трех лет, казалось бы, вполне себе легитимный механизм, помогающий трехголовому псу стоять на страже даже там, где нет этих ваших «тикетов», служит грозным оружием всех пенетраторов Windows-сетей. Не знаю никого, кто использовал бы RBCD по назначению, честно.

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

Читать далее

Похищаем сохраненный в Chrome пароль с помощью XSS

Reading time5 min
Views10K

Меня зовут Артем Мышенков, я ведущий инженер по технической защите информации в команде безопасности REG.RU. Наша команда занимается тестированием систем компании на безопасность и поиском уязвимостей.

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

Читать далее

Как я Markdown парсер выбирал

Reading time18 min
Views29K

Недавно я решил создать свой сайт, и мне понадобилось выбрать парсер Markdown для отрисовки статей в блоге.

То, что начиналось как: «Окей, гугл, какой парсер выбрать?», – вылилось в полноценное исследование существующих реализаций парсеров.

О том, какие открытия меня ждали на этом пути, и будет данная статья.

Читать далее

OSINT самолетов, пароходов и поездов

Reading time2 min
Views30K
Предлагаем вашему вниманию набор инструментов от мировых профессионалов в области OSINT, которые помогут в ваших поисках информации, связанных с транспортом. Если вы решили заняться автостопом, авиастопом или хотите поймать попутный грузовой корабль, то эти сервисы для вас. Если вам срочно понадобилось отследить самолет Илона Маска или просто послушать переговоры диспетчеров, то тоже найдете тут много полезного.

Водный транспорт


MarineTraffic


image

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

Разрабатываем REST API с помощью TypeScript, NestJS, Prisma, AdminJS и Swagger

Reading time12 min
Views17K



Привет, друзья!


В данном туториале мы разработаем простой сервер на NestJS, взаимодействующий с SQLite с помощью Prisma, с административной панелью, автоматически генерируемой с помощью AdminJS, и описанием интерфейса, автоматически генерируемым с помощью Swagger. Все это будет приготовлено под соусом TypeScript.


Репозиторий с кодом проекта.


Если вам это интересно, прошу под кат.

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

Эффективная генерация сортируемых GUID для первичных ключей БД на клиенте

Reading time12 min
Views23K

Использовать Guid.NewGuid() в качестве первичного ключа в базе данных — плохая с точки зрения производительности идея. Это связано с тем, что в SQL Server, MySQL и некоторых других БД для первичных ключей создаются кластерные индексы, которые определяют, как строки будут храниться на диске. GUID — это по сути случайное значение, поэтому новая строка может попасть в начало, середину или конец таблицы. Серверу БД в этом случае придётся перемещать другие строки, что приведёт к фрагментации данных, а их извлечение может занять больше времени, если вам нужно извлечь несколько добавленных последовательно записей (например, когда вы добавляете набор связанных сущностей, которые потом будут извлекаться вместе — БД понадобится прочитать данные из разрозненных страниц вместо последовательного чтения набора данных).

Поэтому, чаще всего, лучше пользоваться сгенерированными БД первичными ключами. В SQL Server, например, есть функция NEWSEQUENTIALID(), которая генерирует последовательные GUIDы. Зачем может понадобиться генерировать ключи именно на клиенте и как это правильно сделать?

Читать далее

3 простые вещи, которые сделают вашу жизнь лучше

Reading time10 min
Views49K

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

Три простых вещи, о которых пойдёт речь это:

· Сон — как/сколько/почему нужно спать и какие есть лайфхаки для повышения качества сна. (этому посвящена большая часть публикации)

· Активность — какой её формат является необходимым и какие плюсы можно из неё можно извлечь.

· Перевод смартфона в ЧБ-режим — какую проблему это решает и что это дало мне.

Читать далее

Как правильно имитировать Agile?

Reading time15 min
Views37K

Подобная статья должна была появиться раньше, лет десять или пятнадцать назад, когда Agile только начинал внедряться в ИТ-компаниях. Сколько можно бы было избежать ошибок, проблем, конфликтов, , если бы менеджеры сразу подходили к вопросу правильно, не отвлекаясь на лишние действия …

Зато за это время накопился опыт "внедрений" Agile в разных условиях, в разных компаниях, который следует обобщить и повсеместно распространять.

Читать далее

25+1 лучших OSINT расширений для Google Chrome

Reading time5 min
Views23K

Здравствуй Хабр! А мы тут продолжаем цикл статей об OSINT и, самое главное, о полезных для этого нелегкого дела инструментах.

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

DISCLAIMER: Данная статья написана в ознакомительных целях и не является руководством к неправомерным действиям или обучающим материалом для сокрытия правонарушений.

Читать далее

Копаемся в TypeScript: пишем свои Utility Types. Ключевое слово infer

Reading time7 min
Views5.9K

Йо, Хабр! Меня зовут Алексей Акулов. Я разрабатываю клиентскую часть продукта BIMeister.

Почти каждый сталкивался с типами Partial или Record. Там таких еще много, но суть в том, что они входят в ту самую группу Utility Types. Такие штуки представляют из себя разные преобразования одних типов в другие. Partial помечает все поля опциональными. Record отдает тип с бесконечным числом полей одного типа. Тут, вроде, понятно, но как писать собственные? Что такое infer? Как он может нам помочь?

Читать далее

Information

Rating
4,932-nd
Registered
Activity